|
|
|
|
|
для: Тень*
(11.04.2010 в 22:07)
| | Он же мой ответ в 21 задаче оценивал? | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 22:04)
| | Причём тут он? | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 21:53)
| | спасибище!!! оставлю пока так (пока полностью не догоню как все это работает)
>function unmq($arg)
>{
> return $arg === null ? null :
> (get_magic_quotes_gpc()? stripslashes($arg): $arg);
>}
>$add = unmq(@$_POST['name']);
>$name = $add;
> $esc_name = "'".mysql_escape_string($name)."'";
> $sql = "SELECT id FROM guests WHERE guestname = $esc_name";
>
|
а какие ошибки могут возникать?
а с числовыми значениями как поступать?
и когда можно trim использовать?
и что брать mysql_escape_string или mysql_real_escape_string? | |
|
|
|
|
|
|
|
для: Тень*
(11.04.2010 в 21:58)
| | В смысле можно некрасиво получить диагностик на экран? Да, конечно.
Это Cheops мой ляп проглядел :) | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 13:29)
| | Стоит учесть, что $_POST['name'] может быть массивом. | |
|
|
|
|
|
|
|
для: Bvz
(11.04.2010 в 20:35)
| | >в вашем решении этой задачи есть такая функция
>
>
>function unmq($arg)
>{
> return $arg === null ? null :
> (get_magic_quotes_gpc()? stripslashes($arg): $arg);
>}
>
|
>
>а сам sql запрос формируется так
>
>
>$add = unmq(@$_POST['name']);
>$name = $add;
> $esc_name = "'".mysql_escape_string($name)."'";
> $sql = "SELECT id FROM guests WHERE guestname = $esc_name";
>
|
>
>но сейчас вы предлагаете так делать
>
>$add = unmq(@$_POST['name']);
>$name = $add;
> $sql = "SELECT id FROM guests WHERE guestname = '".mysql_escape_string($name)."'";
>
|
>я вас правильно понял?
Если Вы уже ловите настолько тонкие различия как сейчас процитировали, то тогда скажу, что верхний вариант идеологически более корректен. И ему я бы отдал предпочтение.
>а почему в функцию unmq нельзя добавить mysql_escape_string?
А вот этот вопрос показывает, что нихрена подобного не происходит, и до ловли тонких различий - как до Шанхая пешком.
Почему нельзя? Можно. Только скрипт работать перестанет. Вернее, начнет работать с ошибками. | |
|
|
|
|
|
|
|
для: Bvz
(11.04.2010 в 20:35)
| | наверное потому что противоположные задачи у этих функций? | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 19:41)
| | в вашем решении этой задачи есть такая функция
function unmq($arg)
{
return $arg === null ? null :
(get_magic_quotes_gpc()? stripslashes($arg): $arg);
}
|
а сам sql запрос формируется так
$add = unmq(@$_POST['name']);
$name = $add;
$esc_name = "'".mysql_escape_string($name)."'";
$sql = "SELECT id FROM guests WHERE guestname = $esc_name";
|
но сейчас вы предлагаете так делать
$add = unmq(@$_POST['name']);
$name = $add;
$sql = "SELECT id FROM guests WHERE guestname = '".mysql_escape_string($name)."'";
|
я вас правильно понял?
а почему в функцию unmq нельзя добавить mysql_escape_string? | |
|
|
|
|
|
|
|
для: Bvz
(11.04.2010 в 18:46)
| | понятно.
не в коня корм.
Что я могу сказать?
В разделе "задачи" 21-я - Ваша..
Решите - поймете. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 18:30)
| | я правда не вижу ошибок, подскажите?
а как уменьшить листинг по ширине?
вот нашел такое решение
<?php
// функция для экранировки спецсимволов
function escape_string($str) {
if( get_magic_quotes_gpc() ) // если режим магических кавычек включен
$str = stripslashes($str); // очищаем строку от обратных слешей, которые добавили магические ковычки
return mysql_real_escape_string($str); // возвращаем экранированную строку
}
// и где-то её использование
$id = intval($_POST['id']);
$name = escape_string($_POST['name']);
$description = escape_string($_POST['description']);
$name = trim($name);
$description = trim($description);
//обновляем данные
$sql = "UPDATE `category` SET name='{$name}', description='{$description}' WHERE id={$id}";
mysql_query($sql) or die(mysql_error());
?>
|
| |
|
|
|
|