带隐藏按钮的登录脚本

javascript php

5204 观看

7回复

116 作者的声誉

我一直在使用PHP和JavaScript来构建我父亲的网站。他希望将登录系统整合到他的网站中,并且我使用PHP进行系统设计。我的问题是如果该人登录,我该如何显示按钮?

例如 -您有主页产品关于我们联系人。如果用户已登录,我想要经销商经销商以及其他信息的按钮。所以我将有家产品关于我们联系人,经销商(如果经销商登录),经销商(如果经销商登录),等等向前。

JavaScript是一个很好的方法,或者PHP,或者甚至两者兼而有之?使用JavaScript显示和隐藏按钮,使用PHP检查以查看要显示的按钮。

作者: Dennis 的来源 发布者: 2008 年 8 月 10 日

回应 7


2

13474 作者的声誉

如果使用javascript隐藏按钮,则会在应用程序中打开安全漏洞。恶意用户可以禁用javascript或应用自己的一些来绕过您的安全。

我建议使用PHP来选择是否渲染按钮。我经常在.NET中这样做。

每当他们尝试使用受限制的按钮时,您应该能够在服务器端检查用户的访问权限。

作者: EndangeredMassa 发布者: 2008 年 8 月 10 日

19

15834 作者的声誉

决定

关于安全性,您不能相信来自客户端的内容

  • 访问者可以看到您的所有代码(HTML和Javascript,而不是PHP)并尝试一些东西
  • 访问者甚至可能不使用浏览器; 使用脚本发送请求非常容易

这意味着隐藏按钮是良好的用户界面设计(因为如果您没有登录,则无法使用它们)。但它不是安全功能。安全功能是在服务器上检查访问者在每个需要它的操作之前登录。

如果您不打算显示按钮,将HTML和图像发送到浏览器然后使用Javascript隐藏它们没有用。我会用PHP检查。

作者: Christian Lescuyer 发布者: 2008 年 8 月 10 日

1

11494 作者的声誉

我们在工作中所做的是拥有一个库,提供诸如检查用户是否已登录等功能。例如:

<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
    echo 'html for logged in user';
}
// rest of html

对于只有经过身份验证的用户应该看到的页面,控制器会检查他们是否已登录,如果没有,则会将其重定向到登录页面。

<?php
public function viewCustomer($customerId) {
    if (!isLoggedIn())
        redirectToLoginPage();
}
作者: grom 发布者: 2008 年 8 月 11 日

8

1421 作者的声誉

在您的菜单文件或w / e中,您放置:

<? require 'auth.php' ?>
<ul>
    <li><a href="">Home</a></li>
    <li><a href="">Products</a></li>
    <? if( loggedin() ): ?><li><a href="">Secret area</a></li><? endif; ?>
</ul>

然后在需要auth的页面中执行以下操作:

<?php 
    require 'auth.php';
    require_login();
?>

auth.php可能包含:

<?php
    function loggedin(){
        return isset( $_SESSION['loggedin'] );
    }

    function require_login(){
        if( !loggedin() ){
            header( 'Location: /login.php?referrer='.$_SERVER['REQUEST_URI'] );
            exit;
        }
    }
?>
作者: Akira 发布者: 2008 年 8 月 11 日

1

9169 作者的声誉

Christian Lescuyer所写的一切都是正确的。但是请注意,他说“我愿意”,而不是“你应该”。选择并不那么容易。

首先,安全性不是选择中的问题。执行操作时,应该在服务器上进行安全检查。哪个代码决定显示/隐藏导致该操作的按钮是无关紧要的。

这使得我们在Javascript中只显示了显示/隐藏逻辑的一个缺点 - 发送给用户的HTML比必要的大。这可能不是什么大问题。

但是,在PHP中显示/隐藏逻辑确实有一个减号。所需的PHP代码通常是标签汤。Akira的代码提供了一个很好的例子,说明它通常是如何完成的。

对应的Javascript代码可能看起来像这样:

if (logged())
{
    elementSecretArea.style.display = "list-item";
}

(假设可以隐藏的元素显示为:默认为none)。

这种风格也允许很好的“Ajax”场景:用户看到没有秘密区域的页面,输入密码,看到秘密区域都没有刷新页面。

因此,如果您已经有一个脚本在文档加载时出于其他原因运行,我会认真考虑在那里显示/隐藏逻辑。

作者: buti-oxa 发布者: 2008 年 8 月 25 日

0

0 作者的声誉

基本上你在html中有你的菜单,比如<ul> <li>Home</li> </ul></li>在最后一项之后添加php 的列表:

<?php
  if($session-logged_in) {    
?>

<li>My Account</li>

<?php  
  }
?> 
作者: ITGaWD 发布者: 2009 年 9 月 18 日

0

473 作者的声誉

您所做的只是在用户登录系统时使用会话。你可以这样做

$_SESSION["UserId"] = $row['iduser'];
$_SESSION["UserType"] = $row['user_type'];
$_SESSION["UserName"] = $row['username'];

然后,您可以使用用户类型检查此用户,并执行此类可见的必需按钮

<?php
if( $_SESSION["UserType"] == 'Dealer'){
?>
<a href="your url" class="btn btn-primary" />
<?php
}
?>
作者: Nipun Tharuksha 发布者: 2019 年 7 月 3 日
32x32