Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: blad przy sesji
Forum PHP.pl > Forum > Przedszkole
brekmar
Mam taka funkcje
  1. session_start();
  2.  
  3. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  4.  
  5. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  6.  
  7. if( !isset( $_SESSION[ 'user' ] ) )
  8. {
  9.  if( isset( $_POST[ 'loginGo' ] ) )
  10.  {
  11. $dane = mysql_query( 'SELECT id,
  12.  login,
  13.  imie,
  14.  nazwisko,
  15.  email
  16. FROM users
  17. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  18. password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
  19.  
  20. $userData = mysql_fetch_assoc( $dane );
  21. if( $userData[ 'id' ] > 0 )
  22. {
  23.  $_SESSION[ 'user' ] = $userData;
  24.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  25. }
  26. else
  27. {
  28.  echo 'Podałeś złe hasło lub login...';
  29. }
  30.  }
  31.  else
  32.  {
  33. ?>
  34. <form action=\"\" method=\"post\">
  35.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  36.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  37.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  38. </form>
  39. <?php
  40.  }
  41. }
  42. else
  43. {
  44.  echo 'Jesteś zalogowany!<br/>';
  45.  print_r( $_SESSION[ 'user' ] );
  46. }


No i wyskakuje taki blad:


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /webs/1/fbi.cz/p/poleceni/1.php:9) in /webs/1/fbi.cz/p/poleceni/1.php on line 11

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /webs/1/fbi.cz/p/poleceni/1.php:9) in /webs/1/fbi.cz/p/poleceni/1.php on line 11

No i co z tym teraz zrobic. Pomorzcie.
Diwi
wstaw na początku skryptu linijke po znaczniku <?php
Kod
ob_start();


i na końcu skryptu linkjke przed znacznikiem ?>

Kod
ob_end_flush();


Powinno nie pokazywać błędu smile.gif

