微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript-PHP / Ajax:如何在$_SESSION变量值上显示/隐藏DIV?

我在网上搜索了很多主题,这些主题讨论了会话变量以及如何通过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] 举报,一经查实,本站将立刻删除。

相关推荐