PHP Cookies werken niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michel

michel

20/03/2006 13:50:00
Quote Anchor link
Hallo,

Ik heb een probleem met mijn PHP script,
ik heb een profielenscript met de pagina's "inloggen.php" en "wijzigen.php"

Als ik wil inloggen gaat er soms iets niet goed met de cookies...
Dan geeft ie de error dat je niet bent ingelogd...

Wie kan me even helpen?

Alvast bedankt!

Met vriendelijke groet,

Michel


Het script:

Inloggen.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<link rel="stylesheet" type="text/css" href="../css.css">
<?
ob_start(); // We laten weten dat we met cookies gaan werken
include("global.inc.php"); // eerst includen we global.inc.php weer

if(isset($_GET['actie']) AND $_GET['actie'] == "controleren"){ // Er is op inloggen geklikt

$fout = "";

if(empty($_POST['gebruikersnaam'])){
$fout.="Er is <i>geen</i> gebruikersnaam ingevoerd.<br>";
}


if(empty($_POST['wachtwoord'])){
$fout.="Er is <i>geen</i> wachtwoord ingevoerd.<br>";
}


if(isset($fout) AND $fout == TRUE){

begintabel("Error");

echo "".$fout."";

eindetabel();

}
else { // Alles is ingevuld dan:

$select = @mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'"); // we selecteren een lid met de opgegeven gegevens.
$aantal = @mysql_num_rows($select);
$Show = @mysql_fetch_assoc($select);
if($aantal == TRUE){ // Bestaat er een lid met de opgegeven gegevens dan:

$hash = rand(9999, 99999); // we maken een hash code dit is voor de veiligheid
$hash1 = md5($hash); // de hash code wordt in md5 omgezet
@mysql_query("UPDATE leden SET hash='".$hash1."' WHERE id='".$Show['id']."'"); // de hash code wordt geupdate

setcookie("userid", $Show['id'], time()+$_POST['tijdingelogd']); // er wordt een cookie voor userid
setcookie("wachtwoord", $Show['wachtwoord'], time()+$_POST['tijdingelogd']); // er wordt een cookie gemaakt met wachtwoord
setcookie("hash", $hash1, time()+$_POST['tijdingelogd']); // Er wordt een cookie gemaakt met hash. Dit is voor de veiligheid

header("location:wijzigen.php"); // het lid wordt dooorgewezen

} else { // Zijn de gegevens verkeer dan :

begintabel(" - Inloggen - Error"); // Het begin van een tabel.
echo "Gebruikersnaam en/of wachtwoord onjuist!";
eindetabel(); // Het einde van een tabel
} // afsluiten
} // ook afsluiten
} else {
// Nu maken we een formulier om in te loggen

begintabel(" - Inloggen");
echo "<form action='inloggen.php?actie=controleren' method='POST'>
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr><td width='50%' height='24'>Gebruikersnaam</td>
<td width='50%' height='24'><input type='text' name='gebruikersnaam'> <a href='aanmelden.php'>Aanmelden</a></td>
</tr><tr>
<td width='50%' height='24'>Wachtwoord</td>
<td width='50%' height='24'><input type='password' name='wachtwoord'> <a href='wwvergeten.php'>wachtwoord vergeten?</a></td>
</tr><tr>
<td width='50%' height='24'></td>
<td width='50%' height='24'><input type='submit' value='Inloggen'></td>
</tr>
</table>"
;
eindetabel(); // en weer afsluiten
}

?>


Wijzigen.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<link rel="stylesheet" type="text/css" href="../css.css">
<?php
include "global.inc.php"; // includen

