isset()5.2和5.4之间的差异

时间:2013-07-24 18:05:40

标签: php httprequest isset

我似乎遇到了运行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?

2 个答案:

答案 0 :(得分:4)

似乎你使用的是注册全局变量,它不应该被使用,并且已经被弃用了。从PHP 5.4中删除。

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

答案 1 :(得分: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');
    }
?>