Archief - php: session's ?

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.

Qualistor

Legacy Member
Hallo,

Ik ben momenteel bezig een website te ontwikkelen waar een login systeem moet ingevoegd worden. Nu zit ik met een probleem ..
Eventjes de situatie uitleggen:

op de index.php pagina heb ik in de layout een form geplaatst,
die bij het verzenden login.php aanroept ( bevat de login functies etc. )

nu als er ingelogd wordt start ik een session, zoiets doe ik dus in dit stukje
PHP:
<?
//sessie starten
session_start();
error_reporting(E_ALL);
//includes
include("includes/functie.php");
include("includes/config.php");

//oude users verwijderen
mysql_query("DELETE FROM leden WHERE active = 0
                AND verloop < DATE_SUB( NOW(), INTERVAL 3 DAY)")or die(mysql_error());

   //gesubmit?
    if(isset($_POST['login'])){
        $pass= md5($_POST['pass']);
        //zoek gebruiker
        $result= mysql_query("select * from leden where naam='".$_POST['nickname']."'
                                            and (password='".$pass."' or temppass='".$pass."')") or die(mysql_error());
        $user= mysql_fetch_object($result);
        //als er een gebruiker gevonden is
        if(mysql_num_rows($result) > 0){
            //is hij actief
            if($user->active==1){
                //inloggen
                $_SESSION['nickname']= $_POST['nickname'];
                $_SESSION['login'] = 1;
                $_SESSION['rank'] =  $user->rank;
                $_SESSION['userid'] = $user->id;
                header("location: support_leden.php");  // VERANDERD
                exit();
            }

daarbij stel ik ook - $_SESSION['login'] = 1; - gelijk aan 1, zodat ik weet dat de gebruiker ingelogd is.

nu op de pagina support_leden.php vormt zich het probleem.
Alles werkt prima als de gebruiker ingelogd is, dat is geen probleem.
Maar wel als een gebruiker naar support_leden.php gaat die niet ingelogd is. Daar krijg ik een foutmelding in de aard van

"Notice: Undefined index: login in /home/sites/site117/users/perdu/web/inlogsysteem/site/support_leden.php on line 9 "

nu eens uitleggen hoe ik die pagina aangepakt heb :

PHP:
<? 

error_reporting(E_ALL);
//includes

include("includes/config.php");
include("login.php");

    if($_SESSION['login']==1){
        
        $userrank= mysql_fetch_object(mysql_query("select * from rank where id=".$_SESSION['rank']));
?>

<html>
blablalblal .. de pagina die dus komt na het inloggen
</html>

<? 
}else{
    echo '<meta http-equiv="refresh" content="1; URL=support.php">';
    }
?>

werkt als volgt ( of ja, kwou dat het zo werkte ) .. als je ingelogd bent, dan krijg je da pagina te zien .. niet ingelogd ga je terug naar de pagina waar je kan inloggen.

Nu zit het probleem blijkbaar in lijn 9, en deze is

PHP:
if($_SESSION['login']==1){

maar ik include toch m'n login.php? en aangezien de gebruiker niet ingelogd is zou deze nog op 0 moeten staan, en dus ook geen error geven ?

hopelijk heb ik m'n probleempje grondig uitgelegd en kan iemand me helpen?
ik heb het tijdelijk opgelost met een refresh maarja ..

alvast ZEER erg bedankt ;)

grtz

NeoNeke

Legacy Member
if (isset ($_SESSION['login'])) {

zal de truk wel doen...
wel maken dat wanneer een user uitlogt die sessiewaarde niet nul ofzo wordt maar gedestroyed wordt

Fr3aK

Legacy Member
session_start(); vergeten?

Of is dat niet nodig als je al op een andere pagina die sessie hebt gestart?

Qualistor

Legacy Member
NeoNeke zei:
if (isset ($_SESSION['login'])) {

zal de truk wel doen...
wel maken dat wanneer een user uitlogt die sessiewaarde niet nul ofzo wordt maar gedestroyed wordt

dat deed het idd .. thx alot!! rep puntje toegevoegd ;)

jep dit doe ik idd zo
PHP:
session_unset();
session_destroy();

vriendelijke groeten

Qualistor

Legacy Member
Fr3aK zei:
session_start(); vergeten?

Of is dat niet nodig als je al op een andere pagina die sessie hebt gestart?

dat is idd niet nodig .. eens de sessie gestart is lukt dit wel .. dit kun je stoppen door de sessie te distroyed te maken ( zoals hierboven al gezegd )

grtz

WHiSPy

Legacy Member
Qualistor zei:
dat is idd niet nodig .. eens de sessie gestart is lukt dit wel .. dit kun je stoppen door de sessie te distroyed te maken ( zoals hierboven al gezegd )

grtz

Afaik is dat wel nodig, hoor.

Gebruik eerder unset($_SESSION); dan session_unset() en session_destroy()... :)

Qualistor

Legacy Member
en wat is juist het verschil .. ofja voordeel ( nadeel van het mijne )

thx!!
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