插入电子邮件后下载文件

时间:2014-10-09 10:48:33

标签: javascript php mysql

我有一个下载脚本。它插入电子邮件后点击数据库下载,然后单击GO按钮,因为我想保存想要从我的网站下载的用户的电子邮件。它工作正常。 但每次下载都需要来自同一用户的电子邮件。

应该是这样的,如果有任何用户在那个时候插入他的电子邮件和下载文件,那么在同一时间段内进行新的下载无需再次提交他的电子邮件。

我的代码是:

    <?php
require"connection.php";
extract($_REQUEST);
$result=mysql_query("select * from archives1 where volume='$volume'") or die (mysql_error());
while($row=mysql_fetch_array($result))
{
    extract($row);
    echo" <table width='456' height='151'  style='table-layout:fixed;'>
           <tr><td height='38'><b>Section:</b></td><td width='334'>$section</td></tr>
           <tr><td height='38'><b>Title:</b></td><td width='334'>$title</td></tr>
           <tr><td height='38'><b>Author:</b></td><td width='334'>$author</td></tr>
           <tr><td height='38'><b>Country:</b></td><td width='334'>$country</td></tr>
    <tr><td height='38'><b>Page Number:</b></td><td width='334'>$pgno</td></tr>";
    echo"</table>";
    echo"<span id='valid_email'>
                <form method='post' action='pdfdownload.php?filename=$name'>
                    <input type='text' name='valid_email' />
                    <input style='display:none;' type='text' name='valid_date' value='".date('d/m/Y')."' />
                    <input id='go' type='submit' name='valid_submit' value='Go' />
                </form>
              </span>
             <br><br>
              <span style='margin-left:430px;'>
                <a href='#?filename=$name' id='click_email'>Full Text(PDF)</a>
             <hr>";}
?>

它获取与卷相关的所有字段。

pdfdownload.php是:

<?php
    if(isset($_POST["valid_submit"]))
    {
        require"connection.php";
        extract($_POST);
        mysql_query("insert into archive_email values('','$valid_email','$valid_date')") or die(mysql_error());
        function output_file($file, $name, $mime_type='')
        {
            if(!is_readable($file)) die('File not found or inaccessible!');
            $size = filesize($file);
            $name = rawurldecode($name);
            $known_mime_types=array(
            "htm" => "text/html",
            "exe" => "application/octet-stream",
            "zip" => "application/zip",
            "doc" => "application/msword",
            "jpg" => "image/jpg",
            "php" => "text/plain",
            "xls" => "application/vnd.ms-excel",
            "ppt" => "application/vnd.ms-powerpoint",
            "gif" => "image/gif",
            "pdf" => "application/pdf",
            "txt" => "text/plain",
            "html"=> "text/html",
            "png" => "image/png",
            "jpeg"=> "image/jpg"
            );
            if($mime_type==''){
                $file_extension = strtolower(substr(strrchr($file,"."),1));
                if(array_key_exists($file_extension, $known_mime_types)){
                    $mime_type=$known_mime_types[$file_extension];
                } else {
                    $mime_type="application/force-download";
                };
            };
            //turn off output buffering to decrease cpu usage
            @ob_end_clean();
            // required for IE, otherwise Content-Disposition may be ignored
            if(ini_get('zlib.output_compression'))
            ini_set('zlib.output_compression', 'Off');
            header('Content-Type: ' . $mime_type);
            header('Content-Disposition: attachment; filename="'.$name.'"');
            header("Content-Transfer-Encoding: binary");
            header('Accept-Ranges: bytes');
            // multipart-download and download resuming support
            if(isset($_SERVER['HTTP_RANGE']))
            {
                list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
                list($range) = explode(",",$range,2);
                list($range, $range_end) = explode("-", $range);
                $range=intval($range);
                if(!$range_end) {
                    $range_end=$size-1;
                } else {
                    $range_end=intval($range_end);
                }
                $new_length = $range_end-$range+1;
                header("HTTP/1.1 206 Partial Content");
                header("Content-Length: $new_length");
                header("Content-Range: bytes $range-$range_end/$size");
            } else {
                $new_length=$size;
                header("Content-Length: ".$size);
            }
            /* Will output the file itself */
            $chunksize = 1*(1024*1024); //you may want to change this
            $bytes_send = 0;
            if ($file = fopen($file, 'r'))
            {

                if(isset($_SERVER['HTTP_RANGE']))
                fseek($file, $range);
                while(!feof($file) &&(!connection_aborted()) && ($bytes_send<$new_length))
                {

                    $buffer = fread($file, $chunksize);
                    echo($buffer);
                    flush();
                    $bytes_send += strlen($buffer);
                }
                fclose($file);
            } else
            //If no permissiion
            die('Error - can not open file.');
            //die
            die();
        }
        //Set the time out
        set_time_limit(0);
        //path to the file
        $file_path='admin_ijrt/gallery/'.$_REQUEST['filename'];
        //Call the download function with file path,file name and file type
        output_file($file_path, ''.$_REQUEST['filename'].'', 'application/pdf');
    }

?>

请帮忙。我不知道。

2 个答案:

答案 0 :(得分:0)

尝试使用会话,然后检查会话变量

答案 1 :(得分:0)

在第一次查询时插入电子邮件后设置Cookie(会话将在用户关闭浏览器后销毁)

检查Cookie是否不存在:

if(!isset($_COOKIE['email'])){
   //check if email already exists or insert email again if you want 
}

继续下载代码....