Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php / MySQL] Problem - po zalogowaniu muszę odświeżać stronę.
Forum PHP.pl > Forum > Przedszkole
Koniczynka
Witam. Zrobiłem system logowania oparty na sesjach. Jednak coś nie działa tak, jak powinno. Kiedy w pliku loguj.php wpisuję poprawny login i hasło, to przesyłane jest to do panel.php.

  1. <?php session_start(); ?>
  2.  
  3. <HTML>
  4. <HEAD>
  5. <TITLE>Panel administracyjny</TITLE>
  6. </head>
  7. <BODY>
  8.  
  9. <center><font face=tahoma></font>
  10. <font size=2>
  11.  
  12. <?php
  13. require_once 'polaczenie.php';
  14. require_once 'naglowek.php';
  15.  
  16.  
  17. $sql = "SELECT * FROM redakcja WHERE login = '" . $_POST['login'] . "' " .
  18. "AND haslo = '" . $_POST['haslo'] . "'" ; 
  19.  
  20. $result = mysql_query($sql)
  21. or die('Nie potrafię odnaleźć użytkownika: ' . mysql_error()); 
  22.  
  23. $row = mysql_fetch_array($result);
  24.  
  25. $_SESSION['id'] = $row['id'];
  26. $_SESSION['dostep'] = $row['dostep'];
  27. $_SESSION['login'] = $row['login'];
  28. $_SESSION['podpis'] = $row['podpis']; 
  29.  
  30.  
  31.  
  32. ?>
panel.php

naglowek.php
  1. <HTML>
  2. <HEAD>
  3. <TITLE>Panel administracyjny</TITLE>
  4. </head>
  5. <BODY>
  6.  
  7. <center><font face=tahoma size=3>
  8. <B>Informacje - panel administracyjny</B>
  9. <br><br>
  10. <font size=2>
  11.  
  12. <?php
  13.  
  14. require_once 'polaczenie.php';
  15.  
  16. if (isset($_SESSION['login'])) {
  17. echo '<div id=witanie>';
  18. echo 'Aktualnie zalogowany jako: ' . $_SESSION['login'];
  19. echo '</div>';
  20. }
  21.  
  22. if ($_SESSION['dostep'] > 2) {
  23.  
  24. echo "<font face=verdana size=1>";
  25. echo '<a href=zobacz.php>Informacje </a>';
  26. echo '| '; }
  27.  
  28.  
  29.  
  30. if ($_SESSION['dostep'] > 2) {
  31.  
  32. echo "<font face=verdana size=1>";
  33. echo '<a href=usunnewsa.php>Usuń informację</a>';
  34. echo '| '; }
  35.  
  36. if ($_SESSION['dostep'] > 2) {
  37.  
  38. echo "<font face=verdana size=1>";
  39. echo '<a href=edytujnewsa.php>Modyfikuj informację</a>';
  40. echo '| '; }
  41.  
  42. if ($_SESSION['dostep'] > 2) {
  43.  
  44. echo "<font face=verdana size=1>";
  45. echo '<a href=dodajnewsa.php>Dodaj informację</a>';
  46. echo '| '; }
  47.  
  48.  
  49.  
  50. if ($_SESSION['dostep'] > 2) {
  51.  
  52. echo "<font face=verdana size=1>";
  53. echo '<a href=dodajuzytkownika.php>Dodaj użytkownika </a>';
  54. echo '| '; }
  55.  
  56.  
  57.  
  58. if ($_SESSION['dostep'] > 2) {
  59.  
  60. echo "<font face=verdana size=1>";
  61. echo '<a href=usunuzytkownika.php>Usuwanie użytkowników</a>';
  62. echo '| '; }
  63.  
  64.  
  65. if ($_SESSION['dostep'] > 2) {
  66.  
  67. echo "<font face=verdana size=1>";
  68. echo '<a href=modyfikujuzytkownika.php>Edytowanie użytkowników</a>';
  69. echo '| '; }
  70.  
  71.  
  72. ?>
  73.  
  74. </td>
  75. </TABLE>
  76.  
  77. <HR COLOR="#808080">


Problem polega na tym, że jeżeli po wpisaniu danych pojawi się panel.php, to nie widać tam nic innego prócz
"Informacje - panel administracyjny" . Dopiero po odświeżeniu strony pojawia się jej zawartość. Co zrobić, aby wszystko przechodziło płynnie, tzn. po wpisaniu danych, od razu wyświetliły się linki ? Proszę o jakieś wskazówki.

Do zobrazowania problemu: http://www.koniczynka.voip24h.info/skrypt_newsow/loguj.php - hasło i login: admin .
strife
Cytat(Koniczynka @ 15.06.2006, 17:07 ) *
Co zrobić, aby wszystko przechodziło płynnie, tzn. po wpisaniu danych, od razu wyświetliły się linki ? Proszę o jakieś wskazówki.

W miejscu, gdzie zostaje spełniony warunek wpisania poprawnego hasła i loginu daj:
  1. <?php
  2. header("Location: panel.php");
  3. ?>


dodam jeszcze, że jak Ci nie będzie działać to poszukaj na forum tematów z headers already sent ...
mario
zeby bylo lepiej, do kodu strife'a dodaj exit zawsze po header

  1. <?
  2. header("Location: panel.php");
  3. ?>
Koniczynka
Zrobiłem to według rad dr_bonzo:
Cytat
Naucz sie oddzielac logike aplikacji (kod php) od prezentacji danych! (html) -- unikniesz takich sytuwacji:
1. wysylasz naglowki z typem WML - OK
2. laczysz sie z baza, pobierasz to co masz pobrac, sprawdzasz czy jakistam warunek jesst spelniony
3. jesli tak, to dajesz przekierowanie header (! zauwaz ze do tej pory NIC nie wyslales do przegladarki i header zadziala);
jesli nie to wyswietlasz dane <wml ..... za pomoca printa()/echo lub systemu szablonow.


I wyszło mi tak:
panel.php
  1. <?php 
  2. require_once 'polaczenie.php';
  3.  
  4. $sql = "SELECT * FROM redakcja WHERE login = '" . $_POST['login'] . "' " .
  5. "AND haslo = '" . $_POST['haslo'] . "'" ; 
  6.  
  7. $result = mysql_query($sql)
  8. or die('Nie potrafię odnaleźć użytkownika: ' . mysql_error()); 
  9. $row = mysql_fetch_array($result);
  10. $_SESSION['id'] = $row['id'];
  11. $_SESSION['dostep'] = $row['dostep'];
  12. $_SESSION['login'] = $row['login'];
  13. $_SESSION['podpis'] = $row['podpis']; 
  14.  
  15. if ($_POST['login'] == $_SESSION['login'] && $_POST['haslo'] == $_SESSION['haslo'])
  16.  
  17.  
  18. {
  19.  
  20. header("Location: naglowek.php"); 
  21. }
  22.  
  23.  
  24.  
  25. ?>


Logowanie jest na stronę panel.php. Kiedy wpisuję poprawny login i hasło, to przekierowywany jestem na panel.php, a header("Location: naglowek.php"); już nie działa. A kiedy w pasku przeglądarki wpiszę http://www.koniczynka.voip24h.info/skrypt_newsow/panel.php , to przechodzi na naglowek.php . Gdzie znajduje się błąd ?


edit: Postanowiłem nie używać ani header, ani require_once i zawartość naglowek.php wkleiłem do panel.php . Wszak, chciałem zrobić to tak, jak w książce, ale nie wyszło. Dziękuję za wszelką pomoc.
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.