使用PHP和MySQL DB构建可跟踪链接

时间:2014-10-03 18:50:07

标签: php mysql email

我有一个电子邮件列表和一个与每封电子邮件关联的个性化PDF(一对一的关系)。我还有一台托管PDF的服务器。我想使用指向我服务器上文件的链接向每个人发送他们的个性化PDF。当我发送链接的人时,我想跟踪他们是否已下载文件。

我建议使用此download.php script(完整代码),因为我可以将我的链接包含在http://yourdomain.com/download.php?email={!email}中,以便在单击它们时,脚本将写入MySQL数据库以跟踪点击的电子邮件地址链接然后提供文件。

download.php脚本

<?php

mysql_connect('localhost', 'username', 'password');
mysql_select_db('dbname');

$sql = "INSERT INTO downloads (email) VALUES ('" . mysql_real_escape_string($_GET['email']) . "')";
mysql_query($sql);

header("Content-type: application/pdf");
readfile("/path/to/thefile.pdf");

?>

我的问题是代码的最后一行readfile("/path/to/thefile.pdf");看起来好像需要编写它包含单个文件的路径,这对我的目的不起作用。我是否正确地阅读了代码,如果是这样,有没有办法根据我的目的修改它?

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题。您必须在服务器上粘贴PDF的路径。例如http://www.youdomain.com/pdfs/october.pdf

避免使用mysql函数并始终使用PDO。

这是你在PDO中的表现方式

$hostname = 'localhost';
$username = 'username';
$password = 'password';

$con = new PDO("mysql:host=$hostname;dbname=dbname", $username, $password);

$user_mail = $_GET['email'];

$sql = "INSERT INTO downloads (email) VALUES (:emailVal)";
$statement = $con_db->prepare($sql);
$statement->execute(array(':emailVal'=> $user_mail));

header("Content-type: application/pdf");
readfile("/path/to/thefile.pdf"); //paste to your PDF on your server