Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]obiekt + wyczytywanie z pliku danych
Forum PHP.pl > Forum > Przedszkole
shimizu
Witam drugi dzień ucze sie OOP i wpadłem na byle jaki pomysł i staram się go zrobić. Na początku wysyłam id które identifikuje kogo chce wyświetlić nastepnie skrypt ma wyczytać z pliku users.txtid nick haslo i wyswietlic. Staram sie to zrobic za pomocą obiektu.

index.html
  1. <form action='lll.php' method='POST'>
  2. <input type='text' name='pp'>
  3. <input type='submit'>
  4. </form>


lll.php
  1. <?php
  2.  
  3. class post {
  4. public $nick;
  5. public $haslo;
  6. public $id;
  7.  
  8. function __construct($jakie) {
  9. $plik = "users.txt";
  10. $users = file($plik);
  11. $this->id = $jakie;
  12. $id_users = $users[$id];
  13. list($i0, $i1, $i2) = explode(" || ", $id_users);
  14. $this->nick = $i1;
  15. $this->haslo = $i2;
  16. }
  17.  
  18.  
  19. }
  20.  
  21. $user = new post($_POST['pp']);
  22. echo 'ID:'.$user->id.'<br />';
  23. echo 'nick:'.$user->nick.'<br />';
  24. echo 'haslo:'.$user->haslo.'<br />';
  25. ?>


users.txt
Cytat
0 || admin || admin
1 || shimizu1 || haselko1
2 || shimizu2 || haselko2
3 || shimizu3 || haselko3
4 || shimizu4 || haselko4
5 || shimizu5 || haselko5
6 || shimizu6 || haselko6


Nie wyczytuje mi hasla i loginu
*Dlaczego jak uzyłem count($users) przed to mi wyswietlilo 7 a jak w klasie to 0??
kefirek
tam gdzie masz
  1. $id_users = $users[$id];


Zmien na
  1. $id_users = $users[$this->id];


  1. class post {
  2. public $nick;
  3. public $haslo;
  4. public $id;
  5. private $users;
  6.  
  7. function __construct($jakie) {
  8. $plik = "users.txt";
  9. $this->users = file($plik);
  10. $this->id = $jakie;
  11. $id_users = $this->users[$this->id];
  12. list($i0, $i1, $i2) = explode(" || ", $id_users);
  13. $this->nick = $i1;
  14. $this->haslo = $i2;
  15. }
  16.  
  17. public function num_users(){
  18.  
  19. return count($this->users);
  20.  
  21. }
  22.  
  23.  
  24. }
  25.  
  26. $user = new post(0);
  27. echo 'ID:'.$user->id.'<br />';
  28. echo 'nick:'.$user->nick.'<br />';
  29. echo 'haslo:'.$user->haslo.'<br />';
  30.  
  31. echo $user->num_users();
shimizu
  1. <?PHP
  2. class post {
  3. public $nick;
  4. public $haslo;
  5. public $id;
  6.  
  7. function __construct($l,$p) {
  8. $plik = "users.txt";
  9. $users = file($plik);
  10. $this->nick = $l;
  11. $this->haslo = $p;
  12. $d = count($users);
  13. for($u=0;$u<=$d;$u++) {
  14. list($i0, $i1, $i2) = explode(" || ", $users[$u]);
  15. if ($i1 === $this->nick) {
  16. if ($i2 === $this->haslo) { //ten warunek zawsze false dlaczego?
  17. $this->id = $i0;
  18. echo "ok";
  19. break;
  20. } else {
  21. echo "złe hasło";
  22. break;
  23. }
  24. } else {
  25. if ($u == $d) {
  26. echo " nie ma takiego uzywtkowniak" ;
  27. break;
  28. }
  29. }
  30. }
  31. }
  32.  
  33.  
  34. }
  35.  
  36. $user = new post($_POST['login'],$_POST['pass']);


a teraz zawsze mi wyswietla zle haslo chociaż jest dobre...
Crozin
1. Zlituj się nad sobą samym i nadawaj jakieś sensowne nazwy dla zmiennych. $i0, $p - co to ma być?
2. Najbardziej prosty i prymitywny sposób debugowania kodu:
  1. var_dump($i2, $this->haslo, $i2 === $this->haslo);

3. Stawiam na to, że w haśle pobranym z pliku ($i2) może na końcu jeszcze być znak nowej linii.
shimizu
a ja temu zapobiec?
Crozin
trim
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.