Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Skrypt zmiany hasła użytkownika
adrianozo
post
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Witam wszystkich forumowiczów (IMG:style_emoticons/default/smile.gif)
Postanowiłem napisać sobie skrypt zmiany hasła dla użytkownika, ale mam problem.
Robię to w dwóch etapach. Najpierw użytkownik podaje login, email oraz teraźniejsze hasło. Skrypt ma w tym momencie za zadanie sprawdzić czy takie dane istnieją w bazie. Jak na razie problem polega na tym: podaje prawidłowo wszystkie dane,a skrypt wyrzuca komunikat:
Kod
Podane hasło jest nieprawidłowe
Podany email jest nie prawidłowy

Ale pomimo tych komunikatów przechodzi do kolejnego kroku czyli zmiany hasła. Nie mam pojęcie co jest nie tak dlatego tutaj pisze.
Proszę o pomoc.
Z góry dziękuje (IMG:style_emoticons/default/smile.gif)
Pozdrawiam,
adrianozo (IMG:style_emoticons/default/smile.gif)

zmien_haslo.php
  1. <?php
  2. if(!$_SESSION['access'] || !$_SESSION['login'])
  3. {
  4. header('Location: index.php');
  5. }
  6. include('include/db.php');
  7. if(isset($_POST['loginek']))
  8. {
  9. if($_POST['loginek'] && $_POST['haslo'] && $_POST['send'])
  10. {
  11. $haslo = strip_tags(htmlspecialchars(mysql_real_escape_string(md5(sha1($_POST['haslo'])))));
  12. $haslo1 = strip_tags(htmlspecialchars(mysql_real_escape_string(md5(sha1($_POST['haslo1'])))));
  13. $haslo2 = strip_tags(htmlspecialchars(mysql_real_escape_string(md5(sha1($_POST['haslo2'])))));
  14. $haslo3 = strip_tags(htmlspecialchars(mysql_real_escape_string(md5(sha1($_POST['haslo3'])))));
  15. $zapytanie = 'SELECT * FROM admin WHERE loginek="'.$login.'" and haslo="'.$haslo.'" LIMIT 1';
  16. $idzapytania = mysql_query($zapytanie);
  17. $znajdz = mysql_fetch_array($idzapytania);
  18. }
  19. }
  20. if(!isset($_POST['loginek']) && empty($_POST['loginek']) && !isset($_POST['email']) && empty($_POST['email']) && !isset($_POST['haslo']) && empty($_POST['haslo']))
  21. {
  22. echo '<form action="index.php?page=zmien_haslo&wpis=1" method="post"><br />
  23. <input type="hidden" name="send" value="1" />
  24. Podaj login<br />
  25. <input type="text" name="loginek" />
  26. <br /><br />Podaj adres email<br />
  27. <input type="text" name="email" />
  28. <br /><br />Podaj aktualne hasło<br />
  29. <input type="password" name="haslo" /><br /><br />
  30. <input name="dalej" type="submit" value="Dalej" /></form><br />
  31. <a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
  32. }
  33. if(isset($_POST['loginek']) && !empty($_POST['loginek']) && !empty($_POST['email']) && !empty($_POST['email']) && !empty($_POST['haslo']) && !empty($_POST['haslo']))
  34. {
  35. echo '<form action="index.php?page=zmien_haslo&wpis=2" method="post"><br />
  36. <input type="hidden" name="send" value="2" />
  37. Podaj stare hasło<br />
  38. <input type="password" name="haslo1" />
  39. <br /><br />Podaj nowe hasło<br />
  40. <input type="password" name="haslo2" />
  41. <br /><br />Powtórz nowe hasło<br />
  42. <input type="password" name="haslo3" /><br /><br />
  43. <input name="zapisz" type="submit" value="Zapisz" /></form><br />
  44. <a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
  45. }
  46. $error = '';
  47. $blad = '';
  48. if((isset($_POST['dalej'])))
  49. {
  50. if(empty($_POST["loginek"]) or empty($_POST["email"]))
  51. {
  52. $error .= 'Nie wypełniono wszystkich pól<br />';
  53. }
  54. if($znajdz['loginek']!=$loginek)
  55. {
  56. $error .= 'Podany login jest nieprawidłowy<br />';
  57. }
  58. if($znajdz['haslo']!=$haslo)
  59. {
  60. $error .= 'Podane hasło jest nieprawidłowe<br />';
  61. }
  62. if($znajdz['email']!=$email)
  63. {
  64. $error .= 'Podany email jest nie prawidłowy<br />';
  65. }
  66. if(!empty($error))
  67. {
  68. echo $error;
  69. }
  70. if((isset($_POST['dalej'])))
  71. {
  72. if(empty($_POST["haslo1"]) or empty($_POST["haslo2"]) or empty($_POST["haslo2"]))
  73. {
  74. $error .= 'Nie wypełniono wszystkich pól<br />';
  75. }
  76. if($_POST['haslo1']!=$_POST['haslo2'] && $_POST['haslo2']!=$_POST['haslo3'])
  77. {
  78. $blad .= 'Podane hasła nie są identyczne.<br />';
  79. }
  80. if(!empty($blad))
  81. {
  82. echo $blad;
  83. }
  84. if(isset($_POST['zapisz']) && !empty($_POST['zapisz']))
  85. {
  86. $zapytanie2 = 'UPDATE admin SET haslo="'.$haslo3.'" WHERE loginek="'.$login.'"';
  87. $idzapytania2 = mysql_query($zapytanie2);
  88. }
  89. }
  90. }
  91. if(isset($_POST['send']))
  92. {
  93. if($_POST['send'])
  94. {
  95. if(isset($idzapytania2))
  96. {
  97. if($idzapytania2 === TRUE)
  98. {
  99. echo '<font color="green"><strong>Hasło zostało zmienione.</strong></font><br /><br />';
  100. }
  101. else
  102. {
  103. echo '<font color="red"><strong>Nie udało się zmienić hasła. Proszę spróbować za jakiś czas!</strong></font><br /><br />';
  104. }
  105. }
  106. }
  107. }
  108. mysql_close($connect);
  109. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to się tak nie da, że wklejasz skrypt na 100 linijek a my zgadujemy co w nim nie gra, bo tutaj bardzo dużo rzeczy może być nie tak, zwłaszcza, że masz bardzo chaotyczny styl pisania

