php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2006, 21:35   #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 193
Zangelo
Standard String als Datei speichern

Hallo,
ich will Daten zum Download anbieten, möchte aber nicht, dass die Datei auf anderen Seiten zum Download angeboten wird, und dies von meinem Server.

Ich hab mich ein bisschen schlau gemacht, und bin zu der Lösung gekommen, dass es vielleicht recht gut wäre, die Datei mit file_get_contents in einen String zu laden.

Das ist einfach, jetzt möcht ich den String aber speichern und weis nicht wie.

Ich hab lösungen gefunden, die gefallen mir aber nicht, weil die Datei zuerst erstellt wird.

Wenn ich die Datei jedes mal vor dem Download neu erstellen lasse, wird das wohl den Server recht beanspruchen.

Kann ich die Datei nicht einfach auf dem PC des Users erstellen lassen, und den Inhalt über PHP von der ursprungsdatei laden lassen?

Oder wie kann ich die Datei vor Trafficklau schützen?
__________________

www.das-forum.us Das Forum dazu
Zangelo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.08.2006, 08:19   #2 (permalink)
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 245
stefanjann
Standard

Hallo,

zuersteinmal kannst du auf dem PC des Users nichts machen. Du hast PHP und somit nur die Aktionen auf dem Server in der Hand. Du kannst nur bestimmen welche Daten gesendet werden. Der Rest ist Browsersache und liegt (mit PHP) nicht in deiner Hand.

Zum zweiten ist es so, dass das Internet öffentlich ist und somit jeder zumindest den Link auf deiner Seite posten kann, genauso wie du es machst. Da ist es auch egal, ob du deine Anfrage mit GET oder POST machst, den original HTML-Quellcode von deiner Seite kann man immer nachbauen. Kurz: Was du öffentlich anbietest kann immer jeder laden, egal von wo aus!

Wenn der Download nur von deiner Seite aus funktionieren soll, dann könntest du z.B. eine Benutzeranmeldung abauen, und nur wer angemeldet ist kann sich die Datei herunterladen. Schreibe eine PHP-Datei die dir prüft ob eine Anmeldung vorliegt, wenn ja, öffne die Originaldatei, sende die passenden Header und leite die Originaldatei dann 1 zu 1 blos weiter. Eine andere Seite wird dann den Link von deinem Server nicht mehr anbieten, da die Benutzerverwaltung von der fremden Seite nicht umgangen werden kann.

Um eine Datei nur weiterzuleiten findest du einige Code-Beispiel hier im Board über die Suche und auch die Suchmaschine deiner Wahl kann dir schnell weiterhelfen.
Im PHP-Handbuch würde ich dir das Kapitel über header und in der PHP-FAQ das Kapitel über Downloads empfehlen.

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 09.08.2006, 09:12   #3 (permalink)
Gast
 
Beiträge: n/a
Standard

Dafür braucht man nach meiner Meinugn keine Benutzerverwaltung.
Könnte doch einfach wo der Button zum download ist ein Code ausgeben. (CAPTCHA)
Wo 4 Buchstaben in einem Bild drin sind und man muss die 4 Buchstaben in ein Feld eintragen. Das vergleicht man dann mit der Session bevor man den download startet. So bekommt man die User zumidest auf die eigene Seite.
 
Alt 09.08.2006, 09:55   #4 (permalink)
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 245
stefanjann
Standard

Den Unsinn von CAPTCHA kann ich nicht oft genug betonen. Ist vielleicht nur meine Meinung, aber im Internet gibt es auch viele Leute die nicht sehen können und sich Internetseiten vorlesen lassen über Vorlesebrowser und Vorlesehilfen. Solche Leute werden über CAPTCHA zu 100% ausgeschlossen, oder erzeugst du evtl noch eine MP3-Datei mit den vorlegesenen Buchstaben? Wahrscheinlich nicht. Ich arbeite momentan an so einer Lösung und das ist nicht ganz einfach!

Die Frage ist für mich eher, was in der Datei steht, damit sie von fremden Seiten nicht gelinkt werden darf?!?

Aber zum Thema zurück.
Wenn man keine Benutzerverwaltung möchte, kann man auf seiner Seite in eine Session ein "OK für Download" schreiben. Wenn die Datei heruntergeladen werden soll muß nur geprüft werden, ob das "OK für download" vorhanden ist. Wenn ja, gib die Datei, wenn nein, dann wehr dich!

Da müsste dann niemand einen Code eingeben und in die Session kann keine andere Seite reinschreiben.

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 09.08.2006, 11:03   #5 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von stefanjann
Den Unsinn von CAPTCHA kann ich nicht oft genug betonen. Ist vielleicht nur meine Meinung
An diesem Thema scheiden sich nunmal die Geister und was für einen downlaod er anbietet hat uns Zangelo ja nicht verraten er wollte nur Möglichkeiten wissen die er nutzen kann und diese zählt genauso dazu wie Deine Benutzerverwaltung.

Zitat:
Zitat von stefanjann
Wenn man keine Benutzerverwaltung möchte, kann man auf seiner Seite in eine Session ein "OK für Download" schreiben. Wenn die Datei heruntergeladen werden soll muß nur geprüft werden, ob das "OK für download" vorhanden ist. Wenn ja, gib die Datei, wenn nein, dann wehr dich!
Ist in meiner Lösung ja enthalten gewesen die Session dafür zu nutzen das wäre dann noch eine einfachere Lösung

Damit haben wir ja 3 mögliche Lösungen zusammen entscheiden muss Zangelo es selber was er nutzt.

Zitat:
Zitat von stefanjann
in die Session kann keine andere Seite reinschreiben
Bist Du dir da 100% sicher??? Noch nie was von Sessionmanipulationstechniken gehört ??!!
 
