kostenloser Webspace werbefrei: lima-city


onClick Wert in Datenbank übergeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Hallo!

    Einige kennen sicher den Thread in dem ich nach einem Script für Downloads über Promotion-Codes frage. So ein Script hab ich jetzt geschrieben. Jetzt will ich es aber noch ein Bisschen erweitern, und peer Klick auf einen der Download-Links eine Variable bzw. einen Wert in eine Datenbank speichern. Gibt es da eine Möglichkeit?

    Eine Schwierigkeit daran ist, dass die Seite auf der die Links sind selbst mit der HEREDOC-Methode in einer Variablen gespeichert ist. Während diese Variable ausgegeben wird, werden Daten (Browser-Sprache und benutzter Code) gesammelt und in die Datenbank eingetragen.
    Die Links an sich sind selbst in der Datenbank gespeichert und werden je nach Download-Code ausgegeben. Und wie gesagt soll wenn der Besucher auf einen Download-Link klickt, noch der Name des Downloads in die Datenbank gespeichert werden. Funkioniert das? Und wenn ja wie?

    Vielen Dank im Voraus!

    Beitrag zuletzt geändert: 30.5.2012 13:20:05 von yorecords
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du kannst mit JavaScript bei onClick einen AJAX-Request mit den Daten an ein Script senden das die Daten in die Datenbank einträgt.

    Oder zeigen die Links auf Scripts von dir? Dann könntest du sogar direkt im Link die Daten mitgeben und das Script das damit aufgerufen wird trägt das in die Datenbank ein...
  4. hackyourlife schrieb:
    Du kannst mit JavaScript bei onClick einen AJAX-Request mit den Daten an ein Script senden das die Daten in die Datenbank einträgt.

    Oder zeigen die Links auf Scripts von dir? Dann könntest du sogar direkt im Link die Daten mitgeben und das Script das damit aufgerufen wird trägt das in die Datenbank ein...
    genau ;) und ich habe mich zig mal schon darüber aufgeregt, dass ich ohne js keine downloads bekommen habe (bzw. mann kann die meisten nach einsicht in die html-quelle 'zu-fuß' machen. warum dann eine aufwändige website??¿¿)

    zu heredoc: heredoc stellt keine schwierigkeit dar. zeige uns hier ein bisschen kode o. programmlogik und dann kann man es sagen wie es (nur mit webstandards [js ist kein]) funktionieren könnte.

    Beitrag zuletzt geändert: 30.5.2012 15:26:09 von hemiolos
  5. m******e

    Nen kleiner Umweg über selbstgebastetle Gateway-Seiten
    - mit Weiterleitung zum Download, oder
    - readfile("downloads/irgendwas.zip");
    wären auch möglich.

    Möglichkeit mit readfile:
    //hier z.B. Code für Referer-Check oder Downloadcounter
    
    header("Content-type: application/zip");
    header("Content-disposition: attachment; filename=irgendwas.zip");
    readfile("downloads/irgendwas.zip");
    ^^ Verhindert ja auch gleichzeitig Deep-Links.

    Allerdings:
    Falls die Zieldatei auf einem anderen Server liegt, wird der dreifache Traffic verursacht (einmal auf dem Server mit der Datei und zweimal auf dem mit dem PHP-Script).
    Quelle:
    https://www.phpbb.de/kb/downloads_php
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    hemiolos schrieb:
    hackyourlife schrieb:
    Du kannst mit JavaScript bei onClick einen AJAX-Request mit den Daten an ein Script senden das die Daten in die Datenbank einträgt.

    Oder zeigen die Links auf Scripts von dir? Dann könntest du sogar direkt im Link die Daten mitgeben und das Script das damit aufgerufen wird trägt das in die Datenbank ein...
    genau ;) und ich habe mich zig mal schon darüber aufgeregt, dass ich ohne js keine downloads bekommen habe (bzw. mann kann die meisten nach einsicht in die html-quelle 'zu-fuß' machen. warum dann eine aufwändige website??¿¿)
    Falls es dir entgangen ist: ein onClick eines Links ist völlig irrelevant für dessen Funktion, also funktioniert das auch ohne JavaScript, nur bekommt die Webseite dann die Info nicht für die Datenbank ;-)
  7. hackyourlife schrieb:
    ..., nur bekommt die Webseite dann die Info nicht für die Datenbank ;-)
    woran liegt das wohl ... ? man hat für gewöhnlich keine schwierigkeiten mit klick auf links informationon(en) mitzugeben (auch für datenbanken ;).
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    hemiolos schrieb:
    hackyourlife schrieb:
    ..., nur bekommt die Webseite dann die Info nicht für die Datenbank ;-)
    woran liegt das wohl ... ? man hat für gewöhnlich keine schwierigkeiten mit klick auf links informationon(en) mitzugeben (auch für datenbanken ;).
    Meine Aussage basiert auf der Annahme, dass der TE weder auf seine eigenen Scripts verlinkt noch ein "Proxy-Script" nutzen möchte...

    Wenn er hingegen seine eigenen Scripts verlinkt oder ein Proxy-Script verwendet kann er die Daten natürlich als GET-Parameter mitgeben.
  9. hackyourlife schrieb:
    ... Meine Aussage basiert auf der Annahme, dass der TE weder auf seine eigenen Scripts verlinkt noch ein "Proxy-Script" nutzen möchte...

    Wenn er hingegen seine eigenen Scripts verlinkt oder ein Proxy-Script verwendet kann er die Daten natürlich als GET-Parameter mitgeben.

    bravo. wie auch immer, wen unser te sich besinnt manchmal auf gewisse sachen zu verzichten, kann er nur gewinnen dabei (nach dem motto: einfacher ist besser).
  10. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Danke für die Antworten!
    Ok, dass man das nicht mit PHP alleine machen kann hätt ich mir eigentlich denken können..

    Also folgendes ist der relevante Teil des Codes:

    $findlinks  = "SELECT * FROM $dbtable WHERE code = '$code'";
    	$getlinks = mysql_query($findlinks);
    	$link = mysql_fetch_array($getlinks);
    			
    	if ($link['link1'] != NULL)
    		{
    		$baptlink = "<a href='". $link['link1'] ."' class='bapt1'><img src='/img/sdbapt1_2.gif' class='sl2p' alt=''></a>";
    		}
    	if ($link['link2'] != NULL)
    		{
    		$tlink = "<a href='". $link['link2'] ."' class='t'><img src='/img/sdt_2.gif' class='sl2p' alt=''></a>";
    		}
    				
    	$timestamp = time();
    	$datetime = date("d.m.Y - H.i", $timestamp);
    	$lang = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    			
    	$acc_log = mysql_query("INSERT INTO
    				$LOG(TIME, SPRACHE, CODE)
    				VALUES (
    				                   '$datetime', 
    					'$lang',
    					'$code')
    			");
    					
    	if ($acc_log == false)
    		{
    		$errmsg = mysql_error();
    		$to = "email@example.com";
    		$subject = "MySQL ERROR";
    		$message = "{$errmsg}";
    		mail($to, $subject, $message);
    		}
    				
    echo $acc = <<< heredoc
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=utf-8">
    	<meta http-equiv="Content-Style-Type" content="text/css">
    	<meta name="robots" content="noindex,noimageindex">
    <title>Special Downloads</title>
    <link rel="stylesheet" type="text/css" href="/css/divs.css">
    <link rel="stylesheet" type="text/css" href="/css/font.css">
    <link rel="stylesheet" type="text/css" href="/css/sdli.css">
    <script type="text/javascript" src="/js/ga.js"></script>
    </head>
    
    <body>
    <div id="layer">
    <div id="top"></div>
    <div id="sdlayer">
    <img src="/img/sdtext.gif">
    <div id="sdlinks">
    <p align="center">
    $baptlink
    <br><br>
    $tlink
    </p>
    </div>
    </div>
    </div>
    </body>
    </html>
    heredoc;
    }


    Und wenn der Besucher dann auf einen der 2 Links klickt sollte der Name des Links auch in der Datenbank gespeichert werden.
  11. yorecords schrieb:
    ... dass man das nicht mit PHP alleine machen kann hätt ich mir eigentlich denken können..

    doch, klar geht das mit nur PHP, wie oben schon geschrieben,
    über ein eigenes Gateway (header Location Weiterleitung oder mit readfile)

    Beipiel header Weiterleitung

    Der Link zum anklicken führt nicht direkt zur Ziel-Datei
    sondern zu einer kleinen PHP-Datei,
    die - bevor sie zur eigentlichen Ziel-Datei weiterleitet - den Klick loggt

    also anstatt Link mit
    href="zeildatei.zip"

    vorher auf eine PHP-Datei z.B:
    href="download.php?name=zeildatei.zip"


    in dieser PHP-Datei kannst Du dann in MySQL speichern ...was, wer, von wo, wann ... etc.

    $acc_log = mysql_query("INSERT INTO $log_table ( 
      TIME, 
      SPRACHE, 
      CODE
    ) 
    VALUES (
      '$datetime',
      '$lang',
      '$code' 
    )
    ");



    und nach dem (erfolgreichen) Speichern (und ggf. reload-Sperre, Prüfung der Berechtigung, etc...)
    dann weiterleiten zur Ziel-Datei

    header('Location: zieldatei.zip');


    oder per readfile() ... siehe oben
  12. lukepress schrieb:
    ... doch, klar geht das mit nur PHP, wie oben schon geschrieben, ...
    danke für die bestätigung!

    nach so viel inkompetentem mist wie oben angebracht, eine erfrischende alternative an postings.

    dass man alten hasen das alles so in den mund legen muss, ist eine schande :o(

    ein hoch - @lukepress!

    Beitrag zuletzt geändert: 1.6.2012 19:04:07 von hemiolos
  13. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    lukepress schrieb:
    yorecords schrieb:
    ... dass man das nicht mit PHP alleine machen kann hätt ich mir eigentlich denken können..

    doch, klar geht das mit nur PHP, wie oben schon geschrieben,
    über ein eigenes Gateway (header Location Weiterleitung oder mit readfile)

    Beipiel header Weiterleitung

    Der Link zum anklicken führt nicht direkt zur Ziel-Datei
    sondern zu einer kleinen PHP-Datei,
    die - bevor sie zur eigentlichen Ziel-Datei weiterleitet - den Klick loggt

    also anstatt Link mit
    href="zeildatei.zip"

    vorher auf eine PHP-Datei z.B:
    href="download.php?name=zeildatei.zip"


    in dieser PHP-Datei kannst Du dann in MySQL speichern ...was, wer, von wo, wann ... etc.

    $acc_log = mysql_query("INSERT INTO $log_table ( 
      TIME, 
      SPRACHE, 
      CODE
    ) 
    VALUES (
      '$datetime',
      '$lang',
      '$code' 
    )
    ");



    und nach dem (erfolgreichen) Speichern (und ggf. reload-Sperre, Prüfung der Berechtigung, etc...)
    dann weiterleiten zur Ziel-Datei

    header('Location: zieldatei.zip');


    oder per readfile() ... siehe oben


    Ok stimmt.. Daran hab ich noch nicht gedach. Ist aber auch ein Bisschen umständlich, da die Links ja aus der Datenbank kommen und schlussendlich als Bilder dargestellt werden. Aber funktionieren sollte es auf jeden Fall. Ich werd es demnächst versuchen.
    Danke für die Hilfe!
  14. 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!