Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: błąd przy rejestrowaniu danych w sesji
Forum PHP.pl > Forum > PHP
robal94
Oto fragment skryptu który ma rejestrować zmienną:
Kod
$login = $uzytkownik;
session_register("login");
?>


Jednak co sie później okazuje zmienna nie została zarejestrowana... co może być przyczyną?
erix
  1. a wiesz, że z session_register" title="Zobacz w manualu PHP" target="_manual się już nie powinno korzystać? snitch.gif
  2. zacząłeś gdzieś sesję?
planet
zmień kod na:

Kod
<?php
#jakby co, to ta linijka ma być na samym początku pliku
session_start();

#i gdzieś tam dalej w kodzie
$_SESSION['login'] = $uzytkownik;

?>
robal94
  1. <?php
  2.    session_start();
  3.                            $uzytkownik = $_POST['login'];
  4.                            $haslo = md5($_POST['haslo']);
  5.  
  6.  
  7.                           mysql_connect('localhost', 'epamiec_robal94', 'logika');
  8.                          mysql_select_db('epamiec_logowanie');
  9.                           $rezultat=mysql_query("select * FROM logowanie WHERE uzytkownik='$uzytkownik' AND haslo='$haslo'");
  10.                                         if(@mysql_num_rows($rezultat))
  11.                                         {
  12.                                                        $_session['login'] = $uzytkownik;                                            
  13.                                                        $q = "SELECT rodzaj FROM logowanie WHERE uzytkownik = '$login'";
  14.                                                            $r = mysql_query($q);
  15.                                                        while($row = mysql_fetch_array($r))
  16.                                                         {
  17.                                                         $_session['rodzaj'] = $row['rodzaj'];
  18.                                                         }
  19.                                                             echo '<center><div id="logowanie">Witaj ', $login, '!!!</div> <a class="rej" traget="_top" href=edit.php>edytuj profil</a><br></center>';
  20.                                                         }
  21.                                         else{
  22.                                                        echo '<center><table border="0"><tr><td><span class="blad">Bledne dane!</span></td></tr><tr><td><form action="logowanie.php" method="post"> <center>Logowanie</center></td></tr><tr><td><input type="text" name="login" size="25" maxlength="16" value="login..." onclick="this.value=''" /></td></tr><tr><td><input type="password" name="haslo" size="25" maxlength="32" value="hasԯ" onclick="this.value=''" /> </td></tr><tr><td><button type="sumbit">zaloguj</button></td></tr><tr><td><a class="rej" target="_top" href="rejestracja.php">Zarejestruj sie!</a></table></center><br>';
  23.  
  24.                                         }
  25.  
  26.  
  27. ?>

to jest cały skrypt z użyciem tego nowego sposobu ale i tak nie działa!
planet
"później jest niezarejestrowana" tzn. w innym pliku? (przypominam, że fragment session_start(); trzeba zamieszczać na górze każdego nieincludowanego pliku)

a tak swoją drogą to proponuje użyć addslashes na login i hasło.
robal94
tak w innym pliku a session_start(); daje wszędzie na początku, i jakoś nie działa...
erix
A masz wszędzie ten sam identyfikator?
planet
A może problem jest związany ze złą konfiguracją w php.ini? Tutaj ktoś miał podobny problem, zajrzyj: http://forum.idg.pl/tworzenie_i_utrzymywan...php-t71817.html
robal94
identyfikator sesji? nie patrzałem.. sprawdze..

identyfikatory są inne... jak zmienić by były takie same?
planet
możesz go przesyłać getem i potem robić:
Kod
session_start();
session_id($_GET['sid']);


nie wiem, czy dobrze kombinuje, ale to, że masz różne identyfikatory może być spowodowane krótką żywotnością sesji i dlatego generuje Ci nowe ID.
robal94
nie rozumiem...
erix
Ok, w jakim katalogu startujesz sesję, a z jakiego odczytujesz?

Bo prawdopodobnie ciastko "nie sięga" z podkatalogu do skryptu wyżej. Vide: session_set_cookie_params" title="Zobacz w manualu PHP" target="_manual.
robal94
wszystko jest w jednym katalogu
planet
sprawdź też, czy masz session.use_cookies = 1 w php.ini
robal94
a gdzie znajde php.ini
planet
w folderze, gdzie masz zainstalowane PHP.
robal94
ale na serwerze?
planet
daj przed startem sesji ini_set('session.use_cookies', 1); jak nie masz dostępu do pliku
robal94
i tak nie działa sciana.gif chyba się poddam...

teraz zauważyłem taki blad:Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\usr\krasnal\www\epamiec\menu.php:9) in c:\usr\krasnal\www\epamiec\menu.php on line 20

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\usr\krasnal\www\epamiec\menu.php:9) in c:\usr\krasnal\www\epamiec\menu.php on line 20
erix
Ludzie, ile razy to było... O.o

Rusz wyszukiwarką...
robal94
ale robie wszystko co mówią i tak to nie znika!
erix
To przeczytaj jeszcze raz - tematy z tym błędem zwykle od razu zamykamy.

Przeczytaj tyle razy, aż wreszcie zrozumiesz, o co chodzi. Bo co do tego błędu, to wszystko zostało powiedziane.
robal94
mam dobre kodowanie UTF-8, pisze na początku ob_start(); ale i tak to sie pokazuje
erix
To nie wszystko szukaj i czytaj, do skutku.
robal94
dzieki szukałem i okazało się że w tym tkwił błąd! wszystko gra! guitar.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.