Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Czy można wysłać COOKIES metodą GET i czy to dobre rozwiązanie?
lamcpp
post 8.12.2009, 19:35:25
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

Ostrzeżenie: (0%)
-----


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)

Ten post edytował lamcpp 8.12.2009, 19:36:57
Go to the top of the page
+Quote Post
r4xz
post 8.12.2009, 19:48:00
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


logowanie nigdy nie może być oparte na ciasteczkach (ze względów bezpieczeństwa), musisz przekształcić na sesje. 


--------------------
Go to the top of the page
+Quote Post
lamcpp
post 8.12.2009, 20:33:46
Post #3





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 12:56