簡體   English   中英

使用PHP禁用href鏈接

[英]disable a href links using PHP

我有一個頁面,其中包含已登錄用戶的菜單

我在我的網站的所有其他頁面上包含此頁面但我不希望未登錄的用戶能夠單擊鏈接

如果PHP變量= 'no'如何禁用該頁面上的所有鏈接

我知道我可以使用

if($php_var == 'no') {
    //do something here
}

但我不知道如何禁用鏈接?

有沒有辦法使用CSS或Javascript來禁用鏈接?

試試這個

if($php_var == "no")
{
    echo '<a href="javascript:void(0);">Your Text For Link</a>';
} 
else
{
    echo '<a href="your link">Your Text For Link</a>';
}

用戶javascript:void(0); 沒有重定向。 這將保持你的css鏈接像其他人一樣,但當你點擊它不會重定向。

如果我理解正確,答案很簡單。 為什么不用簡單的字符串替換鏈接?

if($php_var === "no") {
    echo "This is the text of your link.";
} else
{
    echo "<a href="your.link">This is the text of your link.</a>";
}

但正如已經提到的,完全隱藏鏈接更好,因為通常用戶會被這些事情弄糊塗。

您需要進行處理預輸出,PHP不會動態禁用已創建的DOM元素的href

如果您通過PHP生成鏈接的輸出,您可以執行以下操作:

echo '<a href="' . ($php_var == 'no' ? '#' : 'actual_link.html') . '">Link</a>';

否則,您可以創建對PHP腳本的AJAX調用,如果它返回“否”,則遍歷您的頁面鏈接並通過JavaScript禁用鏈接。

<a href='<?php echo ($php_var == "no") ? "javascript:void(0)" : "link.php" ?>'>
Hello user
</a>

這將刪除標簽中的所有href。 如果php var為no。 在所有標簽之后放置此代碼,否則將無效

 <?php
    if($php_var === "no"){
    echo '<script>var x=document.getElementsByTagName("a");for (i=0;i<x.length;i++){x[i].removeAttribute("href");}</script>';
    }

?>

你可以這樣做:

// define if you want to make links work
$linking = true;

然后你的鏈接:

<a <?php if($linking == true) { ?> href="..." <?php } ?>>Link</a>

如果沒有顯示鏈接,我還會添加一些CSS:

.link_that_is_no_link {
text-decoration: none;
cursor: default
}

如何檢查用戶是否已登錄? 你使用會話嗎? 如果用戶登錄時檢查用戶的方式相同,則可以決定是否顯示項目。

你可以做到兩件事:

if(isset($_SESSION['id'])){
    echo '<a href="actual_link.html">LINK</a>';
}else{
    echo '<a href="#">LINK</a>';
}

如果用戶沒有登錄,它將繼續顯示鏈接但是無處可去。或者你可以這樣做:if(isset($ _ SESSION ['id'])){echo'LINK'; } else {//在此處不執行任何操作或將鏈接添加到登錄頁面},只有在您登錄時才會顯示鏈接。

我更喜歡第二個選項,因為我認為沒有用戶會希望看到鏈接而無法打開它。 請注意,此答案中的代碼只是對您的實際代碼的猜測

您可以使用PHP if-else條件並像這樣編寫HTML:

<a href="" onclick="return false;">

暫無
暫無

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

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