0

我似乎遇到了一个问题,即运行 PHP 5.2 的服务器可以正常运行以下代码。

<?php

if (isset($mobile , $email , $key , $srcKey) && $srcKey === 'test') {
    echo(sha1(($mobile.$email.$key)));
}
else {
    die('Invalid Values');
}

?>

当以下请求发布到脚本时,我的 5.2 服务器上一切正常:

http://www.test.com/php/script.php?email=caiger01%40hotmail.co.uk&mobile=07446337910&key=xpLOlsGyZq2NM4eYPUVHn8EJ9ahVfj9O&srcKey=test

但是在 PHP 5.4 上,似乎 isset 语句返回为 false 无论如何?

4

2 回答 2

4

似乎您正在使用寄存器全局变量,它不应该被使用并且已被弃用并从 PHP 5.4 中删除。

http://php.net/manual/en/security.globals.php

于 2013-07-24T18:07:10.887 回答
1

PHP 5.4 没有为您创建这些变量的register_globals 。

编写此代码的正确方法是:

<?php
    if (isset($_GET['mobile'] , $_GET['email'] , $_GET['key'] , $_GET['srcKey']) && $_GET['srcKey'] === 'test') {
        echo(sha1(($_GET['mobile'].$_GET['email'].$_GET['key'])));
    } else {
        die('Invalid Values');
    }
?>
于 2013-07-24T18:09:15.927 回答