Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Link login veranderen als iemand is ingelogt naar logout.

Tijmen_Smit
8 antwoorden
  • 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]
  • lol daar zit deze noob ook al mee te klooien bij mij veranderd het pas als je op een andere link op de pagina klikt
    www.phpfreakz.nl forum
    weet iemand hoe dat op te lossen?
  • Ik heb het nooit zo gehad op dat header gebeuren, ik gebruik zelf graag echo "<META http-equiv='refresh' content='0;URL=http://weetikveel.nl/index.php'>";[/color:40a8d04cda]. Misschien is dat een optie?
  • 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 HTTP 1.1 specs (hfdst 14.30) kijken.

    Een oplossing zou dan kunnen zijn een META refresh, aangezien dan een nieuwe request gegenereerd wordt.

    -Rémy
  • ik heb ook al META geprobeerd maar dat geeft bij mijn inlog een error
    http://www.kassenaar.com/php/hoofdstuk_12.zip
    login2.php
  • Sessies is je antwoord.

    Creating a PHP Login Script
  • [quote:e821554070="h4xX0r"]Sessies is je antwoord.

    Creating a PHP Login Script[/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]
  • [quote:bf9ee6afbb="Cable guy"][quote:bf9ee6afbb="h4xX0r"]Sessies is je antwoord.

    Creating a PHP Login Script[/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]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.