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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: get_magic_quotes_gpc

Сообщения:  [1-10]    [11-20]  [21-27] 

 
 автор: cheops   (29.12.2008 в 14:11)   письмо автору
 
   для: Trianon   (28.12.2008 в 16:12)
 

Надеюсь, а то часть дистрибутивов PHP 6 (правда для разработчиков) уже выходила без неё.

  Ответить  
 
 автор: Root   (29.12.2008 в 13:55)   письмо автору
 
   для: gurza   (28.12.2008 в 18:36)
 

если хотите её использовать, то проверяйте также длину строки.

  Ответить  
 
 автор: gurza   (28.12.2008 в 18:36)   письмо автору
 
   для: Root   (28.12.2008 в 16:49)
 

Так что не стоит использовать функцию ip2long?

  Ответить  
 
 автор: Root   (28.12.2008 в 16:49)   письмо автору
 
   для: gurza   (28.12.2008 в 16:30)
 

ip2long странная штука..
В мануале написано:
"Returns the IPv4 address or FALSE if ip_address is invalid." и пример
<?php
$ip   
gethostbyname('www.example.com');
$long ip2long($ip);

if (
$long == -|| $long === FALSE) {
    echo 
'Invalid IP, please try again';
} else {
    echo 
$ip   "\n";           // 192.0.34.166
    
echo $long "\n";           // -1073732954
    
printf("%u\n"ip2long($ip)); // 3221234342
}
?>

но не всё так просто..
<?php
for ($i=0$i<=255$i++)
{
    
$ip '127.0.0.1' chr($i). "sql injection";
    
$long ip2long$ip );
    echo (
$long == -|| $long === FALSE) ?
        
'Invalid IP, please try again, IP - ' $ip '<br />' :
        
'Valid IP - ' $ip  '<br />';
}

  Ответить  
 
 автор: gurza   (28.12.2008 в 16:30)   письмо автору
 
   для: Root   (28.12.2008 в 12:12)
 

Автор: Root (28.12.2008 в 12:12)
что делать с $remote_addr думайте сами

решил прогнать ир через

 $remote_addr = getenv('REMOTE_ADDR'); 
 $ip = ip2long($remote_addr);

  Ответить  
 
 автор: Trianon   (28.12.2008 в 16:12)   письмо автору
 
   для: cheops   (28.12.2008 в 15:42)
 

Функция get_magic_quotes_gpc() останется. Просто она в любом случае будет возвращать false.

  Ответить  
 
 автор: Root   (28.12.2008 в 16:11)   письмо автору
 
   для: cheops   (28.12.2008 в 15:42)
 

>у нас в коде появится ещё один геморрой в виде ...

геморрой уже есть. Вот мой :-) :
<?php
if( get_magic_quotes_gpc() ) 
{
    
$input = array( &$_GET, &$_POST, &$_COOKIE );
    while( list( 
$k,$v ) = each$input ) )
    {
        foreach( 
$v as $key => $val 
        {
            if( !
is_array$val ) ) 
            {
                
$input[$k][$key] = stripslashes$val );
                continue;
            }
            
$input[] =& $input[$k][$key];
        }
    }
    unset( 
$input );    
}
?>

а станет
<?php
if( phpversion() < '6.0.0' && get_magic_quotes_gpc() )
...

  Ответить  
 
 автор: cheops   (28.12.2008 в 15:42)   письмо автору
 
   для: Root   (27.12.2008 в 16:30)
 

>надеятся на магические кавычки нечего, особенно после вот этого -> PHP 5.2.7 has been removed from distribution :-)
Дело не в надежде, а в том, что мы вынуждены в коде учитывать сервера, как с включеными магическими кавычками, так и с отключенными, и даже после отмены ситуация не изменится - сервера с включенными и отключенными магическими кавычками будут оставаться, а у нас в коде появится ещё один геморрой в виде
<?php
  
if(!function_exists('get_magic_quotes_gpc'))
  {
    function 
get_magic_quotes_gpc()
    {
      return 
false;
    }
  }
?>
который будет учитывать сервера, где функции get_magic_quotes_gpc() нет.

  Ответить  
 
 автор: cheops   (28.12.2008 в 15:38)   письмо автору
 
   для: gurza   (27.12.2008 в 02:21)
 

>обязательно так
>
 
><?php  
>  if (!get_magic_quotes_gpc())  
>  {  
>    
$author mysql_escape_string($author);  
>    
$pswrd mysql_escape_string($pswrd);  
>  }  
>
?>  
>

>или так тоже будет работать корректно?
>

>
><?php  
>     $author mysql_escape_string($author);  
>    
$pswrd mysql_escape_string($pswrd);  
>  
>
?>  
>

Нет, не корректно, если магические кавычки включены - можете два раза заслешить спец-символы. Придется использовать get_magic_quotes_gpc(), и даже когда её полностью выведут из PHP придется её ещё долго самостоятельно писать, чтобы обеспечить совместимость с более ранними версиями PHP.

  Ответить  
 
 автор: gurza   (28.12.2008 в 15:12)   письмо автору
 
   для: Root   (28.12.2008 в 12:12)
 

Спасибо теперь понятненько

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-27] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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