27. oktober 2010 - 21:46Der er
20 kommentarer og 1 løsning
se max 3 film før opret ?
Hvordan laver jeg så en besøgene på min side kun kan se 3 film på siden om dagen med mindre de laver en profil på min side, skal man lave det med cookie eller ?
Det kunne man, men lidt usikkert, da man selvfølgelig bare kan slette cookien.
Ville nok lave det med en database. Når personen skal se video'en, bliver der smidt en række i databasen med en ip og en dato. Så kan der forholdsvis simpelt laves en linie, hvor den tæller om der er 3 i dag, og hvis der er, vises filmen ikke.
Det er klart, det vil blokke alle der sidder på samme IP. Det kan der ikke ændres på. Så må De jo oprette en profil. Det er jo det samme, hvis man banner en person på IP ...
Hvor imod igen, cookien kan man bare slette, og så se 3 igen, og blive ved således.. Så hvis der skal være noget sikkerhed i det, er det ubrugeligt.
Men det er self. en vurderingssag, hvor vigtigt det virkeligt er. Det er jo bare video'er. Men hvis det var mig, ville jeg stadig lave det med IP og MySQL ...
Der må jeg være enig med webweaver. En cookie er en fuldstændig ubrugelig løsning, der svarer til bare at skrive på siden "Du må kun se 3 videoer om dagen, ellers kommer jeg efter dig", og så håbe på at folk overholder det.
IP bans rammer for bredt, ja, men det ved folk i lokalnetværk godt, og her er der jo slet intet problem, når man bare kan oprette den profil, som velsagtens er det spørger håber på.
tror det bliver en cookie det er nok bedst, men så mit næste problem hvordan laver jeg en cookie.
når brugeren kommer ind på siden skal den chekke om der er en cokkie og hvis der ikke er skal den lave en, de må godt se alt på siden på nær de må kun se 3 film og når de prøver film 4 så skal den smide brugeren hen på en side hvor han kan oprette sig og hvis de har deaktiveret cookie på computeren må de ikke se film men skal på siden til at oprette sig så de kan se alle film, er den svær at lave ???
$videoCheck = mysql_query("SELECT COUNT(*) AS antal FROM table WHERE ip = '$ip' AND DATE_FORMAT(time, '%d') = '$dato'") or die(mysql_error());
$videoCheck = mysql_result($videoCheck,0);
if ($videoCheck >= 3) {
echo "Ingen film";
} else {
echo "Film";
}
?>
Du skal så have en tabel i din database som indeholder et id, en dato og en ip. Dato feltet hedder her i eksemplet time, så det kan du bare kalde det, og det skal være typen datetime.
Når IP'en skal registreres i databasen, vil koden se således ud;
mysql_query("INSERT INTO table (time, ip) VALUES (NOW(),'$ip')") or die(mysql_error());
Det skal sættes ind i din fil, før det ovenstående script.
Og så vil jeg råde dig til at smide et SQL statement ind mere, som rydder gamle rækker i databasen, som ikke har betydning mere.
Det ser sådan her ud,
mysql_query("DELETE FROM table WHERE date_add(time,interval 2880 MINUTE) < NOW()") or die(mysql_error());
der er ingen forskæl på om det er if(!$_SESSION['username']){ eller if($_SESSION['username'] == False ){ men når der finder 3 felter i tabellen log så viser den bare ikke siden mere så kan ikke se hvilken fejl det er
så har jeg et lille problem for min film.php er indcludet i index.php ville have det så dan at folk kan se alt andet på siden men når de har set 3 film så skal de oprette sig for at se flere film men de kan stadig se alt andet på siden selvom de har set 3 film
Jeg er ikke sikker på hvordan du vil have det. Du har index.php, hvor du includer film.php inde i. film.php styrer om der bliver vist film eller ej på nuværende tidspunkt.
Hvad havde du så håbet på at din header ville gøre?
Kan du ikke bare sige i din index.fil;
if ($videoCheck >= 3) {
// include en fil her, som siger du ikke har adgang til flere film..
$videoCheck = mysql_query("SELECT COUNT(*) AS antal FROM log WHERE ip = '$ip' AND DATE_FORMAT(dato, '%d') = '$dato'") or die(mysql_error());
$videoCheck = mysql_result($videoCheck,0);
if ($videoCheck >= 3) {
$erro = "Du kan ikke se flere film i dag, men du kan oprette dig en profil og se flere film gratis :D<br>Ellers kom igen i morgen og du kan se flere film";
} else { mysql_query("INSERT INTO log (ip,filmid,ref,dato) VALUES ('$ip','$side','$ref',NOW())") or die(mysql_error());
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.