Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: edycja danych w pliku
Forum PHP.pl > Forum > Przedszkole
Starken
Przechowuje w pliku dane o zarejestrowanych użytkownikach w takiej postaci:
username,password,email,real_name,kod_aktywacyjny,czy_aktywny
przy rejestracji następny użytkownik jest dopisywany w nowej linijce. Tylko niebardzo wiem jak zmienić jedną z tych danych. Jak zawartość pliku jest np. taka:
Cytat
ziutek,12345,ziutek@12345.com,Ziutek,151362712,TRUE
Ola,blblbl,ola92@gazeta.pl,Ola,12341526,FALSE
ujuj,ghgh23ghgh,ujuj@wp.pl,Tomek,25423623,TRUE

i moja funkcja ma zmienić $password, albo $czy_aktywny użytkownikowi o nazwie Ola. Jak to zrobić. Kombinowałem troche i wykombinowałem taką funkcję:
  1. <?php
  2. function ChangePass($username,$password,$pass1,$pass2)
  3. {
  4. $file = fopen(&#092;"users/users.tda\", \"a+\");
  5. $Userzy = file(&#092;"users/users.tda\");  
  6. for($x=0;$x <= count($Userzy)+1;$x++)
  7. {
  8. $User = explode(&#092;",\", $Userzy[$x]);
  9. if(($username == $User[0]) && ($password == $User[1]) && ($pass1==$pass2))
  10. {
  11. $User[1] = $pass1;
  12. $DaneUsera = $User[0].&#092;",\".$User[1].\",\".$User[2].\",\".$User[3].\",\".$User[4];
  13. $Userzy[$x] = $DaneUsera;
  14. ftruncate($file,0);
  15. for($z=0;$z <= count($Userzy)+1;$z++)
  16. {
  17. fputs($file,&#092;"$Userzy[$z]n\");
  18. }
  19. echo(&#092;"Hasło zmienione!\");
  20. return;
  21. }
  22. }
  23. echo(&#092;"Złe hasło, nazwa użytkownika, lub hasła nie są takie same.\");
  24. }
  25. ?>

ale (o dziwo!) ta funkcja nic nie zmienia. Wczytuje zawartośc pliku do zmiennej, opróżnia plik i wpisuje zawartość zmiennej do pliku (tak to wygląda, a powinna działać inaczej). Więc nie robi praktycznie nic. A przecież jest taki fragment:
  1. <?php
  2. $User[1] = $pass1;
  3. ?>

sad.gif Co jest?questionmark.gif Pomocy!
nospor
a mi twoj kod dziala. MOże zle haslo lub usera do funkcji podawales.
Przerobilem go trochę, bo mial parę byków innych:
  1. <?php
  2. function ChangePass($username,$password,$pass1,$pass2)
  3. {
  4. $file = fopen(&#092;"user.td\", \"a+\");
  5. $Userzy = file(&#092;"user.td\");  
  6. for($x=0;$x < count($Userzy);$x++)
  7. {
  8. $User = explode(&#092;",\", $Userzy[$x]);
  9. if(($username == $User[0]) && ($password == $User[1]) && ($pass1==$pass2))
  10. {
  11. $User[1] = $pass1;
  12. $DaneUsera = $User[0].&#092;",\".$User[1].\",\".$User[2].\",\".$User[3].\",\".$User[4];
  13. $Userzy[$x] = $DaneUsera;
  14. ftruncate($file,0);
  15. for($z=0;$z < count($Userzy);$z++)
  16. {
  17. fputs($file,&#092;"$Userzy[$z]\");
  18. }
  19. echo(&#092;"Hasło zmienione!\");
  20. return;
  21. }
  22. }
  23. }
  24.  
  25. ?>


Robiles między innymi takiego fora:
for($x=0;$x <= count($Userzy)+1;$x++)
ten for wyjezdzal ci 2 elementy poza tablicę. powinno być:
for($x=0;$x < count($Userzy);$x++)

Nie mam pojęcia co ci trzelilo do glowy by tak pisac biggrin.gif
Starken
Jakoś tam se poradziłem (w internecie w jakimś FAQ znalazłem, chyba webhelp.pl czy cuś).

Cytat
Robiles między innymi takiego fora:
for($x=0;$x <= count($Userzy)+1;$x++)
ten for wyjezdzal ci 2 elementy poza tablicę. powinno być:
for($x=0;$x < count($Userzy);$x++)

Nie mam pojęcia co ci trzelilo do glowy by tak pisac biggrin.gif

hmm... chyba miało być tak:
for($x=0;$x < count($Userzy)+1;$x++)
ponieważ jeśli w pliku była tylko jedna linijka, a w tablicach to się liczy od zera to ta instrukcja równałaa by się takiej:
for($x=0;0 < 0;$x++)
a to by było bez sensu smile.gif
nospor
Nie obraź się, ale to co piszesz jest bez sensu.
Jeśli byłaby tylko jedna linijka w pliku, to tablica miałaby jeden element i count($Userzy) byłby równe 1 a nie 0 a twoj for fyglądałby tak:
for($x=0;$x < 1;$x++) (co ma sens) a nie :
for($x=0;0 < 0;$x++)

Tak więc ma być:
for($x=0;$x < count($Userzy);$x++)

Jeśli nie wierzysz mi na słowo to sprawdź, a dopiero potem się wypowiadaj
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.