Ahoj všem,
mám jeden problém nainstaloval jsem si Apache 2.2, PHP 5.2.0 a MySQL 4.1.x a všechno jsem zprovoznil, až na jedno ... sessions, myslim si že všechno je ok, cestu mám v pořádku (úmyslně špatně nastavená cesta ohlasila chybu), všechno jsem kontroloval, všechny direktivy jsou stejně jako jsem měl v minulé konfiguraci, tedy apache 1.3.x, php 4.3.10 a mysql 4.0.x ... v php.ini jsem nastavil i kompabiltu s php 4.x (je druha hned po engine=On ...) tak už nevím, co s tím ... je nějaký rozdíl v sessions mezi php 4 a 5 ... nějaký specifický požadavky ... ?
Nebude tím že je to session a ne sessions tak že se voláš
<?
session_start;
radek: je to skript, kterej v php 4.3.10 normalne funguje ...
Takhle mám nastaveno php.ini.
V php 5 je standartně nastaveno register_globals Off
v php 4 bylo většinou register_globals On
[session]
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path c:/tmp c:/tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0
<HTML>V oficialni distribuci PHP4 je take default register_globals Off
Ja nemam se session zadny problem v php5, pouzivas session_start() a session v promenne $_SESSION[] ?
Moje nastaveni:
[Session]
session.save_handler = files
session.save_path = "d:\prg\server\php5\session"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4</HTML>
u obou mám registrer globals na off .. ve 4 i v 5 ... ale na začátku každýho skritptu to vyextrahuju pomocí extract($_SESSION), před tím samozřejmě mám session_start(); ... fakt nevim
Moje konfigurace
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path C:\TEMP C:\TEMP
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 1 1
<HTML>a jak presne nefunguji?
jakoze $_SESSION nic neobsahuje
nebo neni hlasena zadna chyba?
nebo v adresari C:\TEMP nemas zadny soubor kteri session vytvari?
a ukladas do session zpusobem: $_SESSION['neco'] = hodnota; ?</HTML>
no je to skript k přihlášení ... zkontroluji heslo a když souhlasi tak udělam
$SESSION["id"] = $prihlaska["id"] kdy
Header("Location: vnitřní_stránka"); exit a u té zaheslováné stránky mám pak na začátku
session_start();
extract($SESSION);
if ($SESSION["id"])
nebo if ($id)
prostě obojí nefunguje a v C:\TEMP se nic neobjeví ... ale přitom phpmyadmin tam svou session uloží v pohodě, tak musí být chyba ve skriptu ale fakt nevím kde ...
ve php 4.3.10 to facha normalne, obojí register_globals = Off
<HTML>>> $SESSION["id"] = $prihlaska["id"] kdy
>> Header("Location: vnitřní_stránka"); exit a u té zaheslováné stránky mám pak na začátku
a predtim mas taky session_start() ?</HTML>
samozřejmě, ve 4 to normalně funguje, to session_start(); a extract tam vkladám z externího souboru pomoci include_once a normálně to běželo na mým wXP i na ostrém Linuxu ...
Mě především nejde na rozum, proč to běhá na win a linux php4 a win php 5 ne ... a konfigurace je stejná ... skript se neměnil ...
<?php
session_start();
if(!$_SESSION['username']){
$_SESSION["back"]=$_SERVER['PHP_SELF'] ;
header("Location:login.php");
exit;
}
Takhle vypadá vršek stránky, nad session_start(); nesmí být žádný výstup, ani html tagy, jako třeba <body> nebo<title> atd.
Radek: nic tam neni, říkám v php 4 to funguje ! nejsou třeba nějaké specifické požadavky na použití sessions v php 5 ?
Zkus udělat novou stánku s tímto kódem, jestli ti to vypíše jirka, potom je chyba ve tvém scriptu, jestli ti to navypíše nic tak jedině všecko odinstalovat,vymazat a naistalovat anastavit všechno znova(apache,php). Stránku ulož samozřejmě tam kde apache hledá soubory.
<?php
session_start();
echo $_SESSION['jmeno']="jirka";
?>
hm, tak jsem to vyzkošel jak si řikal ...
zapis.php
<?
session_start();
$_SESSION["id"] = "jirka";
?>
vypis.php
<?
session_start();
echo $_SESSION["id"];
?>
a funguje to ... zapíše se do C:\TEMP, takže chyba je ve skriptu, akorat příjit na to, proč to funguje v php4 :-(
Nemuze to delat Apache? Ja porad zustavam u 2.0.59 a sem spokojeny ;-)
Sessions si totiz uklada sam apache a PHP je jen zpristupnuje a manipuluje s nimi ne?