PHP - 加密和解密奇怪的标志

时间:2013-12-05 09:48:41

标签: php encryption

我的剧本遇到了一个非常奇怪的问题。我有这个脚本,将以jQuery作为POST发布。这是发送的URL:

url: 'index.php?i=v&p=k&token=<?php echo($tokenS); ?>&key=<?php echo $secretKey; ?>&token=<?php echo $tokenS; ?>&time=<?php echo $time; ?>&stime=<?php echo $stime; ?>'

在行动时,它看起来像这样:

url: 'index.php?i=v&p=k&token=F53A8D1113D8A158AD89F6A115DCB13174F0E0CC&key=56.50.57.61.106.118.118.114.60.49.49.105.113.113.105.110.103.48.101.113.111.61.51.53.58.56.52.53.56.54.55.53&token=F53A8D1113D8A158AD89F6A115DCB13174F0E0CC&time=15&stime=1386236453'

因此,URL包含我需要验证的所有信息。

当我必须验证key变量时,我的问题就来了。我有这个:

$key = inputFilter($_POST['key']);
            // Need to decrypt the key.
            $key = $this->sDecrypt($_POST['key']);
            /*
             * Need to split the key up..
             * After this, we should have an array looking like this:
             * -> Array ( [0] => ID [1] => URL [2] => TIME) <-
             * ID = id of the advertisement
             * URL = url of the advertisement
             * TIME = time of the advertisment started showing (Should match $stime)
             */
            $key = explode(';',$key);
            $key2 = explode(';',$this->sDecrypt($_SESSION['ad']['key']));

然后,在解密密钥后,我正在验证它:

// Check if session key & post key is the same
            if($key[0] != $key2[0] || $key[1] != $key2[1] || $key[2] != $key2[2])
                die("error"); 

这就是它变得奇怪的地方。我在这里得到die("error");

我尝试打印出来,包含$ key:

    echo "<pre>";
    echo $key[0];
    echo "</pre>";

    echo "<pre>";
    echo $key2[0];
    echo "</pre>";

这导致了这个:

$key[0] = �
$key2[0] = 608

因此,$key2[0]具有正确的值,但$key[0]没有。它包含某种堰角色。

编辑:

var_dump( $_POST['key'] );NULL

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

您的变量将发送到URL中的PHP脚本,这是一个GET方法。 但是,在您的代码中,您使用的是POST变量:

$key = inputFilter($_POST['key']);

然后解码,这将导致不可预测的,当然不需要的行为。 将其更改为:

$key = inputFilter($_GET['key']);

答案 1 :(得分:1)

看起来你的AJAX代码并不是像你说的那样发布值,而是通过GET发送它们。当您构建一个类似于描述的URL时,无论您将请求设置为什么,这些参数都将位于GET数组中。

尝试查看$_POST['key']

,而不是查看$_GET['key']

或者,如果您真的想要,可以将其换成$_REQUEST,这将解决COOKIE的正常优先级 - &gt; GET - &gt; POST