我正在尝试将我的整个网站从mysql_重新编码为PDO作为针对sql注入的安全选项。
但是,由于某些原因,自更改以来我的用户登录不再有效。
这是登录代码 - PDO:
<?php
try
{
$db = new PDO ('mysql:host=localhost;dbname=i-neo;charset=utf8','root','Mylife2015');
//var_dump($db);
}
catch(Exception $e)
{
//echo $e->getMessage();
echo "An error has occured";
}
session_start();
if (isset($_SESSION['user_login'])) {
$user = $_SESSION["user_login"];
}
else {
$user = "";
}
if (isset($_POST['login'])) {
$user_login = $_POST['user_login'];
$password_login = $_POST['password_login'];
$query = $db->prepare("SELECT COUNT ('id') FROM 'users' WHERE 'username' = '$user_login' AND 'password' = '$password_login'");
$query->execute();
$count = $query->fetchColumn();
if ($count == "1"){
$_SESSION['user_login'] = $user_login;
header('location: you.php');
}
}
?>
我看不出问题所在,我现在已经多次阅读过我的代码了。每次我尝试登录时,它似乎都没有做任何事情。用户名和密码字段在提交时将变为空白。
这是我的表格:
<tr>
<td width ="60%" valign="top">
<h2> PDO - Already a Member? Sign in</h2>
<form method="post" action="index.php">
<input type="text" name="user_login" id="user_login" size="25" placeholder="Username"/><br/><br/>
<input type="password" name="password_login" id="password_login" size="25" placeholder="Password"/><br/><br/>
<input type="submit" name="login" value="PDO Login">
</form>
</td>
我想知道如何解决这个问题。 以防我在下面添加我的用户表,以防我遗漏一些明显的东西。
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(32) NOT NULL,
`sign_up_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`activated` enum('0','1') NOT NULL,
`bio` text NOT NULL,
`profile_pic` text NOT NULL,
`follow_array` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1;
感谢您的时间。