2

我试图在命令的功能中使用一个if功能。elsepreg_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"

我查看了其他几个帖子,但看不出有什么问题,是否可以以这种方式实现这些方法,或者只是缺少一些东西?

4

2 回答 2

5

它应该是:

if ($attempt === '3') {
             ^^^

您分配3$attempt.

甚至更好,因为似乎没有涉及数据库:

$attempt = (int) $_GET['attempt'];

...

if ($attempt === 3) {

编辑:除此之外,您最好使用会话进行这种尝试检查,因为访问者可以轻松地操纵查询字符串。

于 2013-01-02T13:27:08.277 回答
2

以下

if ($attempt = '3')

应该

if ($attempt == '3')
于 2013-01-02T13:28:34.347 回答