|
|
|
| Безопасен ли данный запрос от SQL-инъекции?
Заранее спасибо.
<?php
if ($_POST)
{
$user_age = intval($age);
if (!get_magic_quotes_gpc())
{
$userjob = mysql_escape_string($job);
}
$query = "INSERT INTO job (uage, ujob) VALUES ('$user_age', '$userjob')";
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
}
?>
<form name="form1" method="post" action="">
<table width="100%">
<tr>
<td>Возраст:</td>
<td>
<input type="text" name="age" size="2" maxlength="2">
</td>
</tr>
<tr>
<td>Должность:</td>
<td>
<input type="text" name="job">
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="Submit" value="Добавить">
</td>
</tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 10:24)
| | Что такое $age и $job ?
Не вижу их в коде
if (!get_magic_quotes_gpc())
{
$userjob = mysql_escape_string($job);
}
|
Если условие не будет выполняться, то то, что надо вставить в запрос, будет находиться в другой переменной | |
|
|
|
|
|
|
|
для: bronenos
(16.01.2008 в 10:58)
| | $age = $_POST['age'];
$job = $_POST['job'];
>>Если условие не будет выполняться, то то, что надо вставить в запрос, будет находиться в другой переменной
Данные поля обязательны для заполнения. | |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 11:01)
| | при чем туту это вам говорят что если условие не выполнится то переменная $userjob не будет иницализирована, а она у вас использается в запросе! | |
|
|
|
|
|
|
|
для: KPETuH
(16.01.2008 в 11:10)
| | Так тогда? ))
if (!get_magic_quotes_gpc())
{
$userjob = mysql_escape_string($job);
}
else
{
$userjob = $_POST['job'];
}
|
| |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 11:22)
| |
if (!get_magic_quotes_gpc())
{
$job = mysql_escape_string($job);
}
|
Или вы боитесь переопределять значение переменных?
Не бойтесь, сначала вычисляется правое, потом подставляется в левое, ничего не переплетается | |
|
|
|
|
|
|
|
для: bronenos
(16.01.2008 в 12:44)
| | Ок, спасибо! Но так и нет ответа на вопрос - Безопасен ли данный запрос от SQL-инъекции?
А как можно проверить значение - $age на число/не число? | |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 13:06)
| | Безопасен! Проверка - is_int(), преобразование - intval() | |
|
|
|
|
|
|
|
для: bronenos
(16.01.2008 в 13:50)
| | Спасибо. )) | |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 13:59)
| | У меня тоже вопрос по поводу скул инъекций.
Я все данные введеные пользователем всегда проверяю РВ.
например
при обнаружении посторонних символов код дальше не выполняется,следовтельно и подключение
к БД и запросов не происходит.
достаточно ли этого для защиты от скул инъекции? | |
|
|
|
|
|
|
|
для: THERAPYbrother
(16.01.2008 в 14:20)
| | зачем?? экранируйте и все | |
|
|
|
|
|
|
|
для: bronenos
(16.01.2008 в 14:22)
| | не знаю,
я просто не знаю функций(для экранирования спец символов,с кавычками там еще че то).
Привык РВ юзать,и не запариваюсь/ | |
|
|
|
|
|
|
|
для: bronenos
(16.01.2008 в 13:50)
| | > Проверка - is_int()
И Вы туда же. Это не проверка на число/не число, это проверка типа переменной. | |
|
|
|
|
|
|
|
для: Unkind
(16.01.2008 в 14:25)
| | А как тогда проверить правильно? | |
|
|
|
|
|
|
|
для: kis-kis
(16.01.2008 в 14:35)
| | Функцией ctype_digit() можно проверить является ли каждый символ цифрой. | |
|
|
|