Functie returned niet goed..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jason  van der Zeeuw

Jason van der Zeeuw

26/06/2011 18:45:40
Quote Anchor link
Hallo allemaal,

ik heb een functie die checkt of de username die in de adresbalk is meegegeven, wel bestaat in de database..

als de user bestaat moet de functie $notfound = true; geven
het lukt me niet om het werkend te krijgen..

dit is de functie:
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
<?php
function user_exists() {
    if (isset($_GET['user'])) {
        $user = $_GET['user'];
        
        $query = mysql_query('Select lidnummer from Registratie
                              WHERE nickname = "'
. $user . '"');
        
        $row = mysql_fetch_assoc($query);
        if (empty($row['lidnummer'])) {
            $notfound = true;
        }

        else{
            $notfound = false;
        }

        return $notfound;
    }
}

?>


en hier roep ik de functie aan:
(de overige code is vervangen door de 2 zinnetjes, want die code is niet relevant)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
user_exists();
if($notfound == false){
    // gebruiker is wel gevonden
}
else{
    // gebruiker niet gevonden
}
?>


Toevoeging op 26/06/2011 18:47:15:

ikzelf denk dat ik niet goed check of de user gevonden wordt in de database..

dus ik denk dat het hier aan ligt: if (empty($row['lidnummer'])) {
????
 
PHP hulp

PHP hulp

26/04/2024 04:27:02
 
Vincent Huisman

Vincent Huisman

26/06/2011 18:47:47
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    if(user_exist())
    {

        // is niet
    }
?>


en dan gewoon return true/false
Gewijzigd op 26/06/2011 18:48:21 door Vincent Huisman
 
Jason  van der Zeeuw

Jason van der Zeeuw

26/06/2011 18:49:12
Quote Anchor link
thnx opgelost :D!
 
Dos Moonen

Dos Moonen

26/06/2011 20:48:48
Quote Anchor link
Die functie is onveilig en niet bepaald herbruikbaar...

Vergelijk het eens met deze:
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
<?php
function user_exists($user) {
    $query = mysql_query("Select COUNT(*) from Registratie
                              WHERE nickname = '"
. mysql_real_escape_string($user) . "'");
        
    return $query AND mysql_num_rows($query);
}


// gebruik met $_GET
if (isset($_GET['user']) AND user_exists($_GET['user']))
{

    // user bestaat
}

// ander gebruik
$user = 'dummy';
if ( ! user_exists($user))
{

    // user bestaat niet
}
?>
 
Jason  van der Zeeuw

Jason van der Zeeuw

26/06/2011 20:50:28
Quote Anchor link
handig inderdaad!
maar waaron return je $query AND mysql_num_rows($query) ?
 
Dos Moonen

Dos Moonen

26/06/2011 21:25:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
return $query AND mysql_num_rows($query);
//doet het zelfde als
if ($query AND mysql_num_rows($query))
{

    return TRUE;
}

else
{
    return FALSE;
}

?>

Ik vind die eerste manier net zo duidelijk en ietsjes mooier.
Gewijzigd op 26/06/2011 21:26:08 door Dos Moonen
 
Jason  van der Zeeuw

Jason van der Zeeuw

26/06/2011 21:27:03
Quote Anchor link
het werkt niet bij mij...
dan geeft hij elke keer aan dat de gebruikers niet bestaan...
 
Jelmer -

Jelmer -

26/06/2011 23:46:47
Quote Anchor link
Jason van der Zeeuw op 26/06/2011 21:27:03:
het werkt niet bij mij...
dan geeft hij elke keer aan dat de gebruikers niet bestaan...


Hmm, dat ruikt naar een fout in je query. Want als ik de functie lees zou hij altijd true moeten geven. COUNT geeft immers een resultaat terug, dus mysql_num_rows is altijd 1. Ook als COUNT 0 heeft geteld.

Probeer deze eens, met een beetje geluk krijg je dan te zien wat er mis gaat.
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
function user_exists($nickname)
{

    $query = sprintf("SELECT COUNT(*) FROM Registratie WHERE nickname = '%s'",
        mysql_real_escape_string($nickname));
    
    $result = mysql_query($query);

    if (!$result)
        trigger_error("Error in user_exists: " . mysql_error(), E_USER_ERROR);

    return mysql_result($result, 0);
}

?>
 



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.