2016-10-25 4 views
0

방금 ​​프로그래밍 공부를 시작했으며이 문제로 몇 시간 동안 고생했습니다. 전자 메일을 요청하는 양식에 서명하고 전자 메일이 이미 등록되어 있으면 mysql 데이터베이스를 확인해야합니다. 현재 Jquery 유효성 검사기 플러그 인의 원격 메서드를 사용하려고하지만 작동하도록 만들 수 없습니다.JQuery 중복 전자 메일 유효성 검사

emailcheck.php

<?php 
include_once 'dbconnect.php'; 
$email = $_POST['CusEadd']; 
$query = "SELECT CusEadd FROM customer WHERE CusEadd='$email'"; 
$result = mysql_query($query); 
$count = mysql_num_rows($result); 

if($count>0){ 
    echo json_encode(FALSE); 
} 
else { 
    echo json_encode(TRUE); 
} 

?> 

폼 validation.js

CusEadd: { 
      required:true, 
      email:true, 
      remote:"emailcheck.php" 
     } 
+0

변수를 POST로 'OR 1=1 같은 것을 전달하여 SQL 공격에 열려, 나는 그것이하게 생각 GET 요청은 기본적으로 POST가 필요하다면 지정해야합니다. – adeneo

+1

특히 프로그래밍을 배우기 시작하면 ** PHP의 mysql_ * 함수를 사용하지 마십시오 **. PHP 5.5에서는 더 이상 사용되지 않으므로 보안 업데이트를받지 않고 PHP 7에서 완전히 제거되었습니다. 대신 PDO 또는 mysqli_ *를 사용하십시오. – Chris

+1

예. mysql을 사용하는 것을 중단하고 PDO 사용법을 배우게됩니다. 고마워! – aeonxs11

답변

1

jQuery를 검증하는 documentation

서버 측 리소스 jQuery를 통해 호출 중임 .ajax (XMLHttp 요청)이고 은 유효화 된 요소의 이름에 해당하는 키/값 쌍을 가져오고 그 값은 GET 매개 변수로 가져옵니다.

서버 측 응답은 유효한 요소에 대해 "true"를해야 JSON 문자열을해야하며, 유효하지 않은 요소 당신은 $_POST['CusEadd'] 확인하고

을위한 , "false"로 정의되지 않은, 또는 널 (NULL) 일 수 있습니다 , 당신은 그 이름을 가진 요소를 가지고 가정, 당신은 여전히 ​​일반적으로 숫자

로 변환하는, 당신이 "true"로 문자열을 반환하려면,

CusEadd: { 
    required:true, 
    email:true, 
    remote: { 
     url : "emailcheck.php", 
     type : "POST" 
    } 
} 

또한 방법으로 POST를 지정하지 PHP의 논리 값이

if($count>0){ 
    echo json_encode("false"); 
} 
else { 
    echo json_encode("true"); 
} 

그리고 생산 코드에 mysql_*를 사용하지 않는 코드는 단순히 당신이 JQuery와 플러그인을 검증 사용하는 경우

+0

고맙습니다! 고마워요! 너는 진짜 생명의 은인이야. 또한 mysql을 제거하고 대신 mysqli를 사용할 것이다. 다시 감사합니다!! – aeonxs11

관련 문제