Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z sesją
Forum PHP.pl > Forum > PHP
jessica99
czemu gdy wpisze session_start() wywala mi błąd: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\sklep\include\config.inc.php:62) in C:\xampp\htdocs\sklep\include\app_top.php on line 5
natomiast gdy nie ma tego w app_top.php nie ma żadnych błędów. Czy nie poprawnie wywołuje tą funkcję?
Dodam iż jest to przy plikach przetwarzania zamówień w sklepie internetowym.
app_top.php
  1. <?php
  2. // uruchomienie mechanizmu buforowania danych
  3. // uaktywnienie sesji
  4. // włączenie plików narzędziowych
  5. require_once 'config.inc.php';
  6. require_once 'tss_error_handler.php';
  7. require_once 'setup_smarty.php';
  8. require_once 'database.php';  
  9. // powołanie globalnego obiektu klasy DbManager  
  10. $gDbManager = new DbManager(MYSQL_CONNECTION_STRING);
  11. ?>

test.php
  1. <?php
  2. require_once 'include/config.inc.php';
  3. require_once SITE_ROOT . '/include/app_top.php';
  4. require_once COMMERCELIB_DIR . 'commerce_lib.all.php';
  5. require_once SITE_ROOT . '/business_objects/bo_customer.php';
  6. require_once SITE_ROOT . '/business_objects/bo_order_manager.php';
  7. $order_id = 1;
  8. $customer_id = 1;
  9. $bo_customer = new BoCustomer();
  10. $order_manager = new BoOrderManager();
  11. $customer_data = $bo_customer->GetCustomer($customer_id);
  12. try
  13. {
  14. $customer = new Customer($customer_data);
  15. }
  16. catch(Exception $e)
  17. {
  18. echo'Wyjątek: ' . $e->getMessage();
  19. }
  20. echo "Znaleziono klienta. Adres:<br/>";
  21. echo "<pre>";
  22. echo $customer->mAddressAsString;
  23. echo "</pre>";
  24. echo "Numer karty kredytowej klienta: " .
  25.  $customer->mCreditCard->GetCardNumberX() . "<br/>";
  26. $order_command = $order_manager->GetOrderDetails($order_id);
  27. try
  28. {
  29. $order_object = new OrderDetails($order_command);
  30. }
  31. catch(Exception $e)
  32. {
  33. Echo 'Wyjątek :' . $e->getMessage() ;
  34. }
  35. echo "<br/>Znaleziono zamówienie. Szczegóły:<br/>";
  36. echo "<pre>";
  37. echo $order_object->mListAsString;
  38. echo "</pre>";
  39. echo "<br/>";
  40. echo "Nazwy zamówionych produktów:<br/>";
  41. for ($i = 0; $i < count($order_object->mList); $i++)
  42. echo $order_object->mList[$i]->mProductName."<br/>";
  43. ?>

proszę o szybką pomoc snitch.gif
kossa
session_start(); musi być wywoływane zawsze na samym początku, nic przed wysłaniem sesji do preglądarki nie może być a Ty masz jakiś kod wcześniej w tym includowanie pliku...

