使用PHP禁用href链接

5

我有一个页面,其中包含登录用户的菜单。

我将该页面包含在站点的所有其他页面中,但我不希望未登录的用户能够点击链接。

如果PHP变量= 'no',如何禁用该页面上的所有链接?

我知道可以使用以下代码:

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

但我不确定如何禁用链接?

是否有使用CSS或Javascript禁用链接的方法?


2
为什么要显示链接,如果你不希望用户点击呢?你肯定想隐藏链接而不是禁用它们的操作吧? - exussum
如果用户无法点击它们...那么这些链接在那里做什么。从用户体验的角度来看:完全隐藏它们。它们实际上会误导用户。 - Richa
8个回答

5

试一下

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);,无需进行重定向。这将保持您的链接样式与其他链接一致,但当您单击它时,不会重定向到其他页面。


2

这将从所有a标签中移除href。如果php变量是no,则在所有a标签后放置此代码,否则不起作用。

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

?>

2
如果我理解正确,答案很简单。为什么不用普通字符串替换链接呢?
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>";
}

但是正如已经提到的,完全隐藏链接更好,因为通常用户会被这些东西弄糊涂。


1
你需要在输出之前进行处理,PHP无法动态禁用已创建的DOM元素的href。
如果你是通过PHP生成链接的输出,你可以这样做:
echo '<a href="' . ($php_var == 'no' ? '#' : 'actual_link.html') . '">Link</a>';

否则,您可以创建一个 AJAX 调用 PHP 脚本,如果返回“no”,则通过 JavaScript 遍历页面链接并禁用链接。

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

0
你可以这样做:
// 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
}

0

如何检查用户是否已登录?您使用会话吗?与检查用户是否已登录的方式相同,您可以决定是否显示项目。

您可以两者兼顾:

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

如果用户未登录,则该链接将一直显示但不会导向任何地方。 或者你可以这样做: if(isset($_SESSION['id'])){ echo '链接'; }else{ //在此处不执行任何操作或者放置一个指向登录页面的链接 } 只有在登录后才会显示该链接,我更喜欢第二个选项,因为我认为没有用户会喜欢看到无法打开的链接。 请注意,本答案中的代码只是您实际代码的猜测


0

您可以使用 PHP 的 if-else 条件语句,编写如下 HTML 代码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接