PHP-加密和解密奇怪的符号

PHP-加密和解密奇怪的符号,php,encryption,Php,Encryption,我的脚本遇到了一个很奇怪的问题。我有这个脚本,它将与jQuery一起作为帖子发布。这是要发送的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=<?

我的脚本遇到了一个很奇怪的问题。我有这个脚本,它将与jQuery一起作为帖子发布。这是要发送的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包含我需要验证的所有类型的信息

我的问题出现在我必须验证
变量时。我有这个:

$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']));
这就是奇怪的地方。我得到
die(“错误”)这里

我试着打印出$key包含的内容:

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

    echo "<pre>";
    echo $key2[0];
    echo "</pre>";
因此,
$key2[0]
具有正确的值,但是
$key[0]
没有。它包含某种类型的weir字符

编辑:

var_dump($_POST['key'])
NULL


知道为什么吗?

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

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


看起来您的AJAX代码并不像您所说的那样发布值,而是通过GET发送它们。当你建立一个像你描述的URL时,不管你将请求设置成什么,这些参数都会在GET数组中

不要查看
$\u POST['key']
,而是尝试查看
$\u GET['key']


或者,如果您真的愿意,您可以将其交换为
$\u REQUEST
,这将解析COOKIE->GET->POST

的正常优先级。您正在显示URL及其GET参数,然后在代码中引用POST。你可以
var_dump($_POST['key'])并告诉我们其中包含的内容。刚刚编辑了我的问题。变量转储($_POST['key']);NULLTry是否改为在$_GET['key']中查找。您能否验证(例如,使用开发人员控制台)该密钥是否已发布?我非常怀疑这种“加密”的有用性,尤其是在公共网站上发布了这一微不足道的算法之后。即使没有它,大多数聪明人可能也能在几分钟内搞定。仅供参考:这不是严重的安全问题。抱歉@Borniet发布了看似重复的答案,但由于我在评论中引导提问者找到了答案,并被要求将其作为答案发布,我觉得我是有道理的。不用担心@Robbailie似乎我们都看到了相同的问题,但事实上,你也在评论中对此进行了研究。你得到我的选票!
// Check if session key & post key is the same
            if($key[0] != $key2[0] || $key[1] != $key2[1] || $key[2] != $key2[2])
                die("error"); 
    echo "<pre>";
    echo $key[0];
    echo "</pre>";

    echo "<pre>";
    echo $key2[0];
    echo "</pre>";
$key[0] = �
$key2[0] = 608
$key = inputFilter($_POST['key']);
$key = inputFilter($_GET['key']);