Hướng dẫn php if href clicked - php nếu href được nhấp vào

Tôi muốn biết nếu có thể kiểm tra xem một liên kết có được nhấp vào PHP không.

Tôi đã tạo một trang để tải xuống các trò chơi và tôi muốn người dùng có thể tải xuống ứng dụng, nhưng trước tiên phải được đăng nhập.

Vì vậy, tôi muốn một senerio nơi người dùng nhấp vào nút tải xuống, thì mã sẽ kiểm tra xem người dùng đã đăng nhập nếu không mở trang để đăng ký, nếu không hãy bắt đầu tải xuống.

Hướng dẫn php if href clicked - php nếu href được nhấp vào

Riggsfolly

91.3k20 Huy hiệu vàng101 Huy hiệu bạc145 Huy hiệu đồng20 gold badges101 silver badges145 bronze badges

Đã hỏi ngày 3 tháng 9 năm 2014 lúc 10:02Sep 3, 2014 at 10:02

7

Bạn có thể đưa ra một yêu cầu không đồng bộ đến máy chủ để kiểm tra nó, (AJAX) trả về một số dữ liệu và thực hiện những việc bạn cần làm dựa trên phản hồi.

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 10:03Sep 3, 2014 at 10:03

Hướng dẫn php if href clicked - php nếu href được nhấp vào

Emil A.emil A.Emil A.

3.3274 Huy hiệu vàng27 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges27 silver badges45 bronze badges

1

Tôi sẽ cho rằng bạn đã có triển khai người dùng/đăng nhập, vì vậy điều này sẽ chỉ bao gồm nguyên tắc đằng sau loại thủ tục này.

Trong các khung phức tạp, loại quy trình này được xử lý cho bạn, nhưng ở dạng đơn giản nhất, nó thực hiện như sau:

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

Chuyển hướng là những điều hữu ích cho máy chủ và trình duyệt. Chuyển hướng có thể là tạm thời và quá trình xảy ra trước khi chuyển hướng có thể được thiết kế để ghi nhớ hành động dự định để sau đó đường dẫn ban đầu có thể được tiếp tục để chuyển hướng đến vị trí chính xác.

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 10:20Sep 3, 2014 at 10:20

FlosculusflosculusFlosculus

6,8343 huy hiệu vàng17 Huy hiệu bạc40 Huy hiệu đồng3 gold badges17 silver badges40 bronze badges

Bạn cần một phiên. Đây chỉ là một ví dụ sơ bộ về cách nó có thể được thực hiện. Nếu người dùng được đăng ký và đăng nhập, hãy bắt đầu một phiên. Sau đó, nếu người dùng truy cập trang tải xuống, nó sẽ kiểm tra xem phiên được đặt (người dùng hợp lệ) nếu không, nó sẽ chuyển hướng người dùng. Nếu nó được đặt, cung cấp một liên kết tải xuống, cung cấp tệp, v.v.

Lưu ý: Đầu tiên đặt các tham số phiên trong tệp php.ini của bạn, chẳng hạn như thời gian phiên nên được giữ tồn tại.: Firstly set session paramters in your php.ini file, such as how long the session should be kept alive for.

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

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 10:21Sep 3, 2014 at 10:21

Iswinkyiswinkyiswinky

1.9132 huy hiệu vàng16 Huy hiệu bạc46 Huy hiệu đồng2 gold badges16 silver badges46 bronze badges

Bạn cũng có thể chỉ sử dụng một biểu mẫu để làm điều này.

HTML

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 here to register or sign-in.';

    }

}

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 10:24Sep 3, 2014 at 10:24

ElielelielEliel

1646 Huy hiệu Đồng6 bronze badges

Cảm ơn sự giúp đỡ của bạn, cuối cùng tôi đã nhận được câu trả lời cho câu hỏi trên thông qua gợi ý của @emilos bình luận: Đối với những người nhìn trộm rằng điều này có thể giúp ích.

Những gì tôi đã làm là tạo chức năng JavaScript nghe các nhấp chuột trên thẻ neo, chức năng này sau đó gọi trang PHP trên máy chủ. Trang PHP kiểm tra xem người dùng có đăng nhập / không nếu đăng nhập vào nó trả về 1 khác 0 trở lại máy khách.

Khách hàng nhận được phản hồi này với sự trợ giúp của AJAX, sau đó tôi đã sử dụng câu lệnh IF để biết người dùng có được phép tải xuống hay không

Đây là cách tôi đạt được nó

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']));
   }

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 10:24


ElielelielSep 3, 2014 at 12:41