Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: header() zjada mi ciastka
Forum PHP.pl > Forum > PHP
invx
  1. <?php
  2. function zalogowany ( $sesja=0, $login_php=0, $id=)
  3. {
  4. echo"<span class="zw2">Witaj <b>".$sesja."</b> na stronie !<br>
  5.  <a href="$login_php/edycja_profil.php?mode=zobacz_profil&id=$id">Profil</a><br>
  6.  <a href="$login_php/logowanie.php?mode=wyloguj">wyloguj</a><br>";
  7.  if( isset( $_COOKIE['auto'] ) )
  8.  {
  9.  echo"
  10.  <a href="$login_php/logowanie.php?mode=usun_ciasteczka">Usuń ciasteczka</a></span>
  11.  ";
  12.  }
  13.  else
  14.  {
  15.  echo"
  16.  <a href="$login_php/logowanie.php?mode=zapamietaj">Zapamietaj mnie</a></span>
  17.  ";
  18.  }
  19. }
  20.  
  21. if ( $_SESSION['log'] )
  22. {
  23. echo zalogowany ($_SESSION['log'],$login_php,$id);
  24. }
  25. elseif ( $_POST['mode'] == 'spr' )
  26. {
  27. if ( !isset( $_POST['login'] ) )
  28. {
  29. echo"Nie masz dostępu do tego modułu";
  30. }
  31.  
  32. else
  33. {
  34.  
  35.  
  36. if ( $_POST['submit'] )
  37. {
  38. $wyszukaj = mysql_query("SELECT * FROM users WHERE login='$_POST[login]' AND haslo='$_POST[pass]' LIMIT 1");
  39. $wynik = mysql_num_rows($wyszukaj);
  40. while ( $wynik2 = mysql_fetch_array($wyszukaj) )
  41. {
  42. $_SESSION['flaga'] = $wynik2['flaga'];
  43. $_SESSION['id'] = $wynik2['id'];
  44. $_SESSION['haslo'] = $wynik2['haslo'];
  45. $_SESSION['ost_log'] = $wynik2['ostatnie_logowanie'];
  46. }
  47.  
  48. if ( empty ( $_POST['login'] ) )
  49. {
  50. echo "<span class='zw3'>nie podano loginu<br></span>";
  51. $lo=1;
  52. }
  53.  
  54. if ( empty ( $_POST['pass'] ) )
  55. {
  56. echo "<span class='zw3'>nie podano hasla<br></span>";
  57. }
  58.  
  59. #poprawny login i haslo, utworzenie sesji z loginem usera
  60. elseif ( $wynik == 1 )
  61. {
  62. $_SESSION['log'] = $_POST['login'];
  63.  
  64. $data = date("Y-m-d H:i:s");
  65.  
  66. /*zmiana daty ostatniego logowania*/
  67. $sql0 = "UPDATE users SET ostatnie_logowanie="$data" WHERE id=$_SESSION[id]";
  68. $wykonaj0 = mysql_query ( $sql0 );
  69. /**/
  70.  
  71. if( !empty( $_POST['auto'] ) )
  72. {
  73. setcookie( "auto", "$_SESSION[log]", time()+86400*30 );
  74. }
  75. }
  76.  
  77. elseif ( isset ( $_POST['login'] ) && isset ( $_POST['pass'] ) && $lo != 1 )
  78. {
  79. echo "<span class="zw3">Niepoprawne dane<br></span>";
  80. $spr=1;
  81. }
  82.  
  83. if ( empty ( $_POST['login'] ) || empty ( $_POST['pass'] ) || $spr == 1 )
  84. echo"<span class="zw2"><a href="$login_php/logowanie.php?mode=add_user">Spróbuj ponownie</a><br>nie masz jeszcze konta?? <a href="$login_php/logowanie.php?mode=rejestruj">zarejestruj sie</a></span>";
  85.  
  86. }
  87.  
  88. if ( $_SESSION['log'] )
  89. {
  90. header("Location:$_SERVER[PHP_SELF]");
  91. }
  92.  
  93. }
  94. }
  95.  
  96. elseif( isset( $_COOKIE['auto'] ) )
  97. {
  98. $wyszukaj = mysql_query( "SELECT * FROM users WHERE login='$_COOKIE[auto]'" );
  99. $wynik = mysql_num_rows($wyszukaj);
  100. if( $wynik ==)
  101. {
  102. while ( $wynik2 = mysql_fetch_array($wyszukaj) )
  103. $_SESSION['flaga'] = $wynik2['flaga'];
  104. $_SESSION['id'] = $wynik2['id'];
  105. $_SESSION['haslo'] = $wynik2['haslo'];
  106. $_SESSION['ost_log'] = $wynik2['ostatnie_logowanie'];
  107. }
  108.  
  109. $_SESSION['log'] = $_COOKIE['auto'];
  110. $data = date("Y-m-d H:i:s");
  111.  
  112. /*zmiana daty ostatniego logowania*/
  113. $sql0 = "UPDATE users SET ostatnie_logowanie='$data' WHERE id=$_SESSION[id]";
  114. $wykonaj0 = mysql_query ( $sql0 );
  115. /**/
  116. echo zalogowany ($_SESSION['log'],$login_php,$id);
  117. }
  118. else
  119. {
  120. echo"ERROR !";
  121. }
  122. }
  123.  
  124. else
  125. {
  126. <script type="text/javascript" src="js/caps.js">
  127.  
  128. </script>
  129.  
  130. <form action="$_SERVER[PHP_SELF]" method="POST">
  131. <div id="warning" style="display: none;"><span class="zw2B">Masz włączony klawisz Caps lock !</span></div>
  132. <span class="zw3">Login:</span>
  133. <input type="text" size="12" name="login">
  134. <span class="zw3">Hasło:</span>
  135. <input type="password" size="12" name="pass" onkeypress="capsDetect(arguments[0]);">
  136. <span class="zw3">Zapamiętaj mnie:</span>
  137. <input name="auto" type="checkbox" value="on">
  138. <input type="hidden" name="mode" value="spr">
  139. <input class="kolorowy" type="submit" name="submit" value="Zaloguj">
  140. </form>
  141. <span class="zw3"><a href="$login_php/logowanie.php?mode=rejestruj">zarejestruj sie</a>&nbsp;|&nbsp;</span>
  142. <span class="zw3"><a href="$login_php/logowanie.php?mode=uzyj_wsk">zapomnialem hasla</a></span>
  143. ";
  144. }
  145. if ( $_GET['mode'] == 'wyloguj' )
  146. {
  147. unset($_SESSION['log']);
  148. unset($_SESSION['id']);
  149. setcookie( "auto", "$_SESSION[log]", time()-86400 );
  150. header("Location:../index.php");
  151. }
  152. if ( $_GET['mode'] == 'usun_ciasteczka' )
  153. {
  154. setcookie( "auto", "$_SESSION[log]", time()-86400 );
  155. header("Location:../index.php");
  156. }
  157. /////////////////////////////////////////////////////////////////////
  158. if ( $_GET['mode'] == 'zapamietaj' )
  159. {
  160. setcookie( "auto", "$_SESSION[log]", time()+86400*30 );
  161. //echo"aa ."$_COOKIE[auto]."";
  162. header("Location:../index.php");
  163. }
  164.  
  165. ?>


