Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V  < 1 2 3  
Reply to this topicStart new topic
> Formularz czasami przychodzi całkiem pusty
dublinka
post 16.05.2019, 05:56:55
Post #41





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Ty chyba nie czytasz tego co sie pisze.
Dalem komentarz do tego linku. Skrypt forum dzieli wyraz javascript na dwa. Wez to polacz w jeden i bedzie git.

Dlaczego wynikiem jest tylko 'java' ? Ano dlatego ze jesli sie nie obejmie apostrofami url (w tym przypadku tag 'a') a występuje w ciagu spacja wtedy bedzie odczytany pierwszy ciąg przed spacją. Ale to juz tak gwoli scislosci. Akurat to nie ma znaczenia w tym przykladzie. Skrypt forum dzieli niektore wyrazy poprostu. Trzeba je polączyc.

Ten post edytował dublinka 16.05.2019, 07:51:23


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 16.05.2019, 09:30:03
Post #42





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

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


Cytat(dublinka @ 15.05.2019, 21:42:57 ) *
Kropka to nie spacja czy tabulator. To są tzw białe znaki. Reszta wpisywana z klawiatury jest normalnym znakiem. Miales problem z pustymi wartosciami ktore byly przesylane na mejla a to czy ktos Ci wpisze w pole MIASTO = blablabla to juz od tego sie nie uchronisz bo musialbys miec jakas tablice wszystkich miast, miejscowosci, wsi etc i pozwlaac tylko z tych.
Jesli chcesz filtrowac względem dozwolonych znaków to trzeba filtrowac po tym przykladzie ktory podalem. On sprawdza CZY COS ZOSTAŁO WYSŁANE lub jak kto woli czy POLA FORMULARZA NIE ZOSTAŁY WYSŁANE PUSTE.
Do pustych nie nalezą kropki czy inne znaki. Puste sa to białe znaki. Jesli przyklad nie wychwyci nic znaczy sie ze pola formularza zostaly wypelnione.


To przykład ktory sprawdzi czy pole zawiera TYLKO male litery i liczby - reszta jest niedozwolona

  1. <?php
  2. $co = "login---";
  3. if(preg_match('/[^0-9a-z]/i',$co))
  4. {
  5. exit('Wystepuja nieprawidlowe znaki');
  6. }
  7.  
  8. print 'Dalsza czesc strony jesli ok';
  9. ?>


W podobny sposob mozesz dodawac znaki ktore moga byc akceptowane jak rowniez dlugosc minimalna i maksymalna.
W tym przypadku akceptowane sa:
Male litery
Liczby
Znak podkreslenia
Kropka
Minimalna dlugosc 6 a max 15 znakow

  1. <?php
  2. $co = "logi99._-";
  3. if(!preg_match("/^[a-z0-9_.]{6,15}$/", $co))
  4. {
  5. exit('Wystepuja nieprawidlowe znaki. Minimalna liczba znakow to 6 a max to 15');
  6. }
  7.  
  8. print 'Dalsza czesc strony jesli ok';
  9. ?>

Uściślając Twój 1-szy regexp akceptuje duże i małe litery + cyfry (operator `i`)
Go to the top of the page
+Quote Post
maniana7
post 16.05.2019, 11:32:22
Post #43





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.10.2017

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


Cytat(dublinka @ 16.05.2019, 06:56:55 ) *
Ty chyba nie czytasz tego co sie pisze.
Dalem komentarz do tego linku. Skrypt forum dzieli wyraz javascript na dwa. Wez to polacz w jeden i bedzie git.

Dlaczego wynikiem jest tylko 'java' ? Ano dlatego ze jesli sie nie obejmie apostrofami url (w tym przypadku tag 'a') a występuje w ciagu spacja wtedy bedzie odczytany pierwszy ciąg przed spacją. Ale to juz tak gwoli scislosci. Akurat to nie ma znaczenia w tym przykladzie. Skrypt forum dzieli niektore wyrazy poprostu. Trzeba je polączyc.


