早教吧作业答案频道 -->其他-->
关于phplogin问题if($POST['btnLogin']){$cont=newSql('shop');unformcode();$obj=newtool();$username=$obj->StrToDBC(trim($POST['username']));$password=$obj->StrToDBC(md5($POST['password']));$loginhis=trim($POST['loginhis']);$referer=
题目详情
关于php login问题
if($_POST['btnLogin']){
$cont=new Sql('shop');
unformcode();
$obj=new tool();
$username = $obj->StrToDBC(trim($_POST['username']));
$password = $obj->StrToDBC(md5($_POST['password']));
$login_his = trim($_POST['login_his']);
$referer = strip_tags($_POST['referer']);
if(strpos($referer,"login.php")>0 || strpos($referer,"register.php")>0 || empty($referer) || isset($referer)){
$referer="/member.php";
}
在上面代码中,看不懂下面这一段,都不知道指代的是什么.麻烦知道的帮我解析一下,
$login_his = trim($_POST['login_his']);
$referer = strip_tags($_POST['referer']);
if(strpos($referer,"login.php")>0 || strpos($referer,"register.php")>0 || empty($referer) || isset($referer)){
$referer="/member.php";
}
if($_POST['btnLogin']){
$cont=new Sql('shop');
unformcode();
$obj=new tool();
$username = $obj->StrToDBC(trim($_POST['username']));
$password = $obj->StrToDBC(md5($_POST['password']));
$login_his = trim($_POST['login_his']);
$referer = strip_tags($_POST['referer']);
if(strpos($referer,"login.php")>0 || strpos($referer,"register.php")>0 || empty($referer) || isset($referer)){
$referer="/member.php";
}
在上面代码中,看不懂下面这一段,都不知道指代的是什么.麻烦知道的帮我解析一下,
$login_his = trim($_POST['login_his']);
$referer = strip_tags($_POST['referer']);
if(strpos($referer,"login.php")>0 || strpos($referer,"register.php")>0 || empty($referer) || isset($referer)){
$referer="/member.php";
}
▼优质解答
答案和解析
$login_his的值来自$_POST['login_his'],$_POST是系统默认变量,其中的数据是post方式提交的数据组成的数组.trim方法去除字符串两端的空白字符,如空格,tab等
strip_tags是去掉字符串中的html标记
strpos是字符串查找,意思是检查login.php这个字符串在$referer变量的值中出现的位置.整个语句的意思应该是如果$referer不包含login.php且不包含register.php,或者为空的话,则执行里面的语句
第三行的代码写的有毛病.
一般在逻辑判断表达式中,最常用的应该放在前面,或者简单的条件写在前面,这样处理起来更快.
因为前面已经写了$referer = str.,所以! isset($referer)没有任何意义.isset()是用来判断某个变量是否已经定义的.在这段代码中明显$referer已经定义了,所以没必要做这个测试.
empty测试已经涵盖了isset测试,不需要重复的调用.empty是指一个变量的值是未定义,空字符串,长度为0的数组,false或者0等
strpos查找失败我忘记了是返回 -1还是false,但是肯定strpos($referer, 'login.php') > 0是不对的,应该是>=0,而且这个判断不够严格,如果$referer的值是'ulogin.php',那么会得到非预期的结果.
strip_tags是去掉字符串中的html标记
strpos是字符串查找,意思是检查login.php这个字符串在$referer变量的值中出现的位置.整个语句的意思应该是如果$referer不包含login.php且不包含register.php,或者为空的话,则执行里面的语句
第三行的代码写的有毛病.
一般在逻辑判断表达式中,最常用的应该放在前面,或者简单的条件写在前面,这样处理起来更快.
因为前面已经写了$referer = str.,所以! isset($referer)没有任何意义.isset()是用来判断某个变量是否已经定义的.在这段代码中明显$referer已经定义了,所以没必要做这个测试.
empty测试已经涵盖了isset测试,不需要重复的调用.empty是指一个变量的值是未定义,空字符串,长度为0的数组,false或者0等
strpos查找失败我忘记了是返回 -1还是false,但是肯定strpos($referer, 'login.php') > 0是不对的,应该是>=0,而且这个判断不够严格,如果$referer的值是'ulogin.php',那么会得到非预期的结果.
看了 关于phplogin问题if...的网友还看了以下:
等差数列an中如果存在正整数k和L(k不等于L),使得前k项和Sk=k/L,前l项和SL=L/k, 2020-04-27 …
等差数列an中如果存在正整数k和L(k不等于L),使得前k项和Sk=k/L,前l项和SL=L/k, 2020-05-19 …
已知直线l,m和平面α,有下列四个命题:则所有正确命题的序号是————①若l‖m,m属于α,则l‖ 2020-05-20 …
定义点P(x0,y0)到直线l:Ax+By+C=0(A2+B2≠0)的有向距离为d=Ax0+By0 2020-07-09 …
已知A、B为椭圆(x^2)/4+(y^2)/3=1的左右两个顶点,F为椭圆饿右焦点,P为椭圆上异于 2020-07-24 …
AB为圆O的直径,割线L交圆o于M、N,AB垂直于L,并且交圆O于E,BD垂直于L于D,若AB=1 2020-07-31 …
直二面角α-l-β的棱l上有两点A、B,AC属于A,BD属于β,AC垂直于l,BD垂直于l,AB= 2020-08-02 …
关于食物的酸碱性,下列说法正确的是()A.葡萄吃起来是酸的,故它属于酸性食物B.蛋白质在体内经消化后 2020-11-02 …
1)对于化学计量数减小的反应,按原物质的量投入反应物,转化率增大;(2)对于化学计量数不变的反应,按 2020-11-20 …
关于书的名人名言看看吧一日无书,百事荒芜。——陈寿我推荐你到这里看看关于书的名人名言,之所以这里的关 2021-02-03 …