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 に答える