[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не заполняется $_POST
Commander Keen
Здравствуйте. Собственно проблема, есть код:


<form action="<?=$_SERVER['PHP_SELF'] ?>" method="POST" enctype="text/plain">
<
input type="text" align="CENTER" maxlength="25" name="username">
<
input type="submit">
</
form>

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['username']))
$name = trim(strip_tags($_POST["username"]));
}
?>


Соответственно, в $name ничего нету. Массив получается пустой. print_r тоже говорит, что там мышь повесилась. Смотрю через сниффер LiveHTTPHeaders (плаг для Firefox) - всё есть, всё передаётся нормально. POST - уходит, 200 ОК - прилетает.

Не могу вот понять, почему в $_POST не залетает значение из формы?! Подскажите пожалуйста. Спасибо.



Спустя 15 минут, 6 секунд (11.04.2011 - 02:33) Raito-kun написал(а):
action="<?=$_SERVER['PHP_SELF'] ?>"

щито это? если вы хотите обрабатывать текущим скриптом, нужно оставить пустым это значение
action=""
но еще лучше например так
action="#"

Спустя 5 минут, 41 секунда (11.04.2011 - 02:38) Commander Keen написал(а):
Цитата
щито это? если вы хотите обрабатывать текущим скриптом, нужно оставить пустым это значение


Это не "щито", а так правильнее всего wink.gif А если у нас например этот скрипт - часть другого скрипта, который часть другого скрипта. Ну короче не суть. Суть в том, что скрипт не арбайтен.

Спустя 12 секунд (11.04.2011 - 02:38) Raito-kun написал(а):
и тут некорректно юзать text/plain, поэтому ничего и не приходит. если уж так хочется использовать энктайп, то тут уместен application/x-www-form-urlencoded

Спустя 2 минуты, 10 секунд (11.04.2011 - 02:41) Raito-kun написал(а):
Цитата
Это не "щито", а так правильнее всего  А если у нас например этот скрипт - часть другого скрипта, который часть другого скрипта. Ну короче не суть. Суть в том, что скрипт не арбайтен.

незнаю что у вас подразумевается под правильностью, но не это точно. там должно быть как минимум <?php echo $value ?>, а не просто <?php $value ?>

trim(strip_tags($_POST["username"]));
вот это вы наверное тоже скажете, что правильнее всего, не хочу спорить, но это тоже г.код

Спустя 25 минут, 14 секунд (11.04.2011 - 03:06) Commander Keen написал(а):
Цитата
незнаю что у вас подразумевается под правильностью, но не это точно. там должно быть как минимум <?php echo $value ?>, а не просто <?php $value ?>


Это про какую строку?

Цитата
trim(strip_tags($_POST["username"]));
вот это вы наверное тоже скажете, что правильнее всего, не хочу спорить, но это тоже г.код


Тут я ничего не говорю. Тестовый пример. Смысл вопроса был совсем не в том. А про г.код - негоже так уж пиариться за счёт новичка в PHP. Покажите не г.код. Я сказал, что так правильнее всего, потому, что так советует хороший разработчик с большим опытом работы. Читает в МГТУ Баумана, так что, думаю никаких причин ему не верить думаю нет. Кстати по его курсу и начал обучение.

В любом случае, спасибо за ответы.

Цитата
и тут некорректно юзать text/plain

а почему так?

По теме:
Получается интересно, с enctype="application/x-www-form-urlencoded" работает, НО только если в action формы будет или # или пустая строка. Если енктайп убрать совсем, то ничего не работает не зависимо от action. А у него кстати (у препода этого) всё нормально работает без енктайпа и с $_SERVER['PHP_SELF'] всё прекрасно работает.

Спустя 7 минут, 52 секунды (11.04.2011 - 03:14) Raito-kun написал(а):
Цитата
Это про какую строку?

про это action="<?=$_SERVER['PHP_SELF'] ?>".
Цитата
советует хороший разработчик с большим опытом работы

вот лучше бы его советы работали
Цитата
а почему так?

энктайп определяет как форматируются данные перед отправкой, два корректных формата: application/x-www-form-urlencoded, multipart/form-data. text/plain неправильно обрабатывает данные, вернее он их вообще не обрабатывает. и вы вместо arg1=val+1&arg2=val+2 к примеру получаете
arg1 = val 1
arg2 = val 2. естественно в php не можете получить это через пост.
Цитата
Получается интересно, с enctype="application/x-www-form-urlencoded" работает, НО только если в action формы будет или # или пустая строка. Если енктайп убрать совсем, то ничего не работает не зависимо от action.

потому что еще раз говорю в action у вас ошибка. у вас стоит вместо
echo $_SERVER['PHP_SELF']
просто анэкспектед переменная
$_SERVER['PHP_SELF']

если энктайп убрать совсем, и поставить правильный экшн: для текущего скрипта пустоту или решетку-все отлично будет работать. к слову application/x-www-form-urlencoded это дефолтный параметр, поэтому писать его не обязательно вовсе.

Спустя 5 минут, 21 секунда (11.04.2011 - 03:19) Commander Keen написал(а):
Цитата
потому что еще раз говорю в action у вас ошибка. у вас стоит вместо

echo $_SERVER['PHP_SELF']

просто анэкспектед переменная

$_SERVER['PHP_SELF']


Странно, я думал, что конструкция <?= ?> - это и есть сокращение echo.

Остановился на этом варианте:
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">


Всё вроде нормально теперь. Спасибо.

Спустя 6 минут, 13 секунд (11.04.2011 - 03:25) Raito-kun написал(а):
по этому поводу я не в курсе, мой php вообще такое не переваривает, безопаснее все-таки использовать <?php ?> я думаю. попробуйте в экшн засунуть <?php echo $_SERVER['PHP_SELF']; ?> и уберите энктайп и все прекрасно заработает.

ну раз работает, то ок wink.gif

Спустя 10 минут, 40 секунд (11.04.2011 - 03:36) Commander Keen написал(а):
<?= ?> - это как я понял есть short tag, как и "<? ?>" вместо "<?php ?>", которые хотят убрать в php6 вроде как. А если хотят, то уберут, так что лучше буду юзать полные, как вы и написали... это так.. рассуждения влусх.

Спустя 3 часа, 19 минут, 28 секунд (11.04.2011 - 06:55) alex12060 написал(а):
Да, <?= ?> Это сокращенная запись, но хостеры многие вырубают эту возможность в ини файлах, поэтому, использовать лучше <?php echo 'test'; ?>

Спустя 6 часов, 53 минуты, 18 секунд (11.04.2011 - 13:49) Krevedko написал(а):
Цитата (Raito-kun @ 10.04.2011 - 23:33)
action="<?=$_SERVER['PHP_SELF'] ?>"

щито это? если вы хотите обрабатывать текущим скриптом, нужно оставить пустым это значение
action=""
но еще лучше например так
action="#"

я вообще тогда action не пишу. и он обрабатывает текущим
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.