Gå til innhold

Toppliste script


Anbefalte innlegg

Fint du tok deg tid til det :)

 

Er alltid åpen for mer fleksibilitet, men det kan vi ta en gang du har tid :) Har egentlig det jeg trenger i tabellen, men behovet for flere funksjoner vil nok komme med tiden det også.

 

Har prøvd skriptet. Sorteringen funker fint nå, som du sa. Det gjør sperren også, helt til jeg skrur av og på modemet mitt, og fornyer IP'en. Da kan jeg gjøre som jeg har omtalt tidligere, og klikke refresh så mange ganger jeg ønsker uten å få noen sperre opp.

 

Hvorfor det er slik aner jeg ikke, dere kan se om det samme skjer med dere (hvis dere han anledning til å skifte IP). Husk å ikke gå ut av vinduet mens dere fornyer IP'en.

Lenke til kommentar
Videoannonse
Annonse

Så lenge du er på en internettoppkopling med dynamisk ip, vil ikke sperren fungere. Du kan jo f.eks ha en dobbelsperre som sjekker både ip OG cookies, men dette kan jo også omgåes.

Dersom du ønsker en 100% løsning må du nok ha avstemming på brukernivå, slik at man må logge seg på for å kunne stemme.

Lenke til kommentar

Hmm.. Cookies hadde jo ikke vært å fornekte, men der ligger alt på dere to .. Alt etter hva dere vil bruke tid på :)

 

Take u'r time :woot:

 

 

 

PS: Hvordan er status for automatisk resetting av lista nå egentlig? Har vi det? Mistet litt oversikten her.

Lenke til kommentar

Disse forandringene er nå gjort for å sjekke cookies også:

 

I check_ip.php:

-Lagt til en funksjon som formaterer tid basert på unix-timestamp:

-Lagt til en sjekk helt øverst før vi sjekker ip.(Dersom den finner en småkake, så trenger vi ikke å sjekke ip i tillegg)


<?php

function check_ip() {



//Sjekk cookie først!

if(isset($_COOKIE['stemt'])){



 $dato = formater_tid($_COOKIE['stemt']);

 echo "Beklager, du avga stemme <b>$dato</b>.<br>For å unngå manipulering av resultatet tillater vi ikke flere stemmer fra deg dette døgnet.<br><br><a href=index.php?ID>Tilbake</a>";

 exit();

}



$ip = $_SERVER['REMOTE_ADDR'];



/*  Database Information - Required!!  */

/* -- Configure the Variables Below --*/

$dbhost = '127.0.0.1'; 

$dbusername = 'root'; 

$dbpasswd = 'root'; 

$database_name = 'vote';



/* Database Stuff, do not modify below this line */



$timeout = time() - 86400; //86400sekunder=24timer



$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")

 or die ("Couldn't connect to server.");



$db = mysql_select_db("$database_name", $connection)

 or die("Couldn't select database.");



$query = "DELETE FROM voted WHERE timestamp<$timeout"; 

$result2 = mysql_query($query) or die("<br>Query failed:<br> $query"); 





$query = "SELECT * FROM voted WHERE IP='$ip'";

$result = mysql_query($query) or die("<br>Query failed:<br> $query");

$num=mysql_numrows($result);



if ($num>0) {



 $dato=mysql_result($result,0,"timestamp");

 $dato = formater_tid($dato);

 echo "Beklager, noen med IP adressen <b>$ip</b> avga stemme <b>$dato</b>.<br>For å unngå manipulering av resultatet tillater vi ikke flere stemmer fra samme IP.<br><br><a href=index.php?ID>Tilbake</a>";

 exit();

}

}



function formater_tid( $timestamp ){



$dato=getdate($timestamp);

$tid=array($dato['hours'],$dato['minutes']);

if(strlen($tid[0]) < 2)

 $tid[0] = "0".$tid[0];

if(strlen($tid[1]) < 2)

 $tid[1] = "0".$tid[1];

$tid=$tid[0].":".$tid[1];

$dato = $dato['mday']."/".$dato['mon']." ".$dato['year'];

$tid = $tid." ".$dato;



return $tid;

}



?>

 

I vote.php:

- Her trengte vi bare å legge til følgende kodelinje:

setcookie ("stemt",time(), time()+86400);

Er egentlig samme hvor du legger denne linjen, så lenge du ikke skriver noe html først.

 

Var ikke så vanskelig, eyh? :wink:

Lenke til kommentar

TAKK! :yes:

Nå er vi godt på vei! Håper det er OK jeg sender deg en melding dersom jeg trenge litt hjelp med skriptet :) Ha en fin helg!

 

EDIT:

Skulle hatt en kolonne til med "Hjemmeside". Gidder du forklare kort hvordan jeg går fram? :)

Lenke til kommentar

OK - fikk til hjemmeside feltet selv. Men det jeg lurer på er om det er mulig å automatisk sende en person videre til index.php etter han har brukt sin stemme. Slik at linken ikke blir ../index.php?ID

 

Noen som vet? Problemet er at det virker som om cookie'en som vi la inn kun hentes ned dersom siden åpnes i eget vindu. Jeg åpner siden i en frame, og kan stemme så mange ganger jeg ønsker ved å klikke Refresh / F5.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...