2014-02-06 32 views
0

我有一個Customer Details PHP頁面。要到達此頁面,用戶要麼註冊signup.php的新細節,要麼登錄login.php兩個PHP頁面將表單數據傳遞給相同的目標文件

我一直告訴提交數據的最佳方式被重定向到正確的頁面形式使用action="details.php",然後在details.php文件開始使用的值從$_POST數組來填充我的SQL數據庫。

不過,我需要做同樣的事情與的login.php代碼,所以在頂部details.php會有從signup.php輸入表單數據的代碼驗證碼爲login.php

當然還有直接從signup.php所以在details.php文件心不是兩套PHP的做數據提交的方式嗎?如果不是我如何區分,以便登錄只使用登錄代碼和註冊使用提交代碼?

+1

你可以調用的每個頁面上設置一個隱藏字段:姓名=「referrerpage」與任一值=「註冊」並做:if($ _POST ['referrerpage'] =='註冊'){做這個} else {做這個} – Grant

+0

不應該註冊頁面的動作是signup.php和登錄頁面的動作是login.php,然後兩個在帖子後重定向到details.php? –

+0

我同意@Grant發送每個頁面的變量以及表單,然後使用if語句 – VIDesignz

回答

1

通常的做法是對的形式PHP檢查數據+可能的重定向和之後的表格打印

例子:(我常見的用法)(我合併登錄&註冊成一個文件)

<?php 
    $error = ""; 
    if(!empty($_POST['signup'])){ 
    //do signup 
    //$signup = assign true/false whether sign up was successfull or not 
    if(!$signup){ //if signup wasnt successfull generate error 
     $error = "Sign up error.";  
    }  
    } 
    if(!empty($_POST['login'])){ 
    //do login 
    //$login = assign true/false whether login was successfull or not 
    if(!$login){ //if login wasnt successfull generate error 
     $error = "Log in error.";  
    }  
    } 
    if(empty($error)){ 
    //there were no errors 
    header("Location: details.php"); //redirect to details.php 
    exit(); //send nothing else! 
    } 
?> 

<div class="error"><?php if(!empty($error)){ echo htmlspecialchars($error); /*escape*/ } ?></div> 

<form action="#" method="POST"> 
    <input type="hidden" name="signup" value="yes"> 
    <!-- ...some other input fields... --> 
    <button type="submit">Sign Up</button> 
</form> 

<br> 

<form action="#" method="POST"> 
    <input type="hidden" name="login" value="yes"> 
    <!-- ...some other input fields... --> 
    <button type="submit">Log In</button> 
</form> 
+0

我接受了這個答案,因爲我希望代碼在表單的同一頁上提交。 @Grants回答下面的工作也是如此,因此,upvote。謝謝大家! – Giovanni

1

您可以設置每個頁面下方的隱藏字段:

<input type=hidden name='referrerpage' value='signup'> 

<input type=hidden name='referrerpage' value='login'> 

做:

if ($_POST['referrerpage']=='signup'){ 
    //do this 
} else{ 
    //do this 
} 
+0

好的,這聽起來完全合乎邏輯!那麼通常的做法是在頁面提交後(即在頁面開始處重定向到)之後,在頁面上提交/驗證/等? – Giovanni

+0

我不明白爲什麼不。 – Grant

+0

在我看來,如果表單提交代碼與表單提交代碼與表單提交代碼在同一頁面上,那將會更加整潔...... – Giovanni

相關問題