LINUX.ORG.RU

обработка perl'ом post запроса из формы


1

1

Добрый день. столкнулся с такой проблемой. отправляю пост запросом данные из формы скрипту. форма следующая:

<form name=proba action=script.pl metod=post>
<input type=text name='nick' value=$nick readonly>
<input type=text name='name' value=$name readonly>
<input type=checkbox name=avto value=avto> если у вас личный а/м?
<input type=checkbox name=comp value=comp> если у вас дома компьютер?
в данную форму переменные подставляются из предыдущего скрипта. но возникла проблема. если в переменной содержатся два слова, то в форме отображается только первое слово. ну допустим ник состоит из двух слов. то в форме будет отображаться только первое. вообщем-то вопрос. как решить эту проблему или может можно как то по другому сделать этот post запрос.

<input type=text name='nick' value=$nick readonly>
<input type=text name='name' value=$name readonly>

Полагаю, что нужно здесь переменные закавычить и кавычки в них экранировать.

Hater ★★
()
Ответ на: комментарий от Hater

на самом деле это у меня всё лежит в сприпте и выглядит так

push (@text,"<input type='text' name='nick' value=".$nick." readonly>");
push (@text,"<input type='text' name='name' value=".$name." readonly>");
когда отдельно переменную вывожу то вывод правильный:
push (@text, $name);
push (@text, $nick);
выводится имя и ник правильно, а когда в форме выводится то получается вот такая ерунда.

Evgen25
() автор топика
Ответ на: комментарий от Evgen25

на самом деле это у меня всё лежит в сприпте и выглядит так

Я догадался и даже выше написал как это дело исправить :) Обрати внимание:

push (@text,«<input type='text' name='nick' value=».$nick." readonly>");

Здесь строка формируется так, что значение атрибута value не берётся в кавычки. Можно исправить например так:

push (@text,«<input type='text' name='nick' value='».$nick.«' readonly>»);

Но по хорошему ещё нужно экранировать кавычки в самой переменной.

Hater ★★
()
Ответ на: комментарий от Hater

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

push (@text,"<input type='text' name='nick' value='".$nick."' readonly>");
push (@text,"<input type='text' name='name' value='".$name."' readonly>");
а можно по подробнее насчет экранировки кавычек?

Evgen25
() автор топика
Ответ на: комментарий от Evgen25

Если например переменная в твоём случае будет содержать одинарные кавычки, то может получиться неожиданный результат. Я даже больше скажу, с помощью этих переменных сюда можно влепить таким образом любой html и js код. Потому спец символы должны быть заменены на escape-последовательности. Думаю, в перле найдётся модуль с нужной функцией для кодирования переменных.

Hater ★★
()
Ответ на: комментарий от Hater

подсказал бы из знающих людей. как бороться с sql и XSS инъекциями. нигде толком ничего найти не могу

Evgen25
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.