Снова здорово метод POST

Morz

Guest
Снова здорово метод POST

Я понимаю, что подобных вопросов было очень много, и возможно у меня тоже элементарное решение, которое я в силу своего ламерства не могу увидеть. Форум был прочесан, попытки сделаны, но решения как-то нету.

FAQ был изучен, register_globals= off, обращаюсь к переменной таким образом как и порекомендовано в FAQ echo $_POST['names'];
Метод GET, как и следовало ожидать, работает, но метод POST не работает. Бьюсь уже 4 дня. :-(

А теперь сама проблема.
У меня есть форма, данные из которой я методом POST передаю в другой файл. Там они не появляются.

Я проверяю их так: echo $_POST['names']; мне в ответ выдается сообщение об ошибке:
Warning: Undefined index: names

Основной код моей формы:
Код:
<form method=POST action="email.php" enctype="text/plain">
.................
    </tr>
    <tr>
        <td align="center"><font size="-1">Имя: </font><font color="#ff0000">*</font>
        <input name="names" type="Text" maxlength=35 size=25></td>
    </tr>
..............
<input type="submit" value="Отправить">
Основной код email.php
(вообще-то там проверка идет и вся прочая фигня, но это неважно, мне главное вообще получить данные)

PHP:
.........
if ($_SERVER['REQUEST_METHOD']=='POST'){
echo phpinfo(32); // это я из FAQ :-)
echo $_POST['names'];
...........
В чем моя проблема? Извините уж... :rolleyes: :(
 

DiMA

php.spb.ru
Команда форума
убери хрень enctype="text/plain"

в проге сделай:
echo "<xmp>";
print_r($_REQUEST);
 

Morz

Guest
DiMA
Спасибо за ответ, но все равно не работает :-(
 

DiMA

php.spb.ru
Команда форума
1. закрой </form>
2. email.php очисти и запиши:
<?
echo '<pre>'.htmlspecialchars(print_r($_GLOBALS,1));
?>
 

Morz

Guest
tashkentchi
У меня так и написано было, все равно смотрю в монитор и вижу фигу


DiMA
1.Тэг Form у мя закрыт.
2. на это выдает такие ошибки:
Warning: Undefined variable: _GLOBALS
Warning: Wrong parameter count for print_r()

Я начинаю подозревать, что у меня что-то не то с настройками Apache или PHP
 

tashkentchi

Новичок
Напечатай все, что тебе POST-ом передается. Тогда виднее будет:
PHP:
foreach ($_POST as $key => $val) {
   print $key.' => '.$val.'<br>';
}
 

Morz

Guest
svetasmirnova
Аналогично не работает

-~{}~ 20.05.05 15:50:

tashkentchi
Этот метод сработал, попробую от него оттолкнуться.
 

Фанат

oncle terrible
Команда форума
это локально или в сети? ссылку можешь дать?
if ($_SERVER['REQUEST_METHOD']=='POST') - это работает?
GET-ом работает?
пример тестовый можешь сделать? безо всяки теде тере табле и прочей путоты? чтобы тег форм тег тект тег сабмит тег форм?
 

Morz

Guest
Отвечаю всем :)

Фанат
Это локально пока, позже, когда сделаю выложу в инет.
GET-ом работает
if ($_SERVER['REQUEST_METHOD']=='POST'), это как раз пока не работает.

tashkentchi
Версия у мя PHP Version 4.1.1
foreach как раз и вывел мой массив POST. Вроде бы все правильно.
После этого как раз и заработали функции типа
echo $_POST['names'];

Markus
И это тоже работает, как и foreach, только подробней :)
 

tashkentchi

Новичок
Morz
Странно это все. Разве только в 'names' кирилические буквы затесались.
 

Morz

Guest
В общем так. Во первых, спасибо всем!

Да, действительно полуилась странная фигня, до сих пор не понимаю, как она у меня вышла. Ну ладно.

Во вторых, данные я то получаю, благодаря способам подсказанными tashkentchi и Markus. За что им спасибо большое. Но, теперь мне нужно полученные данные проверить, а как раз это они делаться не желают...
Может быть что-то подскажете?
Вся суть в том, что у меня почтовая форма, и проверяются поля в ней, как-то на правильность введенного мыла и прочее, если не правильно, то должно выдаваться соответствующее сообщение.
Посмотрите код одной такой проверки... (остальное по аналогии). Я думаю, что проблема в том, что я как-то не правильно передаю данные для проверки..

PHP:
//Блок проверки имени 
if (empty($_POST['names'])) 
	{ print "<script language=JavaScript>window.alert('Не введено имя!');</script>"; exit;
	}
	// Если длина имени больше 25 символов, то уменьшаем его длину
	$names=substr($_POST['names'],0,25); 
	// Запрет в имени любых символов, кроме букв русского и латинского алфавита, знака "_" (подчерк), пробела и цифр  
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$_POST['names'])) { 
echo ('Ошибка при вводе имени.'); exit;
		}
 

Фанат

oncle terrible
Команда форума
Да, действительно полуилась странная фигня, до сих пор не понимаю, как она у меня вышла.
я тебе объясню.
Постарайся больше с ОПЕЧАТКАМИ в своих скриптах форум не беспокоить.
а как раз это они делаться не желают...
вопрос где?
проверок три - какая не работает?
читай PHP FAQ: Ничего не работает! Что делать??? и учись искать ошибки самостоятельно.
 

Morz

Guest
Фанат
Все не работают. Ничего не выводится. Опечаток у меня не было абсолютно. Данные методом POST мне удалось получить только с использованием foreach
 
Сверху