Toon posts:

[php] setcookie error

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb nu een inlog systeem gemaakt voor mijn site, maar alles werkt, behalve 1 ding.
Bij het inloggen wil ik namelijk een cookie maken, maar die wordt door een onbekende reden niet gemaakt.
Daardoor krijg ik wel de melding succesvol ingelogd, maar cookie is spoorloos.

Misschien zie ik iets over het hoofd in mijn code, maar zelf kom ik er niet achter:

code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?
require "../files/header.php";
include "config.php";

mysql_connect("$host", "$user", "$pass") or die("Error: Connectie Met Server Mislukt");
mysql_select_db("$db") or die("Error: Selecteren Van Database Mislukt");

if ($HTTP_COOKIE_VARS["username"] != "")
{
    echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
    echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
    echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
    echo "<TR>";
    echo "<TD>";
    echo "<BR />";
    echo "<SPAN CLASS='zagol'> <B> Inlog Error </B> </SPAN> <BR /> <BR />";
    echo "<SPAN CLASS='content'> U bent reeds ingelogd, daarom is het niet mogelijk om nog een keer in te loggen. <BR /> <BR />";
    echo "<SPAN CLASS='content'> Klik <SPAN CLASS='link'> <A HREF='../index.php'>hier</A> om terug te gaan naar de index </SPAN>";
    echo "</TD>";
    echo "</TR>";
    echo "</TABLE>";
    echo "</BODY>";
}

else
{
    if ($login)
    {
        $username = trim("$username");
        $password = trim("$password");

        if (!$username || !$password)
        {
            echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
            echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
            echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
            echo "<TR>";
            echo "<TD>";
            echo "<BR />";
            echo "<SPAN CLASS='zagol'> <B> Inlog Error </B> </SPAN> <BR /> <BR />";
            echo "<SPAN CLASS='content'> U heeft uw username of password verkeerd ingevuld, <a href=\"javascript:history.go(-1)\">Ga terug</a> <BR /> <BR />";
            echo "</TD>";
            echo "</TR>";
            echo "</TABLE>";
            echo "</BODY>";
            require "../files/footer.php";
            exit;
        }
        $select_lid = "SELECT * FROM leden WHERE username='$username'";
        $query_lid = mysql_query($select_lid);
        $bestaat_lid = mysql_num_rows($query_lid);
        $list_lid = mysql_fetch_object($query_lid);
        $password = MD5($password);

        if ($bestaat_lid == "0")
        {
            echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
            echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
            echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
            echo "<TR>";
            echo "<TD>";
            echo "<BR />";
            echo "<SPAN CLASS='zagol'> <B> Inlog Error </B> </SPAN> <BR /> <BR />";
            echo "<SPAN CLASS='content'> De ingevuld username bestaat niet, <a href=\"javascript:history.go(-1)\">Ga terug</a> <BR /> <BR />";
            echo "</TD>";
            echo "</TR>";
            echo "</TABLE>";
            echo "</BODY>";
            require "../files/footer.php";
            exit;
        }
        
        if ($list_lid->password != "$password")
        {
            echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
            echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
            echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
            echo "<TR>";
            echo "<TD>";
            echo "<BR />";
            echo "<SPAN CLASS='zagol'> <B> Registratie Error </B> </SPAN> <BR /> <BR />";
            echo "<SPAN CLASS='content'> U heeft geen password ingevuld, <a href=\"javascript:history.go(-1)\">Ga terug</a> <BR /> <BR />";
            echo "</TD>";
            echo "</TR>";
            echo "</TABLE>";
            echo "</BODY>";
            require "../files/footer.php";
            exit;
        }
        else
        {
            setcookie("username", "$username", time() +3600, "/");
            $update = "UPDATE leden SET lastvisit = NOW() WHERE username = '$username'";
            $query = mysql_query($update);
            
            echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
            echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
            echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
            echo "<TR>";
            echo "<TD>";
            echo "<BR />";
            echo "<SPAN CLASS='zagol'> <B> Welkom $username </B> </SPAN> <BR /> <BR />";
            echo "<SPAN CLASS='content'> U bent succesvol ingelogd, klik <a href='../index.php'>hier</a> om terug te gaan naar de index. <BR /> <BR />";
            echo "</TD>";
            echo "</TR>";
            echo "</TABLE>";
            echo "</BODY>";
        }           
    }
    else
    {
        echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
        echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
        echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
        echo "<TR>";
        echo "<TD>";
        echo "<BR />";
        echo "<SPAN CLASS='zagol'> <B> Login </B> </SPAN> <BR /> <BR />";
        echo "<SPAN CLASS='content'> Vul onderstaande gegevens in om in te loggen </SPAN> <BR /> <BR />";
        echo "<FORM METHOD='post' ACTION='$PHP_SELF'>";
        echo "<SPAN CLASS='content'> Username: </SPAN> <BR /> <INPUT TYPE='text' SIZE=30 NAME='username'> <BR />";
        echo "<SPAN CLASS='content'> Password: </SPAN> <BR /> <INPUT TYPE='password' SIZE=30 NAME='password'> <BR /> <BR />";
        echo "<input type=\"submit\" name=\"login\" value=\"Login\">";
        echo "<input type=\"reset\" name=\"reset\" value=\"Reset\">";
        echo "</FORM>";
        echo "</TD>";
        echo "</TR>";
        echo "</TABLE>";
        echo "</BODY>";
    }
}

