2012-04-03 9 views
0

私は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!"; 

    ?> 

画像/ 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]値をユーザーのクリックに基づいて割り当てることができますか?

答えて

1
あなたは、ダウンロードリンクのURLにファイルのIDを埋め込む必要がある

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

**警告:**ハッカーフレンドリーコードが検出されました:P – Starx

+0

はあまりにもこの考えるだ.. BT nvr try .. ..ありがとうalot .. –

0

なぜセッションを使用するようにしたいですか? イメージIDを取得パラメータとして送信し、その後にメールを確認するだけです。 (あなたの中のFETCH_ASSOC中)

display.php

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

ああ、なぜ私はこれを考えることは決して.. thxたくさん.. –

関連する問題