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

Форум PHP

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

 

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

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

тема: При обработке формы теряются кода ПС
 
 автор: Владимир55   (30.07.2007 в 15:33)   письмо автору
 
 

Суть проблемы: при работе скрипта теряются коды ПС, находящиеся в переменных, вследствие чего меняется их длина. Чтобы исследовать это явление, я сделал макет, поместив в папку с именем tmp текстовые файлы с кодами, и папку tmp1, в которую должны записываться текстовые файлы в окончательной редакции. В текстовом файле хранится такая запись:
жХИМ 2001-вЕИЛ 2002

Коды записи:
E6 D5 C8 CC 20 32 30 30 31 2D E2 C5 C8 CB 20 32 30 30 32 0D 0A

Скрипт-макет имеет такие коды:

$n_ss = file_get_contents("data/yes-ss.txt");    // Количество найденных ссылок

 for ($j = 1; $j <= $n_ss; $j++)              // Воспроизведение массива ссылок
    {
    $adr_tmp = 'tmp/' . $j . '.txt' ;        // Имя и адрес файла текста ссылки
    $ssilka[$j] = file_get_contents($adr_tmp) ;
    }

echo"<form action='?act=".$n_ss."' method='post'>";  // Вводим тексты формк
for ($j = 1; $j <= $n_ss; $j++)
    {
       echo "<input type=text size=110 name=\"peremen".$j."\" value=\""
      . htmlspecialchars($ssilka[$j])
      . "\"><br/>";
    }
echo '<input type="submit" value="Ввести" >' ;
echo "</form>";
    if ($_GET['act']==$n_ss)                         // Запоминаем результат коррекции
    {
        for ($j = 1; $j <= $n_ss; $j++)
        {
         $ssilka[$j] = $_POST["peremen$j"];
         }

        // Сохраняем с удалением забракованных ссылок
        $min = file_get_contents("data/min.txt");    // Минимальная длина ссылки

        $n_v = 0;                                    // Количество выбранных ссылок
        for ($j = 1; $j <= $n_ss; $j++)
        {
        $dlina_ss_tmp = strlen ($ssilka[$j]);
               if ($dlina_ss_tmp >= $min)
            {
            ++$n_v;
            $adr_tmp = 'tmp2/' . $n_v . '.txt' ;       // Имя и адрес файла хранения текста ссылки
            $file = fopen ($adr_tmp, "w") ;           // Создание нового файла или очистка имеющегося
            fputs ($file, $ssilka[$n_v]) ;            //  Запись ссылки
            fclose ($file) ;                          //  Закрытие файла
            }
        }

    }


После работы скрипта в текстовом файле образуется такой код:
E6 D5 C8 CC 20 32 30 30 31 2D E2 C5 C8 CB 20 32 30 30 32

Получается, что два последних знака кода, ответственные за перевод каретки и возврат строки, "откусила" форма ввода, ибо больше грешить не на что!

А если так, то что делать?
====
Как можно предположить, htmlspecialchars не вводит эти коды, поскольку их не видит. Вероятно, продублировать их - единственный выход.

   
 
 автор: Unkind   (30.07.2007 в 16:49)   письмо автору
 
   для: Владимир55   (30.07.2007 в 15:33)
 

htmlspecialchars() обрабатывает ТОЛЬКО символы '<', '>', '&' и в зависимости от режима '"' (двойная кавычка) и ''' (одинарная кавычка).

Input'ы не предназначены для ввода переводов строк. Для этого есть textarea.

[поправлено модератором]

   
Rambler's Top100
вверх

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