Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> edycja danych w pliku
Starken
post 19.04.2005, 16:29:13
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 17.04.2005
Skąd: Bydgoszcz

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


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!


--------------------
Polska przeprasza za Polaków
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post 20.04.2005, 07:48:05
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Starken
post 20.04.2005, 20:06:22
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 17.04.2005
Skąd: Bydgoszcz

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


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


--------------------
Polska przeprasza za Polaków
Go to the top of the page
+Quote Post
nospor
post 21.04.2005, 07:49:14
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:40