Hebt het volgende script voor een soort van login systeem. Het onderstaande script moet gebruikt worden om iemand te laten aanmelden:
Zodra ik het script test (op een Windows XP machine met easy PHP) krijg ik de volgende output:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in e:\easyphp1-7\www\login\register.php on line 44
Notice: Undefined variable: REMOTE_ADDR in e:\easyphp1-7\www\login\register.php on line 58
No Database Selected
Waar ik dus achter gekomen ben is dat dit niet werkt: $query=mysql_query("SELECT * FROM $db WHERE gebruiker = '$gebruiker'");
De variabele $query blijft gewoon leeg.
Hier ben ik achter gekomen door een IF statement erachter te plaatsen die kijkt of hij een waarde krijgt. - die if is hier weggehaald -
De vraag is nu... wat doe ik hier verkeerd?
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
| <?php include('base.php'); if(!$_POST['aanmelden']) { ?> <table> <form action="register.php" method="post"> <tr><td>Naam: </td><td><input type="text" name="gebruiker"></td></tr> <tr><td>Wachtwoord: </td><td><input type="password" name="pass"> (minimaal 6 tekens)</td></tr> <tr><td>Wachtwoord herhaal: <td><input type="password" name="hpass"></td></tr> <tr><td>E-mail: </td><td><input type="text" name="email"></td></tr> <tr><td></td><td><input type="submit" name="aanmelden" value="Aanmelden"></td></tr> </form> </table> <?php } //Onderstaande regel controleert of alle velden zijn ingevuld elseif ($_POST['gebruiker']!="" && $_POST['pass']!="" && $_POST['hpass']!="" && $_POST['email']) { //Alle ingevulde velden worden omgezet naar variabelen $gebruiker=$_POST['gebruiker']; $pass=$_POST['pass']; $hpass=$_POST['hpass']; $email=$_POST['email']; //controleer of de wachtwoorden gelijk zijn if ($pass == $hpass) { //controleer of het wachtwoord minimaal 6 karakters is if(strlen($pass) >= 6) { //Verbinding met server opzetten mysql_connect("$dbhost","$dbuser","$dbpass"); mysql_select_db("$db"); //de query kijkt of de naam ingevoerd als gebruikersnaam, al in de DB staat in het veld gebruiker $query=mysql_query("SELECT * FROM $db WHERE gebruiker = '$gebruiker'"); //Tel het aantal rijen in Query een geef de waarde door aan &aantal $aantalrijen=mysql_num_rows($query); if ($aantalrijen == 1) { //Er bestaat al een record met die naam. Er moet nu een melding op het scherm komen: echo "De gekozen gebruikersnaam bestaat al! etc. etc."; } else { //De gebruikersnaam bestaat nog niet. Het wachtwoord wordt nu gecodeerd met MD5. $md5pass = md5($pass); //Vraag het IP adres op en sla het op in de variabele $ip $ip = $REMOTE_ADDR; $query = "INSERT INTO $db(gebruiker, password, email, ip) VALUES ('$gebruiker','$md5pass','$email','$ip')"; //Voer de query uit mysql_query($query) or die(mysql_error()); echo "Uw aanmelding is verwerkt!"; } } else { echo "Het paswoord moet minimaal 6 karakters lang zijn!"; } } else { echo "De opgegeven wachtwoorden komen niet overeen!"; } } elseif ($_POST['gebruiker']=="" or $_POST['pass']=="" or $_POST['hpass']=="" or $_POST['email']=="") { echo "Niet alle velden zijn ingevuld!"; } ?> |
Zodra ik het script test (op een Windows XP machine met easy PHP) krijg ik de volgende output:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in e:\easyphp1-7\www\login\register.php on line 44
Notice: Undefined variable: REMOTE_ADDR in e:\easyphp1-7\www\login\register.php on line 58
No Database Selected
Waar ik dus achter gekomen ben is dat dit niet werkt: $query=mysql_query("SELECT * FROM $db WHERE gebruiker = '$gebruiker'");
De variabele $query blijft gewoon leeg.
De vraag is nu... wat doe ik hier verkeerd?
[ Voor 32% gewijzigd door Verwijderd op 15-03-2004 19:06 ]