移动到其他服务器时的PHP登录问题

时间:2017-03-28 22:47:34

标签: php login server subdomain

我有一个非常基本的登录系统,我在我的本地主机上测试过,以及我用来测试我的项目的免费托管网站,一切正常。

我刚刚将网站作为子域名移至Site Ground,并且登录已停止工作。该站点仍在从我在此位置创建的数据库中加载内容,因此我知道问题不是因为无法连接到数据库。

.htaccess文件中没有任何内容阻止用户登录,如果将其移动到新服务器是一个问题,我该如何找到解决方法呢?尝试登录时页面不会返回任何错误

登录PHP:

<?php

require 'includes/connect.php';

session_start();

if(isset($_POST['login'])){
$username = $_POST['username'];
$password = md5 ($_POST['password']);


$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT COUNT(user_id) FROM nathan WHERE username='$username' AND password='$password'";
$q = $pdo->prepare($sql);
$q->execute();

$count = $q->fetchColumn();

if($count == 1){
    $_SESSION['username'] = $username;

    header('Location: admin.php');
} 
}        

?>

数据库连接:

<?php
class Database
{
private static $dbName = "some_DB" ;
private static $dbHost = "localhost" ;
private static $username = "some_user";
private static $password = "password123";

private static $cont  = null;

public function __construct() {
    die('Init function is not allowed');
}

public static function connect()
{
   // One connection through whole application
   if ( null == self::$cont )
   {     
    try
    {
      self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$username, self::$password); 
    }
    catch(PDOException $e)
    {
      die($e->getMessage()); 
    }
   }
   return self::$cont;
}

public static function disconnect()
{
    self::$cont = null;
}
}
?>

会话PHP:

<?php

session_start();

if (!isset($_SESSION['username'])){
header('Location: login.php');
};
?>

2 个答案:

答案 0 :(得分:1)

您可能希望在查看时检查Cookie,并确认您确实收到了包含会话信息的Cookie。如果这不起作用,我对您的环境的有限观点表明您不允许来自该特定子域的cookie。

要检查的另一件事是存储会话数据的目录。如果没有填充,那么您将无法继续会话。

答案 1 :(得分:0)

正如我上面的海报所说肯定是因为cookies,请参阅这篇文章了解解决方案documentation

你不应该直接在数据库中存储密码,这是不安全的,你应该用password_hash()散列它,然后在登录时将它与hash_equals()进行比较。