Archief - PHP: remember me vinkje werkt niet.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bram

Legacy Member
oké, voor m'n nieuw project werk ik met een log in systeem gebaseerd op sessions/cookies naar gelang men een remember me vinkje aanvinkt, zoals vbulletin bv...

hoe ga ik te werk:

HTML:
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<input type="text" value="Username" name="usname" />
<input type="checkbox" name="remember" />Remember me
<br />
<input type="password" value="" name="passw" /> 
<input type="submit" value="Log In" name="submLogin" />
</form>

het feitelijke formulier is uitgebreider, ik heb gewoon onnodige dingen er ff uitgeknipt voor de leesbaarheid


en dan voor de php
PHP:
// Log in
if(isset($_POST['submLogin'])) {
    $loginname = isset($_POST['usname']) ? $_POST['usname'] : "";
    $loginpass = isset($_POST['passw']) ? $_POST['passw'] : "";
    
    $loginpass = md5($loginpass);

    $remember = $_POST['remember'];
    
    if(!empty($loginname) && !empty($loginpass)) {
        $c = mysql_num_rows(mysql_query("SELECT * FROM accounts WHERE name = '$loginname' AND password = '$loginpass'"));
        if($c > 0) {
                if($remember == FALSE) {
                    $_SESSION['loggedin'] = $loginname;
                } else {
                    setcookie('loggedin', $loginname);
                }
        } else {
            echo 'Wrong password or username';
        }
    }
}

// controle of er nog niet ingelogd is en het log in scherm dus getoont moet worden
if(!isset($_SESSION['loggedin']) || !isset($_COOKIE['loggedin'])) {

maar om de een of andere reden wil het maar niet werken...

daarjuist leek het wel te werken, maar nadat ik m'n logout functie geschreven had niet meer, zou het daar aan kunnen liggen?
PHP:
if(isset($_POST['submLogout'])) {
	if(isset($_COOKIE['loggedin'])) {
		setcookie("loggedin","");
		
	}
	if(isset($_SESSION['loggedin'])) {
		session_destroy();
	}
	header("Location: /cosmoswars/play/");
}

Oké, ik heb er nu eens de session en de cookie laten echo'en om te kijken wat er gebeurd. de remember me vink werkt blijkbaar wel, want als ik die aanvink dan wordt de cookie gezet, vink ik hem niet aan dan wordt de sessie gezet. maar ie wil me niet aanmelden, wanneer wil ie wel aanmelden: als beide gezet zijn, ondanks dat er een || staat ...

killgore

Legacy Member
$remember = isset($_POST['remember']);

is iets correctere code al, maar betwijfel of het daaraan zal liggen.

edit: ah, uw edit niet gelezen: uw logica is verkeerd:

als je hebt "a || b" (dus als cookie of session geset is => ingelogd) en je wilt daarvan het inverse (niet ingelogd pakken), dan is het !a && !b, && gebruiken dus :p.

Bram

Legacy Member
lap, twas te verwachten da het zo iets ging zijn :p

merci, tis gefixt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan