Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Hashowanie hasła - md5
darophp
post 10.06.2010, 15:07:14
Post #1





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Słuchajcie, mam dosyć dziwny problem. Mianowicie robię panel klienta i wszystko jest zrobione od jakiegoś czasu. Nie testowałem skryptu logowania - do dzisiaj. gdy chcę się zalogować do bazy a hasło mam ustawione test1234 to zaloguje. Natomiast gdy wyłączę kompa i włączę jeszcze raz to hasło się zmienia (resetuje) na:
Kod
d41d8cd98f00b204e9800998ecf8427e

Z tego co się dowiedziałem u wujka Google oznacza to null lub inaczej 0 czy nawet brak znaków.
Czym to może być spowodowane ?
Tak wygląda struktura:
password | varchar(32) | latin2_general_ci | Nie | None


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
erix
post 10.06.2010, 15:19:47
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A to nie jest przypadkiem tabela memory?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
darophp
post 11.06.2010, 20:14:27
Post #3





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


To jest tabela MYlSAM.

Edit:

Dodam kod ...
Kod
session_start();

$login     = $_POST["login"];
$haslo     = $_POST["password"];

if ($_GET["login"]=="end") {
  session_unset();
  session_destroy();
} else if ($login<>"" and $haslo<>"") {
  $password = md5($haslo);
  if ($connect) {
    if (mysql_select_db($mysql_baza)) {
      $wynik=mysql_query("SELECT * FROM clients WHERE login='$login' and password='$password'");
      if (mysql_num_rows($wynik)==1) {
        $dane=mysql_fetch_array($wynik);
        $_SESSION["logged"]="yes";
        $_SESSION["login"]=$dane["login"];
        $_SESSION["email"]=$dane["email"];
        ...
      }
    } else echo "Nie można połączyć się z bazą";
    mysql_close($connect);
  }
}


Ten post edytował darophp 11.06.2010, 20:22:43


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
erix
post 11.06.2010, 20:22:38
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. if ($_GET["login"]=="end") {
  2. }

Wiem, że się czepiam, ale po co tu session_unset?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
darophp
post 11.06.2010, 20:31:19
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Chyba zadziałało usunięcie. Ale teraz trzeba kliknąć dwa razy w butona aby wylogowało. No tyle mogą zrobić klienci biggrin.gif Jeśli coś będzie nie działać będę pisał.


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
erix
post 11.06.2010, 20:41:33
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Samo session_destroy wystarczy. session_unset jest do czego innego, w dodatku - ma status deprecated.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
darophp
post 13.06.2010, 20:20:01
Post #7





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Coś jakby dalej jest problem...



--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
erix
post 13.06.2010, 20:31:39
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




coś, to znaczy co?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
darophp
post 13.06.2010, 20:38:20
Post #9





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Zobacz ze w polu password występuje 0 czyli nic a były hasła np ...cc18sd5... no jakoś tak się zaczynało

Ten post edytował darophp 13.06.2010, 20:39:08


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
phpion
post 14.06.2010, 13:30:32
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(darophp @ 13.06.2010, 21:38:20 ) *
Zobacz ze w polu password występuje 0 czyli nic a były hasła np ...cc18sd5... no jakoś tak się zaczynało

Cytat(darophp @ 13.06.2010, 21:20:01 ) *

Ja tam widzę hashe, a nie 0.

//Edit:
Już wiem - są to hashe pustego ciągu. Czyli musisz gdzieś mieć UPDATE, który aktualizuje ci hasła (i to bez warunku). Innej opcji nie widzę.

Ten post edytował phpion 14.06.2010, 13:32:20
Go to the top of the page
+Quote Post
darophp
post 14.06.2010, 13:35:59
Post #11





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Nosz kur..cze Jak to poprawić ?
Kod
if ($page=="settings") {
  echo "<p>Twój login: ".$_SESSION["login"]."<br/>Twój email: ".$_SESSION["email"]."</p>";
  $password = md5($_POST["password"]);
if ($connect) {
  $wynik = mysql_query("UPDATE clients SET password='$password' WHERE login='{$_SESSION["login"]}'");
echo <<<FORM
<form action="/index.php?page=settings" method="post">
<p>Hasło: <input type="password" name="password" /></p>
<input type="submit" class="change" value=" " />
</form><div style="margin-top: 310px;"></div>
FORM;
}
}


Ten post edytował darophp 14.06.2010, 13:36:15


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
phpion
post 14.06.2010, 13:37:17
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pewnie $_POST['password'] masz puste. I pewnie wiem dlaczego: nie sprawdzasz czy formularz został wysłany tylko z pały aktualizujesz dane. Sprawdź czy formularz został wysłany (np. count($_POST) > 0) albo sprawdź samą długość $_POST['password'] > 0.

Ten post edytował phpion 14.06.2010, 13:38:38
Go to the top of the page
+Quote Post
darophp
post 16.06.2010, 17:23:36
Post #13





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


No właśnie ... tylko jak to zrobić .. ?
Kod
if ($page=="settings") {
  echo "<p>Twój login: ".$_SESSION["login"]."<br/>Twój email: ".$_SESSION["email"]."</p>";
  $password = md5($_POST["password"]);
if ($connect) {
  $wynik = mysql_query("UPDATE clients SET password='$password' WHERE login='{$_SESSION["login"]}'");
if (empty($_POST["submit"])) {
echo <<<FORM
<form action="/index.php?page=settings" method="post">
<p>Hasło: <input type="password" name="password" /></p>
<input type="submit" class="change" value=" " />
</form>
FORM;
}
   else {
     echo "Błąd. Nie zmieniono hasła."; }
}
echo "<div style=\"margin-top: 310px;\"></div>";
}


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
thek
post 16.06.2010, 20:18:42
Post #14





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




$_POST w formularzu zawsze będzie > 0, bo zaliczy submita choćby więc to żadne zabezpieczenie. Tu trzeba sprawdzać prędzej czy aby !empty( $_POST['password'] ) i od tego uzależniać także czy update jest czy nie. Oczywiście to tylko z grubsza zarysowane. Powinieneś od razu zabezpieczać form przed odświeżaniem smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
phpion
post 17.06.2010, 07:00:30
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(thek @ 16.06.2010, 21:18:42 ) *
$_POST w formularzu zawsze będzie > 0, bo zaliczy submita choćby więc to żadne zabezpieczenie.

Na marginesie: nie zgodzę się. Jeśli nie nadasz nazwy submitowi (poprzez atrybut name) to nie pojawi się on w tablicy $_POST.
Go to the top of the page
+Quote Post
thek
post 17.06.2010, 09:51:18
Post #16





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No tak... o Tym przypadku zapomniałem smile.gif Choć z drugiej strony dowolny input type="text", też sprawi, że $_POST nie będzie pusta. A w sumie rzadko używa się formularzy, które nie mają żadnego pola do uzupełnienia.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:15