如果注册成功,我正尝试将用户重定向到“成功”页面。但是,到目前为止,标题已经发送,因此我无法直接调用header()
。
我所做的是将一个包含文件(称为redirect.php)放在页面上的Doctype上方:
// handle requested redirects
if (isset($_POST['redirect_to']))
{
$new_page = $_POST['redirect_to'];
header("Location: http://localhost/$new_page");
}
因此,如果设置了$_POST['redirect_to']
,则header()可以重定向到该页面。现在这个方法的问题是这个$_POST['']
变量在一个负责处理用户注册的函数内部,所以当然,在设置post变量之前已经提交了表单,因此,{{1}永远不会看到帖子变量。
有没有一个简单的方法可以解决这个问题,还是我更难以实现这个目标呢?
答案 0 :(得分:1)
由于你没有提到AJAX,我的猜测是你只是有一个错误的注册过程概念。
常见注册流程和结构:
<?php
if( !empty($_POST['registerme']) ){
// do the registration process and possible errors STORE IN THE VARIABLE
// lets say $errors, it could be an array of strings or anything you want
// if registration process was succesfull,
// set $reg_suc to true otherwise to false
if( $reg_suc ){
header('Location: success.php');
exit();
}
}
?>
<?php
if( !empty($errors) ){
//there were some errors
foreach( $errors as $error ) echo $error."<br>\n";
}
?>
<form action="#" method="POST">
<input type="hidden" name="registerme" value="registerme">
<input type="text" name="validateName" placeholder="name">
<?php if( !empty($errors['validateName']) ) echo "Please correct this value"; ?>
<!--
//some more input fields
-->
<input type="submit" value="Register">
</form>
编辑:这当然只适用于具有注册/登录功能的非常简单的应用程序,在MVC(P)架构和类似的架构中,这通常由使用提供HTML模板的模板文件的视图创建以及处理注册/登录过程和可能的错误日志的模型/控制器或模型/演示者(例如PHP),并通过视图将结果,错误和其他数据输出回用户......