Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]zabezpieczenie przed wysłaniem pustego formularza
AdinM
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.03.2018

Ostrzeżenie: (10%)
X----


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
}
?>
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
emillo91
post
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
Go to the top of the page
+Quote Post
gitbejbe
post
Post #3





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


  1. if(!empty($_POST['cf-email'])){
  2. // wyślij email
  3. }
  4. else {
  5. echo 'podaj adres email';
  6. }

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
Go to the top of the page
+Quote Post
AdinM
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.03.2018

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
dr_NO
post
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.
Go to the top of the page
+Quote Post
mrk9109
post
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:

  1. $mail_status = mail($mail_to, $uwd, $subject, $body_message, $headers);

i możesz zrobić np:

  1. if(!empty($_POST['cf-email'])){
  2. $mail_status = mail($mail_to, $uwd, $subject, $body_message, $headers);
  3.  
  4. }
  5. else {
  6. echo 'podaj adres email';
  7. }


Ten post edytował mrk9109 7.05.2018, 11:32:13
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #7





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Cytat(AdinM @ 4.05.2018, 22:21:23 ) *
... 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 ...
Go to the top of the page
+Quote Post
markonix
post
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Cytat(LowiczakPL @ 7.05.2018, 21:34:50 ) *
więc nie musisz pisać żadnych zabezpieczeń

thumbsdownsmileyanim.gif Bzdura.. Typy pól to bardziej zwiększenie userbility, aniżeli "zabezpieczenie"..


--------------------
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
LowiczakPL
post
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 ...
Go to the top of the page
+Quote Post
leonpro778
post
Post #11





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


Cytat(LowiczakPL @ 8.05.2018, 20:26:14 ) *
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.

A słyszałeś o takim fajnym narzędziu jak ZBADAJ w Chrome? Albo INSPEKTOR w Firefox?
Go to the top of the page
+Quote Post
markonix
post
Post #12





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Cytat(LowiczakPL @ 8.05.2018, 20:26:14 ) *
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.


--------------------
Go to the top of the page
+Quote Post
AdinM
post
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.03.2018

Ostrzeżenie: (10%)
X----


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ść.
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
AdinM
post
Post #15





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.03.2018

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 15.05.2018, 16:29:49 ) *
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.
Go to the top of the page
+Quote Post
Neutral
post
Post #16





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Zamiast tego:

  1. if(isSet($_POST['cf-email']) { //...


, powinno być:
  1. if(isset($_POST['cf-email'])) { //...


Ten post edytował Neutral 15.05.2018, 16:57:53
Go to the top of the page
+Quote Post
Pyton_000
post
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Cytat(Neutral @ 15.05.2018, 17:56:26 ) *
Zamiast tego:

  1. if(isSet($_POST['cf-email']) { //...


, powinno być:
  1. if(isset($_POST['cf-email'])) { //...


Nie masz się czego czepiać? funkcje w PHP są case insensitive
Go to the top of the page
+Quote Post
AdinM
post
Post #18





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.03.2018

Ostrzeżenie: (10%)
X----


Cytat(Neutral @ 15.05.2018, 17:56:26 ) *
Zamiast tego:

  1. if(isSet($_POST['cf-email']) { //...


, powinno być:
  1. if(isset($_POST['cf-email'])) { //...

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
Go to the top of the page
+Quote Post
Neutral
post
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.
Go to the top of the page
+Quote Post
Pyton_000
post
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 smile.gif Czas chyba zmniejszyć dawkowanie komputera.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:04