IF ELSE 都被执行了!怎么会如此怪异?

anydy2008 2009-09-26 04:12:12
<?
session_start();
?>
<?
include "function.php";
conndb();
$username=$_POST['f_name'];
$password=md5($_POST['f_password']);
$sql="select * from s_user where u_nickname='" . $username. "' and u_password='".$password."'";
$result=mysql_query($sql);
$rs=mysql_num_rows($result);
if($rs <= 0)
{
echo $sql;
}
else{
$rst=mysql_fetch_array($result);
$_SESSION['username']=$username;
$_SESSION['userid']=$rst[0];
echo "<script>alert('成功登陆!转向首页。');location.href='index.php'</script>";
}




?>

这是一个用来接收登陆参数判断的页面,当执行到if($rs <= 0) 如果账号密码输入正确的话就成功登陆了。 但是异常的情况是账号密码错误,返回的$rs数为零(测试过);页面输出$sql.ELSE的$_SESSION['username']=$username;$_SESSION['userid']=$rst[0];还是一样执行了, 提示“成功登陆”不执行;$SESSION变量还是被注入了 。



这到底是为什么呢 ? 搞了整晚都不知道什么回事。include "function.php";function.php中有定义输出的函数。这有关系吗 ? 求助高手们,先谢谢了!
...全文
307 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
YHL27 2009-09-26
  • 打赏
  • 举报
回复
学习!
jeff1987 2009-09-26
  • 打赏
  • 举报
回复
看看 $_SESSION 里有没有东西!
又一次我的 SESSION里的东西页面一跳转就丢失,搞了半夜才发现,因为文件的编码 utf-8 with bom
阿_布 2009-09-26
  • 打赏
  • 举报
回复
把全部代码贴出来看一下。
anydy2008 2009-09-26
  • 打赏
  • 举报
回复
你好! 在if($rs <= 0)为真
时有输出$sql,并且执行了session注入。else{
中已session无联系的代码不执行。

如果 if($rs <= 0)为假就指执行 else{}部分。

并且上一次的session变量已注销,这点我非常肯定。 因为我试过每次记录的都是不同的session值。
阿_布 2009-09-26
  • 打赏
  • 举报
回复
在哪里输出的,有可能输出的是上一次设置的$_SESSION['username'],$_SESSION['userid']
在if($rs <= 0){
$_SESSION['username']='';
$_SESSION['userid']='';
}
$rs<=0的时候$sql是否有输出?
anydy2008 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhoupuyue 的回复:]
把全部代码贴出来看一下。
[/Quote]


你好!

function.php

<?PHP

function conndb()
{
$server_host="localhost";
$username="root";
$password="1";
$database="shopping";
$conn=mysql_connect($server_host,$username,$password) or die("数据库连接失败!");
//连接数据库 三个参数,web服务器、 数据库账号及密码。
mysql_select_db($database,$conn);
//选择数据库
mysql_query("set names gb2312");
//设置传输使用gb2312字符集防止乱码。
}

function closeconndb()
{
echo "David Yang";
mysql_free_result($result);
mysql_close($conn);
}

function cstr($cstr,$cstrcount)
{
if(strlen($cstr)>$cstrcount)
{
$cstr=substr($cstr,0,$cstrcount);
$cstr=$cstr."..";
return $cstr;
}
else
{
return $cstr;
}
}

function alertcontent($str){
echo "<script>alert('".$str."');history.back();</script>";
exit;
}


?>



leftsidebar.php







<?
$username=$_SESSION['username'];
if($username){
?>
<h1><?
echo "欢迎你";
echo " ".$username;
?></h1>
<div id="contentlist">
<div align="left">
<h2><a href="unregsession_query.php">查看订单</a></h2>
<h2>我的购物车</h2>
<h2>修改用户资料</h2>
</div>
</div>
<?
}
else{
?>


<h1>会员登录</h1>
<div id="contentlist">
<form id="form1" name="form1" method="post" action="login_query.php">
<label>
账号: <input name="f_name" type="text" size="15" /><br /><br />
密码: <input name="f_password" type="text" size="15" />
</label>
<br /><br />
<div class="subclass">
<a href="register.php">现在注册?</a>
<input type="reset" value="重置" />
<input type="submit" value="提交" />
</div>
</form>
</div>
<?
}
?>















