שלום.
אני רוצה להגן על תוכן של תיקייה בשרת. כלומר, אני אחליט למי לתת הורדה לקובץ שנמצא בתיקייה הזו.
נגיד אני רוצה שרק אם לשם משתמש קוראים admin אז הוא יקבל header כזה:
PHP קוד:
header('Content-type: application/mp3');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
readfile($file_name_read);
בניתי 2 קבצי php שאמורים לעזור.
ראשית, פתחתי תיקייהה מחוץ ל html_public בשם abc.
והנה הקודים:
זה הדף שקורא קבצים מתוך התיקייה.
PHP קוד:
<?php
פה תיהיה בדיקה, אם אתה אדמין, התכנית תימשך, אחרת, אתה נשלח לדף הבית.
$dhandle = opendir('/home/bla/abc');
$files = array();
if ($dhandle) {
while (false !== ($fname = readdir($dhandle))) {
if (($fname != '.') && ($fname != '..') &&
($fname != basename($_SERVER['PHP_SELF']))) {
// store the filename
$files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
}
}
closedir($dhandle);
}
foreach( $files as $fname )
{
echo '<a href="get_file.php?file='.$fname.'">'.$fname.'</a><br />';
}
?>
הנה הקוד שאחראי לתת לך הורדה של הקובץ:
PHP קוד:
<?php
$file_name=$_GET['file'];
$file_name_read="files/".$file_name;
header('Content-type: application/mp3');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
readfile($file_name_read);
?>
אבל משום מה, כאשר אני עושה "הצג מקור" בדף שנותן לי את ההורדה אני רואה כזה דבר:
<a href="get_file.php?file=dsd.htm">dsd.htm</a>
ואז מה עשיתי בזה? הוא יכול לשלוח את הלינק למישהו אחר ונגמר הסיפור.
איך אני עושה שהוא יקבל הורדה מבלי לדעת מאיפה היא הגיעה?
אני מיואש כבר.
תודה.