PHP表单检查是否已按下提交

时间:2011-08-01 23:30:22

标签: php forms submit form-submit isset

过去3个小时我一直在疯狂这个问题。我有这个完全工作.....它实际上仍然是,但在另一页。唯一的问题是在不同的页面上它停止工作。这是基本的运行:

  1. 用户访问页面,点击按钮,JavaScript ModalBox打开。
  2. 在模式框中是一个表单,用户填写并点击发送。
  3. 表单操作本身就是这样,它返回并检查提交按钮上的isset()是否为真。
  4. 这似乎是个问题。我得到了另一个脚本的工作,但它超过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 个答案:

答案 0 :(得分:1)

表单通常通过POST提交,但您正在检查$ _GET。你在做AJAX请求并通过GET发送数据吗?如果没有,你应该检查:

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

答案 1 :(得分:0)

我愿意:

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

另外,我也可能会在表单元素中指定method并使用POST而不是GET,因为它不妥协。

另外,为什么要在echo 'Complete';块中输出head?这个不对。它应该在body元素中(也可能是问题的一部分)。