![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
Chciałbym prosić o pomoc. Otóż chcę aby w polu adres email zrobić zabezpieczenie przed wysłaniem pustej wiadomości z formularza. Jestem zupełnie zielony w tej dziedzinie. Gdzie i co mam dopisać, aby wymusić na użytkowniku wprowadzenie co najmniej pola email przed wysłaniem wiadomości. Ot mój skrypt do wysłanie wiadomości.
CODE <?php
$field_name = $_POST['cf-name']; $field_email = $_POST['cf-email']; $field_terminw = $_POST['cf-terminw']; $field_poczotek = $_POST['cf-poczotek']; $field_koniec = $_POST['cf-koniec']; $field_liczba = $_POST['cf-liczba']; $field_message = $_POST['cf-message']; //Specify the message recipient: $mail_to ='; $subject = 'Wiadomość wysłana ze strony internetowej '; //The email content: $body_message = 'Nadawca: '.$field_name."\n"; $body_message .= 'E-mail: '.$field_email."\n"; $body_message .= 'Termin wyjazdu: '.$field_terminw."\n"; $body_message .= 'Adres początkowy: '.$field_poczotek."\n"; $body_message .= 'Adres końcowy: '.$field_koniec."\n"; $body_message .= 'Liczba osób: '.$field_liczba."\n"; $body_message .= 'Dodatkowe informacje : '.$field_message; $headers = 'Content-type: text/plain; charset=utf-8' . "\r\n"; $headers .= "From: " . $name . " <" . $email . ">" . "\r\n"; $headers .= "Reply-To: " . $email; $mail_status = mail($mail_to, $subject, $body_message, $headers); //Show a javascript message about the successful or unsuccessful sending a message if ($mail_status) { ?> <script language="javascript" type="text/javascript"> alert('Zapraszamy do kontaktu ponownie. '); window.location = 'index.html'; </script> <?php } else { ?> <script language="javascript" type="text/javascript"> alert('Message failed.'); window.location = 'index.html'; </script> <?php } ?> |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 29.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
http://forum.php.pl/index.php?showtopic=97853
Szukaj w google: puste pola formularza |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
to najprostszy warunek i odpowiedź na Twoje pytanie w temacie. Poczytaj o walidacji danych przychodzących, bo raczej takie proste warunki nie spełnia Twoich oczekiwań. Do sprawdzania pola email, dodaj też jakiegoś regex'a, np: http://thisinterestsme.com/php-email-regex/ Ten post edytował gitbejbe 4.05.2018, 21:48:18 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
Próbowałem tak:
CODE <?php $field_name = $_POST['cf-name']; $field_email = $_POST['cf-email']; $field_terminw = $_POST['cf-terminw']; $field_poczotek = $_POST['cf-poczotek']; $field_koniec = $_POST['cf-koniec']; $field_liczba = $_POST['cf-liczba']; $field_message = $_POST['cf-message']; $user_IP = $_SERVER["REMOTE_ADDR"]; //Specify the message recipient: $mail_to = '------@o2.pl'; $uwd = '--------pl'; $subject = 'Wiadomość wysłana ze strony internetowej -----'; //The email content: $body_message = 'Nadawca: '.$field_name."\n"; $body_message .= 'E-mail: '.$field_email."\n"; $body_message .= 'Termin wyjazdu: '.$field_terminw."\n"; $body_message .= 'Adres początkowy: '.$field_poczotek."\n"; $body_message .= 'Adres końcowy: '.$field_koniec."\n"; $body_message .= 'Liczba osób: '.$field_liczba."\n"; $body_message .= 'Dodatkowe informacje : '.$field_message; $headers = 'Content-type: text/plain; charset=utf-8' . "\r\n"; $headers .= "Wiadomość od: " . $field_name . " <" . $field_email . ">" . "\r\n"; $headers .= "Odpowiedz do: " . $field_email; $mail_status = mail($mail_to, $uwd, $subject, $body_message, $headers); function check_email($field_email) { $wyr = "^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*"; $wyr .= "@([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,4})$"; if(ereg($wyr, $field_email)){ return true; } else{ return false; } } function sendmail($field_email) { if($field_email == "" || ){ print("Proszę wypełnić wszystkie pola formularza"); } else if (mail($field_email)){ print("Wiadomość wysłano poprawnie"); } else{ print("Nie udało się wysłać wiadomości"); } } if(isSet($_POST['cf-email']) { if(!check_email($_POST['cf-email'])){ echo("Niepoprawny adres w polu email!"); } else{ sendmail($_POST['cf-email']); } } else{ echo("Proszę wypełnić conajmniej adres email!"); } ?> ale nie wychodzi - taki komunikat otrzymuję: PHP Parse error: syntax error, unexpected ')' in source_file.php on line 43 Ten post edytował AdinM 6.05.2018, 18:21:49 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 197 Pomógł: 15 Dołączył: 10.09.2006 Skąd: Siemianowice Śląskie / Katowice Ostrzeżenie: (0%) ![]() ![]() |
No przeca masz tam informację o tym że jest nieoczekiwany znak ")".
W linii tej masz niepełny warunek: if($field_email == "" || ) po OR brakuje Ci warunku. -------------------- woop woop.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 445 Pomógł: 3 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
masz jeden wielki bałagan i fragment kodu funkcja mail która odpowiada za wysłanie maila masz tu:
i możesz zrobić np:
Ten post edytował mrk9109 7.05.2018, 11:32:13 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
... chcę aby w polu adres email zrobić zabezpieczenie przed wysłaniem pustej wiadomości z formularza... HTML5 filtruje formularze natywnie więc nie musisz pisać żadnych zabezpieczeń wystarczy odpowiednio sformatować komórkę formularza dla e-maila to type="email" i masz już włączoną walidację po stronie przeglądarek inne typy to: color - pozwala na wybór koloru; date - służy do wyboru daty (rok, miesiąc, dzień); nie pozwala wybrać strefy czasowej; datetime - tak samo jak ‘date’, z tym że pozwala wybrać także czas; datetime-local - tak samo jak ‘datetime’, z tą różnicą, że powala na wybór strefy czasowej; month - służy do wyboru daty z miesiącem; time - pozwala na wybór tylko czasu (godzina, minuty, sekundy, części sekundy); week - podobnie jak ‘month’ z tym, że wybiera się rok w wraz z numerem tygodnia w tym roku; email - pozwala na wpisanie adresu email; obsługa - number - służy do wprowadzania liczby; w połączeniu z atrybutami ‘min’, ‘max’ można ograniczyć zakres wprowadzanych liczb, natomiast z atrybutem ‘step’ pozwala na zdefiniowanie inkrementacji; range - wyświetla “slider’ czyli suwak; search - w zasadzie jest to samo co standardowy typ ‘text’ z tym, że może wyglądać inaczej na interfejsie użytkownika (zależy od przeglądarki); tel - również wygląda jak ‘text’ jednak służy do wprowadzania numerów telefonów i tak powinien być używany (zamiast ‘text’); url - podobnie, wygląda jak ‘text’ ale należy go używać jeśli oczekuje się wprowadzenia adresu URL; dodatkowo możesz użyć atrybutu pattern - pozwala na wprowadzenie wyrażenia regularnego atrybut required - wartość boolowska oznaczająca, że dana kontrolka jest wymagana; jeśli pole nie zostanie wypełnione, formularz nie będzie mógł być wysłany -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
więc nie musisz pisać żadnych zabezpieczeń ![]() -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@markonix nie dosc ze bzdura to jeszcze przerazajace jest ze slowa te padaja z ust osob, ktore komercyjnie tworza oprogramowanie :/
@LowiczakPL powinienies teraz przejrzec wszystkie projekty ktore stworzyles i poprawic te wszystkie swoje "zabezpieczenia" zanim ktos twoim klientom zrobi "kuku". A potem jeszcze generalnie przejsc sie na jakis kurs z bezpieczenstwa w aplikacjach -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem o co Wam chodzi, przecież wyraźnie napisał "..zabezpieczenie przed wysłaniem pustej wiadomości z formularza." od tego jest HTML5 i nic innego nie jest potrzebne.
-------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem o co Wam chodzi, przecież wyraźnie napisał "..zabezpieczenie przed wysłaniem pustej wiadomości z formularza." od tego jest HTML5 i nic innego nie jest potrzebne. Oczywiście, że należy użyć tu required lub zewnętrznych bibliotek JS do dodatkowej walidacji formularza, ale i tak powinno się zawsze zaczynać od warstwy walidacji po stronie PHP. Już nie mówiąc o bezpieczeństwie to chodzi też o zachowanie kompatybilności, walidacja HTML5 nie zadziała zawsze, są jeszcze stare przeglądarki gdzieniegdzie więc czasem po prostu ona zostanie zignorowana. -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
W sumie to jeśli required uniemożliwi wysłanie to zupełnie mi wystarczy
Mój kod formularza wygląda tak CODE action="contact.php" name="form-name" method="post"> <div class="bd-container-inner"> <div class="container-fluid"> <h2 class=" bd-textblock-27 bd-content-element"> <a name="kontakt"></a>napisz do nas </h2> <div class=" bd-input-5 form-group"> <label class="bd-form-label">Imię i Nazwisko</label> <input type="text" class="bd-form-input" placeholder="Imię i Nazwisko" name="cf-name" > </div> <div class=" bd-input-8 form-group"> <label class="bd-form-label">Adres email</label> <input type="email" class="bd-form-input" placeholder="Adres email" required name="cf-email" > </div> <div class=" bd-input-11 form-group"> <label class="bd-form-label">Termin wyjazdu</label> <input type="date" class="bd-form-input" name="cf-terminw" > </div> <div class=" bd-input-14 form-group"> <label class="bd-form-label">Adres początkowy podróży</label> <input type="text" class="bd-form-input" placeholder="Adres początkowy podróży" name="cf-poczotek" > </div> <div class=" bd-input-17 form-group"> <label class="bd-form-label">Adres końcowy podróży</label> <input type="text" class="bd-form-input" placeholder="Adres końcowy podróży" name="cf-koniec" > </div> <div class=" bd-input-20 form-group"> <label class="bd-form-label">Liczba osób</label> <input type="number" class="bd-form-input" placeholder="Liczba osób" name="cf-liczba" > </div> <div class=" bd-textarea-2 form-group"> <label class="bd-form-label">Dodatkowe informacje</label> <textarea class="bd-form-input" name="cf-message" placeholder="Dodatkowe informacje"></textarea> po dodaniu tutaj required <input type="email" class="bd-form-input" placeholder="Adres email" name="cf-email" required >, nie ma żadnej różnicy - nadal przesyła pustą wiadomość. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat W sumie to jeśli required uniemożliwi wysłanie to zupełnie mi wystarczy Juz to wyjasniono tutaj parokrotnie:nie, nie uniemozliwi. Taki parametr to pic na wode fotomontaz. Taki bajer. Niezaleznie czy masz to required w html czy nie to normalne sprawdzanie w php masz miec obowiazkowo i na tym sie lepiej skup. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
Juz to wyjasniono tutaj parokrotnie: nie, nie uniemozliwi. Taki parametr to pic na wode fotomontaz. Taki bajer. Niezaleznie czy masz to required w html czy nie to normalne sprawdzanie w php masz miec obowiazkowo i na tym sie lepiej skup. No ok skupiam się. Czy z tego coś będzie: CODE <?php $field_name = $_POST['cf-name']; $field_email = $_POST['cf-email']; $field_terminw = $_POST['cf-terminw']; $field_poczotek = $_POST['cf-poczotek']; $field_koniec = $_POST['cf-koniec']; $field_liczba = $_POST['cf-liczba']; $field_message = $_POST['cf-message']; $user_IP = $_SERVER["REMOTE_ADDR"]; //Specify the message recipient: $mail_to = ''; $uwd = ''; $subject = 'Wiadomość wysłana ze strony internetowej angliabus.pl'; //The email content: $body_message = 'Nadawca: '.$field_name."\n"; $body_message .= 'E-mail: '.$field_email."\n"; $body_message .= 'Termin wyjazdu: '.$field_terminw."\n"; $body_message .= 'Adres początkowy: '.$field_poczotek."\n"; $body_message .= 'Adres końcowy: '.$field_koniec."\n"; $body_message .= 'Liczba osób: '.$field_liczba."\n"; $body_message .= 'Dodatkowe informacje : '.$field_message; $headers = 'Content-type: text/plain; charset=utf-8' . "\r\n"; $headers .= "Wiadomość od: " . $field_name . " <" . $field_email . ">" . "\r\n"; $headers .= "Odpowiedz do: " . $field_email; $mail_status = mail($mail_to, $uwd, $subject, $body_message, $headers); function check_email($field_email) { $wyr = "^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*"; $wyr .= "@([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,4})$"; if(ereg($wyr, $field_email)){ return true; } else{ return false; } } function sendmail($field_email) { if($field_email == ""){ print("Proszę wypełnić wszystkie pola formularza"); } else if (mail($field_email)){ print("Wiadomość wysłano poprawnie"); } else{ print("Nie udało się wysłać wiadomości"); } } if(isSet($_POST['cf-email']) { if(!check_email($_POST['cf-email'])){ echo("Niepoprawny adres w polu email!"); } else{ sendmail($_POST['cf-email']); } } else{ echo("Proszę wypełnić conajmniej adres email!"); } ?> ale taki komunikat - Parse error: syntax error, unexpected '{' in /home/amelind5/domains/------.pl/public_html/contactmoj.php on line 53. Jeszcze raz proszę o pomoc. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zamiast tego: , powinno być: Nie masz się czego czepiać? funkcje w PHP są case insensitive |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
Zamiast tego: , powinno być: Po zaproponowanych zmianach otrzymuję takie komunikaty: Bez wprowadzenia adresu email w formularzu - Deprecated: Function ereg() is deprecated in /home/amelind5/domains//public_html/contactmoj.php on line 33 Niepoprawny adres w polu email! a po wprowadzeniu adresu email Deprecated: Function ereg() is deprecated in /home/amelind5/domains/-----/public_html/contactmoj.php on line 33 Warning: mail() expects at least 3 parameters, 1 given in /home/amelind5/domains/-----/public_html/contactmoj.php on line 46 Nie udaĹo siÄ wysĹaÄ wiadomoĹci W obu przypadkach otrzymuję wiadomości na podaną pocztę czyli formularz nie blokuje wysłania; na email otrzymuję takie wiadomości bez polskich liter - - Adres poczÄ…tkowy: Adres koĹ„cowy: Liczba osĂłb: Dodatkowe informacje : Wiadomość wysĹ‚ana ze strony internetowej |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie masz się czego czepiać? funkcje w PHP są case insensitive Wiem o tym, chodziło o brak jednego nawiasu. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
A sorka. nawiasu nie zauważyłem
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:04 |