|
|
|
|
|
для: Trianon
(31.03.2006 в 17:42)
| | И всё же я не представляю, чтоб кто-то по доброй воле в здравом рассудке включил magic_quotes_runtime прямо в конфиге php.
Вообще, у Котерова есть статья на эту тему. По-моему там сказано всё. | |
|
|
|
|
|
|
|
для: Loki
(31.03.2006 в 17:23)
| | Теперь понял.
Ответ. Предпочтительно временно выключить magic_qoutes , а если она не позволила себя выключить (если get_magic_quotes вернула 1) сдирать слэши самостоятельно с помощью stripslashes().
Пожалуй, независимо от того, gpc это или runtime. | |
|
|
|
|
|
|
|
для: 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 ('текст с \' экранированием')
|
Дамп же у нас не в воздухе висит, а в файле хранится. | |
|
|
|
|
|
|
|
для: Loki
(31.03.2006 в 16:51)
| | Вопрос был в том, будет ли magic_quotes_runtime добавлять/убирать лишние слэши при выполнении операции INSERT.
Ответ - нет. не будет. Она не участвует в процессе обработки строки запроса. Она обрабатывает лишь результат. Результат выдаваемый запросом SELECT через mysql_result и mysql_fetch_xxxxxx. (и возможно результаты итераторов mysql_fetch_field, но речь сейчас не о них). | |
|
|
|
|
|
|
|
для: Trianon
(31.03.2006 в 16:30)
| | пробовал:)
фунциклирует:)
при включенных magic_quotes - экранирует, а так же включает их и выключает. В общем, все как в мануале... только вопрос-то был совсем не об этом:) | |
|
|
|
|
|
|
|
для: Loki
(31.03.2006 в 16:26)
| | А Вы пробовали его запустить? :) | |
|
|
|
|
|
|
|
для: Trianon
(31.03.2006 в 14:31)
| | Так, собственно, в чем данный пример расходится с тем, что я написал? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Loki
(31.03.2006 в 12:57)
| | Есть разница между получением данных из внешних источников и размещением данных во внешних ..э... примемниках. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|