Маразм с обработкой формы методом POST

Vorgal

Новичок
Маразм с обработкой формы методом POST

Есть такаой простой скрипт:

PHP:
<?
if (isset($_POST['submit'])):
  .....
  ...
endif;
?>

<form method="post" name="forma" action="<? echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="text" size="40">
<input type="hidden" name="id" value="<? echo $id; ?>">
<input type="submit" name="submit" value="Сохранить!">
</form>
так вот иногда (где-то 50/50) при нажатии на кнопку Сохранить! передаётся всё кроме собственно Submit, соответственно скрипт думает, что форму обрабатывать не надо и не делает этого... С чем это может быть связано?
 

Georgy

Guest
а тебе не проще делать так?:

PHP:
<?

if (isset($submit) && $submit > 0) {
   ....
}

?>

<form method="post" name="forma" action="<? echo $_SERVER['PHP_SELF']; ?>"> 

<input type="text" name="text" size="40"> 
<input type="hidden" name="id" value="<? echo $id; ?>"> 
<input type="hidden" name="submit" value="1"> 
<input type="submit" value="Сохранить!"> 
</form>
 

Demiurg

Guest
если ты на текстовом поле нажмешь enter, то происходит отправка форму. Так что проверять $submit - не лучший вариант.
 

Alkinoy

Guest
А ты посмотри, в те моменты, когда не выполняется скрипт, какое значение имеет _SERVER['PHP_SELF']; Напиши нормальный полный путь к файлу.
 

Vorgal

Новичок
Писал полный путь - тоже самое... Причём не понятно, когда всё нормально, а когда такой глюк..
 

RomikChef

Guest
Экшен тут не при чем.
Если бы он не распознавался, то вылезала бы 404

а подобный глюк, правда, со 100% повторяемостью, недавно был на форуме описан, но никем не объяснен.
 

Crazy

Developer
Поскольку приведенный исходник работает абсолютно исправно, я делаю вывод о том, что либо опущена его принципиально важная часть (содержащая ошибку), либо дело в баге конкретного браузера.

BTW, submit не будет передаваться, если в поле ввода нажать ENTER. Вероятность, правда, не 50%, а все сто.
 

Андрей М.

Guest
ответ уже здесь прозвучал вообще-то.

берем форму:
<form method="post" action="test.php">
<input type="text" name="text" value="text">
<input type="submit" value="submit" name="submit">
</fomt>

test.php: <?php print_r($_POST)?>

1.нажимаем на самбмит //есть
2. фокус на текстовом поле и нажимаем enter//нет

Crazy, опередил:)
 

Crazy

Developer
Автор оригинала: Андрей М.
ответ уже здесь прозвучал вообще-то.
К сожалени, этот ответ противоречит сказанному автором треда: "при нажатии на кнопку Сохранить!" :)
 

Vorgal

Новичок
Нда...

А как сделать, чтобы при фокусе на текстовом поле, был нормальный сабмит?
 

Demiurg

Guest
>А как сделать, чтобы при фокусе на текстовом поле, был нормальный сабмит?
повторяю, не проверяй submit заведи скрытое поле и его проверяй.
 

alpes

Весь мир на ладони
Проверка на POST или GET в переменной REQUEST_METHOD:

if($_SERVER["REQUEST_METHOD"]=="POST") ...
 

alpes

Весь мир на ладони
2vladax, А ответь, зачем тебе прописывать в формах и потом проверять это скрытое поле, если у тебя на странице одна форма и тебе важно тока определить как произошла передача данных?
 

Yuriy_S

-=PHP-Club=-
Проверку лучше стоит делать всегда, для надежности и что бы потом не было глюков...
 

RomikChef

Guest
ага, я уже подсуетился, в своей примерной гостевой поменял :)

А всю жизнь писал иссет...
 

Alkinoy

Guest
Так ведь в форме уже есть скрытое поле. Вот его наличие и проверяй! просто
if(isset($_POST["id"])){выполняем добавление сообщения}
 
Сверху