Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z ob_start i ob_end_flush();
Kuscik
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 19.12.2012

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


Witam

Zrobiłem stronę która wygląda mniej więcej tak

index.php
  1. //ob_start();
  2. include_once 'session.php';
  3. include_once 'navi/header.php';
  4. include_once 'navi/login.php';
  5. include_once 'navi/menu.php';
  6. include_once 'navi/search.php';
  7. include_once 'navi/logo.php';
  8. include_once 'navi/banner.php';
  9. include_once 'navi/contents.php';
  10. include_once 'navi/footer.php';
  11. //ob_end_flush();


login.php w uproszczeniu wygląda tak
  1. <JAKIS KOD>
  2. <div class="loginform" id="loginform">
  3.  
  4. <?php
  5. if (isset($_SESSION[id_u])) {
  6. echo 'jestes zalogowany';
  7. } else {
  8. if (isset($_POST['email'])) {
  9. $email = $_POST['email'];
  10. $email = strip_tags($email);
  11. }
  12. if (isset($_POST['pass'])) {
  13. $pass = $_POST['pass'];
  14. $pass = strip_tags($pass);
  15. }
  16. if (isset($_POST['pamietaj'])) {
  17. $pamietaj = $_POST['pamietaj'];
  18. $pamietaj = strip_tags($pamietaj);
  19. }
  20.  
  21. if (isset($email) && isset($pass) && strlen($email) > 0 && strlen($pass) > 0) {
  22. $isSprawdzLogowanieOK = sprawdzLogowanie($email, $pass);
  23. }
  24. if ($isSprawdzLogowanieOK) {
  25.  
  26. $id = getUserIdByEmail($email_u);
  27. $_SESSION['id_u'] = $id;
  28.  
  29. if ($pamietaj == 'tak') {
  30. $hash = 'xxx';
  31. setcookie('pamietaj', $id . ': ' . $hash, time() + 60 * 60 * 24 * 2);
  32. }
  33. header(' Location: index.php');
  34. } else {
  35. ?>
  36.  
  37. <form class="loguj" name="login" action="" method="POST">
  38. <p class="login">Email</p>
  39. <input name="email" class="login" id="login" type="text"/><br/>
  40. <p class="pass">Hasło</p>
  41. <input name="pass" class="pass" id="pass" type="password" /><br/>
  42. <input type="checkbox" name="pamietaj" class="pamietaj" value="tak" /></p>
  43. <p>Pamiętaj</p><br/>
  44.  
  45. <input name="submit" class="submit" id="submit" value="Loguj" type="submit"/>
  46. </form>
  47. <?php
  48. }
  49. }
  50. ?>
  51. </div>
  52. <JAKIS KOD>


Chodzi o to że jeśli przy logowaniu użytkownik zaznaczy checkbox to po zalogowaniu jest tworzone cookie a następnie strona jest przeładowywana przez header aby wyświetli ze jesteśmy już zalogowani , jednak przed setcookie oraz przez header było już coś wyświetlone na stronie wiec postanowiłem użyć ob_start(); i ob_end_flush();
wkleiłem go w indeksie tak jak jest teraz tylko nie zakomentowany i wszystko chodziło dobrze, ciastko się dodawało strona się prze kierunkowała, dodawały się i usuwały inne ciastka których już tu nie wymieniam, strona się przeładowywała po zalogowaniu, wszystko działało ok... zacząłem zajmować się tym co ma być dokładnie wyświetlone zamiast tekstu "jesteś zalogowany", chciałem się zalogować i sprawdzić czy wszystko ok... i nagle całkiem przestało działać logowanie, po wpisaniu poprawnego hasła strona nadal ładuje się z formularzem logowania, a cookie się nie ustawia.. gdy za komentowałem ob_start(); i ob_end_flush(); wszystko wróciło do normy tzn logowanie działa ale oczywiście nie działa dodawanie ciastka i przeładowanie strony.
Co się mogło stać dlaczego wcześniej wszystko działało dobrze a nagle przestało działać mimo że tylko zmieniłem wyświetlany tekst po zalogowaniu.
Czy może źle wstawiam ob_start(); i ob_end_flush(); może trzeba to wstawić w inne miejsca żeby dobrze działało?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


toś źle przeczytał mój post ;p... myślałem, że za dużo napisałem, nie lubię pisać w prost gdyż wtedy Ci którym próbuję pomagać szybko zapominają... a jeśli mam rację to sobie wyrobisz fajną spostrzegawczość przy pyrzewijaniu kodu ;p... lubknij do tego if'a co przytoczyłem i zwróć uwagę, że "id_u" nie jest wzięty w apostrofy... znając PHP na tyle ile pamiętam to tak jakkbyś zrobił if (isset($_SESSION['null'])) jeśli tej zmienneji nie masz zdefiniowanej (ewentualnie z dużych liter ;p)... a jak to nagle działa po zmianie tekstu to nie wiem ;p - może po prostu zmieniasz plik na starszą wersję ;p (IMG:style_emoticons/default/questionmark.gif) i jest wtedy inny if...
.....
ps....
trochę wypiłem i o kontroli wejsji wspomniałem przy okazji... ale jak lukniesz co i jak to nie pożałujesz ;p

Ten post edytował zegarek84 26.02.2013, 00:19:04
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: 10.10.2025 - 02:21