Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z sha1
Forum PHP.pl > Forum > Przedszkole
ent
witam

problem dotyczy zwyklego logowania z uwierzytelnianiem i zastosowaniem funcji sha1 w php5. mam baze danych w MySQL z tabela admin, w niej 2 kolumny "nazwa_uz" i "haslo" z 1 wierszem loginem i haslem zaszyfrowanym funkcja sha1oraz prosty formularz logowania z dwoma polami.
oczywiscie mam tez skrypcik ktory ma sprawdzac wpisany login i haslo->
jego glowna czesc:
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='$nazwa_uz' and haslo = sha1('$haslo')");
  4. ?>

i tu sie zaczyna problem bo kiedy wpisuje haslo w formularzu to nie moge sie zalogowac natomiast zmieniajac skrypt na:
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='$nazwa_uz' and haslo = '8a889c2add825feb'");
  4. ?>

jest wszystko w porzadku. Dziala rowniez kiedy zamiast normalnego hasla wpisuje 8a889c2add825feb a w skrypcie opuszczam funkcje sha1:
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='$nazwa_uz' and haslo = '$haslo'");
  4. ?>

byc moze problem jest banalny ale php to dla mnie nowosc... smile.gif
mam nadzieje ze opis jest jasny
dzieki za wszelka pomoc
shield
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='$nazwa_uz' and haslo = sha1('$haslo')");
  4. ?>


przed ta linijka zrob
$haslo=sha1($haslo) i zmien zapytanie na:
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='$nazwa_uz' and haslo = '$haslo'");
  4.  
  5. ?>


greets
NuLL
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz ='".$nazwa_uz."' and haslo = '".sha1($haslo)."'");
  4. ?>
ent
przykro mi ale ten sposob nic nie daje. nadal nie moge sie zalogowac. troche sie nawet zdziwilem ze wczesniejsze przypisanie zmiennej moze cos zmienic.
dzieki za pomoc winksmiley.jpg moze jakis inny pomysl. glupia sprawa bo to chyba powinno dzialac... sad.gif
ent
ten drugi sposob tez niewiele pomaga. nie wiem o co chodzi. wczesniej ten sposob wydawal sie dobry a tu lipa. jak to jest ze wpisanie sha1($haslo) jest "gorsze" od wpisania wyniku tej funkcji(zbior znakow)?
ent
zastanawiam sie czy nie zostawic tego skryptu w taki sposob:
  1. <?php
  2. $wynik = $lacz->query("select * from admin
  3.  where nazwa_uz = '$nazwa_uz' and haslo = '8a889c2add825feb'");
  4. ?>

bo jak na razie tylko ten wariant dziala(choc mnie to wkurza angrysmiley.gif ).
Tylko czy to nie wplynie za bardzo na jego bezpieczenstwo. ewentualnie mozna to zapisac w funkcji w oddzielnym pliku. jakas rada?
shield
sprawdz sobie baze bo najprawdopodobniej masz skopana ilosc znakow (czytaj za mala) przechowujaca haslo, normalnie sha1 zwraca 40 znaczkow, u ciebie zwraca na pewno mniej

greets
ent
dzieki shield biggrin.gif

myslalem o tym wczesniej ze cos jest z moja baza-> tabela admin bo skladnia zapytania byla dobra
funkcja sha1 powinna zwracac 40 znakow a w mojej bylo 16(dziwne) -> wynik sha1 nie mogl byc wykonany w calosci bo pole char hasla w bazie ustawilem na 16(stad krotszy wynik).powinien byc 40. glupi blad blink.gif
co do poprzedniego mojego posta to nie moglem tego tak zostawic bo przy kazdej zmianie hasla musialbym zmieniac ciag tych znakow w zapytaniu
dzieki za pomoc i czas
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.