Download per Auswahlmenü und Passwortschutz


  • sn4km4n
  • 1563 Aufrufe 11 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Download per Auswahlmenü und Passwortschutz

    Hallo,
    also ich versuche eine Website zu machen in der man über ein Auswahlmenü mit 4 Inhalten einen Download , der Passwortgeschützt sein soll, öffnen kann. Es sollte jeder Download ein anderes Passwort haben.

    Ich habe jetzt das Grundgerüst zusammengebracht, habe aber keine Ahnung wie ich einen Passwortschutz auf jeden Download kriegen soll, und ich weiß auch nicht wie ich die 4 Sachen im Auswahlmenü mit den ftp adressen "verbinden" kann.

    Hier ist mal das Grundgerüst ewetel.net/~theo.abheiden/home…erkstatthandbuch_fsb.html, vieleicht kann man sich so vorstellen was ich möchte ;)



    Vieleicht weiß ja jemand von Euch wie das geht

    Danke
    sn4km4n
  • hmmm...also, grundsaetzlich koenntes es so funzen:
    [01] der user waehlt einen DL aus und gibt das PW dazu ein
    [02] das formular uebermittelt an ein php-skript die daten (DL & PW)
    [03] das skript ermittelt, ob die eingaben stimmen und schickt einen http header und dann die datei ( = DL started)!
    dabei kann es allerdings, aufgrund der versch. browsertypen zu probs kommen! diese koennen z.b. sein, dass die DL datei im dialog 'datei speichern' so heisst wie das php-skript oder die endung php hat!
    VORTEIL: der user waehlt den DL aus gibt das PW ein und der DL startet
    NACHTEIL: DL datei muesste eventuell umbenannt werden

    eine andere moeglichkeit waere:
    [01] der user waehlt einen DL aus und gibt das PW dazu ein
    [02] das formular uebermittelt an ein php-script die daten (DL & PW)
    [03] das skript ermittelt, ob die eingaben stimmen und erstellt einen eindeutigen ordner (z.b. unix timestamp), kopiert hier die datei hinein, dem benutzer wird einen neue seite angezeigt mit dem temporaeren DL-link!
    VORTEIL: die datei wird richtig heruntergeladen
    NACHTEIL: der user muss DL auswaehlen, PW eingeben und dann nochmal einen DL-link anklicken! ausserdem muesste noch ein php-skript laufen, dass die temporaeren ordner wieder loescht! dafuer benoetigst du auf dem webserver allerdings einen shell-account!

    sag' mir welche version dir besser gefaellt! ich bin fuer die erste!
    ausserdem waere noch interessant:
    [01] wie verteilst du das PW fuer den jeweiligen DL?
    [02] warum willst du den DL ueberhaupt schuetzen?

    ceeyaa.mex
  • Hallo,
    die erste Version ist wahrscheinlich wohl besser, nur habe ich keine Ahnung wie ich das realisieren soll.
    Die Handbücher möchte ich schützen weil ich nicht will das jeder diese downlaoden kann, sonder nur bestimmte Leute, und das Passwort verschicken ich vorher per Email an die jeweilige Person.

    mfg
    sn4km4n
  • Wie wärs, wenn du nur ein Feld für die Eingabe des Pw's machst und wenn der User dann auf enter drückt oder was auch immer, und das pw richtig ist, dann startet der dl.

    Der User wird (davon geh ich aus) wohl wissen, was er loaden will, oder?
    (Er hat dich ja diesbezüglich wohl nach dem pw gefragt und warum sollte er dann noch auswählen was er downloaden will)

    Dann legst du halt für die 4 verschiedenen Bücher jeweils ein pw an und was dann eingegeben wird, das wird dann geloadet.

    Nur ein Vorlschlag um die Sache ein wenig zu vereinfachen.

    Mfg

    sL!k3
    "You don`t need a reason to help people" - "Braucht es wirklich einen Grund jemanden zu helfen?""
  • ok! werde es wohl heute abend noch hinbekommen! werde es so einfach wie moeglich halten, damit du auch dateien hinzufuegen/entfernen kannst, passwoerter aendern, pfade aender kannst,...!!

    ceeyaa.mex

    so ... here we go ... hat ein bisschen laenger gedauert, aber jetzt!!
    also, das ganze besteht aus 2 dateien

    [01] eine ascii-textdatei, die die daten enthaellt! sie ist unsere 'Datenbank'! du musst folgende struktur einhalten (die leerzeichen dienen nur der uebersichtlichkeit und haben keinerlei einfluss):
    anzeigename | pfad-zur-datei | dateiname_mit_unterstrichen | passwort
    z.b.:

    Quellcode

    1. das ist die erste datei | ./ | das_ist_die_erste_datei.exe | passwort1
    2. hier die datei nummero due | ../ | datei_numero_2.rar | spaghetti
    3. datei 3 | ./dateien | datei_3.zip | blabla

    ERKLAERUNG:
    • erste spalte ist der name der in der select liste angezeigt wird
    • zweite spalte ist der pfad zu der eigentlichen datei, die der user herunterladen will.
      ./ bedeuted gleiches verzeichnis
      ../ bedeuted ein verzeichnis oberhalb des aktuellen verzeichnisses ( in dem die datendatei liegt)
      ./dateien bedeuted die DL datei liegt in dem unterverzeichnis 'dateien'
    • dritte spalte ist die eigentliche datei, die der user laden will! hier KEINE leerzeichen verwenden!!!!!!!!!
    • vierte spalte ist das passwort zu der DL datei

    diese datendatei musst du selber erstellen, eben so wie du diese brauchst


    [02] das eigentliche php-skript! dieses brauchst du nur zu kopieren und die variable $DBFile ( = zeile 4 ) durch den namen deiner datendatei zu ersetzen!! verwende fuer den namen der datendatei irgendetwas, auf das keiner so leicht kommt, denn hier stehen alle passwoerter unverschluesselt drinnen!!

    PHP-Quellcode

    1. <?php
    2. // change this to whatever your data file is
    3. // use a non-common name (e.g: djp819jdn651.xyz)
    4. $DBFile = 'dropDownDL.pw';
    5. /*** !!! DO NOT EDIT ANYTHING BELOW THIS LINE !!! ***/
    6. // debug mode on/off
    7. //error_reporting(E_ALL);
    8. // get post vars into global scope
    9. import_request_variables('P', '_');
    10. // define used vars
    11. $formdata['dl'] = (isset($_formdata['dl'])) ? $_formdata['dl'] : '';
    12. $formdata['pw'] = (isset($_formdata['pw'])) ? $_formdata['pw'] : '';
    13. $statusMSG = 'Datei auswählen, passwort eingeben und submit klicken!';
    14. // load data file
    15. $contentTMP = file('dropDownDL.pw', 'r');
    16. // create nice array for easier data access
    17. while (list($key, $value) = each($contentTMP)) {
    18. $TMP = split('[|]', $value, 4);
    19. $content[trim($TMP[0])]['path'] = trim($TMP[1]);
    20. $content[trim($TMP[0])]['file'] = trim($TMP[2]);
    21. $content[trim($TMP[0])]['pw'] = trim($TMP[3]);
    22. } // END while
    23. // check if the form was submitted
    24. if (isset($_submit['startDL'])) {
    25. // check if user has select a DL and has entered something in PW field
    26. if ($formdata['dl'] != '' && $formdata['pw'] != '') {
    27. // check if PW is correct
    28. if ($formdata['pw'] == $content[$formdata['dl']]['pw']) {
    29. // check if the file is existing
    30. if (file_exists($content[$formdata['dl']]['path'].'/'.$content[$formdata['dl']]['file'])) {
    31. // write status MSG && start the DL
    32. $statusMSG .= '<h3>PassWort OK; Download starting</h3>';
    33. header('Content-type: application/octet-stream');
    34. header('Content-Disposition: attachment; filename='.trim(htmlentities($content[$formdata['dl']]['file'])));
    35. header('Content-Length: '.filesize($content[$formdata['dl']]['path'].'/'.$content[$formdata['dl']]['file']));
    36. $fp = fopen($content[$formdata['dl']]['path'].$content[$formdata['dl']]['file'], 'r');
    37. fpassthru($fp);
    38. $fc = fclose($fp);
    39. } else {
    40. $statusMSG .= '<h3>!!! Datei "'.$content[$formdata['dl']]['file'].'" existiert nicht !!!</h3>';
    41. } // END ifelse
    42. } else {
    43. $statusMSG .= '<h3>!!! Falsches PassWort !!!</h3>';
    44. } // END ifelse
    45. } else {
    46. $statusMSG .= '<h3>!!! Ungültige Eingabe; Bitte alle Felder ausfüllen !!!</h3>';
    47. } // END ifelse
    48. } // END if
    49. ?>
    50. <HTML>
    51. <HEAD>
    52. <title>dropDownDL</title>
    53. </HEAD>
    54. <BODY>
    55. <form action="" method="post" enctype="multipart/formdata">
    56. <select name="formdata[dl]">
    57. <?php
    58. // loop through the DL data and create the select-list
    59. while (list($key, $value) = each($content)) {
    60. $selected = ($key == $formdata['dl']) ? ' selected' : '';
    61. echo ' <option value="'.$key.'"'.$selected.'>'.$key.'</option>'."\r\n";
    62. } // END while
    63. ?>
    64. </select>
    65. PassWord: <input type="password" name="formdata[pw]" size="10" value="">
    66. <br>
    67. <input type="reset" name="reset" value="reset">
    68. <input type="submit" name="submit[startDL]" value="submit">
    69. <p><?php echo $statusMSG; ?></p>
    70. </form>
    71. </BODY>
    72. </HTML>
    Alles anzeigen


    ok, that's it! schaut imo a bisserl kompliziert aus, isses aber net! ,-)

    have fun && hope it helps!

    ceeyaa.mex
  • Hallo,
    vielen Dank für den ganzen Code, war sicher ne Menge Arbeit, werd mich dann am Wochenende ma dransetzten und den Code einfügen.

    Big thx nochma
    sn4km4n

    Du kommst natürlich in meine Bevorzugtenliste.Also bei der nächsten Ip Verteilung bist du ganz vorne dabei.
  • hey! THX! sowas hoert man doch echt gerne!! ,-)
    und freut mich, dass ich dir helfen konnte!!
    ich weiss zwar nicht wie fit du in php bist, aber lass' dich von dem skript nicht unterkriegen! schaut' vielleicht ein wenig kompliziert aus, aber wenn du die 2 dateien mal auf der HDD hast und dir die anleitung nochmal durchliest, dann is das ganze eine arbeit von 10 min, bis es laeuft!!
    falls noch fragen oder php errors auftauchen, einfach wieder posten!!

    ceeyaa.mex