Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skryp sprawdzający czy użytkownik jest zalogowany
Forum PHP.pl > Forum > Przedszkole
DerekDX
Witam,
Stworzyłem stronę z możliwością zalogowania się użytkownika i teraz wypadało by stworzyć jakieś warunki ab użytkownicy chcieli się logować czyli ograniczenia na początek muszę sprawdzić czy użytkownik jest zalogowany wymyśliłem coś takiego:

  1. if (empty($_SESSION['USERNAME']))
  2. {
  3. $rejestracja='<a href="moje_konto.php" target="okno">Moje konto</a>';
  4. $zaloguj='<a href="wyloguj.php" target="okno">Wyloguj</a>';
  5. }
  6. else
  7. {
  8. $rejestracja='<a href="rejestracja.php" target="okno">Rejestracja</a>';
  9. $zaloguj='<a href="zaloguj.php" target="okno">Zaloguj</a>';
  10. }


Skrypt ten sprawdza czy user jest zalogowany a jeżeli jest to zmienia się menu, ale niestety cosik nie chce to działać oto cały skrypt:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Document bez tytułu</title>
  6. <link href="css/style.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. if (empty($_SESSION['USERNAME']))
  12. {
  13. $rejestracja='<a href="moje_konto.php" target="okno">Moje konto</a>';
  14. $zaloguj='<a href="wyloguj.php" target="okno">Wyloguj</a>';
  15. }
  16. else
  17. {
  18. $rejestracja='<a href="rejestracja.php" target="okno">Rejestracja</a>';
  19. $zaloguj='<a href="zaloguj.php" target="okno">Zaloguj</a>';
  20. }
  21.  
  22. ?>
  23. <img src="css/images/tlo.jpg" style="position:absolute; top: 0px; z-index:-1;"/>
  24. <a href="index.html"><img src="css/images/logo.png" style="position: absolute; top:20px;" /></a>
  25. <ul>
  26. <img src="css/images/menu_left.png" style="float:left;">
  27. <li><a href="zaloguj.php" target="okno"></a></li>
  28. <li>
  29. <?php
  30. echo $rejestracja;
  31. ?>
  32. </li>
  33. <li>
  34. <?php
  35. echo $zaloguj;
  36. ?>
  37. </li>
  38. <li><a href="kontakt.html">Kontakt</a></li>
  39. <img src="css/images/menu_right.png" style="float:left;">
  40. </ul>
  41.  
  42. <iframe name="okno" scrolling="no" frameborder="no" style="position:absolute; top:200px;
  43. margin-left:auto;
  44. margin-right:auto;
  45. width:800px;
  46. height:300px;"></iframe>
  47.  
  48. </body>
  49. </html>


a to skrypt dzieki któremu użytkownik może się zalogować:

  1. <?php
  2.  
  3. $polaczenie=mysql_connect("localhost","root","");
  4. mysql_select_db("portal",$polaczenie);
  5. //jesli wcisnieto przycisk wysylania
  6. if ($_POST['submit'])
  7. {
  8. $zapytanie="select*from users where login='".$_POST['login']."' and haslo='".$_POST['haslo']."';";
  9. $wynik=mysql_query($zapytanie);
  10. $ile_wierszy=mysql_num_rows($wynik);
  11. if($ile_wierszy==1)
  12. {
  13. $wiersz=mysql_fetch_assoc($wynik);
  14. session_register("USERNAME");
  15. session_register("USERID");
  16. $_SESSION['USERNAME']=$wiersz['login'];
  17. $_SESSION['USERID']=$wiersz['id'];
  18. $_SESSION['USERADMIN']=$wiersz['admin'];
  19.  
  20.  
  21. }
  22.  
  23.  
  24. //jesli nie wcisnieto przycisku wysylania
  25. else
  26. {
  27. header("Location:".$config_adres."02_naglowek_01.php");
  28. }
  29. }
  30. ?>
  31.  
  32.  
  33. <form action="<?php
  34. echo $SCRIPT_NAME
  35. ?>" method="post">
  36.  
  37. <table border=0>
  38. <tr><td width=100>login</td><td style=width:200px><input
  39. type="text" name="login"></td></tr>
  40. <tr><td width=100>haslo</td><td style=width:200px><input
  41. type="password" name="haslo"></td></tr>
  42. <tr><td width=100></td><td><input type="submit" name="submit"
  43. value="Zaloguj"></td></tr>
  44. </table>
  45. </form>
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
tehaha
aby korzystać ze zmiennych zapisanych w sesji trzeba użyć session_start()
DerekDX
Z tego co ja wiem funkcja sesion_start() musi byc na poczatku skryptu wiec zastosowałem takie coś
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Document bez tytułu</title>
  6. <link href="css/style.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. require("menu.php");
  12.  
  13. ?>
  14. <img src="css/images/tlo.jpg" style="position:absolute; top: 0px; z-index:-1;"/>
  15. <a href="index.html"><img src="css/images/logo.png" style="position: absolute; top:20px;" /></a>
  16. <ul>
  17. <img src="css/images/menu_left.png" style="float:left;">
  18. <li><a href="zaloguj.php" target="okno"></a></li>
  19. <li>
  20. <?php
  21. echo $rejestracja;
  22. ?>
  23. </li>
  24. <li>
  25. <?php
  26. echo $zaloguj;
  27. ?>
  28. </li>
  29. <li><a href="kontakt.html">Kontakt</a></li>
  30. <img src="css/images/menu_right.png" style="float:left;">
  31. </ul>
  32.  
  33. <iframe name="okno" scrolling="no" frameborder="no" style="position:absolute; top:200px;
  34. margin-left:auto;
  35. margin-right:auto;
  36. width:800px;
  37. height:300px;"></iframe>
  38.  
  39. </body>
  40. </html>


