Probleempje met inloggen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

20/04/2012 11:17:22
Quote Anchor link
Hallo,

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)
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
<?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()
?>
 
PHP hulp

PHP hulp

18/04/2024 12:14:59
 
- SanThe -

- SanThe -

20/04/2012 11:23:53
Quote Anchor link
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.
 

20/04/2012 11:25:14
Quote Anchor link
Ik weet dat die lek is:p probeer eerst dit even te fixen zou je dit een scriptje willen formuleren ben een echte beginner ben 4 dagen geleden pas begonnen met php en sql en heb nooit eerder gescript
Gewijzigd op 20/04/2012 11:27:02 door
 
Kris Peeters

Kris Peeters

20/04/2012 11:28:32
Quote Anchor link
Je slaat ook zomaar de paswoorden van je gebruikers ongecodeerd op in de database. Dat is ook heel erg not done
 

20/04/2012 11:30:21
Quote Anchor link
ja heb iets gelezen over md5 maar daar gaat het even niet over kan later nog wel toch?
 
- SanThe -

- SanThe -

20/04/2012 11:32:14
Quote Anchor link
Kijk nou eens goed naar dit:
SELECT status FROM users WHERE status = '1'

Dat levert toch altijd hetzelfde op.
 

20/04/2012 11:40:24
Quote Anchor link
Ik snap wat je bedoelt

("SELECT status FROM users WHERE status = '?1:0'");

moet het zoiets zijn?
Gewijzigd op 20/04/2012 11:45:38 door
 
- SanThe -

- SanThe -

20/04/2012 11:45:11
Quote Anchor link
- 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.
 
Reshad F

Reshad F

20/04/2012 11:45:13
Quote Anchor link
ik heb je script iets herschreven met foutafhandeling en beveiliging tege injections. alleen heb ik er nog even geen wachtwoord encryptie in gezet. dit voorbeeld is puur voor je logica en hoe je iets opbouwt. je doet nu 2 querys dit kan je allemaal in 1 query doen kijk is naar subquerys of Innerjoin, left join, right join enz.. verder is het handig om deze tut even door te lezen als je net begonnen bent.

http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/

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
<?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()
?>
 

20/04/2012 12:09:57
Quote Anchor link
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).
 
Reshad F

Reshad F

20/04/2012 12:29:22
Quote Anchor link
boeken zijn een beetje achterhaald en lopen achter om php te leren kan je het beste google/phphulp/php.net gebruiken :)
 
Raymond van Os

raymond van Os

20/04/2012 13:12:30
Quote Anchor link
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.....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if($ == 1)
{
    echo '<h4>Welkom Admin</h4>';
} else {
    echo '<h4>Welkom User</h4>';
}
Gewijzigd op 20/04/2012 13:13:10 door raymond van Os
 
- SanThe -

- SanThe -

20/04/2012 13:27:31
Quote Anchor link
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
<?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';
    }
}

?>
Gewijzigd op 20/04/2012 14:43:44 door - SanThe -
 
Kris Peeters

Kris Peeters

20/04/2012 14:27:48
Quote Anchor link
Dit laatste klopt niet.

Je gaat enkel na of de user een beheerder is; je test nergens of een gewone gebruiker echt ingelogd is.

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
...
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
 
- SanThe -

- SanThe -

20/04/2012 14:45:03
Quote Anchor link
@Kris: Zo beter? Je hebt helemaal gelijk. Beetje te snel gemaakt.
 



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.