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

Форум MySQL

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

 

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

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

тема: Правильное применение mysql_real_escape_string()
 
 автор: TXC   (03.07.2007 в 18:07)   письмо автору
 
 

Прочитал в мануале по PHP такую вещь:


Замечание: Если magic_quotes_gpc включены,
 то сначала данные следует обработать 
функцией stripslashes(). Если 
mysql_real_escape_string() применяется к 
данным, которые уже были прослешены, то в 
результате слеши в данных будут 
удваиваться.

т.е. , необходимо так понимать:

<?php
        
if (get_magic_quotes_gpc())
        {
            
$query stripslashes($query);
        }
        
$query mysql_real_escape_string($query$conn_handle);
?>


Верно ли?

   
 
 автор: cheops   (03.07.2007 в 18:17)   письмо автору
 
   для: TXC   (03.07.2007 в 18:07)
 

Да, верно.

   
 
 автор: Trianon   (03.07.2007 в 19:32)   письмо автору
 
   для: TXC   (03.07.2007 в 18:07)
 

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

   
 
 автор: TXC   (04.07.2007 в 10:26)   письмо автору
 
   для: Trianon   (03.07.2007 в 19:32)
 

А как же быть с руководством по PHP?

   
 
 автор: Trianon   (04.07.2007 в 15:37)   письмо автору
 
   для: TXC   (04.07.2007 в 10:26)
 

А что написано в руководстве по PHP?
И какой документ Вы так называете?

   
 
 автор: TXC   (04.07.2007 в 17:35)   письмо автору
 
   для: Trianon   (04.07.2007 в 15:37)
 

> И какой документ Вы так называете?

Ну как какой, разумеется официальный мануал (руководство по PHP):
http://ru.php.net/manual/en/function.mysql-real-escape-string.php
http://ru.php.net/manual/ru/function.mysql-real-escape-string.php

Там в одном замечании есть такие строки, как я привел в первом посте. Соответственно по ним и составил конструкцию, которая также содержится в первом посте.

Официальном руководстве это приведено как лучший вариант составления запроса:

<?
// Функция экранирования переменных
function quote_smart($value)
{
    
// если magic_quotes_gpc включена - используем stripslashes
    
if (get_magic_quotes_gpc()) {
        
$value stripslashes($value);
    }
    
// Если переменная - число, то экранировать её не нужно
    // если нет - то окружем её кавычками, и экранируем
    
if (!is_numeric($value)) {
        
$value "'" mysql_real_escape_string($value) . "'";
    }
    return 
$value;
}
?>

   
 
 автор: Unkind   (04.07.2007 в 18:40)   письмо автору
 
   для: TXC   (04.07.2007 в 17:35)
 

Вы комментарии пользователей оффициальным руководством называете? :)

   
 
 автор: TXC   (04.07.2007 в 18:59)   письмо автору
 
   для: Unkind   (04.07.2007 в 18:40)
 

А что Вы можете назвать официальным руководством по PHP, как не руководство на их сайте? К тому же в нем так и написано, что "руководство", так что это не мое название.

Или Вы предлагаете другой перевод и/или определение термину 'manual' разработчикам PHP? Или Вы знаете "более официальное" руководство? ;)

   
 
 автор: Unkind   (04.07.2007 в 19:29)   письмо автору
 
   для: TXC   (04.07.2007 в 18:59)
 

А что Вы можете назвать официальным руководством по PHP
http://php.net/

тому же в нем так и написано, что "руководство", так что это не мое название.
Раз Вы умеете читать, то почему слова "User Contributed Notes" Вы проигнорировали? :)

К Вашему сведению, Вы приняли пост от "php(at)iain.nl" 12-Mar-2006 12:59 "оффициальным руководством".

   
 
 автор: TXC   (04.07.2007 в 19:47)   письмо автору
 
   для: Unkind   (04.07.2007 в 19:29)
 

> то почему слова "User Contributed Notes" Вы проигнорировали?
Потому что этого нет в chm-версии оффлайн руководства. Да, конечно же там говорится о том, что это составлено пользователями и потому могут содержаться ошибки, вот за тем я и обратился на форум, а не за тем чтоб разводить тут демагогию на философские темы. Потому как можно еще углубиться в историю создания PHP, провести тестирование авторов PHP на профпригодность и т.д. Вообщем для стеба еще много можно придумать (голь на выдумки хитра), т.к. это проще, чем помочь разобраться в самом вопросе.

А если пост Вами упомянутого php(at)iain.nl" 12-Mar-2006 12:59 добавили в офлайн-версию руководства, то значит, что не за просто так. Или по Вашему только заголовки содержания руководства можна назвать официальным руководством, а дальше все неофициальное? :)

Два человека мне дали абсолютно разные ответы, вот я и пытаюсь выяснить, кто же ближе к истине, а не кто официальнее.

   
 
 автор: Trianon   (05.07.2007 в 09:54)   письмо автору
 
   для: TXC   (04.07.2007 в 19:47)
 

Я так понимаю, истину Вы уже выяснили.... И что теперь?

И еще... мне крайне интересно, что вытер модератор в этой теме....

Если кто-нибудь успел перехватить контент до чистки, я был бы весьма признателен, если он отправит его мне личным сообщением.

   
 
 автор: TXC   (05.07.2007 в 10:27)   письмо автору
 
   для: Trianon   (05.07.2007 в 09:54)
 

Да, выяснил. Для этого мне было достаточно Вашего поста и поста cheops-a. Стоило мне не до конца вникнуть в последнюю строчку и задать вопрос, как меня стали "объяснять" материал, который темы не касается.

Немного поразмыслив и перечитав Ваш пост еще раз, я разобрался, что Вы уточняли к слова cheops-a. А я сперва их понял не так.

   
 
 автор: Unkind   (03.07.2007 в 21:27)   письмо автору
 
   для: TXC   (03.07.2007 в 18:07)
 

А что в $query? Если SQL-запрос, то неверно.

   
 
 автор: TXC   (04.07.2007 в 10:30)   письмо автору
 
   для: Unkind   (03.07.2007 в 21:27)
 

Ну если SQL-запрос, то я уже понял, что неверно, т.к. он мне повозвращает всякие там \r\n
В даном случае под $query имелась в виду переменная, полученная от пользователя, о чем я забыл написать.

   
Rambler's Top100
вверх

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