我想知道是否有可能检查链接是否在PHP中被点击。检测href链接是否被点击使用PHP
我创建了一个页面,下载游戏,我希望用户能够下载的应用程序,但必须先登录。
所以我想一个senerio其中一个用户点击下载按钮,然后代码将检查用户是否已经登录,如果没有打开要注册的页面,则开始下载。
我想知道是否有可能检查链接是否在PHP中被点击。检测href链接是否被点击使用PHP
我创建了一个页面,下载游戏,我希望用户能够下载的应用程序,但必须先登录。
所以我想一个senerio其中一个用户点击下载按钮,然后代码将检查用户是否已经登录,如果没有打开要注册的页面,则开始下载。
您可以向服务器发出一个异步请求来检查它,(AJAX)返回一些数据,并根据响应执行您需要执行的操作。
他不想使用jquery ajax。这可以简单地通过PHP实现 – 2014-09-03 10:08:46
我会假设你已经有了一个用户/登录实现,所以这只会涵盖这种过程背后的原理。
在复杂的框架,这种工艺为您处理,但在其最简单的形式,它执行以下操作:
if($user_is_logged_in) {
// Perform action
} else {
header('Location: /login'); // Redirect to login/registor page
}
重定向是服务器和浏览器有用的东西。重定向可以是暂时的,并且重定向之前发生的过程可以被设计成记住预期的动作,以便之后可以继续原始路径,从而将附加重定向到正确的位置。
您需要一个会话。这只是它如何实现的一个粗略例子。 如果用户已注册并登录,请启动会话。然后,如果用户转到下载页面,它会检查会话是否已设置(有效用户),如果没有,则重定向用户。如果已设置,请提供下载链接,提供文件等
注意:首先在您的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();
你也可以只使用一个表格来做到这一点。
的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.';
}
}
感谢您的帮助,我终于得到了答案对上述问题通过 @emilos注释的提示:对于偷看,这可能有帮助。
我所做的就是创建一个javascript函数来监听点击锚标签,然后这个函数调用服务器上的php页面。 PHP页面检查用户是否登录/不是iF登录它返回1 else 0回到客户端。
收到与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>
使用$ _SESSION和/或$ _COOKIE检查用户是否登录。如果他是,显示链接,如果不是,重定向。 – 2014-09-03 10:03:26
PHP处理服务器,但你正在谈论客户端,这听起来像是一个JavaScript的工作。但是,您可以在两者之间进行交互,以便JavaScript告诉PHP代码要记住的内容。 – Jonast92 2014-09-03 10:04:04
答案 - **是的,你可以**。当用户点击一个按钮时,检查用户是否已使用$ _SESSION登录,如果已登录,则将其重定向到download.php页面,否则将他重定向到注册页面。请粘贴你的代码,你尝试过或没有尝试过。 – 2014-09-03 10:07:41