【问题标题】:Error with redirecting to other URL in Php重定向到 PHP 中的其他 URL 时出错
【发布时间】:2013-09-12 14:35:59
【问题描述】:

我是一名 Java 程序员,并且是 PHP 新手。我正在尝试在 PHP 中设计一个登录表单,我正在从数据库中检查用户 ID 和密码。如果读取的数据正确,我想将用户重定向到 Welcome.php 页面。下面是我的代码:

<?php
ob_start();
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$myusername=addslashes($_POST['username']); 
$mypassword=addslashes($_POST['password']);
$sql="SELECT rid FROM register WHERE rname='$myusername' and rpass='$mypassword'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
@$active=$row['active'];
$count=mysql_num_rows($result);
if($count==1)
{
session_register("myusername");
$_SESSION['login_user']=$myusername;
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);
flush();
header('Location: http://localhost/login/welcome.php');
die('should have redirected by now');
}
else 
{
$error="Your Login Name or Password is invalid";
}
}
?>

但是在使用正确的 id 和密码提交表单后,我收到如下所示的错误:

我尝试了很多解决方案,例如删除空格,使用 ob_start() 等,但都是徒劳的。

【问题讨论】:

  • 你试过去掉错误显示吗? header('Location:...') 仅在根本没有输出时才有效(错误算作输出)
  • 最初我尝试过这种方式,但没有成功。

标签: php session redirect deprecated


【解决方案1】:

您应该使用以下方法在会话中注册变量:

$_SESSION['myusername'] = $myusername;

不要使用session_register("myusername");,因为它不再受支持

【讨论】:

  • 我的错是未编辑的错字。其他错误说标题已经发送。
  • @user2125727 出现另一个错误是因为显示了第一个错误。删除 session_register 后它将消失
【解决方案2】:

我使用简单的解决方案。

在您的情况下,您发送了一些无法修改的标头。

简单的解决方法是发送一些脚本代码;

echo "<script language=\"javascript\">
window.location.assign('http://localhost/login/welcome.php')</script>";

祝你有美好的一天。

弗朗索瓦

【讨论】:

    【解决方案3】:

    你真的需要你的 flush() 吗?也许尝试用 die by 来拥抱你的标题

    die(header('Location: ...'));
    

    【讨论】:

      【解决方案4】:

      您可能想检查 login.php 和 config.php 之间的字符集是否有任何差异。在执行包含时,我遇到过字符集差异导致奇怪输出的情况。

      【讨论】:

      • 这更像是一个评论,因为问题已经有一个可接受的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多