2016-10-27 11 views
0

私は、人の名前とリクエストしたタイムスタンプを含む変数の配列を含む電子メールを送信するコントローラを手に入れました。電子メールはhtmlファイルを送信し、htmlファイルには「ここをクリックしてbla bla blaを削除します」というメッセージが表示されます。ライン。ユーザーがリンクをクリックすると、そのリンクがコントローラに送信され、コントローラから自分の名前がデータベースから削除されます。電子メールに自分の「退会」ボタンを作るにはどうすればいいですか?

今、私はこれをどうやってやろうとしているのかよく分かりません。

Click <a href='https://xxx.xx.xxx.xxx:8000/web/misc/request/delete/<?php echo $data['timestamp']; ?>/<?php echo $data['name']; ?>'> here</a> to delete bla bla bla. 

その後、私のルーティングファイルで、私が持っているでしょう:このような何か私は明らかにでき

Route::get('/web/misc/request/delete/{time}/{name}', '[email protected]'); 

をそれから私はちょうど名前とタイムスタンプ、およびヴィオラと私のデータベースを照会することができます、削除します。

しかし、誰かが簡単にURLの名前やタイムスタンプを編集することはできますか?

これで私はPOSTを使いたいと思っていましたが、このシナリオでどのようにしたらいいのか分かりません。フォームを作成し、いくつかの入力を非表示に設定し、名前とタイムスタンプをそれらの入力値に格納することができます。私はかなりハッキリと聞こえるので、まだ試していない。 セッションを使用してもこの場合はうまくいかないでしょうか? これはクッキーを使用するのに良い時期でしょうか?または、ある種の鍵を使うべきですか?

+0

ユーザーごとのURLに一意のIDが含まれていますが、これは推測するのは不可能または不可能です。または、登録解除の確認メールを送信します。 – deceze

+0

あなたが送信しようとしている電子メールごとに、一意のIDまたはGUIDを作成し、それをあなたのデータベースに入れ、それをURLに添付して、そのエントリをデータベースに照会します。非常にありそうもなく、彼らはランダムにguidを変更し、別のエントリと一致します。 – Chris

+0

私はエキスパートではありませんが、各電子メールアドレスにランダムな文字列を格納する方法と、削除するときにその文字列がURLによって正しく提供されているかどうかを確認する方法はありますか? – lucidbrot

答えて

4

しかし、誰かが簡単にURLの名前やタイムスタンプを編集することはできますか?はい

この

は私を助けていないだろう

POST

を使用したいました。あなたは依然としてクライアントの管理下にあるデータに全面的に依存します。


識別子を使用するために、ランダムな英数字の文字列を生成します。サブスクライブしたユーザーに関する残りのデータをデータベースに格納します。それをURLに含めます。

リクエストが届くと、メールアドレスが登録解除されていることを確認し、データベースの確認文字列と一致するかどうかを確認します。

関連する問題