Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sesje (mały problem organizacyjny)
Forum PHP.pl > Forum > Przedszkole
ReeV
Witam! NIedawno zainteresowałem się (poważniej) sesjami i spróbowałem zabawy z nimi. Co nie co mi tam wychodzi lecz napotkałem pewien problem którego nie wiem jak rozwiązać.

Mam taki formularz (zaprezentuje jego część w którym wybiera się rasę):

  1. <?php
  2. <select name=&#092;"race\" class=\"input-text\" style=\"width: 83px\">
  3. <option value=&#092;"czlowiek\">Człowiek</option>
  4. <option value=&#092;"gnom\">Gnom</option>
  5. <option value=&#092;"elf\">Elf</option>
  6. <option value=&#092;"troll\">Troll</option>
  7. </select>
  8. ?>


Po zarejestrowaniu się wszystko ładnie dodawane jest do pliku users w postaci następującej:

login, hasło, rasa.

Teraz mam problem jak odtworzyć tą właśnie rasę którą wybraliśmy wcześniej w naszym panelu rejestracji. Jak pobrać dane z pliku?! funkcją GET się nie da bo próbowałem ustawić sesje na GET który pobierał by wysłaną wcześniej jedną z wybranych ras.
di@blo
Nie wiem czy o to Ci chodzi ale wczytywanie danych z pliku nie jest powiązane z sesjami.

Najpier musisz wczytać zwartośc pliku do stringa:
  1. <?php
  2. $tmp = fopen(&#092;"nazwa pliku z danymi\", \"r\");
  3. flock($tmp, 1);
  4. $dane = fread($tmp, 100);
  5. flock($tmp, 3);
  6. fclose($tmp);
  7. ?>

Później rozbić dane za pomocą znaku który rozdziela dane w pliku jeśli to jest spacja to jak nizej:

$tab = explode(" ", $dane);

i teraz wszysto masz w tablicy $tab

W $tab[0] masz login,
w $tab[1] masz hasło,
w $tab[2] masz rase.

---

Nastepne braki beda karane ostrzezeniami
hwao
ReeV
Niestety z tego co wiem potrzebne sa tutaj sesje do wczytania poniważ dokładną rzeczą o którą mi chodzi jest wczytanie z pliku (users.php) do którego zostały wysłane odpowiednie dane z formularza danych o osobie.

Dane zapisywane są w ten sposób nick | hasło(md5) | rasa

login i hasło czytane jest przez sesje i rasa też musi być bo inaczej nie działa i właśnie tu mam problem. Nie potrafię utworzyć sesji dla parametru rasa. Proszę o pomoc!

Plik session.php
  1. <?
  2. # start sesji
  3.  
  4. # biblioteka z funkcjiami
  5. include &#092;"func.php\";
  6.  
  7. # logowanie, wylogowanie itp
  8. switch ($page)
  9. {
  10. case &#092;"login\" : 
  11. $login = htmlentities(substr($_POST[&#092;"login\"], 0, 255));
  12. $passwd = htmlentities(substr($_POST[&#092;"passwd\"], 0, 255));
  13. login($login, md5($passwd)); 
  14. break;
  15.  
  16. case &#092;"logout\" : logout();
  17. break;
  18. }
  19. ?>


plik funkcje.php
  1. <?
  2.  
  3. #definicje stalych
  4. define(&#092;"DATA\", \"users.dat\");
  5. define(&#092;"SESID\", SESSION_NAME() . \"=\" . SESSION_ID());
  6.  
  7. # zaloguj user-a
  8. function login($login, $passwd)
  9. {
  10. $line = file(DATA);
  11. foreach($line as $temp)
  12. {
  13. $str = explode(&#092;",\", $temp);
  14. if(chop($str[0])==$login && chop($str[1])==$passwd)
  15. { 
  16. $_SESSION[&#092;"USER_AUTH\"] = True;
  17. $_SESSION[&#092;"USER_LOGIN\"] = $_POST[\"login\"];
  18. return True;
  19. }
  20. }
  21. $login = htmlentities($login);
  22. return False;
  23. }
  24.  
  25. # wyloguj user-a
  26. function logout()
  27. {
  28. $_SESSION[&#092;"USER_AUTH\"] = False;
  29. $_SESSION[&#092;"USER_LOGIN\"] = Null;
  30.  
  31. }
  32.  
  33. # czy użytkownik istnieje
  34. function user_exists($login)
  35. {
  36. $line = file(DATA);
  37. foreach($line as $temp)
  38. {
  39. $str = explode(&#092;",\", $temp);
  40. if(chop($str[0])==$login) return True;
  41. }
  42. return False;
  43. }
  44. # dodaje nowego użytkownika
  45. function add_user($login, $passwd, $rasa)
  46. {
  47. $files = fopen(DATA, &#092;"a\");
  48. flock($files, 3);
  49. fputs($files, $login . &#092;",\" . $passwd . \",\" . $rasa . \"n\");
  50. flock($files, 4);
  51. fclose($files);
  52. }
  53. # sprawdza czy zalogowany
  54. function auth()
  55. {
  56. return ($_SESSION[&#092;"USER_AUTH\"] == True);
  57. }
  58.  
  59. ?>


Formularz.php
  1. </form><FORM action=\"index.php?p=registration&<?=SID?>\" method=\"post\">
  2. <INPUT class=\"input-text\" type=\"hidden\" name=\"page\" value=\"registration\">
  3. <INPUT class=\"input-text\" type=\"hidden\" name=\"<?=SESSION_NAME()?>\" value=\"<?=SESSION_ID()?>\">
  4.  
  5. <b>Login: </b>
  6.  
  7. <INPUT size=9 class=\"input-text\" type=\"text\" name=\"login\" value=\"<?=$login?>\">
  8.  
  9.  
  10. <b>Hasło: </b>
  11.  
  12. <INPUT size=9 class=\"input-text\" type=\"password\" name=\"passwd\" value=\"<?=$passwd?>\"> 
  13.  
  14.  
  15. <INPUT size=9 class=\"input-text\" type=\"submit\" name=\"submit\" value=\"Rejestruj!\">
  16.  
  17.  
  18. <select name=\"race\" class=\"input-text\" style=\"width: 83px\">
  19. <option value=\"czlowiek\">Człowiek</option>
  20. <option value=\"gnom\">Gnom</option>
  21. <option value=\"elf\">Elf</option>
  22. <option value=\"troll\">Troll</option>
  23. </select>


Nie wiem właśnie w których plikach właśnie ustalić sesje dla $RASA. Proszę o pomoc lub naprowadzenie. Chodzi mi tylko żeby przy użyciu tego skryptu

  1. <?php
  2. echo&#092;"<img src=\"\" . $_SESSION[\"RASA\"] . \".gif\";
  3. echo &#092;"\" />\";
  4. ?>


wstawiało wcześniej wybraną opcje w miejsce $_SESSION["RASA"] bo wszystko łądnie zapisuje się do pliku czyli $user, $haslo, $rasa ale nie jest niestety odczytywane. Proszę o pomoc!
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.