Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

formularz kontaktowy na stronie wysyła puste maile

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

formularz kontaktowy na stronie wysyła puste maile

Post 31.10.2018, 08:12:44

Witam
Nie jestem ani trochę dobry w PHP, marzę o nauczeniu sie, ale na razie stawiam pierwsze kroki.
Korzystając z tutoriala na YT napisałem formularz kontaktowy na stronę.
Problem jest taki, że dochodzą do mnie puste maile. Nie potrafię zidentyfikować problemu. Proszę o radę.

Stworzyłem takie oto 3 pliki:

1. formularz.php
Kod: Zaznacz cały
<?php include('formularz_proscess.php'); ?>
<?php
$imie = $_POST['imie'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$tresc = $_POST['tresc'];
 ?>
<link rel="stylesheet" href="style.css" type="text/css">
<div class="container">
<form id="contact" action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
    <h3>Kontakt z nami</h3>
    <fieldset>
        <input placeholder="Imie" type="text" tabindex="1" name= "imie" autofocus>   
        <span class="error"><?= $imie_error ?></span></fieldset>
    <fieldset>
        <input placeholder="e-mail" type="text" tabindex="2" name="email" required>   
        <span class="error"><?= $email_error ?></span> </fieldset>
         <fieldset>
        <input placeholder="nr telefonu" type="text" tabindex="3" name="telefon">   
        <fieldset>
    <input placeholder="Tresc wiadomosci" tabindex="3" name="tresc" required>   
    <span class="error"><?= $tresc_error ?></span> </fieldset>
    <fieldset>
    <button name="submit" type="submit" id="contact-submit" data-submit="...wysylanie"> Wyslij </button>
    </fieldset>
    <div class="success"><?= $success; ?></div>
    </form>
</div>


2. Formularz_proscess.php

Kod: Zaznacz cały
<?php
$imie = $_POST['imie'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$tresc = $_POST['tresc'];
 ?>
<?php
// define variables and set to empy values
$imie_error = $email_error = $tresc_error = "";
$imie = $email = $tresc = $success = "";

//form is submitted with POST method
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $imie_error = "Wpisz swoje imię";
            } else {
        $imie = test_input($_POST["imie"]);
            } }
  if (empty($_POST["email"])) {
        $imie_error = "Wpisz swój e-mail";
            } else {
        $imie = test_input($_POST["email"]);
            }
 if (empty($_POST["tresc"])) {
        $imie_error = "Wpisz wiadomość";
            } else {
        $imie = test_input($_POST["tresc"]);
            }
$to = 'certoipus@o2.pl';
$subject = 'Wiadomosc ze strony';
if (mail($to, $subject, $massage)){
    $success = "Dziekujemy";
    $imie = $email = $tresc = '';}



function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}


3. php.ini

Kod: Zaznacz cały
[mail function]
; http://home.pl/smtp
SMTP = smtp.home.pl
; http://home.pl/smtp-port
smtp_port = 25

; http://home.pl/sendmail-from
sendmail_from = kontakt@maniaimprezowania.pl
Avatar użytkownikacertoipus
Posty: 16
Dołączył(a): 01.11.2017
Lokalizacja: Dębica

Re: formularz kontaktowy na stronie wysyła puste maile

Post 03.11.2018, 00:14:32

Problemów w kodzie jest kilka i wynikają raczej z kopiowania i wklejania fragmentów. Przykładowo:

Jako treść maila wysyłasz to co jest w zmiennej $massage (możliwe, że chciałeś też nazwać $message ?). Taka zmienna nigdzie nie została w kodzie zdefiniowana.
Po drugie, spójrz na linię

if (empty($_POST["tresc"])) {
$imie_error = "Wpisz wiadomość";
} else {
$imie = test_input($_POST["tresc"]);
}

raczej tutaj powinno być przypisanie do zmiennej $tresc, podobnie z $imie_error (choć to mało ważne, bo potem i tak nie sprawdzasz czy były błędy, tylko wysyłasz maila zawsze). Ta sama sprawa w przypadku email.

Następnie
if (empty($_POST["name"])) {
$imie_error = "Wpisz swoje imię";
} else {
$imie = test_input($_POST["imie"]);
} }

raczej tutaj ma być "imie", bo pola formularza name="name" też nie masz.

Gdy to poprawisz, musisz skonstruować wartość dla zmiennej $massage, żeby miała treść odpowiednio sformatowaną na podstawie zmiennych $imie, $email, $telefon, $tresc.
Dziękuję wszystkim za lata współpracy, ciekawych pytań i dyskusji. Będę wspominał to forum z wielkim sentymentem • kukawski.pl
Avatar użytkownikakuku
Rafał Kukawski

