|
|
|
| продолжения темы http://softtime.ru/forum/read.php?id_forum=1&id_theme=73185&page=1
спасибище!!! оставлю пока так (пока полностью не догоню как все это работает)
>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? | |
|
|
|
|
|
|
|
для: Bvz
(11.04.2010 в 23:17)
| | Пока Трианона нет..
> а с числовыми значениями как поступать?
intval() а потом проверить их на null (т.е. если вместо числа была передана строка с символами, отличными от цифр)
> и когда можно trim использовать?
В принципе, лучше всегда, по-моему =) Редкий пользователь сознательно поставит пробел в конце или начале имени или пароля, остальные же тупо ошибуться и будут спамить на мыло, что у них ничего не работает.
Здесь же это не применено из-за условий решаемой задачи.
> и что брать mysql_escape_string или mysql_real_escape_string?
Смеетесь? Вы тему то читали? Первые два поста - все отвечено. | |
|
|
|
|
|
|
|
для: neadekvat
(11.04.2010 в 23:55)
| | т.е. так?
function unmq($arg)
{
return $arg === null ? null : (get_magic_quotes_gpc()? stripslashes($arg): $arg);
}
$id = intval($_POST['id']);
$add = trim($_POST['name']);
$add = unmq($add);
$esc_name = "'".mysql_escape_string($add)."'";
$sql = "SELECT id FROM guests WHERE guestname = $esc_name AND id =$id";
|
| |
|
|
|
|
|
|
|
для: Bvz
(12.04.2010 в 00:22)
| | Да уж. Вместо ответа процетирую предыдущего "ответчика":
>Смеетесь? Вы тему то читали?
Правда вы разберитесь что где написано и зачем. Вы спрашивали, что лучше mysql_escape_string или mysql_real_escape_string, вам уже не один раз написали что mysql_escape_string уходит в прошлое, но вы с завидным упорством используете именно ее
Вот допустим: что делает ваша функция unmq() и есть ли в ней смысл если мы 100% отключим магические кавычки(допустим через .htaccess)? | |
|
|
|
|
|
|
|
для: tvv123456
(12.04.2010 в 01:23)
| | это функция Трианона я и уточняю как лучше, а вы смеетесь :) | |
|
|
|
|
|
|
|
для: Bvz
(12.04.2010 в 01:28)
| | Даже в мыслях не было смеяться :)
Ну серьезно вы бы денек посидели подумали, что это за функция :)))
убедитесь что включены магические кавычки и напишите такой кодик:
<?php
if(isset($_POST['sumbmit']))
{
echo $_POST['filed'];
}
?>
<form action="#" method="post">
<input name="filed" type="text" />
<input name="sumbmit" type="submit" value="Пошел" />
</form>
|
а в поле вставте допустим d'ojeron
и без обработки вашей функцией проверте пройдет ли это слово при включеных магических кавычках проверку, что оно должно быть не короче 9 символов (обычно такие проверки делают при вводе пароля(типа пароль должен быть не короче....) | |
|
|
|
|
|
|
|
для: Bvz
(12.04.2010 в 01:28)
| | Если это функция Трианона, то это вовсе не значит, что это догма.
Там одна строка.
И разобраться что, как и зачем она делает - особого труда не составляет.
А пользы - изрядно. | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2010 в 01:44)
| | А можно спросить?
НЕ совсем понял момент:
$arg === null ? null :
зачем выполнять такую проверку? Если $arg === null, то и без этой проверки мы в итоге получим null | |
|
|
|
|
|
|
|
для: tvv123456
(12.04.2010 в 01:49)
| | Вы полагаете, stripslashes обязана работать с null-аргументом именно таким образом? | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2010 в 02:05)
| | Вот что нашел по этой функции:
string stripslashes ( string str )
Удаляет экранирующие бэкслэши. (\' преобразуется в ', и т.д.). Двойные бэкслэши (\\)
преобразуется в одиночные(\).
stripslashes() используется, например, когда директива
конфигурации magic_quotes_gpc включена
(она включена по умолчанию),
и экранирование символов не требуется.
Например,
данные не вставляются в базу данных, а просто выводятся в браузер.
|
Про null тут не слова поэтому и спросил, интересно просто узнать на будущее чем обусловлено. | |
|
|
|
|
|
|
|
для: tvv123456
(12.04.2010 в 02:11)
| | Короче говоря, вы не понимаете, что это за строка:
$arg === null ? null : (get_magic_quotes_gpc()? stripslashes($arg): $arg);
я правильно понял?
Эту строку можно записать так:
<?php
if ($arg === null) {
$arg = null;
} else {
if (get_magic_quotes_gpc()) {
$arg = stripslashes($arg);
} else {
$arg = $arg;
}
}
|
Советую вам разобраться в этой штуке.. | |
|
|
|
|
|
|
|
для: neadekvat
(12.04.2010 в 07:31)
| | а еще можно записать так:
<?php
if ((($arg) === (null))) {{
{($arg = (null));}
}} else {{
if ((get_magic_quotes_gpc())) {{
{($arg = stripslashes(($arg)));}
}} else {{
{($arg = ($arg));}
}}
}}
|
Самого-то от скобок не тошнит? | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2010 в 09:45)
| | Расписал по-максимуму, то, как это является фактически
Я же не предлагаю использовать это в коде. | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2010 в 09:45)
| | Хороший стиль программирования не более | |
|
|
|
|
|
|
|
для: Красная_шляпа
(13.04.2010 в 00:31)
| | излишние скобки, затуманивающие код и отвлекающие внимание - это отвратный стиль.
Хотя и довольно распространенный.
Ладно бы там, где размещение вступает в противоречие с логикой.
Но где пытаются замкнуть в блок единственный оператор - повбывав бы. | |
|
|
|
|
|
|
|
для: Trianon
(13.04.2010 в 01:25)
| | Если бы я решал задачу в рабочем скрипте, это выглядело бы так:
<?php
if ($arg !== null && get_magic_quotes_gpc()) {
$arg = stripslashes($arg);
}
|
А я расписал дословно, кажду часть процетированного мною там выражения:
$arg === null ? null : (get_magic_quotes_gpc()? stripslashes($arg): $arg); | |
|
|
|
|
|
|
|
для: neadekvat
(13.04.2010 в 07:31)
| |
if($arg !== null && get_magic_quotes_gpc())
$arg = stripslashes($arg);
|
Вот так это выглядит без мусора.
Или так
if($arg && get_magic_quotes_gpc()) $arg = stripslashes($arg);
|
| |
|
|
|
|
|
|
|
для: neadekvat
(12.04.2010 в 07:31)
| | >я правильно понял?
нет это я как раз знаю, и с строку понять в разы легче чем все эти if(){}else{} (говорю только про данный случай)
Просто не знаю как стрипселшес работает с null
и хотел понять смысл:
автор: Trianon (12.04.2010 в 02:05) письмо автору
для: tvv123456 (12.04.2010 в 01:49)
Вы полагаете, stripslashes обязана работать с
null-аргументом именно таким образом?
|
В инете не нашел ни одного упоминания как эта функция работает с null
Написал такой кодик:
$a = null;
stripslashes($a);
echo $a;
if($a===null)
{
echo "null";
}
else
{
echo "НЕ null";
}
|
Вроде все нормально так что до сих пор не вижу смысла в этом шаге :) | |
|
|
|
|
|
|
|
для: tvv123456
(12.04.2010 в 13:59)
| | а в этом коде нет смысла, Вы присвоили переменной $а грубо говоря "пустоту" и пытаетесь с этим ещё что то сделать...
вот что в руководстве про "null" сказано.
"Специальный тип NULL предназначен для пометки неинициализинрованной переменной....
... при инициализации переменной при помощи константы NULL и последующем обращении к переменной в выражениях не происходит генерация замечания "NOTICE: Undefined variable..."" | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.04.2010 в 01:37)
| | Твою ж девизию...:)))))))))))
Как плохо быть не понятым :)))))))))
тема закрыта | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2010 в 01:44)
| | не догма, но для меня вы авторитет
ну да она убирает экранирование, если магические каычки включены | |
|
|
|
|
|
|
|
для: Bvz
(12.04.2010 в 01:50)
| | если отключены "магические кавычки", то ни какого экранирования не происходит, данные идут в том виде в котором есть, значит надо экранировать, значит применять функцию mysql_real_escape_string().
если включены, то убираем обратные слеши, которые ставятся автоматически и опять же применяем функцию mysql_real_escape_string(). | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.04.2010 в 11:02)
| | все разобрался, спасибо! | |
|
|
|