Oprettet ons. d. 27. oktober 2010 kl. 21:46:03

bigtime
bigtime (7.550 point. Point ude: 15)

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 ?

Skrevet ons. d. 27. oktober 2010 kl. 22:01:21| #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.

Skrevet ons. d. 27. oktober 2010 kl. 22:13:53| #2

welcor
welcor (10.186 point)
@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.

Skrevet ons. d. 27. oktober 2010 kl. 22:19:29| #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 ...

Skrevet tor. d. 28. oktober 2010 kl. 11:31:17| #4

viperine
viperine (35.213 point)
www.amunium.dk
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å.

Skrevet fre. d. 29. oktober 2010 kl. 11:05:34| #5

bigtime
bigtime (7.550 point)
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 ???

Skrevet fre. d. 29. oktober 2010 kl. 14:59:06| #6

Hvis du vælger at bruge cookies, kan De se alle de film som de ønsker ...

Skrevet lør. d. 30. oktober 2010 kl. 15:22:15| #7

bigtime
bigtime (7.550 point)
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

Skrevet søn. d. 31. oktober 2010 kl. 01:14:53| #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.

Skrevet man. d. 01. november 2010 kl. 09:52:19| #9

bigtime
bigtime (7.550 point)
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";
 
    }
}

Skrevet man. d. 01. november 2010 kl. 10:26:07| #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']){

Skrevet man. d. 01. november 2010 kl. 10:37:51| #11

bigtime
bigtime (7.550 point)
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

Skrevet man. d. 01. november 2010 kl. 10:42:45| #12

bigtime
bigtime (7.550 point)
hele balladen kommer når jeg sætter header("Location:$url");
ind

Skrevet man. d. 01. november 2010 kl. 11:13:01| #13

bigtime
bigtime (7.550 point)
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

Skrevet man. d. 01. november 2010 kl. 11:51:38| #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.

Skrevet man. d. 01. november 2010 kl. 12:27:13| #15

bigtime
bigtime (7.550 point)
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

Skrevet man. d. 01. november 2010 kl. 13:22:18| #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.

Skrevet man. d. 01. november 2010 kl. 16:47:22| #17

bigtime
bigtime (7.550 point)
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

Skrevet man. d. 01. november 2010 kl. 16:58:47| #18

bigtime
bigtime (7.550 point)
ud over det så har du da helt sikkert fortjent de point, kom lige med et svar

Skrevet man. d. 01. november 2010 kl. 17:25:59| #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å? :)

Skrevet man. d. 01. november 2010 kl. 17:26:10| #20


Skrevet man. d. 01. november 2010 kl. 17:26:26| #21


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger