Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Sprawdzanie hasła md5.
Gruchol
post
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Witam,

Napisałem takie coś :
  1. <!DOCTYPE HTML>
  2. <html lang="pl">
  3. <head>
  4. <title>Sklepik</title>
  5. </head>
  6. <body>
  7.  
  8.  
  9.  
  10. <?php
  11. $db = mysqli_connect('localhost', 'root', '', 'sf');
  12.  
  13. $id = $_GET['player'];
  14. $nick = mysqli_query($db, "SELECT user_name FROM user_data WHERE user_id='$id'");
  15. $user_name = $nick->fetch_assoc()['user_name'];
  16. $grzybki = mysqli_query($db, "SELECT mushroom FROM user_data WHERE user_id='$id'");
  17. $grzybkiwyswietl = $grzybki->fetch_assoc()['mushroom'];
  18. $zloto = mysqli_query($db, "SELECT silver FROM user_data WHERE user_id='$id'");
  19. $zlotowyswietl = $zloto->fetch_assoc()['silver'];
  20.  
  21. echo "<center><h1>Witaj w sklepiku $user_name!</h1></center>";
  22. echo "<center><h3>Aktalnie posiadasz $grzybkiwyswietl grzybkow oraz $zlotowyswietl zlota</h3></center>";
  23.  
  24. ?>
  25. <center>
  26. <form method="post" action="">
  27. <b>Zresetowanie lochów(bez kluczy)</b>
  28. <br/>
  29. <b>Aby potwierdzić wpisz hasło : </b>
  30. <input type="password" name="haslo"/>
  31. <br/>
  32. <br/>
  33. <input type="submit" value="30 grzybków"/></center>
  34. </form>
  35. <?php
  36. $db = mysqli_connect('localhost', 'root', '', 'sf');
  37. $haslozbazy = mysqli_query($db, "SELECT password FROM user_data WHERE user_name='$user_name'");
  38. @$haslozsklepu = $_POST["haslo"];
  39. if($haslozbazy["haslo"] == md5($haslozsklepu)) {
  40. mysqli_query($db, "UPDATE user_data SET dungeon_1 = '0', dungeon_2 = '0', dungeon_3 = '0', dungeon_4 = '0', dungeon_5 = '0', dungeon_6 = '0', dungeon_7 = '0', dungeon_8 = '0' WHERE user_name = '$user_name'");
  41. }
  42. else {
  43. echo "Haslo jest bledne";
  44. }
  45. if($haslozesklepu == '') {
  46.  
  47. echo "Pole jest puste";
  48. }
  49. ?>
  50. </body>
  51. </html>

I mam problem z ifem który sprawdza hasło.
Gdy wywale tego ifa wszystko działa ok.
Hasło w bazie jest zahaszowane w md5.
Próbuje się przestawić z MySQL na MySQLi i nie wiem czy wszędzie zastosowałem właśnie MySQLi.
Proszę o sprawdzenie i pozdrawiam.
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


A nie przyszło Ci do głowy, np. wyświetlić obydwie (a w sumie trzy nawet) zmienne i swoim bystrym wzrokiem porównać czy są takie same?
Go to the top of the page
+Quote Post
Gruchol
post
Post #3





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Przed ifem dopisałem echo "$haslozbazy || $haslozsklepu"; i wyświetla się :
Catchable fatal error: Object of class mysqli_result could not be converted to string in E:\XAMPP\htdocs\sfgame\legal\shop.php on line 39
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


No widzisz, to już doszedłeś do wniosku, że źle pobierasz string z bazy danych.

Teraz pytasz Google o: mysqli get value

i po paru godzinach prób dopiero wracasz na forum, jak nadal sobie nie możesz poradzić z pobraniem wartości.
Go to the top of the page
+Quote Post
Gruchol
post
Post #5





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Kompletnie zapomniałem o tym.
Na początku gdy pobierałem nazwę użytkownika to zrobiłem dobrze.