Czytałem, czytałem smile.gif Ze zrozumieniem to już inna sprawa. Łączyłem ten cały ciąg (myślałem, że to jest string) z exit, na kilka sposobów i nic. Po Twoim ostatnim poście dotarło do mnie żeby połączyć słowo java script w javascript.

W międzyczasie pojawiła się kolejna zagwozdka:
nie chcąc zmuszać wypełniającego do podawania telefonu usunąłem z tego fragmentu:

$ArrInfo = array('imie' => 'Wypełnij pole: imię',
'ulica' => 'Wypełnij pole: ulica',
'kod' => 'Wypełnij pole: kod',
'miejscowosc' => 'Wypełnij pole: miejscowość',
'telefon' => 'Wypełnij pole: telefon',
);

ciąg dot. telefonu, żeby nie pokazywał błędu Popraw/Wypełnij. Teraz mam:

$ArrInfo = array('imie' => 'Wypełnij pole: imię',
'ulica' => 'Wypełnij pole: ulica',
'kod' => 'Wypełnij pole: kod',
'miejscowosc' => 'Wypełnij pole: miejscowość',
);

Sęk w tym, że to pole musi być opcjonalne, zero przymusu. Problem w tym, że nie wypełniając pola telefon i próbie wysłania wyskakuje okno:

Znaleziono błędy:

POPRAW POLA


Nie ma nic o błędzie, pusta linijka. Dopóki nie wklepie się w to pole czegoś to formularz nie przejdzie.

W dodatku w formularzu html mam pole textarea, też do OPCJONALNEGO wypełnienia. Miejsce na uwagi od wypełniającego:
<textarea name="uwagi" cols="50" rows="3"></textarea>

Występuje taka sama sytuacja jak z polem telefon. Dopóki nie wklepiesz tam czegoś dopóty formularz nie pójdzie dalej i błąd:

Znaleziono błędy:

POPRAW POLA

Pomożecie koledzy? sadsmiley02.gif

Ten post edytował maniana7 16.05.2019, 11:36:47
Go to the top of the page
+Quote Post
nospor
post 16.05.2019, 11:37:29
Post #44





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Pokaz aktualny kod.
Byloby rowniez BARDZO milo jakbys raczyl uzywac BBCODE dla wstawianego kodu


--------------------

"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
maniana7
post 16.05.2019, 11:45:31
Post #45





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.10.2017

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


  1. <?php
  2.  
  3. if(!isset($_POST['submit']))
  4. {
  5.  
  6. exit('wystąpił błąd');
  7.  
  8.  
  9. }
  10.  
  11. $ArrInfo = array('imie' => 'Wypełnij pole: imię',
  12. 'ulica' => 'Wypełnij pole: ulica',
  13. 'kod' => 'Wypełnij pole: kod',
  14. 'miejscowosc' => 'Wypełnij pole: miejscowość',
  15. );
  16.  
  17. unset($submit);
  18. $myPostArgs = filter_input_array(INPUT_POST);
  19. $returnNames = array();
  20. foreach($myPostArgs as $ParamsKey => $ParamsValue)
  21. {
  22.  
  23. if(trim($ParamsValue) == "")
  24. {
  25.  
  26. $return[] = $ArrInfo[$ParamsKey];
  27.  
  28. $match = true;
  29.  
  30.  
  31. }
  32.  
  33. }
  34.  
  35.  
  36. if(isset($match))
  37. {
  38. print 'Znaleziono błędy: <br>';
  39.  
  40. for($i=0; $i<count($return); $i++)
  41. {
  42.  
  43. print ($return[$i] . '<br>');
  44.  
  45. }
  46.  
  47. print "<a style=\"color: green\" href=java script:history.go(-1)><mark>POPRAW</mark></a></div></body>";
  48.  
  49. }
  50.  
  51. $do = 'mojmejl@pocztaxxx.pl';
  52. $imie = $_POST['imie'];
  53. $ulica = $_POST['ulica'];
  54. $kod = $_POST['kod'];
  55. $miejscowosc = $_POST['miejscowosc'];
  56. $telefon = $_POST['telefon'];
  57. $k01 = $_POST['k01'];
  58. $k02 = $_POST['k02'];
  59. $k03 = $_POST['k03'];
  60. $k04 = $_POST['k04'];
  61. $k05 = $_POST['k05'];
  62.  
  63. $tresc .= "Imię:".$imie."\n\n";
  64. $tresc .= "Ulica: ".$ulica."\n\n";
  65. $tresc .= "Kod: ".$kod."\n\n";
  66. $tresc .= "Miejscowość: ".$miejscowosc."\n\n";
  67. $tresc .= "Telefon: ".$telefon."\n\n";
  68. $tresc .= "biały: ".$k01."\n\n";
  69. $tresc .= "czarny: ".$k02."\n\n";
  70. $tresc .= "niebieski: ".$k03."\n\n";
  71. $tresc .= "zielony: ".$k04."\n\n";
  72. $tresc .= "czerwony: ".$k05."\n\n";
  73. @mail($do, 'ankieta', $tresc, "MIME-Version: 1.0\r\n"."Content-type: text/plain; charset=ISO-8859-2\r\n"."From: $mail\r\n");
  74. header('Location: [url="http://mojastronawww/Dziekuję.html&#39%3b%29;"]http://mojastronawww/Dziekuję.html');[/url]
  75. echo $tresc;
  76. ?>



Ten post edytował maniana7 16.05.2019, 11:56:18
Go to the top of the page
+Quote Post
nospor
post 16.05.2019, 11:51:08
Post #46





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




1) w kodzie nadal masz telefon w tablicy wiec nie oczekuje ze zniknie
2) Twoj kod
  1. foreach($myPostArgs as $ParamsKey => $ParamsValue)
  2. {
  3.  
  4. if(trim($ParamsValue) == "")
  5. {
  6.  
  7. $return[] = $ArrInfo[$ParamsKey];
  8.  
  9. $match = true;
  10.  
  11.  
  12. }
  13.  
  14. }

Leci po wszystkicj danych z POST zamiast leciec tylko po danych z tablicy
Zmiana na szybko, choc i tak mi sie nie podoba:
  1. foreach($myPostArgs as $ParamsKey => $ParamsValue)
  2. {
  3.  
  4. if(isset($ArrInfo[$ParamsKey]) && trim($ParamsValue) == "")
  5. {
  6.  
  7. $return[] = $ArrInfo[$ParamsKey];
  8.  
  9. $match = true;
  10.  
  11.  
  12. }
  13.  
  14. }

Generalnie caly ten kod do poprawki by byl ale od biedy narazie starczy


--------------------

"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
maniana7
post 16.05.2019, 11:53:49
Post #47





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.10.2017

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


Zapomniałem usunąć telefon, sorki. Jasne, że go tam teraz nie ma w kodzie skryptu.
Zaraz pozmieniam to co podałeś.

Kurka wodna! Działa. Dzięki!
Co do estetyki kodu pliku php to wiem, jest jaki jest... Ale nie wnikam póki działa bo zaraz coś się wykrzaczy i będzie płacz...

To teraz nie pozostaje mi nic tylko podziękować wszystkim i zobaczymy czy w przyszłości przyjdą na skrzynkę jeszcze jakieś niewypełnione formularze. Oby nie!

Ten post edytował maniana7 16.05.2019, 12:17:52
Go to the top of the page
+Quote Post
dublinka
post 16.05.2019, 12:45:52
Post #48





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(maniana7 @ 16.05.2019, 12:53:49 ) *
To teraz nie pozostaje mi nic tylko podziękować wszystkim i zobaczymy czy w przyszłości przyjdą na skrzynkę jeszcze jakieś niewypełnione formularze. Oby nie!

Puste pola juz nie przejdą. A to czy bedziesz dalej filtrowal dane wg. swoich wymagan to juz inne buty.


--------------------
Go to the top of the page
+Quote Post
maniana7
post 16.05.2019, 13:22:26
Post #49





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.10.2017

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


