Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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和urlencode问题重置密码_Php_Sql_Passwords_Urlencode_Reset - Fatal编程技术网

使用PHP和urlencode问题重置密码

使用PHP和urlencode问题重置密码,php,sql,passwords,urlencode,reset,Php,Sql,Passwords,Urlencode,Reset,只是想知道如何将urlencode应用到这段代码中。它实际上正在工作,当收到电子邮件时,urlencode似乎不起作用 function reset_password($email) { $query = "DELETE from reset_password where email = $email"; $deletepass = mysql_query($query); $code = substr(base64_encode(crypt('', '')), 0, 32); $que

只是想知道如何将urlencode应用到这段代码中。它实际上正在工作,当收到电子邮件时,urlencode似乎不起作用

function reset_password($email) {
 $query = "DELETE from reset_password where email = $email";
 $deletepass = mysql_query($query);
 $code = substr(base64_encode(crypt('', '')), 0, 32);
 $query2 = "INSERT into reset_password values ($email, '$code', " . time() . ")";
 $insertval = mysql_query($query2);

 $f = "SELECT userEmail from gn_users where email = $email";

$from = "***"; // sender
$f['userEmail']; // recepient

$message =
"From: *** <***>\r\n" . // email headers
"To: {$f['userEmail']} <{$f['userEmail']}>\r\n" . 
'Subject: Reset Password' . "\r\n" .
"\r\n" .
"Hello\r\n" . // email imap_body(imap_stream, msg_number)
"\r\n" .
"A request has been made to reset your example.com web site password.\r\n" .
"\r\n" .
"To complete the request, click on the following link within 48 hours of the transmision of this email and follow the on screen instructions.\r\n" .
"\r\n" .
"index.php?page=reset-password&email=" . urlencode($email) . "&code=" . urlencode($code) . "\r\n" .
"\r\n" .
"Kind regards,\r\n" .
"\r\n" .
"The example.com Web Site";

$to = "$email";
$subject = "Test mail";
$message = "$message";
$from = "***";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";}
功能重置\u密码($email){
$query=“从重置密码中删除,其中email=$email”;
$deletepass=mysql\u query($query);
$code=substr(base64_编码(crypt('',')),0,32);
$query2=“插入重置密码值($email,$code',“.time()”)”;
$insertval=mysql\u查询($query2);
$f=“从gn_用户中选择userEmail,其中email=$email”;
$from=“***”;//发件人
$f['userEmail'];//最近
$message=
“发件人:**\r\n”。//电子邮件标题
“收件人:{$f['userEmail']}\r\n”。
“主题:重置密码”。“\r\n”。
“\r\n”。
“您好\r\n”。//电子邮件imap\U正文(imap\U流,msg\U编号)
“\r\n”。
“已请求重置example.com网站密码。\r\n”。
“\r\n”。
“要完成请求,请在发送此电子邮件后48小时内单击以下链接,然后按照屏幕上的说明进行操作。\r\n”。
“\r\n”。
“index.php?page=reset password&email=“.urlencode($email)。”&code=“.urlencode($code)。”\r\n”。
“\r\n”。
“亲切问候,\r\n”。
“\r\n”。
“example.com网站”;
$to=“$email”;
$subject=“测试邮件”;
$message=“$message”;
$from=“***”;
$headers=“From:”.$From;
邮件($to、$subject、$message、$headers);
回显“已发送邮件”。;}

我将尝试用一些技巧帮助您自己编写一个,而不必依赖那些糟糕的代码

您需要将任务分解为多个小规模、易于完成的任务

我们开始:

  • 用户需要一个页面来请求密码重置。它是一个带有电子邮件字段(和/或用户名)的表单
  • 我们有用户电子邮件,如果它存在,我们需要生成一个无法猜测的重置密码链接,这样不是每个人都可以重置某人的密码
  • 因此,您需要为此请求生成一个唯一的哈希,一个选项是
    uniqid()
    ,但这里有很多选项。因此,您生成的链接如下所示:
    http://test.com/reset.php?uid=443&hash=33rr3344rree22
    。这真的无法猜测,因为您需要知道用户id和has。但为了确保,我们会让它在一小时或一天内过期
  • 下一步,我们将确保这一联系能够发挥作用。我们必须为密码重置请求创建一个包含以下列的表:
    id
    email
    hash
    date\u added
    ,并插入它(日期可以是
    TIMESTAMP
    ,默认值为
    CURRENT\u TIMESTAMP
  • 现在是发送电子邮件的时候了。你可以添加任何你想要的文本,只要你提到之前生成的url
  • 现在用户点击链接。获取用户id和散列,并检查是否存在这样的条目。如果是,并且请求的时间不超过1天,我们将生成一个新密码,更新
    users
    表,并向他发送一封确认邮件
  • 这是可选的,但建议使用。创建一个cron作业,用于清除超过1天的条目的密码重置请求表

  • 这些步骤中的每一步都相当容易完成,或者你可以在网上找到很多关于它们的信息。如果你花时间去理解每一个步骤,正确地清理每一件事,并按书办事,你会学到很多东西。

    你有一个SQL注入漏洞。
    $code=substr(base64_encode(crypt(“”),0,32)。。。哇@Slaks您有多个SQL注入漏洞。因此,问题可能出在
    index.php
    上,而不是这段代码?好吧,除了危险的数据库处理,那就是.Jee,忘记那个教程,找另一个。讨厌这种教人们如何编写糟糕、无格式和任何攻击类型易受攻击的代码的教程……投票赞成“你需要将任务分解为多个小规模、易于执行的任务”。这样的分解答案让学习者更容易掌握这一过程!