Besucher Countdown

G

greendog

Hallo!

Ich suche ein System, dass jedem x beliebigen User (z.B jeden 2000.) eine Art "Passwort" (es sollte jedes Mal ein neues sein) einblendet, mit dem er sich bei mir melden kann, um eine Prämie zu bekommen.
Den Besuchern sollte dargestellt werden, wie viele Besucher noch fehlen, damit der 2000. Besucher wieder da ist (Es fehlen noch __ Besucher, bis zur nächsten Prämie).
Optimal wäre ein kleines Menü wo ich sehen könnte zu welchem Zeitpunkt die 2000er Grenze wieder erreicht wurde und welches Passwort dem User eingeblendet wurde, um Gewissheit zu haben, dass der Besucher, der sich bei mir meldet auch wirklich der 2000. ist.

Kenne mich leider kaum mit PHP aus, kann höchstens mal lesen, was ein Script so macht ;)

Vieleicht kann mir ja jemand helfen.!
 
Zuletzt bearbeitet von einem Moderator:
Ich suche im Grunde nur grobe Hilfen.

Wem das ganze zu viel Arbeit ist, umsonst zu machen (kann ich natürlich verstehen) - mir würde es schon sehr helfen, einfach einen Besucher CountDown (gegenteil von Counter) zu haben, der von 2000 runterzählt und dann wieder von vorne anfängt.
 
Hast du den ne Datenbank auf deine Webseite oder nur die HTML Datein?
müstest halt bei jedem Seiten aufruf die Besucher in der Datenbank nach unten Zählen lassen und wenns 0 ist wird halt der Text ausgegeben!
 
Hallo Harry,

MySQL habe ich. Ich weiß leider nicht wie ich das lösen soll - bei jedem Beusch müsste jedenfalls -1 gerechnet werden, und statt "0" sollte am besten ein beliebiger Text stehen (ideal sollte der dann irgendwo auch noch für mich aufrufbar sein)
 
Also, mir war gerade sehr langweilig, deshalb habe ich es mal eben hingeklatscht... Sollte funktionieren...

PHP:
<?php
$count = "./count.txt";
$pass = "./pass.txt";
$steps = 2000;

require_once("./iplock.php");
$check = new ip_check();

$cc = explode("|", file_get_contents($count));

if($check->ip_pruefen()) {
	$fp = fopen($count, "w");
	$cc[0]++;
	echo $cc[0]."<br/>";
	if($cc[0] == $cc[1]) {
		$password = md5(microtime());
		echo "Gl&uuml;ckwunsch, Sie sind der ".$cc[0].". Besucher!<br/>Bitte melden Sie sich mit diesem Passwort per Mail an: bla@bla.bla<br/>
				Pass: ".$password;
		$cc[1] = $cc[1] + $steps;
		$rc = fopen($pass, "a");
		$entry = $_SERVER['REMOTE_ADDR']."|".$cc[0]."|".date('l, d. F Y')."|".$password;
		if(!fwrite($rc, $entry)) echo "Error while writing Password File!";
	} else echo $cc[1] - $cc[0]." Hits bis zum n&auml;chsten Hit!";
	$cont = $cc[0]."|".$cc[1];
	if(!fwrite($fp, $cont)) {
		echo "Error while Updating Counter.";
	}
} else {
	echo $cc[0]."<br/>";
	echo $cc[1] - $cc[0]." Hits bis zum n&auml;chsten Hit!";
} 
?>

Zwei Dateien sollten erstellt werden:
count.txt
pass.txt

Außerdem brauchst du diese Klasse von Tucker:
http://www.tutorials.de/forum/php-tutorials/247088-php-klasse-zum-loggen-von-ips-ohne-mysql.html

Einfach die php Datei umbenennen in iplock.php

Der Inhalt der count.txt sollte so aussehen:
0|2000
Wenn du bei 2000 den ersten Hit haben willst, außerdem $steps anpassen.
In der pass.txt findest du dann entsprechend immer:
IP Adresse, Welche Zahl er getroffen hat, Datum und das Passwort.
Das wars eigentlich.
 
WOW, einfach nur WOW!

Vielen vielen dank!

Echt super hier. Danke danke danke

Ich probiere es direkt aus...

*voll freu*

___
Edit 5²³
Fasse mal meine Edits zusammen, also das Script klappt super, ich hab nur noch ein Problem mit der IP Sperre - die habe ich wohl falsch eingebunden (siehe Anhang)
Nochmal eine Frage zu dem Passwort, es wird ja ausgegeben in Form von MD5 Verschlüsslung - woher weiß ich jetzt welches Passwort das ist (aus der pass.txt) und ob der User wirklich das Passwort hatte - habe nicht vor dort 100000 Passwörter reinzuschreiben, nur damit keiner behaupten kann er hätte das Passwort, obwohl er es nur von jmd. anderem weiß, der schonmal der 2000er Besucher war
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Sorry für den Doppelpost.

