Intereting Posts
Массив поиска PHP в массиве PHP sleep () вызывает высокую загрузку процессора Простой поиск: передача переменной формы в URI с помощью CodeIgniter В то время как цикл PHP get_result не работает Как преобразовать массив объектов в массив? Флажок, чтобы действовать как переключатель, сначала установите четыре или последние четыре флажка, но не оба – javascript? cakephp, проверка ошибки Ограничить доступ к файлам авторизованным пользователям php Установить имя файла с помощью введенной пользователем переменной в PHP Попытка вызвать неопределенный метод с именем «getRequest» класса. Отправить по электронной почте в SwiftMailer Symfony Быстрое изменение размера инструмента / сценария Php force Загрузка – загрузка поврежденного файла одиночная цитата внутри двойной цитаты в php while ($ row = mysql_fetch_array ($ result)) – сколько циклов выполняется? MYSQL Выберите одну и ту же таблицу

PHP / Ajax: как показать / скрыть DIV значение переменной $ _SESSION?

Я искал много, много тем в Сети, обсуждая переменные сеанса и как их получить из Javacript через Ajax. Однако, хотя я был в состоянии сделать это, это не полностью решает мою проблему.

Задача

Чтобы обеспечить онлайн-управление запасами в Интернете.

Ограничения

  • Только зарегистрированные пользователи могут управлять онлайн-ресурсами
  • Элементы управления инвентаризацией скрыты от пользователя, не прошедшего проверку подлинности
  • Каждый раздел должен быть независимо информирован об аутентификации, чтобы соответственно отображать / скрывать свои элементы управления

Образцы кода

  • authenticate.php
  • project.js
  • index.php
  • atv.php
  • АТВ-инвентаризации list.php
  • sectionhandler.php

index.php

<?php session_start(); ?> <html> ... <div id="newAtvDialog" title="Input information 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> 

АТВ-инвентаризации 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; 

Дополнительные мысли

Я думал о настройке переменной логического сеанса, которая истекает через 20 минут бездействия от пользователя, заставляя его снова войти в систему.

Я знаю, что не буду использовать пароли, хранящиеся в базе данных. Это первый шаг аутентификации на этом сайте, который я скоро поставлю в Интернете, так как клиент собирается запросить доставку в ближайшее время. Зашифрованные пароли станут следующим шагом. Но сначала мне нужно, чтобы функция show / hide работала правильно.

Я также думал о куках, и, будучи совершенно новым для веб-разработки, я не совсем уверен, какой будет лучший подход. Насколько мне известно, самое простое в лучшем случае, если это подразумевает минимальную безопасность. В конце концов, это не сайт НАСА! 😉

Спасибо всем за ваш вклад! знак равно

Related of "PHP / Ajax: как показать / скрыть DIV значение переменной $ _SESSION?"

Это идея, но вы можете работать над ней;

actionURL – это php-файл, в котором вы можете проверить, вошел ли пользователь в действительный сеанс.

Функция ajaxSession возвращает true или false, если пользователь регистрируется.

Затем вы можете вызывать эту функцию каждые X секунд / минут для управления, если сеанс все еще продолжается.

 window.setInterval(function(){ // call your function here if(ajaxSession(actionUrl)){ //return true, user logged, append/show protected divs. }else{ //return false, remove/hide protected divs and ask user to log. } }, 5000); //every 5 seconds. 

Функция ajaxSession:

  function ajaxSession(actionUrl) { var sessionOK= false; $.ajax({ async: false, url: actionUrl, success: function(msg) { // check the return call from the php file. if(msg== 'OK'){ sessionOK = true; }else{ sessionOk = false; } }}); return sessionOK; } 

РЕДАКТИРОВАТЬ

Я добавлю пример кода для actionUrl , который вернется, если сеанс isset или нет функции ajaxSession :

 <?php session_start(); // $_SESSION['reg'] is true when the user is logged in. if($_SESSION['reg'] == true){ echo 'OK'; }else{ echo 'NO'; } ?> 

Не забудьте проверить в функции ajaxSession результат вызова Ajax. Если это ОК, то sessionOk = true, если нет, sessionOk = false.