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

Форум PHP

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

 

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

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

тема: magic_quotes_gpc & magic_quotes_runtime

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

 
 автор: Trianon   (31.03.2006 в 17:46)   письмо автору
 
   для: Trianon   (31.03.2006 в 17:42)
 

И всё же я не представляю, чтоб кто-то по доброй воле в здравом рассудке включил magic_quotes_runtime прямо в конфиге php.
Вообще, у Котерова есть статья на эту тему. По-моему там сказано всё.

   
 
 автор: Trianon   (31.03.2006 в 17:42)   письмо автору
 
   для: Loki   (31.03.2006 в 17:23)
 

Теперь понял.
Ответ. Предпочтительно временно выключить magic_qoutes , а если она не позволила себя выключить (если get_magic_quotes вернула 1) сдирать слэши самостоятельно с помощью stripslashes().
Пожалуй, независимо от того, gpc это или runtime.

   
 
 автор: Loki   (31.03.2006 в 17:23)   письмо автору
 
   для: Trianon   (31.03.2006 в 16:59)
 

Так вы не то тестировали: за POST отвечает magic_quotes_gpc, magic_quotes_runtime отвечает за другие внешние данные.
Вот вам мой пример:

<?php 
include 'config.php'
$r = array('disabled','enabled'); 
   echo 
'<font face=courier>'
   
$query "CREATE TABLE IF NOT EXISTS tab(txt TEXT NOT NULL)"
   
$res mysql_query($query); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n"
   
$dump=file("test.txt");
   
$dump=$dump[0];

   echo 
"===[query on input]===<br>\r\n".nl2br(htmlspecialchars($dump))."=======================<br>\r\n"

echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime()]."<br>\r\n"
    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n"

echo 
"MQRTM SET 1:".$r[set_magic_quotes_runtime(1)]."<br>\r\n"
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n"
   
$dump=file("test.txt");
   
$dump=$dump[0];
    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n"

echo 
"MQRTM SET 0:".$r[set_magic_quotes_runtime(0)]."<br>\r\n"
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n"
   
$dump=file("test.txt");
   
$dump=$dump[0];
    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n"
?> 

test.txt

INSERT INTO tab VALUES ('текст с \' экранированием')

Дамп же у нас не в воздухе висит, а в файле хранится.

   
 
 автор: Trianon   (31.03.2006 в 16:59)   письмо автору
 
   для: Loki   (31.03.2006 в 16:51)
 

Вопрос был в том, будет ли magic_quotes_runtime добавлять/убирать лишние слэши при выполнении операции INSERT.
Ответ - нет. не будет. Она не участвует в процессе обработки строки запроса. Она обрабатывает лишь результат. Результат выдаваемый запросом SELECT через mysql_result и mysql_fetch_xxxxxx. (и возможно результаты итераторов mysql_fetch_field, но речь сейчас не о них).

   
 
 автор: Loki   (31.03.2006 в 16:51)   письмо автору
 
   для: Trianon   (31.03.2006 в 16:30)
 

пробовал:)
фунциклирует:)
при включенных magic_quotes - экранирует, а так же включает их и выключает. В общем, все как в мануале... только вопрос-то был совсем не об этом:)

   
 
 автор: Trianon   (31.03.2006 в 16:30)   письмо автору
 
   для: Loki   (31.03.2006 в 16:26)
 

А Вы пробовали его запустить? :)

   
 
 автор: Loki   (31.03.2006 в 16:26)   письмо автору
 
   для: Trianon   (31.03.2006 в 14:31)
 

Так, собственно, в чем данный пример расходится с тем, что я написал?

   
 
 автор: Trianon   (31.03.2006 в 14:41)   письмо автору
 
   для: Trianon   (31.03.2006 в 14:31)
 

Вот здесь можно поглядеть эффект.
<?php
include 'config.inc.php';
$r = array('disabled','enabled');
   echo 
'<font face=courier>';
   
$query "CREATE TABLE IF NOT EXISTS tab(txt TEXT NOT NULL)";
   
$res mysql_query($query); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";

echo 
"MQGPC GET  :".$r[get_magic_quotes_gpc    ( )]."<br>\r\n";

    
$dump = isset($_POST['dump'])? $_POST['dump'] : "";
    echo 
"===[query on input]===<br>\r\n".nl2br(htmlspecialchars($dump))."=======================<br>\r\n";
if(isset(
$_POST['strip']))
  if(
get_magic_quotes_gpc())
  {
    
$dump stripslashes($dump);
    echo 
"===[query after stripping ]===<br>\r\n".nl2br(htmlspecialchars($dump))."===================<br>\r\n";
  }

echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";
    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";
    else while(
$row mysql_fetch_array($res)) foreach( $row as $col => $val) echo "[$col] = $val<br>";


echo 
"MQRTM SET 1:".$r[set_magic_quotes_runtime(1)]."<br>\r\n";
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";

    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";
    else while(
$row mysql_fetch_array($res)) foreach( $row as $col => $val) echo "[$col] = $val<br>";

echo 
"MQRTM SET 0:".$r[set_magic_quotes_runtime(0)]."<br>\r\n";
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";

    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";
    else while(
$row mysql_fetch_array($res)) foreach( $row as $col => $val) echo "[$col] = $val<br>";


?>
<form method=post>
<textarea name=dump cols=80 rows=10>
SELECT * FROM tab
</textarea>
<br> <input type=checkbox name=strip> Strip slashes if magic_quotes_gpc is on
<br> <input type=submit value=test></form>

   
 
 автор: Trianon   (31.03.2006 в 14:31)   письмо автору
 
   для: Loki   (31.03.2006 в 12:57)
 

Есть разница между получением данных из внешних источников и размещением данных во внешних ..э... примемниках.

   
 
 автор: Trianon   (31.03.2006 в 14:28)   письмо автору
 
   для: Loki   (31.03.2006 в 12:57)
 

<?php
include 'config.inc.php';
$r = array('disabled','enabled');
   echo 
'<font face=courier>';
   
$query "CREATE TABLE IF NOT EXISTS tab(txt TEXT NOT NULL)";
   
$res mysql_query($query); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";

echo 
"MQGPC GET  :".$r[get_magic_quotes_gpc    ( )]."<br>\r\n";

    
$dump = isset($_POST['dump'])? $_POST['dump'] : "";
    echo 
"===[query on input]===<br>\r\n".nl2br(htmlspecialchars($dump))."=======================<br>\r\n";
if(isset(
$_POST['strip']))
  if(
get_magic_quotes_gpc())
  {
    
$dump stripslashes($dump);
    echo 
"===[query after stripping ]===<br>\r\n".nl2br(htmlspecialchars($dump))."===================<br>\r\n";
  }

echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";
    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";

echo 
"MQRTM SET 1:".$r[set_magic_quotes_runtime(1)]."<br>\r\n";
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";

    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";

echo 
"MQRTM SET 0:".$r[set_magic_quotes_runtime(0)]."<br>\r\n";
echo 
"MQRTM GET  :".$r[get_magic_quotes_runtime( )]."<br>\r\n";

    
$res mysql_query($dump); if(!$res) echo 'Error in query :'mysql_error()."<br>\r\n";


?>
<form method=post>
<textarea name=dump cols=80 rows=10>
INSERT INTO tab VALUES ('текст с \' экранированием')
</textarea>
<br> <input type=checkbox name=strip> Strip slashes if magic_quotes_gpc is on
<br> <input type=submit value=test></form>

   

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

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

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