登录后,我无法在index.html / auth.php页面上显示$ _SESSION ['username']。这很奇怪,因为它能够在登录后在其他页面上检测到$ _SESSION ['username'],而不是我的索引/身份验证页面。
编辑:正确登录后,login.php进入index.html。然后index.html将auth.php中的“登录”按钮显示为“登录”
login.php,用户将在其中输入用户名和密码进行登录,并创建$ _SESSION ['username']。
<?php session_start();
require('db.php');
// If form submitted, insert values into the database.
if (isset($_POST['username'])){
// removes backslashes
$username = stripslashes($_REQUEST['username']);
//escapes special characters in a string
$username = mysqli_real_escape_string($con,$username);
$password = stripslashes($_REQUEST['password']);
$password = mysqli_real_escape_string($con,$password);
//Checking is user existing in the database or not
$query = "SELECT * FROM `users` WHERE username='$username'
and password='".md5($password)."'";
$result = mysqli_query($con,$query) or die(mysql_error());
$rows = mysqli_num_rows($result);
if($rows==1){
$_SESSION['username'] = $username;
// Redirect user to index.html
header("Location: ../index.html");
}else{
echo "<div class='form'>
<h3>Username/password is incorrect.</h3>
<br/>Click here to <a href='login.php'>Login</a></div>";
}
}else{
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
<link rel="stylesheet" href="login.css" />
</head>
<body>
<div class="form">
<h1>Log In</h1>
<form action="" method="post" name="login">
<input type="text" name="username" placeholder="Username" required style="text-align: center;"/>
<input type="password" name="password" placeholder="Password" required style="text-align: center;"/>
<input name="submit" type="submit" value="Login" />
</form>
<a href='resetpassword.php'>Forgotten Password?</a>
<br/><a href='registration.php'>Register Here</a>
</div>
<?php } ?>
</body>
</html>
index.html,在其中调用auth.php页面(我的index.html页面的其余部分对该问题并不重要,已替换为“ blah blah blah”)。 编辑:我的服务器已配置,以便index.html可以运行php。
<?php session_start(); ?>
<?php require('login/auth.php'); ?>
<?php include('login/checkadmin.php'); ?>
<?php include('login/getoutages.php'); ?>
<!doctype html>
<html>
blah blah blah
</html>
auth.php,使用数据库的地方以及$ _SESSION ['username']的显示位置,但不显示!
<?php session_start();
ob_end_clean();
if(isset($_SESSION['username'])) {
?>
<table id="signedin">
<tr>
<td colspan="5">
Welcome, <?php echo $_SESSION['username']; ?>!
</td>
</tr>
<tr>
<td align="right">
<a id="logouts" href="login/logout.php">Sign Out</a>
</td>
<td align="right">
</td>
<td align="left">
<a id="profiles" href="login/profile.php">Profile</a>
</td>
</tr>
</table>
<?php } else if(!isset($_SESSION['username'])) { ?>
<div id="notsignedin"><a id="logins" href="/login/login.php">Login</a></div>
<?php } ?>
任何信息都是有帮助的!谢谢!
编辑:我已经更新了代码以运行session_start();首先。 仍然无法检测到$ _SESSION ['username']。 EDIT2:切换$ username = $ _SESSION ['username'];在login.php中为$ _SESSION ['username'] = $ username;仍未显示在auth.php上
答案 0 :(得分:0)
您应该先在每个文件中开始会话
<?php session_start(); ?>
至少要分别调用每个页面
答案 1 :(得分:0)
您需要在检查issest($ _ Session ['username'])之前调用session_start()
答案 2 :(得分:0)
您需要将session_start();
放在该页面上的$_SESSION
变量之前,因此,if(isset($_SESSION['username'])
在会话开始之前不会被“设置”,只需将其移到页面的上方即可。页,最好先调用它。我通常将其与数据库连接一起放在配置页面中,并将其包括在每个页面中:)
希望这会有所帮助