Autor | Zpráva | ||
---|---|---|---|
kuzmic Profil * |
#1 · Zasláno: 28. 11. 2009, 09:36:44
Dobrý den,
chtěl bych se zeptat, potřeboval bych provést při načtení stránky, její refresh,ale pouze jednou. Na internetu jsem našel příkaz header("refresh: 2 second"); , ale ten to refreshuje každé 2 sekundy, já bych to právě potřeboval provést hned jak se načte stránka a jenom jednou. Nevíte čím by se to dalo ošetřit?děkuji. |
||
Joker Profil |
#2 · Zasláno: 28. 11. 2009, 09:46:40
kuzmic:
„potřeboval bych provést při načtení stránky, její refresh,ale pouze jednou“ Proč? Nechcete spíš udělat něco jako přesměrování (header location)? |
||
Radek9 Profil |
#3 · Zasláno: 28. 11. 2009, 09:47:20
kuzmic:
<?php session_start(); if(!isset($_SESSION["refresh"])){ header("Refresh: 2"); } $_SESSION["refresh"] = "refresh"; ?> |
||
kuzmic Profil * |
#4 · Zasláno: 28. 11. 2009, 09:53:48
No jde mi o to, když si zapnu přihlašovací stránku a zadám přihlašovací údaje tak mi stránka jenom problikne( refreshuje se ),ale nikam se nepřihlásím. Když ale provedu refresh hned na začátku, ještě než se zkusím přihlásit tak to normálně jde:-/
to radek9: hned to vyzkouším |
||
Joker Profil |
#5 · Zasláno: 28. 11. 2009, 10:30:57
kuzmic:
„No jde mi o to, když si zapnu přihlašovací stránku a zadám přihlašovací údaje tak mi stránka jenom problikne( refreshuje se ),ale nikam se nepřihlásím“ V tom případě by možná bylo lepší řešit tenhle problém, než vymýšlet obezličky. |
||
kuzmic Profil * |
#6 · Zasláno: 28. 11. 2009, 10:43:37
tak jestli by jsi věděl kde je chyba, já ji nedokázal najít:-(. Mám hlavní hlavní stránku, kde se přihlašuju, jak jsem psal, zadám jméno a heslo a nic to neprovede, když to zopakuju tak to normálně jde:-(.
kod přihlašovací stránky <?php include "connect.php"; include "head.php"; ?> <html> <head> <meta http-equiv="content-type" content="text/html" charset="ISO-8859-2" /> <title>Lékárna</title> <link rel="stylesheet" type="text/css" href="css/styl.css" /> </head> <body> <?php session_start(); if(!isset($_SESSION["refresh"])) { header("refresh: 1"); } $_SESSION["refresh"]="refresh"; $_SESSION['rovnase']='ne'; if(isset($_POST['jmeno'])) $jmeno = $_POST['jmeno']; else $jmeno = NULL; if(isset($_POST['heslo'])) $heslo = $_POST['heslo']; else $heslo = NULL; $sql=mysql_query("SELECT * FROM zamestnanec WHERE jmeno='$jmeno' and prijmeni='$heslo'"); while($row = mysql_fetch_array($sql)) { if((($_POST['jmeno'])==$row['jmeno']) and (($_POST['heslo'])==$row['prijmeni'])) { //session_regenerate_id(); $_SESSION['rovnase']='ano'; //echo "ano"; header("location: uvod.php"); $_SESSION['jmeno']=$row['username']; $_SESSION['heslo']=$row['password']; $_SESSION['typ']=$row['typ']; } else { $_SESSION['rovnase']='ne'; } } if((empty($_POST['jmeno']) or (empty($_POST['heslo'])))) { echo "<div id='error'>Zadejte jméno a heslo</div>"; } elseif($_SESSION['rovnase']=='ne') { echo "<div id='error'>někde je chyba</div>"; } ?> <div id="login"><img src="img/login.jpg"></div> <div id="login_tabulka"> <form action="" method="post"> <table> <tr> <td>Jméno:</td><td><input type="text" name="jmeno" ></td> </tr> <tr> <td>Heslo:</td><td><input type="password" name="heslo" ></td> </tr> </table> <input type="submit" value="Přihlásit"> <p>Jméno: admin</br>Heslo: test</p> </form> </div> </body> </html> kod kam se dostanu když se dobře přihlásím <?php include "head.php"; include "connect.php"; include "logout2.php"; ?> <html> <head> <meta http-equiv="content-type" content="text/html" charset="ISO-8859-2"> <title>Uvodní stránka</title> <link rel="stylesheet" type="text/css" href="css/styl.css" /> </head> <body> <?php session_start(); if($_SESSION['rovnase']=='ano') { echo "<div id='login_jmeno'><b>Informace o příhlášení</b>"; echo "<table border=0><tr><td>Vaše uživatelské jméno je:</td>"."<td>".$_SESSION['jmeno']."</td></tr>"; echo "<tr><td>Váš typ účtu je:</td><td>".$_SESSION['typ']."</td></tr>"; echo "</tr><td>Vaše uživatelské heslo je:</td>"."<td>".$_SESSION['heslo']."</td></tr></table></div>"; } elseif($_SESSION['rovnase']=='ne') { header("location: index1.php"); } if ($_SESSION["access_time"] < strtotime("-5000 second")) { $_SESSION["rovnase"] = 'ne'; header("location: index1.php"); echo "<script>alert('byly jste odhlášení')</script>"; } $_SESSION["access_time"] = time(); include "menu2.php"; ?> </body> </html> Ono podle mě bude asi zakopaný pes v tom access time, protože musím na stránkách vytvořené automatické odhlášení po určitě době a od té doby to nejede:-( |
||
Alphard Profil |
#7 · Zasláno: 28. 11. 2009, 10:51:56
Změní se něco, když dáte session_start(); na druhý řádek (hned za <?php)?
A bylo by dobré použít mysql_real_escape_string() na ošetření vstupů. |
||
kuzmic Profil * |
#8 · Zasláno: 28. 11. 2009, 11:05:42
ee nic s nezměnilo, pořád to při prvním přihlášení nic neudělá. Mužeš to vyzkoušet na http://www.stud.fit.vutbr.cz/~xkrobo00/index.php
|
||
Nox Profil |
#9 · Zasláno: 28. 11. 2009, 11:13:12
V Radek9ově kodu musíš dát $_SESSION["refresh"] = "refresh"; PŘED if, protože pochopitelně k němu se ten skript nikdy nedostane
|
||
kuzmic Profil * |
#10 · Zasláno: 28. 11. 2009, 11:18:57
bohužel ani po této změně žádný pokrok:(
|
||
Joker Profil |
#11 · Zasláno: 28. 11. 2009, 11:19:02
kuzmic:
No, já se divím, že to vůbec funguje. Jelikož se nejdřív odešle začátek HTML a teprve pak se dělá PHP a nezdá se, že by se používal output buffering, jakékoliv volání session_start() nebo header() by mělo vyvolat tu známou "headers already sent" chybu. Nemáte náhodou nastavený error_reporting tak, že potlačí skoro všechna chybová hlášení? |
||
Alphard Profil |
#12 · Zasláno: 28. 11. 2009, 11:22:49
[#9] Stejně bych ten problém raději řešil, než obcházel.
To, že současný stav funguje aspoň trochu je myslím kvůli bufferu na serveru. Dejte tam delší html hlavičku a možná se to rozsype jako domeček z karet. Navíc testovat (zvlášť s vašim zkušenostmi, nic ve zlém) na ostrém serveru se zakázaným výpisem chyb (pravděpodobně) není moc efektivní. Zkuste se podívat na Nejčastější potíže s PHP (FAQ). |
||
kuzmic Profil * |
#13 · Zasláno: 28. 11. 2009, 11:24:13
ohhhh, ne ne error_reporting vypnutý určitě není, testuju to na localhostu a pak to teprve dávám na server a ani v jednom bodě to nenapsalo žádnou chybovou hlášku nebo, že by bylo něco špatně, v kompilátoru to taky nic nenapíše....:-/
|
||
Alphard Profil |
#14 · Zasláno: 28. 11. 2009, 12:32:26
kuzmic:
„a ani v jednom bodě to nenapsalo žádnou chybovou hlášku“ Píše vám to třeba syntaktické chyby? Jestli ne, máte jejich výpis asi zakázaný i na localhostě. session_start() nechte na druhém řádku. Problém to sice nevyřeší, ale bude to lepší do budoucna. Zkuste trochu zpřehlednit zpracování po odeslání formuláře po vzoru FAQ. Žádná konkrétní věc, co změnit, mě bohužel nenapadá. |
||
kuzmic Profil * |
#15 · Zasláno: 28. 11. 2009, 13:00:12
Vyzkouším i tak moc díky.
|
||
Časová prodleva: 1 měsíc
|
|||
df Profil * |
#16 · Zasláno: 2. 1. 2010, 14:17:52
Nemáš otočené většítko u toho ifu?
|
||
AM_ Profil |
#17 · Zasláno: 2. 1. 2010, 20:08:59
Nox:
„V Radek9ově kodu musíš dát $_SESSION["refresh"] = "refresh"; PŘED if, protože pochopitelně k němu se ten skript nikdy nedostane“ dostane - zasláním header() se vykonávání skriptu neukončí (jen už uživatel neuvidí výsledek). |
||
Časová prodleva: 15 dní
|
|||
gagi Profil |
#18 · Zasláno: 17. 1. 2010, 12:24:06
Mám takový návrh na ten refresh, zadej to takhle
header("Refresh:") |
||
Časová prodleva: 13 let
|
0