PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Klick Button +1 Counter


Viento
11.08.2009, 20:56:05
Hallo zusammen nocheinmal :)

Habe noch eine Frage:

Habe einen Counter:
<?php

/////////////////////////////////////////
// Counter + Reloadsperre v1.0
/////////////////////////////////////////

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 1;
// IP-Datei
$ipdatei = "ips.txt";
// Counterdatei
$datei = "counter.txt";
// Anzahl der führenden Nullen
$stellen = 5;
// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++) {
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)) {
if ($ip_addr == $rem_addr) {
$gefunden=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}

/////////////////////////////////////////
// Counter-Abfrage
/////////////////////////////////////////

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Falls die Datei existiert, wird sie ausgelesen und
// der dort enthaltene Wert um Eins erhöht.
$fp=fopen($datei,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Die Datei counter.txt existiert nicht, sie wird
// neu angelegt und mit dem Wert 1 gefüllt.
$fp=fopen($datei,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
} else {
// Die Datei existiert zwar, jedoch handelt
// es sich wahrscheinlich um den gleichen Besucher
$fp=fopen($datei,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
}

$zahl=sprintf("%0".$stellen."d",$zahl);

?>

funktioniert auch wunderbar.... nur ich möchte das der zähler nur zählt wenn einer auf einen bestimmten button drückt... wie bekomm ich das hin?

cortex
11.08.2009, 21:14:22
Tip: benutze die php-tags des forums zur formatierung von quelltexten - siehe forenregeln (http://www.selfphp.de/forum/announcement.php?f=12). niemand wühlt sich gern durch unformatierten code...

cx

xabbuh
11.08.2009, 22:37:56
Du kannst mit einer Bedingung prüfen, ob z.B. ein bestimmter URL-Parameter übergeben wurde:

<?php
if(isset($_GET["paramName"]) && $_GET["paramWert"] == "irgendwas") {
// hier den gewünschten Code reinschreiben
}

Viento
11.08.2009, 23:19:06
also müsste das dann so aussehen? :


<?php

if(isset($_GET[""]) && $_GET["paramWert"] == "irgendwas") {
// hier den gewünschten Code reinschreiben
}

/////////////////////////////////////////
// Counter + Reloadsperre v1.0
/////////////////////////////////////////

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 0;
// IP-Datei
$ipdatei = "ips.txt";
// Counterdatei
$datei = "counter.txt";
// Anzahl der führenden Nullen
$stellen = 5;
// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++) {
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)) {
if ($ip_addr == $rem_addr) {
$gefunden=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}

/////////////////////////////////////////
// Counter-Abfrage
/////////////////////////////////////////

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Falls die Datei existiert, wird sie ausgelesen und
// der dort enthaltene Wert um Eins erhöht.
$fp=fopen($datei,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Die Datei counter.txt existiert nicht, sie wird
// neu angelegt und mit dem Wert 1 gefüllt.
$fp=fopen($datei,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
} else {
// Die Datei existiert zwar, jedoch handelt
// es sich wahrscheinlich um den gleichen Besucher
$fp=fopen($datei,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
}

$zahl=sprintf("%0".$stellen."d",$zahl);

?>



und woher bekomme ich den parameterwert bzw name von dem button her?

der quellcode des buttons sieht so aus:

<form method="post">
<input name="Submit1" type="submit" value="Ich mache mit!"></form>


Vielen dank schonmal

xabbuh
12.08.2009, 00:13:25
also müsste das dann so aussehen? :
[...]
Nein, an der Stelle innerhalb des if-Zweiges, an der ich den Kommentar gesetzt habe, muss natürlich dein Code stehen, der den Zählerstand um Eins erhöht.

und woher bekomme ich den parameterwert bzw name von dem button her?

der quellcode des buttons sieht so aus:

<form method="post">
<input name="Submit1" type="submit" value="Ich mache mit!"></form>
Der Schlüssel innerhalb des superglobalen Arrays wird durch das name-Attribut des Buttons bestimmt. Der Wert durch das value-Attribut. Da du das Formular per POST-Methode verschickst, musst du dementsprechend aber auch auf $_POST zugreifen:

if(isset($_POST["Submit1"]) && $_POST["Submit1"] == "Ich mache mit!") {
}

Viento
12.08.2009, 21:53:59
irgendwie bekomm ich das nicht hin:(

ich weis nicht was genau dann da stehen muss:(

wäre nett wenn ihr mir helfen würdet...Danke

cortex
13.08.2009, 18:43:39
wäre nett wenn ihr mir helfen würdet

sorry, das klingt eher nach wenn ihr mir das machen würdet. du hast doch bereits so viel (konkrete) hilfe erhalten...

cx

Viento
13.08.2009, 20:01:24
ich habe es wirklich versucht :(
und nicht nur 10 mins sondern recht lange aber ich bin am verzweifeln.....tut mir leid aber ich weis wirklich nicht was ich da falsch mache....bitte helft mir...

cortex
13.08.2009, 21:45:09
bitte helft mir...

sorry, so kommst du (hier) nicht weiter. schau dir bitte punkt D unserer forenregeln (http://selfphp.de/forum/announcement.php?f=12) an. wenn die grundlegenden dinge wie der zugriff auf superglobale variablen geklärt ist, machen wir weiter.

cx