使用php改变表单动作


Changing form action using php

'我已经把一个表单放在一起,允许人们在线注册一个事件。表单对输入进行了一些验证,并将$_POST值发送给插入表单,插入表单发送MYSQL数据库的数据。

但是我只想发送数据,如果电子邮件和确认电子邮件匹配。如果匹配,则将$_POST数据发送给insert表单;如果它们不匹配,则表示给用户。

Stack overflow (Oct 27 2012)建议:<form action =<?php echo $action; ?> ".

我无法让以下代码影响表单动作:

<?php  
print_r($_POST);        
if($_POST['email'] !== $_POST['emailconf'])                 
{                   
    //echo "They are not equal"; 
    $action = "serraInsertForm.php";                
} 
else                
{   //echo "They are equal"; 
    $action = "serraRegFormComplete.php";           
}
 ?>

指出:我想用php来做这个。以前没有使用过javascript。print_r显示$_POST值是否正确echo语句遵循if语句的逻辑我尝试使用不同的重定向来代替$action,但那不起作用

我将感谢任何建议

更新:

基于你问题的更新。也许你可以用这个?

if ($_POST['email'] !== $_POST['emailconf'])                 
{                   
    //echo "They are not equal"; 
    include("serraInsertForm.php");
} 
else                
{
    //echo "They are equal"; 
    include("serraRegFormComplete.php");
}

这将允许您将表单保存在"InsertForm"文件中,并将完成代码保存在"FormComplete"文件中。

原始:

PHP在服务器端处理。因此,用户输入不能在客户端更改表单设置(如果没有Javascript之类的东西)。也就是说,由于Javascript可以被禁用(或在控制台中修改),所以我几乎总是为服务器编写某种PHP检查以进行验证。

这个表单的基本代码是这样的:
$bShowForm = true;
if (isset($_POST['email']))
{
    if ($_POST['email'] == $_POST['emailconf'])
    {
        $bShowForm = false;
        ... process form ...
        ... on process error, set error message and set bShowForm to true ...
        ... show thank you message ...
    }
    else
    {
        ... set error message ...
    }
}
if ($bShowForm)
{
    ... if error message, display ...
    ... form html ...
}