使用Ajax从PHP中的按钮单击跟踪

时间:2018-02-01 23:42:04

标签: javascript php ajax

这是我使用Ajax保存数据的当前JS

$.ajax({
    type: "POST",
    url: "/myPhpCode.php",
    data: "field1=" + field1 + "&field2=" + field2,
    success : function(text){
        if (text == "success"){
            functionForSucess();
        } else {
            functionForError();
        }
    }
});

现在我需要一个Ajax代码,它只是跟踪一个按钮的点击(不是"提交"),只需将数据库中的用户IP地址和当前日期(从PHP生成)插入数据库文件)。

我可以做PHP代码,但不知道如何做Ajax部分。我担心用户只是简单地输入我的PHP文件到地址栏,因为我没有发布任何用户输入,所以PHP无法检查用户是否点击了按钮或只是输入了浏览器地址栏中的PHP文件。

我想要我的Ajax点击跟踪代码

function showDiv(id) {
    var e = document.getElementById(id);
    e.style.display = "block";
    $.ajax({
        // Ajax part here
    });
}

2 个答案:

答案 0 :(得分:0)

令牌生成:

<?php
  session_start();
  $token = md5(rand(1000,9999)); //you can use any encryption
  $_SESSION['token'] = $token; //store it as session variable
?>

AJAX:

        <?php session_start(); ?>
        var var1 = "whatever";
        var var2 = "whatever";
        var token = "<?php echo $_SESSION["token"]; ?>";
        var SendInfo= {     "var1": var1,
                            "var2": var2,
                            "token": token };

        $.ajax({
                type: 'POST',
                url: 'yoururl.php',
                data: SendInfo,
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                traditional: true,
                success: function (data) {
                    // stuff here
                }
        });

处理程序:

  session_start();
  if(@isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']=="http://yourdomain/ajaxurl") {
    //HTTP_REFERER verification
    if($_POST['token'] == $_SESSION['token']) {
      //do your ajax task
      //don't forget to use sql injection prevention here.
    }
  } 

注意:除了$ _SESSION之外,所有这些信息都可以被欺骗,因此存储与用户在SESSION对象中操作有关的任何变量,因为使用POST等安全性在此实例中不起作用 您希望防止外部使用您的软件。这样做可以确保建立有效的会话对象(也就是用户已登录)。

答案 1 :(得分:0)

  

创建元标记后,您可以指示库   jQuery将令牌添加到所有请求标头。这提供简单,   为基于AJAX的应用程序提供方便的CSRF保护:

     

$ .ajaxSetup({headers:{'X-CSRF-TOKEN':   $('meta [name =“csrf-token”]')。attr('content')}});

        $.ajaxSetup({
           headers:
               { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
        });

        $.ajax({
            url: "/your/url",
            method: "POST",
            data:
            {
                a: 'something',
                b: 'something else',
            },
            datatype: "json"
        });

        request.done(function(msg) {

        });

        request.fail(function(jqXHR, textStatus) {

        });
单击

按钮

      $('#btnID').on('click',function(){
          ajax here
      });