| Autor | Zpráva | ||
|---|---|---|---|
| Petr Mátl Profil |
#1 · Zasláno: 21. 12. 2016, 15:01:41
Dobrý den, chtěl bych vás tady poprosit o pomoc. Nějakým způsobem se mi nedaří zprovoznit formulář tak, aby data z něho odcházela ve správném formátu. Stále přichází text s různými znaky a bez diakritiky. Nastavení mám vše na UTF-8, prošel jsme různá fora ale nenašel jsem odpověd.
Díky moc <?php header("Content-Type: text/html; Charset=UTF-8"); ?>
<?php
// check for form submission - if it doesn't exist then send back to contact form
if (!isset($_POST['save']) || $_POST['save'] != 'contact') {
//header('Location: index.php'); exit;
echo "Ou, technický problém. Zkuste to prosím později";
}
$name = $_POST['Name'];
$email_address = $_POST['Email'];
$message = $_POST['Message'];
if (empty($name))
$error = 'You must enter your name.';
elseif (empty($email_address))
$error = 'You must enter your email address.';
elseif (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email_address))
$error = 'You must enter a valid email address.';
elseif (empty($message))
$error = 'You must enter a message.';
if (isset($error)) {
//header('Location: index.php?e='.urlencode($error)); exit;
}
$headers = "From: $email_address\r\n";
$headers .= "Reply-To: $email_address\r\n";
$email_content = "Name: $name\n";
$email_content .= "Email Address: $email_address\n";
$email_content .= "Message:\n\n$message";
mail ('v@zamecnictvikaspar.cz ', 'Z WEBOVÝCH STRÁNEK - Zájemce o tvé služby', $email_content, $headers);
//header('Location: index.php?s='.urlencode('Thank you for your message.')); exit;
echo '<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">x</a>
<img src="images/error-message.jpg" class="error-img" alt="error">
</div>';
//echo "Vaše zpráva byla úspešne odeslána. Budu Vás kontaktovat co nejdríve.";
?> |
||
| Lonanek Profil |
#2 · Zasláno: 21. 12. 2016, 15:18:43
Pokud se jedná o doménu uvedenou v kódu, pak na ni vidím zcela jiné názvy POST proměnných.
Konkrétně tam není Name ale names, Email ale emails, Message ale messages. |
||
| Davex Profil |
#3 · Zasláno: 21. 12. 2016, 19:33:05
Petr Mátl:
„Nastavení mám vše na UTF-8“ V tom odeslaném e-mailu nemáš definované kódování obsahu. Viz Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky. nebo použij třídu PHPMailer. |
||
| Petr Mátl Profil |
#4 · Zasláno: 21. 12. 2016, 22:42:42
Davex:
Nevím jak a do čeho zasáhnout, tenhle formulář mě těžce školí. Dokázal by jsi mi poradit, co tam jako přesně uvést? Díky moc |
||
| CZechBoY Profil |
<?php
header("Content-Type: text/html; Charset=UTF-8");
// check for form submission - if it doesn't exist then send back to contact form
if (!isset($_POST['save']) || $_POST['save'] != 'contact') {
//header('Location: index.php'); exit;
echo "Ou, technický problém. Zkuste to prosím později";
exit;
}
$name = $_POST['Name'];
$email_address = $_POST['Email'];
$message = $_POST['Message'];
if (empty($name)) {
$error = 'You must enter your name.';
} elseif (empty($email_address)) {
$error = 'You must enter your email address.';
} elseif (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email_address)) {
$error = 'You must enter a valid email address.';
} elseif (empty($message)) {
$error = 'You must enter a message.';
}
if (isset($error)) {
echo $error;
exit;
}
$headers = '';
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "From: $email_address" . PHP_EOL;
$headers .= "Reply-To: $email_address" . PHP_EOL;
$headers .= "Content-Type: text/plain; charset=\"utf-8\"" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: base64" . PHP_EOL;
$email_content = "Name: $name\n";
$email_content .= "Email Address: $email_address\n";
$email_content .= "Message:\n\n$message";
$subject_plain = 'Z WEBOVÝCH STRÁNEK - Zájemce o tvé služby';
$subject = "=?utf-8?B?" . base64_encode(autoUTF($subject_plain)) . "?=";
mail ('v@zamecnictvikaspar.cz ', $subject, base64_encode(autoUTF($email_content)), $headers);
echo '<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">x</a>
<img src="images/error-message.jpg" class="error-img" alt="error">
</div>';
echo "Vaše zpráva byla úspešne odeslána. Budu Vás kontaktovat co nejdríve.";
function autoUTF($s)
{
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
{
return $s;
}
elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
{
return iconv('WINDOWS-1250', 'UTF-8', $s);
}
else // assume ISO-8859-2
{
return iconv('ISO-8859-2', 'UTF-8', $s);
}
}
?> |
||
| Petr Mátl Profil |
#6 · Zasláno: 21. 12. 2016, 23:24:17
CZechBoY:
Děkuji, ale ani toto mi nepomohlo, nyní to při odeslání vůbec neodešle data - pouze vyskočí hláška "Ou, technický problém. Zkuste to prosím později" |
||
| Davex Profil |
Petr Mátl:
„nyní to při odeslání vůbec neodešle data“ Pak bude zřejmě chyba ve formuláři, že neobsahuje <input name=save> s hodnotou contact nebo není odeslán metodou POST.
|
||
| Petr Mátl Profil |
#8 · Zasláno: 22. 12. 2016, 00:38:24
Davex:
Díky, je to zapeklitý.., už od rána nad tím sedím a nedokážu to "rozkodovat" aby to fungovalo korektně, prošel jsem různá fóra a rady, ale nic, co by mi formulář zprovoznilo.. |
||
| Davex Profil |
#9 · Zasláno: 22. 12. 2016, 01:10:49
Pokud se jedná o formulář na doméně z e-mailu v kódu, tak tam se formulář odesílá s pomocí jQuery poničeným AJAXem. Odeslání by se mělo opravit vymazáním řádku:
contentType : "multipart/form-data; charset=UTF-8", |
||
| Petr Mátl Profil |
#10 · Zasláno: 22. 12. 2016, 11:00:56
Davex:
Ano přesně tak jedná se o doménu co je uvedená v emailu. Ovšem uvedený řádek se nenachází v daném kódu. Už jsem zkoušel různé možnosti a kdepak.. <?php
header("Content-Type: text/HTML; Charset=utf-8");
// check for form submission - if it doesn't exist then send back to contact form
if (!isset($_POST['save']) || $_POST['save'] != 'contact') {
//header('Location: index.php'); exit;
echo "Ou, technický problém. Zkuste to prosím později";
exit;
}
$name = $_POST['names'];
$email_address = $_POST['emails'];
$message = $_POST['messages'];
if (empty($name)) {
$error = 'You must enter your name.';
} elseif (empty($email_address)) {
$error = 'You must enter your email address.';
} elseif (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email_address)) {
$error = 'You must enter a valid email address.';
} elseif (empty($message)) {
$error = 'You must enter a message.';
}
if (isset($error)) {
echo $error;
exit;
}
$headers = '';
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "From: $email_address" . PHP_EOL;
$headers .= "Reply-To: $email_address" . PHP_EOL;
$headers .= "Content-Type: text/HTML; charset=\"utf-8\"" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: base64" . PHP_EOL;
$email_content = "Jméno: $name\n";
$email_content .= "Email: $email_address\n";
$email_content .= "Zpráva:\n\n$message";
$subject_plain = 'Z WEBOVÝCH STRÁNEK - Zájemce o tvé služby';
$subject = "=?utf-8?B?" . base64_encode(autoUTF($subject_plain)) . "?=";
mail ('vladimir@zamecnictvikaspar.cz ', $subject, base64_encode(autoUTF($email_content)), $headers);
echo '<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">x</a>
<img src="images/error-message.jpg" class="error-img" alt="error">
</div>';
echo "Vaše zpráva byla úspešne odeslána. Budu Vás kontaktovat co nejdríve.";
function autoUTF($s)
{
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
{
return $s;
}
elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
{
return iconv('WINDOWS-1250', 'UTF-8', $s);
}
else // assume ISO-8859-2
{
return iconv('ISO-8859-2', 'UTF-8', $s);
}
}
?> |
||
| Lonanek Profil |
#11 · Zasláno: 22. 12. 2016, 16:16:20
Petr Mátl:
„Ovšem uvedený řádek se nenachází v daném kódu“ uvedený řádek se nachází v hlavičce stránky: <script>
$(document).ready(function()
{
$("button").click(function(){
var name=$("#name").val();
var emails=$("#emails").val();
var message=$("#message").val();
var save=$("#save").val();
$.ajax({
type:"post",
url:"contact-form-submission.php",
contentType : "multipart/form-data; charset=UTF-8",
data: { Name: name, Email: emails, Message: message, save:save },
success:function(data){
$("#info").html(data);
}
});
});
});
</script> |
||
| Petr Mátl Profil |
#12 · Zasláno: 22. 12. 2016, 22:40:41
Chci vám všem poděkovat za pomoc!! :) Fakt moc díky, ušetřili jste mě dost času a trápení. Přeji Vám všem krásné Vánoce.
|
||
| CZechBoY Profil |
#13 · Zasláno: 22. 12. 2016, 23:08:28
Tobe taky :-).
|
||
|
Časová prodleva: 9 let
|
|||
0