Code zeitversetzt ausführen
Hallo,
ich muss ein Stück Code ausführen, allerdings erst nach 20 Sekunden Aufenthalt auf der Seite. Kann mir jemand helfen? Danke! Oliver |
Also mit PHP geht dass nicht weil PHP bereits vorbei ist wenn du die seite siehst.
Einzige Möglichkeit bietet JavaScript. Eine Art Sleep-Befehl (Warte 20 Sekunden und mach dann des) gibt es nicht, jedoch gibt es einen JS-Befehl, der eine JS-Funktion erst nach einem gewissen Zeitraum ausführt. Dass heist im Klartext du könntest mit JS auf dass Event OnLoad reagieren und die Funktion aktion() mit 20 Sekunden verzögerung ausführen. Weis aber net ob dass des gelbe vom Ei für dich ist, ich konnte damals auf jeden Fall nichts damit anfangen. Welche Art von Aktionen willst du nach 20 Sekunden ausführen? Ein Popup starten? Eine Verarbeiten bzw. SQL-Abfrage starten? Userdaten auslesen? Meldung "Du bist seit über 20 Sekunden auf der Seite" ausgeben ;-) ? |
Ich habe ein Script, welches Usern beim anklicken eines Werbebanners einige Punkte gutschreibt (MySQL). Dies soll aber erst nach 20 Sekunden passieren. Gibt's da keine Möglichkeiten?
|
Also nach den 20 Sekunden die Aktion zu starten mit PHP nein, JavaScript kein Thema. Ich würd sagen am nähsten liegen würde bescheißen!
Beispiel bzw. Möglichkeit: Du machst deinene Seite mit 2 Frames, einen Sichtbaren und einen mit größe 0. Auf deiner Hauptseite bastelst du eine JS-Funktion die nach 20 Sekunden nach laden der Seite einen link im Zweiten Frame ausführt. Von mir aus: punkteverteiler.php?user=hans&punkte=99 Als Target des links (welchen du mit deiner JS-Funktion nach 20 sekunden ausführst) gibst du den Namen deines versteckten Frames an (dass verarbeitungsscript soll ja nicht im Hauptfenster sondern versteckt im anderen Frame ablaufen). In deinem versteckten Frame wird die verrbeitungsseite geladen und macht ihren Job. Wenn du keine Frame magst könntest du es im Prinzip auch mit einem Popup machen (Schlecht bei Blockern). Nach 20 Sekunden passieren. Ich nehme an du meinst wenn er sich 20 Sekunden auf der durch den Banner verlinkten seite aufhällt. Da würde ich sagen diese Seite in einem neuen Fenster oder in einem PopUp öffnen und deine JS-Funktion soll zunächst überprüfen ob dass geöffnete Fenster noch offen ist bevor es sagt OK, schreibe ihm die Punkte gut. PS: Die JS-Funktion punktevergabe() Zeitversetzt aufrufen: PHP-Code:
|
Hallo LordFuture,
deine Idee ist sehr gut. Danke schonmal dafür. Nur leider ist es mir für die Realisierung schon ziemlich spät und ich schlaf hier gleich ein. Du kannst dir aber mal das Script ansehen, wie es momentan aussieht und was für einen Mist ich eben grade gebaut habe :-( Gehe auf die Seite http://points-for-you.win-tipps.de/l...endert&login=1 um gleich drin zu sein. Klick oben auf Paidbanner und schau dir das mal an. Dort arbeite ich schon vorher mit Frames. Wenn du willst, kann ich dir morgen auch mal meinen chaotischen Quellcode schicken, falls du da was machen kannst. Vielen Dank! |
Hmh, bin zwar auch nur newbi hatte aber schon mit einer ähnlichen Problematik zu tun, weshalb ich da etwas im Bild bin. Ich nehme an du hast ein Script welches die Punkte hinzufügt wenn der Banner angeklickt wurde und es scheitert nur noch an dem aufrufen, oder?
Der Banner öffnet die Seite in einem neuen Fenster, sprich man müsste es abfragen können. Möglichkeit wäre auch durchaus des ganze komplett aus deiner Seite rauszuhalten und in dem _blank in dem die durch den Banner aufgerufte Seite dargestellt wird 2 Frames (1 Sichtbarer und ein Versteckter) zu erstellen. im Versteckten Frame sagst du onload aktion usw. Brauchst quasi nur eine Datei mit 2 Frames, in einem Lädst du die Seite des Banners bei klick auf diesem und im anderen (versteckt) dein Punkte-Hinzufüge Script welches nach 20 Sekunden deine Prozdeur zum gutschreiben der Punkte aufruft. Dein Punkte-Hinzufüge Script welches im Versteckten Frame gemeinsamt mit der Banner-Seite geöffnet wird.(hans.php): PHP-Code:
Und nun nur noch auswerten in welchem Mode dass Script ist. PHP-Code:
Wäre ne Möglichkeit des ganze extern zu handeln ohne was grpßartig an deinen Scripts machen zu müssen. Großartig mehr fällt mir dazu aber auch net ein. Ausprobiert hab ichs auch net, müsste aber funzen. |
Ich habe jetzt nicht alles gelesen, aber ich hätte da eine idee:
du könntest die punkte in eine Tabelle temp_punkte oder so schreiben, mit dem timestamp und der user_id, dem die punkte gutgeschrieben würden. und dann beim seitenaufruf in der tabelle schauen, obs sachen drin hat, die älter als 20 sek sind und dann gutschreiben und aus der tabelle löschen. Die Punkte würden dann natürlich erst gutgeschrieben werden wenn die seite aufgerufen wird, was kein problem darstellen sollte, da die Daten des Users sowieso nicht gesehen werden in der zwischenzeit. |
Hallo,
ich komm leider überhaupt nicht mit klar, diese ideale Lösung in das Script einzubauen. Ich habe es für euch mal als TXT-Datei hochgeladen, bitte (Bitte, bitte, bitte!) schaut es euch mal an und ändert es ggf. so, wie es sein soll. Danke! Die if($verbraucht >= $gebucht) Abfrage kann erstmal egal sein, weil sie damit nichts zu tun hat. http://points-for-you.win-tipps.de/m...unkteklick.txt |
Hmh, dies ist dass script welches ausgeführt wird wenn die Seite 20 Sekunden lang offen war und es schreibt dem User X Punkte gut (in SQL-DB), oder?
Wenn dem so ist dreht es sich nur darum dieses Script nach 20 Sekunden aufzurufen oder hast du Probleme mit dem Script selbst? |
Hallo,
siehst du dieses Stück in den Script? PHP-Code:
PHP-Code:
Könnt ihr mir helfen? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:23:35 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.