0

我是一名 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() 等但徒劳无功。

4

4 回答 4

3

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

$_SESSION['myusername'] = $myusername;

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

于 2013-09-12T14:39:38.417 回答
0

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

于 2013-09-12T14:49:28.563 回答
0

我使用简单的解决方案。

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

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

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

祝你今天过得愉快。

弗朗索瓦

于 2013-09-12T14:47:57.167 回答
0

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

die(header('Location: ...'));
于 2013-09-12T14:40:46.970 回答