Autor Zpráva
kuzmic
Profil *
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
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
kuzmic:
<?php
session_start();
if(!isset($_SESSION["refresh"])){
  header("Refresh: 2");
}
$_SESSION["refresh"] = "refresh";
?>
kuzmic
Profil *
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
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 *
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
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 *
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
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 *
bohužel ani po této změně žádný pokrok:(
Joker
Profil
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
[#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 *
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
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 *
Vyzkouším i tak moc díky.
df
Profil *
Nemáš otočené většítko u toho ifu?
AM_
Profil
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).
gagi
Profil
Mám takový návrh na ten refresh, zadej to takhle
header("Refresh:")
...u refresh nezadávej žádnou hodnotu. :) GAGI

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: