Avatar billede subit Nybegynder
05. juni 2003 - 12:49 Der er 5 kommentarer og
1 løsning

if($hit_idag) hjælp !

Hej allesammen

Jeg har en counter som jeg gerne vil have at man kun kan se 1 gang om dagen, eller selvfølgelig se den så mange gange man vil men den skal kun tælle op 1 gang om dagen.
Altså så når man ser den gemmer den ens IP i mysql-db'en og sætter en cookie!
Og så skal den sættes til at "slette" ens IP fra databsen når klokken bliver 00:00 så man kan få en hit 1 gang om dagen!
Hvor dan kan jeg gøre det?

mvh. Subit
Avatar billede ahv Nybegynder
05. juni 2003 - 13:50 #1
$ip = getenv(REMOTE_ADDR);
$time = date("Y-m-d 23:59:59");
$query = mysql_query("SELECT * FROM dintabel WHERE ip='$ip' AND time < '$time'");
$row = mysql_fetch_array($query);
if (!$row) {
//Smid i databasen
} else {
// Vis tælleren
}

Når du sætter ind i databasen skal du så ikke indsætte tiden med en now() men med en $time = date("Y-m-d 23:59:59");
da du skal sætte grænsen for hvornår man må igen.
Avatar billede ahv Nybegynder
05. juni 2003 - 13:53 #2
Kommer lige med et helt eksempel om 5 min.
Avatar billede subit Nybegynder
05. juni 2003 - 13:55 #3
ok ;)
Avatar billede tipsen Nybegynder
05. juni 2003 - 14:03 #4
Dvs. man antager, at flere brugere ikke kan have samme ip-nummer - dvs. eksistensen af proxy-servere og lignende er ikke muligt?
Avatar billede ahv Nybegynder
05. juni 2003 - 14:07 #5
Ja nu blev det her eksempel til en hel tæller, men du kan vel se princippet alligevel:

<?php
$server = "host";
$username = "user";
$password = "pass";
$database = "db";
$connection = mysql_pconnect($server,$username,$password);
mysql_select_db($database);

$ip = getenv("REMOTE_ADDR");
$time = date("Y-m-d H:i:s");
mysql_query("DELETE FROM tjektabel WHERE time < '$time'");
$query = mysql_query("SELECT * FROM tjektabel WHERE ip='$ip' AND time > '$time'");
$row = mysql_fetch_array($query);
if (!$row) {
    mysql_query("UPDATE hittabel SET hits=hits+1");
    $time = date("Y-m-d 23:59:59");
    mysql_query("INSERT INTO tjektabel (ip, time) VALUES ('$ip','$time')");
}
$query = mysql_query("SELECT hits FROM hittabel");
$row = mysql_fetch_array($query);
echo "Der har været: $row[hits] på siden";
?>


Tabelstrukturene i databasen er:

CREATE TABLE `tjektabel` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(20) NOT NULL default '',
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `hittabel` (
  `hits` int(11) NOT NULL default '0'
) TYPE=MyISAM;

#
# Data dump for tabellen `hittabel`
#

INSERT INTO `hittabel` VALUES (0);
Avatar billede subit Nybegynder
05. juni 2003 - 14:30 #6
Tak AHV! Du er lidt for cool til det der php ;)
Keep it real fellow ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester