Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z polskimi znakami w formularzu
Forum PHP.pl > Forum > PHP
piotrr989
Witam
Dziś postawiłem na serwerze elitecms, Na stronie są polskie znaki w artykułach czy menu ale problem zaczyna się gdy zaczynam tłumaczyć pola z formularza.

Kod
$errors = array();
  if (isset($_POST['email'])) {
  
      if ($_POST['name'] == "")
          $errors['name'] = "Wypełnij pole<b> Imię </b>!";
  
      if ($_POST['sender_email'] == "")
          $errors['sender_email'] = "<b>Wypełnij </b>lub popraw pole email !";
  
      if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",
          $_POST['sender_email']))
          $errors['sender_email'] = "email został <b>źle</b> wprowadzony !";
  
      if ($_POST['message'] == "")
          $errors['message'] = "<b>Wiadomość została źle</b> wprowadzona !";
      if (empty($errors)) {
  
  
          $mailTo = $settings['site_email'];
          $subject = "Feedback email from your eliteCMS website";
          $name = $_POST['name'];
          $sender_email = $_POST['sender_email'];
          $message = $_POST['message'];
          $headers = 'From: Email processed by eliteCMS contact form' . "\r\n" . 'X-Mailer: PHP/' .  phpversion();
      $headers = "Content-type: text/plain; charset=\"iso-8859-2\"\n";
      
  
          $body = "Hello sir,\n";
          $body .= "A visitor from your eliteCMS website ";
          $body .= "send an email to you. \n";
          $body .= "Visitor's details are :\n";
          $body .= " \n";
          $body .= "Visitor's Email : {$sender_email} \n";
          $body .= "Visitor's Name : {$name} \n";
          $body .= "Email Message : {$message} \n";
          $body .= " \n";
          
          //email success msg
          $sendmail =  @mail($mailTo, $subject, $body, $headers);
          
          if (!$sendmail) {
              $msqErr = "<div class=\"mend\"><b>Wiadomość </b>nie została wysłana. Skontaktuj się z administratorem !.</div>";
              
      
  }     else {
      $successMSG = "<span class=\"successMsg\">Dziękujemy <span>$name</span> , wiadomość została wysłana.</span>";
  }
  
        
  
      } else {
          $displayError = '<div class="mend"><ul style="list-style:none;">';
  
          foreach ($errors as $error) {
              $displayError .= "<li>$error</li>";
          }
          $displayError .= '</ul></div>';
      }
  
  
  } else {
      //nothing has been send yet !
  }
  
  
  ?>
  <div class="ctFrmHd">-: Formularz kontaktowy :-</div>
  <?php
  if (!empty($displayError)) {
      echo $displayError;
      echo "
  
  
  
  
  ";
      
  }
  if (!empty($successMSG)) {
      echo $successMSG;
  }
  if (!empty($msqErr)) {
      echo $msqErr;
  }
  ?>
  <form name="contactForm" method="post" enctype="text/plain" action="<?php echo $PHP_SELF; ?>">
  <table width="419" border="0" cellpadding="8" cellspacing="0" id="contcatFormTbl">
  <tr>
  <td width="88">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp<b>;Imię </b>:</td>
  <td width="304"><input type="text" name="name" id="name"  class="frmInput" value="<?php echo
  $_POST['name'] ?>"/><?php if (!empty($errors['name'])) {
      echo "&nbsp;<span class=\"mend\">*</span>";
  } ?></td>
  </tr>
  <tr>
  <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Email :</td>
  <td><input type="text" name="sender_email" id="sender_email" class="frmInput" value="<?php echo
  $_POST['sender_email'] ?>"/><?php if (!empty($errors['sender_email'])) {
      echo "&nbsp;<span class=\"mend\">*</span>";
  } ?></td>
  </tr>
  <tr>
  <td>&nbsp<b>;Wiadomość :</b></td>
  <td><textarea name="message" id="message" class="frmTarea"><?php echo $_POST['message'] ?></textarea><?php if (!empty($errors['message'])) {
      echo "&nbsp;<span class=\"mend\">*</span>";
  } ?></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td align="center"><input type="submit" name="email" id="email" value=<b>"Wyślij"</b> class="ctFrmBU" /></td>
  </tr>
  </table>
  </form>


próbowałem już 2 metod:
  • $headers = "Content-type: text/plain; charset=\"iso-8859-2\"\n";
    $headers .= "Content-Transfer-Encoding: 8bit";
    $headers .= "Content-encoding: iso-8859-2\n";
  • dopisując do form charset="iso-8859-2"
Niestety żadna metoda nie przyniosła oczekiwanego efektu
Macie jakiś pomysł
SirZooro
Ja kiedyś z powodzeniem stosowałem coś takiego:
  1. <?php
  2. $headers = "From: $from\n" .
  3.    "X-Mailer: PHP/" . phpversion() . "\n" .
  4.    "MIME-Version: 1.0\n" .
  5.    "Content-type: text/plain;\n\tcharset=ISO-8859-2";
  6. ?>

Zainteresuj się też skryptem PHPMailer - przerzuciłem się na niego po tym jak nie mogłem sobie samemu dać rady z utf-8.
piotrr989
Kod
unction display_meta()
{
    get_home_page();
    global $settings;
    global $page_settings;
    global $home_page;
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />\n";
    echo "<title>::-::" . $settings['site_name'] . "  ::-::  ";
    if (isset($_GET['page'])) {
        echo $page_settings['title'];


Znalazłem to czego szukałem i zmieniłem na iso, i wszystko gra, w formularzu sa polskie znaki ale na stronie tym razem sie wykrzaczyło. Czy da się to naprawic?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.