我正在做一个学习 PHP 的项目,我意识到我还有很长的路要走。
我正在创建一个基本站点,该站点允许为用户创建传统帐户以进入并构建电子邮件列表。然后,他们可以发送一封电子邮件,将其个性化并制作成套用信函。在这封信的末尾,我提供了一个链接,读者可以访问该链接(对每个人来说都是唯一的),他们可以在其中选择并填写一个简短的表格,我希望能够将其处理回我数据库中的另一个表中。一直在跟踪谁说了什么。
我现在一切都运行良好,但直到几乎没有意识到它运行的唯一原因是因为我已经被认证为主要用户(当我打开测试电子邮件并保存我的回复时)。因此,当我打开一封电子邮件并转到链接并在没有缓存任何 cookie 或会话变量的计算机上填写表格时,我无法保存,因为我无权访问数据库。
我的问题
每个人的电子邮件中显示的 URL 在末尾都有一个 guid,它由唯一标识该人的事物的组合组成。我真的不想让电子邮件收件人在我这里注册一个帐户,但我需要能够处理他们的回复。
即使他们没有完整的登录凭据,我如何才能让他们访问写入数据库?我知道他们基于他们的 URL 是合法的,这能以某种方式工作吗?
编辑:一些代码
以下是电子邮件中的 URL 示例:
mysite.com/process.php?guid=abcdefghijklmnopqrstuvwxyz
单击后,我将 guid 从 $_GET 中拉出并查找有关它的一些信息。现在我想起来了,我可以立即在数据库中查找内容并没有什么意义,但这是另一个问题。填写完表格并按下保存按钮后,会发生以下情况:
<?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!';
?>
但插入不会发生。我假设这是因为我真的没有与数据库的连接。