input type и глюки с кавычками

vladax

Новичок
input type и глюки с кавычками

Блин, не пойму я что за хрень такая....
Короче... апдейт строки в файле...
PHP:
   if ($_SERVER['REQUEST_METHOD']=='POST') {

     ... (разная лабуда)

   } else {
      //если это не пост, то
      //читаем строки файла-БД в массив $f
      $f=file("news.dat") or die("файл не найден");
      //и достаем нужную строку для изменения
      $col = explode("|", $f[$string]);
      $_POST['date'] = $col[0];
      $_POST['zagl'] = $col[1];
      $_POST['news'] = $col[2];
   }

     print "<form method=\"POST\" action=".$PHP_SELF.">
               <input type=hidden name=string value=".$string."\">".
           "<p>Дата:</p>".
           "<input type=\"text\" size=\"8\" name=\"date\" value=\"".$_POST['date']."\"><br>".
           "<p>Заголовок:</p>".
           "<input type=\"text\" size=\"58\" name=\"zagl\" value=\"".$_POST['zagl']."\"><br>".
           "<p>Текст:</p>".
           "<textarea type=\"text\" name=\"news\" cols=\"50%\" rows=\"8\" maxlength=\"1000\">".$_POST['news'].
           "</textarea>".
             "<input type=\"submit\" value=\"Принять изменения\">".
           "</form>";
[\php]

Так вот... проблема в том, что если в строке файла есть кавычки, то строка в поле <input type... выводится как раз до этих кавычек. Причем, с $_POST['news'] всё окай, проблема с $_POST['zagl']?

Шо за глюки? Может кто сказать...
 

pumba

Guest
$string=addslashes($string);
http://www.php.net/manual/ru/function.addslashes.php
 

asman

Guest
всё очень просто - параметр value ограничивается кавычками. вот он и закрывается при встрече кавычки.
выход - писать value='' с одинарными кавычками, а в тексте использовать двойные или наоборот.
можно еще кавычки заменять на &_#_3_4_; (без подчеркивания конечно)
 

vladax

Новичок
Да точно. Блин... это ж просто как валенки!!!

И надо ещё при посттинге прописать

$val=str_replace("'","\"",$val);

Tanks to assman
 

RomikChef

Guest
наконец-то первый правильный ответ.
спасибо, f1
а чтобы уж и совет асмана не мог помешать, то делать
htmlspecialchars($var,ENT_QUOTES )
 

RomikChef

Guest
это чтобы ты не занимался глупостями, и не портил данные, которые поступают в скрипт, превращая
Д'Артаньян в Д\\"артаньян
 

vladax

Новичок
2 RomikChef
Помнится был у тя тред по поводу обработки формы на примере гостевой книги... всё понял кроме этой строки
htmlspecialchars($var,ENT_QUOTES )
лень было читать тогда. Вот и теперь и напоролси

:)
 

vladax

Новичок
Кстати, тут в голову пришло внезапно, а как не испортить данные, если разрешить использование хтмл-тегов (например, для админа)?

Чтоб я
не занимался глупостями, и не портил данные, которые поступают в скрипт, превращая
Д'Артаньян в Д\\"артаньян
 

vladax

Новичок
При том, что если наколбасить текст с использованием тегов и обработать его htmlspecialchars($var,ENT_QUOTES)
получиться полная чушь, так как '<' (less than) становится '&lt;', а '>' (greater than) становится '&gt;'

htmlentities использовать ИМХО полный бред все символы мнемониками представлять
 

Demiurg

Guest
так htmlspecialchars нужен только для вставки в форму, а при выврде он не нужен.
 

vladax

Новичок
Деми, блин... что ж я, думаешь, при выводе пытаюсь htmlspecialchars использовать?! Я про Фому, не про Ерёму :)
 

Demiurg

Guest
так в чем дело тогда ?
если ты сам теги не обрезаешь, они сохраняются.
 

vladax

Новичок
Ё-лы-па-лы!!! Мы, похоже, не понимаем друг друга...

Попробуй заполни форму с использованием тегов и обработай ПРИ ВВОДЕ htmlspecialchars($var,ENT_QUOTES)

Понимаешь к чему я?
 

Demiurg

Guest
>Понимаешь к чему я?
нет не понимаю. зачем при выводе её обрабатывать htmlspecialchars($var,ENT_QUOTES) ?
 
Сверху