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

formularz kontaktowy - puste pola

0 głosów
1,497 wizyt
pytanie zadane 5 stycznia 2017 w PHP przez sapero Gaduła (4,100 p.)

Znalazłem przykładowy formularz kontaktowy w internecie jednak mam problem gdy nic nie wpisze w okna formularza to mogę wysłać wiadomość;/jak to zablokować? morduje się z tym cały dzień a dopiero uczę się php:)

mam plik w php z zawartością:

<?php

// Tworzymy zmienną dla imienia i nazwiska
$name = $_POST['name'];

// Tworzymy zmienną dla wiadomości
$lname = $_POST['lname'];

// Tworzymy zmienną dla adresu email
$email = $_POST['email'];

// Tworzymy zmienną dla wiadomości
$message = $_POST['message'];

// Tworzymy zmienną dla wiadomości
$number = $_POST['number'];


$odkogo = "moj@emial.com";


$dokogo = "moj@email.com";

// Podajesz tytuł jaki ma mieć ta wiadomość email
$tytul = "pytanie w mailu";

// Przygotowujesz treść wiadomości
$wiadomosc = "";
$wiadomosc .= "First Name: " . $name . "\n";
$wiadomosc .= "Last Name: " . $lname . "\n";
$wiadomosc .= "Number: " . $number . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Question message: " . $message . "\n";


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

// Wysyłamy wiadomość
$sukces = mail($dokogo, $tytul, $wiadomosc, $naglowek);

// Przekierowywujemy na potwierdzenie
if ($sukces){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=contact-ok.html\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>


<?php

 

3 odpowiedzi

0 głosów
odpowiedź 7 stycznia 2017 przez Mistrz0000000 Bywalec (2,780 p.)
wybrane 8 stycznia 2017 przez sapero
 
Najlepsza
<?php 
 
if (isset($_POST['name'] && $_POST['lname'] && $_POST['email'] && $_POST['message'] && $_POST['number']))
{
$name = $_POST['name'];

$lname = $_POST['lname'];

$email = $_POST['email'];
 
$message = $_POST['message'];
 
$number = $_POST['number'];

$odkogo = "moj@emial.com";
 
// Podajesz tytuł jaki ma mieć ta wiadomość email
$tytul = "pytanie w mailu";
 
// Przygotowujesz treść wiadomości
$wiadomosc = "";
$wiadomosc .= "First Name: " . $name . "\n";
$wiadomosc .= "Last Name: " . $lname . "\n";
$wiadomosc .= "Number: " . $number . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Question message: " . $message . "\n";
 
 
$naglowek = "";
$naglowek .= "Od:" . $odkogo . " \n";
$naglowek .= "Content-Type:text/plain;charset=utf-8";
 
// Wysyłamy wiadomość
mail($dokogo, $tytul, $wiadomosc, $naglowek);

echo 'Wiadomość wysłana na podany emai';

}else{
echo 'Wypełnij wszystkie pola';
}
?>
 
 
<?php

 

komentarz 8 stycznia 2017 przez sapero Gaduła (4,100 p.)
Mistrz;] jednak poszukałem i znalazłem w sieci coś podobnego..wkleiłem w mój plik to na górę i zapisałem do php. Działa! :)
komentarz 8 stycznia 2017 przez Totek Użytkownik (860 p.)
Jest szybszy sposób na to. Po prostu z HTML usunąć novalidate.
0 głosów
odpowiedź 5 stycznia 2017 przez sapero Gaduła (4,100 p.)

a w html wygląda to tak:

<div id="formularz">
                <form name="sentMessage" id="contactForm" novalidate method="post" action="kontakt.php">
                    <div class="control-group form-group">
                        <div class="controls">
                            <label>First Name:</label>
                            <input type="text" class="form-control" id="name" required data-validation-required-message="Please enter your name." name="name" placeholder="Please enter your first name" style="width:700%">
                            <p class="help-block"></p>
                        </div>
                    </div>
                    <div class="control-group form-group">
                        <div class="controls">
                            <label>Last Name:</label>
                            <input type="text" class="form-control" id="lname" required data-validation-required-message="Please enter your name." name="lname" placeholder="Please enter your last name" style="width:700%">
                            <p class="help-block"></p>
                        </div>
                    </div>
                    <div class="control-group form-group">
                        <div class="controls">
                            <label>Telephone:</label>
                            <input type="text" class="form-control" id="number" required data-validation-required-message="Please enter your phone number." name="number" type="text" placeholder="Please enter your phone number" style="width:700%">
                        </div>
                    </div>
                    <div class="control-group form-group">
                        <div class="controls">
                            <label>Email:</label>
                            <input type="email" class="form-control" id="email" required data-validation-required-message="Please enter your email address." name="email" type="email" placeholder="Please enter your email" style="width:700%">
                        </div>
                    </div>
                    <div class="control-group form-group">
                        <div class="controls">
                            <label>Message:</label>
                            <textarea rows="10" cols="100" class="form-control" id="message" required data-validation-required-message="Please enter your message" maxlength="999" style="width:700%;resize:none" name="message" placeholder="Your message" ></textarea>
                        </div>
                    </div>
                    <div id="success"></div>
                    <!-- For success/fail messages -->
                    <button id="submit" name="submit" type="submit" value="Send" class="btn btn-primary" style="background-color:#424242;color:#fff;border-color:#2c2c2c">Send Message</button>
                </form></div>

 

komentarz 5 stycznia 2017 przez xmentor Nałogowiec (49,520 p.)
isSet/empty?

I polecam: https://github.com/PHPMailer/PHPMailer
komentarz 5 stycznia 2017 przez sapero Gaduła (4,100 p.)

jest to ciężkie do ogarnięcia dla kogoś kto zaczyna naukę z php... wyczytałem że wystarczy napisać cośpodobnego do tego:

if (empty($name)) {
    $errors['name'] = 'Please enter your first name!';
}

ale to nie działa...chodzi mi o to żeby jak ktoś klika na button Wyślij i pola nie są wypełnione to żeby nie mógł wysłać i pojawił się komunikat żeby wypełnił

komentarz 5 stycznia 2017 przez HaKIM Szeryf (87,590 p.)

No to będziesz musiał się trochę pouczyć, aby zrobić to w miarę OK.

Przyda się wiedza o tym jak działa HTTP, request, response, etc., odsyłam do:

http://symfony.com/doc/current/introduction/http_fundamentals.html

Pomocna będzie funkcja header:

http://php.net/manual/en/function.header.php

No i sesja zwracająca wynik walidacji, w przypadku niepowodzenia, do wyświetlenia komunikatu.

Oczywiście, wszystko dla separacji logiki od prezentacji. Można to zrobić na wiele sposobów. Ten, na tę chwilę, wydaje mi się najprostszym i w miarę eleganckim.

Od razu mógłbym Ci powiedzieć o middleware... Acz, nie mam pewności czy to nie ruszanie z motyką na słońce.

0 głosów
odpowiedź 5 stycznia 2017 przez HaKIM Szeryf (87,590 p.)

Choćby funkcją strlen.

if (strlen($var) === 0) {
    // ...
}

Zalecam Ci zainteresować się biblioteką do wysyłania mail'i jak i standardami PSR, dotyczącymi składni.

komentarz 5 stycznia 2017 przez sapero Gaduła (4,100 p.)
ok, ale gdzie mam to pisać? w tym pliku php? jestem laikiem z php możesz mi to jakoś opisać gdzie i co wkleić?
komentarz 5 stycznia 2017 przez HaKIM Szeryf (87,590 p.)

W miejscu gdzie ma nastąpić walidacja. To znaczy w pliku, do którego przekierowałeś podczas wysyłania formularza.

<form name="sentMessage" id="contactForm" novalidate method="post" action="kontakt.php">

U Ciebie jest to plik kontakt.php.

Zakładając, że dane przechodzą walidacje od razu po wysłaniu danych z formularza do pliku to tam pobierasz dane do zmiennej, dajmy na to: $userName i przeprowadzasz walidacje. Poleciłbym Tobie tę bibliotekę: https://github.com/Respect/Validation acz, na wiele się nie zda na poziomie Twoich umiejętności.

$var = $_POST['nameUser'];

if (strlen($var) === 0) {
    // ...
}

W ten deseń. 

 

Podobne pytania

0 głosów
1 odpowiedź 527 wizyt
0 głosów
1 odpowiedź 257 wizyt
pytanie zadane 28 maja 2019 w Sieci komputerowe, internet przez Eurogetwork Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 987 wizyt

93,720 zapytań

142,641 odpowiedzi

323,264 komentarzy

63,268 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...