Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]nie działa funkcja
robos85
post
Post #1





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


mam taką funkcję:
  1. <?php
  2. function check_input($value){
  3. global $_POST;
  4. switch($value)
  5. {
  6. case 'login':
  7. if(!(preg_match('/^[a-zA-Z0-9ąĄćĆęĘłŁńŃóÓśŚżŻźŹ_]{3,32}$/', sqlesc($_POST[$value])))){
  8. $error='<div style="width:194px;margin:0px;background-color:#F95757;margin-left:110px;padding:5px;color:#ffffff;">Zły login</div>';
  9. }
  10. break;
  11. case 'name':
  12. if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
  13. $error='<div style="width:194px;margin:0px;background-color:#F95757;margin-left:110px;padding:5px;color:#ffffff;">Złe imię</div>';
  14. }
  15. break;
  16. case 'surname':
  17. if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
  18. $error='<div style="width:194px;margin:0px;background-color:#F95757;margin-left:110px;padding:5px;color:#ffffff;">Złe nazwisko</div>';
  19. }
  20. break;
  21. }
  22. if(!isset($_POST['register'])){
  23. $error="";
  24. }
  25. return $error; 
  26. }
  27. ?>


Lecz nie działa. $error zawsze ma wartość "".
$value nadawana jest podczas wysyłania formularza.
Co zrobiłem, źle? Chodzi o to, żeby funkcja nie była aktywna gdy nie ma POSTa
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




$_POST jest tablica superglobalna wiec nie musisz tam dawac global $_POST
Kod
function check_input($value){
  if(!isset($_POST['register'])){
      return ""; // Tutaj skonczy sie wykonanie funkcji jeżeli ine ma klucz "register" Bo po co sprawdzać dalej?
  }
  switch($value)
  {
      case 'login':
          if(!(preg_match('/^[a-zA-Z0-9ąĄćĆęĘłŁńŃóÓśŚżŻźŹ_]{3,32}$/', sqlesc($_POST[$value])))){
              $error='Zły login';    
          }
          break;
      case 'name':
          if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
              $error='Złe imię';    
          }
          break;
      case 'surname':
          if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
              $error='Złe nazwisko';    
          }
          break;
  }
if(isset($error)) return '<div style="width:194px;margin:0px;background-color:#F95757;margin-left:110px;padding:5px;color:#ffffff;">'.$error.'</div>';
else return '';
}


Ten post edytował wookieb 26.08.2008, 11:55:05
Go to the top of the page
+Quote Post
ikssde
post
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


To $value to ma byc zmienna odebrana od formularza? Jesli tak to musisz jej przekazac cos z tablicy $_POST['zmienna'] chyba ze to wprowadzasz przy wywolywaniu funkcji, ale widze ze dalej korzystasz jedna z tablicy $_POST w tym miejscu : sqlesc($_POST[$value]).
Tak mialo byc czy to blad?
Go to the top of the page
+Quote Post
robos85
post
Post #4





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


$value sam podaję - jest dobrze już ale mam problem z przeglądarkami. Kod wygląda tak:
  1. <?php
  2. function check_input($value){
  3. if(!isset($_POST['register'])){
  4. return "";
  5. }
  6. switch($value)
  7. {
  8. case 'login':
  9. if(!(preg_match('/^[a-zA-Z0-9ąĄćĆęĘłŁńŃóÓśŚżŻźŹ_]{3,32}$/', sqlesc($_POST[$value])))){
  10. $error='musi zawierać od 2 do 32 znaków,<br />dozwolone znaki to litery, cyfry oraz znak podkreślenie(_).';
  11. }
  12. break;
  13. case 'name':
  14. if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
  15. $error='Złe imię';
  16. }
  17. break;
  18. case 'surname':
  19. if(!(preg_match('/^[a-zA-ZąĄćĆęĘłŁńŃóÓśŚżŻźŹ]{3,32}$/', sqlesc($_POST[$value])))){
  20. $error='Złe nazwisko';
  21. }
  22. break;
  23. case 'email':
  24. if(!(preg_match('/^[a-z0-9._-]+@[a-z0-9.-]+.[a-z]{2,6}$/i', sqlesc($_POST[$value])))){
  25. $error='Zły E-mail';
  26. }
  27. break;
  28. case 'pass':
  29. if(strlen($_POST[$value])<|| strlen($_POST[$value])>40){
  30. $error='Złe hasło';
  31. }
  32. break;
  33. case 'pass1':
  34. if(strlen($_POST[$value])<|| strlen($_POST[$value])>40){
  35. $error='Złe hasło';
  36. }
  37. break;
  38. }
  39. if(isset($error))
  40. return '<div class="reg_error_div">'.$error.'</div>';
  41. else return '';
  42. }
  43. ?>

formularz tak:
  1. echo'<form action="'.$BASEURL.'register" method="post" name="reg_form">';
  2. echo'<div id="reg_content_left">';
  3. echo'<div id="reg_left_main">';
  4. echo'<div class="reg_row_first">
  5. <div class="reg_left">Login:</div><div class="reg_right"><input class="reg_input_text" type="text" name="login" />'.check_input('login').'</div>
  6. </div>';
  7. echo'<div class="reg_row">
  8. <div class="reg_left">Imię:</div><div class="reg_right"><input class="reg_input_text" type="text" name="name" />'.check_input('name').'</div>
  9. </div>';
  10. echo'<div class="reg_row">
  11. <div class="reg_left">Nazwisko:</div><div class="reg_right"><input class="reg_input_text" type="text" name="surname" />'.check_input('surname').'</div>
  12. </div>';
  13. echo'<div class="reg_row">
  14. <div class="reg_left">Adres e-mail:</div><div class="reg_right"><input class="reg_input_text" type="text" name="email" />'.check_input('email').'</div>
  15. </div>';
  16. echo'<div class="reg_row">
  17. <div class="reg_left">Hasło:</div><div class="reg_right"><input class="reg_input_text" type="password" name="pass" />'.check_input('pass').'</div>
  18. </div>';
  19. echo'<div class="reg_row">
  20. <div class="reg_left">Powtórz hasło:</div><div class="reg_right"><input class="reg_input_text" type="password" name="pass1" />'.check_input('pass1').'</div>
  21. </div>';
  22. echo'<div class="reg_row">
  23. <div class="reg_left">Data urodzenia</div><div class="reg_right"><select style="margin-right:5px;">';
  24. foreach($birth_day as $days=>$vdays){
  25. echo'<option value="'.$vdays.'">'.$vdays.'</option>';
  26. }
  27. echo'</select><select style="margin-right:5px;">';
  28. foreach($birth_month as $months=>$vmonths){
  29. echo'<option value="'.$vmonths.'">'.$vmonths.'</option>';
  30. }
  31. echo'</select><select style="margin-right:5px;">';
  32. foreach($birth_year as $years=>$vyears){
  33. echo'<option value="'.$vyears.'">'.$vyears.'</option>';
  34. }
  35. echo'</select></div>
  36. </div>';
  37. echo'<div class="reg_row">';
  38. $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  39. $token = "";
  40. for ($i = 0; $i < 7; $i++)
  41. $token .= $chars[mt_rand(0, strlen($chars) - 1)];
  42. $_SESSION['reg_token']=$token;
  43. echo'<div class="reg_left">Kod z obrazka:</div><div class="reg_right"><img id="reg_token" src="tokens/reg_token.php" /><br /><input maxlength="7" type="text" id="reg_token_input" /></div>
  44. </div>';
  45. echo'</div>';
  46. echo'</div>';
  47. echo'<div id="reg_content_right">';
  48. echo'<div class="reg2_row">';
  49. echo'<div class="reg2_left">';
  50. echo'<input type="checkbox" name="reg_accept" value="1" />';
  51. echo'</div>';
  52. echo'<div class="reg2_right">';
  53. echo'Przeczytałem i akceptuję Regulamin i Politykę Prywatności';
  54. echo'</div>';
  55. echo'</div>';
  56. echo'<div class="reg2_row">';
  57. echo'<div class="reg2_left">';
  58. echo'<input type="checkbox" name="personal_info" value="1" />';
  59. echo'</div>';
  60. echo'<div class="reg2_right_j">';
  61. echo'Wyrażam zgodę na przetwarzanie przez Elvis van Tomato - studio Daniel Potasz, z siedzibą w Szczecinie, przy ul. M. Reja 24/2 ("Administrator Danych") moich danych osobowych podanych w formularzu rejestracyjnym oraz w trakcie korzystania z portalu społecznościowego Atotam.pl ("Serwis") w zbiorze danych Administratora Danych oraz zgodnie z Ustawą z dnia 29 sierpnia 1997 r. o ochronie danych osobowych (tekst jednolity Dz. U. z 2002 r. Nr 101 poz. 926, ze zmianami) oraz Ustawą z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną (Dz. U. z 2002 r. Nr 144, poz. 1204, ze zmianami) w celu prawidłowego świadczenia usług określonych w Regulaminie, jak również w celach operacyjnych i statystycznych związanych z prowadzeniem Serwisu. Oświadczam, że zostałem/am poinformowany/a o moim prawie do dostępu do moich danych i ich poprawiania i że wszelkie dane osobowe zostały przeze mnie przekazane dobrowolnie.';
  62. echo'</div>';
  63. echo'<div id="reg_button_div"><input
  64. type="image" src="images/register_button.jpg" name="register" value="register" /></div>';
  65. echo'</div>';
  66. echo'</div>';
  67. echo'</form>';


Lecz tylko pod FF mi się pola pokazują po błędnym wpisaniu:/
Pod IE i operą 0 reakcji :/
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Która pola i jak to wygląda? najlepiej ale to najlepiej daj link...
Go to the top of the page
+Quote Post
robos85
post
Post #6





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


atotam.pl/register
w ff działa dla wszystkich po lewej
w reszcie przeglądarek - wcale:/

Ten post edytował robos85 1.09.2008, 11:54:48
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Daj
Kod
print_r($_POST);

TO sobie sprawdzisz co zostało wysłane itd.
Go to the top of the page
+Quote Post
robos85
post
Post #8





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


wszystko wysyła ok, nie działa jakoś to sprawdzenie poprawności :/

nie mam pojęcia co może być nie tak, FF widzi ok wszystko a pozostałe nie:(
próbuję różne i i tak nie działa:

  1. <?php
  2. if(isset($_POST['register'])){
  3. $login_c='musi zawierać od 2 do 32 znaków,<br />dozwolone znaki to litery, cyfry oraz znak podkreślenie(_).';
  4. }
  5. ?>

i echo daję, i tylko FF widzi:/
Go to the top of the page
+Quote Post

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: 14.09.2025 - 19:20