Download Skript (PHP, HTML, oder was?)

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

  • Download Skript (PHP, HTML, oder was?)

    Hi, alle zusammen
    Da ich ja nebenbei ein meine Webseite designe auf der ich meine Projekte ausstelle usw.
    Habe ich mich gleich gefragt, wie man die ganze Sache möglichst simpel halten kann.
    Somit habe ich mich entschlossen, den HTML Code selbst zu verfassen, ohne (wie es der eine oder andere so gerne tut) Vorlagen oder Baukästen zu benutzen. Da ich mich nur blöderweise gradmal so mit HTML befasst hab, dass es reicht, einer Seite ein Basis-Design zu geben, möchte ich halt son paar kleine Dinge von euch wissen.
    Da ich nicht sonderlich viel (nicht wirklich sonderlich viel) mit Internet usw. zu tun hab, wollte ich einfach mal wissen, was auf der Website mehr Sinn macht, um einige Skripts oder so einzubauen, und zwar ist die Wahl zwischen HTML, PHP und JavaSkript.

    Und ich wollt hat hauptsächlich wissen, wie ein einfacher Download-Skript mit Zähler oder
    ein Anzahl der Klicks-Zähler-Skript in den betreffenden Sprachen aussieht.

    evtl. benötige ich beide, denn meine Page hat weder den Klicks-Zähler (also son Zähler, der die Hits auf meine Seite zählt),
    noch einen anständigen Downloader (der, den ich drinnhab ist viel zu komplex für die verhältnisse meiner Page)
    (und wenn möglich könnt ihr mir auch einige Examples dazu, bzw Anzeige und Funktionsbeispiele geben)

    Freue mich schon auf eine Gute Antwort und bedanke mich schon vorher
    MFG Biochemic :D
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • Die Möglichkeiten, die du dir stellst, haben alle miteinander zu tun, das heißt, du wirst vermutlich alles brauchen (mal ausgenommen von JavaScript welches aber für viele Sachen praktisch werden kann).
    HTML ist die Normale Sprache, die der Browser beherrscht, anhand des HTML Codes, stellt der Browser die Webseite dar. Das heißt sie ist mehr oder weniger browserabhängig (wobei alle Browser meistens den gleichen Standard haben).
    JavaScript hingegen ist eine Clientseitige Programmiersprache, die es zb ermöglicht, Popups oder Messageboxen anzuzeigen, sowie während der Laufzeit HTML Elemente zu ändern (BSP: Die Bildquelle eines <img> Tags ohne die Seite neu Laden zu müssen).
    PHP ist eine Serverseitige Programmiersprache, d.h. der Browser bekommt davon nichts mit, da der PHP-Code auf dem Webserver ausgeführt wird, bevor die Webseite dem Benutzer gezeigt wird. Das macht es möglich, bestimmte Abhängigkeiten zu erstellen und bei Bedarf HTML Code in die Seite einzufügen oder sich mit einem MYSQL Server zu verbinden.
    Mit PHP kannst du solche Sachen wie Downloadcounter machen, da man damit auf das Dateisystem des Servers zugreifen kann, um so zb die Datei auszugeben, die heruntergeladen werden soll und gleichzeitig in eine andere Datei oder in eine MYSQL Tabelle die Anzahl der Downloads zu erhöhen.

    © 2008 by Teamgrill Productions
  • OK

    Also benötigt man schon mehr als nur 0% Kenntnisse um einen (wenn auch nur einfachen) Downloader hinzukriegen?
    Wie gesagt, ich könnte auch meinen nehmen, den ich derzeit auf der Seite hab. Jedoch hat er jedemenge Nachteile:
    - Ist viel zu komplex
    - Läuft in einem Extra Frame (schlecht weil bei mir auf der Seite, Zwangs-Popup Werbung läuft <- Muss ich noch ändern)
    - Schwer, an die Downloads ranzukommen (ich mein bis man auf den Abschnitt Free Games und dann Auf den Download-Abschnitt draufklickt, hat man das Spiel 3x runtergeladen.)
    - Da Gibts Mitglieder-Listen (Ehm, ja... Das istn Downloader und keine Website...)

    Deswegen war mein Ziel einfach ein Download Button nebst einer Zahl "Anzahl Downloads: X" zu haben...
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • Naja mit ein bisschen PHP ist das möglich, wenn auch nicht ganz so komfortabel wie mit einer ausgefeilten Lösung.
    Sieh dir zum Beispiel das an. Man muss das nur mit einem Downloadlink kombinieren.
    Zb. kann der Downloadlink so aussehen:

    PHP-Quellcode

    1. <a href="downloads.php?file=datei.rar">Hier downloaden (Schon <?php echo(file_get_contents("file.rar.downloads")); ?> mal heruntergeladen)</a>

    Und in der downloads.php steht folgender PHP Code:

    PHP-Quellcode

    1. if (isset($_GET["file"]))
    2. {
    3. $hit_count = file_get_contents($_GET['file'].".downloads");
    4. $hit_count++;
    5. file_put_contents($_GET['file'].".downloads", $hit_count);
    6. header("Loaction: ".$_GET["file"]);
    7. }


    Erklärung:
    Der Link leitet su einer Downloadseite weiter, die die Anzahl der Downloads speichert, und zur Datei Weiterleitet. Im Link wird durch PHP die Anzahl der Downloads aus einer Datei ausgelesen, die den Dateinamen des Downloads + ".downloads" heißt.
    Wie gesagt ist das eine relativ einfache Methode aber auch keine (codetechnisch) besonders schöne.

    © 2008 by Teamgrill Productions

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von MasterXY ()

  • sieht doch schonmal nicht schlecht aus.
    Ich werds jetzt erstmal ausprobieren und schauen obs funktioniert.
    Ich melde mich später nochmal.
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • Hallöchen, erstemal...

    Also an sich klappt der Script genauso, wie ich haben wollte, mit der Ausnahme, dass der Download irgendwie nicht funktioniert.

    Folgender Code ist in meinem Downloads.php

    PHP-Quellcode

    1. <?phpif (isset($_GET["file"])){ $hit_count = file_get_contents($_GET['file'].".downloads"); $hit_count++; file_put_contents($_GET['file'].".downloads", $hit_count); echo("Downloade ".$_GET["file"]); header("Loaction: http://bioc.cwsurf.de/downloads/".$_GET["file"]);}?>



    der Skript macht alles was es soll, außer dass die Weiterleitung durchgeführt wird.
    Woran könnte es liegen???

    außerdem ist meine Datei in dieser URL platziert:
    "http://bioc.cwsurf.de/downloads/meineDatei.endung"
    das ist kein Link
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • Das ist klar, weil die Weiterleitung nicht funktioniert, wenn schon etwas Ausgegeben wurde (was du in diesem Fall mit dem Echo tust.) Die downloads.php sollte auch nicht dazu gedacht sein, die Downloadzahl anzuzeigen.

    © 2008 by Teamgrill Productions
  • so ich hab also die Zeile mit dem echo gelöscht. jedoch hat sich nichts verändert. An sich funktioniert alles ganz prima, nur eben nicht der Download (der ja eigentlich den Kern der Funktion darstellt).

    Eigenartig...

    Übrigens ist meine Datei nun eine Zip, ich hab aber alles so gemacht, dass es funktioniert.
    Und alle dazugehörenden Dateien sind im Ordner .../downloads/
    ////////////////////////////////////////////////////////////////////////////////////////////////

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Biochemic ()

  • Kann dir gerne nochmal eine andere Lösungsmöglichkeit vorstellen. Der Code stammt aus einem Programm von mir. Dazu benötigst du allerdings eine MySQL-Tabelle. Der Counter hat zusätzlich eine IP-Sperre für den Tag an dem der Download unter einer IP statt gefunden hat. D.h. wenn ein User mit einer IP 2x am Tag die Datei runterläd zählt der Counter trotzdem nur einmal hoch.
    Für das einfügen solltest du vielleicht etwas PHP-Kenntnisse haben. :)

    Erzeuge diese in z.B. PHPmyAdmin diese Tabelle mit diesen MySQL-Code:

    SQL-Abfrage

    1. CREATE TABLE IF NOT EXISTS `docou_count` (
    2. `date` date NOT NULL,
    3. `file` text NOT NULL,
    4. `ip` text NOT NULL
    5. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    Erzeuge eine config.inc.php für die Verbindung zur MySQL-Datenbank. Setze bitte in den Zeilen 3 bis 6 deine eigenen MySQL Zugangsdaten ein.:

    PHP-Quellcode

    1. <?php
    2. // MySQL connection
    3. $mysqluser = "root"; // your MySQL username
    4. $mysqlpwd = "password"; // your MySQL password
    5. $mysqlhost = "localhost"; // your MySQL host
    6. $mysqldb = "gucou"; // your MySQL database
    7. $mysql_con = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("mysql connection failed"); ;
    8. mysql_select_db($mysqldb,$mysql_con) or die ("database connection failed"); ;
    9. ?>


    Erzeuge eine Datei mit im Beispiel dem Namen docou_count.php und schiebe sie in dein Downloadverzeichnis. (glaube es war relativ betrachtet zur ausgeführten Seite /download/ oder so:

    PHP-Quellcode

    1. <?php
    2. #######################################
    3. ### docou_count.php ###
    4. ### written by: Michael Luckert ###
    5. ### created: 09.01.2008 ###
    6. ### last update: 09.01.2008 ###
    7. ### script type: php script ###
    8. ### function: count file + download ###
    9. #######################################
    10. //read file
    11. header("Content-Type: application/octet-stream");
    12. header('Content-Disposition: attachment; filename="'.$_GET["file"].'"');
    13. readfile($_GET["file"]);
    14. //mysql connection
    15. include("../config.inc.php");
    16. //count download
    17. $sql1 = mysql_query("SELECT `file` FROM `docou_count` WHERE `file` = '".$_GET["file"]."' AND `date` = CURDATE() AND `ip` = '".$_SERVER["REMOTE_ADDR"]."'");
    18. if (!mysql_num_rows($sql1)) {
    19. mysql_query("INSERT INTO `docou_count` VALUES (CURDATE(),'".$_GET["file"]."','".$_SERVER["REMOTE_ADDR"]."')");
    20. }
    21. ?>
    Alles anzeigen

    Erzeuge nun eine weitere Datei. Im Beispiel heißt sie docou_read.inc.php.:

    PHP-Quellcode

    1. <?php
    2. #######################################
    3. ### docou_read.inc.php ###
    4. ### written by: Michael Luckert ###
    5. ### created: 09.01.2008 ###
    6. ### last update: 09.01.2008 ###
    7. ### script type: php include script ###
    8. ### function: read file downloads ###
    9. #######################################
    10. function docou_read($file) {
    11. $sql1 = mysql_query("SELECT `file` FROM `docou_count` WHERE `file` = '".$file."'");
    12. $num = mysql_num_rows($sql1);
    13. if ($num != 1) {
    14. return $num." Downloads";
    15. } else {
    16. return $num." Download";
    17. }
    18. }
    19. ?>
    Alles anzeigen

    Die oben abgebildete Datei braucht ebenfals einen Zugang zu der MySQL Datenbank mit der vorher erzeugten Tabelle. Ich gehe davon aus das du auf der Seite wo du den Downloads ausließt eh schon einen Zugang zu der Datenbank hast.

    Steuerst du deine Webseite über eine index.php kannst du nun den folgenden Code an die Spitze der Datei kopieren.

    PHP-Quellcode

    1. <?php
    2. include("config.inc.php");
    3. include("docou_read.inc.php");
    4. ?>

    Wenn du alles soweit fertig hast, musst du nur noch die Links zum Aufrufen einer Datei für den Download und die Abfrage nach der Anzahl der Downloads einrichten:
    Einen Download rufst du nun etwa so auf. Die test.zip ersetzt du einfach gegen eine beliebige Datei von dir.:

    PHP-Quellcode

    1. <a href="download/docou_count.php?file=test.zip">Download</a>

    Um die Anzahl der Downloads auszulesen fügst du folgenden Code an beliebiger Stelle auf deiner Webseite ein. Die test.zip musst du wieder gegen eine beliebige Datei von dir ersetzen.:

    PHP-Quellcode

    1. <?php echo docou_read("test.zip"); ?>

    Hoffe das war nicht zuviel Input.^^
  • Wow,

    Das ist ja nicht wenig...
    Ich wollt grad bei mir ne neue MySQL Datenbank anlegen, als man mir plötzlich sagt, das dies erst morgen möglich wäre.
    Wenn es noch ne schnelle Möglichkeit ohne MySQL gäbe, wäre es besser.

    Wenn sich jedoch nichts bis heute finden, werde ich mir dein Example anschauen und mal versuchen, da was schönes zusammenzubasteln.

    ansonsten THX lucki90
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • HAHAHAHAHA.....

    was fürn Noob-Fehler...

    ich hab den Fehler gefunden...

    PHP-Quellcode

    1. if (isset($_GET["file"])){
    2. $hit_count = file_get_contents($_GET['file'].".downloads");
    3. $hit_count++;
    4. file_put_contents($_GET['file'].".downloads", $hit_count);
    5. header("Loaction: ".$_GET["file"]); }



    wenn man genau hinsieht, hat sich mal wieder ein Rechtsschreibfehler eingeschlichen,
    (siehe letzte Zeile: header("Loaction??: "...)...heißt das nicht Location?

    Ich bedanke mich an dieser Stelle an alle, die mir geholfen haben,
    ganz besonders bei MasterXY, aber auch bei lucki90.

    Ansonsten wäre das Thema geclosed...
    ////////////////////////////////////////////////////////////////////////////////////////////////