登录脚本无法在实时服务器

时间:2016-12-05 20:38:58

标签: php mysql login

我已经在我的localhost上为我已经工作了一段时间的网站构建了一个管理部分,一切都在我的本地主机上工作,但是当我将它上传到实时服务器时,它就不会工作 - 而且当我说不会工作,它什么都不做!登录页面加载它应该,如果我尝试访问index.php页面而不登录,它会将我重定向到login.php,因为它应该,但当我去登录时,它只是重新加载登录页面,当我去注册时它会这样做。

我花了一整天时间经历了我能想到的每一个可能的错误,我已经加倍,然后三重检查了数据库连接,表等,php,我回应了“你好世界!”从登录页面中包含的各种文件中查看它是否正确连接到它们,并且它每次都有效...我甚至检查了服务器设置的时间,因为我在另一个论坛上的某个地方看到某人有一个类似的问题,他们将服务器更新到正确的时间,并且它有效,与会话有关...但是,似乎没有任何工作。正如我之前提到的,它在我的本地主机上运行得非常好,我之前已经在现场服务器上尝试过登录,但是从那以后我做了更多工作。

供参考,这是我的登录/注册等课程:

<?php

class USER {
private $db_user;

function __construct($db) {
    $this->db_user = $db;
}

public function register($clientID,$u_fname,$u_lname,$u_tel,$u_email,$uname,$upass,$secQuestion,$secAnswer) {

    try {

        $new_password = password_hash($upass, PASSWORD_DEFAULT);

        $stmt = $this->db_user->prepare("INSERT INTO users(client_id,user,pass,first_name,last_name,telephone,email,sec_question,sec_answer) VALUES(:client,:user, :pass, :fname, :lname, :tel, :email, :secQ, :secA)");

        $stmt->bindparam(":user", $uname);
        $stmt->bindparam(":client", $clientID);
       $stmt->bindparam(":pass", $new_password);
       $stmt->bindparam(":email", $u_email);
       $stmt->bindparam(":fname", $u_fname);
       $stmt->bindparam(":lname", $u_lname);
       $stmt->bindparam(":tel", $u_tel);
       $stmt->bindparam(":secQ", $secQuestion);
       $stmt->bindparam(":secA", $secAnswer);          
       $stmt->execute();

       return $stmt;
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
}

public function login($uname, $upass) {

    try {

        $stmt = $this->db_user->prepare("SELECT * FROM users WHERE user=:user LIMIT 1");
        $stmt->execute(array(':user'=>$uname));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
        if($stmt->rowCount() > 0) {
            if(password_verify($upass, $userRow['pass'])) {
                $_SESSION['user_session'] = $userRow['id'];
                return true;
            } else {
                return false;
            }
        }
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
}

public function is_loggedin() {
    if(isset($_SESSION['user_session'])) {
        return true;
    }
}

public function logout() {
    session_destroy();
    unset($_SESSION['user_session']);
    return true;
}
}
?>

我的配置文件:

<?php 

require('constants.php');

try {
$db = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->exec("SET NAMES 'utf8'");
} catch (PDOException $e) {
echo "Could not connect to the database because: " . $e->getMessage();
exit;
}

include_once 'class.user.php';
$user = new USER($db);
?>

和我的登录页面本身:

<?php
session_start();
$page_title = "Love Deals Login";
require('../inc/connect/config.php');


if($user->is_loggedin()!="") {
header("Location: index.php");
}

if(isset($_POST['login'])) {
$uname = $_POST['txt_uname'];
$upass = $_POST['txt_upass'];

if($user->login($uname,$upass)) {
    header("Location: index.php");
} else {
    $error = "Login failed. Please try again, or register";
}
}

include('inc/admin-header.php');

?>

<div class="container" style="padding: 100px 0 0 0;">
<div class="form-container">
    <form method="post" id="login">
        <h3>Please login</h3>
        <?php if(isset($error)) { ?>
            <div class="alert alert-danger">
                <i class="glyphicon glyphicon-warning-sign"></i> &nbsp; <?php echo $error; ?>
            </div>
        <?php } else if(isset($_GET['joined'])) { ?>
                <div class="alert alert-info">
                    <i class="glyphicon glyphicon-ok"></i> &nbsp; Thanks! You are now registered. You may now login below
                </div>
        <?php } else if(isset($_GET['pass-update'])) { ?>
                <div class="alert alert-info">
                    <i class="glyphicon glyphicon-ok"></i> &nbsp; Success! Your password has been updated. You may now login below
                </div>
        <?php } ?>
        <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login">
            <input type="text" class="form-control" name="txt_uname" placeholder="Username" required />
        </div>
        <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login">
            <input type="password" class="form-control" name="txt_upass" placeholder="Password" required />
        </div>
        <div class="clearfix"></div>
        <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login">
            <p class="small text">Forgotten <a href="forgot-user.php">Username</a> / <a href="forgot-pass.php">Password?</a></p>
            <button type="submit" name="login" class="btn btn-primary pull-right">
                <i class="glyphicon glyphicon-log-in"></i>&nbsp;Login</button>
        </div>
        <div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3" style="text-align: center;">
            <label>Don't have an account yet? <a href="agree.php">Register now</a></label>
        </div>
    </form>
</div>
</div>
<?php include('inc/admin-footer.php'); ?>

任何可能妨碍我的脚本运行的想法?或者甚至只是指出我正确的方向,非常感谢!

1 个答案:

答案 0 :(得分:0)

尝试!empty()而不是isset()。