login script met if -1 fout
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
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
<?php
error_reporting(-1);
ini_set('display_errors', 1);
try {
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*********');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start( );
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
if (!$stmt) {
// Handle errors
}
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
$sessieid = session_id();
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
if ( $username == "" ) {
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
if ( $wachtwoord == "" ) {
echo "<font color='red'>Vul geldig wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
$stmt->execute();
if ( $relatieid == "-1" ) {
echo "inloggen mislukt />";
$db = null;
}
echo "<font color='green'>inloggen gelukt</font>";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
setcookie("TestCookie", $username);
?>
error_reporting(-1);
ini_set('display_errors', 1);
try {
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*********');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start( );
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
if (!$stmt) {
// Handle errors
}
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
$sessieid = session_id();
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
if ( $username == "" ) {
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
if ( $wachtwoord == "" ) {
echo "<font color='red'>Vul geldig wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
$stmt->execute();
if ( $relatieid == "-1" ) {
echo "inloggen mislukt />";
$db = null;
}
echo "<font color='green'>inloggen gelukt</font>";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
setcookie("TestCookie", $username);
?>
Je voert eerst je query uit en dan ga je wat controles uitvoeren.
En dat is natuurlijk fout.
Logischer is om het zo te doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// eerst de controlle of alles is ingevult.
// iets fout error weergeven
// query uitvoeren
// als daar wat mis gaat dan ook error weergeven
// ingelogd, dan session, koekje aanmaken.
// alles ok, header doorsturen naar beveiligde pagina..
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// eerst de controlle of alles is ingevult.
// iets fout error weergeven
// query uitvoeren
// als daar wat mis gaat dan ook error weergeven
// ingelogd, dan session, koekje aanmaken.
// alles ok, header doorsturen naar beveiligde pagina..
}
?>
en dan zit ik nog van dat ik die output parameter nog niet in het script kan krijgen :(
Gewijzigd op 02/04/2012 10:16:59 door gerhard timmerman
Maar je logica zit niet handig in elkaar zoals ik hierboven laat zien, dwing je het af dat alles (user input) eerst word gecontroleerd, en vervolgens kan je die gaan uitvoeren tegen je query. Als de query mislukt dan geef je een errror melding. En daar zet je dan 'het aantal keer proberen' in.
Als het dan allemaal goed gaat, dan pas iets doen met een session token maken die je controleerd op je beveiligde pagina.
Wat jij doet is eerst een query uitvoeren, en vervolgens gaan controleren op user input. Als dat klopt, dan kan je je pas druk maken op de output parameter.
Even een voorzetje gemaakt.
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
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
<?php
session_start();
$sessieid = session_id();
error_reporting(-1);
ini_set('display_errors', 1);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
if(trim($username) == '')
{
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
}
if(trim($wachtwoord) == '')
{
echo "<font color='red'>Vul geldige wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
}
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*********');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
$stmt->execute();
if(!$stmt)
{
// hier foutmelding doen..
}
else
{
setcookie("TestCookie", $username);
// redirecten
exit();
}
}
?>
session_start();
$sessieid = session_id();
error_reporting(-1);
ini_set('display_errors', 1);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
if(trim($username) == '')
{
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
}
if(trim($wachtwoord) == '')
{
echo "<font color='red'>Vul geldige wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
}
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*********');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
$stmt->execute();
if(!$stmt)
{
// hier foutmelding doen..
}
else
{
setcookie("TestCookie", $username);
// redirecten
exit();
}
}
?>
Gewijzigd op 02/04/2012 10:43:48 door Bart V B
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
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
<?php
error_reporting(-1);
ini_set('display_errors', 1);
try {
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*****');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start( );
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
$sessieid = session_id();
if ( $username == "" ) {
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
if ( $wachtwoord == "" ) {
echo "<font color='red'>Vul geldig wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
$stmt->execute();
if ( $relatieid == "-1" ) {
echo "inloggen mislukt />";
$db = null;
}
echo "<font color='green'>inloggen gelukt</font>";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
setcookie("TestCookie", $username);
?>
error_reporting(-1);
ini_set('display_errors', 1);
try {
$db = new PDO('mssql:host=localhost\snelstart;dbname=SluisWWW','test','*****');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start( );
$username = $_POST['username'];
$wachtwoord = $_POST['wachtwoord'];
$ip = $_SERVER["REMOTE_ADDR"];
$computernaam = php_uname('n');
$sessieid = session_id();
if ( $username == "" ) {
echo "<font color='red'>Vul geldige gebruikersnaam in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
if ( $wachtwoord == "" ) {
echo "<font color='red'>Vul geldig wachtwoord in!</font><br>";
header("refresh:5;url=/login/");
$db = null;
}
$stmt = $db->prepare("EXECUTE spMagInvoeren ?,?,?,?,?,?,?");
$stmt->bindValue(1 ,$username, PDO::PARAM_STR);
$stmt->bindValue(2 ,$wachtwoord);
$stmt->bindValue(3 ,$ip);
$stmt->bindValue(4 ,$computernaam);
$stmt->bindValue(5 ,$sessieid);
$stmt->bindParam(6 ,$poging);
$stmt->bindParam(7 ,$relatieid, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
$stmt->execute();
if ( $relatieid == "-1" ) {
echo "inloggen mislukt />";
$db = null;
}
echo "<font color='green'>inloggen gelukt</font>";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
setcookie("TestCookie", $username);
?>
oke ik heb nu het werkend van de gebruikersnaam en wachtwoord als deze er niet inzitten slaat hij het neit op. nu moet ik alleen nog dat met -1 voor elkaar krijgen met de output parameter dus.
Gewijzigd op 02/04/2012 10:38:26 door gerhard timmerman
Ow kijk even naar mijn opzetje in mijn edit.
Gewijzigd op 02/04/2012 11:07:23 door gerhard timmerman
plus dat ik er net achter kom dat hij ook niks meer in database zet maar dat zal komen omdat je de values na een prepare pas moet aanroepen
Gewijzigd op 02/04/2012 11:25:06 door gerhard timmerman
Op php.net zie ik daar nog een nummer staan achter PDO::PARAM_INPUT_OUTPUT, 12
http://php.net/manual/en/pdostatement.bindparam.php
Gewijzigd op 02/04/2012 11:38:59 door gerhard timmerman
http://grokbase.com/t/php/php-bugs/081ja85h6k/43887-new-mssql2005-procedure-pdo-param-input-output
https://bugs.php.net/bug.php?id=43887
Gewijzigd op 02/04/2012 11:59:29 door gerhard timmerman
Zet na elke header() een exit() neer. Nu loopt je script gewoon nog lekker door.
bedankt nu is 1 probleem afgevinkt nu zit ik nog met die output paramater dat deze in het script komt dat hij relatieid uit kan lezen