Cookies
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Cookies
Jag har gjort en Opionsundersökning på en sida och använder just nu en sessions variabel för att kontrollera att folk inte röstar två gånger men detta går inte bra i längden eftersom det bara är att stänga browsern och rösta igen.
Så min fråga är om man skulle kunna lagra en cookie på beökarens datorn för då kan man ju inte rösta igen om man inte raderar dessa filer?
Och hur man gör detta. (Helst visa kodförslag eller en länk till en sida som visar detta).
OBS!
(Är det någon som har något bättre förslag så får ni även skriva detta)
Så min fråga är om man skulle kunna lagra en cookie på beökarens datorn för då kan man ju inte rösta igen om man inte raderar dessa filer?
Och hur man gör detta. (Helst visa kodförslag eller en länk till en sida som visar detta).
OBS!
(Är det någon som har något bättre förslag så får ni även skriva detta)
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP
- Peter Wall
- Hedersbit
- Posts: 7026
- Joined: 2002-03-08 0:52:56
- Location: Stockholm
- Contact:
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Grundare av webbyrån We made you look http://wemadeyoulook.at
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Ok , har också letat på PHP.net men har tyvärr inte hittat det, men tack för tipset
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Har ingen aning var felet ligge när jag skriver detta:
Code: Select all
setcookie ( 'rostat' , '1' , time()+60*60*24*7 , '/' , 'it.hule.harryda.se/itda01a/mikjoh/1024' , 1); // skall försvinna efter en vecka, adressen kanske skall vara med http://
if ($rostat) {
echo ("En cookie har skapats");
}
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
ok, har testat men det funkar inte kan du skriva hur du skulle göra helst så detaljerat som möjligt...
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP
- Niklas Berggren
- Hedersbit
- Posts: 3524
- Joined: 2002-03-08 17:53:04
- Location: Göteborg (Skövde)
- Contact:
det bästa är:
IP && Cookie && Session
alltså:
IP (MySQL) =
Cookie =
Session =
sen för att kolla om någon har votat:
IP(MySQL) =
Cookie =
Session =
kolla totalt om man får vote:a =
Sådära... observer att detta skrev jag snabbt och rakt ur huvudet så det finns säkert några fel, men detta är huvudprincipen.
Sen har du användarnamn så får du lägga till ett sådantfält i cookie && mysql så är det löst.
IP && Cookie && Session
alltså:
IP (MySQL) =
Code: Select all
mysql_query("INSERT INTO <tabell> (ip,pollnamn) VALUES('" . $_SERVER['REMOTE_ADDR'] . "','" . $pollnamn "')");
Code: Select all
setcookie("voted['pollnamn']",$pollnamn,time()+3600);
setcookie("voted['ip']",$ip,time()+3600); // håller i en timme, ändra 3600 till så många sekunder du vill ha, för ett år:
60*60*24*365 typ.
Code: Select all
session_start();
$_SESSION['SESS_VOTED'] = "VOTED";
IP(MySQL) =
Code: Select all
$MySQL_QUERY = mysql_query("SELECT * FROM <tabell> WHERE ip='" . $_SERVER['REMOTED_ADDR'] . "' AND pollnamn ='" . $pollnamn . "'");
if(mysql_num_rows($MySQL_QUERY) = 0){
$MySQL_voted = "no";
}
Code: Select all
if($_COOKIE['voted']['ip'] != $_SERVER['REMOTED_ADDR'] && $_COOKIE['voted']['pollnamn'] != $pollnamn){
$Cookie_voted = "no";
}
Code: Select all
if($_SESSION['SESS_VOTED'] != "VOTED"){
$Session_voted = "no";
}
Code: Select all
if($Session_voted == "no" && $Cookie_voted == "no" && $MySQL_voted == "no"){
// vad som ska göras om man får vote
}
Sen har du användarnamn så får du lägga till ett sådantfält i cookie && mysql så är det löst.
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Tackar för detta väldigt beskrivande svar. Låter helt perfekt skall nog fixa med en gång. Men orkar nog inte ha med IP delen... För jag orkar inte skapa en ny tabell för en massa IP.
Kanske lägger till IP lite senare... går ju faktiskt.
Tack för svaret
Lite väl mycket smilies där kanske.
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP
- Niklas Berggren
- Hedersbit
- Posts: 3524
- Joined: 2002-03-08 17:53:04
- Location: Göteborg (Skövde)
- Contact:
Sessioner är aktiva sålänge du inte startar om din browser och tillhandahålls på servern.Mirza* wrote:Hmh session är väl bara en sorts cookie (stänger man av cookies, så ryker också sessions har jag för mig), så att använda båda är väl lite onödigt?
"How about the government sticks to courts, police, defense and corruption and leave compassion to the people who have it?" - Penn Jillette.
- Bull1_Rid3
- Posts: 79
- Joined: 2002-10-06 16:45:04
- Contact:
Ja, men eftersom ip gör så att man inte skall kunna rösta med samma ip. Men eftersom inte alla har statiska IP så kommer inte bara detta att funka därför kan man även använda cookies för att förbättra detta sätt. Men man kan ju även tabort dessa cookies så därför är ju session till för att personen under tiden som han är inne på sidan inte skall kunna rösta igen. Men som sagt kan detta ej göras helt perfekt eftersom det finns alltid en utväg hur man än gör. Eftersom ingen har kommit med ett bättre förslag än "thr" så använder jag mig av detta.
AMD Athlon Xp 2100+ || ASUS A7V333 RAID || Creative GeForce 4 Ti4400 || 512DDR pc2700 minnen || Neonlight chassi || Akasa Silvermountain kylfläns med coolermaster DP5-6I31C-OL fläkt || IBM Deskstar 60GB + 120GB Maxtor || Windows XP