Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: разница функций (продолжение)
 
 автор: Bvz   (11.04.2010 в 23:17)   письмо автору
 
 

продолжения темы 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?

  Ответить  
 
 автор: neadekvat   (11.04.2010 в 23:55)   письмо автору
 
   для: Bvz   (11.04.2010 в 23:17)
 

Пока Трианона нет..

> а с числовыми значениями как поступать?
intval() а потом проверить их на null (т.е. если вместо числа была передана строка с символами, отличными от цифр)
> и когда можно trim использовать?
В принципе, лучше всегда, по-моему =) Редкий пользователь сознательно поставит пробел в конце или начале имени или пароля, остальные же тупо ошибуться и будут спамить на мыло, что у них ничего не работает.
Здесь же это не применено из-за условий решаемой задачи.
> и что брать mysql_escape_string или mysql_real_escape_string?
Смеетесь? Вы тему то читали? Первые два поста - все отвечено.

  Ответить  
 
 автор: Bvz   (12.04.2010 в 00:22)   письмо автору
 
   для: 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";

  Ответить  
 
 автор: tvv123456   (12.04.2010 в 01:23)   письмо автору
 
   для: Bvz   (12.04.2010 в 00:22)
 

Да уж. Вместо ответа процетирую предыдущего "ответчика":
>Смеетесь? Вы тему то читали?

Правда вы разберитесь что где написано и зачем. Вы спрашивали, что лучше mysql_escape_string или mysql_real_escape_string, вам уже не один раз написали что mysql_escape_string уходит в прошлое, но вы с завидным упорством используете именно ее

Вот допустим: что делает ваша функция unmq() и есть ли в ней смысл если мы 100% отключим магические кавычки(допустим через .htaccess)?

  Ответить  
 
 автор: Bvz   (12.04.2010 в 01:28)   письмо автору
 
   для: tvv123456   (12.04.2010 в 01:23)
 

это функция Трианона я и уточняю как лучше, а вы смеетесь :)

  Ответить  
 
 автор: tvv123456   (12.04.2010 в 01:29)   письмо автору
 
   для: 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 символов (обычно такие проверки делают при вводе пароля(типа пароль должен быть не короче....)

  Ответить  
 
 автор: Trianon   (12.04.2010 в 01:44)   письмо автору
 
   для: Bvz   (12.04.2010 в 01:28)
 

Если это функция Трианона, то это вовсе не значит, что это догма.
Там одна строка.
И разобраться что, как и зачем она делает - особого труда не составляет.
А пользы - изрядно.

  Ответить  
 
 автор: tvv123456   (12.04.2010 в 01:49)   письмо автору
 
   для: Trianon   (12.04.2010 в 01:44)
 

А можно спросить?
НЕ совсем понял момент:
$arg === null ? null :

зачем выполнять такую проверку? Если $arg === null, то и без этой проверки мы в итоге получим null

  Ответить  
 
 автор: Trianon   (12.04.2010 в 02:05)   письмо автору
 
   для: tvv123456   (12.04.2010 в 01:49)
 

Вы полагаете, stripslashes обязана работать с null-аргументом именно таким образом?

  Ответить  
 
 автор: tvv123456   (12.04.2010 в 02:11)   письмо автору
 
   для: Trianon   (12.04.2010 в 02:05)
 

Вот что нашел по этой функции:

string stripslashes ( string str )
Удаляет экранирующие бэкслэши. (\' преобразуется в ', и т.д.). Двойные бэкслэши (\\) 
преобразуется в одиночные(\). 
stripslashes() используется, например, когда директива 
конфигурации magic_quotes_gpc включена 
(она включена по умолчанию), 
и экранирование символов не требуется. 
Например, 
данные не вставляются в базу данных, а просто выводятся в браузер. 



Про null тут не слова поэтому и спросил, интересно просто узнать на будущее чем обусловлено.

  Ответить  
 
 автор: neadekvat   (12.04.2010 в 07:31)   письмо автору
 
   для: 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;
 }
}


Советую вам разобраться в этой штуке..

  Ответить  
 
 автор: Trianon   (12.04.2010 в 09:45)   письмо автору
 
   для: neadekvat   (12.04.2010 в 07:31)
 

а еще можно записать так:
<?php


if ((($arg) === (null))) {{
 {(
$arg = (null));}
}} else {{
 if ((
get_magic_quotes_gpc())) {{
  {(
$arg stripslashes(($arg)));}
 }} else {{
  {(
$arg = ($arg));}
 }}
}} 


Самого-то от скобок не тошнит?

  Ответить  
 
 автор: neadekvat   (12.04.2010 в 13:44)   письмо автору
 
   для: Trianon   (12.04.2010 в 09:45)
 

Расписал по-максимуму, то, как это является фактически
Я же не предлагаю использовать это в коде.

  Ответить  
 
 автор: Красная_шляпа   (13.04.2010 в 00:31)   письмо автору
 
   для: Trianon   (12.04.2010 в 09:45)
 

Хороший стиль программирования не более

  Ответить  
 
 автор: Trianon   (13.04.2010 в 01:25)   письмо автору
 
   для: Красная_шляпа   (13.04.2010 в 00:31)
 

излишние скобки, затуманивающие код и отвлекающие внимание - это отвратный стиль.
Хотя и довольно распространенный.
Ладно бы там, где размещение вступает в противоречие с логикой.
Но где пытаются замкнуть в блок единственный оператор - повбывав бы.

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 07: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);

  Ответить  
 
 автор: Trianon   (13.04.2010 в 09:26)   письмо автору
 
   для: 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);

  Ответить  
 
 автор: tvv123456   (12.04.2010 в 13:59)   письмо автору
 
   для: 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";
}



Вроде все нормально так что до сих пор не вижу смысла в этом шаге :)

  Ответить  
 
 автор: Slo_Nik   (13.04.2010 в 01:37)   письмо автору
 
   для: tvv123456   (12.04.2010 в 13:59)
 

а в этом коде нет смысла, Вы присвоили переменной $а грубо говоря "пустоту" и пытаетесь с этим ещё что то сделать...

вот что в руководстве про "null" сказано.
"Специальный тип NULL предназначен для пометки неинициализинрованной переменной....
... при инициализации переменной при помощи константы NULL и последующем обращении к переменной в выражениях не происходит генерация замечания "NOTICE: Undefined variable...
""

  Ответить  
 
 автор: tvv123456   (13.04.2010 в 21:17)   письмо автору
 
   для: Slo_Nik   (13.04.2010 в 01:37)
 

Твою ж девизию...:)))))))))))
Как плохо быть не понятым :)))))))))
тема закрыта

  Ответить  
 
 автор: Bvz   (12.04.2010 в 01:50)   письмо автору
 
   для: Trianon   (12.04.2010 в 01:44)
 

не догма, но для меня вы авторитет
ну да она убирает экранирование, если магические каычки включены

  Ответить  
 
 автор: Slo_Nik   (12.04.2010 в 11:02)   письмо автору
 
   для: Bvz   (12.04.2010 в 01:50)
 

если отключены "магические кавычки", то ни какого экранирования не происходит, данные идут в том виде в котором есть, значит надо экранировать, значит применять функцию mysql_real_escape_string().
если включены, то убираем обратные слеши, которые ставятся автоматически и опять же применяем функцию mysql_real_escape_string().

  Ответить  
 
 автор: Bvz   (13.04.2010 в 15:04)   письмо автору
 
   для: Slo_Nik   (12.04.2010 в 11:02)
 

все разобрался, спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования