[php&mysql]Inlog sys + MD5

Pagina: 1
Acties:

  • Bjk
  • Registratie: Augustus 2002
  • Laatst online: 20:16
Ik gebruik al een lange tijd een inlog systeem met php/mysql en cookies. Toch was het niet echt veilig want ik encrypte niks. Dus dat wou ik vandaag gaan maken.
Toch stuite ik op een probleem, ik zal het even uitleggen.

In register.php:
Hier kunnen mensen zich registreren. Als jij jezelf registreert en je passwoord intiept in een Form. En dan op submit drukt word je passwoord ge-encrypt dat doe ik zo:

$encryptedpass = md5("$wachtwoord"); //wachtwoord is de naam van het textfield

Daarna post hij alle gegevens in de DB en dat werkt. Als ik in de DB kijk zie ik een netjes ge-encrypte pass staan.

In login.php

Je moet eerst weer een aantal textfields invullen, waaronder je username en pass.
Als je dan op submit doet encrypt ik het wachtwoord en vergelijk hem dan met het password in de DB. Hier gaat het fout. Ik gebruik dit om te vergelijken:

if (md5($wachtwoord) == $memberpass) {

(wederom is wachtwoord de gene uit de textfield, en is memberpass de kolom in de DB)
Naar mijn weten moet dit werken maar hij doet het niet. Als ik het MD5 gebeuren weghaal doet hij het wel, dus aan de MySQL select ligt het niet.

Doe ik iets fout? Want ik heb al met de search gekeken maar kon niks vinden. Ik wil alles ook wel online zetten of het je mailen.

Probleem al reeds opgelost, had een } op de verkeerde plek gezet

[ Voor 0% gewijzigd door Bjk op 23-09-2002 14:48 . Reden: Probleem opgelost! ]


Verwijderd

Probeer anders eerst eens het resultaat van je md5 encryptie in een variabele te zetten en deze dan pas te vergelijken met de waarde uit de database.

Verwijderd

Ik snap je vraagstelling niet helemaal, met AND wachtwoord_in_db = wachtwoord_uit_veld in de query vergelijk je het wachtwoord.

Daarna zou je een numrows kunen uitvoeren je mag immer maar 1 goed resultaat krijgen. En dan een userlogged var op 1 zetten ofzo. En uiteraard een else op 0 zodat mensen niet die var in de titelbalk kunnen stoppen.

En je wachtwoord en username in een cookie zetten lijkt me ook niet de meest veilige manier.

Hier heb je een functie die ik wel eens heb gebruikt.
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
session_register("session_login_key");
session_register("session_user_id");

function loginUser($HTTP_POST_VARS) {
    global $ip, $session_login_key, $session_user_id, $HTTP_REFERER;
    
    list($username, $password) = array($HTTP_POST_VARS["username"], $HTTP_POST_VARS["password"]);
    
    $query = mysql_query("SELECT `je_relevante_velden` FROM `user_tabel` WHERE username='$username' AND password='".md5($password)."'");
    $user_verify = mysql_num_rows($query);
    $user_data = mysql_fetch_array($query);
    
    if ($user_verify == 1) {
        $login_key = md5(rand(1000, 9999).$ip.rand(1000, 9999));
        $user_id = $user_data["UserID"];
        $session_login_key = $login_key;
        $session_user_id = $user_id;
        $query = mysql_query("UPDATE `user_tabel` SET user_logged_var='1', login_key='$login_key' WHERE username='$username'");
        
        if($HTTP_POST_VARS["remember_password"] == "on") {
            setcookie("cookie_login_key",$login_key,time()+604800);
            setcookie("cookie_user_id",$user_data[UserID],time()+604800);
        }
        header("Location: $HTTP_REFERER");
    }
    
    else {
        echo "Authentification failed"; }   
}

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Ik heb ook een keer zo'n probleem gehad, maar toen bleek dat ik zo stom was geweest om het password veld in de DB te kort te maken.... daardoor konden niet alle characters van een MD5 encrypte password worden opgeslagen. Als je dan gaat vergelijken, heb je dus een halve encryptie in de DB en dat gaat nooit werken :P

Signature van nature


  • BlaTieBla
  • Registratie: November 2000
  • Laatst online: 07:33

BlaTieBla

Vloeken En Raak Schieten

let wel op, de data gaat wel als plain text over de lijn.
Alleen de passwords stan niet meer plain-text in de database (als dat alleen de bedoeling is, dan moet dat opzich goed lukken zo)

leica - zeiss - fuji - apple | PSN = Sh4m1n0