Php 当我导航到其他页面时,会话未被保留/销毁
你好。所以我有一个问题,当我通过登录创建一个会话,并且一个用户经过身份验证时,一旦我离开该页面说另一个页面,我首先不知道会话是否被破坏,我要求该页面保存会话,以便我能够从中查询用户的电子邮件,并使用它查询数据库以确定用户名 这是my submit.php,在用户单击页面上的登录时调用Php 当我导航到其他页面时,会话未被保留/销毁,php,Php,你好。所以我有一个问题,当我通过登录创建一个会话,并且一个用户经过身份验证时,一旦我离开该页面说另一个页面,我首先不知道会话是否被破坏,我要求该页面保存会话,以便我能够从中查询用户的电子邮件,并使用它查询数据库以确定用户名 这是my submit.php,在用户单击页面上的登录时调用 <?php session_start(); require_once('connect.php'); if(isset($_POST) & !empty($_POST)){ $emai
<?php
session_start();
require_once('connect.php');
if(isset($_POST) & !empty($_POST)){
$email = mysqli_real_escape_string($connection, $_POST['email']);
$password =$_POST['password'];
$sql = "SELECT * FROM `USERS` WHERE EMAIL='$email' AND ENCRYPTEDPWD='$password'";
$result = mysqli_query($connection, $sql);
$count = mysqli_num_rows($result);
if($count == 1){
$_SESSION['email'] = $email;
header("Location: Landing page.php");
exit();
}
else{
header("Location: customerportal.php?login=invalid");
exit();
}
}
?>
它会重定向到下一页,即登录页。
此页面应检查会话中的电子邮件,然后显示用户名
<?php
session_start();
$_SESSION['email'] = $email;
$sql = "SELECT * FROM users WHERE EMAIL='$email';";
$result = mysqli_query($connection,$sql);
$resultCheck = mysqli_num_rows($result);
if($resultCheck > 0){
while($row = mysqli_fetch_assoc($result)){
echo $row['username'];
}
}
else{
echo "No User.";
}
?>
请提供帮助。您对以下行中的登录页有问题:-
$_SESSION['email'] = $email;// here you are assigning to SESSION
它需要:-
$email = $_SESSION['email'];//assign value from SESSION to variable
所以代码需要如下:-
注意:-您的代码对于SQL注入是完全开放的。尝试使用准备好的语句来防止它
在登录页中,在会话\u start()之后反转该行:您正在分配一个空变量以覆盖已保存的会话变量
$email = $_SESSION['email'];
如果您的查询在此之后给您带来问题,请尝试连接$email
$sql = "SELECT * FROM users WHERE EMAIL='".$email."';";
登录页.php
?为什么有空间?在登录页中,您需要将值从$\u会话['email']
分配到$email
,而不是$\u会话['email']=$email
OP的查询是正确的,仅当您使用'
quotes和“
不是强制性的。谢谢您提供的信息!我建议使用它是因为它有时会给我带来问题,特别是当邮件验证不是在字符级别操作时。这使得它很容易在电子邮件中使用引号字符,从而破坏查询。由于现在的值是$email.
(注意
),而不是$email
。是的,我的错。修复了“$email”中的“”和“”中的“”一起引用的问题。
实际上不是必需的。OP所说的是正确的。外部的双引号将完美地解析变量。也代码>也是不必要的。(不会产生问题,但不必要)非常感谢!!!!它起作用了,反转了登录页会话set@AshleyNesh很高兴帮助你:):)
$sql = "SELECT * FROM users WHERE EMAIL='".$email."';";