Rematusen Skrevet 4. september 2008 Skrevet 4. september 2008 (endret) Når man er logget inn blir man sendt til: /innlogget/index.php. Men når jeg er innlogget så ser det ut som om mysql, ikke returnerer noe Kan dere hjelpe meg å finne hva jeg må gjøre om i scriptene ? $da skriver ikke ut noe.. /index.php (bunn fil/logginn): Klikk for å se/fjerne spoilerteksten nedenfor <?php require 'config_root.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>NETT COMUNITY - <?php echo index; ?></title> </head> <body> <?php if(isset($_POST['logon'])) { mysql_logon(); // Koble til $user = mysql_real_escape_string($_POST['bruker_input']); $password = mysql_real_escape_string(md5($_POST['pass_input'])); $sql_select = mysql_query("SELECT * FROM users WHERE user_name = '$user'"); $select = mysql_fetch_array($sql_select); if($select['user_pass'] != $password) { print 'Feil brukernavn/passord!'; } else { session_start(); $id = $_SESSION['id'] = $select['id']; $id .= $_SESSION['id'] .= true; header ( "Location: /innlogget/index.php" ); } mysql_cllose(); // Avslutte tilkoblingen } ?> <h1>Logg inn:</h1> <form action="/index.php" method="post"> Brukernavn:<br /> <input type="text" name="bruker_input" /><br /> Passord:<br /> <input type="password" name="pass_input" /><br /> <input type="submit" name="logon" value="Logg Inn!" /> </form> <h2>Ikke registrert, trykk <a href="/registrer.php">her</a>!</h2> </body> </html> /innlogget/index.php: Klikk for å se/fjerne spoilerteksten nedenfor <?php session_start(); ob_start(); if($_SESSION['id'] == true){ require ''.$_SERVER['DOCUMENT_ROOT'].'/config_root.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Innlogget</title> </head> <body> <?php if(isset($_POST['logut'])) { $_SESSION = array(); session_destroy(); header ("Location: /"); } mysql_logon(); $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'"); while($row = mysql_fetch_array($sql_test)) { $da = $row['user_name']; } ?> <?php echo "sql_test:<br />" . $sql_test; print '<br />Navn:<h1>'.$da.'</h1>'; ?> <form action="" method="post"><input type="submit" name="logut" value="Logg Ut!" /></form> </body> </html> <?php } else {header ( "Location: /" ); } ?> sql_test:Resource id #4 Navn: Returnerer innlogget/index.php.. Endret 5. september 2008 av Rematusen
Lokaltog Skrevet 4. september 2008 Skrevet 4. september 2008 Vel, det som skjer i scriptet ditt er at du looper gjennom hele resultatsettet, og lagrer kun det siste brukernavnet i variablen $da. Sett inn denne kodesnutten og sjekk hva som blir outputted: $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'"); while($row = mysql_fetch_array($sql_test)) { print_r($row); } Hvis det ikke blir outputtet noen informasjon om variabelen $row, så er resultsettet fra MySQL tomt (dette kan også sjekkes med mysql_num_rows()). I så fall skyldes vel dette at kriteriet i spørringen (user_id = $_SESSION['id']) ikke matcher noen rader.
Rematusen Skrevet 4. september 2008 Forfatter Skrevet 4. september 2008 (endret) Vel, det som skjer i scriptet ditt er at du looper gjennom hele resultatsettet, og lagrer kun det siste brukernavnet i variablen $da. Sett inn denne kodesnutten og sjekk hva som blir outputted: $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'"); while($row = mysql_fetch_array($sql_test)) { print_r($row); } Helt tomt.. I så fall skyldes vel dette at kriteriet i spørringen (user_id = $_SESSION['id']) ikke matcher noen rader. Det er en rad i tabbelen som heter user_id. Endret 4. september 2008 av Rematusen
OISNOT Skrevet 4. september 2008 Skrevet 4. september 2008 (endret) $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'"); Hvis user_id er integer burde du kanskje fjerne ' rundt verdien ($_SESSION['id']). Eller prøv echo på $_SESSION['id'] og se om den faktisk eksisterer i databasen... BTW: if($_SESSION['id'] == true){ kan bedre skrives som if($userId = filter_var($_SESSION['id'], FILTER_VALIDATE_INT)) { ... $sql_test = mysql_query("SELECT * FROM users WHERE user_id = $userId"); Endret 4. september 2008 av OISNOT
Rematusen Skrevet 4. september 2008 Forfatter Skrevet 4. september 2008 (endret) $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'"); Hvis user_id er integer burde du kanskje fjerne ' rundt verdien ($_SESSION['id']). Eller prøv echo på $_SESSION['id'] og se om den faktisk eksisterer i databasen... BTW: if($_SESSION['id'] == true){ kan bedre skrives som if($userId = filter_var($_SESSION['id'], FILTER_VALIDATE_INT)) { ... $sql_test = mysql_query("SELECT * FROM users WHERE user_id = $userId"); Skrev echo $_session[id], og det returnerte 1. Men i databasen er id på brukeren 2! Men når jeg skriver: echo $userID;, (userid = session(id)). Så kommer det ingenting Noe feil med innloggingen da? Endret 4. september 2008 av Rematusen
OISNOT Skrevet 5. september 2008 Skrevet 5. september 2008 $id = $_SESSION['id'] = $select['id']; $id .= $_SESSION['id'] .= true; Følger ikke helt den "logikken".
460r Skrevet 5. september 2008 Skrevet 5. september 2008 (endret) Ikke det at jeg tror dette er problemet, men sier i fra alikevel Du har en skrivefeil når du stenger databasen. mysql_cllose(); // Avslutte tilkoblingen Endret 5. september 2008 av borgizzle
Lokaltog Skrevet 5. september 2008 Skrevet 5. september 2008 Gjetter på at det som skjer når du kjører $id .= $_SESSION['id'] .= true; er at den caster ID'en til boolean, og da får den bare verdien true ("1" når den castes til string). Prøv å fjerne linja og se om det funker bedre da.
OISNOT Skrevet 5. september 2008 Skrevet 5. september 2008 (endret) Gjetter på at det som skjer når du kjører $id .= $_SESSION['id'] .= true; er at den caster ID'en til boolean, og da får den bare verdien true ("1" når den castes til string). Prøv å fjerne linja og se om det funker bedre da. Det castes til string. Hvis de hadde verdien 1 fra før får $_SESSION['id'] verdien 11 og $id får verdien 111. Endret 5. september 2008 av OISNOT
Rematusen Skrevet 5. september 2008 Forfatter Skrevet 5. september 2008 Ikke det at jeg tror dette er problemet, men sier i fra alikevel Du har en skrivefeil når du stenger databasen. mysql_cllose(); // Avslutte tilkoblingen Funksjon (function {}) Gjetter på at det som skjer når du kjører $id .= $_SESSION['id'] .= true; er at den caster ID'en til boolean, og da får den bare verdien true ("1" når den castes til string). Prøv å fjerne linja og se om det funker bedre da. Takk, Lokaltog! Det fungerte Begynte å lure, siden etter jeg endret litt igår - så ble plutselig id 21 :s når den egentlig var 2..
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå