【发布时间】:2019-08-06 20:30:11
【问题描述】:
因此,对于一个学校项目,我正在尝试制作一个登录页面,如果用户在登录时可以查看其他页面。到目前为止,我可以让用户创建一个帐户并从数据库中获取数据。但是,当我刷新页面以转到其他页面所在的不同 .php 文件时。他似乎没有保存会话,因此他一直在加载“基本”页面。我对这一切都很陌生,我正在努力学习。但目前我被卡住了。任何帮助将不胜感激!
我有我的索引页面,我可以在其中区分应该加载的页面。 如果用户没有登录,他会转到 header.php。如果他成功登录,他应该转到 headerlogin.php。那就是我卡住的地方。我已经建立了我的数据库,并且工作得很好。
索引
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<?php
//if user is not logged in show :
if(!isset($_SESSION["user"])){
$headerSentence = "Belgian Urban Exploring ";
include('header.php');
} else { //if user is logged in show :
$headerSentence = "Welcome " . $_SESSION["user"] . "!";
include('headerlogin.php');
}
//if user is logged in and not admin show :
//else show :
?>
标题
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalCenterTitle">Log in: </h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="dologin.php" id="loginForm" method="POST">
<h4 id="userCreationMsg"></h4>
<div class="input">
<span id="loginError" class="SpecialRed"></span>
<label for="username">Username:</label>
<input type="text" name="username" id="loginUsername" value="<?php $valuesLogIn["username"] ?>">
</div>
<div class="input">
<label for="username">Password:</label>
<input type="password" name="password" id="loginPassword" value="<?php $valuesLogIn["password"]?>">
</div>
<div>
<span class="specialRed loginErrorMessage"></span>
</div>
<div class="input">
<input type="submit" id="submitLogin" value="logIn">
</div>
<div>
<input type="text" name="staylogged" placeholder="Write 'OK' if u want to stay logged in" value="<?php $valuesLogIn["stayloggedin"]?>">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="btn-signup">Don't have an account? Sign up here</button>
<button type="button" class="btn btn-secondary close-btn" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
登录
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST["username"]) && isset($_POST["password"])){
include_once "database/UserDB.php";
$password = $_POST["password"];
$hashed_password = hash("SHA512", $password);
$result = UserDB::checkUserLogin($hashed_password, $_POST["username"]);
if($result->username == $_POST["username"]){
$data["success"] = true;
}
} else { $data["error"] = "Not al values are set";}
} else {
$data["error"] = $_POST . "has no value";
}
if($result == true) {
session_start();
$_SESSION["user"] = $_POST["username"];
$_SESSION["userid"] = $result->userId;
if (isset($_POST["staylogged"])) {
if ($_POST["staylogged"] === "OK") {
//16years
setcookie("UserIdCookie", $result->userId, time() + 60 * 60 * 24 * 6004, "/");
setcookie("UserCookie", $result->username, time() + 60 * 60 * 24 * 6004, "/");
} else {
//3hours
setcookie("UserIdCookie", $result->userId, time() + 60 * 60 * 2, "/");
setcookie("UserCookie", $result->username, time() + 60 * 60 * 2, "/");
}
}
}
echo json_encode($data);
?>
任何可能有用的信息都会有所帮助。理想的情况是有人可以告诉我他为什么不加载 headerlogin.php。
【问题讨论】:
-
您的
session_start电话在哪里? -
对不起,我在为布局而苦恼。我已将 session_start() 放在 dologin.php 中
-
如建议的副本中所示,您需要在要使用
$_SESSION的每个文件中使用session_start(),并且需要调用它在使用全局之前。
标签: javascript php jquery