Po pierwsze musisz ustalić w, którym miejscu skrypt przestaje działać:
1. przykładowo: w linijce 11 daj <!--Geshi:208595:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">
  1. [topic=0]ags() i htmlspecialchars() jednocześnie, przecież albo chcesz zezwalać kod html, albo nie, bo teraz to htmlspecialchars() przekształca html do takiej postaci, że strip_tags() niczego nie wytnie)
  2. tak samo w linijce 52 też daj jakieś [php]echo "b";
, żeby zobaczyć czy skrypt tam dochodzi
2. skoro jesteś początkujący to ZAWSZE używaj or die(mysql_error()) po mysql_query(), żeby sprawdzić czy tam nie ma błędów, czyli:
  1. $idzapytania1 = mysql_query($zapytanie1) or die(mysql_error());

3. ZAWSZE po zapytaniu dawaj
  1. echo $zapytanie1;
, żeby zobaczyć jakie zapytanie jest konstruowane i czy w ogóle zmienne są do niego przekazywane(jak już skrypt będzie działał to sobie to pousuwasz ale stosuj to bo każdy Twój wątek na forum to są praktycznie te same błędy)
4. na samym początku możesz też dać echo $_POST;, żeby zobaczyć jakie zmienne sobie przekazujesz, bo może w którymś wyrażeniu warunkowym sprawdzasz czy istnieje zmienna której wcale nie ma.

Stosując te 4 wskazówki powinieneś sam zlokalizować miejsce błędu i to poprawić, oczywiście po doprowadzeniu skryptu do działania trzeba to pousuwać ale to takie praktyki na czas tworzenia.

Ten post edytował tehaha 29.05.2010, 13:07:40
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 14:34