Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nietypowy problem session_start
AuronDiel
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Witam wszystkich! (IMG:style_emoticons/default/smile.gif)
Na wstęp napiszę, że od 8 godzin szukam w necie rozwiązania mojego problemu i nic, przeczytałem wiele tematów o kodowaniu BOM, spacji przed <?php, przeszukałem też tutejsze forum, też nic ciekawego.
Zdesperowany postanowiłem napisać mój problem tutaj.
  1. <?php
  2.  
  3. // rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
  4.  
  5. // start sesji
  6.  
  7. // połączenie z mysql
  8. mysql_connect('localhost', 'root', '')
  9. or die('Nieudane polaczenie z baza danych...');
  10.  
  11. // wybór bazy danych
  12. or die('Nie udalo sie wybrac bazy danych...');
  13.  
  14. // nagłówek
  15. echo '<h2>Logowanie</h2>';
  16.  
  17. // sprawdzamy czy user jest już zalogowany
  18. if($_SESSION['logged']) echo 'Już jestes zalogowany!';
  19. else
  20. {
  21. // tworzymy prosty formularz
  22. echo '<form action="login.php" method="POST">
  23. Nick: <br />
  24. <input type="text" name="nick"><br />
  25. Hasło: <br />
  26. <input type="password" name="pass"><br />
  27. <input type="submit" name="ok" value="Zaloguj">
  28. </form>';
  29.  
  30. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  31. if(isset($_POST['ok']))
  32. {
  33. $nick = $_POST['nick'];
  34. $pass = $_POST['pass'];
  35.  
  36. // sprawdzamy czy wszystkie dane zostały podane
  37. if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
  38. // jeśli tak...
  39. else
  40. {
  41. // filtrujemy dane
  42.  
  43. // kodujemy hasło
  44. $pass = md5($pass);
  45.  
  46. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  47. $result = mysql_query("SELECT * FROM users WHERE nick='$nick' AND pass='$pass'");
  48.  
  49. // jeśli nie istnieje
  50. if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
  51. // jeśli tak...
  52. else
  53. {
  54. // dodajemy wynik zapytania do tablicy
  55. $row = mysql_fetch_array($result);
  56.  
  57. // ustawianie sesji że użytkownik jest zalogowany
  58. $_SESSION['logged'] = true;
  59.  
  60. // dodawanie do sesji id użytkownika, login oraz datę rejestracji
  61. $_SESSION['id'] = $row['id'];
  62. $_SESSION['nick'] = $row['nick'];
  63. $_SESSION['data_rejestracji'] = $row['data_rejestracji'];
  64.  
  65. // wyświetlenie komunikatu oznaczającego poprawne logowanie
  66. echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
  67. }
  68. }
  69. }
  70. }
  71.  
  72. // rozłączenie z bazą danych
  73.  
  74. // koniec buforowania
  75. ?>

O to mój skrypt logowania który zamieszczam w indexie.
  1. <title>xx</title>
  2. <link href="css/dropdown/dropdown.css" media="screen" rel="stylesheet" type="text/css" />
  3. <link href="css/dropdown/themes/mtv.com/default.ultimate.css" media="screen" rel="stylesheet" type="text/css" />
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  5. <link rel="Stylesheet" type="text/css" href="style.css" />
  6. <link rel="Shortcut icon" href="images/ico.ico" />
  7. </head>
  8. <body background="images/body_bg.gif" bgproperties="fixed" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  9. <div id="top">
  10. <div id="NAGLOWEK">
  11. <div id="menuu">
  12. <ul id="nav" class="dropdown dropdown-horizontal">
  13. </li>
  14. <li id="n-home"><span class="dir">Rejestracja</span>
  15.  
  16. </li>
  17. </li>
  18. <li id="n-home"><span class="dir">x</span>
  19.  
  20. </li>
  21. </li>
  22. <li id="n-home"><span class="dir">Zaloguj się</span>
  23.  
  24. </li>
  25. </li>
  26. <li id="n-home"><span class="dir">Kontakt</span>
  27.  
  28. </li>
  29. </ul>
  30.  
  31.  
  32.  
  33.  
  34. </div>
  35.  
  36.  
  37. <br><br><br>
  38. <a href="index2.html" border="0"><img src="images/xx.png" ></a>
  39. <br>
  40. </div>
  41. <div id="MENU"><img src="images/wybierz.png" ></div>
  42. <div id="INFORMACJE"></div>
  43. <div id="TRESC">
  44. <br><br>
  45. <font size="5" color="orange">Logowanie</font><br>
  46. <hr size="1" Color="gray" >
  47.  
  48. <tr>
  49. <td bgcolor="#202020" border="0" id="kontakttabela">
  50. <br><?php
  51. require_once('re/login.php');
  52. ?>
  53.  
  54. <br><br><br>
  55. </td>
  56. </tr>
  57. <br><br><br><br>
  58.  
  59.  
  60. </div>
  61. <div id="STOPKA">
  62. <font color="white" face="Verdana" id="trescstopki">
  63. <br>
  64. @ xxx
  65. </font>
  66. </div>
  67. </body>
  68. </html>


A otrzymany błąd to oczywiście:
,,Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent"
Chyba dosłonie próbowałem wszystkiego.. jedynie co ciekawego przykuło moją uwage to, że kiedy wchodzę w plik login.php to nie wypisuje mi błedu, dopiero kiedy go gdzieś wrzucam to nie działa.. kompletnie nie rozumiem

Prosze was bardzo o pomoc

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Widzę, że nie rozumiesz. Session_start() ma być absolutnie na samym początku tego co wyświetlasz, przed jakimkolwiek html'em, a nie że na początku pliku w, którym jest. Ty Wysyłasz najpierw 55 linijek htmla a potem załączasz plik gdzie odpalasz session_start(), czyli session_start u Ciebie nie jest na samym początku a wmieszany w html, dlatego otrzymujesz błąd. Czyli w tym przypadku, który tu opisałeś rozwiązaniem będzie usunięcie session_start() z pliku login.php i umieszczenie go przed treścią html w pliku index, czyli

  1. <?php session_start(); ?>
  2. <html>
  3. <head>
  4. <title>xx</title>
  5. <link href="css/dropdown/dropdown.css" media="screen" rel="stylesheet" type="text/css" />
  6. <link href="css/dropdown/themes/mtv.com/default.ultimate.css" media="screen" rel="stylesheet" type="text/css" />
  7. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">


Przed session_start() nie może być kompletnie nic, nawet spacja, dodatkowo upewnij się, że plik zapisałeś bez BOM bo to BOM to też znacznik zapisywany na początku pliku.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 03:03