<div class="clearboth"></div>
<h1>产品分类</h1>
<div id="typelist">
<ul>
<?
$sql="select * from s_goodstype";
$result=mysql_query($sql);
while($rs=mysql_fetch_array($result)){
?>
<li><a href="showtype?id=<?echo $rs[0]?>"><?echo $rs[1];?></a></li>
<?}?>


</ul>
</div>
<div class="clearboth"></div>
<h1>商城公告</h1>
<div id="contentlist">
<ul>
<?
$sql="select * from s_post LIMIT 0,6";
$result=mysql_query($sql);
while($rs=mysql_fetch_array($result)){
?>
<li><a href="shownew?id=<?echo $rs[0]?>"><?echo cstr($rs[1],24);?></a></li>
<?
}?>
</ul>
</div>


unregsession_query.php



<?
session_start()
?>
<?
$_SESSION['username']="";
$_SESSION['userid']="";
echo "<script>alert('退出成功,欢迎你下次登录。');location.href='index.php'</script>";
?>




我发现出现这样的现象的规律是 是存在$_session 这个变量, 因为我之前没登陆成功就不会出现密码错误session仍成功注入。

现在我将 unregsession_query.php改成

<?
session_start()
?>
<?
unset($_SESSION['username']);
unset($_SESSION['userid']);
echo "<script>alert('退出成功,欢迎你下次登录。');location.href='index.php'</script>";
?>

注销后就不会出现刚开始出现的现象 ,但仍不知道是由于上面问题造成的 ?
源码链接: https://pan.quark.cn/s/8ddf8a1c92f9 **libcurl用于获取大型文件**libcurl作为一个开源的C语言库,提供了一系列的API来处理与URL相关的任务,涵盖了HTTP、FTP、SMTP等多种网络协议的应用。在执行大型文件的下载操作时,libcurl展现出卓越的性能表现和高度的灵活性,能够高效地管理大文件传输过程,有效预防内存溢出及其他潜在问题。**libcurl的基础操作**libcurl的基础应用包括以下几个环节:1. **初始化**:需要借助`curl_global_init()`函数来启动libcurl的工作环境。2. **建立话句柄**:通过`curl_easy_init()`函数创建一个话句柄,该句柄将用于后续所有的操作流程。3. **配置选项**:运用`curl_easy_setopt()`函数来设定多种参数,例如目标URL、超时时间、重试次数以及数据写入的回调函数等。4. **执行请求**:调用`curl_easy_perform()`函数来实施下载操作。5. **释放资源**:使用`curl_easy_cleanup()`函数来释放已经占用的资源。**获取大型文件时的重要设置**1. **数据写入回调函数**:在处理大型文件下载时,通常不希望一次性将整个文件载入内存。可以配置`CURLOPT_WRITEFUNCTION`选项,指定一个回调函数来处理接收到的数据片段,这样libcurl在接收到数据时调用该函数,使得我们可以按需将数据写入文件或缓冲区。2. **缓冲策略**:可以设定缓冲区的大小(比如,通过`CURLOPT_BUFFERSIZE`),来控制每次接收数据的数量,从而优化内存...
内容概要:本文档整合了《鬼谷子·决篇》与《三略·审权变第三》《差德行第四》三大古代智慧典籍,构建了一套“决策+形势+用人”三位一体的领导力提升体系。通过28天三合实战路径、三维诊断工具、9个实用模板及独特的“身体锚点”仪式,系统解决管理者在决策犹豫、形势误判、人岗错配等方面的痛点。全文涵盖理论溯源、方法论拆解(如三步决策法、审权变四步法、差德行四步法)、历史案例对照(范蠡 vs 项羽)以及跨资源联动建议,形成从认知到实践的完整闭环。; 适合人群:中基层管理者、创业者、职场进阶者,尤其是面临决策困境、环境适应困难或团队用人问题的人群;具备一定管理经验或自我提升意识的个体亦可受益。; 使用场景及目标:① 提升重大事项的决策质量,避免反复纠结与事后后悔;② 增强对外部环境变化的敏感度与应对能力,实现灵活调整;③ 科学评估人才德才素质,实现人岗精准匹配,减少用人失误;④ 构建个人化的决策-应变-用人标准化流程(SOP)。; 阅读建议:建议按照28天路径逐步实践,结合自测表定位短板,优先突破薄弱模块;配套工具模板需实际填写使用,配合身体锚点仪式强化行为记忆;可与“诸葛亮决策术”“立将威信术”等单品联动,全面提升领导力体系。

21,890

社区成员

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

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