Ocena wątku:
  • 1 głosów - średnia: 1
  • 1
  • 2
  • 3
  • 4
  • 5
Formularz kontaktowy pytanie z PHP
#1
Witam,

Mam problem z kodem w formularzu, ponieważ w wysyłanych mailach otrzymuje krzaczki. Próbowałem już chyba wszystkich znalezionych w sieci rozwiązań, ale żadne nie pomogło. Wrzucę kody ze strony oraz pliku php.

Kod JavaScript
Kod:
$(document).ready(function() {

$("#form1").validationEngine({
    ajaxSubmit: true,
                    ajaxSubmitFile: "ajaxSubmit.php",
                    ajaxSubmitMessage: "Dziękujemy za wiadomość!",
                success :  false,
                failure : function() {}
    })
            

        
});

Kod ze strony html (body)
Kod:
<div id="wrapper">
  <div id="form-div">
    <form class="form" id="form1">
      <p class="name">
        <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] text-input" id="name" value=""/>
        <label for="name">Imię</label>
      </p><br />
      <p class="email">
        <input name="email" type="text" class="validate[required,custom[email]] text-input" id="email" value=""/>
        <label for="email">e-Mail</label>
      </p><br />
      <p class="web">
        <input type="text" name="web" id="web"/>
        <label for="web">Temat</label>
      </p><br />
      <p class="text">
        <textarea name="text" class="validate[required,length[6,300]] text-input" id="comment"></textarea>
      </p><br />
      <p class="submit">
        <input type="submit" value="Wyślij" />
      </p>
    </form>

  </div>
</div>

oraz z pliku ajaxSubmit.php

Kod:
<?php

$name = $_POST['name']; // contain name of person
$email = $_POST['email']; // Email address of sender
$temat = $_POST['temat']; // Your website URL
$body = $_POST['text']; // Your message
$receiver = "[email protected]" ; // hardcorde your email address here - This is the email address that all your feedbacks will be sent to
if (!empty($name) & !empty($email) && !empty($body)) {
    $body = "Imię:{$name}\n\nTemat :{$web}\n\nTreść:{$body}\n\nMail:{$email}";
    $send = mail($receiver, 'Formularz kontaktowy', $body, "Od: {$email}");
    if ($send) {
        echo 'true'; //if everything is ok,always return true , else ajax submission won't work
    }

}

?>

Strona ma kodowanie UTF-8 i polskie znaki na stronie są. Formularz wysyła normalnie, tylko krzaczy. Pomocy, cały dzień już przy tym spędziłem.

Pozdrawiam,
Matissen
Odpowiedz
#2
nie masz nagłówka w którym powinieneś dać kodowanie. Dodaj do nagłówka taki kod "Content-type: text/plain; charset=UTF-8" i bedzie gitara
Odpowiedz
#3
(09-01-2012, 12:49)hieroshima napisał(a): nie masz nagłówka w którym powinieneś dać kodowanie. Dodaj do nagłówka taki kod "Content-type: text/plain; charset=UTF-8" i bedzie gitara

Ok. Wstawiłem z cudzysłowami przed <? i nie wysyła, usunąłem też nie wysyła, nawet wstawiłem pod <? to wyskoczyło, że błędne kodowanie utf-8 i też nie wysyła.
Odpowiedz
#4
<?php
$to = '[email protected]';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
mail($to, $subject, $message, $headers);
?>

Przykład z manuala, zobacz gdzie zrobiłeś błąd Wink
Odpowiedz
#5
Zrobiłem coś takiego i dalej nie mam polskich znaków
Kod:
<?php

$name = $_POST['name'];
$email = $_POST['email'];
$temat = $_POST['temat'];
$body = $_POST['text'];
$receiver = "strona@przykładowa.pl" ; //
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
if (!empty($name) & !empty($email) && !empty($body)) {
    $body = "Imię:{$name}\n\nTemat :{$web}\n\nTreść:{$body}\n\nMail:{$email}";
    $send = mail($receiver, 'Formularz kontaktowy', $body, "Od: {$email}", $headers);
    if ($send) {
        echo 'true';
    }

}

?>
Odpowiedz
#6
usuń kropkę z pierwszego $headers przed znakiem = i zobacz w manualu jak wygląda funkcja mail i ile parametrów przyjmuje
Odpowiedz
#7
Usunąłem obydwie kropki w headers przed = I dalej nie ma polskich znaków. Dostaje coś takiego:


Imię:Imię

Temat :Książka

Treść:Treść!

Mail:email@przykładowy.pl

Spojrzałem w ten skrypt od Ciebie i nie wiem o co może chodzić, mam wszystkie 4. Otrzymuje wszystkie dane wysłane z formularza, tyle, że krzaki.

Ręce już mi opadajaSad
Odpowiedz
#8
jedną kropkę miałeś usunąć... kropka to łączenie znaków...

funkcja mail wygląda tak:

mail(do_kogo_wyslac, temat, tresc, naglowki);

czyli w twoim przypadku mail($receiver, $temat, $body, $headers) i spróbuj tak
Odpowiedz
#9
Super! Dzięki wielkie działa! Polskie znaki dają radoścBig Grin A jakbyś jeszcze mógł mi powiedzieć jak mam zrobić, żeby miec imie, temat, treść i adres z maila w nowym wierszu? bo mam w jednym i jest nieczytelne strasznie? Podejrzewam, że <br /> tylko nie wiem gdzie.

Odpowiedz
#10
$name = $_POST['name'] . '<br />'; z każdą zmienną tak
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Formularz dodawania ogłoszenia tex 0 3,757 08-12-2015, 01:57
Ostatni post: tex
  Pytanie w mysl zktórym nie moge sobie poradzić Monaco 1 2,864 14-08-2013, 19:57
Ostatni post: mateo
  Formularz kontaktowy z checkbox Moody 4 3,494 26-08-2012, 13:59
Ostatni post: Marys
  [PHP] pytanie o include. cryptarithm 4 3,536 15-11-2011, 03:52
Ostatni post: cryptarithm
  Formularz PHP - brak polskich znaków heavy1123 4 3,964 27-10-2011, 02:30
Ostatni post: hieroshima

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl