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

formularz kontaktowy - puste pola

Object Storage Arubacloud
0 głosów
1,006 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ź 223 wizyt
0 głosów
1 odpowiedź 104 wizyt
pytanie zadane 28 maja 2019 w Sieci komputerowe, internet przez Eurogetwork Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 559 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...