to jest caly plik logowania usera. Wszytsko pieknie hula, z wyjatkiem ostatniego if'a czyli "funkcji" zapamietaj. Polega to na tym, ze jesli jest user zalogowany, a nie ma ciasteczka, to wyswietla sie link (poczatek w/w kodu), gdzie mozna sobie kliknac odniechcenia tongue.gif i ma sie utworzyc ciasteczko. Ciasteczko sie owszem tworzy, bo jak wykomentuje header()'a (ostatni if), to mi echo wyswietla ciacho, ale przy niewykomentowanym header(), strona sie jakgdyby odswieza ... a ciacha juz nie ma ... jak by je ktos zjadl po drodze biggrin.gif (azeby sie zdrowo strul). Kod przejrzalem i niby nie ma nic co by mi to ciastko usuwalo ... a jednak znika.
strife
U mnie przy takim kodzie na końcu
  1. <?php
  2.  
  3. if ( $_GET['mode'] == 'zapamietaj' )
  4. {
  5.     setcookie( "auto", "$_SESSION[log]", time()+86400*30 );
  6.     //echo"aa ."$_COOKIE[auto]."";
  7.     //header("Location:../index.php");
  8. }
  9.  
  10. ?>

Wyświetla błąd
Cytat
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\apache\httpd\html\dev\logowanie.php:10) in c:\usr\apache\httpd\html\dev\logowanie.php on line 166


Co za tym idzie nie tworzy mi ciastka. Ustaw na początku skryptu ob_start();
Dodam jeszcze, że ten błąd się przewija na forum setki razy, nie lepiej było by najpierw poszukać niż pisać znowu to samo chyba że nie zrozumiałem Twojego problemu ? blink.gif

Pozdrawiam!
invx
funkcje ob_start() i end_ob_fusch(), mam dodane, tylko w pliku index.php, a w/w plik jest wlasnie do niego inckudowany. Problem jest wiec nie w tym ...
qbuz
a co to za funkcja end_ob_fusch ?

jestes pewien, ze w tym index'ie ob_start() jest na samym poczatku? tzn. ze przed tym nie jest NIC wysylane?

na samym koncu polecalbym natomiast ob_end_flush zamiast tajemniczej end_ob_fusch (to pewnie cos z php6)
invx
tak na samym poczatku jest ob_start, i na samym koncy ob_end_flusch (literowki przy nazwie wyzej popelnilem tongue.gif). Zreszta wszytstko inne dziala, erroru nie wyswietla, w czasie logowania ciastko tworzy i nic go nie zjada ... a to ma w sobie jakies feromony chyba ...
ennics
myślę że to Ci pomoże

http://forum.php.pl/index.php?showtopic=39258
invx
a co ma tamten temat do tego tongue.gif
tam usuwam ciastko, tu chce je tworzyc. Usuwanie sie uaktywania przy $_GET[mode] == usun, a ja ja wysylam na zapamietaj smile.gif
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.