1

我在网页上有一个登录表单,我希望用户能够登录或注册。在页面顶部,我有 PHP 脚本,其中包含按下提交按钮的条件测试。登录部分工作正常。“注册”部分有效(意思是,它进入 if 语句),但它不会重定向到我的 register.php 站点。有什么想法吗?

我尝试更改 if/elseif 语句的顺序,但无济于事。我没有从这个脚本中得到任何警告,但它只是重新加载页面而不是重定向到 register.php。

要查看实际网页,请转到此处

<?php
$error = ''; 
session_start();
ob_start();
if (isset($_POST['register'])) {
    header("http://www.mynextbit.com/authenticate/register.php");
}
elseif (isset($_POST['login'])) { 
    session_start(); 
    $username = trim($_POST['username']);
    $_SESSION['user'] = $username;
    $password = trim($_POST['pwd']); 
    // location to redirect on success 
    $redirect = 'http://www.mynextbit.com/Pages/newtemplateTEST.php'; 
    require_once('../includes/authenticate_mysqli.inc.php'); 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...

而且,HTML 表单...

<?php
if ($error) {
  echo "<p>$error</p>";
}
if (!$_SESSION['user']) { ?>
    <font color="red"><i><userlogin>Please Log In</userlogin></i></font><br />
    <form id="form1" method="post" action="" style="margin-left: 15px">
    <label for="username" ><font size="-1">Username:</font></label>
    <input type="text" name="username" id="username">
    <br />
    <label for="pwd"><font size="-1">Password:</font></label>
    <input type="password" name="pwd" id="pwd">
    <br />
    <input name="login" type="submit" id="login" value="Log in" style="display:inline"> or
    <input name="register" type="submit" id="register" value="Register" style="display:inline">
    </form>

<?php } ?>
4

3 回答 3

3

看看这里。http://php.net/manual/en/function.header.php 使用带有位置的标题,如下所示header('Location: http://www.example.com/');

header('Location:http://www.mynextbit.com/authenticate/register.php');

它应该工作。

谢谢

于 2013-09-02T06:40:09.043 回答
0

尝试这个:

if (isset($_POST['register'])) {
    header("Location:http://www.mynextbit.com/authenticate/register.php");
}

参考

于 2013-09-02T06:40:44.267 回答
0

也许,从我从PHP 文档中看到的,函数 HEADER 必须有这样的“位置”?

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

那应该可以解决您的问题,我试过了,它实际上重定向了:P

另外(不是真的需要,但有时推荐),如果你不想有太多的 php 标签开启器和关闭器,你可以使用 HEREDOCS。

您的代码示例:

<?php
if ($error) {
  echo "<p>$error</p>";
}
if (!$_SESSION['user']) { 
    echo <<<FORM
    <font color="red"><i><userlogin>Please Log In</userlogin></i></font><br />
    <form id="form1" method="post" action="" style="margin-left: 15px">
    <label for="username" ><font size="-1">Username:</font></label>
    <input type="text" name="username" id="username">
    <br />
    <label for="pwd"><font size="-1">Password:</font></label>
    <input type="password" name="pwd" id="pwd">
    <br />
    <input name="login" type="submit" id="login" value="Log in" style="display:inline"> or
    <input name="register" type="submit" id="register" value="Register" style="display:inline">
    </form>
FORM;
}
?>
于 2013-09-02T06:44:57.327 回答