i
  1. <?php
  2. if (empty($_SESSION['USERNAME']))
  3. {
  4. $rejestracja='<a href="moje_konto.php" target="okno">Moje konto</a>';
  5. $zaloguj='<a href="wyloguj.php" target="okno">Wyloguj</a>';
  6. }
  7. else
  8. {
  9. $rejestracja='<a href="rejestracja.php" target="okno">Rejestracja</a>';
  10. $zaloguj='<a href="zaloguj.php" target="okno">Zaloguj</a>';
  11. }
  12. ?>


niestety wyskakuje następujący błąd:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\Programy\XAMPP\xampp\htdocs\strona\index.php:10) in D:\Programy\XAMPP\xampp\htdocs\strona\menu.php on line 2

Ociu
Na początku wszystkiego, czyli przed tym całym HTML w pierwszym kodzie, a nie w pliku, który includujesz.
DerekDX
Zrobiłem więc coś takiego
  1. <?php
  2. if (empty($_SESSION['USERNAME']))
  3. {
  4. $rejestracja='<a href="rejestracja.php" target="okno">Rejestracja</a>';
  5. $zaloguj='<a href="zaloguj.php" target="okno">Zaloguj</a>';
  6.  
  7. }
  8. else
  9. {
  10. $rejestracja='<a href="moje_konto.php" target="okno">Moje konto</a>';
  11. $zaloguj='<a href="wyloguj.php" target="okno">Wyloguj</a>';
  12.  
  13. }
  14. ?>
  15.  
  16.  
  17.  
  18.  
  19. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  20. <html xmlns="http://www.w3.org/1999/xhtml">
  21. <head>
  22. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  23. <title>Document bez tytułu</title>
  24. <link href="css/style.css" rel="stylesheet" type="text/css" />
  25. </head>
  26.  
  27. <body>
  28. <img src="css/images/tlo1.jpg" style="position:absolute; top: 0px; z-index:-1;"/>
  29. <a href="index.html"><img src="css/images/logo1.png" style="position: absolute; top:20px;" /></a>
  30. <ul>
  31. <img src="css/images/menu_left.png" style="float:left;">
  32. <li><a href="zaloguj.php" target="okno"></a></li>
  33. <li>
  34. <?php
  35. echo $rejestracja;
  36. ?>
  37. </li>
  38. <li>
  39. <?php
  40. echo $zaloguj;
  41. ?>
  42. </li>
  43. <li><a href="kontakt.html">Kontakt</a></li>
  44. <img src="css/images/menu_right.png" style="float:left;">
  45. </ul>
  46.  
  47. <iframe name="okno" scrolling="no" frameborder="no" style="position:absolute; top:200px;
  48. margin-left:auto;
  49. margin-right:auto;
  50. width:800px;
  51. height:300px;"></iframe>
  52.  
  53. </body>
  54. </html>


Znów jest jakiś problem z session_start();

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\Programy\XAMPP\xampp\htdocs\strona\index.php:1) in D:\Programy\XAMPP\xampp\htdocs\strona\index.php
tehaha
zapisz plik bez BOM i upewnij się że przed <?php nie ma żadnej spacji
motyl-pl
daj tak na samym początku pliku
  1. <?php
  2. ......
  3. ?>
DerekDX
próbowałem metody motyla-pl pisałem <?php zaczynajac od nowego pliku i nic nie skutkuje jak było tak jest
tehaha
a zapisałeś plik bez BOM?
DerekDX
a mógłbyś wyjaśnić o co mniej wiecej chodzi z BOM
tehaha
jeżeli chcesz się dowiedzieć więcej co to jest BOM to wpisz sobie w Google i poczytaj, istotne jednak jest to że przy niektórych serwisach są problemy z plikami z BOM i właśnie tak to się objawia jak Ty masz. W edytorze który używasz musi być gdzieś opcja "zapisz bez BOM", jeżeli używasz zwykłego notatnika to on zapisuje z BOM i musisz sobie pobrać jakiś lepszy edytor
DerekDX
dzieki zapisałem w notepadzie++ i jak ręką odjoł wielkie dzieki
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.