Autor Zpráva
intimidant
Profil *
Mám takovej problém.
činnosti uživatelů stránek si loguju do tabulky
přihlášení řeším pomocí session
$_SESSION["uzivatel"] = 'pepa';
když vypíšu log, mění se mi hodnota $_SESSION["uzivatel"] na hodnotu, která se zrovna vypisuje z db například
$dotaz=mysql_fetch_array(mysql_query("SELECT uzivatel FROM log WHERE cislo=$i"));
echo $dotaz["uzivatel"];

vypíše dejme tomu "jarda". ale v $_SESSION["uzivatel"] mám taky uloženýho jardu...
když se z db vytáhne xyz, bude v $_SESSION["uzivatel"] zase xyz

můžete mi někdo poradit, jak v session zachovám původní hodnotu? díky moc, už jsem z toho na prášky...
Peca
Profil
Nesmysl. Hodnota se sama od sebe změnit nemůže. Musíš tam mít něco ve smyslu $_SESSION["uzivatel"] = $dotaz["uzivatel"];
Co je vlastně původní hodnota? Odkud se bere?
intimidant
Profil *
původní hodnota se zadá při přihlášení uživatele v úplně jiným souboru...
nikde tam přiřazení nemám, vážně :(
intimidant
Profil *
jediný co mě napadlo je, že obě proměnné mají stejný parametr "uzivatel". jenže nechápu, jak se to může smíchat...
Peca
Profil
Zkus toto dát na příslušné místo:
echo $_SESSION["uzivatel"];
$dotaz=mysql_fetch_array(mysql_query("SELECT uzivatel FROM log WHERE cislo=$i"));
echo $_SESSION["uzivatel"];
intimidant
Profil *
chvilku jsem si s tím hrál, dával jsem si kontrolní výpisy na různé části stránky a postupem času jsem dospěl k závěru, že mi to všechno způsobuje
$uzivatel = $dotaz["uzivatel"];
nekecám, vážně je to tak. když to dám do komentáře, tak to vypisuje, jak má. když tohle přiřazení nechám na stránce, začne to do session přiřazovat proměnnou z $dotaz
jsem z toho vážně jelen... nemůže bejt nějaká kolize v tom, že všude používám "uzivatel"???
mám to v session, v $dotaz a v $uzivatel
intimidant
Profil *
celej cyklus je vážně jednoduchej:
for ($i = $do; $i > $od; $i--) {
$dotaz = mysql_FETCH_ARRAY(mysql_QUERY("SELECT * FROM `log` WHERE `cislo_logu`=$i"));
$cislo = $dotaz["cislo_logu"];
$datum = $dotaz["datum"];
$host = $dotaz["remote_host"];
$uzivatel = $dotaz["uzivatel"];
$akce = $dotaz["akce"];
echo mysql_error();
echo "<td class='vlevo dole'>$cislo</td>";
echo "<td class='vlevo dole'>$datum</td>";
echo "<td class='vlevo dole'>$host</td>";
echo "<td class='vlevo dole'>$uzivatel</td>";
echo "<td style='border-right: 2px solid #ADBFD7;' class='vlevo dole'>$akce</td></tr>";
}
krteczek
Profil
a jak jsou nastavené "register_globals"??
krteczek
intimidant
Profil *
krteczek
nevím, nemám přístup do konfigurace. tohle je na webhostingu, konfiguraci mám slíbenou, ale zatím jsem se k tomu nedostal
tiso
Profil
Problém je v tom že máš nastavené register_globals na on, takže všetky premenné zo superglobálnych polí ($_SESSION["premenna"], $_POST["premenna"], $_GET["premenna"] atd) sú dostupné aj cez skrátený zápis $premenna...
Takže $_SESSION["uzivatel"] a $uzivatel je rovnaká premenná!!!
Riešenie:
1. vypnúť register_globals
2. premenovať premennú $uzivatel na niečo neškodné
3. vôbec premennú $uzivatel nevytvárať - čo Ti bráni používať ďalej v skripte $dotaz["uzivatel"]?
Odporúčam kombináciu 1+3...
intimidant
Profil *
tiso, krteczek
díky za řešení, už jsem byl zoufalej. vůbec mi nedošlo, že můžou mít na hostingu register_globals on. lokál jsem si nastavil podle sebe (off) a dál jsem se tím nezabýval...
díky moc za řešení, hned ráno je vyperu, ať mi povolí přístup ke konfiguraci...
stydím se, že jsem na to nepřišel sám. jsem lama :o) vážně díky, chlapi...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0