Avatar billede bigtime Nybegynder
27. oktober 2010 - 21:46 Der 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 ?
Avatar billede webweaver Praktikant
27. oktober 2010 - 22:01 #1
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.
Avatar billede welcor Nybegynder
27. oktober 2010 - 22:13 #2
@webweaver: Hvad så med dem der sidder på det samme subnet (skoler, virksomheder, etc) og altså eksponerer samme IP?

Personligt ville jeg nok have brugt en cookie sådan som OP foreslår.
Avatar billede webweaver Praktikant
27. oktober 2010 - 22:19 #3
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 ...
Avatar billede Slater Ekspert
28. oktober 2010 - 11:31 #4
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å.
Avatar billede bigtime Nybegynder
29. oktober 2010 - 11:05 #5
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 ???
Avatar billede webweaver Praktikant
29. oktober 2010 - 14:59 #6
Hvis du vælger at bruge cookies, kan De se alle de film som de ønsker ...
Avatar billede bigtime Nybegynder
30. oktober 2010 - 15:22 #7
hm oki så bliver det med en log i db'en
men hvordan kunne den fil se ud som tjekker dben om de har set 3 film ??
:D
Avatar billede webweaver Praktikant
31. oktober 2010 - 01:14 #8
Det vil se således ud;

<?php

$ip = $_SERVER['REMOTE_ADDR'];
$dato = date("d");

$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());

Den vil slette 2 dage gamle rækker.
Avatar billede bigtime Nybegynder
01. november 2010 - 09:52 #9
tak :D
men hvorfor kan jeg ikke det her ??

$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if($_SESSION['username'] == False ){
$ip = $_SERVER['REMOTE_ADDR'];
$dato = date("d");

$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) {
 
        header("Location:$url");
 
    } else {
 
        echo "Film";
 
    }
}
Avatar billede webweaver Praktikant
01. november 2010 - 10:26 #10
Det er da et godt spørgsmål.
Det må du fortælle mig, hvorfor kan du ikke det? Får du fejl eller ...?

Prøv at skifte

if($_SESSION['username'] == False ){

til

if(!$_SESSION['username']){
Avatar billede bigtime Nybegynder
01. november 2010 - 10:37 #11
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
Avatar billede bigtime Nybegynder
01. november 2010 - 10:42 #12
hele balladen kommer når jeg sætter header("Location:$url");
ind
Avatar billede bigtime Nybegynder
01. november 2010 - 11:13 #13
nu sætter jeg det i selve den fil som afspiller filmene så kommer den med den her fejl

Warning: Cannot modify header information - headers already sent by (output started at /public_html/index.php:14) in /public_html/film.php on line 19
Avatar billede webweaver Praktikant
01. november 2010 - 11:51 #14
header skal du have før din <head></head> elementer.
Så hvis du skal videresende en person, indsæt PHP i toppen af din fil.
Avatar billede bigtime Nybegynder
01. november 2010 - 12:27 #15
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
Avatar billede webweaver Praktikant
01. november 2010 - 13:22 #16
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..
 
    } else {
 
      // include film.php her ... 
    }

Så har du omgået din header, så vidt jeg kan se.
Avatar billede bigtime Nybegynder
01. november 2010 - 16:47 #17
så fik jeg lavet det.
lavet det sådan her

if($_SESSION['username'] == false ){
$ip = $_SERVER['REMOTE_ADDR'];
if(!$_SESSION['username']){
$ip = $_SERVER['REMOTE_ADDR'];
$side = $_SERVER['HTTP_HOST'];
    $ref = $_SERVER['HTTP_REFERER'];

$dato = date("d");

$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());

$spil = "<object id='player' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' name='player' width='600' height='600'>
        <param name='movie' value='film/player.swf' />
        <param name='allowfullscreen' value='true' />
        <param name='allowscriptaccess' value='always' />
        <param name='flashvars' value='file=".$row10['link']." ?>&image=".$row10['billede']."' />
        <embed
            type='application/x-shockwave-flash'
            id='player2'
            name='player2'
            src='film/player.swf'
            width='600'
            height='600'
            allowscriptaccess='always'
            allowfullscreen='true'
            flashvars='file=".$row10['link']."&image=".$row10['billede']."'
        />
    </object> ";
 
    }
}    } else {
    $spil = "<object id='player' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' name='player' width='600' height='600'>
        <param name='movie' value='film/player.swf' />
        <param name='allowfullscreen' value='true' />
        <param name='allowscriptaccess' value='always' />
        <param name='flashvars' value='file=".$row10['link']." ?>&image=".$row10['billede']."' />
        <embed
            type='application/x-shockwave-flash'
            id='player2'
            name='player2'
            src='film/player.swf'
            width='600'
            height='600'
            allowscriptaccess='always'
            allowfullscreen='true'
            flashvars='file=".$row10['link']."&image=".$row10['billede']."'
        />
    </object> "; }

og så nede hvor det skal vises har jeg lavet det sådan her
<?  echo "$erro"  ?><br /><?PHP echo "$spil"; ?>

er det helt ude i hampen eller syntes du der er okay
Avatar billede bigtime Nybegynder
01. november 2010 - 16:58 #18
ud over det så har du da helt sikkert fortjent de point, kom lige med et svar
Avatar billede webweaver Praktikant
01. november 2010 - 17:25 #19
Har lige lidt svært ved at overskue det med din opsætning.

Men øverst fx,

if($_SESSION['username'] == false ){
$ip = $_SERVER['REMOTE_ADDR'];
if(!$_SESSION['username']){
$ip = $_SERVER['REMOTE_ADDR'];

Du starter 2 if sætninger som er ens.

om man skriver $_SESSION['username'] == false eller !$_SESSION['username']; er ligemeget. Det giver det samme her.

Så det forstår jeg ikke rigtig hvorfor at du har :)

Så har du også et sted som ser sådan ud,

  }
}    } else {

Den har jeg også lidt svært ved lige at tyde, hvordan hænger sammen :)

Men det vigtigste er vel at det virker, og det gør det kan jeg næsten forstå? :)
Avatar billede webweaver Praktikant
01. november 2010 - 17:26 #20
Svar :) Tak for point.
Avatar billede webweaver Praktikant
01. november 2010 - 17:26 #21
Hov, her er svaret ;-)
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