Tharzul Skrevet 4. juli 2007 Del Skrevet 4. juli 2007 Hei. Jeg har litt problemer med et login script jeg har skrevet. Scriptet fungerer, og kjører helt fint uten noen feilmeldinger. Men informasjonen som skal bli lagret i sessions, ikke blir lagret av en eller annen grunn. Selve cookien blir laget, men det finnes ikke noe informasjon på den. Jeg finner ikke ut av feilen selv, så jeg håper noen har tid til å se over scriptet mitt, og kanskje finne feilen! Det hadde i så fall vært veldig hyggelig! <?php ob_start(); if(isset($_POST['submitted'])) { require_once('includes/mysql_connect.php'); // Validate the email address if(!empty($_POST['email'])) { $e = escape_data($_POST['email']); } else { echo '<p>You forgot to enter your email address!</p>'; $e = FALSE; } // Check for a password if(!empty($_POST['pass'])) { $p = escape_data($_POST['pass']); } else { echo '<p>You forgot to enter a password!</p>'; $p = FALSE; } if($e && $p) { // Data tests validated as OK // Get information about the user $query = "SELECT user_id, user_name, active FROM users WHERE email='$e' AND pass=SHA('$p')"; $result = mysql_query($query); $row = mysql_fetch_array($result, MYSQL_NUM); if($row) { // Match found // Check access level if($row[2] == 'admin') { $level = 'admin'; } elseif($row[2] == 'member') { $level = 'member'; } else { $level = FALSE; } if($level) { // Acount activated // Set the session data and redirect session_set_cookie_params(3600, '/', ''); session_name('YourUserID'); session_start(); $_SESSION['user_id'] = $row[0]; $_SESSION['user_name'] = $row[1]; $_SESSION['level'] = $level; ob_end_clean(); mysql_close(); // Redirect the user $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']); // Check for a trailing slash. if((substr($url, -1) == '/') OR (substr($url, -1) == '\\') ) { $url = substr ($url, 0, -1); // Chop off the slash. } // Add the page. $url .= '/index.php'; header("Location: $url"); exit(); // Quit the script. } else { // Account not activated yet echo '<p>Your account is not activated yet. Please recheck your email, or contact the system administrator.</p>'; } } else { // Email and password did not match echo '<p>The entered email and password combination did not match. Please try again.</p>'; } } else { // One of the data tests failed echo '<p>Please try again.</p>'; } } // End of main submit conditional ?> Takk! Lenke til kommentar
Ståle Skrevet 4. juli 2007 Del Skrevet 4. juli 2007 session_start(); skal vaere helt overst i alle filene som bruker sessions. Lenke til kommentar
Tharzul Skrevet 4. juli 2007 Forfatter Del Skrevet 4. juli 2007 Takk for svar, men det har ikke noe å si. Scriptet sender ikke noe til browseren før session_start(). Ville dessuten også fått en feilmelding da. Men uansett prøvde jeg som du sa, og det gjorde ingen forskjell. Cookien blir lagret, men finnes ikke noe informasjon som jeg kan hente ut ifra den. Lenke til kommentar
Crowly Skrevet 4. juli 2007 Del Skrevet 4. juli 2007 (endret) kan være greit å legge inn litt debug tekst. F.eks slik PHP <?phpsession_start(); echo "Row:<br /><pre>"; print_r($row); echo "</pre>"; $_SESSION['user_id'] = $row[0]; $_SESSION['user_name'] = $row[1]; $_SESSION['level'] = $level; echo "Session:<br /><pre>"; print_r($_SESSION); echo "</pre>"; ob_end_clean(); ?> Da skal du få ut en grei oversikt over innholdet i $row og $_SESSION for å dobbeltsjekke den informasjonen du forventer at skal være der er der. Litt på siden, ett alternativ til dette $row = mysql_fetch_array($result, MYSQL_NUM); er $row = mysql_fetch_row($result); litt mindre å skrive -- session_start(); skal vaere helt overst i alle filene som bruker sessions. Ikke nødvendig når man benytter output buffering som blir benyttet her. (Hvis jeg ikke har totalt missforstått). http://www.hudzilla.org/phpwiki/index.php?...utput_buffering Endret 4. juli 2007 av crowly Lenke til kommentar
Tharzul Skrevet 4. juli 2007 Forfatter Del Skrevet 4. juli 2007 Takk for tipsene, crowly! Og du har helt rett når det gjelder output buffering. Fant ut av feilen selv nå nettopp. Ble noe krøll siden jeg hadde på en eller annen måte fått til å lage to sessions når jeg trykket på login linken. Siden da en session allerede var laget med samme navn, ville ikke scriptet mitt lage en ny en. Men det er løst nå! 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å