-1

このトピックで見つけたすべてのチュートリアルを読みましたが、どれも私の問題を解決するのに役立ちませんでした. 理由はわかりませんが、私のコードは、ダウンロード ボタンをクリックするたびに、画像ファイルをダウンロードするのではなく、html ファイルを提供するだけです。

HTML:

<a href="getfile.php?id=1">Download Now</a>

PHP:

<?php
$id= $_GET['id'];
$con= mysqli_connect("localhost","root","","dbname");

    if (mysqli_connect_errno($con))
     {
        echo "<script type=\"text/javascript\">alert('Failed To connect to  MySQL: "+"mysqli_connect_error();"+"');</script>";
    }
    else
    {
        $sql = "SELECT * FROM users_files WHERE file_id = ".$id;
        $result = mysql_query($sql);
         $row_cnt = mysqli_num_rows($result);
         echo "<script type=\"text/javascript\">alert('".$row_cnt."');</script>";
        if(!$result || !mysql_num_rows($result)){
            echo "<script type=\"text/javascript\">alert('Invalid file chosen.');</script>";
            //echo '<script language="javascript" type="text/javascript" >';
        //echo ' window.location.assign("ViewMyFiles.php");';
        //echo '</script>';
        mysqli_close($con);
            }
            $curr_file = mysql_fetch_assoc($result);

            $size = $curr_file['file_size'];
            $type = $curr_file['file_type'];
            $name = $curr_file['file_name'];
            $content = $curr_file['file_content'];

            header("Content-length: ".$size."");
            header("Content-type: ".$type."");
            header('Content-Disposition: attachment; filename="'.$name.'"');
            readfile($content);
            $_SESSION['email']=$nemail;
            mysqli_close($con);
    }
?>

上記の PHP ファイルに名前を付けたところgetfile.php、ダウンロード結果がgetfile.htm.

4

1 に答える 1

1

デバッグ!

ヘッダーをコメントアウトして、実際にクライアントに何が届くかを確認してください。次に、それらをコメントインして、ブラウザ開発コンソール (ヘッダー + 応答) でチェックインします。

また、SQL インジェクションに対しても脆弱です。

于 2013-10-17T20:00:33.787 に答える