Proč nefunguje cookies?
15 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Chtěl jsem udělat inteligentní formulář s předvyplněným jménem a emailem.Na jakymkoli jinym servru mi to funguje jen na wz ne, takže chyba zřejmě neni na mé straně.Pokud s tim někdo dokážete poradit, tak bych byl vděčen.
-
EHM, co kdyz nekdo bude mit cookies vypnute? Co pak? Spis to zkus pomoci PHP...
-
To mě taky napadlo.To myslíš jako ukládat to do databáze?
-
Ale stejnak by mě zajímalo proč to nefunguje jen tady.
-
Pokud ten formular bude predvyplnenej na zaklade prihlasovani jmeno/heslo, tak treba z databaze nebo ja pro to predvyplneny jmeno pouzivam SESSION. Cookies pouzivam minimalne, ale funguji mi tu vsude. Kdyztak pockej, jestli ti na to neco nenapise admin mira. Scar
-
Ne mám to jenom na jméno a na email, takže SESSION by mělo stačit. Jenom poslední otázečka, jak se to používá?Mohl bys mi prosím napsat stručně nějakej příklad? Dík.
-
Na zacatek skriptu, popr. html dokumentu umistis session_start(); //spusti pouzivani session $_SESSION["tvuj_nazev_promenne"] = $nejaka_hodnota_kterou_registrujes; Tahle promenna v session poli je pak registrovana po celou dobu, dokud okno prohlizece nezavres nebo ji neodhlasis. Volani hodnoty v promenne uz pak napr.: echo $_SESSION["tvuj_nazev_promenne"]; Kdyz se pak rozhodnes tu urcitou session hodnotu nepouzivat, napises: session_unset($_SESSION["tvuj_nazev_promenne'"); A nakonec pro zruseni pouzivani session napises: session_destroy(); Staci? ;-) Scar
-
Jo a jeste jedna vec, najdi si o tom nejakej clanek, popripade kup knihu o PHP, pokud jeste nemas. Jenom upozornuju, aby to byl navod, popripade komentar, obsahujici praci se $_SESSION polem a ne neco jinyho. Tohle pole je jaksi novejsi zpusob, prechazi se postupne na superglobalni promenne, takze pokud nekde uvidis: session_register("barney"); jako registrovani session, bez radsi od toho. Scar
-
Zjistim, doučim... Díky moc!
-
Pomocí session zajistíš "automatické vyplňování" jména v nějaké kratší aplikaci. Tzn. pokud s ní třeba uživatel právě pracuje a nechceš, aby musel stále donekonečna něco vyplňovat. Porblém nastane, když budeš chtít automaticky doplnit údaje, když na tvé stránky přijde někdy znovu (např. po pár dnech, nebo mezitím už vypnul a zapnul prohlížeč). Pak už session informace nebude existovat. V tom případě použiješ cookies, k čemuž jsou přímo určeny. Pracuje se s nimi skoro stejně, pomocí $_COOKIE (opět můžeš narazit na "starší způsob", ale raději si vyhledej tento nový).
-
Vyzkoušel jsem snad všechny způsoby, ale stále nic. I tyto nové způsoby, které mi navrhujete, ale stále používají stejný princip, který nefunguje.Prosím vyzkoušejte tento malý test a uvidíte jestli bude funovat: <? if ($set == 1): $var[0] = $jmeno; $var[1] = $email; $values = Implode($var, "###"); SetCookie ("visitor", $values, $timein+31536000); //3. člen = platnost cookie; implicidně rok endif; ?> <!-- Creation date: 26.5.2002 --> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title></title> <style type="text/css"> input {border: 1px solid black; background-color: white; height: 15px; font-family: verdana; font-size: 10px; text-transform: uppercase; color: navy;} p {font-family: verdana; font-size: 10px; text-transform: none; color: navy;} </style> </head> <body> <table border="0" cellspacing="0" cellpadding="0" width="500" height="1" align="left" valign="top" style=""> <? if ($submit == "send"): echo "<tr><td><p>Hodnota proměnné \$jmeno je <b>".$jmeno."</b>.<br>Hodnota proměnné \$email je <b>".$email."</b>.<br>Hodnota proměnné \$vzkaz je <b>".$vzkaz."</b>.</p></td></tr>"; else: ?> <form name="formular" method="post"> <? If ($visitor): $var = Explode("###", $visitor); else: $var[0] = ""; $var[1] = ""; echo "<input type=\"hidden\" name=\"set\" value=\"1\">"; //pokud cookie neexistuje, hned po odeslání formuláře ji uložíme endif; ?> <tr><td colspan="2"><p>Vyplňte formulář a odešlete jej. <br>Poté toto okno zavřete a znova jej otevřete.</p></td></tr> <tr><td colspan="2"> </td></tr> <tr><td width="50"><p>Jméno: </p></td><td><p><input type="text" id="in1" name="jmeno" value="<? echo $var[0] ?>" size="30"></p></td></tr> <tr><td><p>E-mail: </p></td><td><p><input type="text" id="in2" name="email" value="<? echo $var[1] ?>" size="30"></p></td></tr> <tr><td><p>Vzkaz: </p></td><td><p><input type="text" id="in3" name="vzkaz" value="" size="30"></p></td></tr> <tr><td colspan="2"> </td></tr> <tr><td colspan="2"><input type="submit" name="submit" value="send"></td></tr> </form> <? endif; ?> </table> </body> Mě prostě na wz nefunguje, ale na jakymkoli inym serveru ano.
-
Zkus úplně základní příklad. Když ti začne fungovat, můžeš ho postupně doplňovat o další věci a průběžně testovat. To je moje osvědčená metoda, když nevím, co dál. Např.: // prvni stranka <?php SetCookie ('uzivatel', $jmeno.'###'.$email, Time()+30*24*60*60); // 30 dni * 34 hodin * 60 minut * 60 sekund = 1 mesic // ..... zbytek prvni stranky ..... ?> // druha stranka <?php if (IsSet($_COOKIE['uzivatel'])) { $data = Explode('###', $_COOKIE['uzivatel']); $jmeno = $data[0]; $email = $data[1]; } // ..... zbytek druhe stranky ..... ?> <input type="text" name="jmeno" value="<?php if (IsSet($jmeno)) echo $jmeno; ?>"> <input type="text" name="email" value="<?php if (IsSet($email)) echo $email; ?>">
-
scarabeus : mel bys psat manual k php - cely den se pachtim po vypsani session! Diks ze zijes. ps co je spatny na session_register?
-
Že to nový verze neberou.
-
To neni tak uplne pravda, protoze jestlize si u novejsi verze nastavis v php.ini register_globals = on, pujde to i tak. Casem se ale prejde na off a tak je lepsi, kdyz uz, naucit se "novejsi" zpusob. Vypnutim registrovani globalnich promennych se docili pouzivani superglobalnich = specialnich asociativnich poli, jako je $_POST, $_GET, $_SERVER, $_COOKIES, $_FILE a mozna i jiny :-)))