Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy można wysłać COOKIES metodą GET i czy to dobre rozwiązanie?
Forum PHP.pl > Forum > Przedszkole
lamcpp
witam, tworze skrypt panelu administratora dla logowania dla admina (bardzo prosty i chciałbym by był oparty na ciasteczkach niż na sesjach, chyba że nie bedzie innego wyjscia)
Oto wszystkie pliki:
index.php: (jest to głowny plik, który ma tylko wyświetlać login i hasło mozliwe do wpisania)
  1. <?php
  2. include('sekcja_naglowka.php');
  3. ?>
  4. <body>
  5. <div id="central">
  6. <form action='logowanie.php' method='post'>
  7. Login: <input type='text' name='login' size='20' /><br />
  8. Hasło: <input type='password' name='haslo' size='20' /><br />
  9. <input type='submit' name='submit' value='Zaloguj' />
  10. <input type='hidden' name='submitted' value='TRUE' />
  11. </form>
  12. </div>
  13.  
  14. </body>
  15. </html>


logowanie.php: jest to plik sprawdzający czy login i hasło są takie jak w bazie i jesli tak to tworzy dwa ciasteczka (dla loginu i hasła po jednym):
  1. <?php
  2. include('sekcja_naglowka.php');
  3. if(isset($_POST['submitted']))
  4. {
  5. if(!empty($_POST['login']))
  6. {
  7. $login = mysqli_real_escape_string($dbc,trim($_POST['login']));
  8. }
  9. else
  10. {
  11. $login = FALSE;
  12. }
  13. if(!empty($_POST['haslo']))
  14. {
  15. $haslo = mysqli_real_escape_string($dbc,trim($_POST['haslo']));
  16. }
  17. else
  18. {
  19. $haslo = FALSE;
  20. }
  21. if($login && $haslo)
  22. {
  23. $resultat = mysqli_query($dbc,"SELECT login,haslo FROM user WHERE login='$login' AND haslo=SHA1('$haslo')");
  24. if(mysqli_num_rows($resultat) == 1)
  25. {
  26. $wyn = mysqli_fetch_array($resultat);
  27. setcookie('login',$wyn['login']);
  28. setcookie('haslo',$wyn['haslo']);
  29. $url = absolute_url('glowny.php');
  30. header("Location: $url");
  31. exit();
  32. }
  33. else
  34. {
  35. echo "<div class='biel'>Wprowadziłeś niepoprawne dane</div>";
  36. }
  37. }
  38. else
  39. {
  40. echo '<div class="biel">Wprowadziłeś niepoprawny login bądź hasło.<br />Spróbuj ponownie.</div>';
  41. }
  42. }
  43. ?>
  44.  


oraz glowny.php, czyli głowny plik, w którym admin będzie mogł zarzadzac serwisem, który bedzie otwierany gdy zostaną utworzone dwa ciasteczka:
  1. <?php
  2.  
  3. include('sekcja_naglowka.php');
  4. if(!isset($_COOKIE['login']))
  5. {
  6. $url = absolute_url('index.php');
  7. header("Location: $url");
  8. exit();
  9. }
  10. ?>
  11. <body>
  12. <div id="naglowek">
  13. <p class="panel">Panel administratora</p>
  14. </div>
  15. <div id="logowanie">
  16. <?php echo "Witaj, {$_COOKIE['login']}"; ?>
  17. </div>
  18.  
  19. <div id="lewa">
  20.  
  21. <div class="sidebarmenu">
  22. <ul id="sidebarmenu1">
  23. <?php echo $_COOKIE['login']; ?>
  24. <li><a href="index.php?name=zdjecia">Dodaj zdjęcia</a></li>
  25. <li><a href="index.php?name=usun">Usuń zdjęcia</a></li>
  26. <li><a href="index.php?name=zmien">Zmień wyświetlanie</a></li>
  27. </ul>
  28. </div>
  29.  
  30. </div>
  31.  
  32. <div id="prawa" class="prawa">
  33. <?php
  34.  
  35. if($_GET['name'] == 'usun')
  36. {
  37. include('usun_zdjecia.php');
  38. }
  39. else if($_GET['name'] == 'zdjecia')
  40. {
  41. include('preup.php');
  42. }
  43. else if($_GET['name'] == 'zmien')
  44. {
  45. include('zmien_wyswiet.php');
  46. }
  47.  
  48. }
  49. ?>
  50. </div>
  51.  
  52. <div id="stopka">
  53. </div>
  54. </body>
  55. </html>
  56.  


Skrypt działa do pewnego momentu dobrze, tzn w przypadku złego hasla nie pojawia się glowny.php w przypadku dobrego pojawia sie i wyswietla na gorze, witaj, imie
To działa dobrze. Natomiast problem jestw tym trzecim pliku z linkami w menu, które jak widac przesyłane są metogą GET. ponieważ po kliknięciu na takiego linka pojawia mi się znowu strona index.php zebym wprowadził login i haslo, a jak to zrobie to znowu to samo i tak sie zapętla..podsumowując zadnego z linka nie mozna otworzyć. Wydaje mi się, że dzieje się tak dlatego ponieważ ciasteczek nie ma w tych plikach dołączonych do linków czyli: 'usun_zdjecia.php, preup.php oraz zmien_wysw.php. Wydaje mi się że trzeba by jakoś w tych plikach wstawić te ciasteczka, żeby poprostu nie pytało o login i hasło. Myslałem o wysłaniu ich metodą GET, razem z linkiem, ale pytanie czy to dobre myslenie, czy tak się praktykuje? a jeśli nie to jak to zrobić by pliki w tych linkach otwierały sie normalnie bez zadnego potwierdzania loginu i hasła (wkoncu jesli jestem juz jako admin to niepowinienem musiec znowu sprawdzac loginu i hasła)
r4xz
logowanie nigdy nie może być oparte na ciasteczkach (ze względów bezpieczeństwa), musisz przekształcić na sesje. 
lamcpp
ok problem rozwiązany, zamieniłem na sesje.
Problemem było to, że wszystkie linki po zmianie strony na glowny.php dalej odnosiły się do index.php, i dlatego cały czas pojawiał się monit o login i haslo.
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.