Download-Dialog

ceene

Erfahrenes Mitglied
Hallo alle zusammen

Ich habe ein Script mit dem ich pdfs downloaden kann. Nun möchte ich gerne wenn der Benutzer eine Seite downloaded ein Datum in meine Datenbank schreiben.
Das soll aber auch wirklich nur dann geschehen wenn der User auch wirkliche die Seite runterläd, also auf den "OK"-Button klickt wenn der Download-Bildschirm angezeigt wird.

Hab im Internet folgendes gefunden, aber es funktioniert nicht, es wird nicht ausgegeben
PHP:
Set_Time_Limit(0);  //this you know what gonna do
Ignore_User_Abort(True); //this will force the script running at the end
//ob_start();
$i = 0;

While(!Connection_Aborted()) {
   Echo $i."\n"; //this will save de while
   ob_flush();
   Flush(); //Now php will check de connection
   Sleep(1);
   $i++;
} 
ob_end_flush();
 
Wärst du so freundlich und postest nen bissl Code dazu!?
Kann mir zwar vorstellen wie das aussehen könnte, aber das bringt nicht viel...

Meine erste überlegung wäre, mit dem OK-Button nen submit auszulösen, also NUR den OK-Button in nem Mini-Formular, sodass du via php auf das submit mit dem holen und speichern der gewünschten Daten reagieren kannst...
 
Weiß nicht wie das gehen soll, da ja der download-Bildschirm Clientseitig aufgerufen wird.

Hier ist noch mehr Code^^
PHP:
if($_GET["PB"] == 2)
{
  //$String = urldecode("PBFOKOMAN.pdf");
  // Damit dein Browser weiss, wie Gross die Datei ist.
  header('Content-Length: ' . filesize($sPDFPath."Produktblatt HWplz library Deutschland.pdf"));
  
  // Die Datei wird als [[filename]] angeboten.
   header('Content-Disposition: attachment; filename="Produktblatt HWplz library Deutschland.pdf"'); 

  // Sourcefile einlesen und ausgeben, durch die setzung von Content-Disposition
  // wird die Datei nicht angezeigt, sondern als Download angeboten.
  readfile($sPDFPath."Produktblatt HWplz library Deutschland.pdf");
  
Set_Time_Limit(0);  //this you know what gonna do
Ignore_User_Abort(True); //this will force the script running at the end
//ob_start();
$i = 0;

While(!Connection_Aborted()) {
   Echo $i."\n"; //this will save de while
   ob_flush();
   Flush(); //Now php will check de connection
   Sleep(1);
   $i++;
} 
ob_end_flush();
  
    //SQL-Anweisung für den Update erzeugen
    $sql = "UPDATE benutzerdaten SET HWplz_lib_PB = '$Datum' WHERE ID = '".$_SESSION['user_id']."'";
	//Update-Anweisung abschicken
    mysql_query($sql,$connectionid) OR die(mysql_error());
}

Wobei das was unten steht dann ausgeführt werden soll, wenn der "OK"-Button aktiviert wurde.
 
Also löst du mit dem OK-Button nen JS aus, das den download einleitet

Den Code von deiner Seite wo dass mit OK-Button und so is, den bräuchte ich...

Ich habe keinen Code wo das mit dem OK-Button ist, denn du hast das doch vorgeschlagen....

Ich habe die Stelle die ich im ersten Post gepostet habe im iNet gefunden, weil da stand das man so einen Clientseitigen Dialog prüfen kann. Ob das aber auch zutrifft (was es scheints nicht tut da es nicht geht) oder nicht weiß ich ja leider nicht, da ich noch nicht so lange mit php arbeite.
 
Aaaaahhhhhhhhhh -.-
Mein Fehler... Hab deinen ersten Post falsch verstanden... sry...

Mit php wirst du aber keine Clientseitigen Aktionen prüfen können, weil php serverseitig arbeitet... Um das beim Client zu machen müssteste JavaSript nehmen, aber wenn du grade erst mit php anfängst, dann wird das nen bissl viel auf einmal^^

Ähm... Grübel, grübel... Ich steig durch den Skript daoben auch nich durch so...
Die Möglichkeit mit php wäre, meines wissens nach, beim einleiten des downloads, also wenn der User auf DOWNLOAD klickt, um die Datei zu kriegen, entsprechend drauf zu reagieren... Ich such grade mal, obs da noch nen anderen Weg gibt...

Willst du das NUR für *.pdf-Datein oder allgemein, wenn der User ne File von deiner Web-Site runterlädt?
 
Zuletzt bearbeitet:
Da PHP Befahle nacheinander abbarbeitet, würde es da nicht reichen IngoreUserAbbort() auf false zu setzen und den Datenbankeintrag einfach nach dem readfile zu machen?
 
Da PHP Befahle nacheinander abbarbeitet, würde es da nicht reichen IngoreUserAbbort() auf false zu setzen und den Datenbankeintrag einfach nach dem readfile zu machen?

Leider nein. Denn die Verarbeitung bleibt nicht bei readfile stehen und wartet bis der User was macht. Der Code wird bis zum Schluss abgearbeitet, ohne auf die Eingabe des Benutzer u warten.
 
Zurück