klein probleempje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ralph van der Tang

ralph van der Tang

30/10/2012 11:55:17
Quote Anchor link
hoi iedereen,

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
 
PHP hulp

PHP hulp

23/11/2024 08:58:28
 
Rick van Riel

Rick van Riel

30/10/2012 11:58:31
Quote Anchor link
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.
 
Ralph van der Tang

ralph van der Tang

30/10/2012 11:59:41
Quote Anchor link
heb een debug script gevonden hier laat ik dat eerst is gebruiken en kijken wat er uit komt


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
 
Rick van Riel

Rick van Riel

30/10/2012 12:04:04
Quote Anchor link
het probleem is dat de waarde waarop je probeert te controleren een string is. En als er een string in je query staat moet dit altijd tussen enkele quotes staan.
Dus wat jou query moet zijn is het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result_check_credentials = mysql_query("SELECT * FROM members WHERE (Username='".$name."' AND Password='".$Password."') AND Activation IS NULL");
 
Ralph van der Tang

ralph van der Tang

30/10/2012 12:12:07
Quote Anchor link
ergens gaat er nog iets fout want had op mijn localhost een account aangemaakt met un:admin pw:admin en ik krijg nog steeds: er besttat geen gebruiker met deze id.

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)
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
<?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 '&nbsp;<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
 
Ivo Breeden

Ivo Breeden

30/10/2012 13:15:10
Quote Anchor link
Ja maar wat is dat raar. Dan had hij toch niet met de melding "Er is geen lid met dit id!" moeten komen maar met "Fout met het ophalen van de gebruiker.". En wat is eigenlijk de mysql_error? Want op het eerste gezicht zie ik niets verkeerd aan die query. Of het zou zo moeten zijn dat "Activation" geen bestaande column in die tabel is.
Gewijzigd op 30/10/2012 13:16:33 door Ivo Breeden
 
Ralph van der Tang

ralph van der Tang

30/10/2012 13:30:35
Quote Anchor link
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ISNULL' at line 1
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
 
Ivo Breeden

Ivo Breeden

30/10/2012 13:34:00
Quote Anchor link
"ISNULL" moet zijn "IS NULL". In je eerdere code stond het wel goed.
 
Ralph van der Tang

ralph van der Tang

30/10/2012 13:35:37
Quote Anchor link
krijg nu er is geen lid met dat id en dat komt door dat Activation gedeelte zonder dat werkt het script gewoon
Gewijzigd op 30/10/2012 13:49:48 door ralph van der Tang
 
Ivo Breeden

Ivo Breeden

30/10/2012 14:00:20
Quote Anchor link
Mooi zo. Dan staat in de tabel in de row van 'Admin' 'Admin' dus een waarde in de column "Activation".
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 ...".
 
Ralph van der Tang

ralph van der Tang

30/10/2012 14:02:48
Quote Anchor link
probleem voorlopig opgelost Activation was geen null maar lege string


Toevoeging op 30/10/2012 14:16:18:

script werkt
dank voor alle hulp

Mvg Ralph
 



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.