我有一个客户详细信息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?如果不是,我如何区分,以便登录只使用登录代码,注册使用提交代码?
答案 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>