2011-07-06 3 views
0

으로 제출되지 않은 경우 jquery 애니메이션 표시 테스트 목적으로 일반 정보를 묻는 간단한 양식이 있지만 사용자는 정보를 한 번만 입력 할 수 있습니다. IP 주소가 기록되어 정보를 다시 입력하려고하면 데이터가 SQL 테이블로 전송되지 않습니다. 양식 제출을 위해 Jquery Ajax를 사용하고 있습니다. 양식이 성공적으로 제출되면 "정보가 제출되었습니다."라는 메시지가 나타납니다. 표시되어야합니다. 사용자의 IP가 기록 된 IP와 일치하면 "한 번만 제출할 수 있습니다."라는 메시지가 나타납니다. 가 표시됩니다.Jquery Ajax : 사용자 IP가 차단되고 양식이 SQL 테이블

내 문제는 jquery 아약스를 가져 오는 방법을 모르겠다는 것입니다. "한 번만 제출하면됩니다." 검색된 IP 주소가 데이터베이스의 IP 주소와 일치하는지 확인하십시오. 은 사용하지 않습니다 "오류 :() 함수를 ..."여기

양식이며, JQuery와 아약스 스크립트 :

<?php 

    mysql_connect("","",""); 
    mysql_select_db(""); 

//take IP address and match IP taken with IP in SQL table (I will do this myself later) 

//if IPs match 
if ($ip == $databaseIP) 
{ 
    die(); 
} 
else 
{ 
     $words  = htmlspecialchars(trim($_POST['words'])); 

     $addClient = "INSERT INTO test VALUES('','$words')"; 
     mysql_query($addClient) or die(mysql_error()); 
}  
?> 
: 여기
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("form#submit").submit(function() { 

    var words  = $('#words').attr('value'); 
     $.ajax({ 
      type: "POST", 
      url: "getuser.php", 
      data: "words="+ words, 
      success: function(){ 
       $('form#submit').hide(function(){$('div.success').fadeIn();}); 
       }, 
      error: function(){ 
       $('form#submit').hide(function(){$('div.fail').fadeIn();}); 
       } 

     }); 
    return false; 
    }); 
}); 
</script> 


<form id="submit" method="post"> 
<fieldset> 
<legend>Enter Information</legend> 

<label for="words">words:</label> 
<input id="words" class="text" name="words" size="20" type="text"> 

      <button> Submit </button> 
</fieldset> 
</form> 
<div class="success" style="display: none;">Information submitted.</div> 
</div> 
<div class="fail" style="display: none;">You only get to submit once.</div> 

는 PHP 스크립트입니다

업데이트 : 여기 PHP의 전대 경우 내가

if ($_POST['words'] ) 
    { 

if (!empty($_SERVER['HTTP_CLIENT_IP'])) 
    { 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
    { 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else 
    { 
     $ip=$_SERVER['REMOTE_ADDR']; 
    }  
     $ipquery = mysql_query ("SELECT * FROM rate WHERE ip = '$ip' "); 
     $ipquery = mysql_fetch_assoc($ipquery); 
     $ipquery = $ipquery['ip']; 

     if ($ipquery == $ip) 
     {  
      echo "you only get to submit once"; 
     } 
     else 
     { 
     mysql_query ("INSERT INTO rate VALUES ('','$words')");   

     echo "information submitted"; 
     } 
    } 

답변

1

를 원하는의 PHP의 동일합니다 IP가 발견되면 HTTP 오류를 반환하므로 코드가 작동해야합니다. die()가 반환되고 오류 응답이 있는지 확실하지 않습니다.

나는 본다. 나는 비슷한 것을 가지고있다.

$.ajax({ 
    url: contactForm.attr('action') + "?ajax=true", 
    type: contactForm.attr('method'), 
    data: contactForm.serialize(), 
    success: submitFinished 
    }); 

function submitFinished(response) { 
    response = $.trim(response); 

    if (response == "success") { 

    ... 

    } else { 

    ... 
    } 
} 

이 당신이 필요로하는 무엇을 얻어야한다 : 이 내 PHP는

if (isset($_GET["ajax"])) { 
    echo $success ? "success" : "error"; 
} 

를 돌려 내 AJAX 핸들러 것입니다.

편집 : 새로운 답변.

<script> 
$(document).ready(function(){ 
    $("form#submit").submit(function() { 

    var words  = $('#words').attr('value'); 
     $.ajax({ 
      type: "POST", 
      url: "getuser.php", 
      data: "words="+ words, 
      success: function(response){ 
       $('form#submit').hide(function(){$('div.status').append(response).fadeIn();}); 
       }, 
      error: function(){ 
       $('form#submit').hide(function(){$('div.status').append("Error while processing request.").fadeIn();}); 
       } 

     }); 
    return false; 
    }); 
}); 
</script> 

나는 이것을 테스트하지 않았지만 이는 귀하의 경우에 적용됩니다.

+0

"error : function()"을 사용할 필요가 없습니다. 사용자에게 "한 번만 제출하면됩니다."라는 스크립트가 필요합니다. 그들의 IP가 SQL 테이블에 기록 된 경우. – user701510

+0

내가 무엇을하려고하는지 명확하게 설명하기 위해 업데이트 된 OP를 참조하십시오. – user701510

+0

저는 Jquery Ajax와 Ajax에 대해 아직 많이 익숙하지 않습니다. Jquery Ajax와 PHP 스크립트 측면에서 예제를 설명해 주시겠습니까? – user701510

1

여기에서 방법론을 다시 작성하겠습니다. PHP가 문자열 You have submitted 또는 You have already done this, please stop submitting. Now. No really, stop.을 반환하게하고 success 함수에서 성공 div의 텍스트 (val())로 설정하십시오.

+0

내가 무엇을하려고하는지 명확하게 설명하는 업데이트 된 OP를 참조하십시오. – user701510

관련 문제