Php 登录脚本在live server上不起作用
我已经在我的本地主机上为一个我已经工作了一段时间的站点建立了一个管理部分,在我的本地主机上一切都正常工作,但是当我把它上传到一个实时服务器上时,它就不工作了——当我说“不工作”时,它什么也做不了!登录页面应该加载,如果我尝试在没有登录的情况下访问index.php页面,它会将我重定向到login.php,这是应该的,但是当我进入login时,它只会重新加载登录页面,当我进入register时,它也会这样做 我花了一整天的时间来检查我能想到的每一个可能的错误,我对数据库连接、表等进行了双重检查,然后对php进行了三次检查,我从登录页面中包含的各种文件中回显了“hello world!”,以查看它是否正确地连接到它们,并且每次都能正常工作。。。我甚至检查了服务器设置的时间,因为我在另一个论坛的某个地方看到有人有类似的问题,他们将服务器更新到正确的时间,并且它工作了,与会话有关。。。但是,唉,似乎什么都不管用。正如我前面提到的,它在我的本地主机上运行得非常好,我之前已经在一个实时服务器上尝试了登录,但从那以后我做了更多的工作 作为参考,以下是我的登录/注册等课程:Php 登录脚本在live server上不起作用,php,mysql,login,Php,Mysql,Login,我已经在我的本地主机上为一个我已经工作了一段时间的站点建立了一个管理部分,在我的本地主机上一切都正常工作,但是当我把它上传到一个实时服务器上时,它就不工作了——当我说“不工作”时,它什么也做不了!登录页面应该加载,如果我尝试在没有登录的情况下访问index.php页面,它会将我重定向到login.php,这是应该的,但是当我进入login时,它只会重新加载登录页面,当我进入register时,它也会这样做 我花了一整天的时间来检查我能想到的每一个可能的错误,我对数据库连接、表等进行了双重检查,然
<?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);
?>
试试看!空()而不是isset()。试试看!empty()而不是isset()。我还要补充一点,如果我故意使用错误的用户名或密码登录,它不会显示$error消息,就像在localhost上一样……您检查了服务器上的错误日志了吗?是的,登录页面没有错误,唯一的错误来自我已经纠正的服务器500错误,这是由于对一个单独文件的权限…一个检查很奇怪<代码>如果($user->is_loggedin()!=“”)。如果用户登录,该函数返回
true
,因此如果用户登录,它将重定向到index。(true
不等于空字符串)。是否等待?它在本地工作,而不是远程?我会先找出有什么不同,看看发生了什么。可能是不同类型的服务器,或者更可能是php版本不同导致了问题。我还要补充一点,如果我故意使用错误的用户名或密码登录,它不会显示$error消息,它在本地主机上执行的操作…您检查了服务器上的错误日志了吗?是的,没有与登录页面相关的错误,唯一的错误来自我已经纠正的服务器500错误,这是由于对单独文件的权限…一次检查很奇怪<代码>如果($user->is_loggedin()!=“”)。如果用户登录,该函数返回true
,因此如果用户登录,它将重定向到index。(true
不等于空字符串)。是否等待?它在本地工作,而不是远程?我会先找出有什么不同,看看发生了什么。可能是不同类型的服务器,或者更可能是php版本不同,这导致了问题。
<?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> <?php echo $error; ?>
</div>
<?php } else if(isset($_GET['joined'])) { ?>
<div class="alert alert-info">
<i class="glyphicon glyphicon-ok"></i> 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> 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> 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'); ?>