=o-n-e= Geschrieben 30. September 2008 Geschrieben 30. September 2008 Hallo, ich habe eine frage und zwar möchte ich zb. auf meiner Homepage eine datei zum download bereitsstellen (fotos.rar) nun soll aber jeder besucher der die datei runterladen möchte eine züfällige download quelle bekommen. sagen wir mal ich hätte 5 dowload quellen und jeder neue besucher würde durch zufall ein andere quelle bekommen. wie kann ich das realisieren? ich hab mir gedacht 5 html seiten zumachen mit jeweils einer weiterleitung zu einer quelle und per php eine zufalls abfrage zu starten?! vielen dank schonmal Zitieren
geloescht_JesterDay Geschrieben 30. September 2008 Geschrieben 30. September 2008 Du machst eine php-Seite mit Weiterleitung zur Downloadquelle und eine Liste mit verschiedenen Quellen. Dann ermittelst du durch Zufall eine Quelle und die wird in der Seite angezeigt. Ganz grob: // Quellliste $liste = array("server1/photos.rar", "server2/photos.rar", "server3/photos.rar"); // Zufallsquelle ermitteln $index = rand(0, 2); //*** Ausgabe echo "Zum Download klicken Sie bitte <a href=\".$liste[$index]."\">hier</a>"; [/PHP] Zitieren
=o-n-e= Geschrieben 1. Oktober 2008 Autor Geschrieben 1. Oktober 2008 Vielen dank ... aber ich habe noch eine frage und zwar, wenn ich mehrere dateien bereitstellen möchte beispiel photos1, photos2 usw.... kann ich das alles in eine php datei packen oder lieber einzelne machen? Zitieren
=o-n-e= Geschrieben 6. Oktober 2008 Autor Geschrieben 6. Oktober 2008 ich bekomme immer dieses Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/fotos.php on line 15 Zitieren
Amstelchen Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 na dann zeig mal zeile 15? :beagolisc s'Amstel Zitieren
geloescht_JesterDay Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 kann ich das alles in eine php datei packen oder lieber einzelne machen? Hmm, das kommt ganz darauf an ob gutes Wetter ist. Ernsthaft: Das kommt darauf an wie du es gerne hättest und wie deine Umgebung ist etc. Zitieren
=o-n-e= Geschrieben 6. Oktober 2008 Autor Geschrieben 6. Oktober 2008 programmieren ist aber auch komplex ;(. ich mach das nun einzeln hab ich mir überlegt. Zeile 15: echo "Zum Download klicken Sie bitte "<a href=\".$liste[$index].">hier</a>; Zitieren
Crash2001 Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 (bearbeitet) Falls die Anführungszeichen nicht mit zum Link gehören sollen, müsste das so lauten: echo "Zum Download klicken Sie bitte \"<a href=\"$liste[$index]\">hier</a>\""; //bzw in anderer Schreibweise so: echo 'Zum Download klicken Sie bitte "<a href="'.$liste[$index].'">hier</a>"'; [/PHP] Wenn du das was ausgegeben werden soll mit " " umfasst, dann musst du bestimmte Zeichen, wie z.B. alle weiteren ", die als Text ausgegeben werden sollen, mit einem \ davor maskieren. Wenn du einfache Anführungszeichen stattdessen benutzt, kannst du die " einfach so benutzen, musst jedoch die Variabel ausserhalb der ' ' haben, da diese sonst so ausgegeben wird wie es dort steht und nicht interpretiert wird. Falls die Anführungszeichen zum Link mit dazu gehören sollen, dann wäre das [PHP] echo "Zum Download klicken Sie bitte <a href=\"$liste[$index]\">\"hier\"</a>"; //bzw in anderer Schreibweise so: echo 'Zum Download klicken Sie bitte <a href="'.$liste[$index].'">"hier"</a>'; Wenn du " " benutzt statt ' ' kannst du die Variable zwar auch statt direkt im Text "auslagern" mit dem Punkt, musst du aber nicht, da es bei doppelten Anführungszeichen interpretiert wird. Um mehrere Dateien damit verwenden zu können, musst du doch nur ein neues Array hinzufügen und halt das entsprechende Array dann nehmen. // Quellliste $liste1 = array("server1/photos.rar", "server2/photos.rar", "server3/photos.rar"); $liste2 = array("server1/foo.rar", "server2/foo.rar", "server3/foo.rar"); // Zufallsquelle ermitteln $index = rand(0, 2); //*** Ausgabe echo "Zum Download von photos.rar klicken Sie bitte <a href=\"$liste1[$index]\">hier</a><br>"; //<-- Datei 1 echo "Zum Download von foo.rar klicken Sie bitte <a href=\".$liste2[$index]\">hier</a><br>"; //<-- Datei 2 [/PHP] P.S.: Wenn du das schon als kompliziert empfindest, dann viel Spass bei komplexeren Sachen. Bearbeitet 6. Oktober 2008 von Crash2001 Zitieren
Amstelchen Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 übrigens hätte man bei verwendung der -tags hier im forum auch schnell gesehen, dass HTML- und PHP-notierungen fehlerhaft getrennt sind s'Amstel Zitieren
geloescht_JesterDay Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 Falls die Anführungszeichen nicht mit zum Link gehören sollen, müsste das so lauten: Ich glaube mit Arrays funktioniert die auflösung von Variablen in "-Strings aber nicht. Also echo "$bla"; geht. echo "$bla[0]"; wirft einen Fehler AFAIK. Das müsste dann glaube ich echo "{$bla[0]}"; geschrieben werden, aber bei Arrays hab ich immer die Verkettung genommen Zitieren
=o-n-e= Geschrieben 7. Oktober 2008 Autor Geschrieben 7. Oktober 2008 Falls die Anführungszeichen nicht mit zum Link gehören sollen, müsste das so lauten: echo "Zum Download klicken Sie bitte \"<a href=\"$liste[$index]\">hier</a>\""; //bzw in anderer Schreibweise so: echo 'Zum Download klicken Sie bitte "<a href="'.$liste[$index].'">hier</a>"'; [/PHP] Wenn du das was ausgegeben werden soll mit " " umfasst, dann musst du bestimmte Zeichen, wie z.B. alle weiteren ", die als Text ausgegeben werden sollen, mit einem \ davor maskieren. Wenn du einfache Anführungszeichen stattdessen benutzt, kannst du die " einfach so benutzen, musst jedoch die Variabel ausserhalb der ' ' haben, da diese sonst so ausgegeben wird wie es dort steht und nicht interpretiert wird. Falls die Anführungszeichen zum Link mit dazu gehören sollen, dann wäre das [PHP] echo "Zum Download klicken Sie bitte <a href=\"$liste[$index]\">\"hier\"</a>"; //bzw in anderer Schreibweise so: echo 'Zum Download klicken Sie bitte <a href="'.$liste[$index].'">"hier"</a>'; Wenn du " " benutzt statt ' ' kannst du die Variable zwar auch statt direkt im Text "auslagern" mit dem Punkt, musst du aber nicht, da es bei doppelten Anführungszeichen interpretiert wird. Um mehrere Dateien damit verwenden zu können, musst du doch nur ein neues Array hinzufügen und halt das entsprechende Array dann nehmen. // Quellliste $liste1 = array("server1/photos.rar", "server2/photos.rar", "server3/photos.rar"); $liste2 = array("server1/foo.rar", "server2/foo.rar", "server3/foo.rar"); // Zufallsquelle ermitteln $index = rand(0, 2); //*** Ausgabe echo "Zum Download von photos.rar klicken Sie bitte <a href=\"$liste1[$index]\">hier</a><br>"; //<-- Datei 1 echo "Zum Download von foo.rar klicken Sie bitte <a href=\".$liste2[$index]\">hier</a><br>"; //<-- Datei 2 [/PHP] P.S.: Wenn du das schon als kompliziert empfindest, dann viel Spass bei komplexeren Sachen. Mir gefällt das 2te mit mehreren dateien auch ganz gut. mal mein beispiel: ich habe datei 1 datei 2 datei 3 datei 4 datei 5 datei 6 nun würde man beim 2ten beispiel alle sehen (bitte klicken sie hier) das wird trotzdem ausgegeben obwohl ich nur datei1 möchte!? kann ich das so lösen wenn ich auf datei 1 klicke in der weiterleitung auch nur diese sehe? ich hoffe ihr wisst was ich meine?! Zitieren
Crash2001 Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 Du hast ja da bisher nirgends ausgewählt, welche Datei du willst, sondern das ist quasi nur die Übersicht. Klar kannst du das auch so machen, dass du eine Auswahl machst und wenn man da auf Datei1 klickt, man weitergeleitet wird auf eine neue Seite, wo dann der Link zum Download erscheint, oder bei der der Download automatisch startet. Wenn du das direkt auf der Seite ohne Reload haben willst, musst du z.B. mit JavaScript arbeiten, oder halt eine andere Sprache nutzen, die clientseitig ausgeführt wird. Stichwort wäre hier z.B. AJAX oder WEB2.0 Zitieren
=o-n-e= Geschrieben 8. Oktober 2008 Autor Geschrieben 8. Oktober 2008 Okay, erstma vielen dank für eure hilfe, ich bin nur schon recht weit ein problem habe ich aber nun und zwar wenn ich auf download klicke schreibt es es so!? http://192.168.234.12/page/192.168.1.21\photos.rar es sollte aber so werden \\192.168.1.21\photos.rar er merkt sich ständig das http://192.168.234.12/page ? wie bekomme ich das weg? Zitieren
geloescht_JesterDay Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 es sollte aber so werden \\192.168.1.21\photos.rar Das ist aber nur die Windows-Version der Angabe. Wenn du dir URLs ansiehst, wirst du merken dass es da immer andersrum ist. Deswegen setzt der Browser eigentlich immer die Links mit / um. Bei Windows funktioniert aber auch ein file://pfad/zum/file. Wieso soll es bei dir andersrum ausgegeben werden? Nachtrag: Achso, du hast ja 2mal den Server drin. Das wird daherkommen, dass der Browser den Link als relativ erkennt und deswegen die absolute URL ergänzt. Ohne Angabe nimmt er die vom Server, du kannst das aber auch mit BaseURL (oder so) festlegen. Zitieren
Crash2001 Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 Poste doch mal hier rein, was du da geschrieben hast. Zitieren
=o-n-e= Geschrieben 8. Oktober 2008 Autor Geschrieben 8. Oktober 2008 (bearbeitet) mh?! ich habs nun mal so versucht aber das funktionier nicht echo "Zum Download klicken Sie bitte <a href=\"$liste1[$index]\">hier target="_blank"></a><br>"; und die liste ist so: $liste10 = array("192.168.1.21\fotos.rar", "192.168.1.22\fotos.rar"); Bearbeitet 8. Oktober 2008 von =o-n-e= Zitieren
Crash2001 Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 (bearbeitet) Hmmm... einmal $liste10 und einmal $liste1[$index] ? :confused: Wie du das gemacht hast, würde dir ja auch nur beim Klick darauf ein neues Fenster öffnen. Läuft auf dem zweiten und dritten Rechner (ist ja nicht der lokale, wo die Files drauf liegen) denn überhaupt ein Webserver? Und 192.168.1.21\fotos.rar ist eine Angabe, die schon mal gar nicht gehen kann. Da fehlt Protokolltyp davor und so nimmt er an, dass das ein verzeichnis vom Document_Root aus wäre. Du brauchst den Pfad vom Document_Root des Webserver aus auf die Datei, oder alternativ einen anderen Link auf die Ressource (ftp, http, https, ...). Alternativ geht natürlich auch ein relativer Link, falls das auf der lokalen Maschine liegen würde. Bearbeitet 8. Oktober 2008 von Crash2001 Zitieren
=o-n-e= Geschrieben 8. Oktober 2008 Autor Geschrieben 8. Oktober 2008 ich will die seite im lokalen intranet bereitstellen, auf den anderen maschinen läuft kein webserver sonder lediglich eine windows freigabe. wenn ich im browser die ip, order und datei aufrufe komme ich doch auch an die freigabe dran. so habe ich es hier auch vor. \\192.168.1.21 wäre im browser doch so file://///192.168.1.21/ Zitieren
geloescht_JesterDay Geschrieben 9. Oktober 2008 Geschrieben 9. Oktober 2008 ich will die seite im lokalen intranet bereitstellen Jetzt frag ich mich aber, warum du im lokalen Intranet etliche Download-Mirror aufbauen willst? Erwartest du soviele zig tausend Zugriffe pro Minute? An der Bandbreite ändert sich nichts, da es eh lokal über dasselbe Netz geht. Allein die Serverlast kann da ein Grund sein, aber eigentlich sollte ein Fileserver schon für etliche Zugriffe ausgelegt sein. Zitieren
=o-n-e= Geschrieben 9. Oktober 2008 Autor Geschrieben 9. Oktober 2008 Nein zig tausend nicht, es geht nur darum mehrere große dateien an viele leute zu verteilen und ich finde die idee son ganz gut . hab halt nur dieses problem wo ich echt nicht weiter komme?! wieso wird der link so komisch ergänzt? Zitieren
Crash2001 Geschrieben 9. Oktober 2008 Geschrieben 9. Oktober 2008 [...]wieso wird der link so komisch ergänzt?Weil du ihn falsch schreibst und er daher nicht absolut, sondern relativ vom aktuellen Verzeichnis in dem sich die Seite befindet, aufgerufen wird. Zitieren
=o-n-e= Geschrieben 9. Oktober 2008 Autor Geschrieben 9. Oktober 2008 okay, kannst du mir sagen wie es richtig heißen muss? so ist es im moment $liste1 = array("192.168.1.21\photos.rar", "192.168.1.22\photos.rar"); Zitieren
geloescht_JesterDay Geschrieben 9. Oktober 2008 Geschrieben 9. Oktober 2008 okay, kannst du mir sagen wie es richtig heißen muss? Er muss eben absolut sein, nicht relativ. $liste1 = array("file://192.168.1.21\photos.rar", "file://192.168.1.22\photos.rar"); [/php] Wobei das bei einer reinen Windowsfreigabe denke ich schon die Version mit den 5 / sein muss. Zitieren
Amstelchen Geschrieben 9. Oktober 2008 Geschrieben 9. Oktober 2008 abgesehen davon, dass das keine gültigen UNC-pfade sind (der name des share fehlt), erschliesst sich mir nicht, warum man auf einigermassen modernen intranets soetwas benötigt. ist das rar-file denn so gross und greifen da hunderte leute gleichzeitig drauf zu? wenn die (angenommenen drei) server im gleichen segment hängen, erspart das auch keine leitungskapazität. s'Amstel Zitieren
geloescht_JesterDay Geschrieben 10. Oktober 2008 Geschrieben 10. Oktober 2008 Also ich vermute jetzt einfach mal, es handelt sich dabei um Photos vom letzten Betriebsausflug und es sieht einfach cooler aus, wenn da so eine Mirrorumleitung (wie bei Sourceforge o.ä.) davor kommt. Was die Sekretärin 2 Zimmer weiter wohl absolut nicht interessieren wird, aber naja Insgesamt lernt er ja (hoffentlich) was bei der Sache, und das ist die Hauptsache. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.