Autor Zpráva
robbie
Profil
1.Zdravím , pokouším se zprovoznit odesílání dat z formuláře na mail, ale už nevím proč to nefunguje, poradíte?
Kod přikladam, ale nevkládal jsem obsah elementu <head>, pouze <body>. Položky formuláře jsou dělané v Boostrapu.

2.A druhá věc, nevíte jak se dostanu do starších svých příspěvků tady na foru, vidím jen cca 10 svých posledních. Děkuju moc

<?php
$to = '...xy......@...cz';
$email = $_POST['email'];
$name = $_POST['name'];
$dotaz = $_POST['dotaz'];

mail($to,$email,$name,$dotaz);

?>

<html>
<body>
<form  role="form"  action="" method="POST">
<div class="form-group">
<label for="name">Jméno</label>
<input type="text" class="form-control" id="name" name="name"
placeholder="Vložte vaše jméno">
</div>

<div class="form-group">
<label for="email">E-mail</label>
<input type="text" class="form-control" id="email"  name="email"
placeholder="Vložte váš E-mail">
</div>
<div class="form-group">
<label for="dotaz">Váš dotaz</label>
<input type="textarea" class="form-control" id="dotaz" name="dotaz"
placeholder="Váš dotaz" >
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary">Odeslat</button>
</div>
<div class="form-group">
<button type="reset" name="reset" class="btn btn-default">Reset</button>
</div>
</form>
</body>
</html>
Nuimi
Profil
Zadnou chybu jsem nenasel, ale delal jsem neco na podobnem principu, tak ti prikladam kod a muzes to podle nej zkusit upravit, treba je chyba prave v HEad

<form method="post">
                            <input name="jmeno" class="wow fadeIndown animated" data-wow-delay=".6s" type="text" 
                                   placeholder="Jméno a přijmení" required="">
                            <input  name="email" class="wow fadeIndown animated" data-wow-delay=".7s" type="text" 
                                    placeholder="Email" required="">
                            <input name="predmet" class="wow fadeIndown animated" data-wow-delay=".8s" type="text" 
                                   placeholder="Předmět" required="">
                            <textarea name="zprava" class="wow fadeIndown animated" data-wow-delay=".8s" 
                                      placeholder="Zpráva" required="">
                                          
                            </textarea>
                            <input class="wow fadeIndown animated" name="pokus" data-wow-delay=".9s" type="submit" value="Odešli">
                        </form>
                        <?php
                             if(isset($_POST['pokus']))
                             {  
                                  $cil="Nuimi@seznam.cz";
                                   $predmet = $_POST['predmet'];
                                   $odesilatel = $_POST['email'];
                                   $zahlavi = "MIME-Version: 1.0\r\n";
                                   $zahlavi .= "Content-type: text/html; charset=\"utf-8\"\r\n";;
                                   $zahlavi .= "From:".$_POST['email']."\r\n";
                                  $text =$_POST['zprava'];
                                   
                                   if(isset($predmet))
                                   {
                                    mail($cil, $predmet, $text, $zahlavi);
                                    echo("<script> alert('Email byl odeslán');window.location.href=\"products.php\";</script>");
                                   }
                             }    
                        ?>



jen jeste zkus dat ten PHP kod spise na konec, na zacatek se vetsinou davaji scripty
Keeehi
Profil
robbie:
Chyba tam samozřejmě je. Funkce mail má určité parametry, nemůžeš čekat, že do ní nahážeš libovolně nějaké proměnné a ona si s tím poradí.
První je komu se to má odeslat. To máš dobře.
Druhý je předmět. Asi nechceš mít v předmětu email.
Třetí je celé tělo zprávy. Tam asi nechceš mít jen jméno.
A čtvrtý jsou hlavičky. Takové ty technické věci jako nastavení kódování, odesílatel a podobně. To máš špatně úplně nejvíc.

Bez hlaviček by to mohlo vypadat takto
$to = '...xy......@...cz';
$email = $_POST['email'];
$name = $_POST['name'];
$dotaz = $_POST['dotaz'];
 
mail($to, "Dotaz od $name", "Jméno: $name\nEmail: $email\n\n$dotaz");
Poslat ale správně email není vůbec sranda. Proto bys měl využít už nějaké hotové řešení, které to vše nastaví správně.
Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky. nebo github.com/PHPMailer/PHPMailer/blob/master/README.md

A ještě poslední věc, pokud stránky testuješ na svém počítači, tak emaily nebudou chodit ani tak, protože webserver jsi si nainstaloval, ale mailserver si instaluje málokdo.

Nuimi:
jeste zkus dat ten PHP kod spise na konec, na zacatek se vetsinou davaji scripty
Blbost
davidfronek
Profil
Keeehi:
A ještě poslední věc, pokud stránky testuješ na svém počítači, tak emaily nebudou chodit ani tak, protože webserver jsi si nainstaloval, ale mailserver si instaluje málokdo.

Pokud to testuje na localhostu, tak samozřejmě odesílat maily může, předpokládám, že bude mít nainstalovaný nějaký server, třeba XAMPP...

A něco mít určitě nainstalované bude, jinak by scripty nespustil...
robbie
Profil
Tak jsem zkusil ještě udělat formulář podle návodu zde na jakpsatweb a taky to nefachčí, nějaký nápad prosím? Na Endora.cz píší, že ve Free verzi hostingu by funkce Mail(); měla fungovat...

HTML Form:

<div class="col-md-6 col-sm-6 col-xs-12"> 

<form action="send.php" method="post" role="form">
<div class="form-group">
Odesílatel:<input name="email"  class="form-control"
size="30" type="text" placeholder="Váš e-mail"/>
</div>
<div class="form-group">
Předmět:<input name="predmet" class="form-control"
 size="30" type="text" placeholder="Předmět"/>
</div>
<div class="form-group">
Vypočítej:<input name="spam" class="form-control"
size="23" type="text" placeholder="Zadej součet"/><strong>= 1 + 1</strong>
</div>
<div class="form-group">
Zpráva:<textarea class="form-control"
 name="zprava" rows="8" cols="50" placeholder="Váš dotaz"></textarea>
<div class="form-group">
<input type="submit" class="button" value="Odeslat e-mail!"/>
</form>
</div>






PHP soubor:
send.php jsem zadal

<?
$prijemce = $_POST['...........@seznam.cz'];
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['dotaz'];
if ($prijemce!="" and $predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail($prijemce, $predmet, $zprava, "From: " . $email);
echo "<p>Váš e-mail byl úspěšně odeslán!";
}
else
{
echo "<p>Váš e-mail nelze odeslat, nebo jste špatně vyplnili matematický příklad!</p>";
}
?>
    </body>
</html>
Keeehi
Profil
POST u příjemce nemá co dělat. Vždyť to vůbec nemáš ve formuláři. Žádný z inputů se nejmenuje ...........@seznam.cz.
$prijemce = '...........@seznam.cz';
robbie
Profil
Keeehi:
tohle už jsem opravil $prijemce, ale po odeslání formuláře se mi objeví chyba 404, že stránka send.php nenalezena, přitom ji mám nahranou se scriptem na serveru..
robbie
Profil
Omlouvám se, moje stupidní chyba. nevím proč jsem do $_POST['dotaz' ]; dával dotaz místo zpráva. Božee.
Děkuju Vám

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: