Inloggen met PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Reshad F

Reshad F

06/07/2012 21:26:07
Quote Anchor link
ik probeer een inlog scriptje te maken met PDO alleen kom ik niet heel ver.

om een of andere reden pakt hij het wachtwoord en gebruikersnaam niet.

het ziet er zo uit: maar op de een of ander manier krijg ik gewoon een wit scherm. ziet iemand wat ik fout doe? volgens mij zie ik iets heel stoms over het hoofd.

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
<?php
    function doRun( $data )  
    {

        $username = $_POST['name'];
        $pass = $_POST['pass'];
        try
        {
            $db = new PDO('mysql:host=localhost;dbname=testData', 'root', 'root');
            $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                $stmt = $db->prepare('    SELECT
                                                username, pass
                                        FROM     
                                                testTable
                                        WHERE
                                                username = :name
                                        AND     
                                                pass = :pass

                                    '
);

                $stmt->bindParam(':name', $username, PDO::PARAM_STR);
                $stmt->bindParam(':pass', $pass, PDO::PARAM_STR);

                $stmt->execute();
                
                $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

                if($result == false)
                {

                    echo 'sorry could not connect';
                }

                else
                {
                    $_SESSION['name'] = $username;

                    echo 'logged in as ' . $username;
                }
                
        }

        catch (PDOException $e)
        {

            echo "throw";
        }


           $db = NULL;
    }

?>
Gewijzigd op 07/07/2012 00:24:16 door Reshad F
 
PHP hulp

PHP hulp

28/11/2024 20:47:10
 
- SanThe -

- SanThe -

06/07/2012 23:22:28
Quote Anchor link
Regel 47 staat een } zonder openings {
 
Reshad F

Reshad F

06/07/2012 23:26:50
Quote Anchor link
ah nee sorry dat is een van } wat de functie afsluit.

ik heb het script even weer aangepast. ik kom nu in de result === false terecht terwijl het wel de goede gegevens zijn wat ik invoer.

ik heb het gevoel dat hij de inhoud van wat ik invoer niet pakt.

( mijn vermoeden hierboven bevestigd ) ik krijg een lege array terug als ik $string echo.
Gewijzigd op 06/07/2012 23:36:04 door Reshad F
 
- SanThe -

- SanThe -

06/07/2012 23:48:32
Quote Anchor link
En waar komen $username, $pass en $user vandaan?
 
Erwin H

Erwin H

07/07/2012 00:01:09
Quote Anchor link
En daarna:
je fetched naar $result, maar haalt de username uit $user (niet eens $username wat in principe wel zou kunnen, mocht die bestaan).
 
Reshad F

Reshad F

07/07/2012 00:10:07
Quote Anchor link
@santhe moeten deze in PDO gedeclareerd worden apart?

zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$name
= $_POST['username'];
$pass = $_POST['pass'];
?>


@erwin
wat bedoel je precies met ik haal de username uit user? bedoel je hiermee regel 34?

Toevoeging op 07/07/2012 00:23:46:

@santhe dat was idd het probleem. ik moest die username en pass declareren in mijn functie. maar ik weet niet of dit de correcte manier is in PDO..? ( zie code )
Gewijzigd op 07/07/2012 00:24:33 door Reshad F
 
Erwin H

Erwin H

07/07/2012 00:29:17
Quote Anchor link
Inderdaad, regel 34.

En zoals je het nu hebt is het natuurlijk geen mooie manier voor een OOP applicatie. Ofwel je geeft de variabelen mee als parameters van de methode (wat doe je nu bijvoorbeeld met $data??), ofwel je maakt er class properties van.
Sorry, begreep PDO als OOP... het zal het tijdstip zijn.
Desalniettemin zou ik niet in de functie de POST parameters uitlezen, maar altijd meegeven aan de functie als parameters.
Gewijzigd op 07/07/2012 00:35:54 door Erwin H
 
Reshad F

Reshad F

07/07/2012 00:34:48
Quote Anchor link
ah dit stukje zit niet in een class. ik roep deze functie in mijn pagina aan dmv mijn form. deze ziet er zo uit

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
<?php
// create a new FormHandler object
    $form = new FormHandler();

    // some fields..
    $form->textField( "Naam", "name", FH_STRING, 20, 40);
    $form->passField("Wachtwoord", "pass", FH_PASSWORD);

    // button for submitting
    $form->submitButton();

    // set the 'commit-after-form' function
    $form->onCorrect('doRun');

    // display the form
    $form->flush();
?>


ik kan in principe $data gewoon weglaten toch? want verder doe ik er in principe niets mee met deze functie. of zou ik het beter in een class kunnen zetten en daarvanuit op moeten roepen?

Toevoeging op 07/07/2012 00:38:44:

edit: waar zou ik het als parameter mee moeten geven? voor de functie al?
Gewijzigd op 07/07/2012 00:35:07 door Reshad F
 



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.