我正在使用PDO连接到数据库并获得结果。我的登录系统正在运行。我收到了结果(用echo
命令检查)。我没有使用MD5()
,SHA256()
,因为我正在测试。稍后我会实施它们。问题是header()
函数发出警告,但不会重定向到主页。
我在index.php文件中调用login.php(带有html布局),login.php调用PDO的(用户)login()
函数并返回true
/ false
;如果结果为真,我将重定向到home.php
警告:
警告 :无法修改标题信息 - 已经发送的标题(输出在/home/thesho28/public_html/greetme/index.php:51开始)在/home/thesho28/public_html/greetme/includes/login.php第38行
我不明白,因为我没有在index.php上使用header()
函数,除了相同的代码正在使用wamp(localhost)
....... Login.php代码如下...........
<?php
include $_SERVER['DOCUMENT_ROOT'].'/greetme/core/database/connection.php';
if(isset($_POST['login']) && !empty($_POST['login']))
{
$cemail=$_POST['email'];
$pwd=$_POST['password'];
$email=$getFromU->checkInput($cemail);
$password=$getFromU->checkInput($pwd);
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$loginerr="Invalid Email";
}
else
{
// checked, i get back the result from session variables
if($getFromU->login($email,$password)===false)
{
$loginerr="Incorrect Email/Password";
$_SESSION['email']=$email;
}
else
{
$username=$_SESSION['username'];
$last_login=$_SESSION['last_login'];
echo $last_login; echo $username;
// getting results back, login is successful
/* $result=$getFromU->updateUserLastLogin($username,$last_login);
if($result===false)
{
echo "error";
}
else
{
$_SESSION['new_login']=date('D, d F, Y');
}
*/
header('Location:../home.php');
}
}
}
?>
<div class="d-flex flex-col" id="login-section">
<div class="card-body bg-primary">
<form method="post">
<div class="form-group">
<div class="input-group">
<i class="fa fa-envelope input-group-addon"></i><label for="email"></label>
<input type="email" name="email" class="" required placeholder="Email"
<?php
if(isset($_SESSION['email']))
{
$email=$_SESSION['email'];
echo 'value="'.$email.'"';
}
?>
>
</div>
</div>
<div class="form-group">
<div class="input-group">
<i class="fa fa-lock input-group-addon"></i><label for="password"></label>
<input type="password" name="password" class="" placeholder="Password" required>
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-outline-dark text-light" value="LOG IN" name="login">
</div>
<?php
if(isset($loginerr))
{
echo '<span class="error">'.$loginerr.'</span>';
}
?>
</form>
</div>
</div>
---------------- pdo的代码在-------------
之下<?php
class User {
protected $pdo;
public function __construct($pdo){
$this->pdo=$pdo;
}
public function checkInput($var){
$var=htmlspecialchars($var);
$var=trim($var);
$var=stripslashes($var);
return $var;
}
public function login($email, $password){
//$e=$email;
//$pwd=$password;
$stmt=$this->pdo->prepare("SELECT userid, username, display_name, last_login FROM user WHERE email=:email and password=:password");
$stmt->bindParam(':email',$email,PDO::PARAM_STR);
$stmt->bindParam(':password',$password,PDO::PARAM_STR);
$stmt->execute();
$user=$stmt->fetch(PDO::FETCH_ASSOC);
$count=$stmt->rowCount();
echo $email."<br>"; echo $password."<br>"; echo$count;
if($count > 0)
{
$_SESSION['username']=$user->username;
$lastlogin=$user->last_login;
if(strlen($lastlogin)<=0)
{
// if last_login is null then store current date and time as session
$_SESSION['last_login']=date('l, d F, Y : H:i:s');
$last_login=$_SESSION['last_login'];
}
else{ $_SESSION['last_login']=$last_login; }
$username=$_SESSION['username'];
$_SESSION['displayname']=$user->display_name;
//header('Location:home.php');
}
else
{ //echo 'error';
return false;
}
}
}
?>
任何帮助都将受到高度赞赏。起初我在网站托管上遇到了致命的错误,而在localhost上工作了。在3-4张支持票后,我自己开始工作了。我尝试了很多,但它让我感到困惑。在localhost上一切正常。请检查屏幕截图...它适用于localhost ...