Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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]

Geschrieben

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?

Geschrieben (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 von Crash2001
Geschrieben
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 ;)

Geschrieben
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?!

Geschrieben

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

Geschrieben

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.

Geschrieben (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 von =o-n-e=
Geschrieben (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 von Crash2001
Geschrieben

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/

Geschrieben
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.

Geschrieben

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?

Geschrieben
[...]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.
Geschrieben

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

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...