Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz, zmienne i odswierzanie
Forum PHP.pl > Forum > Przedszkole
123tomek
Mam formularz logowania, ktory po nacisnieciu SUBMIT sprawdza czy login i haslo jest poprawne. Jezeli tak to powinno zmienic sie menu jezeli nie to menu ma byc jak przed logowaniem.
Uklad strony jest taki:
index.php w ktorym mam tabelke do ktorej poprzez include("menu.php") laduje menu a pozniej poprzez include $strona laduje dana strone wybrana z menu.

Problem jest nastepujacy: formularz logowania wysyla dane login i haslo i sprawdza czy uzytkownik istnieje. ale niestety kontrola tego czy dany login i haslo jest prawidlowe wykonuje sie juz po odswierzeniu, wtedy kiedy menu juz jest wyswietlone - bo wyswietla sie w index.php przed dana strona.

I teraz mam problem - jak to zrobic tak by po sprawdzeniu danych z formularza odswierzyla sie strona i przekazala do index.php poprawna zmiena $zalogowany= 0 lub 1

Teraz mam to rozwiazane w malo elegancki sposob - menu jest wyswietlane w calosci i dopiero po kliknieciu na odnosnik sprawdzam czy zmienna zalogowany jest ustawiona na 1.

Jak to rozwiazac - zalezy mi na tym by menu jednak wyswietlalo tylko te odnosniki ktore sa przeznaczone dla osob zalogowanych i niezalogowanych (rowniez tutaj pozniej menu bedzie rozne w zaleznosci od uprawnien danego uzytkownika)

Pozdrawiam
Tomek
sf
  1. <?php
  2.  
  3. // index.php
  4. if(!isset($_SESSION['zalogowany'])) {
  5. include 'strona_do_logowania.php';
  6. }
  7.  
  8. include 'menu.php';
  9.  
  10. // strona_do_logowania.php
  11. /* na gorze oczywiscie sprawdzenie poprawnego logowania, jezeli sie uda to header('Location: index.php');
  12. na dole formularz*/
  13.  
  14. ?>


proste jak barszcz tongue.gif

http://phorum.org - przeglądnij sobie źródło tego forum (katalog admin najlepiej), a dużo się nauczysz smile.gif
123tomek
Zupelnie tego nie rozumię. Kombinuję już pół dnia i ciągle nic nie działa. Zamieszczam kod i proszę o pomoc:

index.php
  1. <HTMl>
  2. <HEAD>
  3. <TITLE>SKLEP</TITLE>
  4. <META http-equiv=Content-Type content=\"text/html; charset=windows-1250\">
  5. </HEAD>
  6. <BODY style=\"background-color:#B3EFBE\">
  7. <CENTER><B> Witamy w Sklepie</B></CENTER><BR>
  8. <TABLE border=1>
  9. <TR>
  10. <TD align=center width=25% >
  11. <IMG SRC=logo=\"middle\" WIDTH=\"100\" HEIGHT=\"100\" BORDER=\"0\" ALT=\"logos\">
  12. <? 
  13. if (!IsSet($strona)) $strona=&#092;"glowna\";
  14. include(&#092;"database.php\");
  15. if(!isset($_SESSION['zalogowany'])) {
  16. include 'login.php';
  17. }
  18. include(&#092;"menu.php\");?>
  19. </td><td width=75% >
  20. <?
  21. include($strona.&#092;".php\"); //ustawienie glownej
  22. ?></td>
  23. </tr>
  24. </table>
  25. </BODY>
  26. </html>


menu.php:
  1. <?
  2. if(isset($_SESSION['zalogowany'])) { ?>
  3. <BR>
  4. <a href=index.php?strona=tytul>Tytuł</a><BR>
  5. <BR>
  6. <a href=index.php?strona=osoba>Osoba</a><BR>
  7. <BR>
  8. <HR>
  9. <?}?>
  10. <a href=index.php>START</a><BR>
  11. <BR>
  12. <a href=index.php?strona=login>LOGOWANIE</a><BR>


login.php
  1. <?php
  2. if ($login<>&#092;"\" and $haslo<>\"\")
  3. {
  4. $zmienna = new Cbaza;
  5. $zmienna->polacz();
  6. $zmienna2 = new Cuser;
  7. $zmienna2->login_user($login,$haslo);
  8. if (($zmienna2->tablica_wynikow[0][0]<>&#092;"\") and ($zmienna2->tablica_wynikow[0][1]<>\"\")){
  9. echo &#092;"<CENTER><B>Logowanie prawidłowe</B></CENTER>\";
  10. session_register('zalogowany');
  11. header('Location: index.php');
  12. }
  13. else {echo &#092;"<CENTER><B>Logowanie niepomyślne - powtórz logowanie!</B></CENTER>\";}
  14. $zmienna->pokaz();
  15. $zmienna->zamknij();
  16. }
  17. //else echo \"<CENTER><B>Nie podales danych - powtórz logowanie!</B></CENTER>\";
  18.  
  19. echo&#092;"<CENTER><B>Logowanie do systemu.</B></CENTER>\";
  20. if (!isset($zalogowany))
  21. {
  22. ?>
  23. <form action=index.php metod=POST>
  24. <input type=hidden name=strona value=login>
  25. <table align=\"center\" border=3>
  26. <TR>
  27. <TD width=40%>
  28. <CENTER>NR Użytkownika:
  29. </td><td align=\"center\" width=40%>
  30. <input type=text size=10 name=login>
  31. <BR>
  32. </td>
  33. </tr>
  34.  
  35. <TR>
  36. <TD width=40%>
  37. <CENTER>Nazwisko:
  38. </td><td align=\"center\" width=40%>
  39. <input type=password size=20 name=haslo>
  40. <BR>
  41. </td>
  42. </tr>
  43. </table>
  44. <BR>
  45. <table align=\"center\" border=0>
  46. <input align=\"right\" type=submit value='Zaloguj'>
  47. </table>
  48. </form>
  49.  
  50. <?
  51. } else
  52. {
  53. echo &#092;"Jestes juz zalogowany!\";
  54. echo &#092;"Chcesz sie przelogowac?\";
  55. }
  56. ?>


Obecnie po zalogowaniu dostaje komunikat:
Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\logowanie\index.php:11) in c:\apache\htdocs\logowanie\login.php on line 11


W helpi wyczytalem ze: "Pamiętaj, że header() może być wywoływana jedynie do momentu nim zostanie wysłana jakakolwiek treść, tzn. znaczniki HTML, puste linie lub wynik pracy php. "
Ale w takim razie jak mam zmienic index.php zeby to zadzialalo?

Pozdrawiam
Tomek
scanner
1. Poczukac na forum, już były pkazywane najprostrze rozwiąania funckje ob_*()
2. Zacząć oddzielać kod HTML od kodu php (Szablony)
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.