klein probleempje
ik ben bezig om een login script te schrijven voor mijzelf en ik kom het volgende probleem tegen.
de query die ik wil gebruiken om te controleren of iemand geregistreerd en geactiveerd is geeft geen return value , met andere woorden deze is leeg.
de query is:
$result_check_credentials = mysql_query("SELECT * FROM members WHERE (Username=".$name." AND Password=".$Password.") AND Activation IS NULL");
iemand suggesties omtrent syntax en of verbeteringen voor deze query?
Mvg ralph
Je kunt makkelijk controleren of de query correct is door deze te echo'en en daarna uit te voeren in bijv. phpmyadmin of door in de website een mysql_error(); te laten zien.
Toevoeging op 30/10/2012 12:01:40:
Error: Unknown column 'admin' in 'where clause'
SELECT * FROM members WHERE (Username=admin AND Password=admin) AND Activation IS NULL
is wat ik krijg en ik heb geen idee wat ik nu fout doe
Dus wat jou query moet zijn is het volgende:
iemand een idee hoe dat kan zal mijn code hieronder posten
login.html
<!doctype html>
<html>
<head>
<title>Boodschappenwijzer</title>
<LINK href="../../css/bsw.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<div id="login">
<form action="../php/login.php" method="POST">
<legend>Log hier in :</legend>
<fieldset>
<table>
<tr>
<td>Gebruikersnaam:</td><td><input type="text" id="name" name="name" size="25" /></td>
</tr>
<tr>
<td>Wachtwoord:</td><td><input type="password" id="pw1" name="pw1" size="25" /></td>
</tr>
<tr>
<td><input type="hidden" name="formsubmitted" value="TRUE" /><input type="submit" value="Inloggen" size="25" /></td><td></td>
</tr>
</table><!-- einde registren table -->
<p>Bent u nog geen lid, dan kunt u <a href="registreren.html"> hier </a>klikken.
</fieldset><!-- einde registreren fieldset -->
</form><!-- einde registreren form -->
</div><!-- einde registreren -->
</div><!-- einde container -->
</body>
</html>
login.php
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
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
<?php
// start debug.
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
// einde debug.
include ('../include/config.php');
if (isset($_POST['formsubmitted'])) {
// Inititeer een sessie:
session_start();
// maak een array voor error storage
$error = array();
// invoer controlles.
// als het naam veld leeg is:
if (empty($_POST['name'])) {
// voeg toe aan error [ ]
$error[] = 'U bent vergeten uw naam in te voeren ';
} else {
$name = mysql_real_escape_string($_POST['name']);
}
if (empty($_POST['pw1'])) {
$error[] = 'U bent vergeten uw wachtwoord in te vullen ';
} else {
$Password = md5(mysql_real_escape_string($_POST['pw1']));
}
// einde invoer controle
// start controle gegevens adhv database
if (empty($error))// als de array leeg is zijn er geen fouten gevonden in de ingevoerde data.
{
// debug start
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_get_user ="SELECT * FROM members WHERE (Username='".$name."' AND Password='".$Password."') AND Activation IS NULL" ;
# Check of query is gelukt
if (($result_get_user = mysql_query($sql_get_user)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_user,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_user) == 0)
{
# De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
# -> Als er geen rij is echoën we hier:
echo 'Er is geen lid met dit id!';
}
else
{
# Hier is er wel een rij dus ->
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row_user = mysql_fetch_assoc($result_get_user);
echo $row_user['Username'];
}
// debug einde
/*test
if(empty($result_check_credentials)){// als de query mislukt
echo 'Query Failed ';
die();
}
//als de query gelukt is en er een match is
if (!empty($result_check_credentials)){
// wijs deze waardes toe aan een SESION[ ] globale variabele
$_SESSION = mysql_fetch_array($result_check_credentials, MYSQL_ASSOC);
// verwijs door naar index.php
header("Location: ../index.php");
}else{
$msg_error= ' Uw account is inactief of uw email/wachtwoord kloppen niet.';
}
}else{
echo '<div> <ol>';
foreach ($error as $key => $values) {
echo ' <li>'.$values.'</li>';
}
echo '</ol></div>';
}
if(isset($msg_error)){
echo '<div>'.$msg_error.' </div>';
einde */
}
mysql_close($link);
}
// einde login
?>
// start debug.
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
// einde debug.
include ('../include/config.php');
if (isset($_POST['formsubmitted'])) {
// Inititeer een sessie:
session_start();
// maak een array voor error storage
$error = array();
// invoer controlles.
// als het naam veld leeg is:
if (empty($_POST['name'])) {
// voeg toe aan error [ ]
$error[] = 'U bent vergeten uw naam in te voeren ';
} else {
$name = mysql_real_escape_string($_POST['name']);
}
if (empty($_POST['pw1'])) {
$error[] = 'U bent vergeten uw wachtwoord in te vullen ';
} else {
$Password = md5(mysql_real_escape_string($_POST['pw1']));
}
// einde invoer controle
// start controle gegevens adhv database
if (empty($error))// als de array leeg is zijn er geen fouten gevonden in de ingevoerde data.
{
// debug start
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_get_user ="SELECT * FROM members WHERE (Username='".$name."' AND Password='".$Password."') AND Activation IS NULL" ;
# Check of query is gelukt
if (($result_get_user = mysql_query($sql_get_user)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_user,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_user) == 0)
{
# De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
# -> Als er geen rij is echoën we hier:
echo 'Er is geen lid met dit id!';
}
else
{
# Hier is er wel een rij dus ->
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row_user = mysql_fetch_assoc($result_get_user);
echo $row_user['Username'];
}
// debug einde
/*test
if(empty($result_check_credentials)){// als de query mislukt
echo 'Query Failed ';
die();
}
//als de query gelukt is en er een match is
if (!empty($result_check_credentials)){
// wijs deze waardes toe aan een SESION[ ] globale variabele
$_SESSION = mysql_fetch_array($result_check_credentials, MYSQL_ASSOC);
// verwijs door naar index.php
header("Location: ../index.php");
}else{
$msg_error= ' Uw account is inactief of uw email/wachtwoord kloppen niet.';
}
}else{
echo '<div> <ol>';
foreach ($error as $key => $values) {
echo ' <li>'.$values.'</li>';
}
echo '</ol></div>';
}
if(isset($msg_error)){
echo '<div>'.$msg_error.' </div>';
einde */
}
mysql_close($link);
}
// einde login
?>
Toevoeging op 30/10/2012 13:00:26:
ik heb de fout gevonden nu alleen nog de oplossing
de fout is: AND Activation IS NULL van de query op l 55 iemand hier een suggestie voor
Gewijzigd op 30/10/2012 13:16:33 door Ivo Breeden
SELECT * FROM members WHERE (Username='admin' AND Password='21232f297a57a5a743894a0e4a801fc3' ) AND Activation ISNULL
is de error die ik nu krijg
Toevoeging op 30/10/2012 13:32:50:
waarschijnlijk is de isnull niet goed
"ISNULL" moet zijn "IS NULL". In je eerdere code stond het wel goed.
Gewijzigd op 30/10/2012 13:49:48 door ralph van der Tang
Ik weet het niet meer zeker maar volgens mij is '' (lege string) niet hetzelfde als NULL. Wat is Activation eigenlijk voor een column? Is het een varchar of een number of ...?
Ergens in je programma maak je het veld "Activation" leeg. Hoe doe je dat? Dat zou iets moeten zijn als "update members ... set Activation=NULL ... where ...".
Toevoeging op 30/10/2012 14:16:18:
script werkt
dank voor alle hulp
Mvg Ralph