PHP formulář zasílající vyplněné údaje na mail Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Stene
Level 6
Level 6
Příspěvky: 3124
Registrován: únor 09
Bydliště: Jihlava
Pohlaví: Muž
Stav:
Offline
Kontakt:

PHP formulář zasílající vyplněné údaje na mail  Vyřešeno

Příspěvekod Stene » 26 dub 2010 17:41

Pánové, prosím vás.
Mám tento kód
(html kód je na stránce například index.html)
[syntax=xhtml]
<form action="mail_kontrola.php" method="post" id="formular" />
<b>Váše e-mailová schránka</b><br><input name="email" size="25" value="@" /><br />
<b>Vaše celé jméno</b><br><input name="jmeno" size="25" /><br />
<b>Předmět zprávy</b><br><input name="predmet" size="25" /><br />
<b>Text žádosti</b><br><textarea name="zprava" rows="6" cols="35">Vaše zpráva...</textarea><br />
</form>
<b>Antispamová kontrola</b><br>
<strong>7 + 3 =</strong><input name="kontrola" type="text" size="1" /> <br /><br>
<input type="submit" value="Odeslat" />
</span>
</body>
[/syntax]

(A php kód je např na stránce "mail_kontrola.php")
[syntax=php]
<?php
$predmet = $_POST['predmet'];
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$kontrola = $_POST['kontrola'];
$zprava = $_POST['zprava'];

if (($predmet!="") and ($jmeno!="") and ($email!="") and ($zprava!="") and ($kontrola=="10"))
{
$zprava .= $jmeno;
Mail("kittlerpeta@centrum.cz", $predmet, $zprava, "From:".$email);
echo "<p><strong>E-mail byl úspěšně poslán</strong>.</p>"; }
else
{
echo "<p>E-mail se <strong>nepodařilo poslat</strong> možná kvůli nevyplnění všech údajů nebo kontrolní otázky.</p>";
}
?>
[/syntax]


Když tyto dva kódy dám do jedné stránky (například index.html) tak se mi tam zobrazí jak formulár (html stránky) tak echo (z php stránky).. Jak to všechno dát na jednu stránkus tím, že se bude zobrazovat pouze html část a po špatném vyplnění by se pod formulářem objevil třeba text "vyplnil si to špatně joudo"..

Doufám, že mě chápete. Už jsem toho pár vyzkoušel, ale moje php vědomosti nesahají tak daleko jako ty vaše. Budu rád za odpovědi.
Pokud nechápete moji otázku, rád vám tuto situaci ještě jednou vysvětlím.

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP formulář zasílající vyplněné údaje na mail

Příspěvekod CZechBoY » 27 dub 2010 07:49

[syntax lang=php]
// předmět s diakritikou
$clearsubject = $_POST['subject'];
$encodedsubject = base64_encode ($clearsubject);
$predmet = "=?utf-8?B?$encodedsubject?=";
//nastavení mailu
$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
$headers.= "Content-Transfer-Encoding: 8bit\r\n";
$headers.= "From: $od\r\n";
[/syntax]

tento kód si tam vlož, je to pro nastavení kódoání emailu a následné používání diakritiky :-)) samozřejmě tam musíš něco obměnit aby ti to šlo, nevim jestli máš kódování utf-8 nebo windows1250.

pokud chceš vědět jestli je odeslanej formulář není nic jednoduššího než dát do formuláře <input type="hidden" name="odeslano" value="1"> potom v PHP na začátku jen dáš If($_POST['odeslano']){další If na prázdné hodnoty, Mail}
potom ještě dej místo holé funkce Mail podmínku [php]If(Mail(...,...,..)) echo "Email odeslán"; else echo "Email se nepodařilo odeslat";[/php]
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Stene
Level 6
Level 6
Příspěvky: 3124
Registrován: únor 09
Bydliště: Jihlava
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP formulář zasílající vyplněné údaje na mail

Příspěvekod Stene » 27 dub 2010 15:16

Jak tedy bude vypadat celý kód? Nějak mi to nejde dohromady, vždycky mi to vyhodí nějakou chybovou hlášku.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP formulář zasílající vyplněné údaje na mail