Pozdrawiam
brekmar
No zrobilem tak jak napisales i mam taki skrypt
  1. ob_start();
  2. session_start();
  3.  
  4. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  5.  
  6. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  7.  
  8. if( !isset( $_SESSION[ 'user' ] ) )
  9. {
  10.  if( isset( $_POST[ 'loginGo' ] ) )
  11.  {
  12. $dane = mysql_query( 'SELECT id,
  13.  login,
  14.  imie,
  15.  nazwisko,
  16.  email
  17. FROM users
  18. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  19. password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
  20.  
  21. $userData = mysql_fetch_assoc( $dane );
  22. if( $userData[ 'id' ] > 0 )
  23. {
  24.  $_SESSION[ 'user' ] = $userData;
  25.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  26. }
  27. else
  28. {
  29.  echo 'Podałeś złe hasło lub login...';
  30. }
  31.  }
  32.  else
  33.  {
  34. ?>
  35. <form action=\"\" method=\"post\">
  36.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  37.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  38.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  39. </form>
  40. <?php
  41.  }
  42. }
  43. else
  44. {
  45.  echo 'Jesteś zalogowany!<br/>';
  46.  print_r( $_SESSION[ 'user' ] );
  47. }


No i juz tego bledu nie wyswietla, ale przed formularzem wyswietla

0 ) { $_SESSION[ 'user' ] = $userData; header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); } else { echo 'Podałeś złe hasło lub login...'; } } else { ?>

I jak wpisze jakies dane to nic sie nie dzieje nie loguje mnie. Co teraz sad.gif
Diwi
Wrzuć na samym początku skryptu <?php

Pozdrawiam
brekmar
Kurde znowu ten blad sie wyswietlil z "cookies" tylko ze teraz jest blad linijke nizej bylo "on line 11" a teraz "on line 12" czyli ten ob_start(); nic nie pomogl, tylko zwolnil ladowanie sie strony.
Levabul
bo
  1. <?php ob_start (); ?>
należy wrzucić zaraz przed przed !DOCTYPE(a jeżeli nie masz !DOCTYPE to zaraz przed <html>)
brekmar
  1. ob_start();
  2. <html>
  3.  
  4. <head>
  5. <title></title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?php
  11.  
  12.  
  13. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  14.  
  15. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  16.  
  17. if( !isset( $_SESSION[ 'user' ] ) )
  18. {
  19.  if( isset( $_POST[ 'loginGo' ] ) )
  20.  {
  21. $dane = mysql_query( 'SELECT id,
  22.  login,
  23.  imie,
  24.  nazwisko,
  25.  email
  26. FROM users
  27. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  28. password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
  29.  
  30. $userData = mysql_fetch_assoc( $dane );
  31. if( $userData[ 'id' ] > 0 )
  32. {
  33.  $_SESSION[ 'user' ] = $userData;
  34.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  35. }
  36. else
  37. {
  38.  echo 'Podałeś złe hasło lub login...';
  39. }
  40.  }
  41.  else
  42.  {
  43. ?>
  44. <form action=\"\" method=\"post\">
  45.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  46.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  47.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  48. </form>
  49. <?php
  50.  }
  51. }
  52. else
  53. {
  54.  echo 'Jesteś zalogowany!<br/>';
  55.  print_r( $_SESSION[ 'user' ] );
  56. }
  57.  
  58.  
  59.  
  60. ?>
  61.  
  62. </body>
  63.  
  64. </html>
  65. ob_end_flush();


Napisalem to tak, dobrze czy nie, bo nie dosc ze nie dziala to jeszcze laduje sie szmat czasu.
Levabul
Z szacunkiem POMYŚL TROCH exclamation.gif! Skrypt php musi być pomiędzy <?php i ?>!!!!
  1. <?php
  2. ?>
  3. <html>
  4.  
  5. <head>
  6. <title></title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12.  
  13.  
  14. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  15.  
  16. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  17.  
  18. if( !isset( $_SESSION[ 'user' ] ) )
  19. {
  20.  if( isset( $_POST[ 'loginGo' ] ) )
  21.  {
  22. $dane = mysql_query( 'SELECT id,
  23.  login,
  24.  imie,
  25.  nazwisko,
  26.  email
  27. FROM users
  28. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  29. password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
  30.  
  31. $userData = mysql_fetch_assoc( $dane );
  32. if( $userData[ 'id' ] > 0 )
  33. {
  34.  $_SESSION[ 'user' ] = $userData;
  35.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  36. }
  37. else
  38. {
  39.  echo 'Podałeś złe hasło lub login...';
  40. }
  41.  }
  42.  else
  43.  {
  44. echo ('
  45. <form action=\"\" method=\"post\">
  46.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  47.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  48.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  49. </form>
  50.  ');
  51.  }
  52. }
  53. else
  54. {
  55.  echo 'Jesteś zalogowany!<br/>';
  56.  print_r( $_SESSION[ 'user' ] );
  57. }
  58.  
  59.  
  60.  
  61. ?>
  62.  
  63. </body>
  64.  
  65. </html>
  66. <?php
  67. ?>
brekmar
No w porzadku teraz juz nie pokazuje tego bledu, tylko ze wpisalem login i haslo no i zaladowala mi sie stronka z tym ze Zle haslo lub login i wyskoczyl inny blad

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /webs/1/fbi.cz/p/poleceni/1.php on line 33

O co tym razem chodzi.
Levabul
podmień
  1. <?php
  2. $userData = mysql_fetch_assoc( $dane );
  3. ?>

na
  1. <?php
  2. while($userData = mysql_fetch_assoc( $dane )) {}
  3. ?>


oczywiście bez <?php i?> tongue.gif
nospor
to nic nie da. przecież $dane jest blędne.

daj se:
  1. <?php
  2.  
  3. $dane = mysql_query( 'SELECT id,
  4.  login,
  5.  imie,
  6.  nazwisko,
  7.  email
  8. FROM users
  9. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  10. password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' ) or die (mysql_error());
  11.  
  12. ?>
brekmar
Podlozylem te wasze poprawki i stronka mi sie juz nawet nie laduje. Ale blad chyba jest w okresleniu bazy danych. Tabela nazywa sie "logowanie" i ma pola "id", "login", "haslo". Moze to nie pasuje, sprawdzcie, bo ja nie wiem gdzie, tego skryptu nie pisalem, ja go sciaglem smile.gif.
nospor
Pokaż najpierw skypt po poprawkach. Z doswiadczenia wiem że 60% osób które poprawia, poprawia źle, więc jakbyś mógł rzucić poprawiony skrypt to będzie git
crash
Do autora wątku: podałem Ci wczoraj ten kod jako gotowca! Sprawdzonego i działajcego. Jedynym warunkiem do uruchomienia tego było ustawienie połączenia z bazą, utworzenie odpowiedniej bazy/tabeli i dodanie użytkownika... Nie wiem skąd te wszystkie pytania, błędy itp. Wszystko sprawdziłem i działa...
Levabul
Cytat
Podlozylem te wasze poprawki i stronka mi sie juz nawet nie laduje. Ale blad chyba jest w okresleniu bazy danych. Tabela nazywa sie "logowanie" i ma pola "id", "login", "haslo". Moze to nie pasuje, sprawdzcie, bo ja nie wiem gdzie, tego skryptu nie pisalem, ja go sciaglem smile.gif.


No jasne że to ma znaczenie exclamation.gif! Powinno pomóc :

  1. <?php
  2. ?>
  3. <html>
  4.  
  5. <head>
  6. <title></title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12.  
  13.  
  14. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  15.  
  16. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  17.  
  18. if( !isset( $_SESSION[ 'user' ] ) )
  19. {
  20.  if( isset( $_POST[ 'loginGo' ] ) )
  21.  {
  22. $dane = mysql_query( 'SELECT id,
  23.  login,
  24.  imie,
  25.  nazwisko,
  26.  email
  27. FROM logowanie
  28. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  29. haslo = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 0, 1' ) or die (mysql_error());
  30.  
  31. while($userData = mysql_fetch_assoc( $dane )) {}
  32. if( $userData[ 'id' ] > 0 )
  33. {
  34.  $_SESSION[ 'user' ] = $userData;
  35.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  36. }
  37. else
  38. {
  39.  echo 'Podałeś złe hasło lub login...';
  40. }
  41.  }
  42.  else
  43.  {
  44. echo ('
  45. <form action=\"\" method=\"post\">
  46.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  47.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  48.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  49. </form>
  50.  ');
  51.  }
  52. }
  53. else
  54. {
  55.  echo 'Jesteś zalogowany!<br/>';
  56.  print_r( $_SESSION[ 'user' ] );
  57. }
  58.  
  59.  
  60.  
  61. ?>
  62.  
  63. </body>
  64.  
  65. </html>
  66. <?php
  67. ?>


Zmieniłem tylko zapytanie mysql
nospor
Cytat
Nospor twoje zapytanie też było złe  - zamiast $_POST[ 'loginNAME' ] miało być $_POST[ 'loginGo' ] CHYBA )

Po pierwsze: to nie było moje zapytanie tylko autora. ja je skopiowalem i dorobilem wyświetlanie ewentualnego błedu
Po drugie: przecież loginGo to przyscik submit a nie login użytkownika, więc co ty za bzdury piszesz?
Levabul
Kurde racja :/ Sorry, mój błąd. Kod poprawiony i wstawiony do mojego wcześniejszego postu.

ps. Nospor nie obrażaj się :/
Kas
Na marginesie. Lepiej używać

  1. <?php
  2. ob_start(&#092;"ob_gzhandler\");
  3. ?>

Jest to buforowanie wyjścia wraz z kompresją danych (przynajmniej teoretycznie).
popo
Levabul erm tylko co przed <?php robi pusta linia ? czy to aby nie powoduje bledu ?
Levabul
Nie ma prawa powodować błąd :/
brekmar
Dzieki bardzo wszystkim, juz nie wyswietla zadnego bledu serwera, czyli skrypt jest poprawny smile.gif, ale nie pisalbym tego gdyby bylo wszystko OK sad.gif. Stronka sie szybko laduje, jak wpisuje Login i Hasło to szybko dziala, lecz nie chce mnie zalogowac, wpisuje prawidlowy login i haslo i mi wyswietla ze zle haslo lub login. Nie wiem co nie pasuje. Zreszta sami sprawdzcie
http://www.poleceni.fbi.cz/3.php - dodawanie uzytkownika
http://www.poleceni.fbi.cz/4.php - logowanie
Prosze o pomoc.
Levabul
Pokaż jak wygląda baza ... (jeżeli moje przypuszczenia są prawdziwe to poprawiłem kod w moim przedostatnim poście)
brekmar
http://www.poleceni.fbi.cz/1.jpg - tak wyglada moja baza danych
Levabul
To musi działać tongue.gif
  1. <?php
  2. ?>
  3. <html>
  4.  
  5. <head>
  6. <title></title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12.  
  13.  
  14. $db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
  15.  
  16. @mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
  17.  
  18. if( !isset( $_SESSION[ 'user' ] ) )
  19. {
  20.  if( isset( $_POST[ 'loginGo' ] ) )
  21.  {
  22. $dane = mysql_query( 'SELECT nr,
  23.  login,
  24.  email,
  25.  imie,
  26.  nazwisko
  27. FROM logowanie
  28. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  29. haslo = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 0, 1' ) or die (mysql_error());
  30.  
  31. while($userData = mysql_fetch_assoc( $dane )) {}
  32. if( $userData[ 'nr' ] > 0 )
  33. {
  34.  $_SESSION[ 'user' ] = $userData;
  35.  header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
  36. }
  37. else
  38. {
  39.  echo 'Podałeś złe hasło lub login...';
  40. }
  41.  }
  42.  else
  43.  {
  44. echo ('
  45. <form action=\"\" method=\"post\">
  46.  Login: <input type=\"text\" name=\"loginName\"/><br/>
  47.  Hasło: <input type=\"password\" name=\"password\"/><br/>
  48.  Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
  49. </form>
  50.  ');
  51.  }
  52. }
  53. else
  54. {
  55.  echo 'Jesteś zalogowany!<br/>';
  56.  print_r( $_SESSION[ 'user' ] );
  57. }
  58.  
  59.  
  60.  
  61. ?>
  62.  
  63. </body>
  64.  
  65. </html>
  66. <?php
  67. ?>

a jeżeli nie będzie działać podmień
  1. <?php
  2. $dane = mysql_query( 'SELECT nr,
  3.  login,
  4.  email,
  5.  imie,
  6.  nazwisko
  7. FROM logowanie
  8. WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
  9. haslo = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 0, 1' ) or die (mysql_error());
  10. ?>

na
  1. <?php
  2. $dane = mysql_query( &#092;"SELECT *
  3. FROM logowanie
  4. WHERE login = '\".$_POST[ 'loginName' ].\"' AND
  5. haslo = '\".md5( $_POST[ 'password' ] ).\"' LIMIT 0, 1&#092;" ) or die (mysql_error());
  6.  
  7. ?>
brekmar
Zrobilem tak jak kazales i dalej nie dziala, caly czas "zly login lub haslo". Podmienilem to i tez nie dziala, macie jakies inne propozycje.
nospor
hihi, nie prawa dzialac gdyż w pętli pobierany jest użytkownik az do pobrania niczego. powinno byc bez pętli:
$userData = mysql_fetch_assoc( $dane );

pozatym ty jak wkaldasz dane do bazy to też kodujesz md5?
crash
brekmar: podałem Ci gotowy sprawdzony skrypt, a ty cały czas jakieś problemy sprawiasz. Dodałeś w ogóle poprawne dane do bazy?
brekmar
Poprawilem na
$userData = mysql_fetch_assoc( $dane );
I dalej nie dziala. Jedna funkcja a ile problemow sprawia, czekam na kolejne propozycje.
Levabul
No to pokaż wartości w twojej tabeli

ps. Nospor myliłem sie tongue.gif
brekmar
http://www.poleceni.fbi.cz/1.jpg
http://www.poleceni.fbi.cz/2.jpg
Tabela i wartosci. Ma nadzieje ze cos wykombinujecie.
nospor
No tak jak mówiłem. Do tabeli wkładasz haslo w postaci jawnej, a przy próbie pobrania z tabeli do porównania dajesz zakodowane w md5. Musisz do tabeli też wkladać w postaci md5. Rajciu, trochę logiki.
I pamietaj zeby tylko raz pobrac:
$userData = mysql_fetch_assoc( $dane );
brekmar
Aha, tylko ze co to jest te md5, mam taki skrypt dodawania, jak to przerobic na te md5
  1. <html>
  2.  
  3. <head>
  4. <title></title>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <?php
  10.  
  11. mysql_connect (&#092;"localhost\", \"root\", \"\") or
  12. die (&#092;"Nie można poł&plusmn;czyć się z MySQL\");
  13. mysql_select_db (&#092;"poleceni\") or
  14. die (&#092;"Nie można poł&plusmn;czyć się z baz&plusmn;\");
  15.  
  16. $showForm = true;
  17. if ($login && $haslo && $email && $imie && $nazwisko) {
  18. $sql = &#092;"select login from logowanie where login='$login' limit 1\";
  19. $result = mysql_query($sql) or die(mysql_error());
  20. if (mysql_num_rows($result) == 1)
  21.  echo &#092;"taki login istnieje prosze podać inny\";
  22. else
  23. {
  24.  $showForm=false;
  25. $zapytanie = &#092;"INSERT INTO logowanie (nr, login, haslo, email, imie, nazwisko) \";
  26. $zapytanie .= &#092;" VALUES ('', '$login', '$haslo', '$email', '$imie', '$nazwisko')\";
  27. mysql_query($zapytanie);
  28. echo $login.' '.$haslo.'....';
  29. }
  30. }
  31. if ($showForm)
  32. {
  33. print '<FORM METHOD=\"POST\">Nowy rekord:';
  34. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>';
  35. print '<TR><TD>Login:</TD><TD><INPUT ';
  36. print 'TYPE=\"text\" NAME=\"login\"></TD></TR><TR><TD>Haslo:</TD><TD><INPUT TYPE=\"password\" ';
  37. print 'NAME=\"haslo\"></TD></TR><TR><TD>e-mail:</TD><TD><INPUT ';
  38. print 'TYPE=\"text\" NAME=\"email\"></TD></TR> ';
  39. print '<TR><TD>Imię:</TD><TD><INPUT TYPE=\"text\" ';
  40. print 'NAME=\"imie\"></TD></TR><TR><TD>Nazwisko:</TD><TD><INPUT ';
  41. print 'TYPE=\"text\" NAME=\"nazwisko\"></TD></TR> ';
  42. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>';
  43. }
  44.  
  45.  
  46. ?>
  47.  
  48. </body>
  49.  
  50. </html>
nospor
Osłabiasz mnie. Czy ty wogóle próbujesz się czegoś nauczyć z tych naszych wypowiedzi, czy tylko biernie robic ctrl+c, ctrl+v? CZłowieku ty się zastanów. Marnujesz i nasz i swój czas.
Przecież podczas sprawdzania, czy użytkownik jest zalogowany używane jest md5.
md5( $_POST[ 'password' ] )
ty troche analizuj nasze kody bo człowieka krew zalewa.
Teraz na podobnej zasadzie wstaw to do inserta.

pomijam fakt, że @crashu podobna dał ci działającą wersję. Więc nie rozumiem skąd to wszystko
brekmar
DZIAŁA I TO WSZYSTKO CO MAM DO POWIEDZENIA smile.gif
Levabul
Te a dziękuje już nie powiesz tongue.gif :?

Nie wychowane to takie laugh.gif - nospor

No nie biggrin.gif.
brekmar
DZIEKUJE tongue.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.