Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie poprawności danych
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Witam.

Mam sobie formularz. Użytkownik wpsuje w nim dane, daty, itp. itd...to co zwykle i teraz jak nacisnie się submita, to formularz zostaje wysłany POSTEM do innego pliku, który sprawdzi poprawność danych i ewentualnie dokona operacji na bazie danych i teraz moje pytanko. Jeśli dane są złe/niekompletne/niepoprawne i skrypt to wykryje, to oczywiście wraca do frmularza i co zrobić aby użytkonik znowusz nie musiał wpisywać wszystkich danych? Czy dane wpisane za pierwszym razem musze przetrzymywać w sesji?

Pozdrawiam i dziękuje za opdoiwedzi.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
ens0re
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 23.08.2005
Skąd: Warszawa

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


No możesz w sesjii...


--------------------
"Oprócz tabel istnieje jeszcze jedna dalece ograniczająca struktura, składająca się z rzędów i komórek - więzienie. Dla projektantów nadszedł czas, aby sie uwolnić..." - Eric A. Meyer
Go to the top of the page
+Quote Post
Marusz
post
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Możesz i w sesji, możesz też za pomocą prostego formularza, na zasadzie:

Po kliknięciu na "Wyślij":
  1. <form method="POST" action="adres_do_formularza">
  2. <input type="hidden" name="form_street" value="<?php echo htmlspecialchars($_POST["form_street"]); ?>">
  3. <input type="submit" name="form_back" value="Wracaj i poprawiaj boś napsuł">
  4. </form>

Po czym odczytujesz to co siedzi w hiddenach juz we wlasciwym, pierwszym, formularzu:
  1. <form method="POST" action="adres_do_formularza">
  2. <input type="text" name="form_street" value="<?php echo htmlspecialchars($_POST["form_street"]); ?>">
  3. <input type="submit" name="form_submit" value="Wyślij">
  4. </form>

Ogólnie wydaje mi się, że sesja będzie łatwiejsza.


--------------------
Go to the top of the page
+Quote Post
zbig13
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


A nie prościej tak:
  1. <form action "plik.php" method="post">
  2. <input type="imie" name="imie" value="<?php if (isset($_POST['imie'])) echo $_POST['imie']; ?>" />
  3. <textarea rows="10" cols="30" name="adres"><?php if (isset($_POST['adres'])) echo $_POST['adres']; ?></textarea>
  4. <input type="submit" name="wyslij" value="Wyślij" />
  5. </form>

?
Go to the top of the page
+Quote Post
ens0re
post
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 23.08.2005
Skąd: Warszawa

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


Może i prosciej smile.gif


--------------------
"Oprócz tabel istnieje jeszcze jedna dalece ograniczająca struktura, składająca się z rzędów i komórek - więzienie. Dla projektantów nadszedł czas, aby sie uwolnić..." - Eric A. Meyer
Go to the top of the page
+Quote Post
Marusz
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Cytat(zbig13 @ 2005-08-30 14:33:39)
A nie prościej tak?

Prosciej. Tylko rowniez trzeba te POSTy pozabezpieczac, bo sajgon przy wprowadzeniu htmla gwarantowany.


--------------------
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




A nie lepiej byłoby zastosować javascript. Wtedy nie byłoby potrzeby przetrzymywania danych w zmiennych, ponieważ skrypt byłby zamieszczony na te samej stronie. Np.

  1. <form name="forma" action="jakis_plik.php" method="POST">
  2. <input type="text" name="poletxt">
  3. <inpyt type="button" onClick="sprawdz();" value="Dalej">
  4. </form>


A teraz skrypt zamieszczony na tej samej stronie:

  1. <script language="javascript">
  2. function sprawdz()
  3. {
  4. if (forma.poletxt.value=='')
  5. {
  6. alert("Formularz niekompletny");
  7. forma.poletxt.focus;
  8. //nie pamietam czy po fokus mają być nawiasy czy nie
  9. }
  10. else
  11. {
  12. forma.submit();
  13. }
  14. }


Może więcej pisania, ale nie trzeba sobie głowy zawracać przechowywaniem zmiennych, które są nam niepotrzebne.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Marusz
post
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Cytat(batman @ 2005-08-30 16:50:54)
A nie lepiej byłoby zastosować javascript

Jasne ze lepiej, prosciej, szybciej i jasniej dla usera. Gorzej tylko, jesli ten nie ma aktywnego JS, wtedy robota x2.


--------------------
Go to the top of the page
+Quote Post
batman
post
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cóż. Mówi się trudno i pisze się dalej winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Cytat
Jasne ze lepiej, prosciej, szybciej i jasniej dla usera. Gorzej tylko, jesli ten nie ma aktywnego JS, wtedy robota x2.

to nie robisz guzika <input type="submit"> tylko <input type="button" onclick="submit_maj_form();">... jak nei ma js wlaczonego, to forma tez nei posle smile.gif
Go to the top of the page
+Quote Post
zbig13
post
Post #11





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


Cytat(Marusz @ 2005-08-30 16:27:24)
Prosciej. Tylko rowniez trzeba te POSTy pozabezpieczac, bo sajgon przy wprowadzeniu htmla gwarantowany.

