跳转问题

WBOY
WBOYOriginal
2016-06-23 13:53:32904browse

一个注册邮件验证的程序,就是用户注册了会发封邮件到用户邮箱,然后用户点击下邮箱中的邮件,key有效则注册成功,写入注册信息,无效则跳转错误页面
在本机localhost测试没问题,到服务器上就出了问题,服务器和本机服务端版本是一样
用户点击邮件验证会跳转到如下页面
链接样式:http://www.haha.net/zhuce.php?key=21_nci34dgjs5guzopl4gi0s62puk9r0o

<?phprequire('shujulianjie.php'); //接入数据库文件date_default_timezone_set('Asia/Shanghai'); //此句用于消除时间差$iipp     = $_SERVER["REMOTE_ADDR"]; //获取ip$times    = date("Y-m-d H:i:s"); //取得?前??//验证key有效性和找出注册信息   $key=$_GET["key"];     $key=addslashes(trim($key));	echo $key;	date_default_timezone_set('Asia/Shanghai');//此句用于消除时间差	$time=time();//当前时间戳	$time=$time-86400;//获取一天之前的时间戳	//找出是否存在或失效	$str10="select  mail from zhuceyanzheng where yanzhengzi='$key' and zhuangtai='0'  and shijiancuo>'$time' " ;     $result10=mysql_query($str10, $con);  //送出查?	$row10=mysql_num_rows($result10);	echo $row10;	if(!$row10)	{//未找到跳转到失败页面    echo'<script language="javascript" type="text/javascript">';     echo 'window.location.href="zhucejieguo.php?zt=0"; ';   echo ' </script>';	exit;	} else {	  //有则写入注册信息   echo'<script language="javascript" type="text/javascript">';     echo 'window.location.href="zhucejieguo.php?zt=1"; ';   echo ' </script>';}mysql_close($con);?>

现在得到的结果是注册信息写入了,但是跳转到了window.location.href="zhucejieguo.php?zt=0,
不知道是什么原因


回复讨论(解决方案)

我感觉你为啥用时间来查找呢?你看你的SQL放到mysql控制台是否能查到数据,然后一步步打印结果排查问题。我感觉问题还是出在SQL上。

我感觉你为啥用时间来查找呢?你看你的SQL放到mysql控制台是否能查到数据,然后一步步打印结果排查问题。我感觉问题还是出在SQL上。


时间是验证key是否过期了
用了 if (!mysql_query($str10, $con))
    {
    die('Error: ' . mysql_error());
    }
没有报错

echo $row10;  看看这个值输出是多少

echo $row10;  看看这个值输出是多少


这个输出是0,
我也觉得奇怪,因为
$str10="select  mail from zhuceyanzheng where yanzhengzi='$key' and zhuangtai='0'  and shijiancuo>'$time' " ; 
这个语句是有符合条件的
而且输出为0,注册信息还写入了,这就是我不理解的地方,输出为0,应该不会写入注册信息才对


echo $row10;  看看这个值输出是多少


这个输出是0,
我也觉得奇怪,因为
$str10="select  mail from zhuceyanzheng where yanzhengzi='$key' and zhuangtai='0'  and shijiancuo>'$time' " ; 
这个语句是有符合条件的
而且输出为0,注册信息还写入了,这就是我不理解的地方,输出为0,应该不会写入注册信息才对
0就说明你那个查询没查到数据啊。

这个语句在本机可以查到数据,不知道为什么到服务器上就不行,本机和服务器,数据库,脚本都是一样的

还有,结果是0,但下面的写入注册信息里面的语句确执行了

    if(!$row10)    {//未找到跳转到失败页面    echo'<script language="javascript" type="text/javascript">';     echo 'window.location.href="zhucejieguo.php?zt=0"; ';   echo ' </script>';     exit;     } else {      //($row10=0,下面的语句会执行)     $str3       = "update zhuceyanzheng  set zhuangtai='1' where mail='$youxiang' "; 	 $result3=mysql_query($str3,$con);   }

怎么可能? var_dump($row10); 看看是什么。


怎么可能? var_dump($row10); 看看是什么。



因为是在邮箱中点击一个链接在到这个页面,这个样子的链接
链接样式:http://www.haha.net/zhuce.php?key=21_nci34dgjs5guzopl4gi0s62puk9r0o
刚刚试了,使用新标签中打开链接,就是正常的,难道是因为这种跳转链接不能在QQ邮箱中直接打开吗

那就单独执行一下你的SQL语句,看看结果吧

那就单独执行一下你的SQL语句,看看结果吧


单独执行了,有用,可以找到数据
、、、、、、、、、、、
刚刚又试了几次,现在的情况是,有时候成功,有时候失败。。。。。。实在是诡异

where yanzhengzi='$key' and zhuangtai='0'  and shijiancuo>'$time' "

明????有匹配,?出完整的sql看看。

估??$time有?。

看看你的sql语句,打印sql

看看你的sql语句,打印sql


打印了,有时候会成功,有时候会失败,1是成功的,0是失败的,打印的语句如下



同样的脚本,有时候成功,有时候失败,实在很难找原因,
我的注册流程,是在邮箱中点击链接,和一般的网站一样,我现在是用QQ邮箱测试,有时候成功,有时候失败,
但是如果在新标签和新窗口打开链接,却都是成功的
而且,即使失败了,也会写入注册信息,这个明显不合理,并且,写入的IP是上海地区的ip,本人在重庆
就是说,成功写入注册信息,ip是我自己的,失败写入注册信息,ip在上海,而且是动态ip
是不是在QQ邮箱跳转的时候有什么变化
注册过程在本地localhost测试,是一点问题没有。。。。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn