允许访问MySQL数据库而无需传统的身份验证 - PHP

时间:2012-05-27 05:58:25

标签: php mysql html database database-connection

我正在开发一个学习PHP的项目,我意识到我还有很长的路要走。

我正在创建一个基本网站,允许用户创建传统帐户并进入电子邮件列表。然后,他们可以发送一封个性化的电子邮件并制作一份套用信函。在这封信的最后,我提供了一个读者可以访问的链接(每个人都有的),他们可以选择并填写一个简短的表格,我希望能够将其处理回我数据库中的另一个表格。一直跟踪谁说了什么。

我现在一切都工作正常,但我没有意识到它的工作唯一原因是因为我已经被认证为主要用户(当我打开测试电子邮件并保存我的回复时)。因此,当我打开电子邮件并转到链接并在没有缓存任何cookie或会话变量的计算机上填写表单时,我无法保存,因为我无法访问数据库。

我的问题

每个人的电子邮件中显示的网址最后都有一个guid,它由一组唯一标识该人的内容组成。我真的不想让电子邮件收件人与我建立帐户,但我需要能够处理他们的回复。

即使他们没有完整的登录凭据,我怎样才能授予他们写入数据库的权限?我知道根据他们的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!';
 ?>

但插入不会发生。我假设这是因为我真的没有连接到数据库。

1 个答案:

答案 0 :(得分:1)

您需要发布一些代码,但作为伪代码回答

function post_for_user_to_write($special_user_ID_in_email)
{
       if ($special_user_ID_in_email == valid_special_ID())
       {
              // Connect to database
              // Post data to database
       }
}