Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数分解不使用“+”字符_Php - Fatal编程技术网

Php 函数分解不使用“+”字符

Php 函数分解不使用“+”字符,php,Php,我正在用PHP创建重置用户密码的表单。 当用户发送重置请求时,它会向邮件发送重置密码的链接。 链接中是domain.com/index.php?link=reset password&code=1_Xzpq+/F64xwZ/oQ/U4TkTQ== 1=用户id Xzpq..=用户密码散列 我需要将UserID和PasswordHash分解为变量 我的代码: function isValidPasswordResetToken($string) { global $sqlConnect;

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

1=用户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==时,Hash中的“+”字符无效。。 当PasswordHash为m7c7Tn67QpI2eI1jLdqOEg==时,它可以正常工作

这是一个机会,以其他方式这样做,这将支持所有的字符?或者我做错了什么

谢谢您的回答。

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

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

<?php

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

请看此处

您对SQL注入持开放态度,应该立即解决此问题。我是唯一一个认为无论密码是否经过哈希处理,公开密码都不好的人?我认为值得一读。@maio290这不是加密密码的脚本。这是唯一一个用于从DB中选择ID+密码\u哈希的脚本,用于标识用户以重置密码。感谢您提供快速解决方案!:最后它起作用了!非常感谢。很高兴我能帮上忙!当然,对于通过$\u GET传入的值,服务器会进行解码,因此很少需要urldecode
Xzpq%2B%2FF64xwZ%2FoQ%2FU4TkTQ%3D%3D 
Xzpq+/F64xwZ/oQ/U4TkTQ==