Autor Zpráva
MaxDJs
Profil
Zdravím,

potřeboval bych poradit s jedním problémem. Ve skriptu používám funkci header(), která přesměruje uživatele zpět na formulář, pokud nevyplní nějáké údaje. Ale i když nezadám nějáké údaje, tak mě to pustí dál k nahrání dat do databáze, ale pokud tu část ve které se data nahrávájí do databáze zakomentuji, tak mi ta funkce funguje a normálně mě přesměruje zpět na formulář. Byl by někdo ochotný mi poradit?

Děkuji za odpověď

Zde je skript

<?php
if(isset($_POST["uzivJm"]) && ($_POST["uzivJm"] != "")){
$uzivJm = $_POST["uzivJm"];
}
else{
Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje");
}

if(isset($_POST["uzivHeslo"]) && ($_POST["uzivHeslo"] != "")){
$uzivHeslo = $_POST["uzivHeslo"];
}
else{
Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje");
}

if(isset($_POST["opravneni"]) && ($_POST["opravneni"] != "")){
$opravneni = (int)$_POST["opravneni"];
}
else{
Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje");
}

echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <meta http-equiv="content-language" content="cs" />
    <title>XHTML stránka</title>
  </head>
  <body>
<?php
$databaze_pripoj = mysql_connect("localhost","root","databaseroot");
$databaze = mysql_select_db("prihlaseni");
$vysledek = mysql_query("SET CHARACTER SET utf8",$databaze_pripoj);
//dotaz MySQL 
$dotaz = "INSERT INTO `uzivatele` (`id`, `uzjm`, `uzhe`, `opravneni`) VALUES (NULL, '$uzivJm', PASSWORD('$uzivHeslo'), '$opravneni')";
$vysledek = mysql_query($dotaz);
echo mysql_error();
if($vysledek){
header("Location: index.php?zprava=uzivatelvytvoren");
}
else{
header("Location: index.php?zprava=uzivatelnevytvoren");
}
?>
  </body>
</html>
DoubleThink
Profil *
Funkce header na řádcích 42 a 45 skončí chybou.

Jinak případný problém s vykonáním dotazu do databáze za tebe nikdo nevyřeší, protože jsi trouba a nenapsal jsi sem žádnou chybovou hlášku.
MaxDJs
Profil
DoubleThink:
Jinak případný problém s vykonáním dotazu do databáze za tebe nikdo nevyřeší, protože jsi trouba a nenapsal jsi sem žádnou chybovou hlášku.

Data do databáze se zapíšou, ale pouze prázdné řetězce, protože se skript nezastaví na řádcí 6,13 nebo 20, ačkoliv mi žádný data v $_POST nepřišly.
DoubleThink
Profil *
A tak. Header neukončuje běh skriptu. Dokonce ani jeho výstup. Tedy s jednou výjimkou.
MaxDJs
Profil
Ale když zakomentuju tuhle část

<?php
$databaze_pripoj = mysql_connect("localhost","root","databaseroot");
$databaze = mysql_select_db("prihlaseni");
$vysledek = mysql_query("SET CHARACTER SET utf8",$databaze_pripoj);
//dotaz MySQL 
$dotaz = "INSERT INTO `uzivatele` (`id`, `uzjm`, `uzhe`, `opravneni`) VALUES (NULL, '$uzivJm', PASSWORD('$uzivHeslo'), '$opravneni')";
$vysledek = mysql_query($dotaz);
echo mysql_error();
if($vysledek){
header("Location: index.php?zprava=uzivatelvytvoren");
}
else{
header("Location: index.php?zprava=uzivatelnevytvoren");
}
?>

tak ten header běh skriptu ukončí
Keeehi
Profil
Ale neukončí, jen si toho nevšimnete, protože prohlížeč provede přesměrování. Pokud byste v prohlížeči přesměrování zakázal, tak by se ten html kód zobrazil. V tomto případě prázdná stránka, ale s titulkem.
MaxDJs
Profil
no a o to mi jde, aby se to přesměrovalo, ale mě se to přesměrování provede jen, když mám zakomentovanou tu část kódu
Ugo
Profil
jen dodám to co tě asi i trápí - hlavičky bez zapnutého bufferu (většinou tedy) nelze posílat po jejich odeslání a k jejich odeslání dojde při prvním výstupu, takže tvé html před kódem odešle hlavičky a fce. header() potom skončí warningem u kterejch asi nemáš zaplý zobrazování, přesuň provedení před výstupy (html)

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: