我最近在编写登录脚本时遇到了问题。看看我的代码:
<?php
if(isset($submit)){
require 'db/connect.php';
$sql = "SELECT id from users WHERE password='$password' AND email='$email'";
$entered_user = mysql_query($sql);
$num_rows = mysql_num_rows($entered_user);
$errors = array();
if( $num_rows != 1 )
{
$errors[] = '-Account does not exist ';
}
elseif( $num_rows == 1 )
{
session_start();
while($row = mysql_fetch_array($entered_user)){
$_SESSION['id'] = $row['id'];
$_SESSION['email'] = $email;
$_SESSION['user'] = $row['username'];
$_SESSION['pass'] = $password;
header('Location: profile.php');
exit();
}
}
}
?>
用户提交密码和电子邮件后,我尝试将以下内容存储在会话变量中:id,username,password和email。 但是由于某种原因,用户名不会在profile.php上存储和输出,在那里它们被重定向。这是我的profile.php代码:
<?php
session_start();
?>
<html>
<head>
<title>Profile</title>
<link href='css/main.css' rel='stylesheet' />
</head>
<body>
<div id='container'>
<?php require 'include/header.php'; ?>
<?= 'NJM ID # ==>'.$_SESSION['id'].'<br />'.'Username ==>'.$_SESSION['user'].'<br/>'.'Password ==>'.$_SESSION['pass'] ?>
<?php require 'include/footer.php'; ?>
</div>
</div>
</body>
</html>
如果有人知道如何解决此问题,请提供帮助。我大约2个月前学过HTML,CSS,JS和PHP所以我是初学者:)
答案 0 :(得分:1)
我对你的代码有一些评论,可能会解决你所有的问题。
应在执行任何其他代码之前启动会话。这样可以防止出现奇怪的问题。
检查会话是否尚未设置。
推荐的PHP版本&gt; = 5.4.0
if ( session_status() == PHP_SESSION_NONE ) {
session_start();
}
对于PHP的版本&lt; 5.4.0
if (session_id() == '') {
session_start();
}
使用mysqli_*
或PDO
进行查询。 mysql_*
已被弃用且相当不安全。
您的查询未获取用户名
变化:
$sql = "SELECT id
from users
WHERE password='$password'
AND email='$email'";
为:
$sql = "SELECT
id AS id,
username AS username
FROM users
WHERE password='".$password."'
AND email='".$email."'";
答案 1 :(得分:0)
更改此行
$sql = "SELECT id from users WHERE password='$password' AND email='$email'";
到这个
$sql = "SELECT id, username from users WHERE password='$password' AND email='$email'";
或者
$sql = "SELECT * from users WHERE password='$password' AND email='$email'";