Łukasz
jessica99
Natomiast mój plik index.php wygląda następująco:
  1. <?php
  2. // czy dostęp do strony odbywa się poprzez połączenie HTTPS?
  3. if ( !isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )
  4. $is_https = false;
  5. else
  6. $is_https = true;
  7. // czy odwiedzamy stronę z poufnymi informacjami?
  8. if (isset($_GET['RegisterCustomer']) ||
  9. isset($_GET['ChangeDetails']) ||
  10. isset($_GET['AddOrChangeAddress']) ||
  11. isset($_GET['AddOrChangeCreditCard']) ||
  12. isset($_POST['Login']))
  13. $is_sensitive_page = true;
  14. else
  15. $is_sensitive_page = false;
  16. // gdy odwiedzasz strony z poufnymi informacjami, korzystaj z HTTPS
  17. if ($is_sensitive_page && $is_https==false)
  18.  {
  19.  header ('Location: https://' . $_SERVER['HTTP_HOST'] .
  20.  $_SERVER['REQUEST_URI']);
  21.  exit();
  22.  }
  23. // nie korzystaj z HTTPS jeśli łączysz się ze zwykłymi stronami
  24. if (!$is_sensitive_page && $is_https == true)
  25.  {
  26.  header ('Location: http://' . $_SERVER['HTTP_HOST'] .
  27.  $_SERVER['REQUEST_URI']);
  28.  exit();
  29.  }
  30. // Załadowanie biblioteki Smarty i plików konfiguracyjnych
  31. require_once 'include/app_top.php';
  32. /* jeśli nie jest przeglądana strona produktu, odsyłacz do bieżacej strony 
  33.    zostanie zapisany w zmiennej sesji PageLink; zostanie on wykorzystany do 
  34.    utworzenia łacza Kontynuacja zakupów, umieszczanego na stronach 
  35.    przedstawiających szczegółowe informacje o produktach */
  36. if (!isset($_GET['ProductID']) && !isset($_GET['CartAction']))
  37. $_SESSION['PageLink'] = "http://" . $_SERVER['SERVER_NAME'] .
  38. ":" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
  39. // Załadowanie kodu warstwy logiki
  40. require_once SITE_ROOT.'/business_objects/bo_catalog.php';  
  41. require_once SITE_ROOT.'/business_objects/bo_shopping_cart.php';
  42. require_once SITE_ROOT.'/business_objects/bo_customer.php';
  43. // Załadowanie pliku szablonu Smarty
  44. $page = new Page();
  45. $pageContentsCell = "first_page_contents.tpl";
  46. $categoriesCell = "blank.tpl";  
  47. // jeśli jest przeglądany dział, trzeba pobrać szczegółowe informacje na jego tema
    t
  48. if (isset($_GET['DepartmentID']))  
  49. {  
  50. $pageContentsCell = "department.tpl";  
  51. $categoriesCell = "categories_list.tpl";  
  52. }  
  53. if (isset($_GET['Search'])) 
  54. $pageContentsCell="search_results.tpl";  
  55. if (isset($_GET['ProductID']))
  56. $pageContentsCell = "product.tpl";
  57. if (isset($_GET['CartAction']))
  58. {
  59. $pageContentsCell = "shopping_cart.tpl";
  60. $cartSummaryCell = "blank.tpl";
  61. }
  62. else
  63. $cartSummaryCell="cart_summary.tpl";
  64. // funkcjonalność związana z kontami użytkowników
  65. $bo_customer = new BoCustomer();
  66. if ($bo_customer->IsAuthenticated())
  67. $customerLoginOrLogged="customer_logged.tpl";
  68. else
  69. $customerLoginOrLogged="customer_login.tpl";
  70. if (isset($_GET['RegisterCustomer']) || isset($_GET['ChangeDetails']))
  71. $pageContentsCell="customer_details.tpl";
  72. if (isset($_GET['AddOrChangeAddress']))
  73. $pageContentsCell="customer_address.tpl";
  74. if (isset($_GET['AddOrChangeCreditCard']))
  75. $pageContentsCell="customer_credit_card.tpl";
  76. $page->assign("customerLoginOrLogged",$customerLoginOrLogged);
  77. $page->assign("cartSummaryCell",$cartSummaryCell);
  78. $page->assign("pageContentsCell", $pageContentsCell);
  79. $page->assign("categoriesCell", $categoriesCell);
  80. $page->display('index.tpl');
  81. // Załadowanie kodu app_bottom odpowiedzialnego za zakończenie połączenia z bazą d
    anych
  82. require_once 'include/app_bottom.php';
  83. ?>




czy mógłby mi ktoś pomóc i wskazać gdzie powinnam zaczynać sesję, ponieważ próbowałam różnych modyfikacji i zazwyczaj wywalało mi przez to błędy, np. kiedy ob_start() było przed rozpoczęciem sesji. Session_start lepiej zeby było w index.php czy może być w app_top.php?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
kossa
jeżeli sesja musi być wywołana na samym początku nim cokolwiek wyśle się do przeglądarki a add_top.php wywołujsze gdzieś w index "w środku" require_once 'include/app_top.php'; to sessja musi być wyłana w index - logiczne

Łukasz
jessica99
Dzięki snitch.gif podziałało
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.