我遇到了一个问题,几天来我一直在努力解决这个问题。我有一个有很多页面的网站,但我遇到的问题是,我正在尝试运行一个会话,当用户登录时,导航栏会变为类似"嗨,用户"的内容,可以选择注销或查看只有用户登录时才能访问的页面。非常感谢任何帮助,因为我现在对此完全没有希望,因为我真的不知道错误在哪里
第1页:login.php-这是用户登录的地方。
<?php
include ('logon.php');
?>
<html>
<body>
<?php
include('navbar.php');
?>
<form action="login.php" method="post" name="login" id="login">
Username:
<br>
<input type="text" name="Username" required>
<br><br>
Password:
<br>
<input type="password" name="Password" id="password" required>
<br><br>
<input name="login" type="Submit" value="Login" id="Login">
</form>
</body>
</html>
第2页:logon.php-这是从数据库获取信息并运行会话的页面。
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$S_Username = $_POST['S_Username'];
$Pass = $_POST['Password'];
$Management_Username = $_POST['Management_Username'];
$Passwd = $_POST['Password'];
$query = "SELECT COUNT(*) AS cnt FROM Clients WHERE Username='" . mysqli_real_escape_string($connection, $Username) . "' && Password='" . mysqli_real_escape_string($connection, $Password). "'";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($result);
$queryadmin = "SELECT COUNT(*) AS cnt FROM S_Organiser WHERE S_Username='" . mysqli_real_escape_string($connection, $S_Username) . "' && Password='" . mysqli_real_escape_string($connection, $Pass). "'";
$resultadmin = mysqli_query($connection, $queryadmin);
$rowadmin = mysqli_fetch_assoc($resultadmin);
$querymanagement = "SELECT COUNT(*) AS cnt FROM Management WHERE Username='" . mysqli_real_escape_string($connection, $Management_Username) . "' && Password='" . mysqli_real_escape_string($connection, $Passwd). "'";
$resultmanagement = mysqli_query($connection, $querymanagement);
$rowmanagement = mysqli_fetch_assoc($resultmanagement);
if ($row["cnt"] > 0)
{
$_SESSION["userlogged"] = $Username;
header("Location: sorganiser.php");
die();
}
else if ($rowadmin["cnt"] > 0 )
{
$_SESSION["adminlogged"] = $S_Username;
header("Location: logon.php");
}
else if ($rowmanagement["cnt"] > 0 )
{
$_SESSION["managementlogged"] = $Management_Username;
header("Location: logon.php");
}
else
{
echo 'Not a valid login, please check your username and password!';
}
}
?>
第3页:navbar.php-这是会话启动后应该更改的导航栏页面
if(isset($_SESSION['userlogged']))
{
echo '<div id="nav">
<ul>
<li><a href="index.php">Home</a></li><li>
<a href="register.php">Register</a></li><li>
<a href="login.php">Log In</a></li><li>
<a href="admin.php">Admin</a></li><li>
<a href="">|</li>
<li class="Username"> Hi '.$_SESSION['userlogged'].'</li>
<li><a href="logout.php">Logout</a></li>
</li>
</ul>
</div>';
}
else if(isset($_SESSION['adminlogged']))
{
echo '<div id="nav">
<ul>
<li><a href="index.php">Home</a></li><li>
<a href="register.php">Register</a></li><li>
<a href="login.php">Log In</a></li><li>
<a href="admin.php">Admin</a></li>
<a href="">|</li>
<li class="S_Username"> Hi '.$_SESSION['adminlogged'].'</li>
<li><a href="logout.php">Logout</a></li>
<li><a href="add.php">Products</a></li>
</li>
</ul>
</div>';
}
else if(isset($_SESSION['managementlogged']))
{
echo '<div id="nav">
<ul>
<li><a href="index.php">Home</a></li><li>
<a href="register.php">Register</a></li><li>
<a href="login.php">Log In</a></li><li>
<a href="admin.php">Admin</a></li>
<a href="">|</li>
<li class="Management_Username"> Hi '.$_SESSION['managementlogged'].'</li>
<li><a href="logout.php">Logout</a></li>
</li>
</ul>
</div>';
}
else
{
echo '<div id="nav">
<ul>
<li><a href="index.php">Home</a></li><li>
<a href="register.php">Register</a></li><li>
<a href="login.php">Log In</a></li><li>
<a href="admin.php">Admin</a></li>
</ul>
</div>';
}
?>
第4页:client.php-这是用户登录后可以看到的页面。
<?php
session_start();
if(!isset($_SESSION['userlogged']))
{
header('Location: logon.php?redirect=client.php');
exit;
}
include ('logon.php');
?>
<html>
<body>
<?php
include('navbar.php');
?>
<?if(!isset($_SESSION['userlogged']))
{
echo "Welcome" .$_SESSION['userlogged'].", this is your login page!";
}
else
echo "You must be logged in to view this page."?>
</body>
提前感谢您的帮助。
首先在login.php中启动会话:
<?php
// Start the session
session_start();
?>
然后定义您的输入值:
<?php
// define variables and set to empty values
$username = $password = "";
?>
然后你的表单本身就有行动:
<html>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" name="login" id="login">
Username:
<br>
<input type="text" name="Username" value="<?php echo $username;?>" required>
<br><br>
Password:
<br>
<input type="password" name="Password" id="password" value="<?php echo $password;?>" required>
<br><br>
<input name="login" type="Submit" value="Login" id="Login">
</form>
</body>
</html>
之后,让你的用户控制这里像这样:
与在logon.php中控制用户是否存在于数据库中相同:
if($row["cnt"] > 0)
{
$_SESSION['logged_in'] = true;
$_SESSION["username"] = $name;
$_SESSION["password"] = $password;
header( "Location: sorganiser.php" );
}
else if($row["cnt"] == 0 and $username!="" and $password!=""){
header( "Location: fail.php" );
}
在sororganizer.php中,只需在页面顶部启动会话,就可以像这样使用该用户的信息:
<?php
session_start();
?>
<?php
$username = $_SESSION["username"];
$password = $_SESSION["password"];
?>
希望它能有所帮助!
尝试一下:您需要在每个将使用会话的页面顶部都有一个会话。我在首页上没有看到。
if (!isset($_SESSION['id'])){
//if there's no session present, display this.
echo "<a href='#' class=' btn btn-primary'>Login</a>";
}else{
//else theres a session so diplay this.
echo "<a href='#' class='btn btn-warning'>Logout</a>";
}