私は PHP を学ぶプロジェクトに取り組んでいますが、まだ道があることに気づきました。
ユーザーがアクセスしてメーリングリストを作成するための従来のアカウント作成を可能にする基本的なサイトを作成しています。その後、パーソナライズされた定型書簡を作成する電子メールを送信できます。この手紙の最後に、読者がアクセスできるリンク (各人に固有) を含めます。ここで、データベース内の別のテーブルに処理できるようにしたい短いフォームを選択して記入することができます。その間ずっと、誰が何を言ったかを追跡します。
現在、すべてが完全に機能していますが、それが機能する唯一の理由は、メインユーザーとして既に認証されているためであることにほとんど気づきませんでした (テストメールを開いて応答を保存していたとき)。そのため、電子メールを開いてリンクに移動し、Cookie やセッション変数がキャッシュされていないコンピューターでフォームに入力すると、データベースにアクセスできないため保存できません。
私の質問
各人の電子メールに表示される URL の最後には、その人を一意に識別するものの組み合わせで構成される GUID があります。メールの受信者にアカウントを作成させたくないのですが、受信者の応答を処理できるようにする必要があります。
完全なログイン資格情報を持っていない場合でも、データベースへの書き込みアクセスを許可するにはどうすればよいですか? URL に基づいて正当であることはわかっていますが、どうにかして機能させることはできますか?
編集:いくつかのコード
メール内の URL の例を次に示します。
mysite.com/process.php?guid=abcdefghijklmnopqrstuvwxyz
クリックすると、$_GET から GUID を引き出して、GUID に関する情報を調べます。今考えてみると、データベース内のものをすぐに検索できるというのはあまり意味がありませんが、それは別の問題です。フォームに入力し、保存ボタンを押すと、次のようになります。
<?php
drequire("library/database.inc.php");
require("library/check-user.inc.php");
include("library/head1.inc.php"); // Load meta data
include("library/head2.inc.php"); // Load scripts
include("library/header.inc.php"); // Load header
$email = $_POST['email'];
$eqp = $_POST['eqp'];
$month = $_POST['month'];
$sqlDel = "DELETE FROM results WHERE eqp = $eqp AND month = '$month' AND email = '$email'";
mysql_query($sqlDel) or die('Error, could not delete.');
$sqlIns = "INSERT INTO results (month, email, eqp) VALUES ('$month', '$email', $eqp);";
mysql_query($sqlIns) or die('Error, could not insert.');
echo'Success! Keep up the good work!';
?>
しかし、挿入は発生しません。データベースに実際に接続していないためだと思います。