autenticatiescript / inlogmenu en sessies
Ik maak een webwinkel m.b.v. de scripts van Arjan Burger / boek: Werken met PHP5 en MySQL. Hij is bijna af en over een week wordt ie beoordeeld alleen werkt van meet af aan het authenticatie script niet goed.
Ik heb vanalles geprobeerd : ook met ini_set ('display errors') en error_reporting(E_All) Ook heb ik op de gebruikerspagina's waar authenticatie vereist is, de admin=false gezet, en heb o.a. daardoor het script wel iets meer werkend gekregen.
Onderaan dit bericht stuur ik het script zoals het gegeven is alleen met mijn
databasenamen voor tabellen en inhoud. Hier kan men als gewone gebruiker en als admin niet inloggen en verschijnt alleen bij de admin een inlogvenster dat verder niets doet. (dit heet authenticatieVB.php)
En als tweede script stuur ik het script zover ik het werkend heb gekregen. Dan verschijnen er wel 2 inlogvensters, alleen is het niet het goede bij de admin. Daar moet nl bijstaan dat 'adnin status vereist is' maar men kan wel inloggen.
Nu kan men ook inloggen als gewone gebruiker, maar die kunnen ook bij het admin gedeelte komen en dat is niet wenselijk.
Wat moet het script doen? Als men een product wil bestellen of wil gaan winkelen moet men zich eerst aanmelden via een inlogmenu. Dat is het authenticatiescript. Is men nieuw dan kan men zich op de inlogpagina via een link aanmelden voor de site en daarna inloggen. Dus voor winkelen en bestellen is authenticatie vereist , het werkt met sessies.
Als administrator kan men inloggen onder het kopje admin en kan men de site beheren, dingen doen als producten toevoegen en verwijderen.
De administrator is de eerste gebruiker, de gebruikers erna zijn de gewone klanten.
script 1
Code (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
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
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
<?php
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT klantid, Username, Password FROM klant WHERE Username='$naam'";
} else { // admin nodig? Haal eerste record op
$sql = "SELECT klantid, Username, Password FROM klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "klantid");
if ($wachtwoord != $password) {
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = md5($_POST['wachtwoord']);
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "Naam: ";
echo "<input type=\"text\" name=\"username\">";
echo "<br>";
echo "Wachtwoord: ";
echo "<input type=\"password\" name=\"wachtwoord\">";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT klantid, Username, Password FROM klant WHERE Username='$naam'";
} else { // admin nodig? Haal eerste record op
$sql = "SELECT klantid, Username, Password FROM klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "klantid");
if ($wachtwoord != $password) {
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = md5($_POST['wachtwoord']);
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "Naam: ";
echo "<input type=\"text\" name=\"username\">";
echo "<br>";
echo "Wachtwoord: ";
echo "<input type=\"password\" name=\"wachtwoord\">";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
script 2, iets beter werkend maar nog niet goed
Code (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
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
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
<?php
//ini_set('display_errors', 1); //errors weegeven, 1 is aan 0 is uit
//error_reporting(E_ALL); // error reporting op zijn hoogst, je kunt ook E_NOTICE, 0, 1, 2, 3 etc.
$link = mysql_connect("localhost", "root");
// Selecteer de juiste database
$res = mysql_select_db("webgalery", $link);
if (!$res)
{
echo "Error opening database, try again later";
}
//$admin =false;
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT klantid, Username, Password FROM klant WHERE Username='$naam'";
} else { // admin is de eerste klant
$sql = "SELECT klantid, Username, Password FROM klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "klantid");
if ($wachtwoord != $password) {
return false;
//wachtwoord fout
} else {
return $klantid;
//klant gevonden
}
} else {
return false;
//klant bestaat niet
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
//echo 'Correct';
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
$username = !'';
$wachtwoord = !'';
$admin='';
if ( isset ( $_SESSION['username'] ) ) {
$username = $_POST["username"];
}
if ( isset ( $_SESSION['wachtwoord'] ) ) {
$wachtwoord = $_POST['wachtwoord'];
}
if (controle($username, $wachtwoord, $admin) == false) {
//if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<table><tr>";
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "<td>Naam:</td>";
echo "<td><input type=\"text\" name=\"username\"></td></tr>";
//echo "<br>";
echo "<tr><td>Wachtwoord:</td>";
echo "<td><input type=\"password\" name=\"wachtwoord\"></td></tr>";
//echo "<br>";
echo "<tr><td align=\"right\" colspan=2><input type=\"submit\" value=\"verzenden\" name=\"verzonden\"></td>";
echo "</form></tr></table>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
//ini_set('display_errors', 1); //errors weegeven, 1 is aan 0 is uit
//error_reporting(E_ALL); // error reporting op zijn hoogst, je kunt ook E_NOTICE, 0, 1, 2, 3 etc.
$link = mysql_connect("localhost", "root");
// Selecteer de juiste database
$res = mysql_select_db("webgalery", $link);
if (!$res)
{
echo "Error opening database, try again later";
}
//$admin =false;
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT klantid, Username, Password FROM klant WHERE Username='$naam'";
} else { // admin is de eerste klant
$sql = "SELECT klantid, Username, Password FROM klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "klantid");
if ($wachtwoord != $password) {
return false;
//wachtwoord fout
} else {
return $klantid;
//klant gevonden
}
} else {
return false;
//klant bestaat niet
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
//echo 'Correct';
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
$username = !'';
$wachtwoord = !'';
$admin='';
if ( isset ( $_SESSION['username'] ) ) {
$username = $_POST["username"];
}
if ( isset ( $_SESSION['wachtwoord'] ) ) {
$wachtwoord = $_POST['wachtwoord'];
}
if (controle($username, $wachtwoord, $admin) == false) {
//if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<table><tr>";
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "<td>Naam:</td>";
echo "<td><input type=\"text\" name=\"username\"></td></tr>";
//echo "<br>";
echo "<tr><td>Wachtwoord:</td>";
echo "<td><input type=\"password\" name=\"wachtwoord\"></td></tr>";
//echo "<br>";
echo "<tr><td align=\"right\" colspan=2><input type=\"submit\" value=\"verzenden\" name=\"verzonden\"></td>";
echo "</form></tr></table>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
Ik hoop echt dat iemand mij kan helpen
heb er echt veel energie in gestoken maar ben er niet uitgekomen
en moet het over een week online zetten
groeten Renew
Gewijzigd op 01/01/1970 01:00:00 door Renew
Dubbelpost.