<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 написал(а):
Цитата |
щито это? если вы хотите обрабатывать текущим скриптом, нужно оставить пустым это значение |
Это не "щито", а так правильнее всего

Спустя 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']; ?> и уберите энктайп и все прекрасно заработает.
ну раз работает, то ок
ну раз работает, то ок

Спустя 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 не пишу. и он обрабатывает текущим