Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zmiana hasła użytkownika
Forum PHP.pl > Forum > Przedszkole
BIG_MICHU
Czy takie coś zadziałać powinno? Bo u mnie jakoś nie chce.
  1. <?
  2. if ($_SESSION["zalogowany"] == "no")
  3. {
  4. ?>
  5. <table border="0" width="540">
  6. <tr>
  7. <td class="menu" colspan="2"> &nbsp; </td>
  8. </tr>
  9. </table>
  10. <?
  11. }
  12. elseif ($_SESSION["zalogowany"] == "yes") // Funkcje dostepne po zalogowaniu
  13. {
  14. ?>
  15. <form action="index.php?ids=popraw" method="post">
  16. <table border="0" width="540">
  17. <tr>
  18. <td>&nbsp;</td>
  19. </tr>
  20. <tr>
  21. <td class="tekst_nagl" colspan="2"> Zmiana hasła użytkownika: </td>
  22. </tr>
  23. <tr>
  24. <td>&nbsp;</td>
  25. </tr>
  26. <tr>
  27. <td class="tekst"> Poprzednie hasło: </td>
  28. <td><input type="text" name="stare_haslo" size="20" /></td>
  29. </tr>
  30. <tr>
  31. <td class="tekst"> Nowe hasło: </td>
  32. <td><input type="password" name="newpass1" size="20" maxlength="20"/></td>
  33. </tr>
  34. <tr>
  35. <td class="tekst"> Powtórzenie nowego hasła: </td>
  36. <td><input type="password" name="newpass2" size="20" maxlength="20"/></td>
  37. </tr>
  38. <tr>
  39. <td>&nbsp;</td>
  40. </tr>
  41.  <tr>
  42. <td align="center"><input type="submit" value="Zmiana hasła" /></td>
  43. </tr>
  44. <tr>
  45. <td>&nbsp;</td>
  46. </tr>
  47. </table>
  48. </form>
  49. <?
  50. if ($_GET["ids"] == "popraw")
  51. {
  52. ?>
  53. <form action="index.php?ids1=popraw" method="post">
  54. <table border="0" width="540">
  55. <?
  56. $newpass1 = $_POST['newpass1'];
  57. $newpass2 = $_POST['newpass2'];
  58. $login = $_SESSION['login'];
  59. $pytanie = "select * from user where login ='$login'";
  60. $wyslij = mysql_query($pytanie);
  61. $tablica = mysql_fetch_array($wyslij);
  62. $md5newpass = md5($newpass1);
  63. $oldpass = $tablica['haslo'];
  64. if (!$newpass1 || !$newpass2)
  65. {
  66. $_SESSION['komunikat2'] = "<br>Wpisz hasło<br>";
  67. if ($newpass1 != $newpass2)
  68. {
  69. $_SESSION['komunikat2'] = "<br>Hasła powinny być jednakowe.<br>";
  70. if (strlen($newpass1) <|| strlen ($newpass1) > 10)
  71. {
  72. $_SESSION['komunikat2'] = "<br>Hasło powinno mieć od 4 do 10 znaków.<br>";
  73. }
  74. if ($oldpass == $md5newpass)
  75. {
  76. $_SESSION['komunikat2'] = "<br>Po co zmieniać hasło na takie samo?!<br>";
  77. }
  78. else
  79. {
  80. }
  81. }
  82. $pytanie2 = "update users set haslo='$md5newpass' where login='$login'";
  83. $sending = mysql_query($pytanie2);
  84. $_SESSION['komunikat2'] = "<br>Hasło zostało pomyślnie zmienione.<br>";
  85. }
  86. ?>
  87. </table>
  88. </form>
  89. <?
  90. }
  91. }


Przyznaję się że znalazłem jakiegoś gotowca i chciałem go dostosować do siebie, ale... za cienki Bolek jestem.
UDAT
Włącz sobie error_reporting" title="Zobacz w manualu php" target="_manual na 2047 ( nie pamiętam stałych )
Dodaj na początku session_start" title="Zobacz w manualu php" target="_manual
BIG_MICHU
Z tym error to nie wiem co do mnie mówisz, bo jestem ciemno zielony sad.gif A co do session_start... to tu mam główny plik

  1. <?
  2. // Plik startowy strony
  3. session_register('zalogowany'); // Status zalogowania
  4. if (!IsSet($_SESSION["zalogowany"]))
  5. {
  6. $_SESSION["zalogowany"] = "no";
  7. }
  8. if (!IsSet($_SESSION["rola"])) // Rola uzytkownika
  9. {
  10. $_SESSION["rola"] = "no";
  11. }
  12. include ("./nagl.php"); // Wstawianie naglowka
  13. ?>
  14. <table border="1" width="800" cellspacing="0" cellpadding="0" align="center">
  15. <tr>
  16. <? // Wstawianie menu gornego menu_g.php
  17.  // Wstawianie menu lewego menu_l.php
  18. // Wstawianie menu prawego menu_p.php
  19. ?>
  20. <td class="uwaga" colspan="3"><? include ("./menu_g.php"); ?></td>
  21. </tr>
  22. <tr>
  23. <?
  24. if (($_SESSION["zalogowany"] == "no") and ($_GET["ids"] == "logowanie"))
  25. {
  26. $tab = mysql_query("SELECT * from users where login='$_POST[login]'");
  27. $tab_wyn= mysql_fetch_array($tab);
  28. if ($tab_wyn[haslo] == md5($_POST["haslo"]))
  29. {
  30. $_SESSION["rola"] = $tab_wyn[rola];
  31. $_SESSION["zalogowany"] = "yes";
  32. $tab1 = "insert into logowania (id_log,id_logina,data_log) values ('','$tab_wyn[id_users]','')";
  33. $tab_wyn1 = mysql_query($tab1,$connection);
  34. ?>
  35. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  36. <td width="550" class="tekst_nagl" align="center"> Zostałeś zalogowany !!!
  37. <br>
  38. <br>
  39. <br>
  40. <font class="uwaga" size=4>
  41. <?
  42. $dzisiaj = getdate();  //Przypomnienie-komunikat pojawiajacy sie po zalogowaniu
  43. $dzien = $dzisiaj['mday'];
  44. $miesiac = $dzisiaj['mon'];
  45. $pytanie = mysql_query("select * from przypom where dzien_prz='$dzien' and miesi_prz='$miesiac'");
  46. $odpowiedz = mysql_fetch_array($pytanie);
  47. {
  48. echo $odpowiedz[tekst];
  49. }
  50. ?>
  51. </td>
  52. <?
  53. }
  54. else
  55. {
  56. ?>
  57. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  58. <td width="550" align="center"><a href="./index.php?idl=login" class="uwaga"> ZŁY LOGIN LUB HASŁO !!! WPROWADŹ PONOWNIE !!! </a></td>
  59. <?
  60. }
  61. }
  62. elseif (($_SESSION["zalogowany"] == "no") and ($_GET["idl"] <> "login"))
  63. {
  64. ?>
  65. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  66. <td width="550"> &nbsp; </td>
  67. <?
  68. }
  69. elseif (($_SESSION["zalogowany"] == "no") and ($_GET["idl"] == "login"))
  70. {
  71. ?>
  72. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  73. <td width="550"> <? include ("./login.php"); ?> </td>
  74. <?
  75. }
  76. elseif (($_SESSION["zalogowany"] == "yes") and ($_GET["idl"] == "login"))
  77. {
  78. ?>
  79. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  80. <td width="550" class="uwaga" align="center"> JESTEŚ JUŻ ZALOGOWANY !!! </td>
  81. <?
  82. }
  83. elseif (($_SESSION["zalogowany"] == "yes") and ($_GET["idl"] == "popraw")) //Poprawianie hasla uzytkownika
  84. {
  85. ?>
  86. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  87. <td width="550"> <? include ("./popraw.php"); ?> </td>
  88. <?
  89. }
  90. elseif (($_SESSION["zalogowany"] == "yes") and ($_GET["idl"] == "wylogowanie"))
  91. {
  92. ?>
  93. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  94. <td width="550" class="tekst_nagl" align="center"> Zostałeś wylogowany !!! </td>
  95. <?
  96. $_SESSION["zalogowany"] = "no";
  97. }
  98. elseif ($_SESSION["zalogowany"] == "yes")
  99. {
  100. ?>
  101. <td width="125" valign="top"><? include ("./menu_l.php"); ?> </td>
  102. <td width="550" class="uwaga" align="center"> JESTEŚ JUŻ ZALOGOWANY !!! </td>
  103. <?
  104. }
  105. ?>
  106. <td width="125" valign="top"><? include ("./menu_p.php"); ?> </td>
  107. </tr>
  108. </table>
  109. <table border="0" width="800" cellspacing="0" cellpadding="0" align="center">
  110. <tr>
  111. <td align="center" colspan="3"><a href="./index.php"><img src="./obrazy/powrot.gif" border="0" alt="powrót" /></a></td>
  112. </tr>
  113. <tr>
  114. <td colspan="3" align="center">
  115. <p>
  116. <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="89" border="0" /></a>
  117. </p>
  118. </td>
  119. </tr>
  120. </table>
  121. </body>
  122. </html>
