<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>欢迎来到XXX网</h1>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<span>邮箱:<input type="text" name="user_email"></span>
<span>密码:<input type="text" name="user_pass"></span>
<span> <input type="submit" name ='submit' value="登陆"></span>
<input type="button" onClick="location.href='register.php'" value="注册" />
</form>
<?php
//开始登录
if(!isset($_POST['submit'])){exit('非法访问!');}
$user_email = htmlspecialchars($_POST['user_email']);
$user_pass = htmlspecialchars($_POST['user_pass']);
//包含数据库连接文件
include('conn.php');
//检测用户名及密码是否正确
$check_query = mysql_query("select user_id,user_nickname from users where user_email='$user_email' and user_pass='$user_pass' limit 1");
if($result = mysql_fetch_array($check_query))
{
//登录成功
@ session_start();
$_SESSION['user_id'] = $result['user_id'];
$_SESSION['user_email'] = $user_email;
echo $result['user_nickname'].',欢迎你!---<a href="my.php">用户中心</a> ';
echo '<a href="index.php?action=logout">注销</a><br />';
exit;
}
//登陆失败
else {exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试');}
//注销登录
if ( $_GET['action'] == "logout" && isset($_SESSION['user_id']) )
{
echo '注销成功!点击此处 <a href="login.html">登录</a>';
unset($_SESSION['user_id']);
unset($_SESSION['user_email']);
exit;
}
?>
</body>
</html>
if(!isset($_POST['submit'])){exit('非法访问!');}
你不是post访问这个页面并且没有传递sumit参数,上面的代码就是true当然会自行die代码
判断代码公用的时候注意要增加op参数什么的,判断是相关的操作在判断值是否存在什么的,而不是直接判断值,要不就出现你这种错误了
if(isset($_POST['submit'])){
//共用一个页面就是把代码放到这里了:
}
1、我是参考这位作者的代码 http://blog.csdn.net/sysprogram/article/details/21107041
因为原作者的代码中,登陆页面login.html与login.php是两个文件,所以作者使用这段代码
if(!isset($_POST['submit'])){ exit('非法访问!');
来判断用户是不是点击submit过来的?如果不是点击submit过来,而是直接输入网址过来的话,就会提示“非法访问”。
2、而我submit按钮、登陆、注销,都是在同一个php文件中,所以当点击“注销”时,肯定没有submit产生,所以会提示“非法访问。
3、解决方法是,修改这个判断规则就可以了。如下:
<?php
//开始登录
//if(!isset($_POST['submit'])){exit('非法访问!');}
if(isset($_POST['submit']))
{
$user_email = htmlspecialchars($_POST['user_email']);
$user_pass = htmlspecialchars($_POST['user_pass']);
//包含数据库连接文件
include('conn.php');
//检测用户名及密码是否正确
$check_query = mysql_query("select user_id,user_nickname from users where user_email='$user_email' and user_pass='$user_pass' limit 1");
if($result = mysql_fetch_array($check_query))
{
//登录成功
@ session_start();
$_SESSION['user_id'] = $result['user_id'];
$_SESSION['user_email'] = $user_email;
echo $result['user_nickname'].',欢迎你!---<a href="my.php">用户中心</a> ';
echo '<a href="index.php?action=logout">注销</a><br />';
exit;
} //登陆失败
else {exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试');}
}
//注销登录
if ( $_GET['action'] == "logout" )
{
echo '注销成功!点击此处 <a href="index.php">登录</a>';
unset($_SESSION['user_id']);
unset($_SESSION['user_email']);
exit;
}
?>
你可以先将_SESSION['user_id']和_SESSION['user_email']传递的值打印出来,然后看看与数据库的是否一致,如果一直的话,你应该进行格式转换下,譬如剔除空字符等操作,在试试看。