Php 使用PDO登录用户/启动会话
我正在尝试使用PDO在我的网站上创建一个登录部分 到目前为止,我有以下几点 config.phpPhp 使用PDO登录用户/启动会话,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试使用PDO在我的网站上创建一个登录部分 到目前为止,我有以下几点 config.php // Connect to DB $username = 'user@site.co.uk'; $password = 'pass'; try { $conn = new PDO('mysql:host=localhost;dbname=db', $username, $password); $conn->setAttr
// Connect to DB
$username = 'user@site.co.uk';
$password = 'pass';
try {
$conn = new PDO('mysql:host=localhost;dbname=db', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
// DB Config
include '/assets/config.php';
// User Session
$login = 'liam';
$pass = 'password';
$sth = $conn->prepare("SELECT * FROM access_users WHERE login = ? AND pass = ?");
$sth->bindParam(1, $login);
$sth->bindParam(2, $pass);
$sth->execute();
if ($sth->rowCount() > 0)
{
// session stuff,
// refresh page
}
?>
header.php
// Connect to DB
$username = 'user@site.co.uk';
$password = 'pass';
try {
$conn = new PDO('mysql:host=localhost;dbname=db', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
// DB Config
include '/assets/config.php';
// User Session
$login = 'liam';
$pass = 'password';
$sth = $conn->prepare("SELECT * FROM access_users WHERE login = ? AND pass = ?");
$sth->bindParam(1, $login);
$sth->bindParam(2, $pass);
$sth->execute();
if ($sth->rowCount() > 0)
{
// session stuff,
// refresh page
}
?>
然而,我的浏览器不显示页面,当我查看我的源代码时,其中没有包含任何数据,有人能看到我哪里出错了吗 试试这个:
// User Session
$login = 'liam';
$pass = 'password';
$sth = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$sth->execute(array(":username" => $login,":password" => $pass));
if ($sth->rowCount() > 0)
{
// session stuff,
// refresh page
echo $sth->rowCount();
}
确保您在数据库中有用户名“liam”并传递“password”您已经设置了
PDO::ERRMODE\u异常。这意味着,您应该将语句包装在try/catch
块中,并测试execute()
s返回代码:
try {
$sth = $conn->prepare("SELECT * FROM access_users WHERE login = ? AND pass = ?");
$sth->bindParam(1, $login);
$sth->bindParam(2, $pass);
if (!$sth->execute()) {
$info = $sth->errorInfo();
echo 'Error: ' . $sth->errorCode() . ' (' . $info[2] . ")\n";
} elseif ($sth->rowCount() > 0)
{
// session stuff,
// refresh page
}
} catch (PDOException $e) {
echo 'Exception: ' . $e->getMessage() . "\n";
}
当然,还要放一些跟踪语句。(1)永远不要存储明文密码。(2) 我没有看到生成任何输出。。所以(3) 启用“显示错误”或“记录错误”,并查看屏幕上或日志中的错误。