关于PHP的登陆和退出的问题,我做了一个登陆系统,但是没有退出的功能,我郁闷。
刚开始总是出现一个奇怪的问题,就是session貌似不好用,当我关闭浏览器以后,再访问服务器的时候则直接跳过了登陆页面进入了程序,我再网上看了很多,好像都是说什么路径之类的问题,但是我发现我的路径没什么问题,当我删除了本地session的文件夹里面的文件的时候就好了,我觉得可能是因为我没有退出,没有注销session,可是浏览器再关闭的时候就自动关闭了session了啊???我搞不清楚了。
<?php
session_start();
include(dirname(__FILE__).'/Zxing.php/Zxing.php');
header('content-Type=text/html;charset=utf-8');
$username = strtolower(htmlspecialchars(trim($_POST['username'])));
$pwd = strtolower(htmlspecialchars(md5(trim($_POST['pwd']))));//判断用户名是否输入,以后还需要添加更详细的判断
if(empty($_POST['username']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("请输入用户名!");
location.href="login.html";
exit();
</script>';
}
//判断密码是否为空
if(empty($_POST['pwd']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("请输入密码!");
location.href="login.html";
exit();
</script>';
}
//组建sql语句
$sql = "SELECT * FROM user WHERE username = '$username ' AND pwd = '$pwd'";
//连接数据库,实例化pdo类,送出查询
$db= new Db_pdo();
if ($db->query($sql)) {
//取得结果集,
if ($db->fetcharray()){
if($username==$db->result_array['username'] && $pwd==$db->result_array['pwd']){
//给session赋值
$_SESSION['username'] = $db->result_array['username'];
print_r($_SESSION['username']);
//header("location:admin.php");
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
window.location.href="admin.php";
</script>';
}
// ----- 登录验证通过,写入SESSION 记录登录用户
}else{
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("密码错误或者不存在该用户!");
location.href="admin.php";
</script>';
}
}else {
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("未知错误,请联系管理员!");
location.href="admin.php";
</script>';
}
上面是我登陆的代码,求退出,我不知道退出该怎么写,我希望在程序的导航里面有一个退出的按钮,然后点击那个退出的按钮的时候就直接退出了。该怎么实现呢?
刚开始总是出现一个奇怪的问题,就是session貌似不好用,当我关闭浏览器以后,再访问服务器的时候则直接跳过了登陆页面进入了程序,我再网上看了很多,好像都是说什么路径之类的问题,但是我发现我的路径没什么问题,当我删除了本地session的文件夹里面的文件的时候就好了,我觉得可能是因为我没有退出,没有注销session,可是浏览器再关闭的时候就自动关闭了session了啊???我搞不清楚了。
<?php
session_start();
include(dirname(__FILE__).'/Zxing.php/Zxing.php');
header('content-Type=text/html;charset=utf-8');
$username = strtolower(htmlspecialchars(trim($_POST['username'])));
$pwd = strtolower(htmlspecialchars(md5(trim($_POST['pwd']))));//判断用户名是否输入,以后还需要添加更详细的判断
if(empty($_POST['username']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("请输入用户名!");
location.href="login.html";
exit();
</script>';
}
//判断密码是否为空
if(empty($_POST['pwd']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("请输入密码!");
location.href="login.html";
exit();
</script>';
}
//组建sql语句
$sql = "SELECT * FROM user WHERE username = '$username ' AND pwd = '$pwd'";
//连接数据库,实例化pdo类,送出查询
$db= new Db_pdo();
if ($db->query($sql)) {
//取得结果集,
if ($db->fetcharray()){
if($username==$db->result_array['username'] && $pwd==$db->result_array['pwd']){
//给session赋值
$_SESSION['username'] = $db->result_array['username'];
print_r($_SESSION['username']);
//header("location:admin.php");
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
window.location.href="admin.php";
</script>';
}
// ----- 登录验证通过,写入SESSION 记录登录用户
}else{
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("密码错误或者不存在该用户!");
location.href="admin.php";
</script>';
}
}else {
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8">
alert("未知错误,请联系管理员!");
location.href="admin.php";
</script>';
}
上面是我登陆的代码,求退出,我不知道退出该怎么写,我希望在程序的导航里面有一个退出的按钮,然后点击那个退出的按钮的时候就直接退出了。该怎么实现呢?
销毁session值就可以了~
session_unset();
session_destroy();我也出现关闭浏览器在进入网站还是登陆状态,我用了session_set_cookie_params,不知道楼主有用了没,用了就会产生关了ie照样是登陆状态
一般情况session是与浏览器窗口绑定的,所以不同的窗口对应不同的session_id,不同id就对应不同session值,当页面关闭后在开窗口,session_id不同了,原来的session应该是找不到了得,也许你在php.ini配置中出了问题
<a href="?op=logout">退出</a>
<?php
if (!isset ($_SESSION) ) session_start();
if (isset ($_GET["op"]) && $_GET["op"]=="logout"){
unset ($_SESSION["MM_Username"]);
session_unset(); //见楼上,楼上,和楼上
session_destroy();
echo ("<script type='text/javascript'> alert('您已经成功登出,欢迎下次光临!');location.href='index.php'</script>");
}
?>