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.
PHP formulář zasílající vyplněné údaje na mail Vyřešeno
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: PHP formulář zasílající vyplněné údaje na mail
[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]
// 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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Stene
- Level 6
- Příspěvky: 3124
- Registrován: únor 09
- Bydliště: Jihlava
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: PHP formulář zasílající vyplněné údaje na mail
Jak tedy bude vypadat celý kód? Nějak mi to nejde dohromady, vždycky mi to vyhodí nějakou chybovou hlášku.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: PHP formulář zasílající vyplněné údaje na mail
Řekni kde máš chybu(řádek)
mě ten kod nejde zkopírovat :(
no nic nevim co sem dělal špatně při kopírovaní
[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ší.
mě ten kod nejde zkopírovat :(
no nic nevim co sem dělal špatně při kopírovaní

[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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Stene
- Level 6
- Příspěvky: 3124
- Registrován: únor 09
- Bydliště: Jihlava
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: PHP formulář zasílající vyplněné údaje na mail
Ří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 :(
[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
-
- 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: Žádní registrovaní uživatelé a 5 hostů