• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie działa formularz kontaktowy

VPS Starter Arubacloud
0 głosów
225 wizyt
pytanie zadane 27 listopada 2018 w HTML i CSS przez tgv Użytkownik (890 p.)
zmienione kategorie 27 listopada 2018 przez tgv

Witajcie,

Kończę właśnie niewielką stronkę portfolio. Mam problem z formularzem kontaktowym. Stworzyłem do niego skrypt php, który nie chce zadziałać. Po naciśnięciu buttona wyślij, jestem automatycznie kierowany na samą górę strony. Pytanie, co jest nie tak w kodzie?

<div class="col-md-9">
                     <form action="contactform.php" method="post">
                        <div class="row">
                            <div class="col-md-6">
                                <div><label for="name"></label></div>
                                <input type="text" name="name" id="name" class="form-control" placeholder="Your Name">
                                <div><label for="phone"></label></div>
                                <input type="text" name="phone" id="phone" class="form-control" placeholder="Phone No.">
                            </div>
                            <div class="col-md-6">
                                <div><label for="email"></label></div>
                                <input type="text" name="email" id="email" class="form-control" placeholder="Email">
                                <div><label for="subject"></label></div>
                                <input type="text" name="subject" id="subject" class="form-control" placeholder="Subject">
                            </div>
                        </div>
                        <div><label for="message"></label></div>
                        <textarea class="form-control" rows="4" name="message" id="message" placeholder="Message"></textarea>
                        <div class="text-right">
                            <a href="index.html" class="btn send-btn">Send</a>
                        </div>
                    </form>

A tutaj php:

 

<?php

if(isset($_POST ['submit'])) {
    
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $mailFrom  = $_POST['mail'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    
    
    $mailTo = "hello@mydiary.pl";
    $headers  = "From: ".$mailFrom;
    $txt = "You have received an e-mail from ".$name.".\n\n".$message;
    
    mail($mailTo, $subject, $txt, $headers );
    header("Location: index.php?mailsend");

}

?>

 

2 odpowiedzi

+1 głos
odpowiedź 27 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)
No bo dokładnie takie zachowanie zakodowałeś Kolego...:)

Zrobiłeś link, którego textContent to "Send" ale jest to najzwyczajniejszy w świecie link, który po prostu przewala Cię na stronę index.html.

Poczytaj na spokojnie o projektowaniu formularzy html i on zdarzeniu submit. Dzisiaj najczęściej robi się to po prostu poprzez puszczenie requesta na jakiś endpoint, który odpowiednio przetwarza dane z forma i daje jakąś zwrotkę, którą obsługujemy asynchronicznie u klienta. Raczej odchodzi się od starego rozwiązania z przeładowywaniem całej strony bo jest to mało fajne dla usera i często zupełnie niepotrzebne.

Generalnie poleam raczej pisać aplikacje z niezależnym API i frontem, jest to dużo lepsze rozwiązanie i łatwiejsze w utrzymaniu. Takie starowadne monolity z tempaltkami w PHP itp. są ciężkie w rozwijaniu, na GIT masz tysiąc pięćset konfliktów co dwie sekundy bo ktoś co chwile coś modyfikuje itp.
komentarz 27 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)

taka mała podpowiedź, żeby nie zostawiać Cię z niczym :)

// HTML:
<button type="submit">Send</button>

// JS:
const form = referencja do forma
form.addEventListener('submit', e => {
  e.preventDefault();
  strzał do API z danymi forma,
  jak nie chcesz robić sam to weź se jakąś libkę
  np. mała, lekka axios, mega prosta w użyciu.
})

 

komentarz 29 listopada 2018 przez tgv Użytkownik (890 p.)

@Tomek Sochacki,
 

Dziękuję Kolego! Twoja wiedza bardzo mi pomogła. W Ajaxie to trochę inna bajka!

Wszystko działa jak trzeba, bez przeładowywania.

0 głosów
odpowiedź 27 listopada 2018 przez pablop76 VIP (123,240 p.)
<a href="index.html" class="btn send-btn">Send</a>

To nie jest submit formularza.

Przenosi tam gdzie wskazuje href.

komentarz 29 listopada 2018 przez tgv Użytkownik (890 p.)
Problem rozwiązany. Śmiga aż miło! Dzięki.

Podobne pytania

0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 11 sierpnia 2016 w HTML i CSS przez Kamil Czech Dyskutant (7,700 p.)
–1 głos
1 odpowiedź 609 wizyt
pytanie zadane 3 lutego 2016 w HTML i CSS przez Pan Marcin Grzęda Użytkownik (670 p.)
–1 głos
2 odpowiedzi 301 wizyt
pytanie zadane 23 stycznia 2016 w HTML i CSS przez mach Użytkownik (700 p.)

92,832 zapytań

141,777 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...