Meine Ansprüche haben sich erweitert ;)
Was ist wenn nun böse User mit Bots auf die Seite kommen?
Dann geht der Counter munter runter und dann hab ich den Salat!

Also ein Verify Code...

config.php
Code:
<?
$host = "xxx"; // MySQL-Host eintragen
$user = "xxx"; // MySQL-Benuztername eintragen
$pass = "xxx"; // MySQL-Passwort eintragen
$database = "xxx"; // MySQL-Datenbank eintragen

$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?>

rand.php
Code:
<?
$a = $_GET['a'];
include("config.php");

$s = mysql_query("SELECT * FROM `img` WHERE `verify` = '$a'");
$code = mysql_fetch_assoc($s);

$zahl = $code['code'];

header("Content-type: image/png");
$image = imagecreate(70, 25);
$red = imagecolorallocate($image, 255,0,0);
$blue = imagecolorallocate($image, 0,0,255);
$green = imagecolorallocate($image, 0,255,0);
imageline($image, 0, 0, 70, 25, $green);
imageline($image, 70, 0, 0, 25, $blue);
imageline($image, 70, 12, 0, 12, $green);
imagestring($image, 10, 22, 5, "$zahl", $blue);
imagepng($image);
?>

test.php
Code:
<?
include("config.php");
function random_string($chars = 6)
{
  $s = uniqid(mt_rand(), true);
  $s = sha1($s);
  $s = substr($s, mt_rand(0, 40-$chars), $chars);
  return $s;
}
$verify = random_string(6);
$zahl = rand(1,9).rand(1,9).rand(1,9);
mysql_query("INSERT INTO `img` VALUES ('$zahl','$verify')");

print '

<img src="rand.php?a='.$verify.'" border="0" alt="Bitte abtippen!">
<input type="text" name="code" />
<input type="hidden" name="verify" value="'.$verify.'" />
';
?>

<?
include("config.php");
$code = $_POST['code'];
$verify = $_POST['verify'];

$s = mysql_query("SELECT * FROM `img` WHERE `verify` = '$verify'");
$fetch = mysql_fetch_assoc($s);

If ($fetch['code'] != $code) {
print("Sie haben den Sicherheitscode falsch abgetippt!");
mysql_query("DELETE FROM `img` WHERE `verify` = '$verify'");
die("");
} Else {
mysql_query("DELETE FROM `img` WHERE `verify` = '$verify'");
}
?>


<?php
$count = "./count.txt";
$pass = "./pass.txt";
$steps = 5;

require_once("./iplock.php");
$check = new ip_check();

$cc = explode("|", file_get_contents($count));

if($check->ip_pruefen()) {
    $fp = fopen($count, "w");
    $cc[0]++;
    echo $cc[0]." Besucher insgesammt <br/>";
    if($cc[0] == $cc[1]) {
        $password = md5(microtime());
        echo "Gl&uuml;ckwunsch, du bist der ".$cc[0].". Besucher!<br/>Bitte melde dich mit diesem Passwort per Mail an: aRotWein@Web.de <br/>
                Passwort: ".$password;
        $cc[1] = $cc[1] + $steps;
        $rc = fopen($pass, "a");
        $entry = $_SERVER['REMOTE_ADDR']."|".$cc[0]."|".date('l, d. F Y')."|".$password;
        if(!fwrite($rc, $entry)) echo "Error while writing Password File!";
    } else echo $cc[1] - $cc[0]." Hits bis zum n&auml;chsten Hit!";
    $cont = $cc[0]."|".$cc[1];
    if(!fwrite($fp, $cont)) {
        echo "Fehler beim Zählen des Counters..";
    }
} else {
    echo $cc[0]."<br/>";
    echo $cc[1] - $cc[0]." Hits fehlen noch bis zur n&auml;chsten 5000er Grenze!";
} 
?>

Krieg das aber nicht so wirklich zusammen :(
(test.php besteht aus verify code auslesen, eingeben, prüfen ob richtig und dann der counter)

Codes von hier
 
Fantastisch!

Wow find ich echt toll wie schön einem hier geholfen wird!

Also das Script klappt nun super... aber habt ihr ne Ahnung wie man da noch 4 stunden gültige cookies und einen verify image reinbauen kann ?! ich kriegs nicht hin (wird wohl daran liegen das ich kaum php kann ;D)

flex, falls du mir wieder hilfst kann ich dich ja vllt. mit was kleinem belohnen, bin aber schüler und du kanst nicht mit viel geld rechnen :-/
 
Zurück