Autor Zpráva
Petr Mátl
Profil
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
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
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
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
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
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
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
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
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
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
Tobe taky :-).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: