我试图在if
命令的else
函数中使用preg_match
函数。
$month1data
从CURL获取并已经过检查才能正常工作。
以下代码为:
global $attempt;
$attempt = mysql_escape_string($_GET['attempt']);
if (preg_match('/<td colspan=8(.*)<\/table/s', $month1data, $matches)) {
//Content found do stuff here
unset ($ch);
unset ($cache);
unset ($firstmonthdata);
unset ($matches);
} else { // start else preg match
if ($attempt = '3') { //start if attempt = 3
echo 'failed 3 times - showing error';
echo '<script type="text/javascript">
<!--
window.location = "http://www.website.com/error.php?error=2"
//-->
</script>';
} // end if attempt = 3
else { //start if attempt dont = 3
echo 'keep trying for 3 times';
$attempt = $attempt +1;
echo '<script type="text/javascript">
<!--
window.location = "http://www.website.com/page.php?email=' . $email . '&password=' . $password . '&attempt=' . $attempt . '"
//-->
</script>';
}// end if attempt dont 3 else
} // end else preg match
然而,无论何时加载页面,它都会直接指向错误页面:
"http://www.website.com/error.php?error=2"
我看了几篇其他帖子,但看不出有什么问题,是否有可能以这种方式实现这些方法,或者只是缺少某些东西?
答案 0 :(得分:5)
应该是:
if ($attempt === '3') {
^^^
您要将3
分配给$attempt
。
甚至更好,因为似乎没有涉及数据库:
$attempt = (int) $_GET['attempt'];
...
if ($attempt === 3) {
编辑除此之外,您最好使用会话进行此类尝试检查,因为访问者可以轻松操作查询字符串。
答案 1 :(得分:2)
以下
if ($attempt = '3')
应该是
if ($attempt == '3')