Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] IF + md5
Turson
post 6.04.2011, 22:38:45
Post #1





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Próbuję napisać skrypt, który sprawdzi czy dwie zmienne są sobie równo. Utrudnieniem jest to, że owe hasło w bazie jest w postaci md5, dlatego zmienna z formularza również musi zostać przeliczona na md5.
  1. $md5pass = md5($_POST["pass"]);
  2. if (isset($_POST["buttonm"])) {
  3. if(!empty($_POST["newmail"]) && !empty($_POST["pass"])){
  4. if($md5pass==md5($wiersz[user_haslo])){
  5. $nowymail = @mysql_query("UPDATE users SET user_mail='$_POST[newmail]' WHERE user_login='$_SESSION[login]'");
  6. echo "udało się.."; }}}

Zapewne błąd w linijce nr 4 - źle zapisana zmienna.
Go to the top of the page
+Quote Post
nekomata
post 6.04.2011, 23:01:09
Post #2





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


zmienna $md5pass jest zbędna , możesz to zrobić tak.
  1. if (isset($_POST["buttonm"])) {
  2. if(!empty($_POST["newmail"]) && !empty($_POST["pass"])){
  3. if(md5($_POST['pass'])==md5($wiersz['user_haslo'])){// błąd to źle zapisane user_haslo , zapomniałeś apostrofów .
  4. $nowymail = @mysql_query("UPDATE users SET user_mail='$_POST[newmail]' WHERE user_login='$_SESSION[login]'");
  5. echo "udało się.."; }}}

