PHP에서 링크를 클릭했는지 확인할 수 있는지 알고 싶습니다. PHP를 사용하여 href 링크를 클릭했는지 감지
나는 게임을 다운로드 할 수있는 페이지를 만들었 나는 사용자가 응용 프로그램을 다운로드 할 수 있도록하려면,하지만 먼저 로그인해야합니다.을 그래서 난 후, 사용자가 다운로드 버튼을 클릭 senerio을 원한다 코드는 사용자가 이미 로그인되어 있는지 확인하여 등록 할 페이지를 열지 않으면 다운로드를 시작합니다.
PHP에서 링크를 클릭했는지 확인할 수 있는지 알고 싶습니다. PHP를 사용하여 href 링크를 클릭했는지 감지
나는 게임을 다운로드 할 수있는 페이지를 만들었 나는 사용자가 응용 프로그램을 다운로드 할 수 있도록하려면,하지만 먼저 로그인해야합니다.을 그래서 난 후, 사용자가 다운로드 버튼을 클릭 senerio을 원한다 코드는 사용자가 이미 로그인되어 있는지 확인하여 등록 할 페이지를 열지 않으면 다운로드를 시작합니다.
서버에 비동기 요청을 보내서 확인하고 (AJAX) 일부 데이터를 반환하고 응답을 기반으로해야 할 일을 수행 할 수 있습니다.
그는 jquery ajax를 사용하고 싶지 않습니다. 이것은 단순히 PHP로 달성 할 수 있습니다 –
사용자/로그인 구현이 이미 있다고 가정합니다. 따라서이 절차의 기본 원칙 만 다룰 것입니다.
프로세스의이 종류는 당신을 위해 처리하지만, 가장 단순한 형태로되어 복잡한 프레임 워크에서는 다음과 같은 수행
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을 반환합니다.문
을 사용자가 다운로드 할 수해야하는지 모르거나하지 않는 경우
는 AJAX의 도움이 응답을 받았다 클라이언트는, 나는이 내가 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를 사용하여 사용자가 로그인했는지 확인하십시오. 그렇다면 링크를 표시하고 그렇지 않은 경우 리디렉션하십시오. –
PHP가 서버를 처리하지만 클라이언트에 대해 말하면 JavaScript와 같은 소리가납니다. 그러나 자바 스크립트가 무엇을 기억할 것인지를 PHP가 알려주도록 중간에서 상호 작용할 수 있습니다. – Jonast92
응답 - ** 가능 ** 할 수 있습니다. 사용자가 버튼을 클릭했을 때 사용자가 $ _SESSION을 사용하여 로그인했는지 여부를 확인하고, 로그인 한 상태라면 download.php 페이지로 리다이렉트하여 페이지를 등록 페이지로 리디렉션합니다. 시도했거나 시도하지 않은 코드를 붙여 넣으십시오. –