2014-03-24 61 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 ... 
}