Dopisałem $haslozbazy1 = $haslozbazy->fetch_assoc()['password'];
I teraz wyświetla się hasło które wpisałem w polu oraz zahaszowane hasło z bazy.
Tylko teraz jak zrobić aby hasło się haszowało przed wysłaniem go do bazy?
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Przed wysłaniem robisz
  1. $hasloDoBazy = md5($haslo)
i dopiero pakujesz do bazy.

Ten post edytował Damonsson 31.12.2014, 17:10:59
Go to the top of the page
+Quote Post
Gruchol
post
Post #7





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


@Edit
Wszystko już działa oprócz 1.

  1. if($haslozbazy1 == $haslozsklepu1 and $grzybkiwyswietl >= '10') {
  2. mysqli_query($db, "UPDATE user_data SET dungeon_1 = '0', dungeon_2 = '0', dungeon_3 = '0', dungeon_4 = '0', dungeon_5 = '0', dungeon_6 = '0', dungeon_7 = '0', dungeon_8 = '0', mushroom=mushroom-30 WHERE user_name = '$user_name'");
  3. }
  4. else {
  5. echo "<center><font color=red>Haslo jest bledne lub nie masz wystarczajacej ilosci grzybkow.</center></font>";
  6. }


Tak wygląda if i problem jest taki, że jak się wejdzie na stronę ( nie klikając ani nie wpisując nic ) strona wyświetla treść else.
Czyli tj. formularz sam się wysyła nie podając żadnych wartości w pole hasła.

Ten post edytował Gruchol 31.12.2014, 18:46:18
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no bo nie masz warunku który to sprawdza, tłumaczyłem Ci to przecież ostatnio a dalej robisz ten sam bład wink.gif
Go to the top of the page
+Quote Post
Gruchol
post
Post #9





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Zamieniłem tego ifa na if(!empty($haslozbazy1 == $haslozsklepu1 and $grzybkiwyswietl >= '30')) { i nadal się sam wysyła. ( chyba o to chodziło tongue.gif )
Go to the top of the page
+Quote Post
Rysh
post
Post #10





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


albo if empty albo if == zdecyduj się.

  1. $nick = mysqli_query($db, "SELECT user_name FROM user_data WHERE user_id='$id'");
  2. $user_name = $nick->fetch_assoc()['user_name'];
  3. $grzybki = mysqli_query($db, "SELECT mushroom FROM user_data WHERE user_id='$id'");
  4. $grzybkiwyswietl = $grzybki->fetch_assoc()['mushroom'];
  5. $zloto = mysqli_query($db, "SELECT silver FROM user_data WHERE user_id='$id'");
  6. $zlotowyswietl = $zloto->fetch_assoc()['silver'];

Po cholerę robisz tyle zapytań do bazy danych? Nie możesz dać:
  1. $zloto = mysqli_query($db, "SELECT user_name, mushroom, silver FROM user_data WHERE user_id='$id'");

BTW, Twój kod jest strasznie napisany - pobierasz ID użytkownika z GET, czyli z linku - modyfikując link mogę zmienić każdemu co tylko chcę. nie wspominając już o sql injection.

Ten post edytował Rysh 31.12.2014, 19:19:45


--------------------
Go to the top of the page
+Quote Post
Gruchol
post
Post #11





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Z tego get zrezygnuje i zrobię to inaczej postem.

Co do twojego zapytania które zrobiłeś w innej linijce, zobacz, że ja wyświetlam każdą zmienną osobno i każda jest mi z osobna potrzebna.

Prosił bym jeszcze o pomoc z zablokowaniem tego aby formularz po wejściu sam się nie wysyłał.

Napisałeś, że kod jest okropny lecz zauważ że znajdujemy się w dziale przedszkole gdzie nie można się spodziewać najlepiej zabezpieczonego i zoptymalizowanego kodu a ja w php piszę od 2 dni.
Dziękuję za cenne uwagi.

Ten post edytował Gruchol 31.12.2014, 19:37:36
Go to the top of the page
+Quote Post
untorched
post
Post #12





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


  1. if(isset($_POST['submit']))
  2. {
  3. // wykonaj jesli zostaly wprowadzone dane
  4. }
  5. else
  6. {
  7. // Wyswietl formularz
  8. }


Ten post edytował untorched 31.12.2014, 19:56:59
Go to the top of the page
+Quote Post
Gruchol
post
Post #13





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Nie za bardzo wiem jak to zrobić.

Próbowałem tak :

  1. if(isset($_POST['submit'])) {
  2. if($haslozbazy1 == $haslozsklepu1 and $grzybkiwyswietl >= '30') {
  3. mysqli_query($db, "UPDATE user_data SET dungeon_1 = '0', dungeon_2 = '0', dungeon_3 = '0', dungeon_4 = '0', dungeon_5 = '0', dungeon_6 = '0', dungeon_7 = '0', dungeon_8 = '0', mushroom=mushroom-30 WHERE user_name = '$user_name'");
  4. }
  5. else {
  6. echo "<center><font color=red>Haslo jest bledne lub nie masz wystarczajacej ilosci grzybkow.</center></font>";
  7. }
  8. }

Jednak teraz to kompletnie nic nie działa.

Ten post edytował Gruchol 31.12.2014, 20:32:29
Go to the top of the page
+Quote Post
com
post
Post #14





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


tak jak masz jest ok jednakże zmień
  1. <input type="submit" value="30 grzybków"/>

na
  1. <input type="submit" name="submit" value="30 grzybków"/>
Go to the top of the page
+Quote Post
Gruchol
post
Post #15





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Zrobiłem to tak :

  1. if(!empty($_POST["haslo"]))
  2. {
  3. $db = mysqli_connect('localhost', 'root', '', 'sf');
  4. $haslozbazy = mysqli_query($db, "SELECT password FROM user_data WHERE user_name='$user_name'");
  5. $haslozbazy1 = $haslozbazy->fetch_assoc()['password'];
  6. @$haslozsklepu = $_POST["haslo"];
  7. $haslozsklepu1 = md5($haslozsklepu);
  8. //echo "<center><font color=red>Haslo jest bledne lub nie masz wystarczajacej ilosci grzybkow.</center></font>";
  9. if($haslozbazy1 == $haslozsklepu1 and $grzybkiwyswietl >= '30') {
  10. mysqli_query($db, "UPDATE user_data SET dungeon_1 = '0', dungeon_2 = '0', dungeon_3 = '0', dungeon_4 = '0', dungeon_5 = '0', dungeon_6 = '0', dungeon_7 = '0', dungeon_8 = '0', mushroom=mushroom-30 WHERE user_name = '$user_name'");
  11. }
  12. }

Jednak cały czas dzieje się to samo.
Jak kliknę w 1 wysyłają się wszystkie.
Takich opcji jak wkleiłem up. mam z 4 i w każdej mam tak samo zastosowane if(!empty

Ten post edytował Gruchol 1.01.2015, 21:51:01
Go to the top of the page
+Quote Post
com
post
Post #16





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no bo w każdym formularzu masz taki same imputy, wiec spełniają sie wszystkie warunki a wysyła sie tylko jeden, sory kolego ale bez podstaw na ten temat nie zrobisz nic, poczytaj trochę a potem zabierz się za pisanie tego i nie pisz do mnie na pw tylko tutaj wink.gif

Masz straszny balagan w tym kodzie jak nie potrafisz sobie poradzić, żeby działało kilka formularzy w 1 pliku to rozłóż to na więcej, a najlepiej po prostu pozmieniaj pola name w tych formach na unikatowe dla każdego, no i skoro wszystkie formularze wyświetlasz od razu to poco przeplatasz miedzy nimi te kody, w 1 miejscu je odbieraj a potem wyświetlaj je wszystkie, bo masz straszny bałagan i sam się w tym potem gubisz smile.gif
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 Aktualny czas: 20.08.2025 - 07:19