MD5 enkripcija lozinke - problem za korisnike

2

MD5 enkripcija lozinke - problem za korisnike

offline
  • Daffa  Male
  • Novi MyCity građanin
  • Pridružio: 20 Avg 2008
  • Poruke: 25
  • Gde živiš: Podgorica

Sad ne prihvata nikakvu lozinku, ni md5 oblik ni oblik odabran pri registraciji. Evo sadasnjeg koda:

<?php require("baza.php"); session_start(); baza(); $user = mysql_real_escape_string($user); $pass = mysql_real_escape_string($pass); $user = trim($user); $pass = trim ($pass); $pass=md5($_POST['pass']); $user=$_POST['user']; $upit = mysql_query("SELECT * FROM korisnik WHERE user='$user' AND pass='$pass'"); if($rez=mysql_fetch_array($upit)) {       echo "<br><br><h1><strong>Dobrodo&Scaron;li $u.</strong></h1>";    } else {    echo "Va&scaron;i podaci nisu ispravni. ";    echo "<center><a href=\"javascript:history.back()\" >Nazad</a></center>";    exit; } ?>

Sad sam totalno zbunjen. Je l' moze malo veca pomoc? Kako tacno treba sad da izgleda sql upit ovdje?

I jedno potpitanje: koja je razlika izmedju addslashes i mysql_real_escape_string

Hvala za savjete. Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Ne znam zašto to ne radi, ali vidim jednu grešku.

Ti korisničko ime i lozinku provlačiš kroz dve funkcije (sql_real_escape_string i trim) pre nego što ih preuzmeš.

Isto kao da taj deo koda i ne postoji. Ostavio si bazu otvorenu za sql injection.

Pomeri ovaj deo koda ispred tih funkcija

$pass=md5($_POST['pass']); $user=$_POST['user'];



offline
  • Daffa  Male
  • Novi MyCity građanin
  • Pridružio: 20 Avg 2008
  • Poruke: 25
  • Gde živiš: Podgorica

Balkanac82 ::
Pomeri ovaj deo koda ispred tih funkcija

$pass=md5($_POST['pass']); $user=$_POST['user'];


OK, to sam prije par minuta uradio. Hvala na predlogu, naravno.

I bas nemas ideju zasto ovo ne radi?

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Pretpostavljam da u formi koja šalje i dalje koristiš GET ili REQUEST. Proveri da li je POST i tamo.

offline
  • Daffa  Male
  • Novi MyCity građanin
  • Pridružio: 20 Avg 2008
  • Poruke: 25
  • Gde živiš: Podgorica

Evo koda forme:
<form   method="post" action="login.php">           <tr>             <td>Korisničko ime: </td>             <td><input name="user" id="user" maxlength="30" type="text" /></td>             <td>&nbsp;</td>           </tr>           <tr>             <td>Lozinka: </td>             <td><input name="pass" id="pass" maxlength="30"  type="password" />             </td>             <td><input name="login" type="submit" value="Pristup" /></td>           </tr>         </form>
Metoda POST je i na formi.

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Recimo napravis klasu za usera i onda ti se posao olaksa.

na primjer

user.class.php

<?php class User{    public function __construct(){       require_once('baza.php');       session_start();       baza();    }    protected function getUser($username, $password){       return mysql_fetch_row(             mysql_query('SELECT id FROM korisnik '.                      'WHERE user = \''.mysql_real_escape_string(trim($username)).'\' '.                      'AND pass = \''.md5(trim($password)).'\''));    }    public function loginUser($username, $password){       list($userId) = $this -> getUser($username, $password);       return ($_SESSION['USER_ID'] = $userId) ? $userId : false ;    }    public function logoutUser(){       $_SESSION['USER_ID'] = 0;    }    public function isLoged(){       return $_SESSION['USER_ID'] ? true : false;    } } ?>


pa bi onda tvoj file trebao da izgleda


<?php require_once('user.class.php'); $User = new User; $User -> loginUser($_POST['user'], $_POST['pass']);     if($User -> isLoged())    print '<br><br><h1><strong>Dobrodo&Scaron;li $u.</strong></h1>';    else    print 'Va&scaron;i podaci nisu ispravni. '.           '<center><a href="javascript:history.back()" >Nazad</a></center>'; ?>

inace ako te sta kopka slobodno koristi var_dump()

offline
  • Daffa  Male
  • Novi MyCity građanin
  • Pridružio: 20 Avg 2008
  • Poruke: 25
  • Gde živiš: Podgorica

Napisano: 04 Maj 2009 2:21

Prvo zelim da se zahvalim na tvom trudu koji si utrosio na mene, i to u ovo doba dana. Nemam rijeci, osim hvala...

A drugo (citaj losa vijest), evo ishoda:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\baza2\user.class.php on line 13

Dopuna: 04 Maj 2009 3:05

Ljudi, stvarno nisam imao namjeru da ovo pitam, ali zapao sam u takvu situaciju, pa moram. Je l' moze neko da mi na osnovu ove moje enkripcije napise kod za poredjenje lozinki na log in formi? Evo mog koda skripte za registraciju, kod enkripcije je oznacen *:

<?php //Skripta koja sadrzi konekciju na bazu "baza": require("baza.php"); baza(); //Spisak podataka (polja) u tabeli "korisnik" u bazi "baza": $user=$_REQUEST['user']; $pass=$_REQUEST['pass']; $pass1=$_REQUEST['pass1']; $ime=$_REQUEST['ime']; $prezime=$_REQUEST['prezime']; $grad=$_REQUEST['grad']; $adresa=$_REQUEST['adresa']; $mail=$_REQUEST['mail']; //Provjera praznih polja: if (!$_POST['user'] | !$_POST['pass'] | !$_POST['pass1'] | !$_POST['ime'] | !$_POST['prezime'] | !$_POST['grad'] | !$_POST['adresa'] | !$_POST['mail']) { echo '<html><head><link href="style.css" rel="stylesheet" type="text/css" /></head></html>'; die('<span class="obavezno">*</span> Niste ispunili formu za registraciju. '); echo "<center><a href=\"javascript:history.back()\" >Nazad</a></center>"; exit; } //Provjera moguce upotrebe korisnickog imena: if (!get_magic_quotes_gpc()) { $_POST['user'] = addslashes($_POST['user']); } $usercheck = $_POST['user']; $check = mysql_query("SELECT user FROM korisnik WHERE user = '$usercheck'") or die(mysql_error()); $check2 = mysql_num_rows($check); //Greska ukoliko je korisnicko ime vec u upotrebi: if ($check2 != 0) { echo '<html><head><link href="style.css" rel="stylesheet" type="text/css" /></head></html>'; die('<span class="obavezno">*</span> Korisničko ime '.$_POST['user'].' je već u upotrebi. Odaberite drugo korisničko ime.'); echo "<center><a href=\"javascript:history.back()\" >Nazad</a></center>"; exit; } //Provjera da li su obje lozinke iste: if ($_POST['pass'] != $_POST['pass1']) {     echo '<html><head><link href="style.css" rel="stylesheet" type="text/css" /></head></html>'; die('<span class="obavezno">*</span> Lozinka nije ponovljena u istom obliku.'); echo "<center><a href=\"javascript:history.back()\" >Nazad</a></center>"; exit; } //*********//ENKRIPCIJA LOZINKE://*********// $_POST['pass'] = md5($_POST['pass']); if (!get_magic_quotes_gpc()) { $_POST['pass'] = addslashes($_POST['pass']); $_POST['user'] = addslashes($_POST['user']); } //Provjera moguce upotrebe e-mail adrese: if (!get_magic_quotes_gpc()) { $_POST['mail'] = addslashes($_POST['mail']); } $mailcheck = $_POST['mail']; $check = mysql_query("SELECT mail FROM korisnik WHERE mail = '$mailcheck'") or die(mysql_error()); $check2 = mysql_num_rows($check); //Greska ukoliko je e-mail adresa vec u upotrebi: if ($check2 != 0) { echo '<html><head><link href="style.css" rel="stylesheet" type="text/css" /></head></html>'; die('<span class="obavezno">*</span> Korisnik sa  e-mail adresom <b>'.$_POST['mail'].'</b> je već registrovan. Upi&scaron;ite drugu e-mail adresu.'); echo "<center><a href=\"javascript:history.back()\" >Nazad</a></center>"; exit; } //Provjera da li je e-mail adresa pravilno unesena: $clean = array(); $email_pattern = '/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; if (preg_match($email_pattern, $_POST['mail'])) { $clean['mail'] = $_POST['mail']; } //Upis podataka u tabelu "korisnik" u bazi "baza": $insert = "INSERT INTO korisnik (user, pass, ime, prezime, grad, adresa, mail) VALUES ('".$_POST['user']."', '".$_POST['pass']."', '".$_POST['ime']."', '".$_POST['prezime']."', '".$_POST['grad']."', '".$_POST['adresa']."', '".$_POST['mail']."')"; $novi_clan = mysql_query($insert); ?>

Ja sam pokusao sve sto sam znao, ova stvar jednostavno ne radi.
Ako neko moze to da mi ucini, bicu puno zahvalan, ako ne, zahvalan sam i na ovoj dosadasnjoj pomoci. Pozdrav.

Ko je trenutno na forumu
 

Ukupno su 870 korisnika na forumu :: 12 registrovanih, 1 sakriven i 857 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Boskovic, doloress, DonRumataEstorski, dragoljub11987, Excalibur13, Marko Marković, milenko crazy north, Milicija Krajine, Rogan33, royst33, wizzardone, zicko.spacek