2017-06-07 93 views
0

由於我切換到我的演示網站使用哈希密碼,我需要提供一個方法重置被遺忘的密碼。解析來自電子郵件鏈接的密碼重置鍵

我已經得到了頁面和PHP設置發送一個電子郵件與用戶將需要爲了設置新密碼的URL +密鑰。該電子郵件包含要點擊的URL,並且該鏈接將用戶帶到重置密碼頁面。

我有一些麻煩的部分是從網址中提取關鍵信息,以便我可以使用它來比較從重置密碼提交生成的密鑰。當忘記密碼錶單被提交時,數據庫正確插入密鑰。

我假設我需要使用parse_url從鏈接中提取此信息,但我不太確定如何從鏈接中只提取關鍵信息。

我想PHP_URL_QUERY讓我到了URL的正確部分。在這裏,我不太清楚下一步該怎麼做,因爲PHP_URL_QUERY給了我這一切。

鍵=」 $ 2Y $ 10 $ q53hrjswTfXnkxg8QeJysezbBi91t4yJcbV9bH3addOSiotr6kE1

當我真正想要的是這個做的比較:

」。$ 2Y $ 10 $ q53hrjswTfXnkxg8QeJysezbBi91t4yJcbV9bH3addOSiotr6kE1

下面是我得到了現在的代碼....

<?php 
require_once '../php/connect.php'; 

function URL() { 
    $purl = 'http'; 
    if ($_SERVER["SERVER_PORT"] == "80") { 
     $purl .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $purl; 
} 

$key = parse_url($purl, PHP_URL_QUERY) 


$qry = mysqli_query($link, "SELECT id FROM planner WHERE rkey = '$key'"); 
$array = mysqli_fetch_array($qry); 

    } 
} 

我想我只需要一種方法去除其餘部分的key =部分,但我不確定這是否正確。

任何幫助,非常感謝。

+0

爲什麼不使用'$ _GET'? – SLaks

+0

所以像這樣。 htmlspecialchars($ _ GET [「key」])。 ; ? – airider74

+0

絕對不要做你在做什麼。這並不安全。使用本指南:https://paragonie.com/blog/2016/09/untangling-forget-me-knot-secure-account-recovery-made-simple – Edward

回答

0

得到這與以下工作....這只是一個開始。再次感謝大家。

<?php 
require_once '../php/connect.php'; 

$sub = htmlspecialchars($_GET["key"]); 
$ser = "'."; 
$rkey = str_replace($ser,'',$sub); 

$qry = mysqli_query($link, "SELECT id FROM planner WHERE rkey = '$rkey'"); 
$row = mysqli_num_rows($qry); 

echo $row; 

?>