Php MD5密钥的参数数组

Php MD5密钥的参数数组,php,md5,Php,Md5,我有php脚本: <?php $secretkey='1kaSutSkaDstekSko345QQeVa3ratko1aAKSU2stIHFH44fheo1FhHEfo2oe6fifhkhs'; $parray = array($tagId, $userId); $validate = serialize($parray); $key=md5($validate.$secretkey); ?> <a href="delfollow.php?tagid=<?php

我有php脚本:

<?php   
$secretkey='1kaSutSkaDstekSko345QQeVa3ratko1aAKSU2stIHFH44fheo1FhHEfo2oe6fifhkhs'; 
$parray = array($tagId, $userId);
$validate = serialize($parray);
$key=md5($validate.$secretkey); 
?>
<a href="delfollow.php?tagid=<?php echo $tagId ?>&userid=<?php echo $userId ?>&key=<?php echo $key ?>">Delete</a>

在delfollow.php中:

$userId = $_GET['userid'];
$tagId = $_GET['tagid'];
$key = $_GET['key'];

$secretkey='1kaSutSkaDstekSko345QQeVa3ratko1aAKSU2stIHFH44fheo1FhHEfo2oe6fifhkhs'; 
$parray = array($tagId, $userId);
$validate = serialize($parray);
$nkey=md5($validate.$secretkey); 

echo $key."<br/>";
echo $nkey."<br/>";
$userId=$\u GET['userId'];
$tagId=$_GET['tagId'];
$key=$_GET['key'];
$secretkey='1casutskadsteksko345qqeva3ratko1aaksu2stihfh44fheo1fh2efo6fifhkhs';
$parray=array($tagId,$userId);
$validate=序列化($parray);
$nkey=md5($validate.$secretkey);
echo$key.“
”; 回声$nkey.“
”;

这些钥匙是不同的!为什么。

您可以echo$validate.$secretkey在两个md5()之前,然后比较两个字符串之间的差异。

$\u GET参数默认作为字符串传递,因此serialize将返回不同的字符串。如何解决此问题?将值强制转换为int:
$parray=array((int)$tagId,(int)$userId)是的,序列化数组是不同的:a:2:{i:0;s:3:“169”;i:1;i:6;}a:2:{i:0;s:3:“169;i:1;s:1:“6”}但是为什么呢?@user2783755正如cecilozaur所说的,php将$GET参数视为字符串,并且在第一个代码中将$userid设置为数字