Rematusen Skrevet 4. september 2008 Del 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 Lenke til kommentar
Lokaltog Skrevet 4. september 2008 Del 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. Lenke til kommentar
Rematusen Skrevet 4. september 2008 Forfatter Del 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 Lenke til kommentar
Rematusen Skrevet 4. september 2008 Forfatter Del Skrevet 4. september 2008 Ingen som har en løsning? Lenke til kommentar
OISNOT Skrevet 4. september 2008 Del 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 Lenke til kommentar
Rematusen Skrevet 4. september 2008 Forfatter Del 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 Lenke til kommentar
OISNOT Skrevet 5. september 2008 Del Skrevet 5. september 2008 $id = $_SESSION['id'] = $select['id']; $id .= $_SESSION['id'] .= true; Følger ikke helt den "logikken". Lenke til kommentar
460r Skrevet 5. september 2008 Del 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 Lenke til kommentar
Lokaltog Skrevet 5. september 2008 Del 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. Lenke til kommentar
OISNOT Skrevet 5. september 2008 Del 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 Lenke til kommentar
Rematusen Skrevet 5. september 2008 Forfatter Del 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.. Lenke til kommentar
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å