Ogólnie następnym razem mógłbyś też napisać nam co jest problemem , pokazałeś kod ale nic więcej , co chcesz z nim zrobić co nie działa itd. happy.gif
Go to the top of the page
+Quote Post
Turson
post 6.04.2011, 23:10:43
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Skrypt ma zmieniać hasło użytkownika, w formularzu $newmail to nowy adres, $buttonm to nazwa przycisku, a $pass to stare haslo, dla potwierdzenia.
Wkleiłem ten kod i nie działa, nic nie ma
Go to the top of the page
+Quote Post
Mackos
post 6.04.2011, 23:18:23
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Nekomata z apostrofami czy bez to nie ma najmniejszej różnicy.
Jednak wydaje mi się że ta funkcja powinna tak wyglądać:
  1. if((md5($_POST['pass']))==(md5($wiersz['user_haslo']))){

Po prostu nawiasy wink.gif


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
gargamel
post 6.04.2011, 23:29:46
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


skoro hasło jest w bazie w formacie md5 to po co robisz jeszcze raz md5($wiersz['user_haslo']) ?
Go to the top of the page
+Quote Post
nekomata
post 6.04.2011, 23:42:25
Post #6





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Cytat(Mackos @ 6.04.2011, 23:18:23 ) *
Nekomata z apostrofami czy bez to nie ma najmniejszej różnicy.

O serio? Więc odpal sobie taki kodzik
  1. <?php
  2. $dieta_cud = array('banany' => 'buraki' , 'ziemniaki' => 'żelki');
  3. echo $dieta_cud['banany'].'<br />';
  4. echo $dieta_cud[banany].'<br />';
  5. echo '<br />więc czemu po co podawać bez apostrofow? a po to<br />';
  6. define('banany','ziemniaki');
  7. echo $dieta_cud[banany];
  8. ?>
Jak jesteś leniwy to tutaj za ciebie odpaliłem, wynik jest taki
Kod
buraki

Notice: Use of undefined constant banany - assumed 'banany' in D:\xamp\htdocs\text.php on line 4
buraki

wiec czemu po co podawac bez apostrofow? a po to
zelki
Chyba jednak apostrofy się przydają?(Oczywiście zamiast stałej można wsadzić zmienną )
Gargamel... i tu masz rację , nie wiem jak mogłem to przeoczyć.
Go to the top of the page
+Quote Post
kadlub
post 7.04.2011, 07:42:13
Post #7





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


gargamel ma racje jak w bazie masz w formacie md5 to twój skrypt robi coś takiego
md5($_POST['pass'])== md5(md5($wiersz['user_haslo']))
i ten warunek nie ma prawa być spełniony
powinno być
md5($_POST['pass'])== $wiersz['user_haslo']
Go to the top of the page
+Quote Post
Turson
post 7.04.2011, 09:06:09
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jeśli dobrze zrozumiałem to całość
  1. if (isset($_POST["buttonm"])) {
  2. if(!empty($_POST["newmail"]) && !empty($_POST["pass"])){
  3. if(md5($_POST['pass'])== $wiersz['user_haslo']){
  4. $nowymail = @mysql_query("UPDATE users SET user_mail='$_POST[newmail]' WHERE user_login='$_SESSION[login]'");
  5. echo "udało się.."; }}}

nie działa
Go to the top of the page
+Quote Post
nospor
post 7.04.2011, 09:29:00
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czy tak trudno sprawdzić co zawierają rzeczy? Lepiej biegać po forum i płakać?
  1. ini_set('display_errors','1');
  2. print_r($_POST);
  3. if (isset($_POST["buttonm"])) {
  4. echo 'Jestem 1';
  5. if(!empty($_POST["newmail"]) && !empty($_POST["pass"])){
  6. echo 'Jestem 2';
  7. echo 'Pass:'.$_POST['pass'];
  8. echo 'passmd5:'.md5($_POST['pass'];
  9. echo 'wiersz:'.$wiersz['user_haslo'];
  10. if(md5($_POST['pass'])== $wiersz['user_haslo']){
  11. $nowymail = mysql_query("UPDATE users SET user_mail='$_POST[newmail]' WHERE user_login='$_SESSION[login]'") or die(mysql_error());
  12. echo "udało się.."; }}}

I wszystko będzie jasne


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Turson
post 7.04.2011, 13:40:38
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Sprawdzałem miliard razy i zmienna $wiersz2['user_haslo'] nie chce się wyświetlić. Powtarzam, że zgadza się pole z tym z bazy..
Go to the top of the page
+Quote Post
nospor
post 7.04.2011, 13:52:02
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Napisz co zwraca skrypt, który ci podałem

poza tym skoro ci sie ten wiersz nie wyswietla znaczy ze go nie ma ustawionego. Gdzie masz kod za pobieranie tego $wiersz?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Turson
post 7.04.2011, 14:00:21
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. $zapytanie2 = "SELECT user_haslo FROM users WHERE user_login='$_SESSION[login]'";
  2. $idzapytania2 = mysql_query($zapytanie2);
  3. while ($wiersz2 = mysql_fetch_assoc($idzapytania2))
  4. echo "<br>";
  5. if (isset($_POST["buttonm"])) {
  6. ini_set('display_errors','1');
  7. print_r($_POST);
  8. if (isset($_POST["buttonm"])) {
  9. echo 'Jestem 1';
  10. if(!empty($_POST["newmail"]) && !empty($_POST["pass"])){
  11. echo 'Jestem 2<br>';
  12. echo 'Pass:'.$_POST['pass'].'<br>';
  13. echo 'passmd5: '.md5($_POST['pass']).'<br>';
  14. echo 'wiersz:'.$wiersz2['user_haslo'].'';
  15. if(md5($_POST['pass'])== $wiersz2['user_haslo']){
  16. $nowymail = mysql_query("UPDATE users SET user_mail='$_POST[newmail]' WHERE user_login='$_SESSION[login]'") or die(mysql_error());
  17. echo "udało się.."; }}}}

Kod
Array ( [newmail] => mail@konto.pl [pass] => admin [buttonm] => Zmień hasło ) Jestem 1Jestem 2
Pass:admin
passmd5: 21232f297a57a5a743894a0e4a801fc3
wiersz:
Go to the top of the page
+Quote Post
darko
post 7.04.2011, 14:31:34
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jak już tak korzystacie z tego mysql_query, to przynajmniej dodajcie zawsze na końcu or die(mysql_error()); czyli:

  1. $zapytanie2 = "SELECT user_haslo FROM users WHERE user_login='" . $_SESSION['login'] . "'";
  2. $idzapytania2 = mysql_query($zapytanie2) or die(mysql_error());

Prawda, że proste? Poza tym dlaczego prawie zawsze problemem jest zrobienie czegoś takiego:

  1. while ($wiersz2 = mysql_fetch_assoc($idzapytania2))
  2. {
  3. echo $wiersz2['user_haslo'] . '<br/>';
  4. // albo:
  5. print_r($wiersz2);
  6. echo '<br/>';
  7. }

?

Dodatkowo, jeśli wyciągasz zawsze tylko jeden rekord, to warto użyć mysql_fetch_row zamiast fetch_array.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
nospor
post 7.04.2011, 15:13:33
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jednym z problemów jest to:
while ($wiersz2 = mysql_fetch_assoc($idzapytania2))
echo "<br>";

Ta petla robi tylko echo "br"; i po tej petli $wiersz2 zawsze jest FALSE.
Ta pętla jest w ogóle zbędna
$wiersz2 = mysql_fetch_assoc($idzapytania2);


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mackos
post 7.04.2011, 17:16:02
Post #15





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


nekomata, proszę Cię bardzo wink.gif


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
nospor
post 7.04.2011, 17:56:37
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Mackos Włącz wyświetlanie wszystkich błędów tongue.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nekomata
post 7.04.2011, 18:50:35
Post #17





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Cytat(nekomata @ 6.04.2011, 23:42:25 ) *
Notice: Use of undefined constant banany - assumed 'banany' in D:\xamp\htdocs\text.php on line 4

Parser "zakłada" że chodziło o 'banany' (tak z apostrofami) czyli key z array'a.Ale pewny nie jest.Wyłączone raportowanie błędów nie jest zbyt dobrą rzeczą.
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: 5.07.2025 - 18:13