PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Klick zähler?



Stormsam
19-10-2002, 12:54
HI @ all!

Ich brauche Hilfe bei einem Script:
Ich möchte, das ein Script die Anzahl der klickst (z.b. auf einen banner) zählt. Nach dem klick, soll eine Seite mit 2 frames erscheinen. Auf dem oberen soll man nun die Anzahl der klicks sehen, auf dem Unteren eine Seite.
Nun das größte Problem:
Wie kann ich das machen, das z.b. bei jedem 20 klick ein button oben erscheint? Anstatt der Anzahl der klicks, oder auch einfach neben der Anzahl der klicks.

Falls sich jemand damit auskennt, soll er bitte antworten ;)

MfG
Stormsam

Gaert
19-10-2002, 17:17
Hallo!

Bei jedem klick auf den Banner kannst du das Skript count_clicks.php aufrufen!

Dieses liest die Datei clicks.txt aus, in der die aktuelle Klickanzahl gespeichert ist!
Wenn die Zahl in der Datei "19" ist leitet er mit



header("Location: frameseite.php?show_button=1");


weiter und setzt die Zahl in der Datei auf "0".

Wenn die Zahl kleiner "19" ist addiert er einfach 1 dazu und leitet mit



header("Location: frameseite.php?show_button=0");


weiter!

In frameseite.php sieht z.B. so aus:



<?php
if ($_POST[show_button]) $trans="?show_button=1";
?>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="./top.php<?php echo $trans?>" name="topFrame" scrolling="NO" noresize >
<frame src="./xyz.php" name="mainFrame">
</frameset>


Wenn also in top.php $_GET[show_button] == 1 ist dann zeigst du deinen Button an, ansonsten halt net!

Hoffe das Hilft...

Gaert

Stormsam
19-10-2002, 17:36
Hi!
Ich bin leider noch nicht so der php experte, deswegen habe ich da noch ein paar kleine fragen ;)

Ich habe jetzt den Script angefangen zu schreiben.

Ich habe eine frame.php erstelle und da den code


<?php
if ($_POST[show_button]) $trans="?show_button=1";
?>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="./top.php<?php echo $trans?>" name="topFrame" scrolling="NO" noresize >
<frame src="./xyz.php" name="mainFrame">
</frameset>


eingefügt.

Zum test habe ich einfach eine Datei xyz.php erstellt.
Nun habe ich eine top.php erstellt und war mir nicht sicher was da rein soll.
Ich habe das so gemacht:


<?php
header("Location: frameseite.php?show_button=1");
header("Location: frameseite.php?show_button=0");
?>

Wenn ich jetzt die frame.php aufrufe kommt der Fehler: top.php - Seite nicht gefunden. Wie soll ich datei dann nennen, da ich aus dem ./top.php<?php echo $trans?> nicht schlau werde.

Was habe ich falsch verstanden? :D
Schreibe bitte, was ich da falsch gemacht habe.
MfG
Stormsam

Gaert
19-10-2002, 17:49
Auf dem oberen soll man nun die Anzahl der klicks sehen,

top.php ist die Obere Seite... also liest du in dieser Datei die Datei clicks.txt aus!

Für Inhalt top.php:



<?php
$fh=fopen("./clicks.txt","r");
$number=fread($fh,2);
$fclose($fh);
echo "<p>Anzahl der Klicks:<b> $number </b></p>";

if ($_POST[show_button])
echo"BUTTON";

?>

Gaert
19-10-2002, 17:55
Zur erklärung:

Mit der Funktion header() kannst du den HTML Header verändern!

Wenn z.B. "Location: http://www.web.de" im header einer Datei steht, dann wird der Browser automatisch auf die seite http://www.web.de umgeleitet!

Da du in top.php zwei header reingeschrieben hast (von denen nur der letzte berücksichtigt wird!) wurde die Seite umgeleitet auf die Siete frameseite.php (die es bei dir anscheinend nicht gibt, weil du sie frame.php genannt hast!).

Übrigens funktioniert die Header funktion nur wenn auf der Seite noch nichts (auch kein Leerzeichen und kein Zeilenumbruch) ausgegeben wurde!

Stormsam
19-10-2002, 18:05
HI!

hmm... ich bekomme jetzt den Fehler:

Fatal error: Call to undefined function: () in /usr/local/httpd/htdocs/Stormsam/top.php on line 4


Ich habe jetzt die header so eingestellt:


<?php
header("Location: buttonja.php?show_button=1");
header("Location: buttonnein.php?show_button=0");
?>


in der buttonja.php steht:


<?php
$fh=fopen("./clicks.txt","r");
$number=fread($fh,2);
$fclose($fh);
echo "<p>Anzahl der Klicks:<b> $number </b></p>";

if ($_POST[show_button])
echo"BUTTON";

?>


in der buttonnein.php


<?php
$fh=fopen("./clicks.txt","r");
$number=fread($fh,2);
$fclose($fh);
echo "<p>Anzahl der Klicks:<b> $number </b></p>";
?>


So müßte er doch einmal den button anzeigen und einmal nicht oder?

