내 코드에 문제가 있습니다. 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
포함 파일의 내용을 표시 할 수 있습니까? 파일을 포함하는 것만으로는 아무런 해가되지 않지만 include 파일이'$ _POST [ 'name']'을 변경하면 다른 함수의 결과가 변경됩니다. – AgentConundrum
또한 몇 가지 중복 검사가 있습니다. 비어있는 경우'strlen'은 0이 될 것이고 첫번째 조건에 걸리므로'empty ($ name)'을 검사 할 필요가 없습니다. 'else'조건에서'$ name! = ""'과 동일합니다. – AgentConundrum
자세한 내용이 업데이트 된 코드 – anvd