Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd sesji...
Forum PHP.pl > Forum > Przedszkole
primo
witam


przy próbie wywołania startu sesji wyskakuje mi błąd:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\wamp\www\Divi-Deo\index.php:8) in c:\wamp\www\Divi-Deo\dodatkowe\administracyjne.php on line 32

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\wamp\www\Divi-Deo\index.php:8) in c:\wamp\www\Divi-Deo\dodatkowe\administracyjne.php on line 32

a linia 32 zawiera:

  1. <?php
  2. ?>
ARJ
było, poszukaj. żadne dane niemogą być wysłane przed sejsją.
Kuziu
lub w pierwszej linni kodu włącz buforowanie wyjścia ...
  1. <?php
  2.  
  3.  
  4. ?>
sobstel

.
primo
no faktycznie zachowałem się jak............. sorki.


mam taką prśbę, aby zweryfikować poniższy kod pod kątem poprawności i bezpieczeństwa oraz aktualnych standarów, co możnaby zmienić i co poprawić questionmark.gif Dodam tylko że działa poprawnie. Moja prośba jest podyktowana tym, że nie chcę już napisać czegoś co tylko działa, ale wskoczyć na wyższy poziom i optymalizować.

  1. <?php
  2. require_once(&#092;"funkcje/BD.class.php\");
  3. $user_tablename = 'user';
  4. $form_dodaj_film = &#092;"./form_dodaj_film.htm\";
  5. $form_dodaj_news = &#092;"./form_dodaj_news.htm\";
  6. $userid = $_POST['userid'];
  7. $userpassword = $_POST['userpassword'];
  8.  
  9.  
  10.  
  11. function autoryzacja($userid, $userpassword) {
  12.  global $bd, $user_tablename;
  13.  
  14.  $bd = new BD;
  15.  
  16. if (!$bd->otworz()) {
  17. die ($bd->blad());
  18. }
  19.  
  20.  
  21. if (!$bd->zapytaj(&#092;"SELECT username FROM $user_tablename WHERE userid = '$userid' AND userpassword = password('$userpassword')\")) {
  22. die ($db->blad());
  23. }
  24.  
  25. if($row = $bd->pobierzTablice()){
  26. return $row[0];
  27. return 0;
  28. }
  29. }
  30.  
  31.  
  32. if(!isset($_POST['userid'])) {
  33.  exit;
  34. }
  35. else {
  36.  $_SESSION['userid'];
  37.  $_SESSION ['userpassword'];
  38.  $username = autoryzacja($userid, $userpassword);
  39.  if(!$username) {
  40. session_unregister(&#092;"userid\");
  41. session_unregister(&#092;"userpassword\");
  42. echo &#092;"Autoryzacja nieudana. \" .
  43.  &#092;"Musisz podać poprawny identyfikator użytkownika oraz hasło. \" .
  44.  &#092;"Jeszcze raz spóbuj się zalogować.<BR>n\";
  45.  
  46.  }
  47.  else
  48. echo &#092;"<A HREF=\"$form_dodaj_film\">Dodaj nowy film</A>\";
  49. echo &#092;"<A HREF=\"$form_dodaj_news\">Dodaj nowy news</A>\";
  50. }
  51. ?>
czachor
jeśli chodzi o optymalizację... Nie ma sensu przepisywać z $_POST do "zwykłych" zmiennych, bo zajmuje to niepotrzebnie pamięć. Możesz odwoływać się bezpośrednio do wartości z $_POST.
Używaj apostrofów (''), jeśli nie musisz cudzysłowów (""):
  1. <?php echo '<A HREF=\"' . $form_dodaj_news . '\">Dodaj nowy news</A>'; ?>
Parser sprawdza wszystko w " " pod kątem zawierania zmiennych, funkcji itd. To, co jest w apostrofach, zostawia tak jak jest.
Oczywiście nie są to żadne błędy, super optymalizacja też nie, ale zawsze coś przy dużych skryptach winksmiley.jpg
sobstel
trzymaj sie jednej konwencji. jesli uzywasz $_SESSION to zmienne sesyjne wyrejestrowuj przez unset(). jesli uzywasz session_register to przez session_unregister().
primo
a takie pytanko z innej beczki:

zaloguje się i wywołam formularz poprzez

  1. <?php
  2.  
  3. echo '<a href=\"index.php?op=39\"><strong>Dodaj Nowy Film</strong></a>';
  4.  
  5. ?>


następnie ten formularz odwołuje się do skryptu weryfikującego wprowadzone dane i jęśli jest wszysko w porządku to wyskakuje powiadomienie że wprowadzono dane takie i takie - ale jesli dodam w tym potwierdzeniu aby wypisal nick logujacy czyli userid - to nic nie pokazuje. Nie wiem czym to jest spowodowane, bo przecież tak mnie zweryfikowało i sesja powinna pamietac nick i haslo ! No chyba ze sie myle questionmark.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.