从动态网址传递的$ _GET ['']变量中删除“+”符号

时间:2018-04-13 02:08:45

标签: php mysqli get

我正在尝试检查来自动态网址的哈希值和来自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();
}

1 个答案:

答案 0 :(得分:0)

在PHP中,查询字符串参数(例如foo=bar+bat)中的+被替换为空格。您需要URL encode您的查询字符串,将%2B替换为{{1}}才能获得实际的加号。