UDAT
Po pierwsze wywal:
  1. <?php
  2. session_register('zalogowany');
  3. ?>


Powyższe zawsze ustawia zmienną zalogowany, bez nadawania wartości YES/NO

Potem powiedz co ci nie działa? Jak to się objawia, itp.?
BIG_MICHU
Dobra, wywaliłem co miałem wywalić i jest jak było poprzednio... czyli po zmianie hasła mówi... jesteś już zalogowany, a hasła nie zmienia sad.gif


Czyli to sprawa beznadziejna? sad.gif

Czyżbym tak namieszał że nie da się już nic z tym zrobić?
artur81
Sprawdz wogóle czy ten rekord jest rzeczywiście aktualizowany -> mysql_affected_rows" title="Zobacz w manualu php" target="_manual bo póki co to tylko wyświetlasz komunikat że jest
Sedziwoj
Po pierwsze nie używaj '<?' tylko '<?php'

Po drugie dlaczego nie spr. czy jest przekazane: $_GET["ids"]

Po trzecie gdzie się łączysz z bazą? bo chyba to robisz

4) $_POST[login] chyba $_POST['login']

i dalsze $tab_wyn[haslo] ... oraz spr. czy to co użytkownik miał przesłać naprawdę przesłał.

  1. <?php
  2. $tab1 = "insert into logowania (id_log,id_logina,data_log) values ('','$tab_wyn[id_users]','')";
  3. ?>

id_log zapisujesz puste (i do tego string)?
A i te $tablica[cos] to to cos jak to jest string to w ciapkach
BIG_MICHU
Chyba sobie to jednak odpuszcze, bo to dla mnie chinszczyzna.
artur81
Cytat(Sedziwoj @ 27.11.2006, 19:39:39 ) *
id_log zapisujesz puste (i do tego string)?

A tak się spytam, co w tym takiego dziwnego??
Jak ma w bazie auto_incremment to jest wszystko ok.


Jak robisz wywołanie funkji mysql_query to zrób tak
  1. <?php
  2. mysql_query($zapytanie) or die mysql_error();
  3. ?>

i napisz jaki błąd masz
Sedziwoj
tylko chodzi że automatyczna inkrementacja działa jak nie masz podanej wartości a tu podajesz pusty string, chyba że zrobili idioto odporne przyjmowanie... w co wątpię.
artur81
Cytat(Sedziwoj @ 28.11.2006, 07:20:38 ) *
tylko chodzi że automatyczna inkrementacja działa jak nie masz podanej wartości a tu podajesz pusty string, chyba że zrobili idioto odporne przyjmowanie... w co wątpię.

ehkm, żarty sobie robisz?questionmark.gif

Masz prostą tabelę o strukturze:
  1. CREATE TABLE `test` (
  2. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  3. `wpis` varchar(30) NOT NULL DEFAULT '',
  4. PRIMARY KEY (`id`)
  5. ) TYPE=MyISAM AUTO_INCREMENT=1 ;


Wykonaj do niej kilka takich zapytań:
  1. INSERT INTO `test` VALUES ('', 'blalalalal');

i zobacz co się dzieje, bo albo się nie rozumiemy albo coś źle doczytałeś... dry.gif
Sedziwoj
  1. INSERT INTO aktorzy VALUES ('', 'Testowy aktor');

i wyrzuca:
  1. ERROR: invalid input syntax FOR integer: ""


Przy:
  1. CREATE TABLE aktorzy
  2. (
  3. id_a serial NOT NULL,
  4. name varchar(40) NOT NULL,
  5. CONSTRAINT aktorzy_pkey PRIMARY KEY (id_a),
  6. CONSTRAINT aktorzy_name_key UNIQUE (name)
  7. )
  8.  
  9. CREATE SEQUENCE aktorzy_id_a_seq
  10. INCREMENT 1
  11. MINVALUE 1
  12. MAXVALUE 9223372036854775807
  13. START 8
  14. CACHE 1;

Może po prostu różnica między MySQL i PostgreSQL?
Szczerze to mocny w SQL'u się nie czuję więc różnice implementacji mogą mi umknąć.
Co nie zmienia faktu, że tak:
  1. INSERT INTO aktorzy (name) VALUES ('Testowy aktor');

jest zawsze dobrze, niezależnie od bazy.

EDIT lit.
Ziels
Cytat(Sedziwoj @ 28.11.2006, 12:48:49 ) *
  1. id_a serial NOT NULL,


Oho, auto_increment jak się patrzy smile.gif
BIG_MICHU
Nic nie rozumiem co piszecie, ale mam tak :
include ("./nagl.php") a w nagl.php include ("./stale/dblib.inc.php") i tu funkcje łączenia się z bazą, rozumiem można to uznać, że z bazą się łączę? winksmiley.jpg

Jedyne string(i) jakie znam, to mojej dziewczyny i one na bank puste nie są winksmiley.jpg , ale raczej nie o to chodziło?

Co do bazy to:
CREATE TABLE `logowania` (
`id_log` int(5) NOT NULL auto_increment,
`id_logina` int(3) NOT NULL default '0',
`data_log` int(10) NOT NULL default '0',
PRIMARY KEY (`id_log`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Nie wiem czy w dobrym miejscu to wstawiłem, ale

  1. <?
  2. $newpass1 = $_POST['newpass1'];
  3. $newpass2 = $_POST['newpass2'];
  4. $login = $_SESSION['login'];
  5. $pytanie = "select * from user where login ='$login'";
  6. $wyslij = mysql_query($zapytanie) or die mysql_error();
  7. $tablica = mysql_fetch_array($wyslij);
  8. $md5newpass = md5($newpass1);
  9. $oldpass = $tablica['haslo'];
  10. if (!$newpass1 || !$newpass2)
  11. ?>


i wyszedł komunikat

Parse error: syntax error, unexpected T_STRING in /home3/dealer/main/pkg/bleble/web/html/popraw.php on line 60
Sedziwoj
Cytat(Ziels @ 28.11.2006, 17:06:37 ) *
Oho, auto_increment jak się patrzy smile.gif

to jest różnica między MySQL a PostgreSQL, tu jest pseudo typ serial, lub można stosować 'dziwną' konstrukcje pobierającą następną wartość z SEQUENCE aktorzy_id_a_seq.
Takie pomieszane, ale logiczne biggrin.gif

Cytat(BIG_MICHU @ 28.11.2006, 17:31:36 ) *
Nic nie rozumiem co piszecie, ale mam tak :
include ("./nagl.php") a w nagl.php include ("./stale/dblib.inc.php") i tu funkcje łączenia się z bazą, rozumiem można to uznać, że z bazą się łączę? winksmiley.jpg

Aby łączyła, musi być wywołana.
  1. <?
  2. //może sprawdź najpierw czy są if (isset($_POST['newpass1']))...
  3. $newpass1 = $_POST['newpass1'];
  4. $newpass2 = $_POST['newpass2'];
  5. //to samo czy podane
  6. $login = $_SESSION['login'];
  7. //tu masz zmienną $pytanie
  8. $pytanie = "select * from user where login ='$login'";
  9. //a tu $zapytanie, może prościej :
  10. //$wyslij = mysql_query("select * from user where login ='$login'") or die mysql_error();
  11. $wyslij = mysql_query($zapytanie) or die mysql_error();
  12. $tablica = mysql_fetch_array($wyslij);
  13. $md5newpass = md5($newpass1);
  14. $oldpass = $tablica['haslo'];
  15. //a to co ma robić?
  16. if (!$newpass1 || !$newpass2)
  17. ?>

Cytat
Parse error: syntax error, unexpected T_STRING in /home3/dealer/main/pkg/bleble/web/html/popraw.php on line 60

ale my nie mamy całego pliku więc zaznacz która to jest tak 60 linia.

EDIT ach te polskie znaczki
BIG_MICHU
to jest wspominana linia 60 $wyslij = mysql_query($zapytanie) or die mysql_error();
ale postaram się to teraz jakoś logicznie popoprawiać i zobaczymy co wyjdzie- może mi się uda winksmiley.jpg

if (!$newpass1 || !$newpass2) a to ma sprawdzać czy pola są wypełnione

No i nigdzie nie mam czegoś takiego if (isset($_POST['newpass1']))...

Po przerobieniu (takim jak umiałem)

  1. <form action="index.php?ids1=popraw" method="post">
  2. <table border="0" width="540">
  3. <?
  4. $newpass1 = $_POST['newpass1'];
  5. $newpass2 = $_POST['newpass2'];
  6. $login = $_SESSION['login'];
  7. $pytanie = "select * from user where login ='$login'";
  8. $wyslij = mysql_query("select * from user where login ='$login'") or die mysql_error();
  9. $tablica = mysql_fetch_array($wyslij);
  10. $md5newpass = md5($newpass1);
  11. $oldpass = $tablica['haslo'];
  12. if (!$newpass1 || !$newpass2)
  13. {
  14. $_SESSION['komunikat2'] = "<br>Wpisz hasło<br>";
  15. if ($newpass1 != $newpass2)
  16. ?>


wywala błąd tu $wyslij = mysql_query("select * from user where login ='$login'") or die mysql_error();
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.