Inloggen met PDO
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)
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
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;
}
?>
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
Regel 47 staat een } zonder openings {
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
En waar komen $username, $pass en $user vandaan?
je fetched naar $result, maar haalt de username uit $user (niet eens $username wat in principe wel zou kunnen, mocht die bestaan).
zoiets?
@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
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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();
?>
// 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