Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sesje
Forum PHP.pl > Forum > Przedszkole
ryks
http://pl.wikibooks.org/wiki/PHP/Autoryzacja_i_logowanie

zrobilem sobie takiego i mam problem, bo nie kapuje jak sie do tego teraz odwolac. tzn np $_SESSION['rank'] nie dziala nigdzie poza tym plikiem. jak sie doda session_start() np w index.php to nie lapie tego pliku i w ogole sesja tam nie dziala. oczywiscie daje require_once '/templates/zaloguj.php'; ale to nic nie daje sad.gif
lukaskolista
na poczatku kazdego pliku, w ktorych chcesz miec dostep do sesji mysisz umiescic kod
  1. <?php
  2. ?>
Gość
wiem, wiem, ale to wlasnie nic nie daje, co wiecej nie moge w kazdym pliku, bo mi wtedy wyskakuje ostrzezenie o dublowaniu rozpoczeciu sesji.
pewnie trzeba to jakos wywolac inaczej, tylko jak?
ryks
skoro nikt nie wie jak to wykorzystac to moze chociaz ktos poleci jakis inny system autoryzacji uzytkownikow, juz nie obiektowy?
prosze o pomoc
gino
a poszukać sie nie da ? google oddaje od groma gotowych skryptów krok po kroku.


gino
Gość
no tak, ale chcialbym sie dowiedziec jak to obiektowo wywolac. tam jest skrypt, ale nie ma przykladu uzycia i nie wiem jak zaczac
gino
coś się na OOP tak uparł ? Skoro nie wiesz od czego zacząć, logicznym jest (naturalnie i rozwojowo programistycznie) zacząć od programowania nieobjektowego. Pójdzie Ci łatwiej i szybciej, logowanie niekoniecznie musi być od razu obiektowe. Poczytaj o sesjach, zrób to sam, wrzuć kod, na pewno nie zostaniesz bez pomocy. Jeśli oczekujesz gotowych rozwiązań skorzystaj z wyszukiwarki.


gino
Gość
nieobiektowo mi sie udalo, a chce to zrobic wlasnie obiektowo. tez przyklad wyglada fajnie, ale nie wiem jak to wywolac.
probowalem dodawac

  1. $user=new user(new mysqlStorage);


mam 3 pliki, ktore tu uproszcze do minimum:

index.php:

  1.  
  2. require 'templates/list.php';
  3. ?>


list.php:
  1.  
  2. <?php require_once 'zaloguj.php';
  3.  
  4.  
  5. foreach ($test as $post): ?>
  6. ...
  7. <?php endforeach; ?>
  8. </ul>
  9.  
  10.  
  11. <form action="zaloguj.php" method="post">
  12. <label for="login">Login: </label><input type="text" name="login"/>
  13. <label for="password">Hasło: </label><input type="text" name="password"/>
  14. <input type="submit" value="zaloguj"/>
  15. </form>

tutaj nie dodaje session_start() bo mi wywala blad, ze jest aktywna juz, czyli jednak lapie sesje w tym pliku.

no i plik zaloguj.php
czyli to: http://pl.wikibooks.org/wiki/PHP/Autoryzacja_i_logowanie

i teraz jak sie loguje i robie sobie print_r w pliku zaloguj.php to ladnie wszystko jest wylapane. przechodze do pliku index.php i print_r pusty.

prosze o pomoc
gino
za to że marudzisz:

piszę z ręki więc sprawdz i oblecz w html-a!

1. plik index.html tam formularz do zalogowania się (siłą rzeczy nie ma tutaj session_start()):

  1. <form action="zaloguj.php" method="post">
  2. <label for="login">Login: </label><input type="text" name="login"/>
  3. <label for="password">Hasło: </label><input type="text" name="password"/>
  4. <input type="submit" value="zaloguj"/>
  5. </form>


2. plik zaloguj.php tam małe zmiany w funkcji zaloguj: session_start() oraz kod aby skrypt wiedział gdzie przenieść zalogowanego usera (np. do index2.php):

  1. <?php
  2. public function zaloguj(){
  3. if($_SERVER['REQUEST_METHOD']=='POST'){
  4. $user=$this->storage->login($_POST['login'], $_POST['password']);
  5. if(!$user){die('Nieprawidłowa nazwa użytkownika lub hasło!');}
  6. $this->name=$user['name'];
  7. $this->rank=$user['ranga'];
  8. session_start(); //dodane
  9. $_SESSION['zalogowany']=true;
  10. $_SESSION['name']=$this->name;
  11. $_SESSION['rank']=$this->rank;
  12. //dodane
  13. if (headers_sent()) {
  14. ?>
  15. <script langugage="javascript" type="text/javascript">
  16. <!--
  17. location.replace('index2.php');
  18. // -->
  19. </script> <?php
  20. } else {
  21. header("Location: index2.php");
  22. }
  23. }
  24. }
  25. //koniec dodanego
  26. }
  27. ?>


3. plik index2.php tutaj session_start() na początku i sprawdzenie czy zmienna sesyjna $_SESSION['zaloguj'] jest true oraz link do wylogowania:

  1. <?php
  2. if ($_SESSION['zalogowany'])
  3. {
  4. echo "strefa chroniona";
  5. echo "<a href=logout.php>wyloguj</a>";
  6. }
  7. else
  8. {
  9. echo "Wypad";
  10. }
  11. ?>


4. plik logout.php niszczenie sesji i link do zalogowania się.
  1. <?php
  2. ?>
  3. <a href="index.php">zaloguj ponownie</a>


pisałem z ręki więc sprzwdz


gino
ryks
wielkie dzieki dobry czlowieku, za chwile sie za to wezme smile.gif jeszcze raz wielkie dzieki smile.gif
ryks
prosze jakiegos moderatora, zeby dodal GINO POMOGL, bo ja nie mam konta, a na pewno jeszcze sie komus ta informacja przyda
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.