[PHP] Cookie wil niet meer weg

Pagina: 1
Acties:

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik heb een paar daagjes terug een topic gepost over cookies, ze wilden niet werken. Nou werkt dat allemaal, maar net iets te goed. De cookie wil namelijk niet meer weg. Het betreft het bekende login-script :)

Ik heb dit opgedeeld in 2 pagina's:
- De login pagina met invoervelden
- De check pagina waar je invoer wordt gecontroleerd en de cookie wordt geplaatst

title.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
if(isset($_POST['login'])){
    header("Location: ./login.php?username=$_POST[user]&password=$_POST[pass]");
}
if(!isset($_COOKIE['login_check'])){
    ?>
    <html>
    <table width='90%' cellpadding='0' cellspacing='0'>
    <form method='POST' action="title.php">
    <tr><td width='1%'>Username: <input type='text' name=user size=10 value='a'></td>
    <td width='1%'>Password: <input type='text' name=pass size=10 value='b'></td>
    <td width='10%'><input type='submit' name=login value='Login'></tr>
    </form>
    </table>
    </html>
    <?
}
else{
    echo "You are logged in.<br>";
    echo $_COOKIE['login_check'];
    echo "<form method='POST' action='login.php?username=&password='>";
    echo "<input type='submit' name='logout' value='Logout'>";
    echo "</form>";
}

?>

(type='text' bij password heb ik expres gedaan, ='password' komt wel als het werkt)

login.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$user = $_GET['username'];
$pass = $_GET['password'];
if($user==NULL){
    SetCookie('login_check', time()-10000);
}
else{
    include('/forum/dbconnect.php');
    $result = mysql_query("SELECT subscriber_login FROM subscriber WHERE subscriber_password='$pass'") 
        or die ("User does not exist or password failure");
    $row = mysql_fetch_array( $result );
    if($user == $row['subscriber_login']){
        SetCookie('login_check', time()+1800);
    }
    else{
        SetCookie('login_check', time()-10000);
    }
}
Header('Location: title.php');
?>


Nou krijg ik als ik inlog netjes te zien 'You are logged in' met het cookienummer en de Logout knop. Als ik echter op Logout klik, veranderd enkel het cookienummer en blijf ik vrolijk ingelogd (ook bij refresh). Hij komt in login.php wel netjes bij regel 4, en dus zou de cookie weggehaald moeten worden... dat gebeurd dus om een of andere reden niet.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

Vergeet je misschien je session te destroyen ?? (http://nl.php.net/session_destroy)

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Nope ik gebruik geen sessies :)
...je ziet me er ook geneen starten, dus dan zou ik al veel eerder een foutmelding hebben gekregen over niet bekende variabelen.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Je koekje aanmaak klopt niet. Er moet iets instaan (volgens mij).
Deze code moet dus werken:
PHP:
1
2
3
4
// set
setcookie('login_check', 'waarde', time()+1800);
// delete
setcookie('login_check', '', time()-3600);

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Dat maakt in deze niet uit. Ik controleer namelijk of de cookie er is voordat er 'You are logged in' komt te staan. De cookie staat er dus wel degelijk (de eerste keer MOET je namelijk wel inloggen). Ik zal het proberen, maar ben bang dat dat het probleem niet is.

Nog sterker.. op het moment dat ik , '', toevoeg kan ik niet eens meer inloggen :)
Als ik 't weghaal kan ik niet uitloggen... heel fijn

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

...

om te deleten, gebruik de 2e setcookie... dat bedoelt hij, die moet je dus niet bij het inloggen alvast gaan runnen anders delete ie inmiddelijk het koekje dat je net geset hebt ;)

  • atttze
  • Registratie: Augustus 2001
  • Laatst online: 28-08 12:56
jep, zo is het
de setcookie('login_check', time()-3600) zet de cookie gewoon weer opnieuw ipv deze te verwijderen, omdat time()-3600 als waarde wordt gezien, omdat het de 2e parameter van de functie is ipv de derde parameter.

Verwijderd

echt verwijderen kan niet eens. php.net zegt het volgende:
Heel lang geleden, toen de blaadjes nog groen waren, zei php.net het volgende:

All the arguments except the name argument are optional. If only the name argument is present, the cookie by that name will be deleted from the remote client.

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Eens proberen :)

Oh My God !
als ik simpelweg SetCookie('check_login', $user, time()+1800); gebruik werkt alles direkt vlekkeloos.. ik had al eens $subscriber gebruikt (en die var aangemaakt), maar dat wilde niet...

Thx voor de hulp!

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.

Pagina: 1