登录php时,在导航栏中显示登出链接



当用户登录时,导航栏上的登录链接应该消失,注销链接应该出现。我该怎么做?

index.html:

<nav>
<p class="menu"><a href="index.html">Home</a></p> 
<p class="menu"><a href="Product1.html">Products</a> </p> 
<p class="menu"><a href="login.html">Login</a></p> 
<p class="menu"><a href="logout.php">Logout</a></p> 
</nav>

Login.php文件:

<?php
require 'db.php';
session_start();
$password = $mysqli->escape_string($_POST['Pass']);
$email = $mysqli->escape_string($_POST['EmailAdd']);
$result = $mysqli->query("SELECT * FROM Account WHERE Usermail='$email'");
//check email in db
if ($result->num_rows == 0)
{
$_SESSION['message'] = "Email does not exist";
print '<script type="text/javascript">alert("' . $_SESSION['message'] . 
'");
</script>';
header("Location: ../register.html");
}
else
{
//get user array
$user = $result->fetch_assoc();
if ($password == $user['password'])
{
$box = "Login successful";
$_SESSION['email'] = $user['Usermail'];
$_SESSION['logged_in'] = true;
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('Login Successful')
window.location.href='../index.html';
</SCRIPT>");
}
else
{
$_SESSION['message'] = "Wrong password";
header("Location: ../account.html");
echo "failed";
echo '<script language="javascript">';
echo 'alert("Wrong password")';
echo '</script>';
}
}
?>

我已经经历了一些栈内溢出,并在我的index.php上应用了if (!isset($_SESSION['email']))和else语句,但它不起作用,我不知道的问题是什么

Ps以前使用的是index.php,因为它不起作用,所以我把它改回index.html

<?php 
if(!isset($_SESSION['logged_in'])){?>
<p class="menu"><a href="login.html">Login</a></p> 
<?php }
else
{?>    <p class="menu"><a href="logout.php">Logout</a></p> 
<?php } ?>

试试上面的代码,希望这能帮助

假设您的代码在会话$_SESSION['logged_in'] = true;中正确验证凭据并设置身份验证状态

你可以这样做:

<nav>
<p class="menu"><a href="index.html">Home</a></p> 
<p class="menu"><a href="Product1.html">Products</a> </p> 
<?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true): ?>
<p class="menu"><a href="logout.php">Logout</a></p>
<?php else: ?>
<p class="menu"><a href="login.html">Login</a></p> 
<?php endif; ?>
</nav>

在你的导航中试试这个:

<?php    
if($_SESSION['logged_in'] == "true"){
echo '<p class="menu"><a href="logout.php">Login</a></p>';
}
else {
echo '<p class="menu"><a href="login.html">Logout</a></p>';
}
?>

它不起作用,因为您使用了.html扩展名而不是.php

<nav>
<p class="menu"><a href="index.html">Home</a></p> 
<p class="menu"><a href="Product1.html">Products</a> </p> 
<?php if(empty($_SESSION['logged_in'])){ ?>
<p class="menu"><a href="login.html">Login</a></p> 
<?php } else{ ?>
<p class="menu"><a href="logout.php">Logout</a></p> 
<?php } ?>
</nav>

这应该有效:

<nav>
<p class="menu"><a href="index.html">Home</a></p> 
<p class="menu"><a href="Product1.html">Products</a></p> 
<p class="menu">
<?php if(isset($_SESSION['logged_in]) && $_SESSION['logged_in]) {?>
<a href="logout.php">Logout</a>
<?php } else { ?>
<a href="login.html">Login</a>
<?php } ?>
</p>
</nav>

最新更新