caf, mam takovej problemek, v mam trial Zend Studia 3.5.1+ a v jednom scriptu na prihlaseni mam klasicke ulozeni hodnoty do $_SESSION pole kdyz ten script pustim v internim debuggeru je vse ok, ale kdyz ho spustim na localhostu (apache) tak se to chova ze se tam nic nepriradilo ...
dik za radu!
Jde o to, jak ten script na uložení vypadá.
Petr
$_SESSION['u_id'] = GetUserInf(_USR_ID_);
$_SESSION['u_lvl'] = GetUserInf(_USR_LVL_);
$_SESSION['u_nick'] = GetUserInnf(_USR_NICK_);
$_SESSION['u_psw'] = GetUserInf(_USR_PSW_);
Takze asi takto a fce GetUserInf
je vlastne klasicky dotaz na mysql.
nebude to treba tim preklepem na 3. radku?
function AuthorizeUser($user,$password)
{
if(($user == "") or ($password == ""))
{return _EMPTY_;}
$password = md5($password);
$this->Query("SELECT * FROM "._DB_NAME_PREFIX_."users WHERE user_name=\"$user\" AND user_psw=\"$password\" AND user_ban=\"N\" AND user_wait=\"N\"");
if($this->NumRows() != 1 )
{return _LNG_BAD_LOG_;}
session_start();
$_SESSION['u_id'] = GetUserInf(_USR_ID_);
$_SESSION['u_lvl'] = GetUserInf(_USR_LVL_);
$_SESSION['u_nick'] = GetUserInf(_USR_NICK_);
$_SESSION['u_psw'] = GetUserInf(_USR_PSW_);
return 1;
}
takto vypada cela fce a getuserinf
function GetUserInf($inf_id)
{
if(usrNFO != null){m_usrNFO = $db->FetchRow();}
return m_usrNFO[$inf_id];
}
objekt db je vytvoren, schvalne jsem si ho jiz otestoval ... napr. pomoci echo...
pak mam stranku treba menu.php
kde mam neco takoveho :
<?PHP session_start(); ?>
<div id="navBar">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="style35"><font size=1> Nick »</font></td>
<td class="style35"><?PHP echo($_SESSION['_USR_LVL_']);?></td>
</tr>
<tr>
<td class="style35"><font size=1> Level »</font></td>
<td class="style35"><?PHP echo($_SESSION['u_nick']); ?></td>
</tr>
</table>
... atd.
Je mi hrozne divny ze to v internim debuggeru funguje (zend studia) a pak na local hostu ne, neni nejaky debugger na localhost ?
v menu.php jsou samozrejme i potrebne includy ...
jo a jeste jedna vec ve fci AuthorizeUser() ...
je $this-> tak to neplati to je chyba pri prepsani spravne tam je db
A to db by mělo být asi globální, ne? Všechno uvnitř fce, pokud není označené jako gobal ($_SESSION je), je lokální. Není problém tady?
eee, bohuzel, v debuggeru to funguje jak s global tak i takhle ale na localu furt nic :(
Možná jsi to nepochopil. Pokud máš fci a použiješ uvnitř proměnnou $db, tak ta je lokální a není v ní nic. Je třeba uvnitř fce říct, že je global nebo ji předat jako parametr.
no jasne to jsem udelal prave pomoci klicoveho slova global, promenou $db to bere jenze, stale to neprodukuje spravny vysledek zda se ze fce getuserinfo vypada ze navraci nejaky spatny vysledky ...
U sessions. Zkoušel ses podívat, jestli a jak zapisuje sessions do toho správného adresáře? Jsou na ty sessions opovídající cookie (nejsou vypnuté). Zkoušel jsem to kdysi ve win na localhost a narazil jsem na problém, že se nezapisovaly sessions, protože php nemělo právo do adresáře, kam si má zapsat sessions.
Jinými slovy, píše to něco? Nebo to jenom tiše nefunguje?
no sessions soubory sou vytvoreny ale jako kdyz v nich nic neni
Zapeklité, milý Watsone... A nějaké chybové hlášení? Zkuse třeba ještě podívat, jestli není nějaký log apache nebo přímo php a jestli se něco nepíše tam.
Log apache... Smrdi to IISkou, takze jestli nebude problem nekde tady...
To né, já to občas zkouším i na IIS a zrovna sessions fungují...
Jenze to je prave to. U MS to bejva PC od PC individualni :)