PHP和MySQL字符串比较失败

时间:2015-02-17 02:50:00

标签: php mysql string comparison

好的,所以我的php代码有一个非常恼人的小问题。基本上我从两个单独的来源中提取两个变量。一个是cookie,另一个来自MySQL数据库。

$data = explode("|", $_COOKIE['login']);
$sql = "SELECT session_id FROM users WHERE username='user1'";
$result = $data->query($sql);
$row = $result->fetch_assoc();

$test1 = $data[0];
$test2 = $row['session_id'];

If($test1 == $test2) {
  // Do some stuff
}
else {
  // Don't do some stuff
}

实际字符串是:

x6vkYu6Ep ^ LM(1Rdm)5Gj5Hj7ilL6FsDL88JC#N @ iTyBUqYgJ48#9Ow%* 2ZdGs1rA8bc)JoCD7dywcZgg7soV0D#!DPR ^ pjQwF#QpBt#HRKe $ JEtQ * 3LhFXsjmkzWNpt

在从以下字符集存储之前,字符串是随机生成的: !1234567890 @#$%^&安培; *()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

for($i = 0; $i < 128; $i++) {
  $string .= $char_set[rand(0, strlen($char_set)-1)];
}
$sql = "UPDATE users SET session_id='$string' WHERE user='user1'";
$data->query($sql);
setcookie('login', $string . "|" . $username);

如果我只是将两个变量设置为等于上面的字符串并进行评估,那么就可以了。另外,如果我同时回显$ data [0]和$ row ['session_id'],将显示整个字符串,并且它们看起来很简陋。

如果我使用基本字符串,如数字或基本单词,if()语句将起作用,所以我猜它是由于特殊字符,但我不知道在过程中它出错了。正如我所说,如果我将两个变量设置为该字符串值,它会进行评估,但是当我从MySQL和cookie中提取时,尽管两个字符串看起来都相同,但它不会进行评估。

有什么想法吗?

0 个答案:

没有答案