Fout in script
Ik heb een PHP-MySQL script dat niet werkt.
Verschillende tabellen in de database kunnen opgvraagd worden, maar bij het inloggen wil het maar niet lukken de juiste user-wachtwoord combinatie te vergelijken.
Wat is er fout aan de script. (los van het feit dat 'ie wegens het testen nu halverwege stopt)
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
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
<?php
session_start();
?>
<html>
<head>
<title>inlogpagina voor de boekenbeurs</title>
<link rel="stylesheet" type="text/css" href="css.css" media="screen">
</head>
<body>
<br>
<TABLE WIDTH=100% HEIGHT=200 BORDER="1">
<TR BORDER="1">
<TD background="boeken-bieb.jpg">
<center><IMG SRC="boekenbeurs.JPG">
<BR><BR><BR><center><IMG SRC="login.JPG">
</TD>
</TR>
</TABLE>
<center>
<?php
if ($submit1) {
$check = "1";
$user1 = "root";
$pass = "passwordvanjemysqldatabase";
$host = "localhost";
$dbdb = "boekendb";
/* if (!mysql_select_db($dbdb, mysql_connect($host, $user1, $pass))) */
if (!mysql_select_db($dbdb, mysql_connect($host, $user1))) {
echo "Connectie met database mislukt.";
exit();
}
$gebruiker = addslashes($gebruiker);
$wachtwoord = addslashes($wachtwoord);
//echo "voordat we gaan zoeken in de database is gebruiker ".$gebruiker." met wachtwoord ".$wachtwoord;
// tot hier gaat alles goed
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
echo "opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord;
}
// fout of goed wachtwoord doet er niet toe, hij geeft in alle gevallen aan dat het opzoeken in de database gelukt is
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
echo " en de id van de user is : ".$useridnr;
die();
// de bovenstaande echo geeft uiteraard een lege useridnr omdat de querie mislukt is
$results = mysql_num_rows($query);
if ($results == '1') {
//$datum = date("d-m-Y H:i");
//$datum = date("Y-m-d H:i:s");
$ipadres = $REMOTE_ADDR;
$query = "INSERT INTO login (`id`, `user`, `ip`, `datum`) VALUES ('','$user','$ipadres',NOW())";
if (!mysql_query($query)) {
echo "actie om in login te schrijven mislukt";
die(mysql_error());
}
$gebruiksid = "$ipadres-$user-$userid";
setcookie("gebruikersid", $gebruiksid, time()+1800);
// hoe display ik de inhooud van de cookie?
echo "veel teksten om de tekst weer te vinden ".$gebruikersid;
die();
// debuginfo
// echo "userid in login.php na session=" . $_SESSION['userid'].mysql_error();
// exit();
$voerin = "<meta http-equiv=refresh content=0;URL=boekenbeurs.php>";
//echo $voerin;
//pagina voor de goede login
}
else {
$invoer = '<meta http-equiv=refresh content=0;URL=begin.html>';
echo $invoer;
//pagina voor de foute login
}
} //endif ($submit)
if($check !='1') {
?>
<br><br><br>
<center>
<div id="table3">
<table width="30%" border="0" cellspacing="0" cellpadding="0">
<form method="post" action="boekenlogin.php" >
<tr><th colspan="2" align="center">Inloggen</tr>
<tr><td height="30" align="right">Gebruikersnaam:</td><td><input type="text" name="gebruiker" size="20"></tr>
<tr><td height="30" align="right"> Wachtwoord:</td><td><input type="password" name="wachtwoord" size="20"></tr>
<tr><td colspan="2" height="30" align="center"><input type="submit" name="submit1" value="Login" ></tr>
</table>
</div>
</center>
<br>
<br>
<br>
<H2>Heb je nog geen wachtwoord?</H2>
<BR>
<input type="submit" name="submit2" value="Klik hier om je aan te melden" >
<?php
// die submit2 heb ik even uit de php code weggelaten
}
?>
</body>
</html>
session_start();
?>
<html>
<head>
<title>inlogpagina voor de boekenbeurs</title>
<link rel="stylesheet" type="text/css" href="css.css" media="screen">
</head>
<body>
<br>
<TABLE WIDTH=100% HEIGHT=200 BORDER="1">
<TR BORDER="1">
<TD background="boeken-bieb.jpg">
<center><IMG SRC="boekenbeurs.JPG">
<BR><BR><BR><center><IMG SRC="login.JPG">
</TD>
</TR>
</TABLE>
<center>
<?php
if ($submit1) {
$check = "1";
$user1 = "root";
$pass = "passwordvanjemysqldatabase";
$host = "localhost";
$dbdb = "boekendb";
/* if (!mysql_select_db($dbdb, mysql_connect($host, $user1, $pass))) */
if (!mysql_select_db($dbdb, mysql_connect($host, $user1))) {
echo "Connectie met database mislukt.";
exit();
}
$gebruiker = addslashes($gebruiker);
$wachtwoord = addslashes($wachtwoord);
//echo "voordat we gaan zoeken in de database is gebruiker ".$gebruiker." met wachtwoord ".$wachtwoord;
// tot hier gaat alles goed
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
echo "opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord;
}
// fout of goed wachtwoord doet er niet toe, hij geeft in alle gevallen aan dat het opzoeken in de database gelukt is
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
echo " en de id van de user is : ".$useridnr;
die();
// de bovenstaande echo geeft uiteraard een lege useridnr omdat de querie mislukt is
$results = mysql_num_rows($query);
if ($results == '1') {
//$datum = date("d-m-Y H:i");
//$datum = date("Y-m-d H:i:s");
$ipadres = $REMOTE_ADDR;
$query = "INSERT INTO login (`id`, `user`, `ip`, `datum`) VALUES ('','$user','$ipadres',NOW())";
if (!mysql_query($query)) {
echo "actie om in login te schrijven mislukt";
die(mysql_error());
}
$gebruiksid = "$ipadres-$user-$userid";
setcookie("gebruikersid", $gebruiksid, time()+1800);
// hoe display ik de inhooud van de cookie?
echo "veel teksten om de tekst weer te vinden ".$gebruikersid;
die();
// debuginfo
// echo "userid in login.php na session=" . $_SESSION['userid'].mysql_error();
// exit();
$voerin = "<meta http-equiv=refresh content=0;URL=boekenbeurs.php>";
//echo $voerin;
//pagina voor de goede login
}
else {
$invoer = '<meta http-equiv=refresh content=0;URL=begin.html>';
echo $invoer;
//pagina voor de foute login
}
} //endif ($submit)
if($check !='1') {
?>
<br><br><br>
<center>
<div id="table3">
<table width="30%" border="0" cellspacing="0" cellpadding="0">
<form method="post" action="boekenlogin.php" >
<tr><th colspan="2" align="center">Inloggen</tr>
<tr><td height="30" align="right">Gebruikersnaam:</td><td><input type="text" name="gebruiker" size="20"></tr>
<tr><td height="30" align="right"> Wachtwoord:</td><td><input type="password" name="wachtwoord" size="20"></tr>
<tr><td colspan="2" height="30" align="center"><input type="submit" name="submit1" value="Login" ></tr>
</table>
</div>
</center>
<br>
<br>
<br>
<H2>Heb je nog geen wachtwoord?</H2>
<BR>
<input type="submit" name="submit2" value="Klik hier om je aan te melden" >
<?php
// die submit2 heb ik even uit de php code weggelaten
}
?>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Hein
Variabelen die uit je formulier komen doe je zo:
$_POST['formulierveldnaam']
in dit geval $_POST['submit1'];
Dat geld voor alle variabelen uit je formulier..
En om te controleren of het formulierveld al is verzonden kan je overigens beter:
if ($_SERVER['REQUEST_METHOD'] == "POST")
wat is de fout de krijgt dan?
@wout : waarom is een konijn omdat hij achter een boom ?
Als je wilt kijken wat er fout gaat:
http://strampke.mine.nu/boekenlogin.php
2 vragen:
- waarom doet de \n newline het niet
- het laatste woord tekst is gebruikersid. daarachter hoort te staan je ip adres, je usernaam en je userid
mooi dat die dat niet ophaalt uit de tabel.
En mooi dat die je bezoek wel wegschrijft in de login tabel.
en vreemd is dat hij op grond van je ip adres bij je eerste bezoek wél de koppeling maakt met je allereerste login.
Blijft dat cookie steeds op je client hangen?
moet ik soms in het script iets maken dat de oude cookie van de gast verwijdert voordat 'ie kan inloggen?
hier volgt het script:
<html>
<head>
<title>inlogpagina voor de boekenbeurs</title>
<link rel="stylesheet" type="text/css" href="css.css" media="screen">
</head>
<body>
<br>
<TABLE WIDTH=100% HEIGHT=200 BORDER="1">
<TR BORDER="1">
<TD background="boeken-bieb.jpg">
<center><IMG SRC="boekenbeurs.JPG">
<BR><BR><BR><center><IMG SRC="inlogpagina.JPG">
</TD>
</TR>
</TABLE>
<center>
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
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
<?php
//if ($submit1) { onderstaand de eerste verbetering
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$check = "1";
$user1 = "root";
$pass = "passwordvanjemysqldatabase";
$host = "localhost";
$dbdb = "boekendb";
/* if (!mysql_select_db($dbdb, mysql_connect($host, $user1, $pass))) */
if (!mysql_select_db($dbdb, mysql_connect($host, $user1))) {
echo "Connectie met database mislukt.";
exit();
}
$gebruiker = addslashes($gebruiker);
$wachtwoord = addslashes($wachtwoord);
print "voordat we gaan zoeken in de database is gebruiker ".$gebruiker." met wachtwoord ".$wachtwoord."\n" ;
// tot hier gaat alles goed
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
print" opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord."\n";
}
// fout of goed wachtwoord doet er niet toe, hij geeft in alle gevallen aan dat het opzoeken in de database gelukt is
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
print " en de id van de user is : ".$useridnr."\n";
//die();
// de bovenstaande echo geeft uiteraard een lege useridnr omdat de querie mislukt is
$results = mysql_num_rows($query);
if ($results == '1') {
//$datum = date("d-m-Y H:i");
//$datum = date("Y-m-d H:i:s");
$ipadres = $REMOTE_ADDR;
$query = "INSERT INTO login (`id`, `user`, `ip`, `datum`) VALUES ('','$user','$ipadres',NOW())";
if (!mysql_query($query)) {
echo "actie om in login te schrijven mislukt";
die(mysql_error());
} else
print " actie om in login te schrijven is gelukt"."\n";
$gebruiksid = "$ipadres-$user-$userid";
setcookie("gebruikersid", $gebruiksid, time()+1800);
// hoe display ik de inhooud van de cookie?
print "\n gebruikersid ".$gebruikersid;
die();
// debuginfo
// echo "userid in login.php na session=" . $_SESSION['userid'].mysql_error();
// exit();
$voerin = "<meta http-equiv=refresh content=0;URL=boekenbeurs.php>";
//echo $voerin;
//pagina voor de goede login
}
else {
$invoer = '<meta http-equiv=refresh content=0;URL=begin.html>';
echo $invoer;
//pagina voor de foute login
}
} //endif ($submit)
if($check !='1') {
?>
//if ($submit1) { onderstaand de eerste verbetering
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$check = "1";
$user1 = "root";
$pass = "passwordvanjemysqldatabase";
$host = "localhost";
$dbdb = "boekendb";
/* if (!mysql_select_db($dbdb, mysql_connect($host, $user1, $pass))) */
if (!mysql_select_db($dbdb, mysql_connect($host, $user1))) {
echo "Connectie met database mislukt.";
exit();
}
$gebruiker = addslashes($gebruiker);
$wachtwoord = addslashes($wachtwoord);
print "voordat we gaan zoeken in de database is gebruiker ".$gebruiker." met wachtwoord ".$wachtwoord."\n" ;
// tot hier gaat alles goed
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
print" opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord."\n";
}
// fout of goed wachtwoord doet er niet toe, hij geeft in alle gevallen aan dat het opzoeken in de database gelukt is
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
print " en de id van de user is : ".$useridnr."\n";
//die();
// de bovenstaande echo geeft uiteraard een lege useridnr omdat de querie mislukt is
$results = mysql_num_rows($query);
if ($results == '1') {
//$datum = date("d-m-Y H:i");
//$datum = date("Y-m-d H:i:s");
$ipadres = $REMOTE_ADDR;
$query = "INSERT INTO login (`id`, `user`, `ip`, `datum`) VALUES ('','$user','$ipadres',NOW())";
if (!mysql_query($query)) {
echo "actie om in login te schrijven mislukt";
die(mysql_error());
} else
print " actie om in login te schrijven is gelukt"."\n";
$gebruiksid = "$ipadres-$user-$userid";
setcookie("gebruikersid", $gebruiksid, time()+1800);
// hoe display ik de inhooud van de cookie?
print "\n gebruikersid ".$gebruikersid;
die();
// debuginfo
// echo "userid in login.php na session=" . $_SESSION['userid'].mysql_error();
// exit();
$voerin = "<meta http-equiv=refresh content=0;URL=boekenbeurs.php>";
//echo $voerin;
//pagina voor de goede login
}
else {
$invoer = '<meta http-equiv=refresh content=0;URL=begin.html>';
echo $invoer;
//pagina voor de foute login
}
} //endif ($submit)
if($check !='1') {
?>
<br><br><br>
<center>
<div id="table3">
<table width="30%" border="0" cellspacing="0" cellpadding="0">
<form method="post" action="boekenlogin.php" >
<tr><th colspan="2" align="center">Inloggen</tr>
<tr><td height="30" align="right">Gebruikersnaam:</td><td><input type="text" name="gebruiker" size="20"></tr>
<tr><td height="30" align="right"> Wachtwoord:</td><td><input type="password" name="wachtwoord" size="20"></tr>
<tr><td colspan="2" height="30" align="center"><input type="submit" name="submit1" value="Login" ></tr>
</table>
</div>
</center>
<br>
<br>
<br>
<H2>Heb je nog geen wachtwoord?</H2>
<BR>
<input type="submit" name="submit2" value="Klik hier om je aan te melden" >
</body>
</html>
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
Hieronder nogmaals met de SELECT ervoor
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
print" opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord."\n tot hier kennen we $gebruiker nog";
}
// maar onderstaand gaan we de mist in
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
print " en de id van de user is : ".$useridnr." en hier ben ik het spoor bijster \n";
//die();
?>
if (!$query = mysql_query("SELECT * FROM users WHERE user = '$gebruiker' AND password = '$wachtwoord'")) {
echo "opzoeken van user en password in de database mislukt ";
exit();
}else{
print" opzoeken in de database gelukt ".$gebruiker." met wachtwoord ".$wachtwoord."\n tot hier kennen we $gebruiker nog";
}
// maar onderstaand gaan we de mist in
$resultaat = mysql_fetch_array($query);
$userid = $resultaat[userid];
print " en de id van de user is : ".$useridnr." en hier ben ik het spoor bijster \n";
//die();
?>
Ik denk dat er een stomme fout in die mysql_fetch_array zit, maar ik zie het niet.
Gewijzigd op 01/01/1970 01:00:00 door Hein
In regel 14 gebruik je $useridnr in plaats van $userid.
Ik ben bezig met een boekenbeurs.
Op veel middelbare scholen worden de boeken via Van Dijk geregeld. De kosten worden ieder jaar hoger.
Vorig jaar heb ik voor m'n zoons boeken gekocht via speurders, marktplaats en boekenbeurs.nl
Je weet dan nooit of de aangeboden boeken in goede staat zijn en hebt te maken met verzendkosten.
Daarom heb ik een boekenbeurs gemaakt die je op een Freesco server op school kan installeren.
Er moet best nog wel een en ander aan gesleuteld worden, zoals een aanpassing aan het script dat lolbroeken er geen java grappen in plaatsen.
Als je er eens naar wilt kijken en commentaar geven dan hoor ik dat graag.
En wie deze boekenbeurs op z'n eigen school wil hebben, mag hem zo gebruiken.