SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.08.2004, 00:03:03
win-tipps win-tipps ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: Butzbach
Beiträge: 15
win-tipps eine Nachricht über AIM schicken
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
Mit Zitat antworten
  #2  
Alt 17.08.2004, 00:12:25
LordFuture LordFuture ist offline
Anfänger
 
Registriert seit: Jan 2004
Ort: Michla
Beiträge: 61
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 ;-) ?
__________________
Software ist like sex - its better when its free!
Mit Zitat antworten
  #3  
Alt 17.08.2004, 00:14:56
win-tipps win-tipps ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: Butzbach
Beiträge: 15
win-tipps eine Nachricht über AIM schicken
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?
Mit Zitat antworten
  #4  
Alt 17.08.2004, 00:30:01
LordFuture LordFuture ist offline
Anfänger
 
Registriert seit: Jan 2004
Ort: Michla
Beiträge: 61
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:
<body onload="setTimeout('punktevergabe()',20000);"
Ist halt alles a weng umständlich, aber mir fällt im Moment keine Alternative ein die nicht so ähnlich wie diese wäre und bei der der User nichts merkt (Ich nehme an der soll in aller Ruhe surfen können. Wenn du deinen Aktuelle Seite mit dem Banner neu laden lassen willst merkt er dies weil die Seite ja neu läd, aber dann kannst du dies alles mit der Seite selbst ohne Frames und Popups machen).
__________________
Software ist like sex - its better when its free!

Geändert von LordFuture (17.08.2004 um 00:34:29 Uhr)
Mit Zitat antworten
  #5  
Alt 17.08.2004, 00:43:01
win-tipps win-tipps ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: Butzbach
Beiträge: 15
win-tipps eine Nachricht über AIM schicken
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!
Mit Zitat antworten
  #6  
Alt 17.08.2004, 00:59:30
LordFuture LordFuture ist offline
Anfänger
 
Registriert seit: Jan 2004
Ort: Michla
Beiträge: 61
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:
.
.
.
<
head>
<!-- 
Link in Übergeordneten Frame (Verstecktausführen
<script language="JavaScript">
function 
punktevergabe()
  {
  
window.location.href "hans.php?mode=addpoints";  
  }
</script>
</head>
<body onload="setTimeout('punktevergabe()',20000);">
.
.

Der Teil ruft dass Script neu auf.
Und nun nur noch auswerten in welchem Mode dass Script ist.
PHP-Code:
if ($_REQUEST["mode"] == "addpoints")
  {
  
// Punkte dem User hinzufügen (Hinzufügescript aufrufen)
  
}
else
  {
  
// Oben beschriebenen Code an Browser schicken und warten bis nach 20 Sekunden die Seite neu gelden wird und die IF-Schleife zutrifft.
  

Schließt der User dass neu aufgegangenen Fenster innerhalb von 20 Sekunden wird dementsprechend auch die Seite im versteckten Frame nicht neu geladen und somit auch nicht die Punkte hinzugeschrieben.

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.
__________________
Software ist like sex - its better when its free!

Geändert von LordFuture (17.08.2004 um 01:16:06 Uhr)
Mit Zitat antworten
  #7  
Alt 17.08.2004, 01:01:44
Gweilo Gweilo ist offline
Member
 
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
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.
Mit Zitat antworten
  #8  
Alt 17.08.2004, 20:06:48
win-tipps win-tipps ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: Butzbach
Beiträge: 15
win-tipps eine Nachricht über AIM schicken
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
Mit Zitat antworten
  #9  
Alt 19.08.2004, 13:43:32
LordFuture LordFuture ist offline
Anfänger
 
Registriert seit: Jan 2004
Ort: Michla
Beiträge: 61
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?
__________________
Software ist like sex - its better when its free!
Mit Zitat antworten
  #10  
Alt 19.08.2004, 14:35:32
win-tipps win-tipps ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: Butzbach
Beiträge: 15
win-tipps eine Nachricht über AIM schicken
Hallo,
siehst du dieses Stück in den Script?
PHP-Code:
if(mysql_num_rows($mt_extrapunktereload) != 0){
echo
"Reloadsperre aktiv";
}else{
$atime=time();
mysql_query("insert into mt_extrapunktereload (time,user,id) VALUES ('$atime','$user','$id')");
$mt_extrapunkte mysql_query("SELECT * FROM mt_extrapunkte WHERE id='$id'");
while(
$row mysql_fetch_array($mt_extrapunkte)) {
mysql_query("update mt_user set guthaben=(guthaben+$row[punkte]),extrapunkte=(extrapunkte+$row[punkte]) where user='$user'");
mysql_query("update mt_extrapunkte set verbraucht=(verbraucht+1) where id='$id'");
$url=$row[url];
}} 
Das Überprüft, ob die Reloadsperre aktiv ist und wenn nicht, werden dem User die Punkte gutgeschrieben
PHP-Code:
mysql_query("update mt_user set guthaben=(guthaben+$row[punkte]),extrapunkte=(extrapunkte+$row[punkte]) where user='$user'"); 
und andere Einträge vorgenommen. Dieses Stück darf erst nach 20 Sekunden aufgerufen werden.

Könnt ihr mir helfen?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:54:35 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt