Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ Formularz czasami przychodzi całkiem pusty

Napisany przez: maniana7 13.05.2019, 14:55:04

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

Napisany przez: dublinka 13.05.2019, 16:51:50

Wszystkie przychodza puste zawsze ?

Napisany przez: maniana7 13.05.2019, 19:03:43

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.

Napisany przez: Tomplus 13.05.2019, 19:25:13

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ć.

Napisany przez: adbacz 13.05.2019, 19:31:36

Zasadnicze pytanie - kiedy robisz walidację wprowadzonych danych? W JavaScripcie czy w PHP? smile.gif

Napisany przez: maniana7 13.05.2019, 19:45:54

Nie mam walidacji pól smile.gif Sorki, mogłem o tym wspomnieć... Jestem świadom tego, że można w te pola walnąć spacjami i wysłać: przyjdzie pusty formularz. Nawet przypuszczałem, że ktoś sobie robi żarty. Ale dziś po raz pierwszy zdałem sobie sprawę, że to nie jaja. Formularz został wypełniony, wysłany, dotarł ale niewypełniony. Nie mam kontaktu z osobą od której przyszedł ani z innymi nadawcami tych "pustych formularzy". Nie jestem w stanie sprawdzić z jakiej przeglądarki przychodzą formularze. Próbuję to wyjaśnić z Waszą pomocą.

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.

Napisany przez: adbacz 13.05.2019, 20:02:31

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.

Napisany przez: dublinka 13.05.2019, 20:59:03

Cytat(maniana7 @ 13.05.2019, 20:45:54 ) *
Nie mam walidacji pól smile.gif Sorki, mogłem o tym wspomnieć... Jestem świadom tego, że można w te pola walnąć spacjami i wysłać: przyjdzie pusty formularz. Nawet przypuszczałem, że ktoś sobie robi żarty. Ale dziś po raz pierwszy zdałem sobie sprawę, że to nie jaja. Formularz został wypełniony, wysłany, dotarł ale niewypełniony. Nie mam kontaktu z osobą od której przyszedł ani z innymi nadawcami tych "pustych formularzy". Nie jestem w stanie sprawdzić z jakiej przeglądarki przychodzą formularze. Próbuję to wyjaśnić z Waszą pomocą.

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.


Napisany przez: maniana7 14.05.2019, 10:09:51

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&#39%3b%29;
echo $tresc;
?>

http://forum.php.pl/index.php?showtopic=117334 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.

Napisany przez: dublinka 15.05.2019, 11:08:24

Mozesz sprawdzac kazde pole warunkami poprzez:

  1. if( ($zmienna1 =! "") || ($zmienna2 =! "") || ($zmienna3 =! "") )
  2.  
  3. {
  4. }
  5.  


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
  1. <?php
  2.  
  3.  
  4.  
  5. if(!http://www.php.net/isset($_POST['submit']))
  6. {
  7.  
  8. http://www.php.net/echo "<form action " . $_SERVER['SCRIPT_NAME'] . " method=post>";
  9. http://www.php.net/echo "<input type=\"text\" name=\"pole1\"><br>";
  10. http://www.php.net/echo "<input type=\"text\" name=\"pole2\"><br>";
  11. http://www.php.net/echo "<input type=\"text\" name=\"pole3\"><br>";
  12. http://www.php.net/echo "<input type=\"text\" name=\"pole4\"><br>";
  13. http://www.php.net/echo "<input type=\"submit\" name=\"submit\" value=\"dalej\"><br>";
  14.  
  15.  
  16. } else {
  17.  
  18. http://www.php.net/unset($submit);
  19. $myPostArgs = filter_input_array(INPUT_POST);
  20.  
  21. foreach($myPostArgs as $key => $value)
  22. {
  23.  
  24. if(http://www.php.net/trim($value) == "")
  25. {
  26.  
  27. http://www.php.net/exit('wypelnij wszystkie pola');
  28.  
  29. }
  30.  
  31. }
  32.  
  33. }
  34.  
  35.  
  36.  
  37. ?>


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 smile.gif) Przyklad na dwa pliki na samym koncu

  1. <?php
  2.  
  3.  
  4. if(!http://www.php.net/isset($_POST['submit']))
  5. {
  6.  
  7.  
  8.  
  9. http://www.php.net/echo "<form action " . $_SERVER['SCRIPT_NAME'] . " method=post>";
  10. http://www.php.net/echo "<input type=\"text\" name=\"login\"><br>";
  11. http://www.php.net/echo "<input type=\"text\" name=\"haslo\"><br>";
  12. http://www.php.net/echo "<input type=\"text\" name=\"plec\"><br>";
  13. http://www.php.net/echo "<input type=\"text\" name=\"wiek\"><br>";
  14. http://www.php.net/echo "<input type=\"submit\" name=\"submit\" value=\"dalej\"><br>";
  15.  
  16. http://www.php.net/exit;
  17. }
  18.  
  19. $ArrInfo = http://www.php.net/array('login' => 'Wypelnij pole login',
  20. 'haslo' => 'Wypelnij pole haslo',
  21. 'plec' => 'Wypelnij pole plec',
  22. 'wiek' => 'Wypelnij pole wiek'
  23. );
  24.  
  25. http://www.php.net/unset($submit);
  26. $myPostArgs = filter_input_array(INPUT_POST);
  27. $return = http://www.php.net/array();
  28. foreach($myPostArgs as $key => $value)
  29. {
  30.  
  31. if(http://www.php.net/trim($value) == "")
  32. {
  33.  
  34. $return[] = $ArrInfo[$key];
  35.  
  36. $match = true;
  37.  
  38.  
  39. }
  40.  
  41. }
  42.  
  43.  
  44. if(http://www.php.net/isset($match))
  45. {
  46. http://www.php.net/print 'Znaleziono błędy: <br>';
  47.  
  48. for($i=0; $i<count($return); $i++)
  49. {
  50.  
  51. http://www.php.net/print ($return[$i] . '<br>');
  52.  
  53. }
  54. http://www.php.net/exit;
  55.  
  56. }
  57. http://www.php.net/print 'Tutaj reszta kodu jak pola zostaly wypelnione';
  58. ?>


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:


  1.  
  2. <?php
  3.  
  4.  
  5. if(!http://www.php.net/isset($_POST['submit']))
  6. {
  7.  
  8. http://www.php.net/exit('wystąpił błąd');
  9.  
  10.  
  11. }
  12.  
  13. $ArrInfo = http://www.php.net/array('login' => 'Wypelnij pole: login',
  14. 'haslo' => 'Wypelnij pole: haslo',
  15. 'plec' => 'Wypelnij pole: plec',
  16. 'wiek' => 'Wypelnij pole: wiek'
  17. );
  18.  
  19. http://www.php.net/unset($submit);
  20. $myPostArgs = filter_input_array(INPUT_POST);
  21. $return = http://www.php.net/array();
  22. foreach($myPostArgs as $key => $value)
  23. {
  24.  
  25. if(http://www.php.net/trim($value) == "")
  26. {
  27.  
  28. $return = $ArrInfo[$key];
  29.  
  30. $match = true;
  31.  
  32.  
  33. }
  34.  
  35. }
  36.  
  37.  
  38. if(http://www.php.net/isset($match))
  39. {
  40. http://www.php.net/print 'Znaleziono błędy: <br>';
  41.  
  42. for($i=0; $i<count($return); $i++)
  43. {
  44.  
  45. http://www.php.net/print ($return[$i] . '<br>');
  46.  
  47. }
  48. http://www.php.net/exit;
  49.  
  50. }
  51.  
  52. http://www.php.net/print 'Tutaj reszta kodu jak pola zostaly wypelnione';
  53.  
  54.  
  55. ?>

Napisany przez: Pyton_000 15.05.2019, 12:37:21

Cytat
$submit = @$_POST['submit'];

Za takie coś dostałbys z liścia gdybym z Tobą pracował.

Napisany przez: dublinka 15.05.2019, 13:17:35

Cytat(Pyton_000 @ 15.05.2019, 13:37:21 ) *
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.
  1. if(!http://www.php.net/isset($_POST['submit']))


zadowolony ?

Napisany przez: maniana7 15.05.2019, 13:26:46

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}$" https://itporady.pl/html-css/jak-sprawdzic-poprawnosc-kodu-pocztowego/.

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.

Napisany przez: nospor 15.05.2019, 13:40:12

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 tongue.gif

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

Napisany przez: dublinka 15.05.2019, 13:45:49

Cytat(nospor @ 15.05.2019, 14:40:12 ) *
Najlepsze jest to, ze mimo ze dales malpe, to linijke nizej i tak dajesz sprawdzanie ISSET
ps: przenosze

Poprawione jakbys nie zauwazyl.

Cytat(maniana7 @ 15.05.2019, 14:26:46 ) *
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}$" https://itporady.pl/html-css/jak-sprawdzic-poprawnosc-kodu-pocztowego/.

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

Napisany przez: nospor 15.05.2019, 13:46:05

  1. $submit = @$_POST['submit'];
  2.  
  3. if(!http://www.php.net/isset($submit))

No wlasnie oswiec mnie co poprawiles?

Napisany przez: Pyton_000 15.05.2019, 13:47:43

Cytat(dublinka @ 15.05.2019, 14:17:35 ) *
Co Ty nie powiesz. Anulowanie wyswietlenia w tym przykladzie bledu jest niczym nadzwyczajnym. Nie pracujemy tutaj nad aplikacją dla NASA. Zluzuj poślady.
  1. if(!http://www.php.net/isset($_POST['submit']))


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.

Napisany przez: dublinka 15.05.2019, 13:48:21

Cytat(nospor @ 15.05.2019, 14:46:05 ) *
  1. $submit = @$_POST['submit'];
  2.  
  3. if(!http://www.php.net/isset($submit))

No wlasnie oswiec mnie co poprawiles?

Oswiecam

Napisany przez: maniana7 15.05.2019, 13:50:02

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 smile.gif

Napisany przez: nospor 15.05.2019, 13:51:23

@maniana juz ci pisalem ze takie zabepzieczenia sa o kant 4 liter. Kazdy moze je ominac. Zabezpieczenie masz miec przedewszystkim po stronie php

Napisany przez: dublinka 15.05.2019, 13:54:19

Cytat(maniana7 @ 15.05.2019, 14:50:02 ) *
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 smile.gif

Jak ktos wylaczy js w przegladarce to wszystko przejdzie. Tylko i wylacznie sprawdzanie po stronie serwera.

Napisany przez: nospor 15.05.2019, 14:01:17

@dublinka akurat te parametry nie sa obslugiwane przez js wiec wylaczenie JS nie wplynie na ich zachowanie. Nie mniej jednak jak juz mowilem mozna je bez problemu ominac/usunac. Mozna tez wyslac formularz bez przegladarki

Napisany przez: dublinka 15.05.2019, 14:06:33

To co masz czyli:

  1. $do = 'mojmejl@pocztaxxxxxxx.pl';
  2. $imię = $_POST['imię'];
  3. $ulica = $_POST['ulica'];
  4. $kod = $_POST['kod'];
  5. $miejscowosc = $_POST['miejscowosc'];
  6. $telefon = $_POST['telefon'];
  7. $k01 = $_POST['01'];
  8. $k02 = $_POST['02'];
  9. $k03 = $_POST['03'];
  10. $k04 = $_POST['04'];
  11. $k05 = $_POST['05'];
  12.  
  13. $tresc .= "Imię:".$imię."\n\n";
  14. $tresc .= "Ulica: ".$ulica."\n\n";
  15. $tresc .= "Kod: ".$kod."\n\n";
  16. $tresc .= "Miejscowość: ".$miejscowosc."\n\n";
  17. $tresc .= "Telefon: ".$telefon."\n\n";
  18. $tresc .= "biały: ".$k01."\n\n";
  19. $tresc .= "czarny: ".$k02."\n\n";
  20. $tresc .= "niebieski: ".$k03."\n\n";
  21. $tresc .= "zielony: ".$k04."\n\n";
  22. $tresc .= "czerwony: ".$k05."\n\n";
  23. @http://www.php.net/mail($do, 'ankieta', $tresc, "MIME-Version: 1.0\r\n"."Content-type: text/plain; charset=ISO-8859-2\r\n"."From: $mail\r\n");
  24. http://www.php.net/header('Location: [url="http://www.mojastrona.pl/dziekuję.html&#39%3b%29;"]http://www.mojastrona.pl/dziekuję.html');[/url]
  25. http://www.php.net/echo $tresc;


Daj tam gdzie wstawilem informacje na samym dole a na samym poczatku to co ja dalem.

  1.  
  2. if(!http://www.php.net/isset($_POST['submit']))
  3. {
  4.  
  5. http://www.php.net/exit('wystąpił błąd');
  6.  
  7.  
  8. }
  9.  
  10. $ArrInfo = http://www.php.net/array('login' => 'Wypelnij pole: login',
  11. 'haslo' => 'Wypelnij pole: haslo',
  12. 'plec' => 'Wypelnij pole: plec',
  13. 'wiek' => 'Wypelnij pole: wiek'
  14. );
  15.  
  16. http://www.php.net/unset($submit);
  17. $myPostArgs = filter_input_array(INPUT_POST);
  18. $return = http://www.php.net/array();
  19. foreach($myPostArgs as $ParamsKey => $ParamsValue)
  20. {
  21.  
  22. if(http://www.php.net/trim($ParamsValue) == "")
  23. {
  24.  
  25. $return[] = $ArrInfo[$ParamsKey];
  26.  
  27. $match = true;
  28.  
  29.  
  30. }
  31.  
  32. }
  33.  
  34.  
  35. if(http://www.php.net/isset($match))
  36. {
  37. http://www.php.net/print 'Znaleziono błędy: <br>';
  38.  
  39. for($i=0; $i<count($return); $i++)
  40. {
  41.  
  42. http://www.php.net/print ($return[$i] . '<br>');
  43.  
  44. }
  45. http://www.php.net/exit;
  46.  
  47. }
  48.  
  49. // teraz tu co Ty masz tylko pamietaj ze musisz pododawac do tablicy wartosci jakie masz czyli nazwa pola z formularza i wartosc jaka sie wyswietli jesli błąd. Rowniez nazwij swoj input name=submit
  50.  
  51.  
  52.  


  1. $ArrInfo = http://www.php.net/array('login' => 'Wypelnij pole: login',
  2. 'haslo' => 'Wypelnij pole: haslo',
  3. 'plec' => 'Wypelnij pole: plec',
  4. 'wiek' => 'Wypelnij pole: wiek'
  5. );


login, haslo, plec, wiek -> to sa nazwy z pol tekstowych formularza. Pozmieniaj/.dodaj swoje

Cytat(nospor @ 15.05.2019, 15:01:17 ) *
@dublinka akurat te parametry nie sa obslugiwane przez js wiec wylaczenie JS nie wplynie na ich zachowanie. Nie mniej jednak jak juz mowilem mozna je bez problemu ominac/usunac. Mozna tez wyslac formularz bez przegladarki

Mnie ogolnie chodzilo o blokowanie przez js

Napisany przez: nospor 15.05.2019, 14:11:31

Cytat
Mnie ogolnie chodzilo o blokowanie przez js
Z twojego posta wynikalo, ze chodzilo rowniez o parametry, ktore podal maniana. Grzecznie wiec sprostowalem twoje slowa.

Napisany przez: maniana7 15.05.2019, 14:22:41

Cytat(nospor @ 15.05.2019, 14:51:23 ) *
@maniana juz ci pisalem ze takie zabepzieczenia sa o kant 4 liter. Kazdy moze je ominac. Zabezpieczenie masz miec przedewszystkim po stronie php


W poście #14 cytując mnie odniosłeś się tylko do "required". Wiem, że to lipa. O pattern="^[0-9]{2}-[0-9]{3}$" nie wspomniałeś więc go użyłem.

A jak dodam walidację za pomocą PHP https://itporady.pl/html-css/jak-sprawdzic-poprawnosc-kodu-pocztowego/:

$sprawdzKodPocztowy = $_POST['kodpocztowy'];
if ( !preg_match('/^[0-9]{2}-?[0-9]{3}$/Du', $sprawdzKodPocztowy) ) {
print 'Wprowadzono błędny kod pocztowy';
}
?>

do istniejącego pliku php to będzie gitara? Jeszcze nie próbowałem.

Dublinka będę w tym grzebał na 100%, Twoje rady nie pójdą do kosza. A co z tego wyjdzie zobaczymy.

Napisany przez: nospor 15.05.2019, 14:28:11

Cytat
O pattern="^[0-9]{2}-[0-9]{3}$" nie wspomniałeś więc go użyłem.
Mialem wymienic wszystkie parametry po kolei? Chodzilo generalnie o walidacje po stronie przegladarki - to jest lipa. Czy to zrobisz w JS czy w html to jest lipa. To conajwyzej jest mily dodatek do walidacji po stronie serwera i nic wiecej.

Cytat
do istniejącego pliku php to będzie gitara?
Jak dodasz w tej dokladnie postaci to nie. Nie blokujesz tutaj forma w zaden sposob a jedynie wyswietlasz jakis komunikat

Napisany przez: maniana7 15.05.2019, 14:36:29

Cytat(nospor @ 15.05.2019, 15:28:11 ) *
Mialem wymienic wszystkie parametry po kolei? Chodzilo generalnie o walidacje po stronie przegladarki - to jest lipa. Czy to zrobisz w JS czy w html to jest lipa. To conajwyzej jest mily dodatek do walidacji po stronie serwera i nic wiecej.

Jak dodasz w tej dokladnie postaci to nie. Nie blokujesz tutaj forma w zaden sposob a jedynie wyswietlasz jakis komunikat


Dobra to zabieram się za rady Dublinki. Chłopaki dzięki za wyrozumiałość i cierpliwość.

Dublinka, zrobiłem jak napisałeś. Przy próbie wysłania wywala błąd w 15 linii:
Parse error: syntax error, unexpected ''telefon'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in /mój adres/skrypt.php on line 15

Początek pliku php wygląda jak należy:

<?php

if(!isset($_POST['submit']))
{

exit('wystąpił błąd');


}

$ArrInfo = array('imie' => 'Wypelnij pole: imie',
'ulica' => 'Wypelnij pole: ulica',
'kod' => 'Wypelnij pole: kod',
'wiek' => 'Wypelnij pole: miejscowosc'
'telefon' => 'Wypelnij pole: telefon'
);

unset($submit);

Napisany przez: dublinka 15.05.2019, 15:06:28

Cytat(nospor @ 15.05.2019, 15:11:31 ) *
Z twojego posta wynikalo, ze chodzilo rowniez o parametry, ktore podal maniana. Grzecznie wiec sprostowalem twoje slowa.

Moze rzeczywiscie malo precyzyjne to nbylo

Cytat(maniana7 @ 15.05.2019, 15:36:29 ) *
Dobra to zabieram się za rady Dublinki. Chłopaki dzięki za wyrozumiałość i cierpliwość.

Dublinka, zrobiłem jak napisałeś. Przy próbie wysłania wywala błąd w 15 linii:
Parse error: syntax error, unexpected ''telefon'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in /mój adres/skrypt.php on line 15

Początek pliku php wygląda jak należy:

<?php

if(!isset($_POST['submit']))
{

exit('wystąpił błąd');


}

$ArrInfo = array('imie' => 'Wypelnij pole: imie',
'ulica' => 'Wypelnij pole: ulica',
'kod' => 'Wypelnij pole: kod',
'wiek' => 'Wypelnij pole: miejscowosc'
'telefon' => 'Wypelnij pole: telefon'
);

unset($submit);

Zwroc uwage na konstrukcje tablicy. Po kazdym kluczu i jego wartosci jest przeinek. Ostatni klucz ma byc bez przecinka

Napisany przez: jaca121212 15.05.2019, 15:10:26

Cytat(maniana7 @ 15.05.2019, 15:36:29 ) *
Dobra to zabieram się za rady Dublinki. Chłopaki dzięki za wyrozumiałość i cierpliwość.

Dublinka, zrobiłem jak napisałeś. Przy próbie wysłania wywala błąd w 15 linii:
Parse error: syntax error, unexpected ''telefon'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in /mój adres/skrypt.php on line 15

Początek pliku php wygląda jak należy:

<?php

if(!isset($_POST['submit']))
{

exit('wystąpił błąd');


}

$ArrInfo = array('imie' => 'Wypelnij pole: imie',
'ulica' => 'Wypelnij pole: ulica',
'kod' => 'Wypelnij pole: kod',
'wiek' => 'Wypelnij pole: miejscowosc'
'telefon' => 'Wypelnij pole: telefon'
);

unset($submit);

W 15 linii błąd zapomniałeś dać przecinka po miejscowość

Napisany przez: maniana7 15.05.2019, 15:16:44

O Jezusiczku... racja, przecinek smile.gif

A i jeszcze muszę zmienić w html przy każdym inpucie ("Rowniez nazwij swoj input name=submit") to:
Czyli z:

<small>imię
</small></td>
<td style="vertical-align: top;"><input
required="" name="imie"

na taką wersję:

<small>imię
</small></td>
<td style="vertical-align: top;"><input
required="" name=submit "imie"

Czy tak? Zaraz to odpalę.

Napisany przez: dublinka 15.05.2019, 15:20:46

Cytat(maniana7 @ 15.05.2019, 16:16:44 ) *
O Jezusiczku... racja, przecinek smile.gif

A i jeszcze muszę zmienić w html przy każdym inpucie ("Rowniez nazwij swoj input name=submit") to:
Czyli z:

<small>imię
</small></td>
<td style="vertical-align: top;"><input
required="" name="imie"

na taką wersję:

<small>imię
</small></td>
<td style="vertical-align: top;"><input
required="" name=submit "imie"

Czy tak? Zaraz to odpalę.


Submit. Ten ktory klikasz.

  1. <input type="submit" name="submit" value="dalej">


Nie kazde pole tylko submit

Napisany przez: maniana7 15.05.2019, 15:36:30

Odnośnie buttona WYŚLIJ to mam w htmlu coś takiego:

<button name="wysylam"><b>WYSLIJ</b>
</button> </div>

Jak to pozmieniać?

Napisany przez: dublinka 15.05.2019, 16:17:17

Cytat(maniana7 @ 15.05.2019, 16:36:30 ) *
Odnośnie buttona WYŚLIJ to mam w htmlu coś takiego:

<button name="wysylam"><b>WYSLIJ</b>
</button> </div>

Jak to pozmieniać?

No to zmien na input. Jaki problem.

Wywal button i wstaw to

  1. <input type="submit" name="submit" value="dalej">


Albo zostaw button tylko dodaj do buttona wartosc.

  1. <button type="submit" name="submit" value="byleco">Dalej</button>


Noi i co. Działa ?

Napisany przez: maniana7 15.05.2019, 18:06:43

Działa piknie! Trzeba było z pracy w końcu wyjść smile.gif W domu naniosłem poprawki, kilka wrzutów na ftp-a, poprawek i w końcu śmiga. Dzięki jeszcze raz za pomoc.
Trochę chamska ta strona z komunikatami o niewypełnionych polach co się pokazuje po kliku w submit-a. Cała biała jak śmierć i tylko:

Znaleziono błędy:
Wypełnij pole: imię
Wypełnij pole: miejscowość

No ale ważne, że działa.
Aha, zapomniałem: niby działa ale nadal można walnąć w pola głupoty typu: ... .. lub . . "Spacjowanie" faktycznie wyrugowane.
No ale przynajmniej będę wiedzieć, że TAJEMNICZE COŚ nie czyści mi wypełnionych pól po drodze bo coś w tych polach musi przyjść.
W kodzie pocztowym zostawiłem: pattern="^[0-9]{2}-[0-9]{3}$" to tam bzdety nie przejdą, przynajmniej tak mi się wydaje.

Napisany przez: dublinka 15.05.2019, 18:57:32

Cytat(maniana7 @ 15.05.2019, 19:06:43 ) *
Działa piknie! Trzeba było z pracy w końcu wyjść smile.gif W domu naniosłem poprawki, kilka wrzutów na ftp-a, poprawek i w końcu śmiga. Dzięki jeszcze raz za pomoc.
Trochę chamska ta strona z komunikatami o niewypełnionych polach co się pokazuje po kliku w submit-a. Cała biała jak śmierć i tylko:

Znaleziono błędy:
Wypełnij pole: imię
Wypełnij pole: miejscowość



To sobie te część sformatuj w tagach html.

Np:

  1. if(http://www.php.net/isset($match))
  2. {
  3. http://www.php.net/print "<body style=\"background-color: lightblue\"><div style=\"background-color: darkblue; color:white; padding: 10px\">";
  4. http://www.php.net/print 'Znaleziono błędy: <br>';
  5.  
  6. for($i=0; $i<count($returnNames); $i++)
  7. {
  8.  
  9. http://www.php.net/print ("<b>" . $returnNames[$i] . '</b><br>');
  10.  
  11. }
  12.  
  13. http://www.php.net/print "<a style=\"color: gold\" href=java script:history.go(-1)>Wstecz</a></div></body>"; // forum dzieli string javascript na dwa czlony. Polacz to w jedno
  14.  
  15. http://www.php.net/exit;
  16.  
  17. }


Cytat(maniana7 @ 15.05.2019, 19:06:43 ) *
No ale ważne, że działa.
Aha, zapomniałem: niby działa ale nadal można walnąć w pola głupoty typu: ... .. lub . . "Spacjowanie" faktycznie wyrugowane.
No ale przynajmniej będę wiedzieć, że TAJEMNICZE COŚ nie czyści mi wypełnionych pól po drodze bo coś w tych polach musi przyjść.


To ze mozna wpisac nie znaczy ze to przejdzie.


Cytat(maniana7 @ 15.05.2019, 19:06:43 ) *
W kodzie pocztowym zostawiłem: pattern="^[0-9]{2}-[0-9]{3}$" to tam bzdety nie przejdą, przynajmniej tak mi się wydaje.


Wszystkie pola ktore przesylasz tzn wartosci tych pól mozesz swobodnie (po tym co dałem) filtrowac i sprawdzac względem wymagań jakie tam chcesz w tym adres @
Przykładowo:

  1. $email = "jakis_email@costam..pl"; // bledny adres z dwoma kropkami
  2.  
  3. if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  4. http://www.php.net/exit('Błędny adres email');
  5. }
  6. http://www.php.net/print 'dalsza czesc strony do ew. filtrowania';
  7. // tua jdajesz kod ktory ma sie dalej wykonywac

Napisany przez: maniana7 15.05.2019, 19:46:16

A jest jakiś sposób na umieszczenie na tej "stronie z błędami w formularzu" jakiegoś linku/buttona typu Powróć lub Popraw. Tak sobie testuję i nawet backspace nie wraca w operze i chrome. Tylko klik w < w menu przeglądarki działa. Pewnie znowu od cholery zabawy o ile to w ogóle możliwe. Ale wolę zapytać.

Napisany przez: dublinka 15.05.2019, 19:54:59

Cytat(maniana7 @ 15.05.2019, 20:46:16 ) *
A jest jakiś sposób na umieszczenie na tej "stronie z błędami w formularzu" jakiegoś linku/buttona typu Powróć lub Popraw. Tak sobie testuję i nawet backspace nie wraca w operze i chrome. Tylko klik w < w menu przeglądarki działa. Pewnie znowu od cholery zabawy o ile to w ogóle możliwe. Ale wolę zapytać.

No przeciez napisalem Ci przyklad wyzej

Napisany przez: maniana7 15.05.2019, 19:56:30

Cytat(dublinka @ 15.05.2019, 19:57:32 ) *
To ze mozna wpisac nie znaczy ze to przejdzie.


Tzn?questionmark.gif Wpisuję co chcę i przechodzi. Alert o znalezionych błędach jest tylko gdy pole jest puste/wyspacjowane. Wystarczy walnąć w dowolne pole (oprócz rzecz jasna kodu pocztowego bo to zabezpieczyłem przed głupotami) kropkę i idzie formularz na mejla w stylu:
Imię: . . ..
Nazwisko: 8-)
Kod: 00-100
Miejscowość: tralala ..

Napisany przez: dublinka 15.05.2019, 20:42:57

Cytat(maniana7 @ 15.05.2019, 20:56:30 ) *
Tzn?questionmark.gif Wpisuję co chcę i przechodzi. Alert o znalezionych błędach jest tylko gdy pole jest puste/wyspacjowane. Wystarczy walnąć w dowolne pole (oprócz rzecz jasna kodu pocztowego bo to zabezpieczyłem przed głupotami) kropkę i idzie formularz na mejla w stylu:
Imię: . . ..
Nazwisko: 8-)
Kod: 00-100
Miejscowość: tralala ..

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(http://www.php.net/preg_match('/[^0-9a-z]/i',$co))
  4. {
  5. http://www.php.net/exit('Wystepuja nieprawidlowe znaki');
  6. }
  7.  
  8. http://www.php.net/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(!http://www.php.net/preg_match("/^[a-z0-9_.]{6,15}$/", $co))
  4. {
  5. http://www.php.net/exit('Wystepuja nieprawidlowe znaki. Minimalna liczba znakow to 6 a max to 15');
  6. }
  7.  
  8. http://www.php.net/print 'Dalsza czesc strony jesli ok';
  9. ?>

Napisany przez: maniana7 15.05.2019, 21:45:50

Dzięki. Wezmę się za to ale nie dziś.

Wracając do "przycisku/odnośnika WSTECZ (w moim przypadku to będzie odnośnik POPRAW POLA) na stronie z błędami zrobiłem na szybko wg. Twoich rad. Dodałem:

print "<a style=\"color: green\" href=java script:history.go(-1)><mark>POPRAW POLA</mark></a></div></body>";

na końcu. Jest ok poza tym, że po kliku w ten link wywala błąd:

Not Found
The requested URL /ankieta/java was not found on this server.
www.mojastronaxxxxxxxx.pl

Robi się off top ale chyba nie ma co tworzyć nowego wątku. Co z ta javą na moim serwerze?

Napisany przez: dublinka 16.05.2019, 05: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.

Napisany przez: Pyton_000 16.05.2019, 09:30:03

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(http://www.php.net/preg_match('/[^0-9a-z]/i',$co))
  4. {
  5. http://www.php.net/exit('Wystepuja nieprawidlowe znaki');
  6. }
  7.  
  8. http://www.php.net/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(!http://www.php.net/preg_match("/^[a-z0-9_.]{6,15}$/", $co))
  4. {
  5. http://www.php.net/exit('Wystepuja nieprawidlowe znaki. Minimalna liczba znakow to 6 a max to 15');
  6. }
  7.  
  8. http://www.php.net/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`)

Napisany przez: maniana7 16.05.2019, 11:32:22

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

Napisany przez: nospor 16.05.2019, 11:37:29

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

Napisany przez: maniana7 16.05.2019, 11:45:31

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


Napisany przez: nospor 16.05.2019, 11:51:08

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(http://www.php.net/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(http://www.php.net/isset($ArrInfo[$ParamsKey]) && http://www.php.net/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

Napisany przez: maniana7 16.05.2019, 11:53:49

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!

Napisany przez: dublinka 16.05.2019, 12:45:52

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.

Napisany przez: maniana7 16.05.2019, 13: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.

Napisany przez: dublinka 16.05.2019, 13:47:19

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(!http://www.php.net/preg_match('/^[a-z0-9]+$/', $co))
  3. {
  4. http://www.php.net/print 'blad';
  5. } else {
  6. http://www.php.net/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.

Napisany przez: maniana7 16.05.2019, 19: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.

Napisany przez: dublinka 16.05.2019, 21:13:47

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)