![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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ń (IMG:style_emoticons/default/thumbsdownsmileyanim.gif) Bzdura.. Typy pól to bardziej zwiększenie userbility, aniżeli "zabezpieczenie".. |
|
|
![]()
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 |
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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 (IMG:style_emoticons/default/smile.gif) Czas chyba zmniejszyć dawkowanie komputera.
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
Skrypt już nie wysyła pustych wiadomości ale za to przesyła wiadomości bez polskich liter. Czy może ktoś zerknąć dlaczego tak się dzieje. Co należy zrobić.
Ten post edytował AdinM 18.05.2018, 09:30:24 |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
To był przykład. Spróbuj tak:
|
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Szablon mail jest źle wysyłany (wcześniej były problemy z nieprawidłowym kodowaniem znaków na stronie - były zapisane jako win-1252 zamiast utf-8). Jak ma pomóc w temacie dodanie JSON_UNESCAPED_UNICODE do odpowiedzi która wyświetla się prawidłowo?
|
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 15.03.2018 Ostrzeżenie: (10%) ![]() ![]() |
problem rozwiązany.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:04 |