Gå til innhold

PHP & Cookies = Vanskelig


Anbefalte innlegg

Jeg har proevd aa leare meg hvordan man setter cookies i PHP men faar det ikke til i det hele tatt. Det er jo usannsynlig vanskelig i forhold til ASP (usj).

 

Er det noen som kunne tatt seg tid til aa forklart meg hvordan dette gjoeres i PHP ?

 

Jeg proever aa sette en cookie med 5 verdier som gaar ut 6 mnder etter at den ble satt.

Og jeg proever aa hente ut igjen de fem verdiene fra cookien .

 

Tusen takk for all hjelp

Lenke til kommentar
Videoannonse
Annonse
har du sett her:http://php.planetmirror.com/manual/en/features.cookies.php

 

Jau jeg proever... men jeg forstaar ikke helt :)

 


<?php



echo "Cookie testing <br />";



echo $_COOKIE["TestCookie"];



$value = "Cookien er satt";

setcookie("TestCookie", $value,time()+3600);



?>

 

Saa faar jeg denne error meldingen .. :

 

Cookie testingCookien er satt

Warning: Cannot add header information - headers already sent by (output started at /home/bergetun/public_html/cookie.php:3) in /home/bergetun/public_html/cookie.php on line 8

Lenke til kommentar


<?php

setcookie("TestCookie", $value,time()+3600);

echo "Cookie testing <br />";

echo $_COOKIE["TestCookie"];

$value = "Cookien er satt";

?>

 

når man skal sette headers med php så må det være det aller første som blir satt før noe blir printet til html, dvs at du kan ikke engang ha et mellomrom i scriptet før "<?php"...

Lenke til kommentar

Takker for hjelpen.

 

Dvs at cookies i PHP er ubrukelig til aa brukes til feks sjekking om en bruker har stemt i en poll.

 

Jeg proever aa sette cookien naar brukeren trykker paa vote knappen..

 

Slik som dette

 


<?php



include("dbconnect.php");



if($_POST['submit'] == "Vote!")

{

setcookie("Voted", "true",time()+3600*24*7); 



 

 

I ASP kan man sette cookien hvor som helst i koden saa der gjoeres ting litt annerledes.

Lenke til kommentar


<?php



include("dbconnect.php");



if($_POST['submit'] == "Vote!")

{

setcookie("Voted", "true",time()+3600*24*7); 



 

jeg har aldri brukt cookie i php selv, men den feilmld du fikk sier meg at du har prøvd å sette header flere ganger. med header kan man godt sette det nederst i et php script så lenge ingenting blir printet til html først, hvis du skjønner hva jeg mener da, så det er godt mulig at du kan plassere cookien hvor du vil å bare det ikke blir sendt noe noen retning først...

Lenke til kommentar
Dvs at cookies i PHP er ubrukelig til aa brukes til feks sjekking om en bruker har stemt i en poll.

 

En cookie er uansett verdiløs til å sjekke om en bruker har stemt i en poll fordi

a) Man kan deaktivere cookies helt i alle nettlesere

B) Man kan slette cookies i alle nettlesere

c) Ikke alle nettlesere støtter cookies

d) Sikkert flere grunner også.

 

Det aller sikreste er å bare la registrerte brukere stemme i poll-ene dine. Dermed så kan du sikre deg 100% mot ballot-stuffing (med mindre du har et automatisk brukerregistreringsscript som gjør at man kan registrere et utall med brukere).

 

For å stoppe hakket før at alle må registrere seg så kan du sette en cookie og logge ip-adressen. Men i og med at mange leverandører fremdeles opererer med dynamiske IP-adresser (kryss fingrene for at det blir en slutt med dette når IPv6 kommer) så er du fremdeles ikke helt beskyttet.

Lenke til kommentar
Dvs at cookies i PHP er ubrukelig til aa brukes til feks sjekking om en bruker har stemt i en poll.

 

En cookie er uansett verdiløs til å sjekke om en bruker har stemt i en poll fordi

a) Man kan deaktivere cookies helt i alle nettlesere

B) Man kan slette cookies i alle nettlesere

c) Ikke alle nettlesere støtter cookies

d) Sikkert flere grunner også.

 

Det aller sikreste er å bare la registrerte brukere stemme i poll-ene dine. Dermed så kan du sikre deg 100% mot ballot-stuffing (med mindre du har et automatisk brukerregistreringsscript som gjør at man kan registrere et utall med brukere).

 

For å stoppe hakket før at alle må registrere seg så kan du sette en cookie og logge ip-adressen. Men i og med at mange leverandører fremdeles opererer med dynamiske IP-adresser (kryss fingrene for at det blir en slutt med dette når IPv6 kommer) så er du fremdeles ikke helt beskyttet.

 

Jeg tok det med poll som ett eksempel siden jeg akkurat holdt paa med en poll for hjemmesiden min :)

Jeg skal bruke cookie og IP slik at det bare er mulig aa stemme 1 gang pr ip. Da blir sjansene mye mindre at en bruker kan stemme to ganger enn visst jeg bare brukte en av sjekk methodene. '

 

Uansett saa synes jeg at PHP methoden for aa sette cookie er mye vanskeligere enn i ASP/ASP.NET men saa lenge man vet om at man ikke kan sette cookie mitt i coden saa er det ikke saa farlig..

 

Ikke missforstaa meg, jeg er ikke noe Mircosoft elsker, faktisk LANG ifra.

 

Jeg har kodet ASP i 2 mnder og PHP i litt over en uke og jeg foeler jeg allerede kan mer PHP enn ASP.

Grunnen til dette er jeg har kodet mer C/C++ som ligner paa PHP enn Visual Basic som ligner paa ASP

Lenke til kommentar
  • 2 uker senere...
Gjest Slettet-rXRozPkg

jeg har aldri brukt cookie i php selv, men den feilmld du fikk sier meg at du har prøvd å sette header flere ganger. med header kan man godt sette det nederst i et php script så lenge ingenting blir printet til html først, hvis du skjønner hva jeg mener da, så det er godt mulig at du kan plassere cookien hvor du vil å bare det ikke blir sendt noe noen retning først...

 

Hvis man skrur på outputbuffering, så slipper man problemet med headers already sent at line blah blah...

 

OB er noe man burde skru på uansett, fordi man kan komprimere dataene som blir sendt til nettleseren (gzip), og hvis ikke nettleseren støtter det blir det sendt som normalt. Sparer båndbredde og nedlastningstid (som kanskje er det viktigste).

 


<?php

ob_start("ob_gzhandler");



echo "<h1>Her er det litt HTML ja</h1>";

header("Location: http://www.php.net/"); 



/*

ob_end_flush trengs egentlig ikke fordi PHP kaller

dette automatisk ved slutten av scriptet...

*/

ob_end_flush();



?>

 

Dette har løst en del hodebry gjennom diverse oppgaver jeg har gjort på skolen :D

 

Les mer her:

http://no.php.net/ob_start

Lenke til kommentar

For å stoppe hakket før at alle må registrere seg så kan du sette en cookie og logge ip-adressen. Men i og med at mange leverandører fremdeles opererer med dynamiske IP-adresser (kryss fingrene for at det blir en slutt med dette når IPv6 kommer) så er du fremdeles ikke helt beskyttet.

Nextgentel opererer jo med en og samme IP for alle brukerene som ha samme type abonement. Tåpelig. Hvis én Nextgentel-bruker blir utestengt fra et forum (ved hjelp av TP) blir jo alle Nextgentel kundene det :shrug:

Blir litt off topic dette, men poenget er at man verken bør bruke cookies eller IP til slike ting. Enten må alle få stemme så mye de vil, eller så må kun medlemmer få lov til det. Du kan jo gjøre det slik at pollen ikke kommer opp før brukeren har logget inn...

Lenke til kommentar
hva? har jeg aldri hørt om!

 

Alle nextgentelbrukere jeg vet om har forskjellig ip. hvor har du det fra?

To av kameratene mine har NGT og samme IP. De igjen vet om flere som har samme IP og abo som det de har.

 

De fleste vote systemer som paa dagbladet/vg bruker cookies og det er nok for en userioes avstemmning. Det er jo ikke som om vi skal stemme om medlemskap i EU..

Lenke til kommentar
hva? har jeg aldri hørt om!

 

Alle nextgentelbrukere jeg vet om har forskjellig ip. hvor har du det fra?

To av kameratene mine har NGT og samme IP. De igjen vet om flere som har samme IP og abo som det de har.

 

Dette høres meget rart ut. Etter å ha snoket rundt på nextgentel sine sider finner jeg ingenting som skulle tilsi at dette er riktig.

 

Jeg må spørre om du ikke mener at flere personer bak samme abonement får samme IP utad gjennom NAT i ruteren. Det er det isåfall ikke noe å si på.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...