有一个SESSON问题.为什么验证不了,菜鸟问题

adfoxin 2006-06-28 03:03:47
<?php
session_start();
if (isset($_POST['user_name']) && isset($_POST['user_passwd']))
{
$name=$_POST['user_name'];
$pass=$_POST['user_passwd'];
}
$result=mysql_query("select * from ab_user where user_name='$name' and user_passwd='$pass'");
$rows=mysql_num_rows($result);
if($rows > 0){
$_SESSION['username']=$name;
if (isset($_SESSION['username']))
{
echo '用户密码正确!成功进入... <br />';
echo "<meta http-equiv=\"refresh\" content=\"5;URL=u_expense.php\">";
}else{
echo '用户密码资料不正确,请再试一次... <br />';
echo "<meta http-equiv=\"refresh\" content=\"5;URL=login.php\">";
}
}




?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link href="css/vpm_printout.css" rel="stylesheet" type="text/css">
<title>无标题文档</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<table width="298" border="0" align="center" class="text6_bold">
<tr>
<th colspan="2" scope="col">登陆验证</th>
</tr>
<tr>
<td width="117">用户名</td>
<td width="312"><input name="user_name" type="text" class="text6" id="user_name" /></td>
</tr>
<tr>
<td>密码</td>
<td><input name="user_passwd" type="password" class="text6" id="user_passwd" /></td>
</tr>
</table>
<p align="center">
<input name="Submit" type="submit" class="text6" value="登陆" />
</p>
</form>
</body>
</html>
...全文
235 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
adfoxin 2006-06-28
  • 打赏
  • 举报
回复
你的太难啦.

看起来复杂.

其实我想做到就是验证登陆通过后.

在跳转页面,然后我会在其它页面调用这个$_SESSON变量
anshenghao 2006-06-28
  • 打赏
  • 举报
回复
我给你一个登陆验证的代码吧 你只要在每个页面include的进去就好
至于session的过期时间你可以自己加
<?php
session_start();
include_once("db_config.php");
if ( !isset($_SESSION['s_LoginOk']) || !$_SESSION['s_LoginOk'] )
{
if ( isset($_SESSION["s_LoginStep"]) && $_SESSION["s_LoginStep"] == "1" && isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] )
{
$strsql = "SELECT username,login_passwd FROM internal_user
WHERE username = '" . $_SERVER['PHP_AUTH_USER'];
$strsql .= "' AND (login_passwd ='" . md5( $_SERVER['PHP_AUTH_PW'] ) . "' OR login_passwd ='";
$strsql .= $_SERVER['PHP_AUTH_PW'] . "')";

if ( !$result = mysql_query( $strsql ) )
{
echo "Could not obtain information";
}


if ( $row = mysql_fetch_array($result) )
{
// login ok
$_SESSION['s_LoginOk'] = 1;

$_SESSION['username'] = $_SERVER['PHP_AUTH_USER'];
$_SESSION['login_passwd'] = md5($_SERVER['PHP_AUTH_PW']);
}
//$db->sql_freeresult($result);
}

if ( !isset($_SESSION['s_LoginOk']) || !$_SESSION['s_LoginOk'] )
{
$_SESSION["s_LoginStep"] = 1;

$realm = $manager_config['title_realm'] ? $manager_config['title_realm'] : 'SF Internal Web Portal';
header('WWW-Authenticate: Basic realm="' . $realm . '"');
header('HTTP/1.0 401 Unauthorized');

$_SESSION['s_LoginOk'] = '';
echo "Login canceled!!";
exit;
}
}
?>
adfoxin 2006-06-28
  • 打赏
  • 举报
回复
老是自动刷新...
phchenjie 2006-06-28
  • 打赏
  • 举报
回复
哦..我没看仔细.这是一个文件.试试这样做:
<form action="<?php echo $_SERVER['PHP_SELF'];?cmd=post>?" method="post" ...

然后再验证代码前面进行一个判断:
if ($_POST['cmd'] == 'post') {
验证代码
}
else {
html代码
}
adfoxin 2006-06-28
  • 打赏
  • 举报
回复
很奇怪,我按照你说的去掉{}

可是..一开页面.就会显示:用户密码资料不正确,请再试一次...

而且,我输入正确用户名和密码也无法跳转页面.

我的密码是用MD5()函数加密过的...

怎么会这样呢...能不能教教我.
phchenjie 2006-06-28
  • 打赏
  • 举报
回复
if($rows > 0)
$_SESSION['username']=$name;
if (isset($_SESSION['username']))
{
echo '用户密码正确!成功进入... <br />';
echo "<meta http-equiv=\"refresh\" content=\"5;URL=u_expense.php\">";
}else{
echo '用户密码资料不正确,请再试一次... <br />';
echo "<meta http-equiv=\"refresh\" content=\"5;URL=login.php\">";
}

//if ($rows > 0) 处多了{}

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