Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]System logowania w newsach - Problem z Cookie
Forum PHP.pl > Forum > Przedszkole
Volume
witam.
Postanowilem zrobic system newsow z panelem administracyjnym na logowanie i mam problem z cookie. System ma taki schemat:
(to co po koleji sie ma wyswietlac w instrukcjach, opisalem najpierw w funkcach, zeby sie nie pogubic - wiem, ze moglem co nieco po prostu umiescic w innych zmiennych, ale tak mi wygodniej.. nie znam sie jeszcze az tak na php, zeby to lepiej napisac - dlatego mozecie wrzucic jakie uwagi czy tak w ogole powinno sie takie rzeczy robic.. Ale puki co chcialbym zalatwic sprawe z cooki.)
  1. <?php
  2. session_start(); // (doedytowane)
  3. /* Funkcja wyswietla formularz do zapisu newsow */
  4. function forNews()
  5. {
  6. echo (&#092;"n<h1>tytul formularzu</h1>\");
  7. echo (&#092;"cos tam innego\");
  8. echo (&#092;"kod html itd\");
  9. }
  10.  
  11. /* Funkcja wyswietla tekst z blednym podaniem hasla czy loginu */
  12. function errorPass()
  13. {
  14. echo (&#092;"n<h1>jakis tytul</h1>\");
  15. echo (&#092;"cos tam innego\");
  16. echo (&#092;"kod html itd\");
  17. }
  18.  
  19. /* Funkcja wyswietla logowanie */
  20. function logPass()
  21. {
  22. echo (&#092;"n<h1>jakis tytul</h1>\");
  23. echo (&#092;"cos tam innego\");
  24. echo (&#092;"kod html itd\");
  25. }
  26.  
  27. /* funkcja w ktorej odbywa sie zapisywanie tresci z formularza do plikow */
  28. function zroBione()
  29. {
  30. rozne funkcje, zmienne itd..
  31. }
  32.  
  33. /* Mechanizm postepowania */ 
  34. if($ns==1) 
  35. { 
  36. $haslo=&#092;"qqqq\"; 
  37. $autor=&#092;"jozek\"; 
  38. if ($_SESSION['pass']==$_POST['haslo'] && $_SESSION['nick']==$_POST['autor']) // (przerobione doedytowane)
  39. {
  40. if($nz==1)
  41. {
  42. echo forNews();
  43. }
  44. else
  45. {
  46. echo zroBione(); 
  47. }
  48. }
  49. else 
  50. {
  51. echo errorPass(); 
  52. }
  53. }
  54. else
  55. {
  56. echo logPass(); 
  57. }
  58. ?>


Szczerze piszac nie bardzo chwytam jak to COOKIE powinienem wtloczyc w moj skrypt. Na razie mam jak powyzej widac tak:
  1. <?php
  2. if ($_COOKIE['pass']!==$haslo && $_COOKIE['nick']!==$autor)
  3. ?>
ale przy takim zapisie źle dziala mi logowanie (pierwotnie mailem po prostu $pass==$haslo && $nick==$autor) - tzn. co kolwiek wpisze za haslo to mi sie loguje do panelu admin. Do tej pory nie uzywalem cookie tylko inkludowlem sobie drugi plik z tym panelem(i wsyztsko tams ie odbywalo bez zadnych instrukcji) wiec cookie w zasadzie nie bylo specialnie potrzebne, ale teraz wszystko zawarlem w jednym pliku dzieki instrukcji if.. no i np. po wywolaniu akcji w logowaniu index.php?str=admin&ns=1&nz=1 dostaje sie do mojego panelu jednak jak juz chcem zapisac moja tresc z pol formularza robie akcje (do echo zroBione()winksmiley.jpg np. index.php?str=admin&ns=1&nz=2 no i wtedy wywala mi informacje o bledzie hasla ( echo errorPass(); ) dlatego pomyslalem, ze wlasnie cookie powinno sprawe zalatwic.. no i zalatwilo tak, ze jak co kolwiek wpisze w loginie to sie dostaje do dzialu administracyjnego, skrypt wtedy dziala jak nalezy ale kazdy ma dostep do panelu(?) - na poczatku msyalem, ze to tak ma byc.. cookie zapisalo sie w mojej przegladarce, ale chcac sparwdzic czy aby tu nie jest cos spartrolone przetestowalem to na drugm systemie (xp) no i bez podoawanai hasla dalej moge sie logowac.. a to chyba tak byc nei powinno. mam nadzieje, ze nie zamotalem.. sorki za tak dlugi wpis ale chcialbym aby kazdy zrozumial moj problem.

EDIT
Pewna osoba doradzila mi abym zrobil tow sesjach - ale ja na sesiach sie eni znam i jeszcze nie rozumiem za bardzo jak prawidlowo je uzywac.. To co doedytowalem - zaznaczylem w kodzie - nadal nei dziala jak nalezy...
Ociu
  1. <?php
  2. $haslo=&#092;"qqqq\"; 
  3. $autor=&#092;"jozek\"; 
  4. if($ns==1) 
  5. { 
  6.   if ($haslo==$_POST['haslo'] && $autor==$_POST['autor'])
  7.   {
  8.         setcookie(&#092;"imie\", $autor);
  9.         setcookie(&#092;"haslo\", $haslo);    
  10. } else {
  11.   echo logPass(); 
  12. }
  13.  
  14. # Tu jakies dzialanie 
  15.  
  16. if(isset($_COOKIE['imie']) && isset($_COOKIE['haslo']))
  17. {
  18.        # instrukcja
  19. }
  20. ?>


Aby sprawdzić, czy istnieje cookie, trzeba go utworzyć.
Potem wystarczy przed każdym działaniem sprawdzić czy cookie istnieje.

pozdrawiam

edit: co do sesji
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.