Parse error, Ik kom er niet uit.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snoopaloopaa 919191

Snoopaloopaa 919191

22/06/2009 17:32:00
Quote Anchor link
Ik ben begonnen met leren van php5, en gebruik daarbij een boek, maar ik kom ergens niet uit, (het is een voorbeeld uit het boek)
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)
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
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
 
PHP hulp

PHP hulp

26/04/2024 09:25:47
 

22/06/2009 18:10:00
Quote Anchor link
Zet alles eens tussen [ c o d e ] [ / c o d e ]
(zonder spaties)
 
Snoopaloopaa 919191

Snoopaloopaa 919191

22/06/2009 18:12:00
Quote Anchor link
kevin meijer schreef op 22.06.2009 18:10:
Zet alles eens tussen [ c o d e ] [ / c o d e ]
(zonder spaties)

Sorry, wist ik niet, zo is hij inderdaad stuk beter leesbaar.
 
Emmanuel Delay

Emmanuel Delay

22/06/2009 19:49:00
Quote Anchor link
Dan heb ik toch serieus mijn bedenkingen bij dat boek.
$_REQUEST
overal switchen tussen html en php...

Wat de parse error betreft: er is geen parse error.
 
Noppes

Noppes

22/06/2009 20:00:00
Quote Anchor link
Dat boek kan inderdaad openhaard in...

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)
PHP script in nieuw venster Selecteer het PHP script
1
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) . "'";
";

?>

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.
 
Afra ca

Afra ca

22/06/2009 20:05:00
Quote Anchor link
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 deze en vooral deze dit totaal herschrijven. En ik wil best, om juiste php kennis te verspreiden, hier en daar assisteren.
 
Snoopaloopaa 919191

Snoopaloopaa 919191

22/06/2009 22:39:00
Quote Anchor link
Ik denk dat het verstandig is dit boek aan de kant te leggen. Maar ik zoek een dan een ander "goed" boek, waar ook tutorials in staan, hoe je waterdichte login systemen maakt, en bevestigingsmail enzo. Kan iemand mij een boek aanraden?
Alvast bedankt...
 
Erik Rijk

Erik Rijk

22/06/2009 22:43:00
Quote Anchor link
Tja, echt een boek kan ik je niet aanraden...
Rip ergens een compleet ledensysteem script, gaat dan uitpluizen en over een paar dagen weet je exact hoe ze het doen :)
 
Snoopaloopaa 919191

Snoopaloopaa 919191

22/06/2009 22:44:00
Quote Anchor link
Ga ik doen, Dankjewel!
 



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.