пожалуйста, проверьте валидацию - PullRequest
0 голосов
/ 02 декабря 2009

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

$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 голосов
/ 02 декабря 2009

Во-первых, никогда не передавайте непроверенные данные 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 голосов
/ 02 декабря 2009

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

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

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

0 голосов
/ 02 декабря 2009

Не делайте этого в 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 голосов
/ 02 декабря 2009

Ваш скрипт кричит "SQL INJECTION!" Прошу pwn мой сайт!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...