两个PHP页面将表单数据传递到同一目标文件

时间:2014-02-06 22:27:38

标签: php mysql forms

我有一个客户详细信息PHP页面。要访问此页面,用户要么在 signup.php 上注册新的详细信息,要么登录 login.php

我被告知提交数据并重定向到正确页面的最佳方法是在表单中使用action="details.php",然后在 details.php 文件的开头使用来自$_POST数组的值来填充我的SQL数据库。

但是,我需要使用 login.php 代码执行相同的操作,因此在 details.php 的顶部会有要输入的代码来自 signup.php 的表单数据和来自 login.php 的验证代码。

当然有一种直接从 signup.php 提交数据的方法,所以 details.php 文件中没有两套PHP?如果不是,我如何区分,以便登录只使用登录代码,注册使用提交代码?

2 个答案:

答案 0 :(得分:1)

您可以在每个页面上设置隐藏字段,如下所示:

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

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

并且做:

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

答案 1 :(得分:1)

通常的做法是让PHP检查表单数据+可能的重定向,然后再检查表单print

示例:(我的常用用法)(我将登录和注册合并到一个文件中)

<?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>