Formularz - sposóby na stworzenie

0

1)Witam, robię właśnie stronkę z wykorzystaniem JS, Bootstrap, HTML i CSS no ale nagle pojawiła się potrzeba zrobienia działającego formularza. Moja pierwsza myśl coś w PHP-ie znam słabo ale prosty skrypt każdy wykorzysta wedle przepisu. A więc znalazłem coś co powinno działać, wrzuciłem stronę na serwer a tu zonk - nie widzę tych meili albo jestem głupi.

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];

$odkogo = "[email protected]";
$dokogo = "[email protected]";

$tytul = "Formularz kontaktowy z 79level.pl";

$naglowek = "";
$naglowek .= "Od:" . $odkogo . " \n";
$naglowek .= "Content-Type:text/plain;charset=utf-8";

$wiadomosc = "";
$wiadomosc .= "Imie i nazwisko: " . $name . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Numer telefonu: " . $phone . "\n";
$wiadomosc .= "Wiadomość: " . $message . "\n";

$sukces = mail($dokogo, $tytul, $wiadomosc, $naglowek);
if ($sukces){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=potwierdzenie.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>
<form class="form" action="../../php/form.php" method="post" id="my_form">
   <div class="form-group">
         <label for="nameField">Imię i Nazwisko</label>
         <input type="text" class="form-control" id="nameField" name="name" placeholder="Twoje imię i nazwisko" />
   </div>

     <div class="form-group">
          <label for="emailField">E-mail</label>
          <input type="email" class="form-control" id="emailField" name="email" placeholder="Twój adres e-mail" />
     </div>

     <div class="form-group">
           <label for="phoneField">Telefon</label>
           <input type="text" class="form-control" id="phoneField" name="phone" placeholder="Twój numer telefonu" />
      </div>

       <div class="form-group">
             <label for="descField">Opis</label>
             <textarea type="text" class="form-control" id="descField" name="message" placeholder="Twoje uwagi"></textarea>
       </div>

        <button type="submit" name="submit" class="btn btn-primary">Wyślij</button>
        <button type="reset" class="btn btn-default">Wyczyść</button>
</form>

Zrobienie formularza powinno być proste jak budowa cepa; ale coś nie mogę tej kwestii ogarnąć. Może dlatego, że nigdy nie robiłem jego obsługi.

  1. Czy da się przy pomocy technologii spod znaku JS zrobić obsługę formularza? Mi się wydaje, że tak ale nie wiem czego szukać konkretnie. Nie chodzi mi o walidację tylko o puszczanie meili.

  2. Czy mogę puszczać meile z localhost-a ? Czy tylko z prawdziwego serwera?

0

W najbardziej cepowatym przypadku spróbuj najpierw rozdzielić trochę front od backendu, choćby i tak:

<?php include("header.php"); ?>

/* docelowa treść strony */

<?php include("footer.php"); ?>

Dzięki temu zrobisz prostą strukturę strony.
Potem wrzuć sobie pliki w których będziesz obrabiał dane (np. do folderu /actions) i odwołuj się do nich w formularzu

<form action="/actions/myaction.php">

i w pliku myaction.php obrabiaj dane. Nie pakuj wszystkiego do jednego pliku

0

Nie wiem czy to wyczerpuje temat, nadal nie wiem czemu ten skrypt nie działa. Zgadza się strona powinna być rozparcelowana na sekcje ale z powodu pewnych ograniczeń tego nie zrobiłem.

0

nie widzę tych meili albo jestem głupi.

A te maile to puszczasz z locala czy z hostingu?

1

ja juz kiedyś dodawałem sznurki do formularzy:
https://4programmers.net/Forum/PHP/298118-skrypty_do_php

0

Puszczam z webd.pl i wiem tyle:

  1. jest prawdopodobieństwo że może nie działać, choć to serwer płatny meil()
  2. meile mogą dochodzić z opóźnieniem
  3. z localhosta nie działa

czy się mylę ?

0

To najpierw musisz puścić funkcją mail() zwykłego maila na sztywno, nawet w twoim index.php. Jak dojdzie, tzn, że działa. Więc szukać dalej problemu w Twoim skypcie. Jak nie dojdzie, to jest coś prawdopodobnie po stronie hostingu (zakładając, że wywołanie funckji będzie poprawne)

A najlepiej jakąś biblioteką się zainteresować do mailingu, ale to tak na przyszłość

0
<?php
$name = $_POST['name'];
meil('[email protected]', 'Blank e-mail', $name);
?>
<!DOCTYPE html>
<html lang="pl">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <form method="post" action="meil.php" role="form">
        <label>Firstname *</label>
        <input id="name" type="text" name="name" />
        <input id="guzik" type="submit" name="submit" />
    </form>
</body>

</html>

Czy coś takiego powinno działać?

0

Tak, jak zmienisz nazwę funkcji z meil na mail. Docelowo najpierw puść pustego maila na sztywno

mail('[email protected]', 'Blank e-mail', $name);

i zobaczysz czy maile w ogóle dochodzą. Potem kombinuj z formularzem

1 użytkowników online, w tym zalogowanych: 0, gości: 1