Autor Zpráva
Akali
Profil
Ahoj, po odeslání formuláře když kliknu na F5, odešle se znova

<form name="odeslano" action="#" method="post">
<b>-Jméno:</b><br>
<input name="jmeno" size="10"><br>
<b>-Zpráva:</b><br>
<textarea name="text" rows="3" cols="30"></textarea><br>
<input type="submit" name="odeslano" value="Odeslat zprávu">
</form>

<h6>Při zaslání příspěvku do tohoto fóra, je zapisována Vaše ip-adresa, chovejte se proto tak, jak máte. Vyjadřujte se slušně </h6>
<hr>


<?php
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']))
    {   

        echo "<div id=\"neodeslano\">&nbsp;&nbsp;<img src=../images/Vykricnik.gif height=40px width=40px>
        <table align=left>
        <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr>
        <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr>
        </table></div>";
    }
    else
    {
        $ref = $REMOTE_ADDR;
        $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); 

        // Připojení k databázi.
include '../db.php';

        // Správné nastavení češtiny.
        $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");

        // Vytvoření SQL příkazu typu INSERT.
        $sql_prikaz = 
            "INSERT INTO dorost(jmeno, datum, ip_adresa, text) "
            ."VALUES('"
            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
            ."','"
            .mysqli_real_escape_string($db_spojeni,$datum)
            ."','" 
            .mysqli_real_escape_string($db_spojeni,$ref)
            ."','"
            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
            ."')"
        ;

        // Zaslání SQL příkazu do databáze.
        $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);

        echo "<div id=\"odeslano\"><img src=../images/ok.png height=40px width=40px><span style=\"vertical-align: top\">Vaše zpráva byla úspěšně odeslána</span></div>";
UNSET($_POST['odeslano']);    
    }
}
?>


Myslel jsem, že když dám UNSET($_POST['odeslano']); -> že to dělat nebude.. Ale je to naprosto stejné.
Jak to tedy vyřešit. Slyšel jsem o metodě přesměrování, ale jak to funguje?

Odešlu formulář, přesměruje se to na stránku "x" a jak dám uživateli vědět, zda to bylo odesláno, či nebylo?
denCo
Profil
presmeruj ho nejak takto
header("Location: stranka.php?ok");

a tam na tej stranke to kontroluj nejako takto
if ( $_SERVER['REQUEST_URI'] == "ok") {
echo "uspesne ste osodlali formular";
}
Akali
Profil
A když to mám všechno na jedné stránce, jak dám tedy vědět o úspěšném odeslání

<?php
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']))
    {   

        echo "<div id=\"neodeslano\">&nbsp;&nbsp;<img src=../images/Vykricnik.gif height=40px width=40px>
        <table align=left>
        <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr>
        <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr>
        </table></div>";
    }
    else
    {
        $ref = $REMOTE_ADDR;
        $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); 

        // Připojení k databázi.
include '../db.php';

        // Správné nastavení češtiny.
        $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");

        // Vytvoření SQL příkazu typu INSERT.
        $sql_prikaz = 
            "INSERT INTO dorost(jmeno, datum, ip_adresa, text) "
            ."VALUES('"
            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
            ."','"
            .mysqli_real_escape_string($db_spojeni,$datum)
            ."','" 
            .mysqli_real_escape_string($db_spojeni,$ref)
            ."','"
            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
            ."')"
        ;

        // Zaslání SQL příkazu do databáze.
        $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);
    
    header("Location: forum.php?ok");
    }
}
?>

Kam přijde ta kontrola
if ( $_SERVER['REQUEST_URI'] == "ok") {
echo "uspesne ste osodlali formular";
}
SwimX
Profil
Akali:
na uplný konec toho kódu co si sem dal.
denCo
Profil
to je fuk, hocikde mimo if (isset($_POST['odeslano']))
Akali
Profil
Tak nevím.. Sice po přesměrování a kliknutí na F5 se opět neodešle, ale zpráva o úspěšném odeslání se nezobrazí : )
Tady je celej kód

<?php
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']))
    {   

        echo "<div id=\"neodeslano\">&nbsp;&nbsp;<img src=../images/Vykricnik.gif height=40px width=40px>
        <table align=left>
        <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr>
        <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr>
        </table></div>";
    }
    else
    {
        $ref = $REMOTE_ADDR;
        $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); 

        // Připojení k databázi.
