Autor Zpráva
dedMaus
Profil *
Dobré ráno,
mám problém s koláčky. Normálně je zapíšu, jsou v prohlížeči a fungují. Mám je použité pro přihlašovací formulář. Bohužel když vypnu prohlížeč a znovu ho zapnu na té stránce, tak se hned nenačtou a proto musím dát na jiný odkaz na stránce a pak normálně fungují.
Nevíte co s tím?
$iflogin = $_COOKIE['login'];
$ifpass = $_COOKIE['pass'];
$ifalias = $_COOKIE['alias'];

$sqlifacc = mysql_query("Nějaký select");
$sqlifinfo = mysql_query("Nějaký selec'");

while($arrayifacc = mysql_fetch_array($sqlifacc))
{
  $login = $arrayifacc['username'];
  $id = $arrayifacc['id'];
}
while($arrayifinfo = mysql_fetch_array($sqlifinfo))
{
  $alias = $arrayifinfo['alias'];	
}

$countifacc = mysql_num_rows($sqlifacc);
$countifinfo = mysql_num_rows($sqlifinfo);

if($countifacc == 1 AND $countifinfo==1)
{
  $_SESSION['login'] = $login; // Zapíšeme si jeho login, který získáme z MySQL
  $_SESSION['id'] = $id; // Zapíšeme si jeho id, které získáme z MySQL
  $_SESSION['alias'] = $alias;   // Zapíšeme si jeho nick, který získáme z MySQL  
}

to je můj kód který kontroluje jestli je uživatel přihlášen když vstoupí na web.
Toto se vyvolá v headru, který je includován na každé stránce, která má podobu
Luky
Profil
Já si myslím, že po vypnutí prohlížeče se cookies a jiná data mažou (asi záleží na prohlížeči a hlavně jeho nastavení) - nemyslím si, že se tento problém dá nějak vyřešit, teda pokud jde o přihlašování uživatelů na web.
Můj názor, ale třeba to jde a stačí to opatřit jenom dobrým scriptem :D
dedMaus
Profil
Oni se nemažou zůstávají tam, ale tady jde hlavně o to, že pokud to po vypnutí prohlížeče znovu zapnu, tak se to nenačte hned s příchodem na stránku.
Luky
Profil
Pokud je to v prohlížeči nastavené, tak se cookies nemažou, to je pravda. Ale stejně nevím proč by uživatel na tvé stránce zavíral prohlížeč, zvlášť když tam vyplňuje nějaký formuláře? :D
dedMaus
Profil
Jak už je napsáno výše, tak to je přihlašovací formulář a z toho je očividně jasné, že to slouží k tomu aby se nemuseli hned potom, jak se dostanou na stránku, znovu přihlašovat.
Chro
Profil
Jak nastavuješ cookies? Zkus test.
Soubor test.php:
<?php
if (isset($_COOKIE['test']))
{
echo $_COOKIE['test'];
}
else
{
setcookie('test', 'COOKIE: Jsem na zivu', time() + 60*60*24*365);
echo 'PHP: Cookie uvedena v zivot';
}
?>
dedMaus
Profil
Takže zapisuji coockies...prostě se mi to normal zapíše, ale tady je problém, že jak prostě zapnu ten web tak se hned nespustí ty coockies...až po dalším načtení


  $cookielogin = $login;
  $cookiepass = $sha1pass;
  setcookie("login", $cookielogin, time()+60*60*24*30);
  setcookie("pass", $cookiepass, time()+60*60*24*30);
  setcookie("alias", $alias, time()+60*60*24*30);
Petr__
Profil *
dedMaus:
Takže zapisuji coockies...prostě se mi to normal zapíše, ale tady je problém, že jak prostě zapnu ten web tak se hned nespustí ty coockies...až po dalším načtení
Nedostáváte náhadou nakešovanou stránku? V jakých prohlížečích se vám to tatko chová?
dedMaus
Profil
Petr_:
Dělá mi to jak v chromu, tak i v lišce. Další prohlížeče nepoužívám.
Nechápu proč se to tak chová. Mimochodem, zkoušel jsem ten soubor od Chro a normálně mi to funguje hned, i na ostatních stránkách, kde jsem používal cookies mi to normálně funguje.
Myslel jsme si, že bude chyba v tom, že ten soubor kde jsou ty cookie je includovan na stránku jako univerzální header, ale bohužel se mi to chová stejně i když to mám pouze na indexu. Nad tím je už jedině mysql_connect.

Rád bych Vám to ukázal, ale mám to na localhostu.
Chro
Profil
dedMaus:
Netuším, v čem může být tvůj problém. Ale střelím od boku. Zkus nastavovat cookie s platností pro celou doménu , tzn. cestu (lomítko jako 4. argument funkce), příklad:
setcookie('login', $cookielogin, time() + 60*60*24*30, '/');

Pokud se nenastaví cesta, platí cookie pro adresář, ve kterém skript cookie nastavil, případně podadresáře daného adresáře.
Petr__
Profil *
dedMaus:
Nemáte před tím setcookie nějaký (jakýkoliv) výstup? Nesmí tam před tím být žádný HTML kód, ani mezera, prázdné řádky, cokoliv, prostě nic. Taky tam můžete mít vložený BOM. Pokud vám funguje ten čistý soubor od Chro, tak máte chybu někde u sebe.
Tori
Profil
dedMaus:
Takže zapisuji coockies...prostě se mi to normal zapíše, ale tady je problém, že jak prostě zapnu ten web tak se hned nespustí ty coockies...až po dalším načtení
Funkce setcookie odešle cookie prohlížeči. Ta samá cookie se ale objeví v poli $_COOKIE až při dalším požadavku (stránce). Pokud používáte něco jako:
setcookie('prihlasen', 1, time()+60*60*24*30, '/');
if ($_COOKIE['prihlasen'])  { .......
, tak vám to z tohoto důvodu funguje až od druhé stránky.
Pomohlo by paralelně odesílat koláčky prohlížeči i ukládat do $_COOKIE ?
dedMaus
Profil
Krása...Díky moc pánové. Ten 4. parametr pomohl a teď to šlape perfektně. Znova mnohokrát všem děkuji za pomoc. Škoda, že se nedá dávat plusko na fóru :D

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: