while($info = mysql_fetch_array($data)) {
// Print out the contents of the entry
Print "<li><b>Name:</b> ".$info['name'] . " <br />";
Print "<b>ID:</b> ".$info['ID']." <br />";
Print "<b>Age:</b> ".$info['age'] ." <br />";
Print "<b>Location:</b> ".$info['location'] ."<br /> ";
Print "<form action=delete.php method=POST><input name=ID value="safe(.$info['ID']." type=hidden><input type=submit name=submit value=Remove class=submit></form></li>";
}
Print "</ol>";
Это мой код. Я, однако, сосредоточив внимание на этой линии:Предоставление формы с предоплатой
Print "<form action=delete.php method=POST><input name=ID value=".$info['ID']." type=hidden><input type=submit name=submit value=Remove class=submit></form></li>";
Как было отмечено в одном из моих предыдущих постов, это не безопасно против инъекции SQL атаки.
Я позаимствовал эту функцию из другого поста:
function safe($value){
return mysql_real_escape_string($value);
}
Теперь, как, черт возьми, я сделал бы эту часть в безопасности от нападения?
value=".$info['ID']."
Ваша постоянная поддержка с благодарностью.
Должен ли я беспокоиться mysql_real_escape_string? Эта вещь, которую я создаю для своего собственного образования, будет использовать DELETE, только найдя идентификатор. Тем не менее, я хотел бы защитить строки, которые я тоже вхожу в базу данных. Любой совет? –
Если он уже введен в целое число, то нет необходимости в mysql_real_escape_string (поскольку он уже целочисленный, в нем нет смешных символов!). – mauris
Хорошо. Тип поля ID - int (1) - поэтому я знаю, что это целое число. Это, однако, не защищает меня от людей, угадывающих идентификаторы. Итак, теперь я пытаюсь реализовать этот код, который вы написали, и я не уверен, куда его поместить в delete.php. $ result = mysql_query ("УДАЛИТЬ ИЗ САПАННЫ WHERE ID = '. (Int) $ _ POST [' ID ']") или умереть (mysql_error()); дает мне ошибки. –