Проверка формы PHP, если нажата кнопка отправки - PullRequest
1 голос
/ 02 августа 2011

Последние 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 ]

1 голос
/ 02 августа 2011

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

if (isset($_POST['initForm'])){
    ...
0 голосов
/ 02 августа 2011

Я бы сделал:

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

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

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

...