Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] Edycja danych
solandsol12
post 27.09.2008, 14:10:30
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Witam,

mam pewien problem,a mianowicie:

stworzyłem panel logowania dla zarejestrowanych użytkowników z możliwością edycji swoich danych. Problem tkwi w tym, że edycja loginu jest bezproblemowa, ale jeżeli zmienię w tym samym czasie Login i Hasło to zmieni się tylko Login, a hasło pozostanie domyślne, natomiast jeżeli wejdę do panelu i zmienię samo hasło, a login pozostawię bez zmian, to hasło zmieni się na nowe. Nie wiem co z tym począć. Proszę o pomoc. Oto kawałek kodu PHP, odpowiedzialny za powyższe czynności:

  1. <?php
  2. $login_zmien = $_POST[login_zmien];
  3. if (strlen($_POST['login_zmien'])>=5) {
  4. mysql_query("UPDATE `uzytkownicy` SET `login` = '$login_zmien' WHERE `login`= '$login'") or die('Wystąpił błąd!');
  5. header('Locatio: ../login.php?wyloguj=1');
  6. }
  7.  
  8. else if($_POST[login_zmien]){
  9. echo 'Twój login jest za krótki !';
  10. }
  11.  
  12. if (strlen($_POST['haslo_zmien'])>=5) {
  13. $haslo_zmien = md5($_POST[haslo_zmien]);
  14. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wystąpił błąd!');
  15. header('Locatio: ../login.php?wyloguj=1');
  16. }
  17.  
  18. else if ($_POST[haslo_zmien]) {
  19. echo 'Wybrane hasło jest za krótkie';
  20. }
  21.  
  22. ?>


Pozdrawiam.

Ten post edytował solandsol12 27.09.2008, 14:11:07
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 14:19:40
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


przyczyną jest to że przy zmianie loginu pierw zmieniasz login przypuśćmy z test na test2 gdzie login = test w drugim kroku zaś zmieniasz hasło z hasło na hasło1 gdzie login = test a jak widzisz powyżej zmieniłeś login i już usera o loginie "test" nie posiadasz w bazie smile.gif tylko usera o loginie test2.

możesz zamienić kolejnością te 2 zapytania i powinno działać bez problemu tongue.gif

Ten post edytował melkorm 27.09.2008, 14:20:47


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 14:53:09
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Zadziałało, lecz mam jeszcze jeden problem, ponieważ dodałem teraz do tego wszystkiego pole e-mail o kodzie:

  1. <?php
  2. if (strlen($email_zmien)>10) {
  3. $email_zmien = $_POST[email_zmien];
  4. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wyst?pi? b??d!');
  5. echo '<META HTTP-EQUIV="Refresh" CONTENT="1,URL=dane.php">';
  6. }
  7.  
  8. else if ($_POST[email_zmien]) {
  9. echo 'Podany e-mail jest za krótki !<br/>';
  10. }
  11. ?>


Nie wiem dlaczego gdy zmienię e-mail na mniejszy niż 10 znaków to nie pokazuje mi komunikatu o błędzie, tylko po prostu zakańcza sesje, natomiast jeżeli zmienię na e-mail większy niż 10 znaków to go zapisuje.

Ten post edytował solandsol12 27.09.2008, 14:59:47
Go to the top of the page
+Quote Post
ArekJ
post 27.09.2008, 15:07:37
Post #4





Grupa: Zarejestrowani
Postów: 266
Pomógł: 9
Dołączył: 21.05.2008
Skąd: Łomianki

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


Daj tak:

  1. <?php
  2. if (strlen($email_zmien)>1) {
  3. $email_zmien = $_POST[email_zmien];
  4. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wyst?pi? b??d!');
  5. echo '<META HTTP-EQUIV="Refresh" CONTENT="1,URL=dane.php">';
  6. }
  7.  
  8. else if ($_POST[email_zmien]) {
  9. echo 'Podany e-mail jest za krótki !<br/>';
  10. }
  11. ?>


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

