kostenloser Webspace werbefrei: lima-city


Verschiedene Downloads über verschiedene Codes anbieten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Hallo!

    Für mehrere zukünftige Aktionen habe ich folgendes geplant: Ich will Downloads über verteilte Codes anbieten. Auf der Website soll ein einfacher Text-Input sein, in den der User einen meiner generierten Codes eingeben muss um eine Datei downloaden zu können. Pro Datei gibt es natürlich mehrere Codes, aber jeder kann nur einmal verwendet werden. Es könnten auch einmal mehrere verschiedene Dateien zur gleichen Zeit über verschiedene Codes downloadbar sein.
    Jetzt zu meiner Frage:
    Weiß jemand wo ich eine Anleitung dazu oder vielleicht sogar ein fertiges solches PHP-Script bekomme?
    Vielen Dank im Voraus!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. yorecords schrieb:
    Weiß jemand wo ich eine Anleitung dazu oder vielleicht sogar ein fertiges solches PHP-Script bekomme?
    Vielen Dank im Voraus!


    Mir würde etwas simples einfallen..

    Du erstellst eine Tabelle, in der die die erlaubten codes drinne stehen zum Beispiel "allowed_codes" mit einer Spalte für die
    ID integer auto increment 10|| Dateien Text 255 not null |
    | aktiviert integer 1 not null


    Demnach kannst du auf deiner Seite die aktivierten Codes abfragen und alle mit einer 1 auslesen. Nachdem der Code eingegeben wurde gibt es einen Link zur der Datei oder den Dateien und anschließend wird UPDATE verwendet, um die ID des Codes (der mittels POST übertragen wurde) heraus zu suchen und aktiviert auf 0 zu setzen.


    Beitrag zuletzt geändert: 5.3.2012 7:59:54 von kill-a-teddy
  4. verteil einfach codes und gib ihn die id in einer spalte von den downloads und wenn sie im input eingegen werden setzt du in der tabelle used auf 1 und dann sind sie ungültig
  5. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Erstmal danke für die Antworten.

    kill-a-teddy schrieb:
    Mir würde etwas simples einfallen..

    Du erstellst eine Tabelle, in der die die erlaubten codes drinne stehen zum Beispiel "allowed_codes" mit einer Spalte für die
    ID integer auto increment 10|| Dateien Text 255 not null |
    | aktiviert integer 1 not null


    Demnach kannst du auf deiner Seite die aktivierten Codes abfragen und alle mit einer 1 auslesen. Nachdem der Code eingegeben wurde gibt es einen Link zur der Datei oder den Dateien und anschließend wird UPDATE verwendet, um die ID des Codes (der mittels POST übertragen wurde) heraus zu suchen und aktiviert auf 0 zu setzen.


    Ja, das hört sich ziemlich genau so an wie ich mir das vorgestellt habe. Nur da ich mich mit PHP nicht wirklich auskenne bräuchte ich eben eine komplette Anleitung von A-Z. Irgedwo dürfte es das doch geben.. Nur hab ich leider noch nichts finden können..

    kamizu schrieb:
    verteil einfach codes und gib ihn die id in einer spalte von den downloads und wenn sie im input eingegen werden setzt du in der tabelle used auf 1 und dann sind sie ungültig


    Ganz versteh ich das nicht, aber es hört sich irgendwie zu einfach und unsicher an. Ich denk mir mal dass man da ja eigentlich nur einen Blick in den Quellcode werfen müsste um die Downloadlinks zu sehen..
    Ich stell mir das aber so vor, dass sich nach der Eingabe des Codes entweder eine neue Seite mit den Downloadlinks öffnet, oder der Download direkt startet. So irgendwie dass ich den Dateien verschiedene Codes zuweise mit denen sie angesprochen werden und jeder halt nur einmal funktioniert.
  6. Das kommt dann natürlich an wie du zu diesem Download verlinkst. Du könntest zum Beispiel per header(); darauf verlinken dann würde man den downloadlink nicht sehen oder du könntest einen timestamp im link mitübertragen
  7. c*************h

    Also, ich würde vorschlagen, dass du eine Tabelle mit diesen Spalten anlegst:
    id;code;aktiv;Datei

    Id sollte Auto Incrimed sein
    code ist der Code den die User brauchen
    aktiv setzt du erstmal überall auf 1
    Datei ist der Dateiname von wo das Download erfolgt
    Nun brauchst du folgendes Skript:
    <html>
    <body>
    <?php
    $verbindung = mysql_connect("Server", "Username" , "Passwort") 
    or die('<p>Verbindung zur Datenbank konnte nicht hergestellt werden!</p>'); 
    mysql_select_db("Datenbankname") or die ('<p>Datenbank konnte nicht ausgewählt werden!</p>');
    ?>
    <form action="Die gleiche Datei">
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    </p>
    <p>
    Gebe hier den Code ein:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Download">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT code,aktiv,datei FROM Tabellenname WHERE code LIKE '$code'";
    	$ergebnis 	= mysql_query($abfrage);	
    	while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		if($row->aktiv==1)
    		{
    			$aendern = "UPDATE Tabellenname Set aktiv = '0' WHERE code = '$code'"; // Aktiv nun auf 0 setzen
    			echo ('<meta http-equiv="refresh" content="0; URL='.$row->datei.'">'); // Datei zum Download wird aufgerufen
    		}
    		else
    		{
    			die ('<p>Die Datei wurde schon heruntergeladen.</p>');
    		}
    	}
    }
    else 
    {
    	die ('<p>Bitte gebe einen Code ein!</p>');
    }
    ?>
    </body>
    </html>


    Ungetestet funktioniert's!!! :wink:

    Beitrag zuletzt geändert: 5.3.2012 18:52:25 von carl-schoeneich
  8. carl-schoeneich schrieb:
    Also, ich würde vorschlagen, dass du eine Tabelle mit diesen Spalten anlegst:
    id;code;aktiv;Datei

    Id sollte Auto Incrimed sein
    code ist der Code den die User brauchen
    aktiv setzt du erstmal überall auf 1
    Datei ist der Dateiname von wo das Download erfolgt

    Ungetestet funktioniert's!!! :wink:


    So hatte ich mir das Vorgestellt mit den oben geposteten Beispiel.. Allerdings würde ich die query anders schreiben:

    $abfrage 	= "SELECT * FROM Tabellenname WHERE code LIKE $code AND aktiv = 1 ";


    Außerdem brauch man bei einer Abfrage mit doppel Quotes -> " <- keinen Single-Quote -> ' <- , der ist überflüssig.

    Mit der Abfrage wird zusätzlich geprüft, ob der Code schon aktiviert wurde oder nicht.. Damit brauchst du die While schleife auch nicht so verschachteln, es reicht:

    while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		$aendern = "UPDATE Tabellenname Set aktiv = '0' WHERE code = '$code'"; // Aktiv nun auf 0 setzen
    		echo ('<meta http-equiv="refresh" content="0; URL='.$row->datei.'">'); // Datei zum Download wird aufgerufen
    	}
    	}


    Noch dazu hat Meister dexus mir beigebracht, dass ein meta-refresh nicht Suchmaschinen-freundlich ist, mit einem ob_start() kann man auch einen php header() benutzen, selbst wenn vorher eine Ausgabe erfolgt ist.

    Beitrag zuletzt geändert: 6.3.2012 9:28:01 von kill-a-teddy
  9. Hallo,
    du solltest den Ordner, in dem die Datei liegt unbedingt schützen, z.B. mit einem .htaccess.
    Wenn sich jmd. dann die Datei herunterladen darf, schreibst du eine PHP-Datei, in der die Datei per read_file() weitergeleitet wird:
    (1) Eingabe des Codes
    (2) Prüfung des Codes und falls richtig, ungültig machen (MySQL)
    (3) Verweisen an eine andere PHP-Datei, welche es so aussehen lässt, als seie sie die Datei (header/download o.ä.)
    Diese PHP-Datei ist:
    <?
    $datei = "download_verzeichnis/download_datei.abc";
    $dateiname = basename($datei);
    $groesse = filesize($datei);
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=".$dateiname);
    header("Content-Length:".$groesse);
    readfile($datei);?>


    Damit habe ich ein gutes und sicheres Skript erstellt.

    Hoffe ich habe geholfen :wink:
  10. c*************h

    Ja, ich glaube so müsste es klappen!!!
    Aber ich danke auch,
    dass wusste ich auch noch nicht!!!
    Noch dazu hat Meister dexus mir beigebracht, dass ein meta-refresh nicht Suchmaschinen-freundlich ist, mit einem ob_start() kann man auch einen php header() benutzen, selbst wenn vorher eine Ausgabe erfolgt ist.

    Also Vielen Dank!!!!
  11. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Cool, vielen Dank für eure Hilfe! :smile:

    carl-schoeneich schrieb:
    Also, ich würde vorschlagen, dass du eine Tabelle mit diesen Spalten anlegst:
    id;code;aktiv;Datei

    Id sollte Auto Incrimed sein
    code ist der Code den die User brauchen
    aktiv setzt du erstmal überall auf 1
    Datei ist der Dateiname von wo das Download erfolgt
    Nun brauchst du folgendes Skript:
    <html>
    <body>
    <?php
    $verbindung = mysql_connect("Server", "Username" , "Passwort") 
    or die('<p>Verbindung zur Datenbank konnte nicht hergestellt werden!</p>'); 
    mysql_select_db("Datenbankname") or die ('<p>Datenbank konnte nicht ausgewählt werden!</p>');
    ?>
    <form action="Die gleiche Datei">
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    </p>
    <p>
    Gebe hier den Code ein:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Download">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT code,aktiv,datei FROM Tabellenname WHERE code LIKE '$code'";
    	$ergebnis 	= mysql_query($abfrage);	
    	while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		if($row->aktiv==1)
    		{
    			$aendern = "UPDATE Tabellenname Set aktiv = '0' WHERE code = '$code'"; // Aktiv nun auf 0 setzen
    			echo ('<meta http-equiv="refresh" content="0; URL='.$row->datei.'">'); // Datei zum Download wird aufgerufen
    		}
    		else
    		{
    			die ('<p>Die Datei wurde schon heruntergeladen.</p>');
    		}
    	}
    }
    else 
    {
    	die ('<p>Bitte gebe einen Code ein!</p>');
    }
    ?>
    </body>
    </html>


    Ungetestet funktioniert's!!! :wink:


    Jetzt hab ich aber schon das erste Problem beim erstellen der Tabelle... Hab versucht eine zu erstellen aber da steht jetzt "kein Index definiert". Hab noch nie selbst eine Tabelle in einer Datenbank erstellt, also weiß ich nicht welche Angaben (z.B. bei Index, Attribute und auch bei Typ und in weiterer Folge Funktion) ich da genau machen muss.

    Verstehe ich das richtig, ich brauche dann für jede Datei eine Tabelle, muss dann ID nur auf "Auto Incrimed" setzen, bei "code" den jeweiligen Code , bei "aktiv" 1 und bei "Datei" die Adresse der Datei (da sie auf dem Download-server liegt z.B. http://download.lima-city.de/yorecords/download1.rar) eingeben?

    carl-schoeneich schrieb:
    <form action="Die gleiche Datei">


    Meinst du damit die Datei in der dieser Code steht?

    carl-schoeneich schrieb:
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    :


    Ich denk mal damit ist der User gemeint?

    carl-schoeneich schrieb:
    else
    {
    die ('<p>Bitte gebe einen Code ein!</p>');
    }


    Und das ist falls ein falscher bzw. kein Code eingegeben wurde?

    kill-a-teddy schrieb:
    carl-schoeneich schrieb:
    Also, ich würde vorschlagen, dass du eine Tabelle mit diesen Spalten anlegst:
    id;code;aktiv;Datei

    Id sollte Auto Incrimed sein
    code ist der Code den die User brauchen
    aktiv setzt du erstmal überall auf 1
    Datei ist der Dateiname von wo das Download erfolgt

    Ungetestet funktioniert's!!! :wink:


    So hatte ich mir das Vorgestellt mit den oben geposteten Beispiel.. Allerdings würde ich die query anders schreiben:

    $abfrage 	= "SELECT * FROM Tabellenname WHERE code LIKE $code AND aktiv = 1 ";


    Außerdem brauch man bei einer Abfrage mit doppel Quotes -> " <- keinen Single-Quote -> ' <- , der ist überflüssig.

    Mit der Abfrage wird zusätzlich geprüft, ob der Code schon aktiviert wurde oder nicht.. Damit brauchst du die While schleife auch nicht so verschachteln, es reicht:

    while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		$aendern = "UPDATE Tabellenname Set aktiv = '0' WHERE code = '$code'"; // Aktiv nun auf 0 setzen
    		echo ('<meta http-equiv="refresh" content="0; URL='.$row->datei.'">'); // Datei zum Download wird aufgerufen
    	}
    	}


    Noch dazu hat Meister dexus mir beigebracht, dass ein meta-refresh nicht Suchmaschinen-freundlich ist, mit einem ob_start() kann man auch einen php header() benutzen, selbst wenn vorher eine Ausgabe erfolgt ist.


    Also der Code soll dann schlussendlich so

    <html>
    <body>
    <?php
    $verbindung = mysql_connect("Server", "Username" , "Passwort") 
    or die('<p>Verbindung zur Datenbank konnte nicht hergestellt werden!</p>'); 
    mysql_select_db("Datenbankname") or die ('<p>Datenbank konnte nicht ausgewählt werden!</p>');
    ?>
    <form action="Die gleiche Datei">
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    </p>
    <p>
    Gebe hier den Code ein:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Download">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT * FROM Tabellenname WHERE code LIKE $code AND aktiv = 1 ";
     	$ergebnis 	= mysql_query($abfrage);	
    	while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		$aendern = "UPDATE Tabellenname Set aktiv = '0' WHERE code = '$code'"; // Aktiv nun auf 0 setzen
    		echo ('<meta http-equiv="refresh" content="0; URL='.$row->datei.'">'); // Datei zum Download wird aufgerufen
    	}
     		else
    		{
    			die ('<p>Die Datei wurde schon heruntergeladen.</p>');
    		}
    	}
    }
    else 
    {
    	die ('<p>Bitte gebe einen Code ein!</p>');
    }
    ?>
    </body>
    </html>



    aussehen?



    cyber-os schrieb:
    Hallo,
    du solltest den Ordner, in dem die Datei liegt unbedingt schützen, z.B. mit einem .htaccess.
    Wenn sich jmd. dann die Datei herunterladen darf, schreibst du eine PHP-Datei, in der die Datei per read_file() weitergeleitet wird:
    (1) Eingabe des Codes
    (2) Prüfung des Codes und falls richtig, ungültig machen (MySQL)
    (3) Verweisen an eine andere PHP-Datei, welche es so aussehen lässt, als seie sie die Datei (header/download o.ä.)
    Diese PHP-Datei ist:
    <?
    $datei = "download_verzeichnis/download_datei.abc";
    $dateiname = basename($datei);
    $groesse = filesize($datei);
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=".$dateiname);
    header("Content-Length:".$groesse);
    readfile($datei);?>


    Damit habe ich ein gutes und sicheres Skript erstellt.

    Hoffe ich habe geholfen :wink:


    Verstehe ich das richtig. ich soll für jede downloadbare Datei eine solche PHP-Datei erstellen und von der Datenbank auf diese verweisen?
    Und das ist wahrscheinlich eine blöde Frage, aber kann ich auf den Download-Server überhaupt eine .htaccess laden? Und wenn ja wie soll die dann aussehen? Angenommen ich biete 3 verschiedene Dateien über Codes zum Download an.
  12. <?php ob_start(); ?>
    <html>
    <body>
    <?php
    $verbindung = mysql_connect("Server", "Username" , "Passwort") 
    or die('<p>Verbindung zur Datenbank konnte nicht hergestellt werden!</p>'); 
    mysql_select_db("Datenbankname") or die ('<p>Datenbank konnte nicht ausgewählt werden!</p>');
    ?>
    <form action="Die gleiche Datei">
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    </p>
    <p>
    Gebe hier den Code ein:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Download">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT * FROM code WHERE code LIKE $code AND aktiv = 1 ";
     	$ergebnis 	= mysql_query($abfrage);	
    	while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		$aendern = "UPDATE code Set aktiv = 0 WHERE code = $code"; // Aktiv nun auf 0 setzen
    		header(Location: "$row->datei"; // Datei zum Download wird aufgerufen
    	}
    }
    else 
    {
    	die ('<p>Bitte gebe einen Code ein!</p>');
    }
    ?>
    </body>
    </html>


    So ist's richtig.

    Jetzt hab ich aber schon das erste Problem beim erstellen der Tabelle... Hab versucht eine zu erstellen aber da steht jetzt "kein Index definiert". Hab noch nie selbst eine Tabelle in einer Datenbank erstellt, also weiß ich nicht welche Angaben (z.B. bei Index, Attribute und auch bei Typ und in weiterer Folge Funktion) ich da genau machen muss.



    Füge folgenden Code so wie er dort steht 1:1 in deine Mysql Tabelle ein, indem du in bei dem Reiter "SQL" in die Textbox kopierst:
    --
    -- Tabellenstruktur für Tabelle `code`
    --
    
    DROP TABLE IF EXISTS `code`;
    CREATE TABLE IF NOT EXISTS `code` (
      `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Die automatisch generierte ID',
      `code` int(255) NOT NULL COMMENT 'Der Code oder mehrere durch Komma getrennt',
      `datei` text NOT NULL COMMENT 'Die Datei, die heruntergeladen werden soll',
      `aktiv` int(10) NOT NULL COMMENT '1 Ist aktiv und 0 ist inaktiv',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



    Deine Tabelle wird jetzt automatisch generiert und hat den Namen "code" ich hab mir die Freiheit genommen das auch in der SQL Syntax im 1. Code anzupassen.
  13. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    kill-a-teddy schrieb:
    <?php ob_start(); ?>
    <html>
    <body>
    <?php
    $verbindung = mysql_connect("Server", "Username" , "Passwort") 
    or die('<p>Verbindung zur Datenbank konnte nicht hergestellt werden!</p>'); 
    mysql_select_db("Datenbankname") or die ('<p>Datenbank konnte nicht ausgewählt werden!</p>');
    ?>
    <form action="Die gleiche Datei">
    <p>Die Codes: <br />
    Hier müssen die Codes hin!
    </p>
    <p>
    Gebe hier den Code ein:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Download">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT * FROM code WHERE code LIKE $code AND aktiv = 1 ";
     	$ergebnis 	= mysql_query($abfrage);	
    	while($row 	= mysql_fetch_object($ergebnis))  
    	{
    		$aendern = "UPDATE code Set aktiv = 0 WHERE code = $code"; // Aktiv nun auf 0 setzen
    		header(Location: "$row->datei"; // Datei zum Download wird aufgerufen
    	}
    }
    else 
    {
    	die ('<p>Bitte gebe einen Code ein!</p>');
    }
    ?>
    </body>
    </html>


    So ist's richtig.

    Jetzt hab ich aber schon das erste Problem beim erstellen der Tabelle... Hab versucht eine zu erstellen aber da steht jetzt "kein Index definiert". Hab noch nie selbst eine Tabelle in einer Datenbank erstellt, also weiß ich nicht welche Angaben (z.B. bei Index, Attribute und auch bei Typ und in weiterer Folge Funktion) ich da genau machen muss.



    Füge folgenden Code so wie er dort steht 1:1 in deine Mysql Tabelle ein, indem du in bei dem Reiter "SQL" in die Textbox kopierst:
    --
    -- Tabellenstruktur für Tabelle `code`
    --
    
    DROP TABLE IF EXISTS `code`;
    CREATE TABLE IF NOT EXISTS `code` (
      `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Die automatisch generierte ID',
      `code` int(255) NOT NULL COMMENT 'Der Code oder mehrere durch Komma getrennt',
      `datei` text NOT NULL COMMENT 'Die Datei, die heruntergeladen werden soll',
      `aktiv` int(10) NOT NULL COMMENT '1 Ist aktiv und 0 ist inaktiv',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



    Deine Tabelle wird jetzt automatisch generiert und hat den Namen "code" ich hab mir die Freiheit genommen das auch in der SQL Syntax im 1. Code anzupassen.


    Perfekt!! Vielen Dank!!
    Und wie mache ich das dann genau? Brauche ich für jede Datei eine eigene Tabelle? Je nach Code soll ja eine andere Datei heruntergeladen werden, bzw. mehrere Codes für eine Datei, und weitere für eine andere (Edit: was aber wenn ich genauer drüber nachdenke eigentlich nicht so wichtig wäre)..
    Und werden wenn mehrere Codes in einer Tabelle stehen bei einem Download nicht alle auf 0 gesetzt?

    Beitrag zuletzt geändert: 8.3.2012 3:44:09 von yorecords
  14. yorecords schrieb:
    Perfekt!! Vielen Dank!!
    Und wie mache ich das dann genau? Brauche ich für jede Datei eine eigene Tabelle? Je nach Code soll ja eine andere Datei heruntergeladen werden, bzw. mehrere Codes für eine Datei, und weitere für eine andere (Edit: was aber wenn ich genauer drüber nachdenke eigentlich nicht so wichtig wäre)..
    Und werden wenn mehrere Codes in einer Tabelle stehen bei einem Download nicht alle auf 0 gesetzt?


    Kein Thema. Es werden nur die Codes, die schon eingegeben auf 0 gesetzt... Um einen neuen Code einzufügen kannst du phpMyAdmin öffnen, in deine Datenbank und die Tabelle anklicken.. Oben siehst du dann die Reiter "Anzeigen" - "Struktur" - [...] - "Einfügen". Bei Einfügen klichst du dann drauf.

    Id lässt du leer
    aktiv immer auf 1
    code kannst du dir einen ausdenken oder du suchst dir bei Google nen Code generator oder derartiges
    datei musst du den absoluten Pfad zur Datei angeben also "http://www.download.beispiel.com/ordner/unterordner/datei.zip"

    Jedesmal wenn du auf "Einfügen" drückst und die Daten ausfüllst werden diese in der Tabelle eingetragen, du brauchst nicht für jeden Code eine extra Tabelle machen..

    Stell dir das Prinzip vor wie bei Microsoft excel..

    Oben hast du die Spalten Namen:
    ID - aktiv - Code - Datei



    und unten die Daten

    ID - aktiv - Code - Datei 
    1   -   1    - 49494- http://www.download.com/beispiel.zip
    2   -   0    - 9393  - http://www.download.com/beispiel.zip



    Du kannst beliebig viele Codes auf eine Datei setzen und beliebig viele auf eine andere Datei setzen... Das ist völlig egal ;) Es werden ja eh nur die aktivierten ausgelesen ^^

    Du kannst zum Beispiel auch deine Codes auf aktiviert 0 setzen und dann erst aktivieren, wenn zum Beispiel Weihnachten ist oder so ^^ also Saison abhängig..
  15. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    kill-a-teddy schrieb:
    yorecords schrieb:
    Perfekt!! Vielen Dank!!
    Und wie mache ich das dann genau? Brauche ich für jede Datei eine eigene Tabelle? Je nach Code soll ja eine andere Datei heruntergeladen werden, bzw. mehrere Codes für eine Datei, und weitere für eine andere (Edit: was aber wenn ich genauer drüber nachdenke eigentlich nicht so wichtig wäre)..
    Und werden wenn mehrere Codes in einer Tabelle stehen bei einem Download nicht alle auf 0 gesetzt?


    Kein Thema. Es werden nur die Codes, die schon eingegeben auf 0 gesetzt... Um einen neuen Code einzufügen kannst du phpMyAdmin öffnen, in deine Datenbank und die Tabelle anklicken.. Oben siehst du dann die Reiter "Anzeigen" - "Struktur" - [...] - "Einfügen". Bei Einfügen klichst du dann drauf.

    Id lässt du leer
    aktiv immer auf 1
    code kannst du dir einen ausdenken oder du suchst dir bei Google nen Code generator oder derartiges
    datei musst du den absoluten Pfad zur Datei angeben also "http://www.download.beispiel.com/ordner/unterordner/datei.zip"

    Jedesmal wenn du auf "Einfügen" drückst und die Daten ausfüllst werden diese in der Tabelle eingetragen, du brauchst nicht für jeden Code eine extra Tabelle machen..

    Stell dir das Prinzip vor wie bei Microsoft excel..

    Oben hast du die Spalten Namen:
    ID - aktiv - Code - Datei



    und unten die Daten

    ID - aktiv - Code - Datei 
    1   -   1    - 49494- http://www.download.com/beispiel.zip
    2   -   0    - 9393  - http://www.download.com/beispiel.zip



    Du kannst beliebig viele Codes auf eine Datei setzen und beliebig viele auf eine andere Datei setzen... Das ist völlig egal ;) Es werden ja eh nur die aktivierten ausgelesen ^^

    Du kannst zum Beispiel auch deine Codes auf aktiviert 0 setzen und dann erst aktivieren, wenn zum Beispiel Weihnachten ist oder so ^^ also Saison abhängig..


    Super, danke.
    Aber jetzt stellkt sich mir noch ein letztes Problem: Ich habe testweise als Code mal testCode123 eingegeben und da steht jetzt
    Warning: #1366 Incorrect integer value: 'testCode123' for column 'code' at row 1
    Ich nehme mal an ich muss dafür den Typ der Spalte ändern? Wenn ja auf was? Die Codes sollen alle das Format des Testcodes oben haben. Also Zahlen und Buchstaben, mit Groß- und Kleinschreibung.

    Edit:
    Ich glaub ich habs geschafft.. Habs einfach auf "Text" gestellt. Dürfte funktionieren.
    Aber noch eine andere Frage... Ist es nicht ziemlich unsicher wenn jeder der sich den Quelltext ansieht sofort Zugriff auf meine Datenbank haben kann? Kann man da irgendwas dagegen tun?

    Beitrag zuletzt geändert: 8.3.2012 17:04:46 von yorecords
  16. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    yorecords schrieb:
    Warning: #1366 Incorrect integer value: 'testCode123' for column 'code' at row 1
    Ich nehme mal an ich muss dafür den Typ der Spalte ändern?

    Das liegt daran, dass 'code' vom Typ Integer ist, 'testCode123' aber ein Text ist, und keine Ganzzahl.
    Du müsstest den Typ auf Varchar ändern, die Länge kannst du nach deinen Bedürfnissen selbst festlegen.
  17. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    burgi schrieb:
    yorecords schrieb:
    Warning: #1366 Incorrect integer value: 'testCode123' for column 'code' at row 1
    Ich nehme mal an ich muss dafür den Typ der Spalte ändern?

    Das liegt daran, dass 'code' vom Typ Integer ist, 'testCode123' aber ein Text ist, und keine Ganzzahl.
    Du müsstest den Typ auf Varchar ändern, die Länge kannst du nach deinen Bedürfnissen selbst festlegen.


    Oh.. Danke.
    Ich habs gerade vorher auf "Text" geändert und es scheint auch zu funktionieren. Zumindest sagt die Datenbank nichts mehr dagegen. Sollte ich es trotzdem auf Varchar ändern?

    Edit1:
    Wenn ich es auf Varchar ändere bekomme ich wieder einen anderen Fehler:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT 'Der Code oder m' at line 1

    Aber als Text scheint es ja zu funktionieren.

    Edit2:
    Der Code funktioniert nicht. Wenn ich ihn als HTML speichere schaut das Ergebnis ca. so aus:

    Verbindung zur Datenbank konnte nicht hergestellt werden!

    '); mysql_select_db("db_243410_1") or die ('
    Datenbank konnte nicht ausgewählt werden!

    '); ?>
    If you´ve got a Download-Code you can enter it here:

    *Hier der Text-Input und der Submit-Button

    Bitte gebe einen Code ein!

    '); } ?>


    Und wenn ich ihn als PHP speichere bekomme ich einen Error 500....

    Beitrag zuletzt geändert: 8.3.2012 17:28:30 von yorecords
  18. yorecords schrieb:

    Edit:
    Ich glaub ich habs geschafft.. Habs einfach auf "Text" gestellt. Dürfte funktionieren.
    Aber noch eine andere Frage... Ist es nicht ziemlich unsicher wenn jeder der sich den Quelltext ansieht sofort Zugriff auf meine Datenbank haben kann? Kann man da irgendwas dagegen tun?


    Ja, wenn du meine SQL Datei benutzt hast, dann hast du code als Integer, das heißt du kannst dafür nur Zahlen verwenden. Mit der Einstellung Text kannst du eben alle Zeichen inclusive Sonderzeichen benutzen ;)
  19. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    kill-a-teddy schrieb:
    yorecords schrieb:

    Edit:
    Ich glaub ich habs geschafft.. Habs einfach auf "Text" gestellt. Dürfte funktionieren.
    Aber noch eine andere Frage... Ist es nicht ziemlich unsicher wenn jeder der sich den Quelltext ansieht sofort Zugriff auf meine Datenbank haben kann? Kann man da irgendwas dagegen tun?


    Ja, wenn du meine SQL Datei benutzt hast, dann hast du code als Integer, das heißt du kannst dafür nur Zahlen verwenden. Mit der Einstellung Text kannst du eben alle Zeichen inclusive Sonderzeichen benutzen ;)


    Ok, danke.
    Aber wie oben erwähnt funktioniert der PHP-Code nicht. Hast du eine Idee warum? Mach ich irgendwas falsch?
    Und kennst du eine Möglichkeit den Quelltext bzw. das Passwort von der Datenbank und so zu schützen, dass es nicht jeder sehen kann wenn er in den Quelltext schaut? Das ist doch so ziemlich unsicher oder?

    Edit:
    Ich habs gerade geschafft dass es wenigstens richtig dargestellt wird indem ich die Absätze in "die" entfernt und die Datei als HTML gespeichert habe. Trotzdem wird nach der Eingabe des Codes nichts heruntergeladen. Es erscheint wieder die gleiche Seite nur in der Adressleiste steht noch ?code=testCode123 am Ende. In der Datenbank ist die Datei auch nach wie vor aktiv..

    Edit 2:
    Mittlerweile bin ich mir aber ziemlich sicher, dass ich die Datei als PHP speichern muss... Irgend ein Fehler ist da wohl im Code. Bitte schau dir das noch einmal an. Hier ist der Code, so wie ich ihn derzeit verwende (nur halt natürlich ohne Angaben zur Datenbank):

    <?php ob_start(); ?>
    <html>
    
    <body>
    <?php
    $verbindung = mysql_connect("Server", "User" , "Passwort")
    or die('No connection to the database!');
    mysql_select_db("Datenbank") or die ('Database couldn´t be selected!');
    ?>
    <form action="download.php">
    <p>
    If you´ve got a Download-Code you can enter it here:
    </p>
    <input type="text" name="code"/>
    <input type="submit" value="Submit">
    </form>
    <?php
    if (isset($_POST["code"]))
    {
    	$code 		= $_POST["code"];
    	$abfrage 	= "SELECT * FROM code WHERE code LIKE $code AND aktiv = 1 ";
     	$ergebnis 	= mysql_query($abfrage);
    	while($row 	= mysql_fetch_object($ergebnis))
    	{
    		$aendern = "UPDATE code Set aktiv = 0 WHERE code = $code";
    		header(Location: "$row->datei";
    	}
    }
    else
    {
    	die ('Please enter a Code!');
    }
    ?>
    </body>
    </html>


    Bei <form action=""> hab ich es schon mit dem Dateinamen, dem vollen Pfad und auch mit der URL versucht, läuft aber alles aufs gleiche Ergebnis hinaus..


    Edit 3:

    Ich glaub der Fehler liegt bei header(Location: "$row->datei";
    Da fehlt doch eine zweite Klammer oder? Aber wenn ich die noch einfüg ändert sich trotzdem nichts. Mir ist übrigens gerade aufgefallen, dass das Notepad ++ die gesamte Zeile nicht als Code erkennt.

    Beitrag zuletzt geändert: 10.3.2012 17:59:15 von yorecords
  20. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!