簡體   English   中英

如何為每個用戶僅顯示一次 php 頁面

[英]how do I show a php page just once only per user

您好,我有一個 php 頁面,我希望每個用戶只顯示一次。

我認為使用 cookies、session-timeout 或 session-cookies 這可能是可能的。

但我不確定。

謝謝你的好心:)

您通過設置Cookie回答了自己的問題。

// check if they've been here, if they haven't set
// a cookie for subsequent visits
if($_COOKIE['beenhere']) { 
    setcookie("beenhere", '1');
}
else {
    // where you want them to go if they've seen this page
    header('Location: http://www.example.com/');

欲獲得更多信息:

如果您想讓一個用戶-再也不會看到該頁面,則必須為該cookie設置一個過期時間(請參閱上面的鏈接頁面),因為關閉瀏覽器將消除我在上面設置的cookie。

要按用戶會話一次顯示頁面,您可以嘗試以下操作

//mypage.php

if(!isset($_SESSION['mypage_view'])
{
     $_SESSION['mypage_view'] = 1;   
} else {
     //check if this is not the first time the page has been viewed
     if(isset($_SESSION['mypage_view'])) {
      //not first time redirect
      header('location: google.com');
      session_write_close();
      exit();
     }
}

您也可以使用會話

if($_SESSION['sessioned_here'] == null) {
    // just been on this page
} else {
    // visited already. get out

}

最好的方法是獲取訪問者的 IP。然后將其保存在數據庫中。

您可以使用此代碼:


    function getUserIP(){
        if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
            $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
            $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        }
        $client  = @$_SERVER['HTTP_CLIENT_IP'];
        $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
        $remote  = $_SERVER['REMOTE_ADDR'];

        if(filter_var($client, FILTER_VALIDATE_IP)){
            $ip = $client;
        }
        elseif(filter_var($forward, FILTER_VALIDATE_IP)){
            $ip = $forward;
        }else{
            $ip = $remote;
        }
        return $ip;
    } $user_ip = getUserIP();


$rowsnumber = $con->query("SELECT * FROM `visitors` WHERE ip='" . $user_ip . "'")->num_rows;
    $nowdate = date("Y-m-d");
    
    if($rowsnumber == 0){ 
        // First Time Visit
        mysqli_query($con, "INSERT INTO `visitors` (`visitdate`, `ip`) VALUES ('$nowdate','$user_ip')");
    }else{
        $visitorresualt = mysqli_query($con,"SELECT `visitdate` FROM `visitors` WHERE ip='" . $user_ip . "'");
        $thisvisitor = mysqli_fetch_array($visitorresualt,MYSQLI_NUM);
        
        if($thisvisitor[0] != $nowdate){
            
            //Todays First Visit
            $newvisit = $thisvisitor[1] + 1;
            mysqli_query($con, "UPDATE `visitors` SET `visitdate`='$nowdate' WHERE ip = '" . $user_ip . "'");
        }
        
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM