Javascript 带有隐藏按钮的登录脚本
我一直在用PHP和JavaScript建立我爸爸的网站。他想在他的网站中加入一个登录系统,我有使用PHP的系统设计。我的问题是,如果此人已登录,如何显示按钮在 例如-您有家、产品、关于我们的信息和联系人。我想有按钮经销商,分销商,可能还有其他信息,如果用户登录。所以我会有家,产品,关于我们,联系人,经销商(如果经销商登录),经销商(如果经销商登录),等等 JavaScript是实现这一点的好方法还是PHP,或者两者兼而有之?使用JavaScript显示和隐藏按钮,使用PHP检查要显示的按钮。Javascript 带有隐藏按钮的登录脚本,javascript,php,Javascript,Php,我一直在用PHP和JavaScript建立我爸爸的网站。他想在他的网站中加入一个登录系统,我有使用PHP的系统设计。我的问题是,如果此人已登录,如何显示按钮在 例如-您有家、产品、关于我们的信息和联系人。我想有按钮经销商,分销商,可能还有其他信息,如果用户登录。所以我会有家,产品,关于我们,联系人,经销商(如果经销商登录),经销商(如果经销商登录),等等 JavaScript是实现这一点的好方法还是PHP,或者两者兼而有之?使用JavaScript显示和隐藏按钮,使用PHP检查要显示的按钮。 如
如果使用javascript隐藏按钮,则会在应用程序中打开一个安全漏洞。恶意用户可以禁用javascript或应用他们自己的一些脚本来规避您的安全性 我建议使用PHP来选择是否呈现按钮。我经常在.NET中这样做
无论用户何时尝试使用受限按钮,您都应该能够检查他们在服务器端的访问权限。关于安全性,您不能信任来自客户端的内容:
- 访问者可以看到您的所有代码(HTML和Javascript,而不是PHP)并尝试这些东西
- 访问者甚至不能使用浏览器;使用脚本发送请求非常简单
如果您不想显示按钮,那么将HTML和图像发送到浏览器,然后用Javascript隐藏它们是没有用的。我会使用PHP进行检查。我们在工作中所做的是建立一个库,提供诸如检查用户是否登录等功能。例如:
<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
echo 'html for logged in user';
}
// rest of html
在您的菜单文件或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>
然后,在需要验证的页面中,只需执行以下操作:
<?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;
}
}
?>
克里斯蒂安·莱斯奎尔写的所有东西都是正确的。然而,请注意,他说的是“我愿意”,而不是“你应该”。选择并不是那么容易
首先,安全不是选择的问题。在执行操作时,应该对服务器进行安全检查。哪个代码决定显示/隐藏导致操作的按钮是不相关的
这就给我们留下了在Javascript中执行显示/隐藏逻辑的一个缺点——发送给用户的HTML超出了需要。这可能没什么大不了的
不过,在PHP中使用show/hide逻辑确实有一个缺点。所需的PHP代码通常是一个。Akira的代码提供了一个很好的示例,说明了它通常是如何完成的
相应的Javascript代码可能如下所示:
if (logged())
{
elementSecretArea.style.display = "list-item";
}
(假设可以隐藏的元素显示为:默认情况下无)
这种风格还允许很好的“Ajax”场景:用户看到一个没有秘密区域的页面,输入密码,看到秘密区域,而不刷新页面
<> P>所以,如果你已经有了一个脚本,当你的文档加载到其他原因时,我会认真考虑在那里显示/隐藏逻辑。 基本上你在HTML中有你的菜单,比如说一个列表<代码> UL>
首页 >在最后一个项目<<代码> < /LI> < /代码>之后添加PHP:
<?php
if($session-logged_in) {
?>
<li>My Account</li>
<?php
}
?>
我的帐户
总结上面显示的内容:您将检查他们是否已登录,如果已登录,您将显示您只希望登录成员看到的按钮/链接。您不能在变量中使用破折号
<?php
if($session-logged_in) {
?>
<li>My Account</li>
<?php
}
?>