Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]nie działa funkcja
Forum PHP.pl > Forum > Przedszkole
robos85
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
wookieb
$_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 '';
}
ikssde
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?
robos85
$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 :/
wookieb
Która pola i jak to wygl±da? najlepiej ale to najlepiej daj link...
robos85
atotam.pl/register
w ff działa dla wszystkich po lewej
w reszcie przeglądarek - wcale:/
wookieb
Daj
Kod
print_r($_POST);

TO sobie sprawdzisz co zostało wysłane itd.
robos85
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:/
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.