2011-07-06 7 views
0

テスト目的のために、汎用情報を要求する簡単なフォームがありますが、ユーザーは情報を一度しか入力できません。 IPアドレスが記録されているため、情報を再度入力しようとすると、データはSQLテーブルに送られません。私はフォームの提出にJquery Ajaxを使用しています。フォームが正常に送信された場合は、「情報が送信されました」というメッセージが表示されます。表示する必要があります。ユーザのIPが記録されたIPと一致する場合、「あなたは一度だけ提出する」というメッセージが表示されます。示されています。Jquery Ajax:ユーザーIPがブロックされ、フォームがSQLテーブルに送信されない場合の表示jquery animation

私の問題は、jquery ajaxに「あなたは一度だけ送信する」というメッセージを表示する方法がわかりません。検出されたIPアドレスがデータベース内のIPアドレスと照合された後のメッセージ。 それは使用する必要はありません "というエラー:関数()..."

をここでは、フォームとjQueryのAjaxスクリプトです:ここで

<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 

    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()); 
}  
?> 

UPDATE:ここにあなたの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が検出されたときにtがHTTPエラーを返すと、コードが機能するはずです。 die()が返ってもエラーレスポンスが返ってくるかどうかは不明です。

です。 私は似たようなものを持っています。 これは私のPHPは

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

そして、私のAJAXハンドラを返すものです:

$.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 { 

    ... 
    } 
} 

これはあなたが必要なものを取得する必要があります。

編集: 新しい回答。

<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

関連する問題