Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje nie przenoszą zmiennych
Forum PHP.pl > Forum > Przedszkole
woiran
Witam wszystkich. Nie działają mi sesje. A dokładnie to nie przenoszą mi zmiennych między stronami. Podejrzewam, że problem tkwi w pliku php.ini próbowałem coś w nim zmieniać na kilka sposobów, ale nie przynosiło to pożądanych rezultatów. W końcu już się pogubiłem, że już sam nie wiem co jest dobrze a co źle. Umieszczam na dole część pliku php.ini odnośnie sesji proszę o rzucenie okiem

Kilka danych:

Plik php.ini (wersja PHP: 5.2.5-Win32) skopiowałem na dysk: c/windows, orginał trzymam nadal w miejscu, gdzie mam wszystkie pliki po instalacji php e/Serwer/php5

-serwer Apache (wersja:2.2.8-win32-x86-openssl-0.9.8g) mam na dysku e/Serwer

-wszystkie pliki czytane przez lokalhost umieszczam na: e/Serwer/WWW

Jakie powinny być wpisy w pliku php.ini odnośnie sesji, żeby prawidłowo przenosiły zmienne między stronami
l0ud
Na początek włącz raportowanie błędów w php.ini (jest odpowiednia linijka, error_reporting) i sprawdź czy php nie wywala błędów po session_start() . Być może to nie konfiguracja serwera jest problemem.
woiran
Cytat(l0ud @ 2.03.2008, 20:58:33 ) *
Na początek włącz raportowanie błędów w php.ini (jest odpowiednia linijka, error_reporting) i sprawdź czy php nie wywala błędów po session_start() . Być może to nie konfiguracja serwera jest problemem.

error_reporting = E_ALL bez średnika, jeśli o tę linijkę kodu chodzi.
Wklejam tę częśc kodu odpowiedzialną za sesję nie wiem czy są odpowiednei wpisy:
[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; session.save_path = "e/Serwer/tmp"

; Whether to use cookies.
session.use_cookies = 1

;session.cookie_secure =

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
session.cookie_httponly =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

session.gc_probability = 1
session.gc_divisor = 1000





Poniżej przedstawiam kody dwóch plików. Movie1 ze zmiennymi I Movie z odbiorem tych zmiennych przez sesje. Przykładysą z książki ale sesje nie przenoszą zmiennych.
Plik movie1.php
<?php
session_start();
$_session['username'] = "Jan12345";
$_session['authuser'] = 1;
?>
<html>
<head>
<title>Znajdź mój ulubiony film</title>
</head>
<body>
<?PHP
$myfavmovie = urlencode("Żywot Briana");
//Zmień ten wiersz
echo "<a href='moviesite.php?favmovie=$myfavmovie'>";
echo "Kliknij tutaj, aby zobaczyć informacje o moim ulubionym filmie!";
echo "</a>";
?>
</body>
</html>
Sabistik
Proszę o poprawę tematu na zgodny z regulaminem działu przedszkole inaczej zostanie zamknięty.
woiran
plik movie.php
<?
//Odbieranie zmiennych dotyczących imienia za pomocą sesji
session_start();
//sprawdź czy użytkownik zalogował się używając poprawionego hasła
if ($_session['authuser'] != 1)
{echo "Przepraszamy, ale nie masz urawnień do zobaczenia tej strony!";
exit();}
?>
<html>
<head>
<title> Witryna o filmach - <?PHP echo $_REQUEST['favmovie']; ?></title>
</head>
<body>
<?PHP
echo "Witamy na witrynie użytkowniku ";
echo $_session['username'];
echo "!<br>";
echo 'Mój ulubiony film to ';
echo $_REQUEST['favmovie'];
echo "<br>";
$movierate = 5;
echo "Moja ocena tego filmu wynosi ";
echo $movierate;
?>
</body>
</html>
Obraz, który się wyświetla:
Witamy na witrynie użytkowniku
Notice: Undefined variable: _session in E:\Serwer\www\moviesite.php on line 18
!
Mój ulubiony film to Żywot Briana
Moja ocena tego filmu wynosi 5
l0ud
Wielkość liter ma znaczenie. Do sesji odnosisz się przez tablicę $_SESSION, a nie $_session. smile.gif

Pozdrawiam
Misiur66
Więc tak, to raczej nie pomoże, ale używaj przy $_SESSION dużych liter

Hej! Ja znam ten kurs! Sam się z niego uczyłem ;>

@up

Heh Loud mnie uprzedził biggrin.gif
woiran
Cytat(l0ud @ 2.03.2008, 21:38:01 ) *
Wielkość liter ma znaczenie. Do sesji odnosisz się przez tablicę $_SESSION, a nie $_session. smile.gif

Pozdrawiam



Cytat(Misiur66 @ 2.03.2008, 21:39:28 ) *
Więc tak, to raczej nie pomoże, ale używaj przy $_SESSION dużych liter

Hej! Ja znam ten kurs! Sam się z niego uczyłem ;>

@up

Heh Loud mnie uprzedził biggrin.gif


Dzięki za pomoc, zmieniłem wielkośc liter,ale to nie pomogło, przynajmniej będę wiedział na później.
Jestem niemal pewien, że błąd jest gdzieś w kodzie pliku: php.ini.
Proszę zwrócićie uwagę, czy dobrze i w dobrej linice umieściłem instrukcję:
; session.save_path = "e/Serwer/tmp" ze średnikiem, czy bez i biorac pod uwagę, to ,że inne elementy php, apache leżą na dyskach i folderach, które opisałem w pierwszym poście. Dzięki za wszelką pomoc!
l0ud
Linia musi być bez średnika.

Kod
session.save_path = e:\Serwer\tmp


To będzie działało, o ile utworzysz folder 'tmp'.
Sabistik
Ignorowanie prośby.

Tytuł tematu nie spełnia wymagań regulaminu działu przedszkole. Zamykam. Prześlij poprawną formę do moderatora to otworzy.
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.