所以几天前我在创建登录时遇到了麻烦,该线程中的一个人建议我使用预备语句。
所以我开始使用PDO查找准备好的语句,并且我已经设法用它创建了寄存器脚本。但是,我的登录每次都会将我重定向回index.php。
file1.php:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$db = new PDO('mysql:host=localhost;dbname=ismsite', 'db_username', 'db_password'); //this works
$result = $db->prepare("SELECT * FROM users WHERE username=:username AND password=:password");
$result->bindParam(':username', $username);
$result->bindParam(':password', $password);
$result->execute();
$row = $result->fetch(PDO::FETCH_NUM);
if($row > 0) {
session_start();
$_SESSION['userid'] = $row['user_id']; // Initializing Session
$_SESSION['voornaam'] = $row['Voornaam']; // Initializing Session
$_SESSION['achternaam'] = $row['Achternaam'];
$_SESSION['adres'] = $row['adres'];
$_SESSION['email'] = $row['email'];
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
}
header("location: profile.php");
exit();
?>
在profile.php上,我有一小段代码检查是否存在与user_id的会话。如果它没有被恢复为index.php。这表示我的用户ID会话没有设置,而我正在那里设置它。选择不会像插入一样工作,或者我有一个愚蠢的错误。
有人可以帮忙吗?
答案 0 :(得分:0)
看起来我犯了使用FETCH_NUM而不是使用FETCH_ASSOC的错误:
$row = $result->fetch(PDO::FETCH_ASSOC);
过去是
$row = $result->fetch(PDO::FETCH_NUM);