"Do bramy, bo pada deszcz
Gdy zaćpiesz przejdzie dreszcz
I wróci, wróci tęcza barw
I pęknie twój wrogi świat" R. Riedel
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 15:12:49
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Dalej to samo, zauważyłem jeszcze jedną rzecz, a mianowicie gdy wpiszę w haśle jedną literke, np. s to zapisuje mi ją w bazie danych jako hasło.
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 15:29:37
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


  1. <?php
  2. if (strlen($email_zmien)>10) {
  3. $email_zmien = $_POST[email_zmien];
  4. ?>


Pierw przypisujesz zmienną później ją sparwdzasz nie na odwrót - zmień to tongue.gif

Ten post edytował melkorm 27.09.2008, 15:30:05


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 15:31:20
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Niestety nic to nie dało.
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 15:42:13
Post #8





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Oka ... dlaczego updejtujesz pole hasło jeżeli zmieniasz e-mail ?

  1. <?php
  2. $email_zmien = $_POST['email_zmien'];
  3. if (strlen($email_zmien) > 10) {
  4. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wyst?pi? b??d!'); // zmien to zapytanie na poprawne!
  5. echo '<META HTTP-EQUIV="Refresh" CONTENT="1,URL=dane.php">';
  6. }
  7.  
  8. else if ($_POST['email_zmien']) {
  9. echo 'Podany e-mail jest za krótki !<br/>';
  10. }
  11. ?>


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 15:50:28
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Niestety dalej nie pokazuje komunikatu , że e-mail jest za krótki.
Go to the top of the page
+Quote Post
Lion_87
post 27.09.2008, 15:54:21
Post #10





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Cytat
else if ($_POST['email_zmien']) {
echo 'Podany e-mail jest za krótki !<br/>';
}


a niemozesz tak

  1. <?php
  2. if (strlen($email_zmien) < 10) {
  3. echo 'Podany e-mail jest za krótki !<br/>';
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Petermechanic
post 27.09.2008, 15:55:07
Post #11





Grupa: Zablokowani
Postów: 47
Pomógł: 7
Dołączył: 6.05.2007

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


<?php
  1. <?php
  2. $email_zmien = $_POST['email_zmien'];
  3. if (strlen($email_zmien) > 10) {
  4. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wyst?pi? b??d!'); // zmien to zapytanie na poprawne!
  5. echo '<META HTTP-EQUIV="Refresh" CONTENT="1,URL=dane.php">';
  6. }
  7.  
  8. else{
  9. echo 'Podany e-mail jest za krótki !<br/>';
  10. }
  11. ?>
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 15:56:40
Post #12





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Dalej to samo.
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 15:57:11
Post #13





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


daj przed warunkiem :

  1. <?php
  2. var_dump(strlen($_POST['email_zmien']));
  3. ?>


I pokaż nam co wyświetliło :]


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 16:01:43
Post #14





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Wyświetliło : int(0) .

Pozdrawiam.
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 16:06:28
Post #15





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Jeżeli coś wpisujesz i wyświetla int(0) to wtedy nie zlicza, pokaż formularz od e-mail'a.


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 16:08:43
Post #16





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Nie mam jak sprawdzić ile po wysłaniu formularza będzie mieć znaków dane pole, ponieważ jak wysyłam to zakańcza mi sesję i wylogowuje, a nie pokazuje błędu o nieprawidłowej ilości znaków w polu email
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 16:17:02
Post #17





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


var_dump blokuje bodajże zmiane headera ale nie wiem czy w tym przypadku tongue.gif

No ale wyświetliło Tobie int(0) .. więc jak dasz w pole post'a od maila coś to ci pokaże ile znaków wpisałeś ... .

Pokaż ten formularz! tongue.gif


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 16:19:45
Post #18





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Oto formularz:

  1. <form action="dane.php" method="post">
  2. Login: <input type="text" name="login_zmien" value="'.$_SESSION['login'].'"><br/><br/>
  3. Hasło: <input type="password" name="haslo_zmien"><br/><br/>
  4. E-mail: <input type="text" name="email_zmien" value="'.$email_wyswietl.'"><br/><br/>
  5. <input type="submit" value="zmień">
  6. </form>


Ten post edytował solandsol12 27.09.2008, 16:20:20
Go to the top of the page
+Quote Post
melkorm
post 27.09.2008, 16:42:16
Post #19





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


  1. <?php
  2. $email_zmien = $_POST['email_zmien'];
  3. if (strlen($email_zmien)>10) {
  4. mysql_query("UPDATE `uzytkownicy` SET `haslo` = '$haslo_zmien' WHERE `login`= '$login'") or die('Wyst?pi? b??d!');
  5. echo '<META HTTP-EQUIV="Refresh" CONTENT="1,URL=dane.php">';
  6. }
  7.  
  8. else if ($_POST['email_zmien']) {
  9. echo 'Podany e-mail jest za krótki !<br/>';
  10. }
  11. ?>

  1. <form action="" method="post">
  2. <input type="text" name="email_zmien" value="aaaaaaaa">
  3. <input type="submit">
  4. </form>


Wrzuciłem na localhost dokładnie tak jak powyżej i zadziałało - wyświetla błąd iż e-mail jest zakrótki.

Ten post edytował melkorm 27.09.2008, 16:42:39


--------------------
Go to the top of the page
+Quote Post
solandsol12
post 27.09.2008, 16:44:47
Post #20





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2008

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


Jak usunąłem te dwie linijki:

  1. Login: <input type="text" name="login_zmien" value="'.$_SESSION['login'].'"><br/><br/>
  2. Hasło: <input type="password" name="haslo_zmien"><br/><br/>


z formularza to działa, hmmm
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 22.07.2025 - 18:49