2014-03-24 56 views
0

`我制作了一个允许人们在线注册事件的表单。该表单对输入进行了一些验证,并将$ _POST值发送到插入表单,插入表单发送MYSQL数据库的数据。它工作正常。使用php更改表单动作

但我只想发送数据,如果电子邮件和确认电子邮件匹配。如果它们匹配,则表单将$ _POST数据发送到插入表单;如果它们不匹配,表单就会呈现给用户。

堆栈溢出(2012年10月27日)建议:<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值都OK 回声语句遵循的逻辑if语句 我试图到位$行动使用不同的导向,但没有奏效

我欢迎任何建议

+0

有你不想使用JavaScript的一个原因?在PHP中这样做是可能的,但比它值得的更多的努力... –

+0

你要求的是一个简单的验证过程。我自己做了,但是我总是在表单所在的同一页面上有插入过程。 – 2014-03-24 19:18:19

+0

您输入了两次相同的段落,并输入了相同的代码块两次,这让想要解决问题的人感到恐惧。 – Bangash

回答

0

更新:

基础上更新你的问题。也许你可以使用它?

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 ... 
}