Parse error, Ik kom er niet uit.
de error is: Parse error: parse error in C:\wamp\www\easy computing\beveiliging2.inc.php on line 136.
De fout staat helemaal onderin de laatste accolade }
Alvast bedankt,
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
135
136
137
138
139
<?
/* MySQL-query voor de voorbeeldtabel 'accounts':
CREATE TABLE `accounts` (
`gebruikersnaam` VARCHAR(20) NOT NULL,
`wachtwoord` VARCHAR(20) NOT NULL,
PRIMARY KEY (`gebruikersnaam`)
);
*/
// Gebruikersnaam en wachtwoord controleren:
if (isset($_REQUEST['gn'])) {
// Gebruikersnaam lezen uit een formulier of cookie:
if (isset($_POST['gn'])) {
$gebruikersnaam = $_POST['gn'];
} elseif (isset($_COOKIE['gn'])) {
$gebruikersnaam = $_COOKIE['gn'];
} else {
inloggen();
}
$gebruikersnaam = trim(strip_tags($gebruikersnaam));
// Wachtwoord lezen uit een formulier of cookie:
if (isset($_POST['ww'])) {
$wachtwoord = $_POST['ww'];
} elseif (isset($_COOKIE['ww'])) {
$wachtwoord = $_COOKIE['ww'];
} else {
inloggen($gebruikersnaam);
}
$wachtwoord = trim(strip_tags($wachtwoord));
// Vijf beslissingsregels om de databasetoegang te minimaliseren:
// (1) de gebruikersnaam moet minimaal 7 tekens lang zijn,
// (2) de gebruikersnaam mag maximaal 20 tekens lang zijn,
// (3) het wachtwoord moet minimaal 12 lang zijn,
// (4) het wachtwoord mag maximaal 20 tekens lang zijn en
// (5) de gebruikersnaam mag niet gelijk zijn aan het wachtwoord:
if ((strlen($gebruikersnaam) < 7) or (strlen($gebruikersnaam) > 20)
or (strlen($wachtwoord) < 12) or (strlen($wachtwoord) > 20)
or ($gebruikersnaam == $wachtwoord)) {
inloggen($gebruikersnaam);
} else {
// MySQL-selectiequery:
$sql = "SELECT `gebruikersnaam`, `wachtwoord` FROM `accounts` ";
$sql .= "WHERE `gebruikersnaam` = \"" . $gebruikersnaam . "\" ";
$sql .= "AND `wachtwoord` = \"" . $wachtwoord . "\" ";
// Databaseverbinding openen en query uitvoeren:
require_once('mysql_connect.inc.php');
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$resultaat = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($resultaat) == 1) {
$record = mysql_fetch_assoc($resultaat);
// Resultaatset vrijgeven en databaseverbinding sluiten:
mysql_free_result($resultaat);
mysql_close($verbinding);
if (($record["gebruikersnaam"] != $gebruikersnaam)
or ($record["wachtwoord"] != $wachtwoord)) {
inloggen($gebruikersnaam);
} else {
// Cookie verloopt na 30 dagen = 2592000 seconden:
$verloopt_op = time() + 2592000;
// Gebruikersnaam opslaan in een cookie:
setcookie("gn", $gebruikersnaam, $verloopt_op);
// Wachtwoord naar keuze opslaan in een cookie:
if (isset($_POST['wo'])) {
if ($_POST['wo'] == 1) {
setcookie("ww", $wachtwoord, $verloopt_op);
}
}
}
} else {
// Resultaatset vrijgeven en databaseverbinding sluiten:
mysql_free_result($resultaat);
mysql_close($verbinding);
inloggen($gebruikersnaam);
}
}
} else {
inloggen();
}
// Webpagina met een formulier en instructies weergeven:
function inloggen($gebruikersnaam = '')
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
<head>
<meta http-equiv="Content-Language" content="nl">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Inloggen</title>
<link href="windows.css" rel="stylesheet" type="text/css">
</head>
<body lang="nl">
<h1>Inloggen</h1>
<p>De pagina die u probeert te openen, is uitsluitend toegankelijk voor geregistreerde gebruikers.
Voer uw gebruikersnaam en wachtwoord in en klik op Inloggen.</p>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td>
<label for="gn"><span style="text-decoration: underline">G</span>ebruikersnaam:</label>
</td>
</tr>
<tr>
<td><input accesskey="g" id="gn" name="gn" type="text" value="<?php echo $gebruikersnaam; ?>"></td>
</tr>
<tr>
<td>
<label for="ww"><span style="text-decoration: underline">W</span>achtwoord:</label>
</td>
</tr>
<tr>
<td><input accesskey="w" id="ww" name="ww" type="password"></td>
</tr>
<tr>
<td>
<label for="wo">
<input accesskey="s" id="wo" name="wo" type="checkbox" value="1"> Wachtwoord op<span style="text-decoration: underline">s</span>laan
</label>
</td>
</tr>
<tr>
<td><input class="knop" type="submit" value="Inloggen"></td>
</tr>
</table>
</form>
</body>
</html>
<?php
exit;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Snoopaloopaa 919191
(zonder spaties)
kevin meijer schreef op 22.06.2009 18:10:
Zet alles eens tussen [ c o d e ] [ / c o d e ]
(zonder spaties)
(zonder spaties)
Sorry, wist ik niet, zo is hij inderdaad stuk beter leesbaar.
$_REQUEST
overal switchen tussen html en php...
Wat de parse error betreft: er is geen parse error.
Het ergste is:
dat ze de vullisbak $_REQUEST gebruiken
functies output laten genereren
backticks (`) in queries laten zetten
in sql qoute je strings niet met "" maar met '', dus dat geescape is totaal fout
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// waardeloos
$sql = "SELECT `gebruikersnaam`, `wachtwoord` FROM `accounts` ";
$sql .= "WHERE `gebruikersnaam` = \"" . $gebruikersnaam . "\" ";
$sql .= "AND `wachtwoord` = \"" . $wachtwoord . "\" ";
// zoals het hoort ? ervan uitgaande dat de settings van php goed staan
$sql = "SELECT gebruikersnaam
, wachtwoord
FROM accounts
WHERE gebruikersnaam = '" . mysql_real_escape_string($gebruikersnaam ). "'
AND wachtwoord = '" .md5( $wachtwoord) . "'";
";
?>
// waardeloos
$sql = "SELECT `gebruikersnaam`, `wachtwoord` FROM `accounts` ";
$sql .= "WHERE `gebruikersnaam` = \"" . $gebruikersnaam . "\" ";
$sql .= "AND `wachtwoord` = \"" . $wachtwoord . "\" ";
// zoals het hoort ? ervan uitgaande dat de settings van php goed staan
$sql = "SELECT gebruikersnaam
, wachtwoord
FROM accounts
WHERE gebruikersnaam = '" . mysql_real_escape_string($gebruikersnaam ). "'
AND wachtwoord = '" .md5( $wachtwoord) . "'";
";
?>
het gebruik van overbodig veel aangemaakt niet benodigde variabelen
exit aan het einde
mysql foutafhandeling -> or die is kerkhof taktie!! Gebruik in je scripts absoluut geen or die() of exit(), want dat betekent dat het script onlogisch in elkaar zit.
deze en vooral deze dit totaal herschrijven. En ik wil best, om juiste php kennis te verspreiden, hier en daar assisteren.
Ik denk ook zeker dat dit script een erg slecht voorbeeld is om php mee te leren. We gunnen je allemaal juiste en up-to-date php-kennis, dus ga op basis van Alvast bedankt...
Rip ergens een compleet ledensysteem script, gaat dan uitpluizen en over een paar dagen weet je exact hoe ze het doen :)
Ga ik doen, Dankjewel!