Wie lasse ich einen Download nur per PHP Datei zu?

Einstein-511

Mitglied
Also ich code grade an einem Mitgliederbereich und möchte das nur eingeloggte User diese Datei downloaden dürfen. Außerdem sollte keiner von außen darauf zugreifen dürfen. Wäre ech tnett wen ihr mir helfen würdet :)
 
Leg die Dateien in einem per .htaccess geschuetzten Verzeichnis ab, so kann sie keiner direkt runterladen. Zugriff ist dann nur ueber ein Downloadscript moeglich welches die Dateien ueber das Dateisystem ausliest und weiterreicht.
Da Du nur eingeloggten User den Download erlauben willst arbeitest Du auch im Download-Script, wie wahrscheinlich auch schon im internen Bereich, mit Sessions.
 
Hi,

@Dennis... Könnte ich auf diese Weise auch den Zugriff auf Bilder verwalten?
Mein Problem ich möchte eingeloggten Usern Bilder anzeigen, welche ich mir aus einem Verzeichnis auslese und per GD neu als Thumb mit (c) Vermerk versehen anzeige.

Die eingeloggten User sollen also nur das Bild mit dem Copyrightvermerk sehen können. Das Originalbild, sowie natürlich auch die Bilder anderer sollen sie gar nicht zu sehen bekommen.

Einloggen sollen sie sich auch per php Script nicht per .htaccess.

Ich denke da schon länger drüber nach komme aber irgendwie nicht auf eine sinnvolle Lösung. Hab vor lauter Verzweiflung schon drüber nachgedacht die Bilder in eine DB zu packen :o)

Bin für Tipps echt dankbar!

MfG BD
 
Ist alles machbar.
Das Login braucht auch nicht ueber htaccess stattfinden, das wird nur genutzt um das Verzeichnis vor direkten Zugriff zu schuetzen. Der User-Zugriff findet per PHP-Script statt, somit laeuft das Login wie ueblich ueber Sessions.
PHP umgeht ja den .htaccess-Schutz dadurch dass es direkt ueber das Dateisystem auf die Daten zugreift.
 
Hast du zufällig den .hracces code?

Per Google konnte ich nur diesen hier finden ist der richtig?:

Order allow,deny
Allow from none

Edit:

Scheint anscheinend richtig zu sein ^^"

Wie Downloade ich jetzt diese Datei mittels PHP Script
 
Zuletzt bearbeitet:
Warning: Cannot modify header information - headers already sent by (output started at D:\X\xampp\htdocs\mirm\member\upload.php:1) in D:\X\xampp\htdocs\mirm\member\upload.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at D:\X\xampp\htdocs\mirm\member\upload.php:1) in D:\X\xampp\htdocs\mirm\member\upload.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at D:\X\xampp\htdocs\mirm\member\upload.php:1) in D:\X\xampp\htdocs\mirm\member\upload.php on line 15

PK

?????Îþ6???????????????Upload/PK????¸š6ÝÈÉté‹??h?????verpackung.PNGì½÷7ÜÝ÷Šmô6ˆ^¢ Ñ{ÞÉ(!DmˆÎ(Aô]D„è‰Ñ;‰.ÑE}”qåyžÏ÷þ ÷‡»fYÖŒµæ}v{í×ÞgŸ#VW[•„ˆ ‹D]MI Ûþî'‘?çî ¸1ÁÝ/l/}U¬O£Œ;wopäŸÉca}N^Û?îÞ³¾PÓ†…ð? +4 ëòî£Ðm,,a,¬]k,,‰,,,GîW=),¬ÄßêJò†PÈA[l—‰Q³Õ¯"Óò÷œ^”"n6‚zBwÆ»>~ìÁ'H:™r¤Lµ³“E÷îwöÞж‚‹‘h›‹ŽM?C<èV˜q“PšÆ¢Ÿ%é ¡öD-¿•‚ƒ…7û˜”ö¢¤G.m»£ „ö/ED“í[H|s¾]åÂÒ¯íÚ²¶#J®s»ÚÈâ )þ¾n·Xáþòˆ8DŒø¶Ì‡'ðžI…€Þ…W—¶êzJ8ðó ‘µ¼ZxKV4¨—ždw‹…£v>øéÝ*êiÍ eáTÈ&Šçêü|ˆ\m;{O¼©<8Þý•vÁö~ãÕÕáa±òçv –@oÜPhlGN8Vdf/ >t G¬?Bü+úCfN`}“

Dein script schein nicht zu funktionieren :(
 
Die Ausgabe erfolgt laut Fehlermeldung bereits in der ersten Zeile der Skriptdatei. Was steht denn dort?
 
Dein script schein nicht zu funktionieren :(
Das Script funktioniert schon, Du bekommst ja auch die Daten ausgegeben, wie an dem Haufen Muell unten zu erkennen ist.
Das Problem jedoch ist wahrscheinlich dass Du scheinbar zuvor schon irgendwas ausgibst, und somit der header()-Aufruf fehlschlaegt.
Zeig doch mal wie das Script jetzt bei Dir aussieht.
 
PHP:
<?php

include "checkuser.php";

      $filename='dwn/uploadscript101.zip';
      $kbs=0.5;
      if ((file_exists($filename)) && (is_readable($filename)))
          {
              $dlfile=fopen($filename,'r');
          }
      else
          {
              die('Cannot open file');
          }
      header('Content-Type: application/octet-stream');
      header('Content-Disposition: attachment; filename="'.$filename.'"');
      header('Content-Length: '.filesize($filename));
      while (!feof($dlfile))
          {
              $bytes=1024;
              if ($kbs>0)
                  {
                      $bytes*=$kbs;
                  }
              echo fread($dlfile,$bytes);
              flush();
              if ((!feof($dlfile)) && ($kbs>0))
                  {
				                        sleep(1);
                  }
          }
      fclose($dlfile);
      ?>
 
Zurück