Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Panel administracyjny
Forum PHP.pl > Forum > Przedszkole
bylek
Witam, tworzę prosty panel administracyjny na własne potrzeby, jednak mam pewien problem i mam nadzieję że pomożecie mi go rozwiązać.
Otóż po zalogowaniu sie do panelu admina i wejściu na dowolną podstronę w nim wyrzuca mnie do logowania. Na pewno ma tą związek z kodem który umieściłem w admin.php. Proszę również o sprawdzanie czy panel jest bezpieczny.

administrator.php
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <link rel="stylesheet" href="css/style.css" />
  3. <title>Logowanie</title>
  4. </head>
  5. <div class="logowanie">
  6. <form method="post" action="admin.php">
  7. <h1>Logowanie:</h1><br />
  8. Hasło: <input type="password" name="haslo" /><br /><br />
  9. <input type="submit" value="Loguj" />
  10. </form>
  11. <p><a href="index.php">Przejdź do strony głównej &raquo;</a></p>
  12. </div>
  13. </body>


admin.php
  1. <?php
  2. if(isset($_POST['haslo'])){
  3. if($_POST['haslo'] == 'super123'){
  4. $_SESSION['admin'] = 'ok';
  5. }
  6. }
  7. if((!isset($_POST['haslo']) || $_POST['haslo'] != 'super123') && $_GET['admin'] != 'wyloguj'){
  8. header("Location: administrator.php");
  9. }
  10.  
  11. if($_SESSION['admin'] = 'ok'){
  12. include("panel.php");
  13. }
  14. if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
  15. {
  16. $_SESSION['admin'] != 'ok';
  17. ?>
  18. <script language="JavaScript" type="text/javascript">
  19. location.href="index.php";
  20. </script>
  21. <?php
  22. }
  23. ?>


panel.php
  1. <?php
  2. if($_SESSION['admin'] == 'ok'){
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  6.  
  7. <head>
  8. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  9. <meta name="author" content=" " />
  10. <link rel="Stylesheet" type="text/css" href="css/style1.css" />
  11. <title>Stronka</title>
  12. </head>
  13.  
  14. <body>
  15. <div id="wrapper">
  16. <div id="header">
  17. <div id="top">
  18. <h1>Panel administracyjny</h1>
  19. </div>
  20. <div id="logout">
  21. <h2><a href="admin.php?admin=wyloguj">&raquo; Wyloguj mnie</a></h2>
  22. </div>
  23. </div>
  24. <div id="center">
  25. <div id="nawigacja">
  26. <h3>.nawigacja</h3>
  27. <ul id="menu">
  28. <li><a href="?id=news">&raquo; system newsów</a></li>
  29. <li><a href="?id=users">&raquo; użytkownicy</a></li>
  30. <li><a href="#">&raquo; ...</a></li>
  31. <li><a href="#">&raquo; ...</a></li>
  32. </ul>
  33. </div>
  34. <div id="intro">
  35. <h3>.panel</h3>
  36. <p>
  37. <?php
  38. switch($_GET['id']){
  39. case 'news':
  40. echo "newsy";
  41. break;
  42. case 'users':
  43. echo "users";
  44. break;
  45. default:
  46. echo "Witaj w panelu administrcyjnym!<br /><br />Wybierz pozycję z menu po lewej aby zarządzać stroną.";
  47. }
  48. ?>
  49. </p>
  50. </div>
  51. </div>
  52. </div>
  53. </body>
  54. </html>
  55. <?php
  56. }else {
  57. header("Location: administrator.php");
  58. }
  59. ?>
piaseq
Na moje oko brakuje session_start() na początku panel.php
bylek
Niestety dodanie session_start() na początku panel.php nic nie daje...
naitsabes
narazie zobaczyłem kod, bledu nie zauwazylem lecz po co robisz tak :

  1. if(isset($_POST['haslo'])){
  2. if($_POST['haslo'] == 'super123'){


nawet nie ma else, skoro nie ma hasla to takze nie jest rowne 'super123' prawda? Jezeli tak zrobisz jak robisz to daj 'Zapraszam do zalogowania' itd..

#edit

kolejny ' uszczerbek '

  1. if($_SESSION['admin'] == 'ok'){


nie lepiej zrobic sprawdzenie czy admin != 'ok' i wtedy headera wkleic ?


#edit 2


znalazłem odpowiedz otoz


  1. if((!isset($_POST['haslo']) || $_POST['haslo'] != 'super123') && $_GET['admin'] != 'wyloguj'){


zastepujesz

  1. if($_SESSION['admin']!='ok' && $_GET['admin'] != 'wyloguj'){


ale mam pytanko. po co dales

  1. && $_GET['admin'] != 'wyloguj'


prosze o wytlumaczenie..


nastepnie


  1. if($_SESSION['admin'] = 'ok'){


w ifach pamietaj dopisywac podwojne = czyli ==

wiecej wyzej dry.gif pozdrawiam naitsabes
bylek
Dzięki za pomoc, jednak teraz nie musze nawet podawać hasła żeby wejść na strone. A
  1. && $_GET['admin'] != 'wyloguj'
używam dlatego, gdyż po wylogowaniu chce by mnie przekierowywało do index.php, a nie administrator.php.
naitsabes
jest to wina ze sesja istnieje, jak ja usuniesz przy wylogowaniu - session_destroy; to zniknie...
bylek
Dzięki mistrzu smile.gif Już wszystko śmiga.
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-2024 Invision Power Services, Inc.