if($ingelogd == 0) { // het persoon is niet ingelogd en kan zijn profiel dus iet wijzigen

begintabel(" - Profiel wijzigen - Error"); // Het begin van een tabel.
echo "U moet ingelogd zijn om u profiel te wijzigen.";
eindetabel(); // Het einde van een tabel.

} else {

if($_POST['submit']){ // er is op submit gedrukt
if(empty($_POST['naam']) || empty($_POST['email'])){ // controleren of er een naam en een e-mail adres is ingevuld
begintabel(" - Profiel Wijzigen - Error"); // zo nee even zeggen dat ze dat zijn vergeten
echo "U moet een naam en een e-mail adres invullen";
eindetabel();
}
else {
mysql_query("UPDATE leden SET land = '".$_POST['land']."', woonplaats = '".$_POST['woonplaats']."', naam = '".$_POST['naam']."', email='".$_POST['email']."', type='".$_POST['type']."', bouwjaar='".$_POST['bouwjaar']."', kleur='".$_POST['kleur']."', motor='".$_POST['motor']."', uitlaat='".$_POST['uitlaat']."', velgen='".$_POST['velgen']."', binnenkant='".$_POST['binnenkant']."', overige='".$_POST['overige']."', toekomstige='".$_POST['toekomstige']."' WHERE id = '" . $_COOKIE['userid'] . "'");

// de dingen updates van de gebruiker die hij heeft ingevoerd

begintabel("sucsesvol gewijzigd"); // natuurlijk even weergeven dat alles goed is gegaan.
echo "Uw profiel is succesvol gewijzigd.";
echo "<br>U wordt naar uw profiel doorgestuurd.";
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=profiel.php?id=" . $_COOKIE['userid'] . "'>"; // doorsturen na 1 seconden naar het profiel van de gebruiker
eindetabel();
}
}
else {

begintabel(" - Controle Panel"); // even een titel maken
include "leden_menu.php"; // Nu halen we het leden menu erbij
eindetabel(); // en weer even de tabel afsluiten

// Hier weergeven we een forumulies met alle opties van het profiel


echo' <form method="post" action="wijzigen.php" name="bericht">';

$sql = @mysql_query("SELECT * FROM leden WHERE id='".$_COOKIE['userid']."'"); // we selecteren de dingen van het lid
$list = @mysql_fetch_object($sql); // eerst wat dingen selecteren van de gebruiker.

begintabel("Algemeen"); // hier staan de algemene dingen naam , e-mail
echo'<TABLE width="100%">'; // We maken even een mooie tabel.
echo'<TD width="25%">Naam:</TD>
<TD width="75%"><input type="text" name="naam" size="40" maxlength="80" value="'
. $list->naam . '"></TD><TR>';
echo'<TD width="25%">Email:</TD>
<TD width="75%"><input type="text" name="email" size="40" maxlength="80" value="'
. $list->email . '"></TD><TR>';
echo'<TD width="25%">Woonplaats:</TD>
<TD width="75%"><input type="text" name="woonplaats" size="40" maxlength="80" value="'
. $list->woonplaats . '"></TD><TR>';
echo'<TD width="25%">Type Polo</TD>
<TD width="75%"><input type="text" name="type" size="40" maxlength="80" value="'
. $list->type . '"></TD><TR>';
echo'<TD width="25%">Bouwjaar</TD>
<TD width="75%"><input type="text" name="bouwjaar" size="40" maxlength="80" value="'
. $list->bouwjaar . '"></TD><TR>';
echo'<TD width="25%">Kleur</TD>
<TD width="75%"><input type="text" name="kleur" size="40" maxlength="80" value="'
. $list->kleur . '"></TD><TR>';
echo'<TD width="25%">Motor</TD>
<TD width="75%"><input type="text" name="motor" size="40" maxlength="80" value="'
. $list->motor . '"></TD><TR>';
echo'<TD width="25%">Uitlaat</TD>
<TD width="75%"><input type="text" name="uitlaat" size="40" maxlength="80" value="'
. $list->uitlaat . '"></TD><TR>';
echo'<TD width="25%">Velgen</TD>
<TD width="75%"><input type="text" name="velgen" size="40" maxlength="80" value="'
. $list->velgen . '"></TD><TR>';
echo'<TD width="25%">Binnenkant</TD>
<TD width="75%"><input type="text" name="binnenkant" size="40" maxlength="80" value="'
. $list->binnenkant . '"></TD><TR>';
echo'<TD width="25%">Overige</TD>
<TD width="75%"><input type="text" name="overige" size="40" maxlength="160" value="'
. $list->overige . '"></TD><TR>';
echo'<TD width="25%">Toekomstige</TD>
<TD width="75%"><input type="text" name="toekomstige" size="40" maxlength="160" value="'
. $list->toekomstige . '"></TD><TR>';
echo'<TD width="25%">Land:</TD>
<TD width="75%">'
;

$land [1] = "";
$land [2] = "";
$land [3] = "";
$land [4] = "";
$land [5] = "";
$land [$list->land] = " selected"; // we kijken waar de selected moet komen bij Land

echo "<select size='1' name='land'>
<option value='1'"
.$land[1].">Nederland</option>
<option value='2'"
.$land[2].">Duitsland</option>
<option value='3'"
.$land[3].">Belgie</option>
<option value='4'"
.$land[4].">Frankrijk</option>
<option value='5'"
.$land[5].">Anders...</option>
</select>"
; // we zetten het in een mooie tabel met een dropdown
echo '</TD><TR>';
echo'</TABLE>'; // einde van dde tabel en we sluiten af met </TABLE>

eindetabel();

begintabel("Foto's"); // hier staan de forum dingen onderschrift , ondertitel
echo'<TABLE width="100%" height="100%">'; // We maken even een mooie tabel.
echo'<TD width="25%">Fotos:<br>
LET OP!
Uw afbeeldingen mogen niet groter zijn dan 60kb en niet groter dan 300x225!<br><br>
Uw afbeeldingen hebben de naam pic1.jpg, pic2.jpg, pic3.jpg. Zorg dat uw plaatjes ook zo noemt!</TD><td>'
;
echo'<iframe src="upload.php" name="foto" width="100%" height="500"frameborder=0></iframe>';
echo'</TD></TR>';
echo'</TABLE>'; // einde van dde tabel en we sluiten af met </TABLE>

eindetabel();

echo'<input type="submit" name="submit" value="Wijzigen">'; // We maken even een button om op te klikken als je klaar bent

eindetabel();
}
// afsluiten
} //afsluiten[/code]
Gewijzigd op 26/03/2006 14:10:00 door Michel
 