Przecież on przesyła dane do pliku php, i je tam waliduje, to dlaczego ma być "sajgon" przy wprowadzaniu danych?
Go to the top of the page
+Quote Post
Marusz
post
Post #12





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Cytat(zbig13 @ 2005-08-30 19:31:40)
dlaczego ma być "sajgon" przy wprowadzaniu danych?

Mialem na mysli pchanie niepowalidowanych danych do inputow, vide Twoj przyklad:
  1. value="<?php if (isset($_POST['imie'])) echo $_POST['imie']; ?>"

Wystarczy, ze bedzie mial pole o tresci: wpisz Imię i pseudonim. Ktos wpisze: Lucek "Konstanty" Wasilewski i gdy to trafi pod Twoj value spowoduje rozwalenie formularza (jesli owy Lucek nie wypelnil jakiegos pola). Przecwicz przyklad.

Cytat(ActivePlayer)
jak nei ma js wlaczonego, to forma tez nei posle

Rozumiem, ze ktos kto wylacza JS ze wzgledow bezpieczenstwa, na formularzu sobie nie podziala? Podam inny przyklad: co za problem jest wyslac POSTa ze specjalnie spreparowanej strony i wtluc mu tresci nieporzadane? Zawsze trzeba zabezpieczac formularz od strony php!


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





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Wow! Ale odpowiedzi! Dziękuję Państwu bardzo, nie spodziewałem się takiego odzewu smile.gif Myślę, że JS będzie ok. No jest tylko jedno ale....jak user ma wyłączone JS:/ to najlepiej sprawdzić przy logowaniu się i wtedy nie ma problemu:) W zasadzie to większość serwisów wymaga JS. Pozdrawiam i dziękuje.

Acha....
tylko zastanwia mnie jedna rzecz....
czy:
  1. forma.poletxt.focus;


to znaczy, że kursor ma przejśc na niekompletny input...prawda? A ja sobie dodadam do tego czerwoną ramkę na około niekompletnych inputów smile.gif


--------------------
Go to the top of the page
+Quote Post
batman
post
Post #14





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Tak. Focus ustawi kursor w miejscu, w którym brakuje danych. Nie pamiętam tylko czy pisze się focus, czy focus().


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Seth
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Cytat(batman @ 2005-08-30 18:05:32)
Cóż. Mówi się trudno i pisze się dalej winksmiley.jpg

Brawo. I tak wlasnie serwisy internetowe sa haczone w kilka sekund...

http://www.f5.com/solutions/tech/asg/vulnerabilities_wp.html

Cytat
To avoid buffer overflow, developers typically use HTML and JavaScript to limit how many characters could be submitted as input. However, an attacker can change HTML and turn off JavaScript and then submit a buffer overflow attack. In order to properly protect the application against buffer overflow attack, all input from the client has to be carefully checked on the server; alternatively an Application Firewall or Application Security Gateway could be installed to scan out requests with abnormal length.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
to nie robisz guzika <input type="submit"> tylko <input type="button" onclick="submit_maj_form();">

A user na to (w pasku adresu)
java script://document.getElementById( "formularz" ).submit();
i pomija walidacje


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
TomASS
post
Post #17





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


W takim przypadku ewidenta chęć użytkownika zaszkodzeniu samemu sobie smile.gif
Zrobiłem skrypcik:
  1. <script type="text/javascript" language="JavaScript">
  2. <!--
  3. function check_form_buy(forma,transport1,transport2,transport3,data1,data2,sam,kier,zak){
  4. var wyslij = 1;
  5. if(document.getElementById(transport1).checked) var mess = 'ds';
  6. if(document.getElementById(transport2).checked) var mess = 'dt';
  7. if(document.getElementById(transport3).checked) var mess = 'ow';
  8.  
  9. var dat = document.getElementById(data1).value;
  10. var dat2 = document.getElementById(data2).value;
  11. var samo = document.getElementById(sam).value;
  12. var kiero = document.getElementById(kier).value;
  13. var zakl = document.getElementById(zak).value;
  14.  
  15. if(mess=='dt' & dat=='<?echo $Lang['Data_dostawy'];?>'){
  16. document.getElementById(data1).style.border='solid 2px #FF0000';
  17. wyslij = 0;
  18. }
  19. if(mess=='ow'){
  20. if(dat2=='<?echo $Lang['Data_odbioru'];?>' | dat2==''){
  21. document.getElementById(data2).style.border='solid 2px #FF0000';
  22. wyslij = 0;
  23. }
  24. if(samo=='<?echo $Lang['Samochod'];?>' | samo==''){
  25. document.getElementById(sam).style.border='solid 2px #FF0000';
  26. wyslij = 0;
  27. }
  28. if(kiero=='<?echo $Lang['Kierowca'];?>' | kiero==''){
  29. document.getElementById(kier).style.border='solid 2px #FF0000';
  30. wyslij = 0;
  31. }
  32. if(zak=='<?echo $Lang['Miejsce_odbioru'];?>' | zakl==''){
  33. document.getElementById(zak).style.color='#FF0000';
  34. wyslij = 0;
  35. }
  36.  
  37. }
  38. if(wyslij) document.getElementById(forma).submit();
  39. else alert("<?echo $Lang['Dane_niekompletne'];?>");
  40.  
  41. }
  42. //-->


Dzięki


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

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: 20.08.2025 - 12:28