我想知道是否有可能檢查鏈接是否在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