PDO/PHP LoginScript使用MAMP以错误500结束


PDO/PHP LoginScript ending in error 500 using MAMP

我已经试着让我的loginscript工作了一段时间,但我似乎找不到问题,要么我只是瞎了眼,要么这里发生了其他事情。

不管我是否在表单中输入了正确的凭据,我最终还是会得到一个可爱的错误500。

有什么想法吗?

DB连接功能:

function db_connect() {

如果我移动此列-->

    $server = 'localhost';
    $uname = 'root';
    $passw = 'password';
    $datab = 'database';
    /* check connection */
    try{
        $conn = new PDO("mysql:host=$server;dbname=$datab;", $uname, $passw);
    } catch(PDOException $e) {
        die( "Connection failed: " . $e->getMessage());
    }

<---

   return $conn; /added this as suggested, still returns NULL.
}

登录文件:

include('../lib/functions.php'); //This is correct!
db_connect();

<--在这里,它起作用-->

早些时候有一个问题,我在注册过程中的密码哈希有问题,所以password_verify($_POST['password'], $results['passw'])没有效果,即使输入正确,也总是返回false。

if(!empty($_POST['username']) && !empty($_POST['password'])):
    $records = $conn->prepare('SELECT uname,passw FROM users WHERE uname = :user AND passw = :pass');
    $records->bindparam(':user', $_POST['username']);
    $records->bindparam(':pass', $_POST['password']);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);
    if(count($results) > 0 && password_verify($_POST['password'], $results['passw']) && $_POST['username'] == $results['uname']) //Also tried removing the &&-->username area incase two and statements were wrong without any luck {
        die('It works!');
    } else  {
        die('OR NOT!');
    }
endif;

db_connect()函数在自己的作用域中定义$conn。因此,变量$conn是局部的。而在CCD_ 5结束执行后,CCD_。

在此函数之外,$conn只是NULL

$conn从您的函数返回到外部范围

function db_connect() {
    $server = 'localhost';
    $uname = 'root';
    $passw = 'password';
    $datab = 'database';
    /* check connection */
    try{
        $conn = new PDO("mysql:host=$server;dbname=$datab;", $uname, $passw);
    } catch(PDOException $e) {
        die( "Connection failed: " . $e->getMessage());
    }
    return $conn;    // here
}

在你的脚本中:

include('../lib/functions.php'); //This is correct!
$conn = db_connect();
// other codes