我的用户登录的任何原因都不能在PHP中运行 - PDO?

时间:2015-09-22 14:00:32

标签: php mysql pdo

我正在尝试将我的整个网站从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;

感谢您的时间。

0 个答案:

没有答案