Autor | Zpráva | ||
---|---|---|---|
intimidant Profil * |
#1 · Zasláno: 26. 7. 2006, 00:06:36
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 |
#2 · Zasláno: 26. 7. 2006, 00:32:00
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 * |
#3 · Zasláno: 26. 7. 2006, 00:43:18
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 * |
#4 · Zasláno: 26. 7. 2006, 00:46:16
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 |
#5 · Zasláno: 26. 7. 2006, 00:49:29
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 * |
#6 · Zasláno: 26. 7. 2006, 01:08:24
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 * |
#7 · Zasláno: 26. 7. 2006, 01:13:34
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 |
#8 · Zasláno: 26. 7. 2006, 01:16:40
a jak jsou nastavené "register_globals"??
krteczek |
||
intimidant Profil * |
#9 · Zasláno: 26. 7. 2006, 01:18:23
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 |
#10 · Zasláno: 26. 7. 2006, 01:19:25
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 * |
#11 · Zasláno: 26. 7. 2006, 01:26:04
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... |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0