![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam formularz wysyłany za pomocą skryptu.php na mejla. Wszystko działało ok. W ostatnich tygodniach coraz częściej zamiast wypełnionego formularza przychodzi formularz całkowicie pusty tj. wszystkie pola są puste a wiem od ludzi wysyłających formularz, że został wypełniony. Są tam checkobx-y i input-y. Żeby móc wysłać formularz trzeba wypełnić wymagane pola (required) więc teoretycznie bez tego nie powinien zostać wysłany a dochodzi. Na 8 wypełnionych prawidłowo przychodzą 2 całkiem puste. Gdzie może leżeć tego przyczyna? Pozdrawiam Ten post edytował maniana7 13.05.2019, 15:44:27 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Wszystkie przychodza puste zawsze ?
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Problem dotyczy około 15-20% formularzy, które docierają do mnie na mejla. Przychodzą z pustymi polami jakby ktoś nic nie wypełnił a wysłał. Nie chodzi o to, że przychodzi pusty mejl bez niczego tylko dochodzi niewypełniony formularz typu:
Imię: Nazwisko: Adres: a te poprawne są z wypełnionymi danymi adresowymi. Nie wiem czy to możliwe, że wpisane dane giną gdzieś po drodze... Reszta formularzy dochodzi jak należy: wybrane checkbox-y zaznaczone a wymagane pola do wypełnienia (required) wypełnione prawidłowo. Ten post edytował maniana7 13.05.2019, 19:11:13 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 872 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź z jakich przeglądarek są wysyłane te puste emaile.
Ale sądzę że powinieneś zweryfikować skrypt wysyłania emaila aby wykonywał się gdy formularz zawiera treści. Pusty formularz mimo że go oskryptujesz, nadal można wysłać. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Zasadnicze pytanie - kiedy robisz walidację wprowadzonych danych? W JavaScripcie czy w PHP?
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Nie mam walidacji pól
![]() Czy to wg. Waszej wiedzy jest teoretycznie możliwe, że problemem może być konkretna przeglądarka, wysyłanie z mobila itp. sprawy? Wysyłam z firefoxa, opery, chrome'a: wszystko dochodzi. Ten post edytował maniana7 13.05.2019, 20:04:27 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Nie sądzę by to była wina przeglądarki jakkolwiek. Tylko i wyłącznie walidacja po stronie PHP - dopiero jak ją wdrożysz to możesz mieć pewność, że zrobiłeś wszystko by formularza działał poprawnie i dopiero w tedy, gdy nadal będą dochodziły puste wiadomości, zastanawiać się co jest nie tak.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Nie mam walidacji pól ![]() Czy to wg. Waszej wiedzy jest teoretycznie możliwe, że problemem może być konkretna przeglądarka, wysyłanie z mobila itp. sprawy? Wysyłam z firefoxa, opery, chrome'a: wszystko dochodzi. Najprosciej dodac walidacje kazdego pola w php; sprawdzic czy nie jest puste i jesli nie puscic dalej. Przeciez sam mozesz to sprawdzac nie musisz kontaktowac sie z nikim. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Będzie off top ale czy pomoże ktoś z modyfikacją skryptu? Mam rozumieć, że grzebać muszę tylko w pliku skryptu czy w pliku html też coś trzeba pozmieniać? Nie chcę szaleć, chciałbym aby sprawdzało poprawność wypełnienia tylko dwóch pól: imię i kod. Jak to zadziała to będę wiedział, że formularz przychodzi pusty z innego powodu i nie jest nim "spacjowanie" pól dla żartu.
W html mam pola input: name="imię" name="kod" Mój skrypt.php wygląda tak: <?php $do = 'mojmejl@pocztaxxxxxxx.pl'; $imię = $_POST['imię']; $ulica = $_POST['ulica']; $kod = $_POST['kod']; $miejscowosc = $_POST['miejscowosc']; $telefon = $_POST['telefon']; $k01 = $_POST['01']; $k02 = $_POST['02']; $k03 = $_POST['03']; $k04 = $_POST['04']; $k05 = $_POST['05']; $tresc .= "Imię:".$imię."\n\n"; $tresc .= "Ulica: ".$ulica."\n\n"; $tresc .= "Kod: ".$kod."\n\n"; $tresc .= "Miejscowość: ".$miejscowosc."\n\n"; $tresc .= "Telefon: ".$telefon."\n\n"; $tresc .= "biały: ".$k01."\n\n"; $tresc .= "czarny: ".$k02."\n\n"; $tresc .= "niebieski: ".$k03."\n\n"; $tresc .= "zielony: ".$k04."\n\n"; $tresc .= "czerwony: ".$k05."\n\n"; @mail($do, 'ankieta', $tresc, "MIME-Version: 1.0\r\n"."Content-type: text/plain; charset=ISO-8859-2\r\n"."From: $mail\r\n"); header('Location: http://www.mojastrona.pl/dziekuję.html'); echo $tresc; ?> Tutaj coś znalazłem ale nie mam pojęcia gdzie to powklejać i czy to w ogóle jest poprawne. Chodzi tylko o imię i kod i aby sprawdzało czy zamiast imienia i kodu ktoś nie klepnął kilka razy spacji: function poprawneImie($imię) { if (!preg_match('/^[a-z]$/', $imię)) { return false; //zwraca "false" jeśli imię jest błędne } return true; //zwraca "true" jeśli imię jest poprawne } function poprawnyKod($kod) { if (!preg_match('/^[0-9]{2}+-[0-9]{3}$/', $kod)) { return false; } return true; } //czy puste: if(empty($_POST['imię'])) { echo "Wypełnij pole imię"; } if(empty($_POST['kod'])) { echo "Wypełnij pole kod"; } if(!poprawneImie($_POST['imię'])) { echo "Błędne imię"; } if(!poprawnyKod($_POST['kod'])) { echo "Błędny kod"; } Z góry dzięki. Ten post edytował maniana7 14.05.2019, 10:11:52 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Mozesz sprawdzac kazde pole warunkami poprzez:
ale to toporne rozwiazanie. Przy kliku zmiennych ok ale jak sie ma ich kilkanascie to słabo to wygląda. Jeszcze gorzej jak dla kazdej zmiennej trzebabuy wyswietlic z osobna informacje. . To jest szybsze i krotsze. Oczywiscie do wyswietlenia kazdego z bledów nalezaloby nieco zmienic (przyklad 2). Ten przyklad wyswietli tylko informacje ze chocby jedno pole jest puste
Tutaj przykla gdzie wyswietlaja sie kazde błędy.W tym momencie przyklad jest oparty na glownym warunku i osadzony w jednym pliku. Warunek sprawdza czy polsano zmienna $submit i jesli nie to wyswietla sie formularz a jak tak czyli jak wcisniesz przycisk wykonuje sie reszta kodu. Jelsi bedziesz mial dwa pliki z czego w jednym formularz a w drugim kod do sprawdzenia i cala resztew to trzeba zmienic kilka rzeczy. Na pewno usunac formularz ![]()
Osadz jeden z tych kodów (jesli drugi to uzupełnij tablice pomocniczą kluczami i wartosciami) przed tym co masz przepuscic dalej. Dodaj name=submit do swojego submita w formularzu. Przykład 3 na dwa pliki ((osobno z formularzem i osobno plik z resztą kodu) plik do ktorego bedzie kierowal formularz:
Ten post edytował dublinka 15.05.2019, 15:22:27 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat $submit = @$_POST['submit']; Za takie coś dostałbys z liścia gdybym z Tobą pracował. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Za takie coś dostałbys z liścia gdybym z Tobą pracował. Co Ty nie powiesz. Anulowanie wyswietlenia w tym przykladzie bledu jest niczym nadzwyczajnym. Nie pracujemy tutaj nad aplikacją dla NASA. Zluzuj poślady. zadowolony ? Ten post edytował dublinka 15.05.2019, 13:23:23 -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za propozycję. Ta cała walidacja trochę mnie przerasta i wolałem dotąd jej nie tykać skoro wsio działało (i w sumie działa dalej) jak należy. Ale jak trzeba... A czy to co zaproponowałeś Dublinka zabezpieczy przed wysłaniem formularza z polami "wypełnionymi" spacjami lub innymi głupotami? Stąd zainteresowałem się tymi wzorcami wyrażeń regularnych. Nie chcę się porywać z motyką na słońce, krok po kroku.
Na początek chciałem aby przy próbie wysłania za cholerę nie przepuściło formularza pustego. No to mam required przy inputach. Ale dooopa bo można pola wyspacjować i formularz pójdzie i tu przydałoby się zastosować jakieś wyrażenie regularne, choćby tylko przy kodzie pocztowym typu: pattern="^[0-9]{2}-[0-9]{3}$" stąd. Mam nadzieję, że tylko to wystarczy aby nie dało się wysłać formularza z wpisanymi głupotami. Przy imionach, nazwiskach, miejscowościach jest tyle opcji, że głowa mała - nie chcę atakować wypełniającego formularz dziesiątkami alertów. Dlatego wystarczyłoby samo zabezpieczenie na kod. To nie ma być jakiś kosmos z zabezpieczeniami tylko próba dowiedzenia się z czego wynika poruszony na początku wątku problem. Ten post edytował maniana7 15.05.2019, 13:27:41 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Cytat Co Ty nie powiesz. Anulowanie wyswietlenia w tym przykladzie bledu jest niczym nadzwyczajnym. Nie pracujemy tutaj nad aplikacją dla NASA. Zluzuj poślady. Najlepsze jest to, ze mimo ze dales malpe, to linijke nizej i tak dajesz sprawdzanie ISSET na wyniku tej malpy... Moze naucz sie wiec pisac porzadnie i robic isset gdzie nalezy ![]() Cytat . No to mam required przy inputach. Ale dooopa bo można pola wyspacjować i formularz pójdzie Zacznijmy od tego ze to mozna w ogole wylaczyc/ominac wiec na czyms takim nigdy nie powinienies polegac.ps: przenosze -------------------- "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: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Najlepsze jest to, ze mimo ze dales malpe, to linijke nizej i tak dajesz sprawdzanie ISSET ps: przenosze Poprawione jakbys nie zauwazyl. Dzięki za propozycję. Ta cała walidacja trochę mnie przerasta i wolałem dotąd jej nie tykać skoro wsio działało (i w sumie działa dalej) jak należy. Ale jak trzeba... A czy to co zaproponowałeś Dublinka zabezpieczy przed wysłaniem formularza z polami "wypełnionymi" spacjami lub innymi głupotami? Stąd zainteresowałem się tymi wzorcami wyrażeń regularnych. Nie chcę się porywać z motyką na słońce, krok po kroku. Na początek chciałem aby przy próbie wysłania za cholerę nie przepuściło formularza pustego. No to mam required przy inputach. Ale dooopa bo można pola wyspacjować i formularz pójdzie i tu przydałoby się zastosować jakieś wyrażenie regularne, choćby tylko przy kodzie pocztowym typu: pattern="^[0-9]{2}-[0-9]{3}$" stąd. Mam nadzieję, że tylko to wystarczy aby nie dało się wysłać formularza z wpisanymi głupotami. Przy imionach, nazwiskach, miejscowościach jest tyle opcji, że głowa mała - nie chcę atakować wypełniającego formularz dziesiątkami alertów. Dlatego wystarczyłoby samo zabezpieczenie na kod. To nie ma być jakiś kosmos z zabezpieczeniami tylko próba dowiedzenia się z czego wynika poruszony na początku wątku problem. Skopiuj przyklad i odpal. Przyklad nie przepuszcza tzw. białych znakow" spacji i tabulacji z początku i końca lini -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
No wlasnie oswiec mnie co poprawiles? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Co Ty nie powiesz. Anulowanie wyswietlenia w tym przykladzie bledu jest niczym nadzwyczajnym. Nie pracujemy tutaj nad aplikacją dla NASA. Zluzuj poślady. zadowolony ? Jeśli chcesz pomagać to pomagaj dobrze. Jak to mawiają: "jeśli masz zamiar zrobić coś byle jak to nie rób tego wcale." @nospor poprawił kody wyżej. Ten post edytował Pyton_000 15.05.2019, 13:48:27 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
No wlasnie oswiec mnie co poprawiles? Oswiecam -------------------- |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.10.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dajcie spokój. Po cholerę te przepychanki i dogryzanie sobie? Szkoda nerwów na głupoty.
Mały update. Coś się ruszyło bo wpisałem w pliku html to: pattern="^[0-9]{2}-[0-9]{3}$" i mam teraz: <input required="" name="kod" pattern="^[0-9]{2}-[0-9]{3}$" Przy wypełnianiu nie pozwala przejść dalej ani wysłać formularza ![]() Ten post edytował maniana7 15.05.2019, 13:51:37 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
@maniana juz ci pisalem ze takie zabepzieczenia sa o kant 4 liter. Kazdy moze je ominac. Zabezpieczenie masz miec przedewszystkim po stronie php
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.04.2025 - 08:27 |