PHP hulp

PHP hulp

29/03/2024 08:00:24
 

20/03/2006 13:59:00
Quote Anchor link
Zeg, zet je code eens tussen [.code.] tags ;-)

Heb je al eens error_reporting(E_ALL); bovenaan je script gezet?
 
Jason de Ridder

Jason de Ridder

20/03/2006 14:26:00
Quote Anchor link
echo "".$fout."";
wordt:
echo $fout;

if($aantal == TRUE){ // Bestaat er een lid met de opgegeven gegevens dan:
wordt:
if($aantal == 1) { // Bestaat er een lid met de opgeven gevens
(mocht er een keer perongeluk een lid met dezelfde naam oid dergelijks bestaan!)

Regel 5 gebruik je get...
de rest post.. Als het allebei van hetzelfde formulier komt moet het of allemaal POST zijn of allemaal GET.


(wat raar dat PHPhulp het 2de code-blok niet neerzet.)
 
Michel

michel

20/03/2006 16:48:00
Quote Anchor link
hm, als ik doe wat Jason zegt dan doet hij helemaal niets meer...

Ik bedoel dat je dan niet word doorgestuurd naar Wijzigen.php
 
Michel

michel

22/03/2006 11:06:00
Quote Anchor link
Ik ben hierachter gekomen, Hij werkt wel in FF maar niet in IE :S

Iemand idee?
 
Arjan Kapteijn

Arjan Kapteijn

22/03/2006 11:10:00
Quote Anchor link
1) heb je dit script zelf geschreven?
2) zou je wat relevante code eruit kunnen halen?

Tevens zou je kunnen kijken naar versie 2 van mijn nieuwssysteem, daar heb ik het namelijk wat veiliger opgelost. klik.
 
Michel

michel

22/03/2006 11:25:00
Quote Anchor link
@ arjan:

1) Nee, het origineel is geschreven door Melvin van den Bout, ik heb het aangepast aan mijn wensen...
2) Hoe bedoelt u dat? Code eruit halen wat relevant is voor het inloggen?
 
Arjan Kapteijn

Arjan Kapteijn

22/03/2006 11:29:00
Quote Anchor link
Nouja, ik zie een hele lap code... terwijl er maar weinig daarvan echt relevant is voor het probleem...
 
Michel

michel

22/03/2006 11:32:00
Quote Anchor link
hmm, Ik heb hier nog een code (die word geinclude in bovenstaande code)

Ik denk dat u dit bedoeld... :$

if(empty($_COOKIE['userid']) && empty($_COOKIE['wachtwoord'])){
$ingelogd = 0; // dit persoon is niet ingelogd
} else {
$select = "SELECT * FROM leden WHERE id = '" . $_COOKIE['userid'] . "' AND wachtwoord = '" . $_COOKIE['wachtwoord'] . "' AND hash = '" . $_COOKIE['hash'] . "'"; // dingentjes selecteren van de gebruiker.
$sql = mysql_query($select)or die(mysql_error());;
$list = mysql_fetch_object($sql);
$hash1 = md5($list->hash);
if($_COOKIE['wachtwoord'] == $list->wachtwoord AND $_COOKIE['userid'] == $list->id AND $_COOKIE['hash'] == $list->hash) { // Als de cookie goed is dan :
$ingelogd = 1; // Dit persoon is ingelogd
} else {
$ingelogd = 0; // Dit persoon is niet ingelogd
}
}
 
Michel

michel

22/03/2006 18:32:00
Quote Anchor link
Iemand nog een idee waar dit aan kan liggen?
 
Michel

michel

26/03/2006 13:42:00
Quote Anchor link
Ik heb van mijn hosting gehoord dat dit te wijten is aan het doctype, iemand een idee welk doctype dat moet zijn?
 
Mitch X

Mitch X

26/03/2006 14:11:00
Quote Anchor link
Jason:
(wat raar dat PHPhulp het 2de code-blok niet neerzet.)

Geef PHPhulp maar de schuld :+
Hij sluit de PHP-tag niet af, logisch dan toch?

Ennuh, heb het even gefixt :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.