PHP Login MD5 Encrypty.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paco oste

Paco oste

29/08/2010 11:47:20
Quote Anchor link
Hallo, ik ben met mijn nieuwe website bezig.
Maar nu was ik aan de login aan het werken.
En ik heb een probleempje.
Als ik probeer in te loggen krijg ik alleen.
'Foute Gebruikersnaam of wachtwoord.'
Ik weet niet wat ik fout heb gedaan.
Maar kan iemand me helpen.
Ojah voor je gaat flamen: DIT IS NOG EEN BETA VERSIE!!!!

Login.php:
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
39
<?php
                    if($_POST){
                        $host="localhost"; // Host name
                        $username="root"; // Mysql username
                        $password=""; // Mysql password
                        $db_name="GangsterDay"; // Database name
                        // Connect to server and select databse.

                        mysql_connect("$host", "$username", "$password")or die("cannot connect");
                        mysql_select_db("$db_name")or die("cannot select DB");

                        // username and password sent from form
                        $username = $_POST['user'];
                        $password = md5($_POST['pass']);
                        
                        $username = stripslashes($username);
                        $password = stripslashes($password);
                        $username = mysql_real_escape_string($username);
                        $password = mysql_real_escape_string($password);

                        $sql="SELECT * FROM users WHERE name='$username' and password='$password'";
                        $namecheck = mysql_query("SELECT name FROM users WHERE name='$username'");
                        $nameexist = mysql_num_rows($namecheck);
                        $result=mysql_query($sql);
                        $count=mysql_num_rows($result);
                        if($count==1){
                            session_register("username");
                            session_register("password");
                            header("location: login_success.php");
                        }
else {
                            echo 'Foute naam of Wachtwoord.';
                        }
                    }
else {
                        echo '<form action="?page=login" method="POST">
                                <br><p>Gebruikersnaam: <input type="textbox" name="user" class="username" />
                                <br>Wachtwoord: <input type="password" name="pass" class="password" />
                                <br><input type="submit" value="Login "></p>
                              </form>'
;
                    }

                ?>


Register.php:
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
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
<?php
    if($_POST){
    //Define!
    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'root');
    define('MYSQL_PASS', '');
    define('MYSQL_DB', 'GangsterDay');
    
    //Variable's
    $conn = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    $select = @mysql_select_db(MYSQL_DB);
    $email = $_POST['email'];    
    $username = $_POST['user'];
    $password = md5($_POST['pass']);
    $vpassword = md5($_POST['subpass']);
    $usercheck = mysql_query("SELECT name FROM users WHERE name='$username'");
    $userexist = mysql_num_rows($usercheck);
    $emailcheck = mysql_query("SELECT email FROM users WHERE email='$email'");
    $emailexist = mysql_num_rows($emailcheck);
    $ipcheck = mysql_query("SELECT ip FROM users WHERE ip='$ip'");
    $ipexist = mysql_num_rows($ipcheck);
    $ip = $_SERVER['REMOTE_ADDR'];
    $query = "INSERT INTO users (name, password, email, active, money, ip)
                                VALUES('$username', '$vpassword', '$email', '0', '10000', '$ip')"
;

    //Query controle.
    if($query){
    //IP Controle of de gebruiker all een account heeft.
        if(!$ipexist == 0){
            echo '<center style="color: white;">Je hebt all een account op, GangsterDay.
                    <br>Gelieven op je ander account in te loggen.</center>'
;
            exit;
        }

    //Als De gebruikersnaam all bestaat.
        if(!$userexist == 0){
            echo '<center style="color: white;">Gebruiker Bestaat all.
                   <br>Gelieven een andere gebruikersnaam te nemen.</center>'
;
                    unset($username);
                    exit;
        }

    //Als de Wachtwoorden Niet Gelijk zijn.
        if($password !== $vpassword){
            echo '<center style="color: white;">Wachtwoorden niet gelijk.
                  <br><a href="javascript:history.go(-1)">Ga terug</a> en vul de juiste wachtwoorden in.</center>'
;
                    unset($password);
                    unset($vpassword);
                    exit;
        }

    //Als het email adres all in gebruik is.
        if(!$emailexist == 0){
            echo '<center style="color: white;">Uw email adres is all in gebruik.
                <br>Gelieven een andere mail te gebruiken.</center>'
;
            exit;
        }

        mysql_query($query) or die(mysql_error());
        mysql_close();
        echo '<center style="color: white;">U bent nu geregistreerd.</center>';
    }
else {
        echo mysql_error();
    }
    }
else {
        echo '<center><form action="?page=register" method="POST">
            <br><p>Gebruikersnaam: <input type="textbox" name="user" class="username" />
            <br>Wachtwoord: <input type="password" name="pass" class="password" />
            <br>Bevestig Wachtwoord: <input type="password" name="subpass" class="bepassword" />
            <br>Emailadress <input type="textbox" name="email" class="email"/>
            <br><input type="submit" value="Registreren "><input type="reset" value="Reset de Text">
    </form>
    <br>
    <br>
        <img src="images/1/advert_001.png" align="center"/>
    </p></center>'
;
}
?>


