关于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 =

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 23:45:12
关于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 =

关于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 =
关于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";
}

关于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 =
$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',那么会得到非预期的结果.