在php中启动重定向'mid page'?

时间:2014-02-07 14:48:26

标签: php html redirect

如果注册成功,我正尝试将用户重定向到“成功”页面。但是,到目前为止,标题已经发送,因此我无法直接调用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}永远不会看到帖子变量。

有没有一个简单的方法可以解决这个问题,还是我更难以实现这个目标呢?

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),并通过视图将结果,错误和其他数据输出回用户......