检测是否使用PHP单击了href链接

时间:2014-09-03 10:02:08

标签: php html

我想知道是否可以检查是否在PHP中单击了链接。

我创建了一个用于下载游戏的页面,我希望用户能够下载该应用程序,但必须先登录。

所以我想要一个用户点击下载按钮的senerio,然后代码将检查用户是否已经登录,如果没有打开要注册的页面,否则开始下载。

5 个答案:

答案 0 :(得分:0)

您可以向服务器发出异步请求以进行检查,(AJAX)返回一些数据,并根据响应执行您需要执行的操作。

答案 1 :(得分:0)

我假设你已经有了一个用户/登录实现,所以这只会涵盖这种程序背后的原理。

在复杂的框架中,这种过程是为您处理的,但是以最简单的形式,它执行以下操作:

if($user_is_logged_in) {
    // Perform action
} else {
    header('Location: /login'); // Redirect to login/registor page
}

重定向对于服务器和浏览器来说非常有用。重定向可以是临时的,并且重定向之前发生的过程可以设计为记住预期的操作,以便之后可以继续原始路径,这将另外重定向到正确的位置。

答案 2 :(得分:0)

你需要一个会话。这只是如何实现它的一个粗略的例子。 如果用户已注册并登录,则启动会话。然后,如果用户进入下载页面,它会检查会话是否已设置(有效用户),如果没有,则重定向用户。如果已设置,请提供下载链接,提供文件等

注意:首先在php.ini文件中设置会话参数,例如会话应保持活动的时间。

的login.php

//If user logged in
session_start();
$_SESSION['user'] = $username;

的download.php

session_start();
//If the session has not been set, redirect the user
if (!isset($_SESSION['user'])) {
    header("Location: register.php");
    die;
}

//Otherwise
downloadFile();

答案 3 :(得分:0)

您也可以使用表单来执行此操作。

<强> HTML

<form action="download.php" method="post">
    <button type="submit" name="download">Download file</button>
</form>

PHP

// This is just for testing purposes of course
function is_logged_in() {
    return false;
}

// Check if the form was processed
if ( isset( $_POST['download'] ) ) {

    if ( is_logged_in() ) {

        // download file

    }
    else {

        // you could send a message directly or redirect the page
        echo 'You are not logged in. Please click <a href="#">here</a> to register or sign-in.';

    }

}

答案 4 :(得分:0)

感谢您的帮助,我终于通过提示得到了上述问题的答案 @emilos评论:对于窥视,这可能会有所帮助。

我所做的是创建一个javascript函数,用于监听对锚标记的点击,然后该函数调用服务器上的php页面。 PHP页面检查用户是否已登录/未登录iF返回1,否则返回客户端。

客户端在AJAX的帮助下收到了这个响应,然后我用if语句知道是否允许用户下载

这就是我实现它的方式

AJAX

function ajaxFunction(appName) {
          var ajaxRequest = null;
          try {
              ajaxRequest = new XMLHttpRequest();
          }catch (e) {
              try {
                  ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                }catch (e){
                   try {
                      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                   }catch (e) {
                       alert("Browser broken!");
                   }
                }
          }

          ajaxRequest.onreadystatechange = function() {
            if (ajaxRequest.readyState == 4 ) {
                //alert("User_id: " +ajaxRequest.responseText);
                //If not logged in
                if (ajaxRequest.responseText == 0) {
                    window.location = "registration.php";
                }else {
                    window.location = "downloads/"+appName;
                }
            }
          }

          ajaxRequest.open("GET", "validate_user.php?checker=1",true);
          ajaxRequest.send(null);
      }

PHP

 if (isset($_GET['checker']) && $_GET['checker'] == 1) {
     validateLogin(); 
  }
    function validateLogin() {
       if (!isLoggedIn()) {
           //Not logged in
           echo("0");
       }else {
           echo("1");
           //Logged in
       }
   } 

   function isLoggedIn() {
       return (isset($_SESSION['user_id']));
   }

HTML

<a href="#" onClick="ajaxFunction('Pencil.apk');"><i class="icon-download-alt"></i></a>