Ga naar inhoud

Link login veranderen als iemand is ingelogt naar logout.


Aanbevolen berichten

De bedoeling is dus dat als iemand niet is ingelogt de link login.php verschijnt, als hij dus wel is ingelogt moet het verandert worden naar logout.php. Heb het onderstaande, maar het werkt dus niet. Iemand een idee waarom niet? Als je niet bent ingelogt staat er wel netje login maar zodra je inlogt en dan op uitloggen klikt blijft logout gewoon staan. En verandert dus niet terug naar login. Dit is de code die in het menu staat en dus controleert ofdat je bent ingelogd of niet. [code:1:6342500738] <?php if(isset($_COOKIE['user_id']) AND (substr($_SERVER['PHP_SELF'], -10) != 'logout.php')) { echo '<a href="logout.php">Logout</a>'; } else { echo '<a href="login.php">Login</a>'; } ?> [/code:1:6342500738] De code van logout.php [code:1:6342500738] <?php if(!isset($_COOKIE['first_name'])) { header ("Location: http://" .$_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']) . "index.php"); exit(); } else { setcookie ('firstname','', time()-300, '/', '', 0); setcookie ('user_id','', time()-300, '/', '', 0); } $page_title = 'Logout!'; include ('./header.inc'); echo '<p>You are now logged out</p>'; include ('./footer.inc'); ?> [/code:1:6342500738]
Link naar reactie
Het probleem zit hem waarschijnlijk in feit dat je met setcookie() je cookie laat verlopen bij de volgende request. De Location header stuurt de huidige request door, naar een andere pagina, maar de request is hetzelfde, dus bestaat de cookie nog steeds (deze verdwijnt pas bij de volgende request). Voor meer info kun je in de [url=ftp://ftp.isi.edu/in-notes/rfc2616.txt]HTTP 1.1 specs[/url] (hfdst 14.30) kijken. Een oplossing zou dan kunnen zijn een META refresh, aangezien dan een nieuwe request gegenereerd wordt. -Rémy
Link naar reactie
[quote:e821554070="h4xX0r"][url=http://www.php.net/manual/en/ref.session.php]Sessies[/url] is je antwoord. [url=http://www.free2code.net/tutorials/programming/php/4/phplogin.php]Creating a PHP Login Script[/url][/quote:e821554070] mijn login gaat via sessies?[code:1:e821554070] <?php session_start(); // sessie beginnen // controleren of pagina correct is aangeroepen. if (!empty($_POST)){ include("inc_connect.php"); $query = "SELECT * FROM users WHERE email='" . $_POST["email"] ."' AND wachtwoord='". $_POST["wachtwoord"]. "'"; $result = mysql_query($query) or die("FOUT : " . mysql_error()); if (mysql_num_rows($result) > 0){ // e-mailadres gevonden, registreer gegevens in session $username = $_POST["email"]; $wachtwoord = $_POST["wachtwoord"]; session_register("username"); session_register("wachtwoord"); /* Indien u in een live-applicatie nog meer gegevens hebt opgeslagen voor een user, deze dan uitlezen via mysql_fetch_row($result) en toekennen aan diverse variabelen voor gebruik elders in de site. Voor deze kleine applicatie is dat echter niet nodig. */ // Doorsturen naar beveiligde pagina header("Location: beveiligd.php"); exit(); }else{ // geen e-mail adres gevonden, of ongeldig wachtwoord. $tekst = "U hebt geen geldige combinatie van e-mailadres en wachtwoord opgegeven. Maak een keuze: <br> <a href=\"login.php\">Opnieuw inloggen</a><br> <a href=\"register.php\">Hier registreren</a><br>"; die($tekst); } }else{ // pagina was incorrect aangeroepen, direct doorsturen naar login.php header("Location: login.php"); } [/code:1:e821554070]
Link naar reactie
[quote:bf9ee6afbb="Cable guy"][quote:bf9ee6afbb="h4xX0r"][url=http://www.php.net/manual/en/ref.session.php]Sessies[/url] is je antwoord. [url=http://www.free2code.net/tutorials/programming/php/4/phplogin.php]Creating a PHP Login Script[/url][/quote:bf9ee6afbb] mijn login gaat via sessies?[/quote:bf9ee6afbb]Zelf ff checken. Zo uit de losse pols verzonnen :)[code:1:bf9ee6afbb] <?php session_start(); // sessie beginnen // controleren of pagina correct is aangeroepen. if (!empty($_POST)){ include("inc_connect.php"); if (!(isset($_SESSION['isloggedin']) && isset($_SESSION['username']) && isset($_SESSION['wachtwoord']) && ($_SESSION['isloggedin']=='1'))) { $query = "SELECT * FROM users WHERE email='" . $_POST["email"] ."' AND wachtwoord='". $_POST["wachtwoord"]. "'"; $result = mysql_query($query) or die("FOUT : " . mysql_error()); if (mysql_num_rows($result) > 0){ // e-mailadres gevonden, registreer gegevens in session // $username = $_POST["email"]; // $wachtwoord = $_POST["wachtwoord"]; $_SESSION['isloggedin'] = '1'; $_SESSION['username'] = $_POST['email']; $_SESSION['wachtwoord'] = $_POST['wachtwoord']; /* Indien u in een live-applicatie nog meer gegevens hebt opgeslagen voor een user, deze dan uitlezen via mysql_fetch_row($result) en toekennen aan diverse variabelen voor gebruik elders in de site. Voor deze kleine applicatie is dat echter niet nodig. */ // Doorsturen naar beveiligde pagina header("Location: beveiligd.php"); exit(); }else{ // geen e-mail adres gevonden, of ongeldig wachtwoord. $tekst = "U hebt geen geldige combinatie van e-mailadres en wachtwoord opgegeven. Maak een keuze: <br> <a href=\"login.php\">Opnieuw inloggen</a><br> <a href=\"register.php\">Hier registreren</a><br>"; die($tekst); } }else{ // pagina was incorrect aangeroepen, direct doorsturen naar login.php header("Location: login.php"); } else { header("Location: beveiligd.php"); exit(); } } [/code:1:bf9ee6afbb]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...