Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [html][php] formularze - zabezpieczenia
aga323
post 11.07.2007, 13:05:12
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Witam wszystkich. Mam krótki formularz i interesuje mnie żeby ograniczyć w nim ilość wprowadzanych znaków i by ograniczały sie one tylko do cyfr i znaków "+" i "-" i ",". Chciałabym się także dowiedzieć jak najlepiej go zabezpieczyć przed wprowadzaniem przez niego złośliwych kodów itd. Podaje mój formularz (co prawda jest on wpleciony w php dlatego podam tylko jego fragment zawierający pole text:
  1. <?php
  2. echo '<input type="hidden" name="id' .$cos. '" value="' .$wiersz['id']. '" />';
  3.  //Znak nowej lini, aby wprowadzić porządek w kodzie html
  4.  echo "n";
  5.  echo '<input type="text" name="oc' .$cos. '" value="' .$wiersz['ocena']. '" />';
  6. ?>

Prosze o pomoc.


--------------------
Go to the top of the page
+Quote Post
qwaq
post 11.07.2007, 13:36:51
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 1
Dołączył: 15.05.2007
Skąd: Łódź

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


oto formularz niepozwalający na wpisanie więcej niź 20 znaków

  1. <form method="POST" action="--WEBBOT-SELF--">
  2.  
  3. <p><!--webbot bot="Validation" B-Value-Required="TRUE" I-Maximum-Length="20"
  4. --><input type="text" name="T1" size="20" maxlength="20">
  5. <input type="submit" value="Submit" name="B1">
  6. <input type="reset" value="Reset" name="B2"></p>
  7. </form>


musisz poszukac o innych opcjach

Ten post edytował qwaq 11.07.2007, 13:37:13


--------------------
Chcę kobietę!!! Cierpliwą i wyrozumiałą jak stado bydła przed dojeniem.....

Życie jest jak papier toaletowy-długie, szare i do dupy, ale na szczęście czasem pachnie rumiankiem


wynajmę mieszkanie?
Go to the top of the page
+Quote Post
aga323
post 11.07.2007, 14:40:30
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Dzięki smile.gif Ale mam jeszcze jedno pytanko.
Otóż robię formularz rozwijany z polami wyboru i później wybraną wartość wysyłam do bazy itd.
Ale interesuje mnie jedna sprawa, jak zrobić żeby wartość która jest już w bazie była jako domyślna na tej liście, a jeśli nie ma w bazie to żeby domyślne było puste pole.. Bo dochodzę do momentu pobrania tych danych z bazy i nie mam pomysłu jak to teraz zrobić... Mam nadzieję, ze wiecie o co chodzi... Prosze o pomoc!


--------------------
Go to the top of the page
+Quote Post
uli
post 11.07.2007, 14:52:32
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Funkcja do wpisywania tylko wybranych znaków (JS):

  1. function maskuj(AEvent, AMaska) {
  2. if (window.Event) {
  3. kodKlawisza = AEvent.which;
  4. } else {
  5. kodKlawisza = AEvent.keyCode;
  6. }
  7.  
  8. // if (kodKlawisza == 13) {
  9. // return true; // Enter
  10. // };
  11.  
  12. if (kodKlawisza == 8) {
  13. return true; // klawisze sterujące
  14. };
  15.  
  16. if (kodKlawisza == 0) {
  17. return true; // klawisze sterujące
  18. };
  19.  
  20. klawisz = String.fromCharCode(kodKlawisza);
  21.  
  22. if (AMaska.indexOf(klawisz) == -1) {
  23. return false;
  24. } else {
  25. return true;
  26. }
  27. }


Wywołanie np. (dozwolone tylko cyfry) - maksymalna długość pola 3:
  1. <input type="text" name="nazwa" size="3" maxlength="3" onkeypress="return maskuj(event, '0123456789')">


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
maziak
post 11.07.2007, 14:58:14
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


A jezeli chcesz wyswietlic to co masz w bazie w polach wyboru, poprostu pobierz to co chcesz do zmiennych i :
  1. <?php
  2. echo '<select name="nazwa">';
  3. echo '<option>'.$zmienna[0].'</option>';
  4. echo '<option>'.$zmienna[1].'</option>';
  5. (...)
  6. echo '</select>';
  7. ?>
Go to the top of the page
+Quote Post
aga323
post 11.07.2007, 15:00:45
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Tzn. chodzi mi o to że mam liste wyboru i tam mam zachowanie i do wyboru wzorowe, dobre itd. a jeśli w bazie jest już wstawione zachowanie to po prostu jako domyślne z tej listy wyświetla to z bazy.


--------------------
Go to the top of the page
+Quote Post
maziak
post 11.07.2007, 15:06:25
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Za to czy cos jest domyslnie wybrane odpowiada atrybut selected.
  1. <option selected="selected">coś</option>

Mozna by powstawiac przy kazdym if'a, jezeli zmienna = coś to wstawia selected. Ale duzo przy tym zachodu. Niestety nie mam juz czasu, zeby nad tym pomyslec tongue.gif Popróbuj. Może coś pomogłem. winksmiley.jpg
Go to the top of the page
+Quote Post
aga323
post 11.07.2007, 15:21:06
Post #8





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Hmm dzięki. Ale myśle, ze to i tak nie będzie takie łatwe. Bo jesli to pobierze ten rekord z bazy i wyświetli w tej liście jako domyślne pole, a użytkownik stwierdzi że chce zmienic je na inne to wtedy będzie też problem bo przecież nie moga być 2 zachowania dla 1 użytkownika... Nie wiem czy to jakoś w php da rade czy lepiej w Javie, ale z kolei w tym jetem kompletnym laikiem.


--------------------
Go to the top of the page
+Quote Post
maziak
post 11.07.2007, 15:52:50
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Nie bedzie problemu. Dostosuj to do swoich potrzeb.
  1. <?php
  2. //pobierasz z bazy zachowanie (ja zmienna poprostu ustale)
  3.  
  4. $zachowanie='dobre';
  5.  
  6. //funkcja ktora porownuje i wywala <option> z selectem lub bez
  7. function zach($zbazy,$zmienna) {
  8. echo '<option';
  9. if ($zbazy == $zmienna) {
  10. echo ' selected="selected" '; 
  11. }
  12. echo '>'.$zmienna.'</option>';
  13. }
  14.  
  15.  
  16. echo '<form>';
  17. echo '<select name="nazwa">';
  18.  
  19. // wywolanie funkcji dla kazdego zachcowania - zwroci gotowy kod optionow
  20. zach($zachowanie,'niepoprawne');
  21. zach($zachowanie,'poprawne');
  22. zach($zachowanie,'dobre');
  23. zach($zachowanie,'wzorowe');
  24.  
  25.  
  26. echo '</select>';
  27. echo '</form>';
  28. ?>


Ten post edytował maziak 11.07.2007, 15:59:53
Go to the top of the page
+Quote Post
aga323
post 11.07.2007, 16:25:18
Post #10





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Thx smile.gif A w kawałku:
  1. <?php
  2. function zach($zbazy,$zmienna) {
  3. echo '<option';
  4. if ($zbazy == $zmienna) {
  5. echo ' selected="selected" ';
  6. ?>

za $zbazy podstawić wynik rekordu z bazy a za $zmienna?


--------------------
Go to the top of the page
+Quote Post
maziak
post 11.07.2007, 16:35:50
Post #11





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


za $zmienna to, z czym wynik rekordu z bazy ma być porównany, i to co ma być wyświetlone jako opcja <option>. Czyli tak jak napsialem, "poprawne, wzorowe" itp. Wklej sobie ten moj kod bez zmieniania niczego jako osobny plik - wykonaj przez przegladarke, zobacz źródło - podejżyj jak działa. Na pewno zrozumiesz wtedy zasade działania.

Ja osobiscie zrobil bym zapisywanie zachowania w bazie jako liczby, porownywanie na zasadzie liczb,a dopiero potem na tekst. Mniej przesyłanych danych - i mniejsze prawdopodobienstwo literówki winksmiley.jpg

Ten post edytował maziak 11.07.2007, 16:38:23
Go to the top of the page
+Quote Post
aga323
post 11.07.2007, 19:29:21
Post #12





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Ok. Wrzuciłam wszystko i teraz wiem o co loto. Teraz tylko muszę podstawić za zmienna $zmienna odpowiednia zawartość. Z tego co zrozumiałam to ma być wymienione te wszystkie oceny z zachowania, chyba za pomocą pętli czy jak... teraz za bardzo nie wiem jak to w ta pętle dać żeby działało wszystko dobrze... :/


--------------------
Go to the top of the page
+Quote Post
maziak
post 11.07.2007, 20:50:05
Post #13





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Nie no , jak tych ocen jest 5 czy 6, to wydaje mi sie ze mozna to z powodzenim zrobić ręcznie, zwlaszcza ze jest to sprowadzone do funkcji winksmiley.jpg Jak by bylo ich duzo, albo byly by bez funkcji(wiazalo by sie to z recznym pisaniem warunkow if i calego kodu przy kazdej z opcji) to by była potrzebna pętla, a ręczne wpisywanie mijało by się z celem.

Ten post edytował maziak 11.07.2007, 20:51:45
Go to the top of the page
+Quote Post
aga323
post 13.07.2007, 17:00:48
Post #14





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Ok, ale ja cos chyba źle kombinuje, zrobiłam tak:
  1. <?php
  2. function zach($zbazy) {
  3.  echo '<option';
  4. if ($zachowanie == naganne) {
  5. echo ' selected="selected" '; 
  6. }
  7. else if ($zachowanie == nieodpowiednie) {
  8. echo ' selected="selected" '; 
  9. }
  10. else if ($zachowanie == poprawne) {
  11. echo ' selected="selected" '; 
  12. }
  13. else if ($zachowanie == dobre) {
  14. echo ' selected="selected" '; 
  15. }
  16. else if ($zachowanie == bardzo dobre) {
  17. echo ' selected="selected" '; 
  18. }
  19. else if ($zachowanie == wzorowe) {
  20. echo ' selected="selected" '; 
  21. }
  22.  echo '>'.$zmienna.'</option>';
  23.  }
  24.  echo '<select name="nazwa">';
  25. ?>

I mi wyskakuje błąd: Parse error: syntax error, unexpected T_STRING in /var/www/sites/yoyo.pl/g/2/g2test/dziennik/zach2.php on line 46
A to jest akurat przy zachowaniu bardzo dobrym które powinno być wyświetlone...


--------------------
Go to the top of the page
+Quote Post
Ziels
post 13.07.2007, 17:18:26
Post #15





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


A teraz właduj te nazwy w cudzysłowia 'bardzo dobre'
Go to the top of the page
+Quote Post
aga323
post 13.07.2007, 19:51:30
Post #16





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Kaszana... teraz to nawet w liście rozwijanej nie pokazuje w ogóle nazw zachowań..., ale przynajmniej błędu nie wyświetla...

W sumie, że błędu nie wyświetla to źle... bo nie wiadomo co poprawić. Czy mógłby mi ktos powiedzieć co robię źle? Czy w ogóle źle mam wszystko z tymi ifami czy inna część? Podaję kod:
  1. <?php
  2. $zachowanie = mysql_query("SELECT ocena FROM `zachowanie` WHERE id_user=$user AND semestr=1") or die(mysql_error());
  3.  //funkcja ktora porownuje i wywala <option> z selectem lub bez
  4.  function zach($zbazy) {
  5.  echo '<option';
  6. if ($zachowanie == 'naganne') {
  7. echo ' selected="selected" '; 
  8. }
  9. else if ($zachowanie == 'nieodpowiednie') {
  10. echo ' selected="selected" '; 
  11. }
  12. else if ($zachowanie == 'poprawne') {
  13. echo ' selected="selected" '; 
  14. }
  15. else if ($zachowanie == 'dobre') {
  16. echo ' selected="selected" '; 
  17. }
  18. else if ($zachowanie == 'bardzo dobre') {
  19. echo ' selected="selected" '; 
  20. }
  21. else if ($zachowanie == 'wzorowe') {
  22. echo ' selected="selected" '; 
  23. }
  24.  echo '>'.$zmienna.'</option>';
  25.  }
  26.  echo '<select name="nazwa">';
  27.  
  28. // wywolanie funkcji dla kazdego zachcowania - zwroci gotowy kod optionow
  29. zach($zachowanie,'');
  30. zach($zachowanie,'naganne');
  31. zach($zachowanie,'nieodpowiednie');
  32. zach($zachowanie,'poprawne');
  33. zach($zachowanie,'dobre');
  34. zach($zachowanie,'bardzo dobre');
  35. zach($zachowanie,'wzorowe');
  36.  echo '</select>';
  37. ?>


Ten post edytował aga323 13.07.2007, 19:52:40


--------------------
Go to the top of the page
+Quote Post
maziak
post 14.07.2007, 06:18:02
Post #17





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Nie nie nie biggrin.gif

Wywołanie funkcji, zach pobiera dwa parametry, ktore wchodza do 2 zmiennych :
  1. <?php
  2. function zach($zbazy,$zmienna);
  3. ?>

wywolanie funkcji w ten sposob
zach('cos','nic');
Spowodowalo by, ze wewnatrz funcji zmienna $zbazy miala by wartosc "cos", a zmienna o nazwie $zmienna, miala by wartosc "nic".
Jezeli dała byś wewnatrz funkcji
echo $zbazy; to wyskoczyl by na ekran ciąg "cos".

Ta funkcja którą Ci podałem - to już gotowiec - nic nie trzeba było zmieniać.

Zobacz, pobierasz z bazy zachowanie, pakujesz do dowolnie nazywajacej sie zmiennej. Załóżmy ze zmienna ta nazywa się $zachowanie i ma wartość "dobre".

zach($zachowanie,'poprawne');

przez co zmienna wewnetrzna funkcji $zbazy - nabrala wartość zmiennej $zachowanie. Bylo by identycznie, jak bys wywołała tą funkje nastepujaco :
zach('dobre','poprawne');

A efekt tego jest nastepujacy :
Wewnątrz funkcji następuje porównanie, czy zachowanie przekazane z bazy, jest identyczne z drugim parametrem przekazanym do funkcji.
  1. <?php
  2. //funkcja ktora porownuje i wywala <option> z selectem lub bez
  3. function zach($zbazy,$zmienna) {
  4.  
  5. // ponizsze echo wyrzuca poczatek kodu optiona
  6. echo '<option';
  7.  
  8. //jezeli warosc pierwsza, jest idnetyczna z druga, wewnatrz optiona pojawi sie sel
    ected (domyslnie zaznaczony)
  9. if ($zbazy == $zmienna) {
  10. echo ' selected="selected" '; 
  11. }
  12. // juz poza warunkiem, czyli "i tak i tak" zamykany jest tag otwierajacy option, wpisywane jest to, co zostalo podane
     jako parametr drugi , i zamykany jest tag option
  13. echo '>'.$zmienna.'</option>';
  14. }
  15. ?>

Czyli da podanego wyzej przykładu (dobre, poprawne) - to co wewnatrz IFa nie zostanie wykonane, ponieważ chcemy aby domyslnie byl wybrany drugi parametr, identyczny z wyczytanym z bazy.

Jeżeli wywołujemy tą funkcje dla kazdego zachowania
  1. <?php
  2. zach($zachowanie,'naganne');
  3. zach($zachowanie,'nieodpowiednie');
  4. zach($zachowanie,'poprawne');
  5. zach($zachowanie,'dobre');
  6. zach($zachowanie,'bardzo dobre');
  7. zach($zachowanie,'wzorowe');
  8. ?>


Bankowo jedno z nich jest identyczne z tym, co aktualnie jest w bazie. Wtedy to jedno stanie sie domyślnie wybrane.

Dla tego własnie wywołanie tej funkcji musi być dla każdego zachowania osobno. Cały w tym cycek, że "nie wiemy" co aktualnie jest w bazie, wiec trzeba to co wyczytane porównać z każdym zachowaniem, dla tego własnie wywołanie funkcji 5 razy, za kazdym razem z innym 2gim parametrem.


Mam nadzieje, że objasnilem co nieco. Jak by jeszcze coś bylo niejasne - 7991781 - często na niewidoku tongue.gif

Ten post edytował maziak 14.07.2007, 06:52:03
Go to the top of the page
+Quote Post
aga323
post 14.07.2007, 09:36:44
Post #18





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Zrobiłam tak jak mówiłeś, żadnego błędu mi nie wywala ani nic tylko caly czas wyświetla naganne (bo jets pierwsze na liście) dziwne... Może mam coś źle w bazie? podam krótko opis tego wersu z oceną.
Pole ocena
Typ varchar(15)
Metoda porównywania napisów utf8_polish_ci
Null Nie
I później mam tam w wartości bardzo dobre.


--------------------
Go to the top of the page
+Quote Post
maziak
post 14.07.2007, 09:57:49
Post #19





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Najłatwiej jest poprostu spojżeć do źródła.
Jeżeli jedno z optionow ma atrybut "selected", to wszystko jest OK. Zobacz na innej przeglądarce. U mnie na firefoxie sie ten wybor zapamietuje i jest to co wybrane bylo przed chwila, nawet po odswiezeniu. Mowiac szczerze nie wiem czemu tak sie dzieje tongue.gif

Ten post edytował maziak 14.07.2007, 09:58:14
Go to the top of the page
+Quote Post
aga323
post 14.07.2007, 18:54:01
Post #20





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Ja mam ff i nie działa, sprawdzilam na ie i też nie działa... Hmm trochu to dziwne


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:36