|
|
|
| подскажите пожалуйста ошибку:) есть форма с полем ввода, в которое вводится строка формата запроса sql.
В php файле, обработки введенных данных, необходимо проверить присутствие в введенной строке слов "select" и "from". (регистро независимая проверка). проверка select выполняется нормально, а from не проверяется вообще.
<?
//Получаем данные
$q = $_POST["otvet"];
$a = str_word_count($q, 1); //разбиваем строку на массив
if (@strcasecmp($a[0], "select") <> 0) echo "<script language=javascript>window.alert('Оператор должен начинаться с SELECT');</script>";
elseif (@strcasecmp($a, "from") <> 0) echo "<script language=javascript>window.alert('В предложении отсутствует FROM');</script>";
?> | |
|
|
|
|
|
|
|
для: enodik
(10.03.2011 в 18:48)
| | Функция strcasecmp() сравнивает две строки, причем сравнивает с начала, поэтому select находится корректно, а from - нет, так как он находится не в начале а в середине запроса. Во втором случае лучше воспользоваться функцией вроде stripos(), которая не будет привязываться к началу строки
<?
//Получаем данные
$q = $_POST["otvet"];
$a = str_word_count($q, 1); //разбиваем строку на массив
if (@strcasecmp($a[0], "select") <> 0)
echo "<script language=javascript>window.alert('Оператор должен начинаться с SELECT');</script>";
elseif (stripos($a, "from") === false)
echo "<script language=javascript>window.alert('В предложении отсутствует FROM');</script>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(10.03.2011 в 18:54)
| | спасибо большое:) | |
|
|
|