我到处寻找,但大多数解决方案已经过时或令人困惑。
用户的电子邮件和密码匹配后,他们的姓名和ID也会被保存,然后发送到他们的主页。
<?php
session_start();
$con=mysqli_connect("localhost", "root", "", "projectinnovations");
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL:" . mysqli_connect_errno();
}
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$email = mysqli_real_escape_string($con,$_POST['email']);
$password = mysqli_real_escape_string($con,$_POST['password']);
$email = stripslashes($email);
$password = stripslashes($password);
$sql="SELECT * FROM individual_users WHERE email='$email' and password='$password'";
$result=mysqli_query($con,$sql);
$count=mysqli_num_rows($result);
if ($count==1)
{
$_SESSION['email']= $email;
$_SESSION['password']= $password;
$sql1="SELECT fullname FROM individual_users WHERE email='$email' and password='$password'";
$result1=mysqli_query($con,$sql1);
$_SESSION['fullname']= mysqli_fetch($result1);
$sql2="SELECT id FROM individual_users WHERE email='$email' and password='$password'";
$result2=mysqli_query($con,$sql2);
$_SESSION['id']= mysqli_fetch($result2);
header("location:home.php");
}
else
{
header("location:login.php");
}
}
mysqli_close($con);
?>
答案 0 :(得分:0)
为了处理会话,可以将session_start();
添加到脚本的顶部。
答案 1 :(得分:0)
简单的答案是,您需要将session_start()
放在脚本的顶部(以及使用会话变量的任何脚本的顶部)。
更好的答案是,你正在做的事情看起来像依赖全局变量一样危险,并且没有理由将用户电子邮件地址保留为全局变量。考虑再看一下您的应用程序架构,看看为什么您需要这样做。
最好创建一个包含所需变量的User
类,然后在需要访问用户数据时创建该类的实例。
如果您担心数据库拥塞,请查看memcached或APCu以减轻负担。
如果这是真实代码,您应该使用password_hash和password_verify来处理登录。目前,您以明文形式存储密码,任何黑客都可以免费查看。
您还应该在查询中查看binding parameters,这样可以避免在运行查询之前考虑转义值。