我正在尝试检查来自动态网址的哈希值和来自mysql select语句的哈希值是否等于验证用户的帐户是否在我的网站上注册它们。由动态URL传递给GET变量的哈希中的“+”符号似乎已经丢失并被替换为空格。无论如何我可以编码这样就不会发生这种情况吗?
据我所知,“+”符号是动态网址中使用的有效字符。
这是我的代码
$conn = new mysqli($servername, $un, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT hash FROM login WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$verify = $row["hash"];
}
} else {
echo "0 results";
echo "Error Selecting record: " . $conn->error;
}
echo $username;
echo $hash;
if ($verify == $hash ){
echo "It works!";
$sql = "UPDATE login SET active = 1 WHERE username = '$username'";
}
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo $conn->error;
}
$conn->close();
}
答案 0 :(得分:0)
在PHP中,查询字符串参数(例如foo=bar+bat
)中的+
被替换为空格。您需要URL encode您的查询字符串,将%2B
替换为{{1}}才能获得实际的加号。