我想知道是否可以检查是否在PHP中单击了链接。
我创建了一个用于下载游戏的页面,我希望用户能够下载该应用程序,但必须先登录。
所以我想要一个用户点击下载按钮的senerio,然后代码将检查用户是否已经登录,如果没有打开要注册的页面,否则开始下载。
答案 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>