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

Форум PHP

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

 

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

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

тема: Экранирование кавычек и слешей
 
 автор: ZooM (ССС)   (06.05.2006 в 19:38)   письмо автору
 
 

Короче дело такое :
есть скрипт который обрабатывает и записывает переданный текст из textarea в файл msg.txt
вот он:

$msg = fopen("forum_s/$add_ok/msg.txt", "a");
$message = htmlspecialchars($message);
$message = str_replace("\n", "<br>", $message);
$message = str_replace("", "<b>", $message);
$message = str_replace("
", "</b>", $message);
$message = str_replace("[red]", "<font color=red>", $message);
$message = str_replace("[/red]", "</font>", $message);
$message = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3",$message);

$messag = "<tr><td colspan=5 background=img/tab_bg1.gif height=5 class=main><a style='font-size:2px'>&nbsp;</a></td></tr><tr valign=top><td class=main2 width=100><b>$username</b><br><a style='font-size:10px'>&#195;&#238;&#240;&#238;&#228;:$city</a></td><td class=main2 width=80%>$message</td></tr>\n";
fputs($msg, $messag);
fclose($msg);


но проблема такая : при выводе содержимого этого файла возникает проблема с кавичками и слэшами !
например если мы отправим такой текст :

<? Error_Reporting(E_ALL & ~E_NOTICE); 

$text file_get_contents("http://www.yandex.ru/index.html"); 

$mask_1="|<td class=\"ticker\\"><a href=\"(.+)<nobr>(.+)</nobr></a></td>|i"
preg_match_all($mask_1$text$massiv_1); 

$mask_2="|<td class=\"rate\">(.+)</td>|i"
preg_match_all($mask_2$text$massiv_2); 

echo 
"Курсы Валют :<br>\n"
echo 
$massiv_1[2][0]." : ".$massiv_2[1][0]."<br>\n"
echo 
$massiv_1[2][1]." : ".$massiv_2[1][1]."<br>\n"

?>


то после обработки , записи в файл , при выводе он отобрадается так :


<? Error_Reporting(E_ALL & ~E_NOTICE); 

$text file_get_contents(\"http://www.yandex.ru/index.html\"); 

$mask_1=\"|<td class=\\\"ticker\\\\\"><a href=\\\"(.+)<nobr>(.+)</nobr></a></td>|i\"; 
preg_match_all(
$mask_1$text$massiv_1); 

$mask_2=\"|<td class=\\\"rate\\\">(.+)</td>|i\"; 
preg_match_all(
$mask_2$text$massiv_2); 

echo \"Курсы Валют :<br>\\n\"; 
echo 
$massiv_1[2][0].\" : \".$massiv_2[1][0].\"<br>\\n\"; 
echo 
$massiv_1[2][1].\" : \".$massiv_2[1][1].\"<br>\\n\"; 

?>


В чем дело?!

   
 
 автор: Trianon   (06.05.2006 в 19:46)   письмо автору
 
   для: ZooM (ССС)   (06.05.2006 в 19:38)
 

Вероятно, в конфигурационном файле php включен режим магических кавычек (magic_quotes_gpc), при котором на старте скрипта все переменные из строки запроса, форм, кукисов преобразуются так, что перед каждым слэшем, апострофом, кавычкой (и еще некоторыми спецсимволами) добавляется обратный слэш.
При необходимости, избавиться от привнесенных слэшей можно с помощью функции stripslashes:

if(get_magic_quotes_gpc())
    $message = stripslashes($message);

   
 
 автор: ZooM (ССС)   (07.05.2006 в 06:30)   письмо автору
 
   для: Trianon   (06.05.2006 в 19:46)
 

Спасибо чувак!!!

   
Rambler's Top100
вверх

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