include '../db.php';

        // Správné nastavení češtiny.
        $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");

        // Vytvoření SQL příkazu typu INSERT.
        $sql_prikaz = 
            "INSERT INTO dorost(jmeno, datum, ip_adresa, text) "
            ."VALUES('"
            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
            ."','"
            .mysqli_real_escape_string($db_spojeni,$datum)
            ."','" 
            .mysqli_real_escape_string($db_spojeni,$ref)
            ."','"
            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
            ."')"
        ;

        // Zaslání SQL příkazu do databáze.
        $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);
    
    header("Location: forum.php?ok");
    
    if ( $_SERVER['REQUEST_URI'] == "ok") {
echo "uspesne ste osodlali formular";
    }
  }
}
?>
SwimX
Profil
Akali:
SwimX:
na uplný konec toho kódu co si sem dal.
denCo:
to je fuk, hocikde mimo if (isset($_POST['odeslano']))

a ty to dáš do té podmínky.
Akali
Profil
Jo, zkoušel jsem to i takto a nic se nestalo

<?php
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']))
    {   

        echo "<div id=\"neodeslano\">&nbsp;&nbsp;<img src=../images/Vykricnik.gif height=40px width=40px>
        <table align=left>
        <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr>
        <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr>
        </table></div>";
    }
    else
    {
        $ref = $REMOTE_ADDR;
        $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); 

        // Připojení k databázi.
include '../db.php';

        // Správné nastavení češtiny.
        $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");

        // Vytvoření SQL příkazu typu INSERT.
        $sql_prikaz = 
            "INSERT INTO dorost(jmeno, datum, ip_adresa, text) "
            ."VALUES('"
            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
            ."','"
            .mysqli_real_escape_string($db_spojeni,$datum)
            ."','" 
            .mysqli_real_escape_string($db_spojeni,$ref)
            ."','"
            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
            ."')"
        ;

        // Zaslání SQL příkazu do databáze.
        $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);
    
    header("Location: forum.php?ok");
    
 
  }
} 
if ( $_SERVER['REQUEST_URI'] == "ok") {
echo "odeslano";
}
?>
Keeehi
Profil
Akali:
Pořád špatně, když nakonec, tak nakonec! ta závorka tem není pro srandu.
Akali
Profil
Keeehi
SwimX:
„na uplný konec toho kódu co si sem dal.“

Nevím kde je větší konec než tam, kde ten kód je :(
Myslíte snad až pod tento PHP kód? Nejspíš Vás nechápu : )
Keeehi
Profil
Keeehi:
Až za tu poslední závorku }.

Já končím, toto se už nedá. Dneska je problém i najít konec.
Akali
Profil
Tak se na ten kód podívej ještě jednou.. Tohle totiž patří k sobě

if ( $_SERVER['REQUEST_URI'] == "ok") {
echo "odeslano";
}

Tenhle script je pod vším ostatním.. Dneska by sis asi měl dát voraz
Keeehi
Profil
Akali:
Omlouvám se, to jsem přehlédl. Tady bych já totiž závorky nepsal.
Můžete zkusit tuto podmínku if(isset($_GET["ok"]))
Akali
Profil
Pohodička, jenom jsem si to raději 10krát kontroloval..

Jenže ty závorky za nefunkčnost nemůžou, ne?
Keeehi
Profil
Akali:
Závorky by měli být v pořádku.
Co vlasně vypíše echo $_SERVER['REQUEST_URI'];?
Akali
Profil
Tak tohle taky nefunguje
 if(isset($_GET["ok"]))
echo "odeslano"; 



a
echo $_SERVER['REQUEST_URI'];? 
vypsala pouze toto /dorost/forum.php?ok
Akali
Profil
Tak se omlouvám! Tento způsob funguje!
Děkuji Vám!
Keeehi
Profil
Akali:
vypsala pouze toto /dorost/forum.php?ok
- proto se to nikdy nemohlo rovnat stringu "ok"
AM_
Profil
[#12] Akali
kdyby s to měl kulturně odsazené
if ( $_SERVER['REQUEST_URI'] == "ok") {
    echo "odeslano";
}

hned by to bylo vidět.

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:

0