require "../files/footer.php";
?>

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

"Plaats hier je script en wij debuggen het voor je?"
nee dank je.
zoek eerst maar eens op waar het probleem zit in je script...

edit:

En gebruik [php] tags in plaats van [code].


Lees tevens de manual over setcookie. Dat heb je overduidelijk niet gedaan.

Localhost, sweet localhost


Verwijderd

Topicstarter
het gaat precies mis in de laatste else:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
else
        {
            setcookie("username", "$username", time() +3600, "/");
            $update = "UPDATE leden SET lastvisit = NOW() WHERE username = '$username'";
            $query = mysql_query($update);
            
            echo "<LINK REL='stylesheet' HREF='../scripts/site.css' TYPE='text/css'>";
            echo "<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>";
            echo "<TABLE WIDTH=800 CELLPADDING=10 ALIGN='CENTER' BGCOLOR='#FFFFFF'>";
            echo "<TR>";
            echo "<TD>";
            echo "<BR />";
            echo "<SPAN CLASS='zagol'> <B> Welkom $username </B> </SPAN> <BR /> <BR />";
            echo "<SPAN CLASS='content'> U bent succesvol ingelogd, klik <a href='../index.php'>hier</a> om terug te gaan naar de index. <BR /> <BR />";
            echo "</TD>";
            echo "</TR>";
            echo "</TABLE>";
            echo "</BODY>";
        }


Maar hoe ik het nu doet moet het gewoon werken volgens mij.
Alles werkt ook verder, maar die cookie niet.

Verwijderd

misschien moet je het eens met elseif ipv een nieuwe if proberen

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op de eerste regel van de manual staat:
setcookie() defineert een cookie dat wordt meegezonden met de rest van de header informatie. Cookies moeten worden verzonden voordat enige andere headers worden verzonden (dit is een restrictie van cookies, niet van PHP). Daarom moet je deze functie aanroepen voor enige <html> of <head> tags. Als de header wordt afgesloten voordat deze functie wordt aangeroepen, dan zal setcookie() falen en FALSE terug geven. Als alles goed is gegaan, geeft hij TRUE terug. Dit zegt niets over of de gebruiker de cookie geaccepteerd heeft of niet.
ZET JE ERRORREPORTING AAN, EN LEES DE MANUAL!

offtopic:
Hmmm, ik begin op D2K te lijken, das geen goed teken...

Localhost, sweet localhost


Verwijderd

Topicstarter
Ook de elseif maakt geen verschil.
Lijkt namelijk of hij de cookie helemaal niet aanmaakt.

Verwijderd

zet bovenaan
error_reporting(E_ALL);
en zorg dat er geen spatie ofzo voor de <?php staat en dat de php geen output geeft voor de setcookie()

Verwijderd

*kuch* lees het door kvdveer ondersteepte stuk van de manual es, ik weet het manual lezen sukt ass en wij moeten het maar voorkouwen voor je maar doe toch maar ff ok?

Verwijderd

Topicstarter
Bij het laden van de pagina krijg ik er 2:
Maar deze zijn niet zo bijzonder.

PHP:
1
2
3
Warning: Undefined index: username in login.php on line 10

Warning: Undefined variable: login in login.php on line 29


Maar als ik in login druk krijg ik deze:
PHP:
1
Warning: Cannot add header information - headers already sent by (output started at /data/members/free/tripod/nl/h/e/r/herasonline/htdocs/files/header.php:12) in login.php on line 94

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

wat zou dat betekenen? (en lees de manual voor de gein eens...)

Localhost, sweet localhost


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Verwijderd schreef op 19 oktober 2002 @ 17:46:
Maar als ik in login druk krijg ik deze:
PHP:
1
Warning: Cannot add header information - headers already sent by (output started at /data/members/free/tripod/nl/h/e/r/herasonline/htdocs/files/header.php:12) in login.php on line 94
Conclusie? Het probleem is opgelost :D

Les van vandaag? Error reporting aanzetten, foutmelding lezen, klaar :D

Eitje toch?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 10:19

D2k

goed
toch ff de manual bekijken en de vele gegeven tips analyseren

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.