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
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
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
Go to the top of the page
+Quote Post
aga323
post
Post #3





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

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


Dzięki (IMG:http://forum.php.pl/style_emoticons/default/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
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')">
Go to the top of the page
+Quote Post
maziak
post
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
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
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Popróbuj. Może coś pomogłem. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
aga323
post
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
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
Post #10





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

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


Thx (IMG:http://forum.php.pl/style_emoticons/default/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
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował maziak 11.07.2007, 16:38:23
Go to the top of the page
+Quote Post
aga323
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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
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
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
Post #17





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

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


Nie nie nie (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował maziak 14.07.2007, 06:52:03
Go to the top of the page
+Quote Post
aga323
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował maziak 14.07.2007, 09:58:14
Go to the top of the page
+Quote Post
aga323
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:13