Alt 09.08.2006, 13:13   #6 (permalink)
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 245
stefanjann
Standard

Sessions? Sind immer eine zweischneidige Sache, aber doch relativ sicher, wenn man sich ordentlich damit beschäftigt und nicht nur den Standard-"Klatsch" nimmt. Klar, wer irgendwas manipulieren will und sich die Zeit nimmt und die Arbeit macht, der kann alles irgendwie manipulieren. Aber das Thema wurde ja schon oft im Forum diskutiert und ist auch nicht ganz Bestandteil dieses Threads.

@Zangelo: Mich würde langsam ein Lebenszeichen deinerseits freuen. Welchen Weg schlägst du jetzt ein? Oder hast du eine andere Lösung für dein Problem gefunden?
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 09.08.2006, 18:20   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 193
Zangelo
Standard

Hallo,
ich möchte gerne einen art downloadservice anbieten, user können ihre daten hochladen, und den link versenden.
Dann können es andere Leute wieder runterladen.

Ich hab mich mit sesions noch nie beschäftigt, aber das mit dem Bild find ich nicht so toll, und das mit dem Anmelden auch nicht.

angenommen dies ist meine datei: http://server.de/file.txt.

Der User kommt auf die Seite, und seine IP bekommt dann durch die session die zusage.
dann sieht er den Link, und läd die datei runter.

Er kann den Link doch auch kopiern und im Forum anbieten, so hab ich das zumnindest verstanden:
Ich kann nur beeinflussen, was der user darf, also downloaden.
aber wenn er den Link hat, hat das ja wieder nichts mit php zu tun.
__________________

www.das-forum.us Das Forum dazu
Zangelo ist offline  
Alt 09.08.2006, 18:29   #8 (permalink)
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.679
PHP-Kenntnisse:
Fortgeschritten
agrajag befindet sich auf einem aufstrebenden Ast
Standard

Lege die Datei in ein Verzeichnis das über HTTP nicht erreichbar ist und Schleife die Datei mit PHP druch:

http://www.php-faq.de/q/q-datei-download.html
__________________
GAGA, GOGO, TRALAFITTI!
agrajag ist offline  
Alt 09.08.2006, 21:42   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 193
Zangelo
Standard

Hi,
die letzte lösung gefällt mir sehr gut.
Ich hab mir das Script stark vereinfacht:

PHP-Code:
$save_as_name "neuer dateiname";
header("Content-Disposition: attachment; filename=\"$save_as_name\"");
readfile("urdatei"); 
Angenommen mein erreichbarer HTTP ordner ist: httpdocs, geh ich dann ein ordner zurück (../) und dann in den ordner cgi-bin.

Dort erstelle ich ein Ordner download.
Da sind meine Dateien drin, und die trag ich dann in das Script ein.
Das geht gut, die Quelle der datei ist dann domain/ordner/phpdatei
Der name ist auch richtig.

So jetzt möchte ich aber die Dateien via PHP in den Ordner kopieren.
Das geht leider nicht, also
PHP-Code:
copy ("test.rar""../cgi-bin/download/test.rar"); 
PHP mein, es habe nur in den Ordnern httpdocs + tmp zugriff (glaub das war es).

In der php.ini fand ich nichts wo ich die Pfade angeben konnte, wo ich cgi-bin eintragen hätte können.

CHMOD = 777
__________________

www.das-forum.us Das Forum dazu
Zangelo ist offline  
Alt 10.08.2006, 09:43   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von Zangelo
So jetzt möchte ich aber die Dateien via PHP in den Ordner kopieren.
Das geht leider nicht, also
PHP-Code:
copy ("test.rar""../cgi-bin/download/test.rar"); 
PHP mein, es habe nur in den Ordnern httpdocs + tmp zugriff (glaub das war es).
Und das wird PHP dir sicherlich auch etwas ausführlicher mitteilen. Also bitte dann auch die richtige Fehlermeldung.
xabbuh ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Output einer Datei in einen String speichern christoph_999 PHP Tipps 2008 5 24.07.2008 18:11
String aus einer Seite in Variable speichern KimKaye PHP Tipps 2008 10 14.05.2008 09:57
Quellcode einer dynamischen Seite kopieren und als Datei speichern Lothar PHP Tipps 2008 15 05.05.2008 23:32
Datei speichern bei MIR Uratuso PHP Tipps 2008 2 15.02.2008 19:19
Datei erstellen und Speichern Unter andrew22 PHP Tipps 2006 3 05.10.2006 17:14
HTML Datei einlesen und Teile in Variablen speichern FoXyLiOn PHP Tipps 2006 5 26.03.2006 17:14
Datei Temporär speichern um später "richtig" speic PHP Tipps 2005-2 3 05.09.2005 20:42
datei lesen string verarbeiten und wieder abspeichern PHP Tipps 2005-2 17 22.06.2005 16:02
Beliebige Datei in DB speichern und wieder auslesen Datenbanken 7 21.03.2005 16:00
[Erledigt] Mehrere Beiträge in txt Datei speichern PHP Tipps 2005 13 20.03.2005 13:18
Text in datei ersetzen und dann wieder speichern Ypsillon PHP Tipps 2005 2 19.02.2005 15:26
Daten von php in Datei wie am besten Speichern ? PHP Tipps 2005 6 09.02.2005 16:48
String suchen und tauschen PHP Tipps 2005 13 08.01.2005 22:00
TXT Datei Öffnen, lesen, beschreiben, speichern maximus PHP Tipps 2004-2 1 28.11.2004 19:15
daten in einer text datei speichern kain PHP Tipps 2004 12 25.11.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
\copy\ \http ordner\

Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.