2014-09-03 2 views
0

Я хотел бы узнать, можно ли проверить, есть ли ссылка на PHP.Обнаружение, если щелкнуть ссылку href с помощью PHP

Я создал страницу для загрузки игр, и я хочу, чтобы пользователи могли загрузить приложение, но сначала необходимо войти в систему.

Так я хочу senerio, когда пользователь нажал на кнопку загрузки, то код проверяет, зарегистрирован ли пользователь, если не открыта страница для регистрации, иначе начните загрузку.

+0

Используйте $ _SESSION и/или $ _COOKIE, чтобы проверить, зарегистрирован ли пользователь. Если он есть, отобразите ссылку, если нет, переадресовать. –

+0

PHP обрабатывает сервер, но вы говорите о клиенте, это похоже на работу для JavaScript. Вы можете, однако, взаимодействовать между ними, чтобы JavaScript рассказывал код PHP о том, что нужно запомнить. – Jonast92

+0

Ответ - ** Да, вы можете **. когда пользователь нажимал кнопку, пользователь проверяет или не использует $ _SESSION, и если он зашел в систему, перенаправив его на страницу download.php, перенаправите его на страницу регистрации. Пожалуйста, вставьте свой код, что вы пробовали или не пробовали. –

ответ

0

Вы можете сделать асинхронный запрос на сервер, чтобы проверить его (AJAX), вернуть некоторые данные и сделать то, что вам нужно сделать на основе ответа.

+0

он не хочет использовать jquery ajax. Это может быть просто достигнуто PHP –

0

Предполагаю, что у вас уже есть реализация пользователя/входа, поэтому это будет охватывать только принцип такого рода процедур.

В сложных структурах такого рода процесс обрабатывается для вас, но в наиболее упрощенной форме, он выполняет следующие действия:

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

Перенаправление полезных вещей для серверов и браузеров. Перенаправления могут быть временными, и процесс, который возникает перед перенаправлением, может быть спроектирован так, чтобы помнить о предполагаемом действии, чтобы впоследствии можно было продолжить исходный путь, который дополнительно перенаправляет на правильное местоположение.

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(); 
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.'; 

    } 

} 
0

Спасибо за вашу помощь, я, наконец, получил ответ на поставленный выше вопрос через намек @emilos комментарий: Для выглядывает, что этого может помочь.

Что я сделал, это создать функцию javascript, которая прослушивает клики на теге привязки, затем эта функция вызывает страницу php на сервере. Страница PHP проверяет, зарегистрирован ли пользователь/не зарегистрирован в iF, возвращает 1 еще 0 обратно клиенту.

Клиент получил этот ответ с помощью 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> 
Смежные вопросы