26. juli 2009 - 00:32Der er
33 kommentarer og 4 løsninger
Redirect, hvis browser ikke accepterer cookies
Jeg har brug for hjælp til at lave et script, der 1) tjekker om browseren accepterer cokkies 2) Hvis browseren ikke accepterer cookies redirecter til siden no_cookies.php
Det ville være fedt hvis jeg nøjes med noget kode på en side fx header.php, der så tjekker om folk accepterer cookies. Hvis de ikke gør skal siden ikke vises men istedet for no_cokkies.php
Kan det ikke lade sig gøre, men en kode på en side/fil?
#21 Nej, du er ikke galt på den. Det er det normale opsæt. Den løsning som #20 giver indbyder til en forældet metode at arbejde på - en metode som i øvrigt har voldt mange kvaler fra PHP4 (særligt i forbindelse med HTML validering).
Løsningen er dårlig og er ren dobbeltkonfekt. Med den måde som sessions fungerer på idag som default, kan du lige så godt benytte dig af sessions til at kontrollere for cookies. Kan du ikke få adgang til sessions data er det fordi cookien med session id'et ikke er sat.
Metoden med ?SID er ikke en forældet måde at håndtere sessions på, det er en ALTERNATIV måde at håndtere sessions på. Det virker også når klienten IKKE accepterer cookies - derfor!
#25 Der er nok nogen der bliver hurtige pigesure, hva'?
SID konstanten er kun tilgængelig såfremt at session_start() ikke blev placeret korrekt i en cookie. Så i min verden er det en nødløsning, et levn fra PHP4 - en holdning jeg har. At du mener det er et lige så godt alternativ som cookiebaserede sessions er jo sin holdning.
Udover det sludrer du vist i #26. SID konstanten har intet at gøre med det at en klient kun skal have adgang hvis denne accepterer cookies. Hverken som 'den bedste' eller 'den dårligste'. Det er en mulighed som du benytter dig af; og jeg har heldigvis ikke stødt på nogle i flere år, udover dig i denne tråd, der bruger den konstant til noget. Den eneste kommentar skrevet i manualen omkring konstanten er da en advarsel om at være påpasselig med den! Men jeg går ud fra du har tænkt dig at argumentere for hvorfor du mener at SID konstanten er den bedste løsning til at afgøre hvorvidt en klient skal have adgang til noget eller ej?
PHP byder på så mange andre elementer at kontrollere en klients adgang til diverse services på. Langt størstedelen af alle PHP udviklere benytter sig af sessions.
Synes godt om
Slettet bruger
27. juli 2009 - 14:33#28
#26 Metoden ?x=y vil kunne give brugeren mulighed for at tiltvinge sig adgang til siden, selvom browseren ikke accepterer cookies!
Det er ikke korrekt. Brugeren vil være i stand til at sætte $_GET['secondCall'] til false/0, men det vil kun gøre, at siden refresher endnu engang. Han vil ikke, ved at sætte get parameteret kunne komme ind på cookieYes.php. Til gengæld vil han, hvis han virkelig gerne vil, kunne sende en http-request med cookien test=test selvom hans browser ikke har gemt cookien, men det er der jo ingen grund til.
#24, enig. Det indbyder til at bruge Sessions på en forkert/forældet måde, selvom det godt kan lade sig gøre.
#28: "Brugeren vil være i stand til at sætte $_GET['secondCall'] til false/0, men det vil kun gøre, at siden refresher endnu engang." Du har ret!
#27: "SID konstanten er kun tilgængelig såfremt at session_start() ikke blev placeret korrekt i en cookie." Vrøvl!
Metoden ?SID er ikke ment som adgangskontrol, men som en hurtig måde at fordele klienter til coockie/nocookie scripts. Hvordan vil du iøvrigt håndtere sessions hvis klienten ikke accepterer cookies?
Synes godt om
Slettet bruger
27. juli 2009 - 15:05#30
#29, hvis session cookies ikke blev accepteret af klienten ville jeg give ham/hende en passiv version af siden, uden sessions, eller en fejlmeddelelse.
SID er en konstant, ikke en metode. At du vil bruge SID konstanten er din egen sag, så længe jeg slipper.
Og så til dit egentlige spørgsmål: Nemt; jeg håndterer ikke sessions, hvis klienten ikke tager imod sessions. Hvis klienten ikke kan få adgang til mine applikationer, gennem en ganske normal metode at anvende sessions på, så er klienten ikke vigtig. Søgemaskiner benytter sig ikke af cookies og sessions - og for mig ville det være lidt uheldigt at få indekseret sider med SID konstanten i min URL; så mine applikationer er altid udviklet med søgemaskiner i mente og den forventede klient. Langt størstedelen af alle klienter tillader cookies; dem der ikke gør, får kun begrænset adgang.
SID er kun tilgængelig uden $_get parameter i første kald fra klienten. Så set i det lys er brug af session ikke nødvendigt for at besvare det oprindelige spørgsmål i denne tråd (#1).
Synes godt om
Slettet bruger
27. juli 2009 - 15:56#33
Internet, har du fået besvaret dit spørgsmål? Vi (mig, repox og jesperghgh) er vist tilsammen nået frem til en løsning a la denne:
opuer2: Såfremt du ikke har noget reelt at bidrage med, så undlad venligst at kommentere spørgsmålet - især ikke som et svar da du så rent faktisk overtræder 2 punkter i reglerne - http://www.eksperten.dk/brugerbetingelser punkt 2.1.8 og 2.1.18.
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.