Probleempje met inloggen
Ik heb dus een probleem met dit inlogscript als je registreert kun je kiezen uit systeembeheerder (status 1) en gebruiker (status 0). Wat ik probeer te maken is dat je als systeembeheerder inlogt een echo krijgt met welkom systeembeheerder en als je inlogt als gebruiker een echo krijgt met welkom gebruiker het spreekt eigenlijk voor zich. Ik heb de functies nog niet zo onder de knie ben hard bezig met het leren hier voor.
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
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
<?php
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
mysql_connect($host,$naam,$pass);
mysql_select_db($database);
$inlognaam = $_POST['gebruikersnaam'];
$wachtwoord= $_POST['wachtwoord'];
$query = mysql_query("SELECT gebruikersnaam FROM users WHERE gebruikersnaam = '$inlognaam' AND wachtwoord = '$wachtwoord'");
$status_1 = mysql_query("SELECT status FROM users WHERE status = '1'");
$nums_1 = mysql_num_rows($query);
$nums_2 = mysql_num_rows($status_1);
if ($nums_1==1 && $nums_2==1)
{
echo "Welkom systeembeheerder";
} elseif ($nums_1==1 && $nums_2==0){
echo "Welkom gebruiker";
} else {
echo "Login verkeerd";
}
mysql_close()
?>
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
mysql_connect($host,$naam,$pass);
mysql_select_db($database);
$inlognaam = $_POST['gebruikersnaam'];
$wachtwoord= $_POST['wachtwoord'];
$query = mysql_query("SELECT gebruikersnaam FROM users WHERE gebruikersnaam = '$inlognaam' AND wachtwoord = '$wachtwoord'");
$status_1 = mysql_query("SELECT status FROM users WHERE status = '1'");
$nums_1 = mysql_num_rows($query);
$nums_2 = mysql_num_rows($status_1);
if ($nums_1==1 && $nums_2==1)
{
echo "Welkom systeembeheerder";
} elseif ($nums_1==1 && $nums_2==0){
echo "Welkom gebruiker";
} else {
echo "Login verkeerd";
}
mysql_close()
?>
Je haalt nu altijd een status op die 1 is. Je moet de status tegelijkertijd ophalen in de eerste query. Verder is je script lek.
Je slaat ook zomaar de paswoorden van je gebruikers ongecodeerd op in de database. Dat is ook heel erg not done
ja heb iets gelezen over md5 maar daar gaat het even niet over kan later nog wel toch?
SELECT status FROM users WHERE status = '1'
Dat levert toch altijd hetzelfde op.
("SELECT status FROM users WHERE status = '?1:0'");
moet het zoiets zijn?
- SanThe - op 20/04/2012 11:23:53:
Je logica is fout.
Je haalt nu altijd een status op die 1 is. Je moet de status tegelijkertijd ophalen in de eerste query. Verder is je script lek.
Je haalt nu altijd een status op die 1 is. Je moet de status tegelijkertijd ophalen in de eerste query. Verder is je script lek.
http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
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
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
<?php
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
$link = mysql_connect($host,$naam,$pass);
mysql_select_db($database, $link);
$query = mysql_query("SELECT
gebruikersnaam, wachtwoord
FROM
users
WHERE
gebruikersnaam = '". mysql_real_escape_string($_POST(['gebruikersnaam']))."'
AND wachtwoord = '". mysql_real_escape_string($_POST(['wachtwoord']))."'
");
if ($query === false){
echo "er ging iets fout bij het ophalen van de query";
}
else {
if (mysql_num_rows($query) == 1){
echo "welcome user";
}
else {
echo "user bestaat niet!";
}
}
mysql_close()
?>
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
$link = mysql_connect($host,$naam,$pass);
mysql_select_db($database, $link);
$query = mysql_query("SELECT
gebruikersnaam, wachtwoord
FROM
users
WHERE
gebruikersnaam = '". mysql_real_escape_string($_POST(['gebruikersnaam']))."'
AND wachtwoord = '". mysql_real_escape_string($_POST(['wachtwoord']))."'
");
if ($query === false){
echo "er ging iets fout bij het ophalen van de query";
}
else {
if (mysql_num_rows($query) == 1){
echo "welcome user";
}
else {
echo "user bestaat niet!";
}
}
mysql_close()
?>
subquerys of Innerjoin, left join, right join is iets lastiger ik zal eerst maar is even mijn boek verder uitlezen. (in het boek staat dat je tussendoor oefeningen moet doen).
boeken zijn een beetje achterhaald en lopen achter om php te leren kan je het beste google/phphulp/php.net gebruiken :)
Quote:
met je query haal je de gegevens op: username, wachtwoord en user_type. met het inloggen kun je dan gelijk checken wat het type is van degene die inlogd en zo bepaal je wat je moet echo'en (als de username en wachtwoord natuurlijk wel eerst overeen komen).
eerst inloggen en daarna checken op type.....
eerst inloggen en daarna checken op type.....
Gewijzigd op 20/04/2012 13:13:10 door raymond van Os
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
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
<?php
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
mysql_connect($host,$naam,$pass);
mysql_select_db($database);
$query = mysql_query("SELECT status
FROM users
WHERE gebruikersnaam = '". mysql_real_escape_string($_POST['gebruikersnaam'])."'
AND wachtwoord = '". mysql_real_escape_string($_POST['wachtwoord'])."')";
if($query === false)
{
echo 'Error';
}
else
{
if(mysql_num_rows($query) == 1)
{
$row = mysql_fetch_assoc($query);
if($row['status'] == 1)
{
echo "Welkom systeembeheerder";
}
else
{
echo "Welkom gebruiker";
}
}
else
{
echo 'niet ingelogd';
}
}
?>
$host = 'localhost';
$naam = 'root';
$pass = '***';
$database = 'ticket';
mysql_connect($host,$naam,$pass);
mysql_select_db($database);
$query = mysql_query("SELECT status
FROM users
WHERE gebruikersnaam = '". mysql_real_escape_string($_POST['gebruikersnaam'])."'
AND wachtwoord = '". mysql_real_escape_string($_POST['wachtwoord'])."')";
if($query === false)
{
echo 'Error';
}
else
{
if(mysql_num_rows($query) == 1)
{
$row = mysql_fetch_assoc($query);
if($row['status'] == 1)
{
echo "Welkom systeembeheerder";
}
else
{
echo "Welkom gebruiker";
}
}
else
{
echo 'niet ingelogd';
}
}
?>
Gewijzigd op 20/04/2012 14:43:44 door - SanThe -
Je gaat enkel na of de user een beheerder is; je test nergens of een gewone gebruiker echt ingelogd is.
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
...
if($query === false) {
// er is een fout in de query
}
else {
// er is geen fout in de query
$row = mysql_fetch_assoc($query);
if($row['status'] == 1) {
// de gebruiker is ingelogd en heeft status = 1
}
else {
// de gebruiker is zeker geen beheerder, maar er is ook geen enkele reden om aan te nemen dat de username of paswoord kloppen
}
}
?>
...
if($query === false) {
// er is een fout in de query
}
else {
// er is geen fout in de query
$row = mysql_fetch_assoc($query);
if($row['status'] == 1) {
// de gebruiker is ingelogd en heeft status = 1
}
else {
// de gebruiker is zeker geen beheerder, maar er is ook geen enkele reden om aan te nemen dat de username of paswoord kloppen
}
}
?>
(Edit: ondertussen is die code aangepast ...)
Gewijzigd op 20/04/2012 15:59:05 door Kris Peeters
@Kris: Zo beter? Je hebt helemaal gelijk. Beetje te snel gemaakt.