Database opmaak:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    id     name     password     active     money     email     ip
    1     boedaka     b36d331451a61eb2d76860e00     0     10000     [email protected]     ::1
 
PHP hulp

PHP hulp

25/04/2024 01:53:49
 
- SanThe -

- SanThe -

29/08/2010 12:09:31
Quote Anchor link
Jouw password in de database is 25 characters. Een md5() is 32 characters. Conclusie: Je passwordveld (varchar) is te kort.

Verdere opmerkingen:
Zet error_reporting(E_ALL) aan.

Geen goede controle
if($_POST)
Maak daar van
if($_SERVER['REQUEST_METHOD'] == 'POST')

Gebruik geen @ om fouten te onderdrukken, maar los het op.
$conn = @mysql_connect(......

Haal $vars buiten de quotes
...WHERE name='$username' ...
Wordt
...WHERE name='" . $username . "' ...

Bouw nette foutafhandeling in voor de query's

Session_register is antiek.
Gebruik de superglobal $_SESSION['...']

Je 2e script is lek => SQL-Injection
 
Paco oste

Paco oste

29/08/2010 12:10:30
Quote Anchor link
San, Lees er boven BETA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
Noppes Homeland

Noppes Homeland

29/08/2010 12:11:14
Quote Anchor link
En waar heb je deze baggercode vandaan?

Er gaat al zoveel fout dat je beter opnieuw kunt beginnen!
- je toont niet dat de sessie gestart wordt
- session_register is prehistory
- je vuurt onnodig "check" queries af
- sql injectie
- je maakt overbodige variabelen aan
- de juiste controles en validaties ontbreken
- or die() wil je niet in je code hebben, pas fatsoenlijke foutafhandeling toe
- je wilt niet stoppen met een exit, dat resulteert in invalid html, een verneukte pagina weergave
- inline style is ook niet echt handig, gebruik css
- onderdrukken van fouten door gebuik van @
- enz. enz.

Als je het password opslaat met md5 dan zal je in je where clause dit ook moeten doen en let op dat je database veld waarin je het wachtwoord opslaat op z'n minst 32 karakters moet kunnen bevatten
 
Paco oste

Paco oste

29/08/2010 12:13:15
Quote Anchor link
Sorry dat ik zo reageer maar ik krijg het ervan als mensen niet lezen watt ik schrijf...
 
- SanThe -

- SanThe -

29/08/2010 12:15:26
Quote Anchor link
Paco oste op 29/08/2010 12:10:30:
San, Lees er boven BETA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Dus ...... ?
 
Paco oste

Paco oste

29/08/2010 12:17:04
Quote Anchor link
Dus ik ben er nog aan aan het werken, Btw: Ik kan nog niet met sessie's werken ik doe pas 1maand PHP Waarvan ik 2 weken niet heb gedaan en 2 weken heb geleerd ;)
 
Elio vp

Elio vp

29/08/2010 12:17:41
Quote Anchor link
Ze zullen waarschijnlijk wel lezen wat je schrijft maar willen je er gewoon duidelijk op wijzen dat je code zo lek is als een zeef en dat je er "ZEKER" naar moet kijken..

Als ik jou was zou ik gewoon luisteren en hetgeen ze hier geven van extra info/tips deze te accepteren of eventueel op te schrijven.

Denk niet dat San je helpt om op je systeem te werken hoor..
 
SilverWolf NL

SilverWolf NL

29/08/2010 12:17:56
Quote Anchor link
Dat komt doordat je fouten opgelost worden als je het in een keer goed schrijft. Vroeg of laat loop je met deze code tegen de lamp aan, en het is dan ook beter om het in een keer goed te schrijven. De rede dat zij zo reageren is omdat, als je je aan die regels houd, je problemen gelijk opgelost zijn, of dat je ze zelf op kan lossen omdat er een nette error komt te staan.

Het is niet om je te stangen dat we het zo zeggen; juist om je te helpen.
 
- SanThe -

- SanThe -

29/08/2010 12:18:24
Quote Anchor link
Paco oste op 29/08/2010 12:17:04:
Dus ik ben er nog aan aan het werken, Btw: Ik kan nog niet met sessie's werken ik doe pas 1maand PHP Waarvan ik 2 weken niet heb gedaan en 2 weken heb geleerd ;)


Dus een beta versie mag totaal fout gescript zijn en niemand mag daar iets zinnigs over vertellen. In dat geval: Zoek het lekker zelf uit.
 
Paco oste

Paco oste

29/08/2010 12:20:16
Quote Anchor link
leuk dankje voor de info San (:
 
Noppes Homeland

Noppes Homeland

29/08/2010 12:21:30
Quote Anchor link
Paco oste op 29/08/2010 12:13:15:
Sorry dat ik zo reageer maar ik krijg het ervan als mensen niet lezen watt ik schrijf...


We lezen wel, maar het lijkt mij dat BETA code hetgeen is wat er redelijkwijs in deze vorm in gebruik genomen gaat worden.

Wij wijzen je er nu al op dat je op een verkeerde manier werkt, zodat je in de toekomst wel direct codeert zoals het gecodeeerd zal moeten worden.
 
Paco oste

Paco oste

29/08/2010 12:26:33
Quote Anchor link
Ik weet niet of jij het weet.
Maar er bestaat geen juiste manier van coden.
Base je zin daar maar eens op.
Maar Coden, heeft veel wegen, hoe je dingen kunt laten werken.
Met coden Moet niet altijd exact het zelfde als het beste zou zijn.
Ik studeer informatica en ik heb nog geen klo... PHP Geleerd.
Ik studeerde alleen maar visual basic.
Dus als je wild verwachten dat ik PHP Direct kan zit je goed mis.
Want VB.NET & PHP Is een heel groot verschil der informatie.
En ik durf te wedden, dat 3 kwart van deze mensen, nog niet eens een deftig progama kan schrijven in VB.NET --"
 
SilverWolf NL

SilverWolf NL

29/08/2010 12:34:05
Quote Anchor link
Nee inderdaad, maar je moet wel zorgen dat er geen lekken in zitten, die zo groot zijn dat er een olifant doorheen kan kruipen. Dat heb jij op dit moment wel. VB.NET kan wel zo anders zijn, maar dan moet je toch ook daar iets van beveiliging hebben geleerd? Als je daar zo goed in bent, dan weet je toch ook wat dat inhoud? Wil je PHP leren, is er één regel, waar je je ten alle tijden aan moet houden: zorg voor goede beveiliging. Zoals het er nu staat, kan je site binnen 2 minuten plat liggen. Wil je dat soms?

Je komt hier voor hulp, wij bieden die. Je kan zeggen hoe we hulp moeten bieden, of dat we hulp moeten bieden. Maar probeer a.u.b. ons niet beide te laten doen.
 
Noppes Homeland

Noppes Homeland

29/08/2010 12:39:39
Quote Anchor link
Wel als je kan php-en kan je ook vb-en en andersom, dat sommige zaken dan net iets anders gaan is een bijkomstigheid.

De logica van de te doorlopen procedurele stappen zal in feite altijd gelijk zijn.
 
John Doe

John Doe

29/08/2010 12:49:41
Quote Anchor link
Volgens mij is net niet slim om aan een beveiliging van een website te sleutelen als je nog maar 2 weken php heb gescript.
 
P Lekensteyn

P Lekensteyn

29/08/2010 12:49:47
Quote Anchor link
Paco, ik gebruik geen Windhoos dus heb geen f*ck aan VB.NET.
Jij wilt zo graag PHP schrijven, dan moet je blij zijn dat er (nog) mensen zijn die je willen helpen.

Er is geen standaard code, maar dat wilt niet zeggen dat je meteen alle veiligheidsmaatregelen moet negeren, en bagger code maakt.
Als je zoveel kritiek op PHP hebt, ga dan zelf naar de basics, C.
O wacht, daar ken je zeker geen drol van.

Met "ik weet het niet en ik ben nieuw wèèèèèèèèèèh" zul je geen brood verdienen.

Wat jij nu bied is dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
Reken uit: 15 delen door 4.
[kladblok]
15 = 14+ 1
14/4 is geheel ja of nee
15 = 13 + 2
13 is oneven dus kan niet geheel getal zijn
15 = 12 + 3
is 12 / 4 een geheel getal?
even denken... 3..
[/kladblok]
*jij gaat verder*
hmm, ik denk dat het antwoord ook ongeveer drie is ja.


En nu de makkelijke manier, in een keer goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
*maak een schatting*
*Pakt rekenmachientje*
Tikt in: 15
*controleer*
Tikt in: / 4
*controleer*
Tikt in: =
*controleer antwoord*
15 / 4 = 3.75
Ik weet zeker dat het antwoord 3.75 is.

Was dat nou zo moeilijk om het in een keer goed te doen?
Gewijzigd op 29/08/2010 12:51:37 door P Lekensteyn
 
Pim -

Pim -

29/08/2010 16:18:31
Quote Anchor link
Haha wat een vergelijking xD
 
Dalando De Zuil

Dalando De Zuil

29/08/2010 16:23:31
Quote Anchor link
Ik zou zeggen: Verbeter die kritiekpuntjes (want if($_POST) = echt WTF!! )
En probeer het dan opnieuw..

Toevoeging op 29/08/2010 16:24:09:

en nog iets voor de volgende keer: Doe het gewoon in 1 keer goed, krijg je dit soort zooi niet.
 



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.