пожалуйста, проверьте валидацию

0

Я вставляю значение дня в базу данных, я хочу, чтобы валидацию, как будто день уже существует, он должен сказать, что день уже существует, иначе он должен быть innsert..please может кто-нибудь проверить следующий код... спасибо заранее

$dexist=$_POST['ext'];
$res=mysql_query("select Day from mess where Day='".$dexist."' ");
while($row=mysql_fetch_array($res))
{
    $dy=$row['Day'];
}

if($dy==$dexist)
{
    echo "<script language=\"javascript\">";
    echo "window.alert ('File already exist');";
    echo "//--></script>";

}
else
{
    mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
}
Теги:

4 ответа

0

Не делайте этого в PHP, это сложно (невозможно?) сделать безопасно. Сделайте это в MySQL, добавив уникальный индекс в столбец Day:

ALTER TABLE mess ADD UNIQUE (Day);

Затем вы можете ломать неудачи такого рода, ища ER_DUP_UNIQUE из MySQL.

Используйте PHP mysql_errno, чтобы проверить ошибку 1169 для обнаружения уникального сбоя ограничения.

$query_result = mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
// 1169 means a unique constraint failure
if (!$query_result && mysql_errno() == 1169) {
  echo "Oh noes, you tried to insert a value twice!";
}
0

Во-первых, никогда, никогда не передавайте непроверенные данные POST/GET в запрос MySQL, это массивное отверстие безопасности. Вместо этого используйте mysql_real_escape_string:

$res=mysql_query("select Day from mess where Day='" . mysql_real_escape_string($dexist) . "' ");

И аналогично для последнего вызова.

Во-вторых, не понятно, что вы просите... пожалуйста сообщите нам, если код не работает, и любые ошибки, которые вы получаете. Я думаю, что у вас есть проблема с этой строкой:

if(file_exists($dy==$dexist))

Это передача логического значения ($dy==$dexist будет оцениваться как true или false) в функцию file_exists. Вам нужно передать имя файла.

0

Ваш script кричит "SQL INJECTION!" Пожалуйста, назовите мой сайт!

Также: ваш код уязвим для проблем синхронизации. Например, файл может быть создан ПОСЛЕ того, как вы запустили инструкцию select, но ПЕРЕД тем, как вы запустили инструкцию INSERT. Это вызовет странные неудачи. Вот почему вы должны делать "выбор и вставку" в виде одной хранимой процедуры (чтение атомных операций - точнее, это пример "сравнения и свопинга" ).

  • 0
    извините, это не файл if (file_exists ($ dy == $ dexist)) это должно читаться как если бы ($ dy == $ dexist)
  • 0
    Нажмите «изменить» под вашим вопросом, чтобы внести изменения. И было бы полезно, если бы вы сказали, в чем проблема.
Показать ещё 1 комментарий
0

Это ответ на ваш вопрос.

поиск оригинала..

нашел это. Хотите проверить день уже существует

Ещё вопросы

Сообщество Overcoder
Наверх
Меню