Autor | Zpráva | ||
---|---|---|---|
bach Profil |
#1 · Zasláno: 29. 3. 2010, 11:31:20
Dobrý den.
Povyšoval jsem php4.4.x na php5.2.x Vše se zdálo OK až na to , že se nemůžu přihlásit. Tedy přihlásit se jde , jen v prohlížeči google chrome , v Opeře,FF ani IE nikoliv , přitom při php4x to jelo vše bez problémů. Zjistil jsem , že pokud se hlásím pod chrome , tak se vytvoří session po vyplnění údajů se session ta samá vyplní a normálně se přihlásím. U ostatních prohlížečů se vytvoří session prázdná , pak napíšu jméno a heslo , vytvoří se další session již vyplněná a po odkliknutí přihlásit se vytvoří třetí session zase prázdná. takto to proběhne u všech prohlížečů , krom chrome , tam se opravdu tvoří jen jedna session , jak má. Včem může být problém? Přuhlášení je děláno takto: <?php session_start(); include("./db.php"); $vysledek = mysql_query("select heslo, jmeno, prijmeni,karta, id from zakaznici where login = '$login'"); while ($r = mysql_fetch_array($vysledek)): $ident = $r["id"]; $jmeno = $r["jmeno"]; $prijmeni = $r["prijmeni"]; $karta = $r["karta"]; $Ljmeno = $r["jmeno"]; $Lprijmeni = $r["prijmeni"]; endwhile; if ($vysledek && mysql_num_rows($vysledek) && $heslo == mysql_result($vysledek, 0)) { /* odstrani diakritiku z jmena a prijmeni */ $jmeno = StrTr($jmeno, "áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ", "aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ"); $prijmeni = StrTr($prijmeni, "áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ", "aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ"); session_register("prihlasen"); session_register("username"); $username = $login; session_register("id"); $id = $ident; session_register("name"); $name = $jmeno; session_register("surname"); $surname = $prijmeni; session_register("Lname"); $Lname = $Ljmeno; session_register("Lsurname"); $Lsurname = $Lprijmeni; session_register("sleva"); $sleva = $karta; if ($HTTP_REFERER == "http://www.ofoto.cz/index.php?q=chyba"): Header("Location: ./index.php"); else: Header("Location: $HTTP_REFERER"); endif; exit; } else $chyba = true; if ($chyba) Header("Location: ./index.php?q=chyba"); ?> |
||
Joker Profil |
#2 · Zasláno: 29. 3. 2010, 12:10:02
bach:
Pro odpověď stačí otevřít manuál pro session_register (kliknout na to ve vloženém kódu). Jednak: Warning This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged. = Varování- Tato funkce je zavržena od PHP 5.3.0. Spolénat na tuto funkčnost se důrazně nedoporučuje. Hlavně si ale přečtěte ty další poznámky. Ve zkratce: Nepoužívejte session_register, ale pole $_SESSION. |
||
bach Profil |
#3 · Zasláno: 29. 3. 2010, 12:26:53
Není to můj kod , ja jen spravuju server a jen s tímto webem je problém , takže jsem to odhadnul na tuto php stránku s názvem login.php
Jelikož v php to moc neumím, spíše skoro vůbec , tak jsem dal dotaz zde.... Můžete mi prosím říci , jak to přepsat? děkuji. |
||
fritol33 Profil |
#4 · Zasláno: 29. 3. 2010, 12:46:12
bach:
Místo session_register("prihlasen"); session_register("username"); $username = $login; session_register("id"); $id = $ident; session_register("name"); $name = $jmeno; session_register("surname"); $surname = $prijmeni; session_register("Lname"); $Lname = $Ljmeno; session_register("Lsurname"); $Lsurname = $Lprijmeni; session_register("sleva"); $sleva = $karta; napsat: (vyhneš se session_register, možná je tam jiný problém) $_SESSION["prihlasen"]; $_SESSION["username"] = $login; $_SESSION["id"] = $ident; $_SESSION["name"] = $jmeno; $_SESSION["surname"] = $prijmeni; $_SESSION["Lname"] = $Ljmeno; $_SESSION["Lsurname"] = $Lprijmeni; $_SESSION["sleva"] = $karta; |
||
bach Profil |
#5 · Zasláno: 29. 3. 2010, 13:00:58 · Upravil/a: bach
tak po této výměně se nepřihlásím ani v chrome......toto bych na problém neviděl.....
Zakopaný pes bude jinde , pro chrome udělá 1 session a Opera,FF a IE 3 sessiony Vyplaněna jen ta druhá a první a 3 jsou nulové velikosti. Má někdo nějaký jiný nápad , proč se to v CHROME přihlásí korektně vytvoření pouze 1 session a proč v ostatních web browserech se to nepřihlásí a session se v průběhu přihlášení vytvoří celkem 3? php mám nastaveno nějak takto: http://85.207.200.100/info.php |
||
bach Profil |
#6 · Zasláno: 29. 3. 2010, 15:11:29
Tak jsem na to přišel......
je to poutze tato blbůstka v nastavení php.ini session.cookie_path = "/" mmj. původní kod funguje naprosto bez problémů..... |
||
fritol33 Profil |
#7 · Zasláno: 29. 3. 2010, 16:51:19
bach:
„mmj. původní kod funguje naprosto bez problémů.....“ Ano to je pochopitelné: „Povyšoval jsem php4.4.x na php5.2.x“ Joker: > Warning > This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged. > = Varování- Tato funkce je zavržena od PHP 5.3.0. Spolénat na tuto funkčnost se důrazně nedoporučuje. Ale při dalším přechodu pravděpodobně nebude. |
||
Joker Profil |
#8 · Zasláno: 29. 3. 2010, 17:52:17
bach:
„mmj. původní kod funguje naprosto bez problémů“ Budiž, prostě tohle je zastaralá funkce o které dokonce i PHP manuál říká, že s ní je spousta problémů, takže to byl logický první tip (byť tam moc nesedí to různé chování v prohlížečích). Přesto nesouhlasím s tím, že to funguje "naprosto bez problémů", já tam vidím problémů spoustu: - Používá to zastaralou funkčnost, se kterou je spousta problémů. - Spoléhá to na zapnutí vlastností, které jsou ve výchozím nastavení PHP vypnuté. - Vyžaduje to zapnuté register_globals, což se považuje za bezpečnostní díru. - Nesouvisející se session_register, v tom skriptu je několik bezpečnostních děr, asi nejhorší je SQL injection, kde jednodušší postup umožňuje hackerovi zvolit si heslo a přihlásit se jako nějaký uživatel používající to heslo (pokud takový existuje) a složitější postup hackerovi umožní se přihlásit jako libovolný uživatel systému. |
||
bach Profil |
#9 · Zasláno: 30. 3. 2010, 05:58:42 · Upravil/a: bach
Ano to je možné , pro mě je důležitější , že po přechodu tento jedinný web , který měl problémy zase chodí.
Nejsem programátor , abych to přepisoval , nicméně jsem zákazníkovi o těchto úskalích řekl a záleží jen na něm, jak se k tomu postaví. No že to funguje bez problémů-tak to opravdu funguje i přes bezp.úskalí vámi deklarované. Zbylých X webů funguje bez problémů..... Díky za rady a info. |
||
Časová prodleva: 14 let
|
0