2015-06-24 4 views
0

Я использовал проверку html, css, javascript и jQuery, и я думаю, что я готов загрузить переменные в php. Моя веб-страница имеет около 300 элементов (20 текста (область) с, 40 радио и 250 флажков с только несколько, которые требуютсяphp validation для новичков

Я нашел этот код для проверки PHP и иметь 3 новичковые вопросы:.

<?php 
// define variables and set to empty values 
$name = $email = $gender = $comment = $website = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = test_input($_POST["name"]); 
    $email = test_input($_POST["email"]); 
    $website = test_input($_POST["website"]); 
    $comment = test_input($_POST["comment"]); 
    $gender = test_input($_POST["gender"]); 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

1- я оставил любые важные шаги?

2- Есть только текст (область) s необходимость такой проверки сервера или мне нужно сделать это для радио и флажков?

3- Может ли нулевые элементы пройти этот процесс очистки или мне нужно проверить и исключить Сначала сначала берутся нулевые элементы?

Спасибо, Дэн

ответ

0

Я сделал некоторые изменения, основанные на некоторых предположениях для решения ваших проблем и вопросов. Я предполагаю, что поле «имя» требуется, поэтому мы сделаем чек, чтобы узнать, установлен ли он. Также я предполагаю, что вы будете хранить эти данные в базе данных. Если это так, я включил некоторый MYSQL, чтобы помочь с очисткой для хранения в базе данных MYSQL.

<?php 
// define variables and set to empty values 
$name = $email = $gender = $comment = $website = ""; 

if (isset($_POST["name"])) { 
    $name = test_input($_POST["name"]); 
    $email = test_input($_POST["email"]); 
    $website = test_input($_POST["website"]); 
    $comment = test_input($_POST["comment"]); 
    $gender = test_input($_POST["gender"]); 
} 
else 
{ 
    // tell the user they missed something. 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    $data = mysql_real_escape_string($data); 
    return $data; 
} 
?> 

Чтобы решить ваши другие вопросы, не вам не нужно проверять поля, такие как флажки и переключатели, однако, иметь в виду, что пользователь может опубликовать свои собственные значения в форму с Javascript выключен и тем самым обойти проверку Javascript для проверки формы. Таким образом, все, что вы думаете, что пользователь может предоставить информацию, например, в меню выбора, должен быть очищен перед сохранением в базе данных. Вам не нужно проверять значения NULL.

+0

вам нужно проверить все, что исходит от пользователя - флажки, радиоприемники и т. Д. –

+0

Благодарим за код! Таким образом, неконтролируемый флажок A (я еще не знаю, пуст или пуст еще) может пройти через «очистку» и создать пустую/нулевую переменную $ A без выброса ошибки? Спасибо – tiredeyes

+0

Да, вам не нужно беспокоиться о переменной значения NULL, создающей ошибку; и, как указано в ответе Даррена, вы должны проверить все входящие данные, включая флажки. Я забыл об этом, потому что на самом деле я не использую их вход, когда я кодирую что-то вроде этого. Я проверяю, проверяют ли они флажок (логическое значение). –

1

Начну с заявления об этом: вы никогда не сможете доверять любому пользователю. Не доверяйте ни одному пользователю. Вы должны запрограммировать с тем, что каждый пользователь доступ к вашей форме делает это злонамеренно. (то, что они хотят, чтобы взломать ваш сайт)

Да, вы уезжаете из важных шагов. Вы не мешаете SQL Injection. (Если вы сохраняете данные в базе данных.). Если вы сохраните его в базе данных, лучше всего использовать библиотеки, которые предназначены для защиты вас при правильном использовании, например, PDO или MySQLi Prepared Statements. Это на самом деле довольно просто сделать:

try { 
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $statement = $link->prepare("INSERT INTO testtable(`name`, `lastname`, `age`) 
    VALUES(:fname, :sname, :age)"); 
    $statement->execute(array(
    "fname" => "Bob", 
    "sname" => "Desaunois", 
    "age" => "18" 
)); 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

Source

Да, вы должны убедиться, что все , и я имею в виду все входные проверки пользователя.

Inspect element

Как вы можете видеть на картинке, это не трудно изменить значение флажка на то, что вы хотите.

Зачем вам это нужно для null элементов? Вы имеете в виду пустые элементы?Всегда полезно очищать любой пользовательский ввод, но если это null теоретически, вы не собираетесь его использовать, правильно?

+0

Почти все флажки будут использоваться независимо от того, отмечены ли они или нет. Группа флажков A-F в конечном итоге будет использована для создания предложения; У них есть A, C, E и F, но не B или D. Я не понял, хочу ли я делать конкатенацию на веб-сервере, офисном сервере или моем настольном клиенте. Разве это имеет значение? – tiredeyes

+0

Не имеет значения вообще, вам просто нужно будет хранить каждый из этих вводов где-нибудь для последующего использования! – Darren

+0

Благодарим за код! – tiredeyes

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