会话未与用户名PHP关联
我不明白为什么我不能将登录的用户名与会话相关联。 如果你们能帮我,我会非常感激的 下面是示例代码:会话未与用户名PHP关联,php,mysql,Php,Mysql,我不明白为什么我不能将登录的用户名与会话相关联。 如果你们能帮我,我会非常感激的 下面是示例代码: session_start(); include 'includes/connect.php'; if (isset($_POST['user'], $_POST['pass'])) { //assigning parameters to variables. $user = $_POST['user']; $pass = $_POST['pass']; $s
session_start();
include 'includes/connect.php';
if (isset($_POST['user'], $_POST['pass'])) {
//assigning parameters to variables.
$user = $_POST['user'];
$pass = $_POST['pass'];
$sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';
try {
$connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$values = $connect->prepare($sql);
$values->bindParam('user', $user, PDO::PARAM_STR);
$values->bindParam('pass', $pass, PDO::PARAM_STR);
$values->execute();
$row_count = $values->rowCount();
$row = $values->fetch(PDO::FETCH_ASSOC);
////////////////////////////
//user and pass section [DB]
//$usr_db = $row['username'];
//$pwd_db = $row['password'];
////////////////////////////
if ($row_count === 1) {
$_SESSION['Logged_in'] = $user;
echo 'THIS TEXT REMAINS..';
}
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
你还没有给我们提供足够的信息来帮助你,但我要做一个有根据的猜测。您希望文本“此文本保留…”始终显示。之所以不会发生这种情况,是因为除非在每个请求上都发布用户名和密码,否则执行将永远不会达到这一点,我假设不会发生这种情况。如果像这样重新组织代码,可能会得到预期的结果
session_start();
include 'includes/connect.php';
if (isset($_POST['user'], $_POST['pass'])) {
//assigning parameters to variables.
$user = $_POST['user'];
$pass = $_POST['pass'];
$sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';
try {
$connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$values = $connect->prepare($sql);
$values->bindParam('user', $user, PDO::PARAM_STR);
$values->bindParam('pass', $pass, PDO::PARAM_STR);
$values->execute();
$row_count = $values->rowCount();
$row = $values->fetch(PDO::FETCH_ASSOC);
////////////////////////////
//user and pass section [DB]
//$usr_db = $row['username'];
//$pwd_db = $row['password'];
////////////////////////////
if ($row_count === 1) {
$_SESSION['Logged_in'] = $user;
}
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
// Moved the login check down here so it's executed on every request.
if (array_key_exists('Logged_in', $_SESSION) && $_SESSION['Logged_in'] !== null) {
echo 'THIS TEXT REMAINS..';
}
你还没有给我们提供足够的信息来帮助你,但我要做一个有根据的猜测。您希望文本“此文本保留…”始终显示。之所以不会发生这种情况,是因为除非在每个请求上都发布用户名和密码,否则执行将永远不会达到这一点,我假设不会发生这种情况。如果像这样重新组织代码,可能会得到预期的结果
session_start();
include 'includes/connect.php';
if (isset($_POST['user'], $_POST['pass'])) {
//assigning parameters to variables.
$user = $_POST['user'];
$pass = $_POST['pass'];
$sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';
try {
$connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$values = $connect->prepare($sql);
$values->bindParam('user', $user, PDO::PARAM_STR);
$values->bindParam('pass', $pass, PDO::PARAM_STR);
$values->execute();
$row_count = $values->rowCount();
$row = $values->fetch(PDO::FETCH_ASSOC);
////////////////////////////
//user and pass section [DB]
//$usr_db = $row['username'];
//$pwd_db = $row['password'];
////////////////////////////
if ($row_count === 1) {
$_SESSION['Logged_in'] = $user;
}
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
// Moved the login check down here so it's executed on every request.
if (array_key_exists('Logged_in', $_SESSION) && $_SESSION['Logged_in'] !== null) {
echo 'THIS TEXT REMAINS..';
}
您不再使用会话信息,只需将会话变量“Logged_in”设置为用户名。如果您想再次获取用户名,您必须执行类似于
$user=$\u SESSION[“Logged\u in”]
的操作。我这样做是为了测试:
一旦您这样做了,这里就可以了?name=admin完成这个词!保留在页面上,直到我删除会话。“那样的话,我也想要同样的。”克劳斯格夫。我遇到的问题是,课程没有保留下来。我不知道为什么。我试过了,但文本没有留在页面上如果(isset($_SESSION[“Logged_in”]){echo“此文本保留!”}
您不再使用会话信息,只需将会话变量“Logged_in”设置为用户名。如果您想再次获取用户名,您必须执行类似于$user=$\u SESSION[“Logged\u in”]
的操作。我这样做是为了测试:
一旦您这样做了,这里就可以了?name=admin完成这个词!保留在页面上,直到我删除会话。“那样的话,我也想要同样的。”克劳斯格夫。我遇到的问题是,课程没有保留下来。我不知道为什么。我试过了,但文本没有留在页面上<代码>如果(isset($_SESSION[“Logged_in”]){echo“此文本保留!”}