php - 用户登录后如何更改导航栏?
问题描述
我目前有 2 个不同的导航栏。一个在顶部带有登录和注册,一个带有帐户。我希望导航栏在用户登录后更改为带有帐户的导航栏。我的注册和登录系统已经在工作,因此不必更改(连接到数据库)。别介意名字,这是一个学校项目。
这些是我的 2 个导航栏:
<div class="navbar">
<a class="active" href="Boomba.php">Boomba</a>
<div class="dropdown">
<button class="dropbtn">Boomba News
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content">
<a href="Newnews.php">New News</a>
<a href="Deadnews.php">Dead News</a>
</div>
</div>
<a href="Boombastore.php">Boomba Store</a>
<a href="BoombaForm.php">Contact</a>
<div class="floatr">
<a href="0register.php">Sign Up</a>
<a href="0login.php">Login</a>
<a href="welcome.php">Account</a>
</div>
</div>
我目前在页面顶部有这个:
<?php
session_start();
?>
请让我知道是否有更简单的方法可以实现这一点,这是我的第一个网站。
提前致谢 :)
编辑:
我的配置文件:
<?php
define('DB_SERVER', '-');
define('DB_USERNAME', '-');
define('DB_PASSWORD', '-');
define('DB_NAME', '-');
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
我的登录文件:
<?php
session_start();
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
header("location: welcome.php");
exit;
}
require_once "0config.php";
$username = $password = "";
$username_err = $password_err = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["username"]))){
$username_err = "Please enter username.";
} else{
$username = trim($_POST["username"]);
}
if(empty(trim($_POST["password"]))){
$password_err = "Please enter your password.";
} else{
$password = trim($_POST["password"]);
}
if(empty($username_err) && empty($password_err)){
$sql = "SELECT id, username, password FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_username);
$param_username = $username;
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $hashed_password)){
session_start();
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;
header("location: welcome.php");
} else{
$password_err = "The password you entered was not valid.";
}
}
} else{
$username_err = "No account found with that username.";
}
} else{
echo "Oops! Something went wrong. Please try again later.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
}
?>
解决方案
登录操作后,您必须将用户特定的数据加载到$_SESSION
数组中。想象一下,您已将用户数据存储到$_SESSION
然后您可以检查该$_SESSION
值是否存在。
下面给出了一个示例代码。如果您不明白,请告诉我。
<?php
session_start();
if (isset($_SESSION["loggedin"]) && ($_SESSION["loggedin"] == TRUE)) {
//write a nav menu html code here
?>
<div>
nav-1
</div>
<?php
} else {
//write another nav menu html code here
?>
<div>
nav-2
</div>
<?php
}
?>
推荐阅读
- php - 在 php 中插入日期时添加 # 不起作用
- angular - 错误类型错误:无法读取未定义的属性“种植者”
- c# - TCP Socket 5 分钟后 CPU/内存使用率高
- asp.net - IIS:如何将现有网站添加为另一个网站中的应用程序
- android - 如何修复 AAPT2 警告 [以下项目选项已弃用并已删除:android.enableAapt2] 在 Android Studio 3.3 中
- mysql - 从端口 3306 更改为 3308 不起作用
- java - Axis2 webservice - 未按照接口方法中的指定生成输入参数名称
- mysql - 如何根据第三个表中的 ID 通过对第二个表中的值求和来更新列数据?
- flutter - 如何让我的颤振应用程序将用户返回到操作系统主屏幕?
- twitter-bootstrap - 仅在移动设备上的垂直和水平中心