Hej
Jeg sidder og roder med et lille projekt med et log in, da jeg er i gang med at lære om sessions.
Mit problem er, at jeg ikke kan logge ud !
Min session bliver ikke destrueret selvom jeg bruger session_destroy(); eller unset($_SESSION['']);
Her er min kode:
index.php
- <?php session_start(); ?>
- <!DOCTYPE html>
-
- <html>
- <head>
- <meta charset="UTF-8">
- <title>sessions-01</title>
- </head>
- <body>
- <?php
- //er brugeren allerede logget ind ?
- if(empty($_SESSION['username'])){
-
- $_SESSION['username'] = " ";
-
- $logInButton = 'log in';
- $_SESSION['login'] = $logInButton;
-
- $formActionUrl = 'code_login.php';
- $_SESSION['formActionUrl'] = $formActionUrl;
-
- $usernameInputField = "<input type='text' name='username' placeholder='indtast brugernavn'>";
- $_SESSION['usernameInputField'] = $usernameInputField;
-
- $passwordInputField = "<input type='password' name='password' placeholder='indtast password'>";
- $_SESSION['passwordInputField'] = $passwordInputField;
-
- }else{
-
- $logOutButton = 'log out';
- $_SESSION['login'] = $logOutButton;
-
- $formActionUrl = 'code_logout.php';
- $_SESSION['formActionUrl'] = $formActionUrl;
-
- $usernameInputField = " ";
- $_SESSION['usernameInputField'] = $usernameInputField;
-
- $passwordInputField = " ";
- $_SESSION['passwordInputField'] = $passwordInputField;
- }
-
- ?>
- <form action="<?php echo $_SESSION['formActionUrl']; ?>" method="post">
- <!--<form action="code_login.php" method="post">-->
- <?php echo $_SESSION['usernameInputField'];?>
- <?php echo $_SESSION['passwordInputField'];?>
- <input type="submit" name="submit" value="<?php echo $_SESSION['login'];?>">
- </form>
- <p><?php echo $_SESSION['username'];?></p>
-
- <?php
- echo $formActionUrl.'<br><br>';
- echo $_SESSION['formActionUrl'].'<br><br>';
- echo $_SESSION['usernameInputField'].'<br><br>';
- echo $_SESSION['passwordInputField'].'<br><br>';
-
- ?>
- </body>
- </html>
code_login.php - undersøger om det indtastede brugernavn og password stemmer med den information, som er i databasen:
- <?php
- session_start();
-
- include './include_db.php';
-
- if(isset($_POST['submit'])){
-
- //query the database
- $sql = "SELECT * FROM user_tbl";
-
- $result = $objcon->query($sql);
-
- while ($row = $result->fetch_array()){
-
- //comaparing username and password from login form with database
- if($row['username'] == $_POST['username'] && $row['password'] == $_POST['password']){
-
- $username = $_POST['username'];
- $loginText = 'Logged in as ';
-
-
- }else {
-
- echo 'brugernavn eller password er forkert';
- }
-
- }
- }
-
- $_SESSION['username'] = $loginText.$username;
-
- header('location:index.php');
-
-
- ?>
code_logout.php - her forsøger jeg, at destruere brugerens session, som det kan ses i koden, så har jeg forsøgt mig med både session_destroy(); og unset() - jeg har prøvet, at bruge die(); og der endte jeg med at få en Undefined variable: _SESSION fejl, så det betyder vel, at sessionen er destrueret, men hvorfor er jeg så stadigvæk logget ind på index.php ?
- <?php
- //her er løsningen:
- session_start(); //havde glemt, at tilføje session_start();
-
- if(isset($_POST['submit'])){
-
- session_destroy();
-
- // unset($_SESSION['username']);
-
- // die();
-
- }
-
- header('location:index.php');
-
-
- ?>
Jeg håber I kan gennemskue hvad der er galt - er også godt klar over, at min php-kode vist ikke er den mest optimerede I har set, men jeg er rimelig nybegynder så...(nu er I advaret !)
EDITSå virker det ! - jeg spurgte en klassekammerat (en lean mean code wizard), da vi sad i toget på vej til skole, om hvad der kunne være galt og det eneste han faktisk spurgte om var: "har du brugt session_start(); på siden ?" (code_logout.php)
Mig: "øhh, næææ det tror jeg ikke... jeg havde vist en idé om at funktionen session_destroy(); havde en "indbygget" session_start !".
Klassekammeraten: "nå, men så prøv, at tilføje session_start(); til siden, sagde han, alt imens han var dybt begravet i sin bærbar og tastede løs på et eller andet C# projekt" - det sagde uden at virke nedladende, så stor respekt til ham.
Indlæg senest redigeret d. 31.03.2014 23:04 af Bruger #16670