03. december 2003 - 22:58Der er
4 kommentarer og 1 løsning
Session uden bøvl
Jeg har med mit ringe PHP-kendskab magtet at lave en login-funktion og starte en session. Jeg har også fået lavet udtræk fra den pågældende brugers data fra mySQL og lagt dem i $_SESSION - so far so good.
Næste trin bliver at få brugerens data med over i underliggende funktioner, hvor man bl.a. skal kunne redigere i ens egen profil. Hvordan gør man det uden bøvl? Skal jeg bibeholde min struktur med flere filer, hvor jeg så på en eller anden måde får $_SESSION med over. Eller skal jeg oprette en klasse med funktioner som så kan kaldes fra den fil, hvor sessionen kører. I så fald hvordan?
Bedste tutorial til at opbygge undermenuer i sessions belønnes?
OK hvor simpelt. Grunden til det snød mig er, at systemet ikke vil godtage min session når jeg fra en af undersiderne går tilbage til den side hvor sessionen starter. Der skal pilles i den if-sætning der tjekker for korrekt login, tror jeg.
Men betyder det så at en session kun afsluttes når man beder om det eller lukker browseren? Og er den kode der eksekveres ved forkert login tilstrækkelig?
Koden ser således ud lige nu: <? session_start(); session_register("counter"); $SID = session_id(); include ("db.php"); $tjek = mysql_query("SELECT id FROM profiler WHERE brugernavn = '$_GET[navn]' AND password = '$_GET[password]'")or die (mysql_error()); $fits = mysql_num_rows($tjek); session_register(tjek); session_register('SID'); if ($fits != 1) { //Afvikles hvis login er forkert unset($SID); unset($_SESSION[tjek]); header("Location: loginfejl.php"); } else { $counter++; $_SESSION[tjek] = "OK"; // Fylder data fra profilen ned i $_SESSION $sql = mysql_query("SELECT * FROM profiler WHERE brugernavn = '$_GET[navn]'") or die (mysql_error()); while ($data = mysql_fetch_array($sql)) { $_SESSION[id] = $data[id]; $_SESSION[brugernavn] = $data[brugernavn];
etc. etc.
Synes godt om
Slettet bruger
04. december 2003 - 01:47#3
Fra linien med $tjek=mysql_query(... og ned til et sted længere nede end det, du har vist her, skal flyttes ind i en
if ((!isset($_SESSION['tjek'])) || $_SESSION['tjek'] != "OK") { }
Slut-}-tegnet skal være ca. der, hvor du er færdig med at hente de indledende oplysninger til $_SESSION.
Derudover bør du nok finde et andet navn til at holde resultatet fra mysql_query end lige netop $tjek, for hvis du har register_globals sat til ON (og det tyder din kode på, at du har) ændrer du nok også $_SESSION['tjek'], når du ændrer $tjek. (Jeg er ikke helt sikker, men uanset er navnesammenfaldet en skidt ting, som let kan skabe forvirring.)
Jep, den sidste har jeg set i mellemtiden og rettet parametertitlen i $_SESSION til 'adgang'
Jeg roder lige med første del af dit forslag i morgen. Det lyder rimelig rigtigt. Point!
Synes godt om
Slettet bruger
04. december 2003 - 01:59#5
Så må du jo hellere få et svar.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.