Login script 2
Na aanleiding van het andere forum ben ik ook maar even aan de slag gegaan aan een login script.
En nu vroeg ik me af wat jullie van het volgende script vinden, en of jullie nog fouten onvolledigheden vinden.
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
71
72
73
74
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
<?php
// Sessie starten
session_start();
// Database connectie maken
include('config.php');
if($_SERVER['method_request'] == 'POST')
{
// Kijken of er niet iets is vergeten anders een error
if(!isset($_POST['username']))
{
echo 'U bent vergeten uw gebruikersnaam in te vullen<br>';
login_form();
}
else
{
if(!isset($_POST['password']))
{
echo 'U bent vergeten uw wachtwoord in te vullen<br>';
login_form();
}
else
{
// Alles uit de database halen
$sql = mysql_query("SELECT
gebruikersnaam, wachtwoord
FROM
gebruikers
WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['username'])."'
AND
wachtwoord = '".mysql_real_escape_string(md5($_POST['password']))."'"));
// Kijken of de query is gelukt
if(mysql_query($sql))
{
echo 'Sorry, er is helaas iets fout gegaan met onze database probeer het opnieuw<br>';
login_form();
}
else
{
if(mysql_num_rows($sql) == '')
{
echo 'Uw wachtwoord / gebruikersnaam combinatie is niet correct<br>';
login_form();
}
else
{
$_SESSION['login'] = $_POST['username'];
// Doorsturen naar de volgende pagina
header('Location: next.php');
}
}
}
}
}
else
{
// Het formulier laten zien
login_form();
}
// Het login formulier.
function login_form()
{
echo '<form action="" method="post">';
echo 'Gebruikersnaam: <input name="username" type="text"><br>';
echo 'Wachtwoord: <input name="password" type="password"><br>';
echo '<input type="submit" value="Log in">';
echo '</form>';
}
?>
// Sessie starten
session_start();
// Database connectie maken
include('config.php');
if($_SERVER['method_request'] == 'POST')
{
// Kijken of er niet iets is vergeten anders een error
if(!isset($_POST['username']))
{
echo 'U bent vergeten uw gebruikersnaam in te vullen<br>';
login_form();
}
else
{
if(!isset($_POST['password']))
{
echo 'U bent vergeten uw wachtwoord in te vullen<br>';
login_form();
}
else
{
// Alles uit de database halen
$sql = mysql_query("SELECT
gebruikersnaam, wachtwoord
FROM
gebruikers
WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['username'])."'
AND
wachtwoord = '".mysql_real_escape_string(md5($_POST['password']))."'"));
// Kijken of de query is gelukt
if(mysql_query($sql))
{
echo 'Sorry, er is helaas iets fout gegaan met onze database probeer het opnieuw<br>';
login_form();
}
else
{
if(mysql_num_rows($sql) == '')
{
echo 'Uw wachtwoord / gebruikersnaam combinatie is niet correct<br>';
login_form();
}
else
{
$_SESSION['login'] = $_POST['username'];
// Doorsturen naar de volgende pagina
header('Location: next.php');
}
}
}
}
}
else
{
// Het formulier laten zien
login_form();
}
// Het login formulier.
function login_form()
{
echo '<form action="" method="post">';
echo 'Gebruikersnaam: <input name="username" type="text"><br>';
echo 'Wachtwoord: <input name="password" type="password"><br>';
echo '<input type="submit" value="Log in">';
echo '</form>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Milo
if(mysql_num_rows($sql) == '')
Wat is het nut van de session setten en dan kijken of ie geset is?
Als het setten niet zou werken dan heb je nog wél de gesette variable.
Dus zinloos om te doen.
$_SESSION['login'] = $_POST['username'];
// Kijken of sessie echt is aangemaakt
if(!isset($_SESSION['login']))
namelijk: ik kijk of het aantal resultaten uit de query gelijk is aan nul als dat zo is dan komt jou gebruikersnaam / wachtwoord combinatie niet voor in de database dus error anders, verder met het gewone script.
Hmm, als ik het goed begrijp kan er dus niks fout gaan met het zetten van een sessie??
In een functie hoor je niets te echo-en....
Okok, dat wist ik nog niet ;) moet ik dan gewoon alleen het woord echo weghalen en dan bij login_form echo er voor zetten?
SanThe schreef op 03.09.2009 19:11:
Weet je wel wat je hier aan het doen bent?
if(mysql_num_rows($sql) == '')
if(mysql_num_rows($sql) == '')
Sorry, mijn fout. Ik bedoelde deze regel. Wat doe je daar?
if(!mysql_query($sql))
Milo schreef op 03.09.2009 19:38:
Hmm, als ik het goed begrijp kan er dus niks fout gaan met het zetten van een sessie??
Tuurlijk wel. Haal session_start() bovenin maar eens weg. Dan komt er niks in de session te staan, maar als jij dan toch dit doet:
$_SESSION['login'] = $_POST['username'];
Dan is op dat moment $_SESSION['login'] wél geset, maar als gewone variabele en niet in een session.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Okok dus het is een overbodig stukje? dan zal ik het verwijderen
// Kijken of de query is gelukt
if(mysql_query($sql))
In $sql zit al een result van een query en daar voer jij weer een query op uit.
Edit: Een uitroepteken (!) is NOT. Oftewel het tegengestelde van.
if('a' == 'a') // true
if(!'a' == 'a') // false
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Functies horen iets te returnen. Hier echt niet nodig. Als je echt zo lui bent zet je je formulier even in een string var en dan echo $form
Ben niet lui vind het alleen netter...
Zo niet dan mis ik nog wat (kan hoeft niet):
De status van de gebruiker..
Bijvoorbeeld: als de gebruiker op niet actief word/is gezet dat hij/zei dan niet kan inloggen ofzo....
Nee, het is alleen voor gebruik bij bijv een admin systeem en anders kan ik hem altijd nog uitbreiden
Oke dan, als je er rekening mee houd is dat mooi...
Ik ga er over denken om dan dat er bij te voegen.. ;) want ben ook bezig met een forum scripten hoewel dat mij nog niet goed afgaat