Download System

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Download System

    Hallo Leute,

    Ich bin sehr unerfahren in PHP und möchte eigentlich was einfaches realisieren. Naja ich beschreib mal mein Problem:

    Ich bin viel zocker und habe eine Homepage, worauf ich gerne meine selbst erspielten Spielspeicherstände von Call of Duty, CS, XIII usw. zum Downloaden anbieten möchte. Ich habe knapp 200 Spielspeicherstände. Ich habe aber keine Lust, für jeden Spielspeicherstand eine eigene Downloadbeschreibung zu schreiben. Das würde auch Speicherplatz auf dem Webspace verbrauchen. Stattdessen möchte ich ein Download system. Ich habe eine einzige HTML Datei geschrieben, die aus tables besteht und eine Tabelle enthält, worin die Informationen stehen sollen, wie Name der Datei, größe der datei, Autor, version... etc. Die eigentlichen Informationen stehen für jeden download in einzeln erstellten Text Dateien (.txt). Wenn ein Besucher jetzt auf ein Downloadlink klickt muss über ein Parameter der HTML Datei die zum Download passende .txt Datei geladen und in die Tabelle geladen werden. In der Tabelle sollen dafür Platzhalter drinnen sein. Ich mein das so: ruft z.B ein Besucher den Download Link ww.domain.de/download.php?id=100 auf, muss die datei 100.txt geladen werden und dessen Inhalt in die Platzhalter in der HTML datei hinzugefügt werden. Der Inhalt der .txt Datei sieht so aus:

    01=spielstand.zip
    02=100KB
    03=Level 4
    04=by p0lt3Rg3IsT
    ...

    das was hinter 01= steht, soll in die erste Zeile der Tabelle in der HTML Datei, das was hinter 02= steht in die zweite und das was hinter 03= steht in die dritte usw... Er sollte das so realisieren, dass was hinter 01= steht in $zeile1 geladen wird, das was hinter 02= steht in $zeile2 geladen wird und das was hinter 03= in $zeile3 geladen wird, usw...

    Es sollte ein Mehrweg Algorythmus sein. Der Script sollte schauen, was für eine Zahl hinter dem = steht und sollte es in die entsprechende $zeile mit der passenden Nummer laden. Z.B. sollte der script bei 07= (egal bei welcher Zeile 07= ist) den Inhalt hinter dem = in den Platzhalter $zeile07 hinzufügen. Der Script sollte auch eine Schleife enthalten die die .txt Datei ausliest und für jede zeile eine eigene $zeile mit nummer generieren, egal wie viele zeilen es hat. Hat sie z.B. (jetzt wenn ich extrem davon ausgehe) 1177876 zeilen, muss der Script für jede zeile eine $zeile mit nummer generieren und alles was hinter all den = zeichen steht in die passende $zeile laden können. D.h. sollte .txt Dateien unendlich bearbeiten können. Geht das? Sicher müsste sowas realisierbar sein.

    Könnt ihr mir da weiter helfen?

    Ich habe eine Woche lang in Foren gelesen, gegoogelt und auch die dokumentation angeschaut aber weiter als den folgenden Code bin ich nicht gekommen:

    PHP-Code:
    <?php
    $datei 
    $_GET['id'];
    $inhalt file($datei.'.txt');

    echo 
    $inhalt;
    ?>
    Könnt Ihr mir weiterhelfen? Für Bemühungen und Antworte bedanke ich mich jetzt scho im Vorraus...
    Zuletzt geändert von salim_aliya; 04.11.2007, 20:00.
    MFG
    salim_aliya
    Lesen, lernen, ausüben und Ziele erreichen...

  • #2
    mit explode kannst du die Schlüssel und deren Werte in ein Array schreiben, sodass du ein Zuordnungsarray erhälst (z.B. $info["02"] = "100KB").

    Platzhalter kannst du über reguläre Ausdrücke finden.
    preg_replace und preg_match
    können da helfen.
    Zum einfachen Ersetzen dann str_replace nehmen.

    Das ganze könnte dann z.B. so ablaufen (mal ganz simpel):
    - Zeilen aus txt Datei auslesen
    - Zuordnungsarray erstellen
    - Array durchlaufen und entsprechende Platzhalter ersetzen.

    geht auch noch ein wenig komplexer aber das sollte erstma helfen...

    btw: Ich finde (wenn du für sowas nicht lieber gleich ne DB nimmst), dass solche Sachen in XML besser aufgehoben sind. Dann kommst du nicht in das Problem dieser numerischen Zuordnung, wenngleich ne Textdatei natürlich weniger Overhead produziert...
    Zuletzt geändert von ZombieChe; 04.11.2007, 20:52.

    Kommentar


    • #3
      Original geschrieben von ZombieChe
      mit explode kannst du die Schlüssel und deren Werte in ein Array schreiben, sodass du ein Zuordnungsarray erhälst (z.B. $info["02"] = "100KB").
      ähh, wie meinst du das? Ich hab die Dokumentation gelesen und auch die Beispiele angeschaut, aber kann diese nicht zuordnen. Kannst du es bitte ein wenig genauer erklären? Sry kann php überhaupt nicht^^

      Platzhalter kannst du über reguläre Ausdrücke finden.
      preg_replace und preg_match
      können da helfen.
      Zum einfachen Ersetzen dann str_replace nehmen.
      Aber das sind doch Befehle zum Suchen und ersetzen. Für was könnte ich die Gebrauchen?

      Das ganze könnte dann z.B. so ablaufen (mal ganz simpel):
      - Zeilen aus txt Datei auslesen
      - Zuordnungsarray erstellen
      - Array durchlaufen und entsprechende Platzhalter ersetzen.
      Boah, das ist zu schwierig für mich zu verstehen. Sry, vielleicht nervt es dich aber, kannst du mir das alles genauer erklären und auch kleine Beispiele geben?

      btw: Ich finde (wenn du für sowas nicht lieber gleich ne DB nimmst), dass solche Sachen in XML besser aufgehoben sind. Dann kommst du nicht in das Problem dieser numerischen Zuordnung, wenngleich ne Textdatei natürlich weniger Overhead produziert... [/B]
      Ja, eben. Die .txt Dateien sollen ja sowas wie eine Datenbank sein, eine .txt Datei pro Download. Aber wenn du mit Datenbank sowas meinst wie MySQL, lieber nicht, weil dann ist es zuuu zuuuu schwierig für mich xD
      MFG
      salim_aliya
      Lesen, lernen, ausüben und Ziele erreichen...

      Kommentar


      • #4
        okay...weil noch Sonntag ist, nehm ich mir mal ein wenig Zeit...

        Also mal zum ersten Schritt:
        Auslesen der Textdatei
        Du bekommst mit der Funktionfile ein Array geliefert, welches die Zeilen enthält. Du möchtest aber die Schlüssel(01,02,03.....nn) den Werten zuordnen. Also durchläufst du jede Zeile (also das Array) und trennst die Schlüssel von den Werten:
        PHP-Code:
        $zuordnung = array();
        foreach (
        $inhalt as $value) {
          
        $line explode('=',$value);         //Schlüssel von Werten trennen
          
        $zuordnung[$line[0]] = $line[1]; //Zuordnungsarray schreiben

        Damit bist du schon ein ganzes Stück weiter. Als nächstes müssen die Werte in deine Tabell geschrieben werden. Du hast was von Platzhaltern gesagt, daher dachte ich, dass du eine HTML Vorlage hast, die du einliest und in der dann z.B. ein Platzhalter {01} durch den Wert in der Textdatei bei 01 ersetzt wird (so ne Art miniTemplate). Aber vielleicht hab ich dich da auch missverstanden. Das mit den Zeilen war mir nicht ganz klar...

        mal ganz ganz einfach könnte eine Ausgabe der Zeilen dann so aussehen:
        PHP-Code:
        $foreach ($zuordnung as $key => $value) {
         echo 
        '<tr>';
         echo 
        '<td>'.$key.'</td>';
         echo 
        '<td>'.$value.'</td>';
         echo 
        '</tr>';

        Aber vielleicht hilfst du meiner Unwissenheit ein wenig auf die Sprünge und erklärst das nochmal genau...

        edit: grad nochmal deinen Beitrag überflogen - Zeig doch mal wie deine HTML Datei aussieht, dann sollte einiges klar werden.

        Kommentar


        • #5
          Original geschrieben von ZombieChe
          Damit bist du schon ein ganzes Stück weiter. Als nächstes müssen die Werte in deine Tabell geschrieben werden. Du hast was von Platzhaltern gesagt, daher dachte ich, dass du eine HTML Vorlage hast, die du einliest und in der dann z.B. ein Platzhalter {01} durch den Wert in der Textdatei bei 01 ersetzt wird (so ne Art miniTemplate). Aber vielleicht hab ich dich da auch missverstanden. Das mit den Zeilen war mir nicht ganz klar...
          Doch, genau so hab ich das gemeint!!! Du hast es erfasst!!!!

          Aber vielleicht hilfst du meiner Unwissenheit ein wenig auf die Sprünge und erklärst das nochmal genau... edit: grad nochmal deinen Beitrag überflogen - Zeig doch mal wie deine HTML Datei aussieht, dann sollte einiges klar werden.
          OK, werd ich machen! Heute Nacht habe ich keine Zeit mehr, ich hab dein Beitrag nur durchgelesen und es scheint, aufzugehen. Aber intensiver beschäftigen werde ich morgen machen. Wenn Ich fertig bin, poste ich dir ein Link zur HTML Datei, berichte dir über mein Fortschritt und erklär dir alles nochmal genau.

          Vielen Dank, das du Zeit für mich genommen hast!!!!!!
          MFG
          salim_aliya
          Lesen, lernen, ausüben und Ziele erreichen...

          Kommentar


          • #6
            Hi,
            da bin ich wieder! Also wenn du wissen willst, wie das aussehen soll, dann geh auf www.aio-multicode.com . Das ist keine Homepage oder so, sondern, wenn du den Link aufrufst, kommst du direkt zur Beispiel Download Beschreibung. Das ist auch nicht die Adresse, die ich für meine Homepage verwende, bzw. verwende werde.

            Überall, wo PHP Platzhalter und eine Nummer dran steht, soll ein PHP Platzhalter sein, erklärt sich von selbst. Die Vorlage des Beispiel Downloadbeschreibungs soll in einer downloads.php stehen. wenn ich jetzt z.B. ww.domain.de/downloads.php?id=100 aufrufe, muss ein PHP Script in der downloads.php aktiv werden, die entsprechende .txt datei laden (in diesem Beispiel wäre es die 100.txt) und soll die erste zeile der .txt Datei in PHP Platzhalter1 laden, die zweite zeile der .txt datei in PHP Platzhalter2 und die dritte zeile der .txt datei in PHP Platzhalter3 usw. laden unzwar alles, was hinter den =en steht in die eigenen Platzhalter. Danach soll die Downloadbeschreibung angezeigt werden. Die seite wird quasi beim Aufrufen schnell zusammen "gepuzzelt". Aber das script sollte so "unendlich" arbeiten können, es kann sein, dass ich noch Zeilen hinzufüge bzw. lösche. Mit unendlich meine ich, dass es so viele Arrays mit nummern generieren können soll, wie es Zeilen in der .txt Datei gibt. So wäre das mir lieber, aber wenn das zu schwierig ist, könnte ich auch ne einweg lösung hernehmen. Das wäre kein Problem. Wie der inhalt der .txt Datei aussieht, steht schon oben, aber hier nochmal:

            01=Spielstand.zip
            02=1.0
            03=Deutsch
            04=p0lt3Rg3IsT
            05=Win XP
            ...

            Alles was hinter den entsprechenden =en steht in den entsprechenden PHP Platzhalter. Aber wenn das ebenfalls zu schwierig sein sollte, könnte man die zahlen mit den =en weglassen. Halt die .txt Datei ohne 01= usw. Könnte man das bewerkstelligen?

            Ach ja, das ist der Quellcode zu der Vorlage:

            PHP-Code:
            <html>
            <
            body>
            <
            table border="0" cellpadding="0" cellspacing="0" width="645" height="345">
                <
            tr>
                    <
            td valign="top" colspan="3"><font face="Verdana" size="5"><center>Download Beschreibung</center></font><br></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top" colspan="2"><font face="Verdana" size="3">Download Details:</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Name der Datei</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter1</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Version</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter2</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Sprache</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter3</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Autor</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter4</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Lauffähig unter</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter5</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Datei Größe</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter6</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Kategorie</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter7</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Lizenz</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter8</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Kaufpreis</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter9</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Mein Eindruck</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter10</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Verfügbar seit</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter11</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">EDC Download Code</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter12</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Quersumme CRC</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter13</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Quersumme MD5</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter14</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top">&nbsp;</td>
                    <
            td valign="top">&nbsp;</td>
                </
            tr>
                <
            tr>
                    <
            td valign="top" colspan="2"><font face="Verdana" size="3">Informationen zur Datei</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Archiv Typ</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter15</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Wiederherstellung möglich</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter16</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Veränderungen möglich</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter17</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Kompression</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter18</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Progressives Archiv</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter19</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Authentizitätsinformationen</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter20</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Passwort</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter21</font></td>
                </
            tr>
                <
            tr>
                    <
            td valign="top"><font face="Verdana" size="1">Selbstentpackend</font></td>
                    <
            td valign="top"><font face="Verdana" size="1">PHP Platzhalter22</font></td>
                </
            tr>
            </
            table>
            </
            body>
            </
            html
            Vielen Dank für euere Hilfe scho im Vorraus...
            Zuletzt geändert von salim_aliya; 05.11.2007, 21:52.
            MFG
            salim_aliya
            Lesen, lernen, ausüben und Ziele erreichen...

            Kommentar


            • #7
              1. ich sehe keine verlinkungen mit entsprechenden get-parametern
              2. bitte mach nicht so was: <font face="Verdana" size="1">. dafür gibt es css
              3. fopen, fgets
              4. entsprechenden header setzen

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Original geschrieben von Kropff
                1. ich sehe keine verlinkungen mit entsprechenden get-parametern
                Sry, bin absoluter PHP anfänger, ich kann kaum was in PHP und kann deshalb viele Befehle weder zuordnen noch irgendwie anwenden, außer vllt echo^^

                2. bitte mach nicht so was: <font face="Verdana" size="1">. dafür gibt es css
                Ich würd ja gern! Ich versuch so "Platzsparend" wie möglich zu schreiben, aber kann auch kein CSS. Was schlägst du vor, wie könnte ich das unter CSS machen?

                3. fopen, fgets
                Ja die funktionen kenn ich, hab ich auch in vielen anderen stellen darüber gelesen, aber, egal wie sehr ich mich bemüht habe, kei ergebniss *heul*

                4. entsprechenden header setzen.
                OK, guck ich mir mal an...

                Danke für deine Hilfe!!!!
                MFG
                salim_aliya
                Lesen, lernen, ausüben und Ziele erreichen...

                Kommentar


                • #9
                  Sodenn...

                  Also wenn du mit css Klassen arbeitest hast du wahrscheinlich nur noch ein Viertel des Codes also tu uns den Gefallen und lerne dringend die Grundlagen von css (bei SELFHTML z.B.). Das kommt eigentlich vor php...

                  Du kannst fgets dazu benutzen, deine HTML Datei (das "Template") einzulesen. Speichere das erstmal in eine Variable
                  PHP-Code:
                  $tpl fgets("./template.htm"); 
                  EDIT:
                  oha...*schäm* fgets wurde hier natürlich komplett falsch benutzt...richtig wäre file_get_contents oder so, wie in den Folgeposts beschrieben...

                  Anschließend verwendest du den Code von mir oben, um die .txt auszulesen.
                  Dann kannst du im Template die vorhandenen Einträge ersetzen:
                  PHP-Code:
                  foreach ($zuordnung as $var => $value) {
                     
                  $tpl str_replace("{".$var."}",$value,$tpl);  //z.B. wird {01} ersetzt

                  In der HTML Datei wählst du dann halt als Platzhalter {01},{02} ... etc.
                  Allerdings werden dadurch nur diejenigen ersetzt, die auch in der txt stehen, also könntest du abschließend noch mit einem preg_replace oder sowas alle noch übrigen Zeichenketten der Form {xx} mit einem leeren STring (oder sowas wie "k/A") ersetzen...
                  Aber vielleicht hilft dir das ja schon.
                  Zum Schluss noch die Ausgabe:
                  PHP-Code:
                  echo $tpl
                  Hoffe, das hilft...
                  Zuletzt geändert von ZombieChe; 07.11.2007, 17:30.

                  Kommentar


                  • #10
                    Hi,

                    heut habe ich wieder was zusammengestellt, aber in deinem genanntem Quellcode ist irgendein Fehler drin (oder liegt es an mir?).

                    das wird als Fehlermeldung rausgegeben:

                    Warning: fgets(): supplied argument is not a valid stream resource in ... on line 11

                    auch die selbe Fehlermeldung für line 18

                    Das ist der Quellcode, den ich verwendet habe:

                    PHP-Code:
                    <?php
                    $datei 
                    $_GET['id'];
                    $inhalt file($datei.'.txt');

                    $zuordnung = array();

                    foreach (
                    $inhalt as $value
                    {
                      
                    $line explode('=',$value);         //Schlüssel von Werten trennen
                      
                    $zuordnung[$line[0]] = $line[1]; //Zuordnungsarray schreiben
                    }

                    $tpl fgets("./template.htm");

                    foreach (
                    $zuordnung as $var => $value)
                    {
                       
                    $tpl str_replace("{".$var."}",$value,$tpl);  //z.B. wird {01} ersetzt
                    }

                    fclose ($tpl);

                    echo 
                    $tpl;
                    ?>
                    Was mache ich falsch?
                    Zuletzt geändert von salim_aliya; 06.11.2007, 20:00.
                    MFG
                    salim_aliya
                    Lesen, lernen, ausüben und Ziele erreichen...

                    Kommentar


                    • #11


                      fgets:
                      string fgets (resource $handle [, int $length] )

                      selbes gilt für fclose

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ


                        fgets:
                        string fgets (resource $handle [, int $length] )

                        selbes gilt für fclose
                        Sry, wenn du den thread durchgelesen hast, weist du sicher, dass ich null ahnung von php habe. Bitte, kannst du das genauer erklären? Was muss ich machen?
                        MFG
                        salim_aliya
                        Lesen, lernen, ausüben und Ziele erreichen...

                        Kommentar


                        • #13
                          Guck dir das Manual an! Das ist alles, was du brauchst!!

                          Kommentar


                          • #14
                            $fp = fopen('template.html') vor die Zeile.
                            Und in der Zeile ersetzt du "./template.htm" durch $fp

                            Aja, den zweiten parameter darfst du dir noch unter fopen raussuchen. Ich hatte jetzt keine Lust auch noch den sinn des wusts zu verstehen...

                            Kommentar


                            • #15
                              Original geschrieben von PHP-Desaster
                              Guck dir das Manual an! Das ist alles, was du brauchst!!
                              Er hat ja recht. in Projekthilfe darf man faul sein und darauf warten alles gemacht zu bekommen. Wer nicht will, der muss ja nicht.

                              Kommentar

                              Lädt...
                              X