Doch es kommt immer dieser Fatal error!

Was habe ich falsch gemacht ?!?

MfG
Stormsam

Gaert
19-10-2002, 18:14
Kleiner Fehler von mir ;)


So muss die top.php aussehen... (habs nicht getestet)



<?php
$fh=fopen("./clicks.txt","r");
$number=fread($fh,2);
fclose($fh);
echo "<p>Anzahl der Klicks:<b> $number </b></p>";

if ($_POST[show_button])
echo"BUTTON";

?>


Das hier ist schwachsinn:



<?php
header("Location: buttonja.php?show_button=1");
header("Location: buttonnein.php?show_button=0");
?>


in welcher Datei hastn das stehen (wenn das bei dir die top.php sein sollte dann haste mal was ganz falsch verstanden... bitte das einfügen was ich oben gepostet hab!)?

Stormsam
19-10-2002, 18:23
Hi!

ok, jetzt scheints zu funktionieren, nur zeigt er nicht die anzahl der klicks an ;)

Jetzt nach mal zur erklärung ;)
Ich habe eine count_clicks.php wo drin steht:


<?php
if ($_POST[show_button]) $trans="?show_button=1";
?>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="./top.php<?php echo $trans?>" name="topFrame" scrolling="NO" noresize >
<frame src="./test.php" name="mainFrame">
</frameset>

dann kommt die top.php mit:


<?php
$fh=fopen("./clicks.txt","r");
$number=fread($fh,2);
fclose($fh);
echo "<p>Anzahl der Klicks:<b> $number </b></p>";

if ($_POST[show_button])
echo"BUTTON";

?>

und das wars ;), bin mir nicht sicher, wo das

<?php
header("Location: buttonja.php?show_button=1");
header("Location: buttonnein.php?show_button=0");
?>


hinsoll !

MfG
Stormsam

Gaert
19-10-2002, 18:44
OK!

Ich hab jetzt alles nochmal durchgetestet.. hatte nen kleinen verhaspler.. musste _GET heissen nicht _POST aber egal!

Is mir jetzt zu doof geworden und ich habs dir einfach mal schnell programmiert!

Nicht fein, auch kein guter stil... halt ein 2 Minuten Hack... sonst seh ich uns hier noch die ganze nacht sitzen!

Les dirs durch, wenn du was net verstehst dann meld dich nochmal!!!

Stormsam
19-10-2002, 19:17
sorry, das ich dich weiterhin nerve ;)
ersteinmal, danke für den Script!

Doch wenn ich den hochladen und auf den Link klicke kommt dieser Fehler:



Warning: fopen("./clicks.txt","w") - Permission denied in /usr/local/httpd/htdocs/stormsam/count_clicks.php on line 6

Warning: Supplied argument is not a valid File-Handle resource in /usr/local/httpd/htdocs/stormsam/count_clicks.php on line 10

Warning: Supplied argument is not a valid File-Handle resource in /usr/local/httpd/htdocs/stormsam/count_clicks.php on line 19

Warning: Cannot add header information - headers already sent by (output started at /usr/local/httpd/htdocs/stormsam/count_clicks.php:6) in /usr/local/httpd/htdocs/stormsam/count_clicks.php on line 20

Woran liegt das?!?
MfG
Stormsam

Gaert
19-10-2002, 19:32
Hallo!

Du musst die clicks.txt mit chmod writable machen!

Zum Testen einfach mal mit:

chmod 777 clicks.txt

Stormsam
19-10-2002, 20:15
Hi!
Ja jetzt funktioniert es, danke ;)
Doch irgendwie sieht man button beim 19 oder 20 klick.
Und wäre es möglich vielleicht irgendwie eine kleine reload sperre rein zu machen ?

Würde mich über eine weitere antwort freuen ;)

MfG
Stormsam

Gaert
19-10-2002, 21:14
Ööhm... 19. oder 20. Klick???

Also bei mir ist es immer der 20. Klick...

Wegen der Reload sperre würde ich mir einfach mal irgenwo ein counter skript runterladen und mir das mal durchlesen... is ja auch noch ein kleiner lerneffekt dabei... oder selber schreiben...
Kleiner hinweis: $_SERVER['REMOTE_ADDR'] enthält die IP des Clients!

Stormsam
19-10-2002, 21:19
Hi!
Sorry, hatte einen kleinen Tipp Fehler.
Ich meine bei mir fängt er nach der 19 neu an zu zählen. Dannach kommt 0 und kein button!

Und wegen der reloadsperre, ok ich versuche das irgendwie selber herauszufinden ;)

MfG
Stormsam

Gaert
19-10-2002, 21:27
Hallo!

Wenn der Zähler auf 0 gesetzt wird, dann zeigt er auch den Button an!

Falls das bei dir nicht so ist würde ich mal den Browsercache löschen!

Stormsam
19-10-2002, 21:37
Browsercache?

Gaert
20-10-2002, 00:07
Die Temporären Internet Dateien...
Dateien die vom Browser Gecached werden!

Im IE -> Extras -> Internetoptionen -> Dateien löschen!