Проверка формы PHP, если кнопка отправки была нажата

Последние 3 часа я сходил с ума от этой проблемы. У меня было это полностью работает..... и это на самом деле все еще есть, но на другой странице. Единственная проблема заключается в том, что на другой странице он перестает работать. Вот основное бегство вниз:

  1. Страница посещения пользователя, нажимает на кнопку, открывается JavaScript ModalBox.
  2. В модальном поле находится форма, которую пользователь заполняет и нажимает кнопку Отправить.
  3. Действие формы само по себе, поэтому оно возвращает и проверяет, верно ли isset() для кнопки отправки.

Это проблема, кажется. Я работал над другим сценарием, но его длина превышала 5 страниц, поэтому вот небольшой сценарий, который я просто не могу на всю жизнь заставить работать:

<?php session_start(); ?>
<html>
<head>
<?php
if (isset($_GET['initForm'])){
    echo 'Complete';
}
?>
</head>

<body>
<?php
    echo '
    <div style="padding:0;margin:0;float:left;height:120px;width:100%;">
    <div align="center" width="50%" style="padding-top:2px;"><img src="images/step1.png"></div>
    <div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:4px;">Which package are you interested in?</div>
    <div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:6px;">
        <FORM action="test.php" name="initForm" id="initForm" onsubmit="return false;">
            <select name="packageName">
                <option value="Weekend">Weekend - 4 Days/3 Nights</option>
                <option value="Weekday">Weekday - 5 Days/4 Nights</option>
            </select>
</div>
<div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:6px;">
        <input Type = "Submit" name="initForm" Value ="Send" onclick="Modalbox.show(\'test.php\', {title: \'Vacation Booking\', width: 600, params:Form.serialize(\'initForm\')}); return false;">
    </FORM>
</div>
</div>';
?>
</body>
</html>

----- ИСПРАВЛЕНО ------ Решение ниже:-------

^ Тег должен быть размещен в самой внешней части HTML, и теперь я могу получить доступ ко всем элементам массива $_Get, включая кнопку отправки. Кто-нибудь может объяснить, почему это так придирчиво? Я хочу свои 3 часа назад. Ну, по крайней мере, я надеюсь, что никогда больше не ошибусь.

2 ответа

Формы обычно отправляются через POST, но вы проверяете $_GET. Вы делаете запрос AJAX и отправляете данные через GET? Если нет, вы должны проверить:

if (isset($_POST['initForm'])){
    ...

Я бы сделал:

if (isset($_GET['initForm']) && $_GET['initForm'] == 'Send'){

Кроме того, я бы также, вероятно, указать method в элементе формы и использовать POST вместо GETиз-за непримиримости.

Кроме того, почему вы выводите echo 'Complete'; в head блок? Это неправильно. Должно быть в body элемент (который также может быть частью проблемы).

Другие вопросы по тегам