2011-04-10 7 views
0

내 코드에 문제가 있습니다. PHP 파일 (데이터의 유효성이 검사되는 곳)을 호출하는 아약스 유효성 검사가 있습니다.유효성 검사 양식의 문제점 - ph

PHP는은 "invalidData"와 같은 에코를 반환하고 자바 스크립트에서 나는 if (data=="invalidData") {//something}

문제는이 포함되어 있습니다 확인. 놀라운 것.

<?php 
    include("includes/f_banco.php"); 
    conecta(); 

    function get_post_var($var) { 
     $val = $_POST[$var]; 
     if (get_magic_quotes_gpc()) 
     $val = stripslashes($val); 
     return $val; 
    } 


    $name = get_post_var('name'); 


    function validateName($name){ 
     if(strlen($name) < 4 || (empty($name))) { 
      echo "invalidData"; 
      return false; 
     } 
     else { 

      $name = mysql_real_escape_string($name); 
      $check = mysql_query("SELECT username FROM users WHERE username ='".$name."'") 
      or die(mysql_error()); 
      $check2 = mysql_num_rows($check); 

      if ($check2 == 0 && $name != "") { 
       echo "validData"; 
       return true; 
      } else { 
       echo "invalidData"; 
       return false; 
      } 
     } 
    } 

    error_reporting(E_ALL); 
    validateName($name); 

    ?> 

위의 코드에서 나는 파일에 포함을 넣지 않으면 이름이 비어 있는지 확인할 수 있습니다. 만약 내가 결과를 넣어 다시 invalidData보다 다릅니다.

데이터베이스에 대한 연결이 이루어지지 않았거나 반품이 올바르지 않은 경우. 중요 : include 파일이 올바른지, 다른 예제에서 테스트하고 데이터베이스도 정확합니다.

감사

Edit: **LAST VERSION** 

<?php 
error_reporting(-1); 

require 'includes/f_banco1.php'; 

$name = $_POST["carlos"]; 


function validateName($name){ 
    if(strlen($name) < 4 || (empty($name))) { 
     echo "nomeInvalido"; 
     return false; 
    } 
    else { 

     $name = mysql_real_escape_string($name); 

     $check = mysql_query("SELECT username FROM users WHERE username ='".$name."'") 
     or die(mysql_error()); 
     $check2 = mysql_num_rows($check); 

     if ($check2 == 0 && $name != "") { 
      echo "nomeValido"; 
      return true; 
     } else { 
      echo "nomeInvalido"; 
      return false; 
     } 
    } 
} 


validateName($name); 

echo "this must appear"; 
?> 

출력 :

Notice: Undefined index: carlos in C:\Users\fel\VertrigoServ\www\login\validation.php on line 8 
nomeInvalidothis must appear 
+0

포함 파일의 내용을 표시 할 수 있습니까? 파일을 포함하는 것만으로는 아무런 해가되지 않지만 include 파일이'$ _POST [ 'name']'을 변경하면 다른 함수의 결과가 변경됩니다. – AgentConundrum

+0

또한 몇 가지 중복 검사가 있습니다. 비어있는 경우'strlen'은 0이 될 것이고 첫번째 조건에 걸리므로'empty ($ name)'을 검사 할 필요가 없습니다. 'else'조건에서'$ name! = ""'과 동일합니다. – AgentConundrum

+0

자세한 내용이 업데이트 된 코드 – anvd

답변

1

아마 PHP 디버그 (101) ... 단지

<?php 
error_reporting(-1); 
... 
?> 

그리고 오류를 검사 ...

+0

전화를 걸기 전에 오류보고를합니다. (0) 주셔서 감사합니다 ... 오타가 ... 의미 -1. – Frankie

+0

나는이 코드를 하단에 넣었지만 아무 것도 보여주지 않았다. – anvd

+0

의미가 있습니다 ... PHP는 절차 적입니다. 코드는 오류가 발생한 후에 만 ​​읽을 수 있습니다. 'error_reporting'은' Frankie

0

시도 할 다음과 같이 쿼리를 업데이트하십시오.

SELECT `username` FROM users WHERE `username` ='".$name."' 

그리고 또 다른 질문 ... 사용자 이름이 무엇인지 이미 알고 있다면 사용자 이름을 찾기 위해 쿼리를 실행하는 이유는 무엇입니까? 사용자 이름이 있는지 확인하는 중이라고 가정합니다.

+0

그냥 디버깅하는 것입니다. 당신의 제안은 문제를 해결하지 못합니다. 만약 내가 직접 파일에 포함 된 넣어, 모든 작품, 분명히 내가 확실히 이것을 만들 수 없습니다. – anvd

+0

쿼리에 따옴표를 추가하면 대개 나에게 트릭이 적용됩니다. 나는 당신의 코드를보고 있었고 쿼리 정보가 비어 있다면 invalidData가 호출 된 것처럼 보였다. – sammarks

+0

쿼리가 작동하면 데이터베이스를 확인하면 결과가 정상입니다. 하지만 이것은 phect 파일에서 직접 conecta() 함수와 함께 발생합니다 (유효성 검사가 수행 된 곳) – anvd

관련 문제