Принудительная загрузка и обновление PHP РЕШЕНИЕ не работает

Конечная цель :Щелкните ссылку на странице 1, в итоге файл будет загружен, и обновите страницу 1. Использование PHP для обслуживания загрузок, которые не находятся в общедоступном html.

Подход:

Страница 1. Ссылка переходит на страницу 2 с получением переменной ссылки на файл, с которым я работаю.

Страница 2. Обновляет соответствующие базы данных SQL информацией, которую необходимо обновить перед обновлением страницы 1. Установите переменную сеанса «firstpass». Установите переменную сеанса «getvariablereference» из переменной get. Перенаправление на страницу 1.

Страница 1. Если установлена ​​переменная сеанса первого прохода. Установите переменную сеанса второго прохода. Сбросить переменную первого прохода. Обновить страницу. При перезагрузке страница будет перестроена с использованием обновленной информации базы данных SQL (, измененной на странице 2. ).

Обновленная страница 1. Если установлена ​​переменная сеанса второго прохода. Запустите последовательность заголовков службы загрузки.

Это страница 1. Я не показываю часть страницы 1, на которой есть начальная ссылка. Так как это не имеет значения.

// REFERSH IF FIRSTPASS IS LIVE
if ($_SESSION["PASS1"] == "YES"){
    $_SESSION["PASS1"] = "no";
    $_SESSION["PASS2"] = "YES";
    echo "<script>document.location.reload();</script>";
    }
if ($_SESSION["PASS2"] == "YES"){
    // Grab reference data from session:
        $id = $_SESSION['passreference'];
                // Serve the file download
                        //First find the file location
                        $query = "SELECT * from rightplace
                              WHERE id = '$id'";
                        $result = mysql_query($query);
                        $row = mysql_fetch_array($result);
                        $filename = $row['file'];
                        $uploader = $row['uploader'];   
                            // Setting up download variables
                                $string1 = "/home/domain/aboveroot/";
                                $string2 = $uploader;
                                $string3 = '/';
                                $string4 = $filename;
                                $file= $string1.$string2.$string3.$string4;
                                $ext = strtolower (end(explode('.', $filename)));
                                //Finding MIME type
                                    if($ext == "pdf" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/pdf');
                                        readfile($file);
                                        }                                   
                                    if($ext == "doc" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/msword');
                                        readfile($file);
                                        }                   
                                    if($ext == "txt" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: text/plain');
                                        readfile($file);
                                        }                   
                                    if($ext == "rtf" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/rtf');
                                        readfile($file);
                                        }
                                    if($ext == "docx" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
                                        readfile($file);
                                        }
                                    if($ext == "pptx" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/vnd.openxmlformats-officedocument.presentationml.presentation');
                                        readfile($file);
                                        }
                                    if($ext == "ppt" && file_exists($file)) {
                                        header("Content-disposition: attachment; filename= '$filename'");
                                        header('Content-type: application/vnd.ms-powerpoint');
                                        readfile($file);
                                        }
                                        }

Скрипт на странице 2 работает правильно. Он обновляет базу данных sql и правильно перенаправляет на главную страницу. Я также проверил, что он устанавливает "$ _SESSION ['passreference'];" правильно, и ничто на странице 1 не отключит его.

Вот и все длинное объяснение ситуации. Я в тупике. Что происходит, как я сказал, страница 2 работает нормально. Затем он переходит на страницу 1, обновляется и больше не загружается. Я знаю, что скрипт загрузки работает и что файлы должны быть загружены (без проверки всей последовательности обновления ).

У меня по сути два вопроса:

  1. Кто-нибудь может определить, что происходит не так?

  2. Может ли кто-нибудь концептуализировать лучший подход?

5
задан user187680 7 August 2012 в 17:27
поделиться