php - php没有显示else块
问题描述
我正在尝试了解,session_start()
但是当我运行文件时,它只显示里面的内容
if (isset($_SESSION['username'])&& isset($_SESSION['password'])==$password) {
?>
<a href="home.php">log out</a>
<?php } ?>
并且没有显示else{...}
,即使在我单击注销后,它也不会在 else 语句中打印任何内容,而只会在 if 语句中打印。我使用另一个文件来注销散文,但我不知道正确的代码session_destroy()
这是下面的 logout.php 代码:
<?php
session_start();
session_destroy();
header("location: home.php");
?>
这是完整的代码:
<?php
session_start();
include("DB/db.php");
$_SESSION['username']=$username;
$_SESSION['password']=$password;
$_SESSION['is_log_in'] = true;
?><!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/css.css">
</head>
<body>
<div id="blank"></div>
<div id="panel">
<nav id="bar">
<div id="submen">
<form id="sir">
<input type="Search" name="search" placeholder="Search.." id="search">
</form>
<a href="wallpaper.php" id="menu">Walpaper</a>
<a href="art.php" id="menu">Art</a>
<a href="photo.php" id="menu">Photos</a>
<a href="image.php" id="menu">Image</a>
<?php
if (isset($_SESSION['username'])&& isset($_SESSION['password'])==$password) {?>
<?php echo $username?>
<a href="logout.php">log out</a>
</div>
</nav>
</div>
</table>
<?php } else {
?>
<a href="log_in.php" id="member">login</a>
<a href="register.php" id="member">register</a>
</div>
</nav>
</div>
</table>
<?php } ?>
</body>
</html>
更新登录脚本
<?php
session_start();
include("DB/db.php");
if ($_GET['log']=='out'){
session_destroy();
}
if ($_POST['user']){
$sql = "Select password from user where username = '".$_POST['user']."' ";
$result = mysqli_query($koneksi, $sql);
if (mysqli_num_rows($result)){
$row = mysqli_fetch_assoc($result);
if ($row['password'] == md5($_POST['pass'])) {
$_SESSION['login'] = TRUE;
$_SESSION['username'] = $user;
$_SESSION['password'] = $pass;
}else{
$pesan = "Username and password mismatch";
}
}else{
$pesan = "please register";
}
}
?><!DOCTYPE html>
<html>
<head>
<title>Log in</title>
</head>
<body>
<?php
if ($_SESSION['login']) {
echo "text";
}else{
?>
<h1>Login</h1>
<form method="post" action="rahasia.php">
Username: <input type="text" name="user">
Password: <input type="password" name="pass">
<input type="submit" name="" value="Login">
</form>
<form method="post" action="register.php">
<input type="submit" name="register" value="register">
</form>
<?php
}
echo $pesan;
?>
</body>
</html>
我哪里出错了
解决方案
你的 $_SESSION 变量总是被设置,并且 $password 总是等于 $_SESSION['password']。
$_SESSION['username']=$username; // null, plus notice in error_log
$_SESSION['password']=$password; // null, plus notice in error_log
除非将这两个变量设置为include("DB/db.php");
,在这种情况下这是不好的做法。你能粘贴 db.php 看看里面发生了什么吗?
更新。
好的,正在设置变量。现在这意味着:
$_SESSION['username']=$username; // a
$_SESSION['password']=$password; // 123456789
因此它们仍然会匹配。您需要重构这些行才能正常运行。您确定 mysql 凭据是您想要登录用户的凭据吗?
推荐阅读
- css - 复选框输入未与标签一起居中
- jquery - 单击父div时jQuery隐藏的跨度弹出窗口
- java - 如何计算设定时间的剩余小时数
- java - 如何从netbeans插入数据库
- build - 从预构建二进制文件(mono 和 gtk-sharp2 项目)构建 flatpak 包
- android - Android.database.sqlite.SQLiteException:没有这样的列:500.0(代码1)
- amazon-web-services - Route53域名在一个账户购买,在另一个账户有记录?
- api - 如何正确搜索(房地产交易标准又名 RETS)服务器?
- javascript - 为什么条件(三元)运算符不返回正确的值?
- python - 如何增加索引本身而不是索引中存储的值?