2014-10-03 99 views
0

我有一个电子邮件列表和与每封电子邮件相关的个性化PDF(一对一关系)。我也有一台托管PDF的服务器。我想通过指向我的服务器上的文件的链接向每个人发送个性化的PDF。当我发送一个链接的人时,我想跟踪他们是否已经下载了该文件。使用PHP和MySQL数据库构建可跟踪链接

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

你听说过PDO的? – 2014-10-03 18:52:11

回答

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 
+0

我不认为你理解我的问题。我无法粘贴路径,因为每个PDF都有不同的路径。另外,我不确定PDO是什么,但我确信我可以弄明白。 – zgall1 2014-10-03 22:40:47

+0

为什么不使用具有不同文件名的单个路径?这样处理起来很方便。 – Fergoso 2014-10-03 22:42:49

+0

这就是我想要做的。但在这个例子中,最后是文件.pdf,它是单个文件的路径。 – zgall1 2014-10-03 22:52:33