получить вывод из массива сессии в нажатие кнопки php - PullRequest
0 голосов
/ 03 апреля 2012

я делаю загрузку файла в php .. я показал все файлы на странице и загрузил, когда пользователь нажал кнопку загрузки .. имя файла было сохранено в сеансе массива в цикле .. когданажата кнопка загрузки, открывается новая страница downloadfiles.php и загружается файл .. проблема в том, что я могу передать только значение массива сеанса вручную .. как я могу передать его в соответствии с нажатием кнопки пользователем?

в настоящее время я использую $ file = $ _SESSION ['imagefilename'] [0];вручную загрузить первый файл в базу данных .. как я могу автоматически назначить значение [0] в зависимости от клика пользователя?

display.php

<?php 
    //pass session email here
    $email = $_SESSION['email'];
    $image = mysql_query("SELECT * FROM image WHERE email='$email' ");
    $numrows = mysql_num_rows($image);
    if($numrows!=0)
    {
        $_SESSION['imagefilename'] = array();

    while ($row = mysql_fetch_assoc($image))
    {
        //get the image path
        $path = $row['path'];
        //get the image name
        $name = $row['name'];

        $_SESSION['imagefilename'][] = $name;
        $_SESSION['imgpath'] = $path;

            echo "<br>Your image: '$name' <br><img src='$path' width='300' height='200'><br><a href='/images/downloadfiles.php' data-role='button' data-theme='e' target='_self' name='download'>Download</a><br><a href='deleteimg.php' data-role='button' data-theme='e' target='_self'>Delete</a></br>";


    }
    }else
        echo "No image found!";

    ?>

images / downloadfiles.php

<?php
session_start();
    // Define the path to file

    $file = $_SESSION['imagefilename'][0];


   if(!$file)
   {
   // File doesn't exist, output error

   die('File not found');
   }
   else
   {
 // Set headers
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$file");
 header("Content-Type: application/force-download");
 header("Content-Transfer-Encoding: binary");


 // Read the file from disk
 readfile($file);
 }



 ?>

я делаю загрузку файла в php .. я показал весь файл на странице и загрузил, когда пользователь нажал кнопку загрузки .. имя файла было сохранено в сеансе массива в пределахцикл ... когда нажата кнопка загрузки, открывается новая страница downloadfiles.php и загружается файл .. проблема в том, что я могу передать только значение массива сеанса вручную ... как я могу передать его в соответствии с нажатием кнопки пользователем?

в настоящее время я использую $ file = $ _SESSION ['imagefilename'] [0];вручную загрузить первый файл в базу данных .. как я могу автоматически назначить значение [0] на основе клика пользователя?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Вам необходимо вставить идентификатор файла в ссылку для скачивания:

echo "<br>Your[..snip..]<a href='/images/downloadfiles.php?id=$idx' etc...
                                                          ^^^^^^^^

, а затем получить его в сценарии загрузки с помощью:

session_start();

$id = $_GET['id'];

if (!isset($_SESSION['imagefilename'][$id])) {
    die("Invalid file id");
}
0 голосов
/ 03 апреля 2012

Почему вы хотите использовать сеансы? Просто отправьте идентификатор изображения в качестве параметра get и после этого проверьте адрес электронной почты.

display.php (в вашем пока fetch_assoc)

<a href='/images/downloadfiles.php?id=<?php echo $row['id'];?>' data-role='button' data-theme='e' target='_self' name='download'>Download</a>

downloadfiles.php

 $id = isset($_GET['id']) ? $_GET['id'] : null;
 $image = mysql_query('SELECT * FROM image WHERE id="' . $id . '"');
 $numrows = mysql_num_rows($image);
 if($numrows!=0)
 {
   $row = mysql_fetch_assoc($image);
   if ($row['email'] == $_SESSION['email'])
   {
      // Header and readfile
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...