用户登录后,他们应该能够看到注销,但问题是他们只能看到登录按钮。注销按钮丢失。我正在使用向下滑动面板。我知道我的 html 中缺少一些条件子句(?),但我只知道如何以及在哪里编写它。请帮助我。
html/index.php
<div id="toppanel">
<div id="panel">
<div class="content clearfix">
<div class="left">
<!-- Login Form -->
<form class="clearfix" action="validate2.php" method="post">
<h1>Member Login</h1>
<label class="grey" for="log">Email:</label>
<input class="field" type="text" name="email" id="log" value="" size="23" />
<label class="grey" for="pwd">Password:</label>
<input class="field" type="password" name="password" id="pwd" size="23" placeholder="********" />
<label><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
<div class="clear"></div>
<input type="submit" name="submit" value="Login" class="bt_login" />
<a class="lost-pwd" href="#">Lost your password?</a>
</form>
</div>
<div class="left">
<!-- Register Form -->
<form action="#" method="post">
<h1>Not a member yet? Sign Up!</h1>
<label class="grey" for="email">Email:</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="password">Password:</label>
<input class="field" type="text" name="password" id="email" size="23" placeholder="********" />
<label class="grey" for="email">Confirm Password:</label>
<input class="field" type="text" name="password" id="email" size="23" placeholder="********" />
</div>
<div class="left right">
<label class="grey" for="email">Contact No</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="email">Campus</label>
<br>
<input type="radio" name="campus" /><?php if (isset($campus) && $campus=="Jerudong")?><value="Jerudong">Jerudong
<input type="radio" name="campus" /><?php if (isset($campus) && $campus=="Gadong") ?><value="Gadong">Gadong
<label class="grey" for="email">Class</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="email">Intake</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
</div> <!-- /login -->
</div>
<!-- The tab on top -->
<div class="tab">
<ul class="login">
<li class="left"> </li>
<li>Hello!</li>
<li class="sep">|</li>
<li id="toggle">
<a id="open" class="open" href="#">Log In | Register</a>
<a id="close" style="display: none;" class="close" href="#">Close Panel</a>
</li>
<li class="right"> </li>
</ul>
</div> <!-- / top -->
<!-- The tab on top -->
<div class="tab">
<ul class="login">
<li class="left"> </li>
<!-- Logout -->
<li>Hello, <?php echo $_SESSION['email'] ?></li>
<li><a href="logout.php">Log Out</a></li>
<li class="sep">|</li>
<li id="toggle">
<a id="open" class="open" href="#" rel="nofollow">Show Dashboard</a>
<a id="close" style="display: none;" class="close" href="#" rel="nofollow">Close Panel</a>
</li>
<li class="right"> </li>
</ul>
</div> <!-- / top -->
验证2.php
<?php
include 'connection.php';
if (isset($_POST["login"])){
//get data from login form
$email = mysql_real_escape_string($_POST["email"]);
$password = mysql_real_escape_string($_POST["password"]);
//select all data by using email and password entered
$customers = mysql_query("select * from customer where CustomerEmail='".$email."' and CustomerPassword='".$password."'");
$customer = mysql_num_rows($customers);
$managers = mysql_query("select * from manager where ManagerEmail='".$email."' and ManagerPassword='".$password."'");
$manager = mysql_num_rows($managers);
$staffs = mysql_query("select * from staff where StaffEmail='".$email."' and StaffPassword='".$password."'");
$staff = mysql_num_rows($staffs);
//if customer is true
if($customer== 1){
$row = mysql_fetch_assoc($customers);
$id= $row['CustomerID'];
$email = $row['CustomerEmail'];
$name = $row['CustomerName'];
//start session
session_start();
//create session
$_SESSION['CustomerID'] = $id;
$_SESSION['CustomerEmail'] = $email;
$_SESSION['CustomerName'] = $name;
//redirect page to index.php
header("Location: index.php");
}
//if manager is true
else if($manager == 1){
$row = mysql_fetch_assoc($managers);
$id = $row['ManagerID'];
$email = $row['ManagerEmail'];
$name = $row['ManagerName'];
//start session
session_start();
//create session
$id = $row['ManagerID'] = $id;
$_SESSION['ManagerEmail'] = $email;
$_SESSION['ManagerName'] = $name;
//redirect page to managerCP.php
header("Location: managercp.php");
}
//if staff is true
else if($staff == 1){
$row = mysql_fetch_assoc($staff);
$id = $row['StaffID'];
$email = $row['StaffEmail'];
$name = $row['StaffName'];
//start session
session_start();
//create session
$id = $row['StaffID'] = $id;
$_SESSION['StaffEmail'] = $email;
$_SESSION['StaffName'] = $name;
//redirect page to staffCP.php
header("Location: staffcp.php");
}
//if all condition is false
else {
//alert will be appeared
header("Location: index.php?login=Wrong email or password");
}
}
?>
</div>
所以我编辑了,我得到了一个错误,说出乎意料的"其他"。
<li class="left"> </li>
<?php if(isset($_GET['login'])) {?>
<!-- Logout -->
<li>Hello, <?php echo $_SESSION['email'] ?></li>
<li><a href="logout.php">Log Out</a></li>
<li class="sep">|</li>
<?php } ?>
<?php else { ?>
<div class="content clearfix">
<div class="left">
<!-- Login Form -->
<form class="clearfix" action="validate2.php" method="post">
<h1>Member Login</h1>
<label class="grey" for="log">Email:</label>
<input class="field" type="text" name="email" id="log" value="" size="23" />
<label class="grey" for="pwd">Password:</label>
<input class="field" type="password" name="password" id="pwd" size="23" placeholder="********" />
<label><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
<div class="clear"></div>
<input type="submit" name="submit" value="Login" class="bt_login" />
<a class="lost-pwd" href="#">Lost your password?</a>
</form>
</div>
<div class="left">
<!-- Register Form -->
<form action="#" method="post">
<h1>Not a member yet? Sign Up!</h1>
<label class="grey" for="email">Email:</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="password">Password:</label>
<input class="field" type="text" name="password" id="email" size="23" placeholder="********" />
<label class="grey" for="email">Confirm Password:</label>
<input class="field" type="text" name="password" id="email" size="23" placeholder="********" />
</div>
<div class="left right">
<label class="grey" for="email">Contact No</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="email">Campus</label>
<br>
<input type="radio" name="campus" /><?php if (isset($campus) && $campus=="Jerudong")?><value="Jerudong">Jerudong
<input type="radio" name="campus" /><?php if (isset($campus) && $campus=="Gadong") ?><value="Gadong">Gadong
<label class="grey" for="email">Class</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<label class="grey" for="email">Intake</label>
<input class="field" type="text" name="email" id="signup" value="" size="23" />
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
</div> <!-- /login -->
<?php } ?>
解决方案和批判
我不太明白为什么所有的登录、注册和注销信息都在同一页面上,但是如果你想要这样,你必须添加 PHP 条件来管理设置某些会话材料时显示的内容。
我假设您正在谈论的条件,因为注销内容未显示将围绕此区域:
<li class="left"> </li>
<?php if $_SESSION['logged_in'] {?>
<!-- Logout -->
<li>Hello, <?php echo $_SESSION['email'] ?></li>
<li><a href="logout.php">Log Out</a></li>
<li class="sep">|</li>
...<?php } ?>
<?php else { ?>
<!--Things to show when user is not logged in-->
<?php } ?>
请使用 PDO
强烈建议您在启动与数据库的连接时使用 PDO(PHP 数据对象),以确保安全性并防止 SQL 注入。就使用数据库而言,这确实是任何安全PHP应用程序的重要组成部分,它对数据库类型有很好的支持,并且非常容易学习