Imr*_*med 2 php regex string string-comparison
我正在尝试比较两个字符串(一个来自我的数据库,另一个来自用户提供)并查看它们是否匹配!我遇到的问题是,他们似乎并不匹配-尽管弦似乎恰好相同?
我的PHP代码如下:
public function Verify($pdo, $id, $token) {
$prepsql = $pdo->prepare("SELECT * FROM Profiles WHERE id = '$id' LIMIT 1");
$prepsql->execute();
$currentrow = $prepsql->fetch();
$current = preg_replace("/[^a-zA-Z0-9]+/", "", $currentrow["token"]);
echo '<p>'.var_dump($current).'</p>';
echo '<p>'.var_dump($token).'</p>';
$token = preg_replace("/[^a-zA-Z0-9]+/", "", $token);
if ($current == null || $current = "") {
return false;
} else {
if (strcmp($token, $current) == 0) {
return true;
} else {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是网页输出:
string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p>string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p><p>Not authenticated</p>
Run Code Online (Sandbox Code Playgroud)
未经过身份验证只是意味着此函数返回false ...
我究竟做错了什么?根据其他类似Stack Overflow答案给出的建议,我使用正则表达式函数基本上只保留字母数字字符,但这没有任何区别?这不是一个修剪问题,因为它不起作用!
任何帮助将非常感激!
谢谢!
这是你的问题:
if ($current == null || $current = "") {
// ^ now `$current` is "", an empty string
Run Code Online (Sandbox Code Playgroud)
您$current
为空字符串分配一个新值.
你可能想要这样的东西:
if ($current == null || $current == "") {
// ^^ now you are comparing
Run Code Online (Sandbox Code Playgroud)