2017-06-07 7 views
0

デモのウェブサイトでハッシュされたパスワードを使用するように切り替えたので、忘れたパスワードをリセットする方法を提供する必要がありました。電子メールによるウェブリンクのパスワードリセットキーを解析します

新しいパスワードを設定するために必要なURL +キーをメールで送信するためのページと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); 

    } 
} 

私はちょうど残りの部分からキー=部分を取り除く方法が必要だと思うが、それはかなり正しいとは思わない。

ご協力いただきまして誠にありがとうございます。

+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; 

?> 
関連する問題