Příspěvekod CZechBoY » 27 dub 2010 15:44

Řekni kde máš chybu(řádek)
mě ten kod nejde zkopírovat :(

no nic nevim co sem dělal špatně při kopírovaní :D
[syntax lang=xhtml]
<form action="mail_kontrola.php" method="post" id="formular" />
<label>Váše e-mailová schránka</label><br><input name="email" size="25" value="@" /><br />
<label>Vaše celé jméno</label><br><input name="jmeno" size="25" /><br />
<label>Předmět zprávy</label><br><input name="predmet" size="25" /><br />
<label>Text žádosti</label><br><textarea name="zprava" rows="6" cols="35">Vaše zpráva...</textarea><br />
</form>
<b>Antispamová kontrola</b><br>
<strong>7 + 3 =</strong><input name="kontrola" type="text" size="2" /> <br /><br />
<input type="submit" value="Odeslat" />
</span>
[/syntax]
[syntax lang=php]
<?php
If($_POST['kontrola']==10){
$ok=true;
$post = Array("predmet","jmeno","email","zprava");
For($i=0;$i<4;$i++):
If(Empty($_POST[$post[$i]])){
$ok=false;
break;
}
EndFor;
If($ok){
$predmet = $_POST['predmet'];
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$kontrola = $_POST['kontrola'];
$zprava = $_POST['zprava'];
$zprava .= "\n".$jmeno;

If(Mail("kittlerpeta@centrum.cz", $predmet, $zprava, "From:".$email)) echo "<p><strong>E-mail byl úspěšně poslán</strong>.</p>";
else echo "<p>E-mail se <strong>nepodařilo poslat</strong> možná kvůli nevyplnění všech údajů nebo kontrolní otázky.</p>";
}
}
else echo "<span class='alert'>Neopsali jste správně ověřovací kód</span><br>\n";
?>
[/syntax]

jestli s eněkdo bude divit proč dělám ověření prázdnosti řetězce přes FOR tak se tomu taky divim, ale při více polích si myslím že to je lepší.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Stene
Level 6
Level 6
Příspěvky: 3124
Registrován: únor 09
Bydliště: Jihlava
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP formulář zasílající vyplněné údaje na mail

Příspěvekod Stene » 27 dub 2010 16:23

Říkal, jsem, že bych to potřeboval obojí na jedný stránce. Takže by to mohlo vypadat asi takto?

[syntax=php]
<?php

$predmet = $_POST['predmet'];
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$kontrola = $_POST['kontrola'];
$zprava = $_POST['zprava'];

if(isset($_POST["odeslat"])){
if (($predmet!="") and ($jmeno!="") and ($email!="") and ($zprava!="") and ($kontrola=="10")){
$zprava .= $jmeno;
Mail("muj mail", $predmet, $zprava, "From:".$email);
echo "<p><strong>E-mail byl úspěšně poslán</strong>.</p>";
}else{
echo "<p>E-mail se <strong>nepodařilo poslat</strong> možná kvůli nevyplnění všech údajů nebo kontrolní otázky.</p>";
}
}
?>
[/syntax]

[syntax=xhtml]
<form action="#" method="post" id="formular" />
<b>Váše e-mailová schránka</b><br><input name="email" size="25" value="@" /><br />
<b>Vaše celé jméno</b><br><input name="jmeno" size="25" /><br />
<b>Předmět zprávy</b><br><input name="predmet" size="25" /><br />
<b>Text žádosti</b><br><textarea name="zprava" rows="6" cols="35">Vaše zpráva...</textarea><br />
</form>
<b>Antispamová kontrola</b><br>
<strong>7 + 3 =</strong><input name="kontrola" type="text" size="1" /> <br /><br>
<input type="submit" value="odeslat" />
</span>[/syntax]

Ale proč se při stisknutí na tlačítko odeslat nic neděje? :(
Jak tak zjištuji, php jsme zapomněl :(


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Kontaktní formulář
    od webovynadsenec » 30 črc 2024 02:31 » v Programování a tvorba webu
    2
    2534
    od HelFix Zobrazit poslední příspěvek
    30 črc 2024 09:07

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Majestic-12 [Bot] a 3 hosti