我在网上搜索了很多主题,这些主题讨论了会话变量以及如何通过Ajax从Javacript中获取它们.但是,尽管我已经能够做到这一点,但这并不能完全解决我的问题.
Objective
在线提供在线库存管理.
Constraints
>只有经过身份验证的用户才能管理在线库存
>对未经身份验证的用户隐藏库存管理控件
>必须向每个部分独立通知认证,以便相应地显示/隐藏其控件
Code Samples
> authenticate.PHP
> project.js
> index.PHP
> atv.PHP
> atv-inventory-list.PHP
> sectionhandler.PHP
的index.PHP
<?PHP session_start(); ?>
<html>
...
<div id="newAtvDialog" title="Input @R_10_4045@ion on the new ATV">
<form id="newAtvAjaxForm" action="addNewAtv.PHP" method="post">
...
</form>
</div>
<div id="section">
<$PHP echo file_get_contents("inventory-sections.html"); ?>
</div>
...
</html>
authenticate.PHP
<?PHP
require_once "data/data_access.PHP";
$userName = "";
$password = "";
if (isset($_REQUEST["userName"])) $userName = $_REQUEST["userName"];
if (isset($_REQUEST["password"])) $password = $_REQUEST["password"];
$isAuthentic = isAuthenticUser($userName, $password);
$_SESSION["isAuthentic"] = $isAuthentic;
echo $isAuthentic;
// I try to use the below-written function where ever I need to show/hide elements.
function isCurrentUserAuthenticated() {
return isset($_SESSION["isAuthentic"]) && $_SESSION["isAuthentic"];
}
?>
project.js
$(document).ready(function() {
$("#newAtvDialog").dialog({
autoOpen: false,
cloSEOnescape: true,
modal: true,
width: 1000
});
$("#newAtvAjaxForm").ajaxForm(function(data) {
$("#newAtvDialog").dialog("close");
$("#section").load("sectionhandler.PHP?section=atv&type=-1&make=0&year=0&category=0", function(event) { $("button").button(); });
});
});
atv.PHP
<div id="newAtvButton"> <!-- This DIV is to be hidden when not authenticated -->
<button id="addNewAtvButton">Add New ATV</div>
</div>
<div id="criterion">
...
</div>
<div id="atv-inventory">
<?PHP include ('atv-inventory-list.PHP'); ?>
</div>
ATV-库存list.PHP的
<?PHP
$type = -1;
$make = 0;
$year = 0;
$category = 0;
if (isset($_REQUEST["type"])) $type = $_REQUEST["type"];
...
$atvs = getAllAtvs($type, $make, $year, $category);
foreach ($atvs as $value=>$atv):
?>
<div class="inventory-item">
<img src="<?PHP echo utf8_decode($atv->getPathToImage())">
<div class="item-title">
...
</div>
<div id="commands">
<!-- This is the way I have tried so far, and it doesn't seem to work properly. -->
<button id="removeAtvButton"
class="<?PHP echo isCurrentUserAuthenticated() ? 'show' : 'hide'; ?>">
Remove ATV
</button>
</div>
</div>
sectionhandler.PHP
$section = "";
if (isset($_REQUEST["section"])) $section = $_REQUEST["section"];
$type = -1;
$make = 0;
$year = 0;
$category = 0;
// getting values from $_REQUEST[]
$activatedSection = "";
switch($section) {
case "atv": $activatedSection = "atv.PHP";
...
}
$file = $url.raw_url_encore($activatedSection);
include $file;
Supplementary thoughts
我想到设置一个布尔会话变量,该变量将在用户闲置约20分钟后过期,从而迫使他再次登录.
我知道我不使用数据库中存储的密码.这是该站点中身份验证的第一步,我将很快上线,因为客户端将很快请求交货.下一步将是加密的密码.但是首先,我需要显示/隐藏功能才能正常工作.
我还考虑过cookie,并且对于Web开发来说还很陌生,所以我不确定哪种方法最好.就我而言,最简单的就是最好的,只要它意味着最低的安全性即可.毕竟这不是NASA网站!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。