410 Gone
410 Gone

Posty: 19890
Dołączył(a): 14.04.2002

Re: formularz kontaktowy na stronie wysyła puste maile

Post 16.11.2018, 11:08:54

kuku, dziękuję Ci
poprawiłem formularz i działa :)
wysyła maila z całą treścią, którą chcę.

Mam tylko dwa kosmetyczne problemy jeszcze:
1. Jak zmienić wielkość tych okienek do wpisywania treści? http://maniaimprezowania.pl/formularz.php
2. Jak sformatować treść maila, żeby nie był ciąg znaków, tylko przynajmniej w kolejnych linijkach (w tym momencie otrzymuję treść: "Piotrcertoipus@o2.pl607174456TRESC"
Avatar użytkownikacertoipus
Posty: 16
Dołączył(a): 01.11.2017
Lokalizacja: Dębica

Re: formularz kontaktowy na stronie wysyła puste maile

Post 16.11.2018, 11:29:02

I jeszcze jedno pytanie: tak obecnie wygląda mój formularz_proscess.php
za każdym razem otrzymuję 2 wiadomości: pustą i z zawartością zgodną z formularzem. Gdzie leży błąd? :)

Kod: Zaznacz cały
<?php
$imie = $_POST['imie'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$tresc = $_POST['tresc'];
 ?>
<?php
// define variables and set to empy values
$imie_error = $email_error = $tresc_error = "";
$imie = $email = $tresc = $success = "";

//form is submitted with POST method
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["imie"])) {
        $imie_error = "Wpisz swoje imię";
            } else {
        $imie = test_input($_POST["imie"]);
            } }
  if (empty($_POST["email"])) {
        $email_error = "Wpisz swój e-mail";
            } else {
        $email = test_input($_POST["email"]);
            }
 if (empty($_POST["tresc"])) {
        $tresc_error = "Wpisz wiadomość";
            } else {
        $tresc = test_input($_POST["tresc"]);
            }

$message = "$imie";
$message .= "$email";
$message .= "$telefon";
$message .= "$tresc";

$to = 'certoipus@o2.pl';
$subject = 'Wiadomosc ze strony';
if (mail($to, $subject, $message)){
    $success = "Dziekujemy";
    $imie = $email = $tresc = '';}



function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
Avatar użytkownikacertoipus
Posty: 16
Dołączył(a): 01.11.2017
Lokalizacja: Dębica

Re: formularz kontaktowy na stronie wysyła puste maile

Post 16.11.2018, 12:12:37

PS: pusta wiadomość wysyła mi się za każdym razem, kiedy wejdę na stronę z formularzem lub kiedy ją odświeżę...
Avatar użytkownikacertoipus
Posty: 16
Dołączył(a): 01.11.2017
Lokalizacja: Dębica

Re: formularz kontaktowy na stronie wysyła puste maile

Post 16.11.2018, 12:41:08

Klamra zamykająca blok IF
Kod: Zaznacz cały
if ($_SERVER["REQUEST_METHOD"] == "POST") {

powinna być pod linią z
Kod: Zaznacz cały
$imie = $email = $tresc = '';}

a obecnie jest w linii
$imie = test_input($_POST["imie"]);
} }


Jeśli chcesz poprzenosić informacje do nowych linii to skomponuj $message w taki sposób

Kod: Zaznacz cały
$message = "$imie" . PHP_EOL;
$message .= "$email" . PHP_EOL;
$message .= "$telefon" . PHP_EOL;
$message .= "$tresc" . PHP_EOL;

lub

Kod: Zaznacz cały
$message = "$imie
$email
$telefon
$tresc";


Dla własnego dobra popracuj nad stylem formatowania kodu. Przy dobrym formatowaniu widać wiele problemów od razu.
Dziękuję wszystkim za lata współpracy, ciekawych pytań i dyskusji. Będę wspominał to forum z wielkim sentymentem • kukawski.pl
Avatar użytkownikakuku
Rafał Kukawski

410 Gone
410 Gone

Posty: 19890
Dołączył(a): 14.04.2002


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 34 gości

Subskrypcja

Mamy 53896 zarejestrowanych użytkowników.
Najnowszy użytkownik: mandeischera


Nasi użytkownicy napisali:

  • 940495 wiadomości
  • w 249554 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)