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

Форум PHP

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

 

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

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

тема: Экранирование :(
 
 автор: 10100100   (17.11.2006 в 11:34)   письмо автору
 
 

Привет всем.
знаю - тема затёртая до дыр, но вот не могу справится и всё тут :(
суть скрипта такова - юзер пишет в форме свою информация которая содержит ( \ " ' )
и вот эти самые символы глючат.
дело в том что скрипт передаёт весь инф обработчику который выполняет функцию предпросмотра, и в скрытые поля попадет инф который юзер только что вводил, и вот в скрытых полях всё отображается нормально, н оесли нажать на кнопку редактировать то данные для редактирования выводятся либо с n-ным количеством слэшей или не выводятся после первой двойной кавычки :(

всё уже вроде бы перепробовал.

вот скрипт - форма (он же скрипт редактирования.):

<?php
echo '
<td width=100% bgcolor=D4D4D4 valign=top>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td>'
;
echo 
"<script language='JavaScript1.1' type='text/javascript'> 
  function tag(text1, text2) 
  { 
     if ((document.selection)) 
     { 
       document.stat.pred_new.focus(); 
       document.stat.document.selection.createRange().text = text1+document.stat.document.selection.createRange().text+text2; 
     } else document.stat.pred_new.value += text1+text2; 
  } 
  function tag2(text1, text2) 
  { 
     if ((document.selection)) 
     { 
       document.stat.all_new.focus(); 
       document.stat.document.selection.createRange().text = text1+document.stat.document.selection.createRange().text+text2; 
     } else document.stat.all_new.value += text1+text2; 
  } 
</script>"
;
$g $_COOKIE['valid_user'];
$query5 "SELECT * FROM user WHERE id_user='".$g."'";
$res5 = @mysql_query($query5); 
$com5 mysql_fetch_array($res5);  
$name $com5['name'];
$uid1 $com5['uid'];
$range $com5['range'];
$uid $_COOKIE['uid'];
if (empty(
$uid)){$uid '00'$uid1 '01';}
if (
$uid == $uid1){
$name_new $_POST['name_new'];
$pred_new $_POST['pred_new'];
$all_new $_POST['all_new'];

    
$name_new=stripslashes($name_new);   
    
$pred_new=stripslashes($pred_new);   
    
$all_new=stripslashes($all_new);  

   
$refresh "<input style='background-color:ffffff;' name=\"button\" type=submit value=\"Предпросмотр\">";
?>
<form action="add_w.php" name="stat" method="post">
<table cellspacing="0" cellpading="0" border="0" bordercolor="000000" background=/images/drop.gif width="400">
 <tr><td>
  <table cellspacing="0" cellpading="0" border="0">
   <tr><td>
   Название статьи:
   </td>
   <td>
   <textarea ROWS=2 COLS=40 name="name_new"><?php echo $name_new;?></textarea>
   </td></tr>
   <tr><td>
   Предварительная область статьи:
   </td>
   <td>
<?php
echo '
<a href="javascript:tag(\'\', \'\')" onClick=\"javascript:tag(\'\', \'\'); return false;\" ></a>
<a href="javascript:tag(\'\', \'\')" onClick=\"javascript:tag(\'\', \'\'); return false;\" ></a>
<a href="javascript:tag(\'[U]\', \'[/U]\')" onClick=\"javascript:tag(\'[U]\', \'[/U]\'); return false;\" >[U]</a>
<a href="javascript:tag(\'[CITE]\', \'[/CITE]\')" onClick=\"javascript:tag(\'[CITE]\', \'[/CITE]\'); return false;\" >[CITE]</a>
'
;?>
   <textarea ROWS=7 COLS=40 name="pred_new" onFocus="clearField()"><?php echo "$pred_new";?></textarea>
   </td></tr>
   <tr><td>
   Полная статья:
   </td>
   <td>
<?php
echo '
<a href="javascript:tag2(\'[I]\', \'
\')" onClick=\"javascript:tag2(\'\', \'\'); return false;\" >[I]</a>
<a href="javascript:tag2(\'[b]\', \'
\')" onClick=\"javascript:tag2(\'\', \'\'); return false;\" >[b]</a>
<a href="javascript:tag2(\'[U]\', \'[/U]\')" onClick=\"javascript:tag2(\'[U]\', \'[/U]\'); return false;\" >[U]</a>
<a href="javascript:tag2(\'[big]\', \'[/big]\')" onClick=\"javascript:tag2(\'[big]\', \'[/big]\'); return false;\" >[big]</a>
<a href="javascript:tag2(\'[small]\', \'[/small]\')" onClick=\"javascript:tag2(\'[small]\', \'[/small]\'); return false;\" >[small]</a>
<a href="javascript:tag2(\'[coment]\', \'[/coment]\')" onClick=\"javascript:tag2(\'[coment]\', \'[/coment]\'); return false;\" >[coment]</a>
<a href="javascript:tag2(\'[email]\', \'[/email]\')" onClick=\"javascript:tag2(\'[email]\', \'[/email]\'); return false;\" >[email]</a>
<a href="javascript:tag2(\'[url]\', \'[/url]\')" onClick=\"javascript:tag2(\'[url]\', \'[/url]\'); return false;\" >[url]</a>
'
;?>
   <textarea ROWS=10 COLS=40 name="all_new" onFocus="clearField()"><?php echo "$all_new";?></textarea>
   </td></tr>
   <tr><td>
   <input style='background-color:ffffff' name="button" type="submit" value="Отправить">
   </td>
   <td>
<?php
  
echo "$refresh";
?>
   </td></tr>
</table>
</form></td>
        </tr>
    </table>
<a href=/index.php>Вернуться на главную страницу</a>
<?php
}
else
{
echo 
'Добавлять новости имеют право только зарегистрированные пользователи!';
}

?>



вот обработчик:

<? 
include "config.php"
$name_new trim($_POST['name_new']);
$pred_new trim($_POST['pred_new']);
$all_new trim($_POST['all_new']);


if (empty(
$name_new))
    {
        echo 
'Вы не ввели <b>Название новости</b>, пожалуйста попробуйте ещё раз.';
        exit();
    }
if (empty(
$pred_new))
    {
        echo 
'Вы не ввели <b>Предварительную область статьи</b>, пожалуйста попробуйте ещё раз.';
        exit();
    }

$g $_COOKIE['valid_user'];
$query5 "SELECT * FROM user WHERE id_user='".$g."'";
$res5 = @mysql_query($query5); 
$com5 mysql_fetch_array($res5);  
$uid1 $com5['uid'];
$uid $_COOKIE['uid'];
if (empty(
$uid)){$uid '00'$uid1 '01';}
if (
$uid == $uid1){
$username $com5['name'];




if (
$button=='Предпросмотр'
    {
    include (
"../../up.html");
    include (
"../../buttons.php");
echo 
'
<td width=100% bgcolor=D4D4D4 valign=top>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td>'
;

echo 
'<style>.1 {border: 1px dashed Silver;}
textarea {border: 1px dashed Silver;} 
input {border: 1px dashed Silver;}
a {text-decoration:none; font-size: 12pt; color: #636363; font-family: Times New Roman;}
a:hover{text-decoration; color:#000000}
</style>'
;


echo 
'<body bgcolor=D3EFFB>';
echo 
'<table class=1 background=/images/drop.gif cellspacing=0 cellpadding=0 width=100%><tr><td width=100%>';
echo 
'<center><b><strong>';
$name_new $_POST['name_new'];
 if (!
get_magic_quotes_gpc()) 
  { 
    
$name_new mysql_escape_string($name_new); 
  } 
  else
  {
    
$name_new=stripslashes($name_new);   
  }
echo 
$name_new;
echo 
'</strong></b></center>';
echo 
'</table>';
echo 
'<table class=1 bgcolor=ffffff cellspacing=0 cellpading=0 width=100%><tr><td width=100%>';
echo 
'<small>';
echo 
'[текущее время]';
echo 
'<br><br>';
echo 
'</small>';
 if (!
get_magic_quotes_gpc()) 
  { 
    
$pred_new mysql_escape_string($pred_new); 
  } 
  else
  {
    
$pred_new=stripslashes($pred_new);   
  }
$pred_new htmlspecialchars($pred_new);
include (
"rv_pred_new.php");
echo 
$pred_new;
echo 
'<br>';
 if (!
get_magic_quotes_gpc()) 
  { 
    
$all_new mysql_escape_string($all_new); 
  } 
  else
  {
    
$all_new=stripslashes($all_new);   
  }
$all_new htmlspecialchars($all_new);
include (
"rv_all_new.php");
echo 
$all_new;
echo 
"<br /><br /><small>Автор статьи: <strong>$username</strong></small><br /><br />";
echo 
'<a href=/index.php><small>Вернуться в раздел статей</small></a>';       
echo 
'</table>';
echo 
'<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td width=1%>';
$name_new trim($_POST['name_new']);
$pred_new trim($_POST['pred_new']);
$all_new trim($_POST['all_new']);


    
$name_new=stripslashes($name_new);   
    
$pred_new=stripslashes($pred_new);
    
$all_new=stripslashes($all_new);


echo 
"<form action=\"add_w.php\" method=\"post\" name=\"stat\">";
    echo 
"<input type=\"hidden\" name=\"name_new\" value=\"$name_new\">";
    echo 
"<input type=\"hidden\" name=\"pred_new\" value=\"$pred_new\">";
    echo 
"<input type=\"hidden\" name=\"all_new\" value=\"$all_new\">";
    echo 
"<input style=\"background-color:ffffff;\" type=\"submit\" name=\"button\" value=\"Отправить\">";
    echo 
"</form>";
echo 
'</td><td>';
    echo 
"<form action=\"w.php\" method=\"post\" name=\"stat\">";
    echo 
"<input type=\"hidden\" name=\"name_new\" value=\"$name_new\">";
    echo 
"<input type=\"hidden\" name=\"pred_new\" value=\"$pred_new\">";
    echo 
"<input type=\"hidden\" name=\"all_new\" value=\"$all_new\">";
    echo 
"<input style=\"background-color:ffffff;\" type=\"submit\" name=\"button\" value=\"Редактировать\">";
    echo 
"</form>";
echo 
'</td></tr></table>';
    include (
"../../dawn.html");
exit;
}
else
{
echo 
'Добавлять новости имеют право только зарегистрированные пользователи!';
}
?> 



сейчас я даже не помню где что стояло изначально (из экранирующего сообщества) так как весь перезапутался и устал :( помогите пожалуйста.

   
 
 автор: cheops   (17.11.2006 в 12:41)   письмо автору
 
   для: 10100100   (17.11.2006 в 11:34)
 

При выводе переменных, содержащих кавычки, в окно браузера лучше обрабатывать их при помощи функции htmlspecialchars(), передавая в качестве второго аргумента константу ENT_QUOTES
<?php
$name_new 
trim(htmlspecialchars($_POST['name_new'],ENT_QUOTES));
?>

   
 
 автор: 10100100   (17.11.2006 в 13:20)   письмо автору
 
   для: cheops   (17.11.2006 в 12:41)
 

Спасибо Вам Игорь! Вы как всегда спасли меня!!!! :)
обажаю этот форум!!!

   
Rambler's Top100
вверх

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