gpt4 book ai didi

php - 函数爆炸不适用于 "+"字符

转载 作者:行者123 更新时间:2023-12-03 19:19:37 26 4
gpt4 key购买 nike

我正在 PHP 中创建表单以重置用户密码。当用户发送重置请求时,它会发送链接到邮件以重置密码。链接中是 domain.com/index.php?link=reset-password&code=1_Xzpq+/F64xwZ/oQ/U4TkTQ==

1 = User_id
Xzpq.. = 用户密码哈希(加盐)

我需要将 UserID 和 PasswordHash 分解为变量

我的代码:

function isValidPasswordResetToken($string) {
global $sqlConnect;
//$string_exp = explode('_', $string);
list($user_id, $password) = explode('_', $string);
//$user_id = $string_exp[0];
//$password = $string_exp[1];
if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
return false;
}
if (empty($password)) {
return false;
}
$query = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`) FROM " . USERS . " WHERE `user_id` = {$user_id} AND `password` = '{$password}' AND `active` = '1' ");
return (Sql_Result($query, 0) == 1) ? true : false;
}

它工作得很好,但是..当PasswordHash像Xzpq+/F64xwZ/oQ/U4TkTQ==(在哈希中是'+'字符)时它不起作用..当PasswordHash为m7c7Tn67QpI2eI1jLdqOEg==时,它可以正常工作..

这是一个以其他方式实现这一点的机会,这将支持所有角色?或者我做错了什么?

感谢您的每一个回答。

最佳答案

浏览器使用 + 来替换 URL 中的空格。

您只需先对其进行编码,然后在需要处理时进行解码即可。

<?php

$x = urlencode('Xzpq+/F64xwZ/oQ/U4TkTQ==');
echo $x . "\n";
echo urldecode($x);

输出:

Xzpq%2B%2FF64xwZ%2FoQ%2FU4TkTQ%3D%3D 
Xzpq+/F64xwZ/oQ/U4TkTQ==

在这里查看 https://3v4l.org/QUeXT

关于php - 函数爆炸不适用于 "+"字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53010442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com