Autor Zpráva
bach
Profil
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
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
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
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
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: