2015-12-06 40 views
0

我一直在尝试使用PHP和MySQL设置登录页面,并且当我使用 - >运算符使用准备语句时遇到了问题。我有PHP5和正确安装的Apache2和phpinfo();运行没有问题,但是当我使用此代码:PHP - >函数调用中断页面

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Login</title> 
    </head> 
    <body> 
     <form action="" method="POST"> 
      <label for="username">Username:</label> 
      <br /> 
      <input type="text" name="username" id="username" /> 
      <br /> 
      <label for="password">Password:</label> 
      <br /> 
      <input type="password" name="password" id="password" /> 
      <br /> 
      <input type="submit" value="Submit" /> 
     </form> 
     <?php 
      error_reporting(-1); 
      ini_set('display_errors', 'On'); 

      if (isset($_POST['username']) && isset($_POST['password'])) { 
       $logged_in = false; 

       $username = $_POST['username']; 
       $password = $_POST['password']; 

       $conn = new mysqli('localhost', 'root', 'password', 'db'); 

       /* create a prepared statement */ 
       if ($stmt = $conn->prepare("SELECT username, password, salt FROM `users` WHERE `username` = ?")) { 

        /* bind parameters for markers */ 
        $stmt->bind_param("s", $username); 

        /* execute query */ 
        $stmt->execute(); 

        $stmt->bind_result($storedUser, $storedPassword, $storedSalt); 

        while ($stmt->fetch()) { 
         // $storedUser, $storedPassword, $storedSalt 
         if (crypt($password, $storedSalt) == $storedPassword) { 
          $logged_in = true; 
         } 
        } 

        /* close statement */ 
        $stmt->close(); 

        if ($logged_in === true) { 
         echo 'Successfully logged in as ' . $username; 
        } 
       } 
      } 

     ?> 
    </body> 
</html> 

php的休息处>,其余的显示页面。

prepare("SELECT username, password, salt FROM `users` WHERE `username` = ?")) { /* bind parameters for markers */ $stmt->bind_param("s", $username); /* execute query */ $stmt->execute(); $stmt->bind_result($storedUser, $storedPassword, $storedSalt); while ($stmt->fetch()) { // $storedUser, $storedPassword, $storedSalt if (crypt($password, $storedSalt) == $storedPassword) { $logged_in = true; } } /* close statement */ $stmt->close(); if ($logged_in === true) { echo 'Successfully logged in as ' . $username; } } } ?> 
+1

您收到的错误或警告是什么? – thepiyush13

+0

@ thepiyush13当我使用'error_reporting(-1); ini_set('display_errors','On');',我还能看到他们吗? – Sheerforce

+0

可以请你发布你的完整代码吗?这个问题可能不明确 – thepiyush13

回答

0

虽然我还不能确定是什么原因导致这个问题,我固定它通过运行:

sudo /etc/init.d/apache2 stop 
sudo apt-get remove --purge apache2 php5 
sudo apt-get remove --purge libapache2-mod-php5 
sudo apt-get install php5 apache2 libapache2-mod-php5 
sudo /etc/init.d/apache2 start 
sudo a2enmod php5 
sudo /etc/init.d/apache2 force-reload 

谢谢大家对所有的帮助。