2015-05-29 2 views
1

In may Addvalue.php file 3 поля id, name, color ... только в идентификационных номерах, в имени и цвете допускается только письмо. Значения, успешно вставленные в мою базу данных, но проблема заключается в том, что пользователь записывает NAME и COLOR в поле HTML FORM только LETTERS, которые позволяют писать, если в сообщении появляется любое NUMBER сообщение «Разрешено только письмо» .... Но для этого нужны как номера, так и буквы , вот мой как файл кода:Как HTML FORM принимает только буквы, а не цифры?

Addvalue.php код:

<form method="post" action="addh.php"> 
<input type="number" name="id" id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span> 
<input type="text" name="color" id="color" /> 
<?php 
include("config.php"); 
if (isset($_POST["submit"])) { 
       $id = $_POST["id"]; 
     $name = $_POST["name"]; 
     $color = $_POST["color"];  
    if (!preg_match("/^[a-zA-Z -]+$/",$name)) { 
     echo "Only letters allowed"; 
    } 
if(!preg_match("/^[a-zA-Z -]+$/",$color)) { 
     echo "Only letters allowed"; 
    } 
    } 
?> 

код addh.php:

<?php 
include("config.php"); 
    $sql="INSERT INTO honda (id, name, color) 
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')"; 
    $result = mysqli_query($link,$sql) or die(mysqli_error($link)); 
    echo "Values Inserted"; 
?> 
+0

Вы можете использовать функцию php ctype_alnum ($ string). Проверки для буквенно-цифровых символов – yuk

+0

Вы уязвимы для [SQL-инъекций] (http://bobby-tables.com) –

+0

Ваш сценарий уязвим для SQL-инъекций таким образом. Просмотрите подготовленные отчеты MySQLi. Кроме того, вы можете использовать JS для проверки или принудительного ввода, чтобы быть тем, что вы хотите, прежде чем оно опубликовано. – Twisty

ответ

2

Вместо того, с помощью PHP, попробуйте HTML шаблон атрибута в входе, как это :

<form action=""> 
Country code: <input type="text" name="country_code" 
pattern="[A-Za-z]{3}" title="Three letter country code"> 
<input type="submit"> 
</form> 

Для более подробной информации: W3School

+0

Плохие данные все равно могут добраться до БД таким образом. – chris85

0

PHP загружается до HTML и недоступен до следующей загрузки. Так что ваша страница в настоящее время.

Нагрузки это:

<?php 
include("config.php"); 
if (isset($_POST["submit"])) { 
       $id = $_POST["id"]; 
     $name = $_POST["name"]; 
     $color = $_POST["color"];  
    if (!preg_match("/^[a-zA-Z -]+$/",$name)) { 
     echo "Only letters allowed"; 
    } 
if(!preg_match("/^[a-zA-Z -]+$/",$color)) { 
     echo "Only letters allowed"; 
    } 
    } 
?> 

Тогда это

<form method="post" action="addh.php"> 
<input type="number" name="id" id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span> 
<input type="text" name="color" id="color" /> 

Когда эта форма представляется, что идет непосредственно к этому ...

<?php 
include("config.php"); 
    $sql="INSERT INTO honda (id, name, color) 
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')"; 
    $result = mysqli_query($link,$sql) or die(mysqli_error($link)); 
    echo "Values Inserted"; 
?> 

Что слепо вставляет туда данные, нет Проверка. То, что я думаю, что вы хотите ...

Addvalue.php

<form method="post" action="addh.php"> 
<input type="number" name="id" id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span> 
<input type="text" name="color" id="color" /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

Тогда addh.php становится:

if (isset($_POST["submit"])) { 
     $id = (int)$_POST["id"]; 
     $name = mysqli_real_escape_string($link, $_POST["name"]); 
     $color = mysqli_real_escape_string($link, $_POST["color"]); 
     if (!preg_match("/^[a-zA-Z -]+$/",$name)) { 
      $error = 'Only letters allowed'; 
     } 
     if(!preg_match("/^[a-zA-Z -]+$/", $color)) { 
      $error = 'Only letters allowed'; 
    } 
    if(empty($error)) { 
      include("config.php"); 
      $sql="INSERT INTO honda (id, name, color) VALUES ('$id','$name','$color')"; 
      $result = mysqli_query($link,$sql) or die(mysqli_error($link)); 
      echo "Values Inserted"; 
    } else { 
     echo $error; 
    } 
} 

Вы должны смотреть на подготовленные заявления. http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

Это отправная точка для вас, непроверенная. Следует отметить, что id должен автоматически увеличиваться.

+0

спасибо всем :) .... сейчас моя проблема решена –

Смежные вопросы