een tijdje terug heb ik hier een aantal vragen gesteld over het starten van cookies. Ik ben toen geholpen en mijn script werkte perfect. Ik ben toen een aantal weken gestopt en wou het van de week weer oppakken maar op de een of andere manier kan ik niet meer inloggen.

Het is nog steeds hetzelfde script als een aantal weken geleden en ik heb het op meerdere thuisservers geprobeerd, waaronder:
* UsbWebserver
* Xampp
* EasyPHP
en een aantal andere.

Oja, er worden ook geen errors weergegeven terwijl error eall ofzo aanstaat.

Het script logt je in maar als je dan vervolgens naar een andere pagina gaat ben je weer uitgelogd.

Script:

<?php 
If($ingelogd == 1) 
{ 
    echo''.$code9.''; 
} 
Else 
{ 

if (isset($_POST['submit']) && $_POST['submit'] == '1') { 
    $gebruikersnaam     =    $_POST['gebruikersnaam']; 
    $wachtwoord            =    md5($_POST['wachtwoord']); 
    $tijd                =    $_POST['tijd']; 
    $query                 =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam'"); 
    $result             =     mysql_num_rows($query); 
    $query1             =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam' && wachtwoord = '$wachtwoord'"); 
    $result1            =     mysql_num_rows($query1); 
    $query2             =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam'"); 
    while($result2         =     mysql_fetch_object($query2)){ 
    $id                 =     $result2->memberid; 
    } 
    
    if($gebruikersnaam == ''){ 
                  $code     =     $code3; 
        }elseif($wachtwoord == ''){ 
                  $code     =     $code5; 
        }elseif(!preg_match('/^[A-Za-z0-9_-]+$/',$gebruikersnaam)) { 
                  $code   =   $code8; 
        }elseif($result == ''){ 
                $code    =    $code8; 
        }elseif($result1 == ''){ 
                $code    =    $code8; 
        } 
    If($tijd == "Jaar") 
        { 
            $lengte = 60*60*24*365; 
        } 
        ElseIf($tijd == "Maand") 
        { 
            $lengte = 60*60*24*31; 
        } 
        ElseIf($tijd == "Week") 
        { 
            $lengte = 60*60*24*7; 
        } 
        Elseif($tijd == "dag") 
        { 
            $lengte = 60*60*24; 
        } else { 
            $lengte = 60*60*24; 
            } 
        if(isset($code)){ 
        echo''.$code.''; 
        } else { 
        setcookie("gebruikersnaam", $gebruikersnaam, time() + $lengte, "/"); 
        setcookie("wachtwoord", $wachtwoord, time() + $lengte, "/"); 
        setcookie("id", $id, time() + $lengte, "/"); 
        echo'Je bent succesvol ingelogd'; 
        ?> 
        <meta http-equiv="refresh" content="1; url=index.php"> 
        <?php 
        } 
        } else { 
?> 
<form method="POST" action="?pagina=leden/inloggen"> 
    <input type="hidden" name="submit" value="1"> 
        <table cellpadding="1" cellspacing="1" width="100%"> 
            <tr><td width="1%">Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam"></td></TR> 
            <tr><td width="1%">Wachtwoord:</td><td><input type="password" name="wachtwoord"></td></TR> 
            <tr><td width="1%"></td><td><select name="tijd"><option value="Dag">Dag</option><option value="Week">Week</option><option value="Maand">Maand</option><option value="Jaar">Jaar</option></select></td></TR> 
        <td width="1%"> </td><td><input type="submit" value="Inloggen"> <input type="reset" name="reset" value="Opnieuw"></td></table> 
        <form> 
        
<?php 
} 
} 
?>  


Dit is alleen het script login.php

Op deze manier controleer ik of iemand is ingelogd. Ik weet dat het niet de beste manier is maar het is nu even om te kijken of het werkt.
Dit staat dus in het config bestand.

<?php 
if(!isset($_COOKIE["gebruikersnaam"])){ 
$ingelogd = '0'; 
} else { 
$ingelogd = '1'; 
} 
?> 

En dit staat boven elke beveiligde pagina:

<?php 
If($ingelogd == 1) 
{ 
    echo''.$code9.''; 
} 
Else 
{ 
pagina 
} 
?> 


Ik hoop dat ik genoeg info heb gepost en zo niet vraag er dan even om.

Het gaat mij er nu dus niet om of het veilig of wat dan ook is maar waarom het niet wil werken.

Alvast bedankt,


kevin tuns
post hier alleen je relevante code, je moet niet verwachten dat wij "even" zon berg code voor je doornemen,
en je config word ook op elke pagina geinclude voor dat je die check doet?
<?php
If($ingelogd == 1)
{
echo''.$code9.'';
}
Else
{
pagina
}
?>
<?php
If($ingelogd == 1)
{
echo''.$code9.'';
}
Else
{
pagina
}
?>

waar staat daar ergens dat je cookie van ingelogt geset it? je kijkt daar alleen of een variabele die nog niet bestaat wel 1 is...


@niek, beetje moeite never killed a guy
@wes
beetje snelle conclusie: "of een variabele die nog niet bestaat wel 1 is..." zie mijn eerdere vraagstelling
Heb het script ietsje veranderd voor jullie duidelijkheid:


<?php 
if(isset($_COOKIE["gebruikersnaam"])) 
{ 
    echo $code9; 
} 
Else 
{ 

if (isset($_POST['submit']) && $_POST['submit'] == '1') { 
    $gebruikersnaam     =    $_POST['gebruikersnaam']; 
    $wachtwoord            =    md5($_POST['wachtwoord']); 
    $tijd                =    $_POST['tijd']; 
    $query                 =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam'"); 
    $result             =     mysql_num_rows($query); 
    $query1             =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam' && wachtwoord = '$wachtwoord'"); 
    $result1            =     mysql_num_rows($query1); 
    $query2             =     mysql_query("SELECT * FROM leden WHERE gebruikersnaam = '$gebruikersnaam'"); 
    while($result2         =     mysql_fetch_object($query2)){ 
    $id                 =     $result2->memberid; 
    } 
      
    if($gebruikersnaam == ''){ 
                  $code     =     $code3; 
        }elseif($wachtwoord == ''){ 
                  $code     =     $code5; 
        }elseif(!preg_match('/^[A-Za-z0-9_-]+$/',$gebruikersnaam)) { 
                  $code   =   $code8; 
        }elseif($result == ''){ 
                $code    =    $code8; 
        }elseif($result1 == ''){ 
                $code    =    $code8; 
        } 
    If($tijd == "Jaar") 
        { 
            $lengte = 60*60*24*365; 
        } 
        ElseIf($tijd == "Maand") 
        { 
            $lengte = 60*60*24*31; 
        } 
        ElseIf($tijd == "Week") 
        { 
            $lengte = 60*60*24*7; 
        } 
        Elseif($tijd == "dag") 
        { 
            $lengte = 60*60*24; 
        } else { 
            $lengte = 60*60*24; 
            } 
        if(isset($code)){ 
        echo''.$code.''; 
        } else { 
        setcookie("gebruikersnaam", $gebruikersnaam, time() + $lengte, "/"); 
        setcookie("wachtwoord", $wachtwoord, time() + $lengte, "/"); 
        setcookie("id", $id, time() + $lengte, "/"); 
        echo'Je bent succesvol ingelogd'; 
        ?> 
        <meta http-equiv="refresh" content="1; url=index.php"> 
        <?php 
        } 
        } else { 
?> 
<form method="POST" action="?pagina=leden/inloggen"> 
    <input type="hidden" name="submit" value="1"> 
        <table cellpadding="1" cellspacing="1" width="100%"> 
            <tr><td width="1%">Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam"></td></TR> 
            <tr><td width="1%">Wachtwoord:</td><td><input type="password" name="wachtwoord"></td></TR> 
            <tr><td width="1%"></td><td><select name="tijd"><option value="Dag">Dag</option><option value="Week">Week</option><option value="Maand">Maand</option><option value="Jaar">Jaar</option></select></td></TR> 
        <td width="1%"> </td><td><input type="submit" value="Inloggen"> <input type="reset" name="reset" value="Opnieuw"></td></table> 
        <form> 
          
<?php 
} 
} 
?> 
Het script logs me in maar nadat er staat welkom Kevin blablabla
dan logt hij je opeens weer uit.

Het script heeft het eerst wel goed gedaan dus snap de fout niet????
Begin je script eens met de volgende regels:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest van je script
?>
Dit levert vaak wel de nodige notices op van niet-bestaande variabelen waar jij wel wat mee wilt gaan doen. $ingelogd is er zo eentje waar ik problemen mee verwacht.

Edit:
<input type="submit" value="Inloggen"> en dan in php controleren of $_POST['submit'] gelijk is aan 1... Dat gaat dus nooit en te nimmer lukken, je roept zelf dat het gaat om de value 'Inloggen'. Dat is dus heel wat anders.

print_r($_POST); had de complete inhoud van deze array voor jou op het scherm gezet, dan had je deze fout ook kunnen zien.
Als je goed kijkt naar het script zie je dat submit = 1 word meegegeven als een hidden. Dit leverde eerst ook geen problemen op. Tevens heb ik in de beginpost gezegd dat ik error_reporting(E_ALL); er al instaat.

Toch bedankt voor je hulp maar hij logt me dus wel in, maar nadat ik naar een andere pagina ben gegaan ben ik opeens uitgelogd.
Volgens mij ligt het probleem niet bij het script maar heeft het te maken met mijn computer want: als ik het script upload naar wat voor host dan ook dan werkt hij gewoon.????

Weet iemand misschien wat er dan mis zou kunnen zijn met mijn computer, want ik heb het met 3 verschillende servers geprobeerd.
michel schreef op 21.11.2006 13:07
en je config word ook op elke pagina geinclude voor dat je die check doet?
ja, maar op dit moment is de check nu zo:

<?php 
if(isset($_COOKIE["gebruikersnaam"])) 
{ 
    echo $code9; 
} 
Else 
{ 
//rest van het script
}
?>


Daar zou het dus niet aan moeten liggen.

Reageren