Tak, zostaje kwestia filtrowania pól, o której kilka wpisów tu jest ale to nie jest teraz najpilniejsza sprawa. Wiesz co było priorytetem a filtrowanie inputów wyszło przy okazji. To delikatna sprawa: tyle wyjątków i różnych kombinacji przy każdym polu, nie wspominając, że ludzie często walą w form-ie wszystko jak leci z małej litery (co dla mnie nie jest żadnym problemem). Niech mają luz. Jak 1 na 100 będzie chciał wpisać bzdety nie widzę problemu - niech sobie ulży, jego sprawa.
Go to the top of the page
+Quote Post
dublinka
post 16.05.2019, 13:47:19
Post #50





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Pyton_000 @ 16.05.2019, 10:30:03 ) *
Uściślając Twój 1-szy regexp akceptuje duże i małe litery + cyfry (operator `i`)

  1. $co = "logini77";
  2. if(!preg_match('/^[a-z0-9]+$/', $co))
  3. {
  4. print 'blad';
  5. } else {
  6. print 'ok';
  7. }


Cytat(maniana7 @ 16.05.2019, 14:22:26 ) *
Tak, zostaje kwestia filtrowania pól, o której kilka wpisów tu jest ale to nie jest teraz najpilniejsza sprawa. Wiesz co było priorytetem a filtrowanie inputów wyszło przy okazji. To delikatna sprawa: tyle wyjątków i różnych kombinacji przy każdym polu, nie wspominając, że ludzie często walą w form-ie wszystko jak leci z małej litery (co dla mnie nie jest żadnym problemem). Niech mają luz. Jak 1 na 100 będzie chciał wpisać bzdety nie widzę problemu - niech sobie ulży, jego sprawa.

Do tego sluza wyrazenia regularne. Cala sila w nich jest taka ze nie trzeba wlasnie miec naście kombinacji - jedna regula i tyle.


--------------------
Go to the top of the page
+Quote Post
maniana7
post 16.05.2019, 19:06:19
Post #51





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.10.2017

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


Dodam, że złapałem kontakt z gościem, który jakiś czas temu na 100% poprawnie wypełnił i wysłał formularz a ten przyszedł niewypełniony: pozaznaczał chexboxy a trochę ich było (nie sugerujcie się kodami php, które podaję z kilkoma kolorami do wyboru bo to jest na użytek testów) wpisał swoje namiary i wysłał. Zgadza się dzień i godzina. Napisał, że u niego nie było żadnych problemów. Wysłał i był pewien, że wsio poszło ok. Komp stacjonarny, windows, przeglądarki nie podał choć pytałem, mniejsza z tym. Moja poczta jest na interii.

Ten post edytował maniana7 16.05.2019, 19:11:00
Go to the top of the page
+Quote Post
dublinka
post 16.05.2019, 21:13:47
Post #52





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(maniana7 @ 16.05.2019, 20:06:19 ) *
Dodam, że złapałem kontakt z gościem, który jakiś czas temu na 100% poprawnie wypełnił i wysłał formularz a ten przyszedł niewypełniony: pozaznaczał chexboxy a trochę ich było (nie sugerujcie się kodami php, które podaję z kilkoma kolorami do wyboru bo to jest na użytek testów) wpisał swoje namiary i wysłał. Zgadza się dzień i godzina. Napisał, że u niego nie było żadnych problemów. Wysłał i był pewien, że wsio poszło ok. Komp stacjonarny, windows, przeglądarki nie podał choć pytałem, mniejsza z tym. Moja poczta jest na interii.

Nikt z nas nie ma szklanej kuli. Cokolwiek mozna zrobic dopiero wtedy kiedy widzi sie kod bo takie "na 100%" "na paweno" itp to z doswiadczenia wiem ze nie jest tak do konca.
Jedynie widzac kod mozna stwierdzic czy przeszlo puste czy nie


--------------------
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3
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 Wersja Lo-Fi Aktualny czas: 16.04.2024 - 05:14