02. december 2003 - 09:42Der er
33 kommentarer og 1 løsning
if sætning
Jeg er ved at lave en shop, men har lidt knas med en if sætning
den er her
if($_SESSION[tjek] == "") { echo "så log dog ind..."; } else if(isset($kob_x)) { include("shop/dbconnect.php"); mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); }
når man logger ind bliver $_SESSION[tjek] sat til OK, og hvis den ikke er sat skal det ikke være muligt at tilføje til kurven som ovenstående script gør.
Men der står bare hele tiden "så log dog ind" og intet bliver tilføjet i kurven. kan i hjælpe med den
Jeg ville personligt gøre sådan, men din metode burde også virke (dog med en notice, da php tror at tjek er en konstant).
if(!isset($_SESSION['tjek']) || empty($_SESSION['tjek'])) { echo "så log dog ind...";
Du kan evt prøve at dubugge ved at udskrive indholdet af $_SESSION['tjek']:
if(isset($_SESSION['tjek']) && !empty($_SESSION['tjek'])) { echo '$_SESSION['tjek'] indeholder: '.nl2br(htmlentities($_SESSION['tjek'])); else echo '$_SESSION['tjek'] er ikke sat, eller er tom';
For at sessions skal virke, skal brugeren ved begyndelsen af sessionen have tildelt et sessionID. Dette skal bruges, når han skal se yderligere sider.
Der er to metoder et sådant ID kan overføres:
1) med en cookie. Dette vil naturligvis kræve at browseren understøtter cookies. Det gør alle browsere nu til dags, men det kan slås fra i browserindstillingerne, og hvis brugeren har gjort det, virker en cookie-baseret session ikke.
2) via URL. Denne er uafhængig af browserindstillinger, men giver en grim adresse. Den kan kendes ved, at når man klikker videre på siden er der noget i stil med ?session=da357s8dn9b9y0r i adressefeltet.
For at URL-metoden skal virke, skal man enten have slået session.use_trans_sid til eller også skal man selv tilføje den til alle links internt på sit site.
Den skriver ingen sessionID i adressen, men den lægger en cookie. Første gang siden hentes, er sessionID i adresserne på siden, men derefter bruges cookies. Altså ser det ud til at denne del af din opsætning kører fint.
Jeg kan godt se, at den på een gang skriver både "så log dog ind" og "du er blevet logget ind", så det lyder som om du måske gør noget i forkert rækkefølge i dit script.
Kunne man få hele scriptet at se?
Derudover har min browser et problem med at din kode mildest talt ikke er gyldig XHTML. Når man bruger XHTML skal ALLE tags være med små bogstaver.
jeg har det hele på en side så det er en lidt stor fil, men smider den her på www.pc-dk.dk/fejl.phps
Synes godt om
Slettet bruger
02. december 2003 - 13:10#27
OK, jeg har fundet problemet. Lige når man logger ind, er $_SESSION['tjek'] ikke blevet sat til OK endnu, før den kommer helt ned til login-kontrollen. Derfor brokker den sig. Når man klikker videre til en ny side, virker det som forventet.
Løsning:
Flyt if(isset($login))-blokken højere op i scriptet.
Et andet tip ville være at flytte alle funktionserklæringerne til en anden fil, og blot inkludere den i toppen af selve scriptet. Og bare inkluder shop/dbconnect.php en gang i toppen også.
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.