Я создаю систему входа в систему на PHP, и я стараюсь сделать ее немного приятнее.
Когда вы выходите из системы, вы перенаправляетесь обратно в index.php. Как это:
header("loaction: index.php?logout=true")
Это делает URL-адрес похожим на www.mysite.com/index.php?logout=true. Затем я использую следующий код:
if(isset($_GET['logout'])) { $logoutvalue = $_GET['logout']; if($logoutvalue = "true") { $notification = "You've been logged out!"; }
чтобы получить значение выхода из URL-адреса и сделать что-то с ним.
У меня есть небольшое всплывающее окно, в котором будет отображаться значение переменной уведомления. В этом случае это «Вы вышли из системы!» Мой вопрос: как получить модальное окно для отображения при загрузке страницы и когда url равен /index.php?logout=true?
Все комментарии, ответы и предложения приветствуются!
Благодаря! – Райан
Прежде всего,
Вы не можете напрямую открывать модальное окно с помощью PHP. Это можно сделать только путем обмена переменными (через JSON или XML) или вложением условий PHP прямо в вашу разметку.
PHP и JavaScript независимы.
Мой вопрос: как получить модальное окно для отображения при загрузке страницы и когда url равен /index.php?logout=true?
Есть два способа добиться этого.
Во-первых : хорошо использовать внедрение PHP-условий прямо в разметку.
Второй : <input type="hidden" id="showModal" />
скрытый ввод, например ( <input type="hidden" id="showModal" />
), а затем проверьте, существует ли он через сам JavaScript.
Например:
<!DOCTYPE html> <html> <head> <script type="text/javascript"> window.onload = function(){ if ( document.getElementById('showModal') ){ alert('Box'); //replace with your own handler } } </script> </head> <body> <?php if ( isset($_GET['logout']) && $_GET['logout'] === 'true' ): ?> <input type="hidden" id="showModal" /> <?php endif;?> </body> </html>
Вы ищете что-то вроде:
<script> <?php if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ echo 'alert("You\'ve been logged out!");' } ?> </script>
EDIT: Я считаю, что вы ищете что-то подобное для модального окна (используя jQuery)
<?php if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ $message = "You've been logged out!"; ?> <script> $(function() { $("#dialog").dialog();//if you want you can have a timeout to hide the window after x seconds }); </script> <div id="dialog" title="Basic dialog"> <p><?php echo $message;?></p> </div> <?php } ?>
Я знаю, что это старый пост, но чтобы помочь кому-то в будущем с похожим кветом, я думаю, что следующее может помочь в правильном направлении (я сам сам тестировал код ниже, поэтому, пожалуйста, внесите корректировки).
<?php if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ $message = "You've been logged out!"; ?> <script> $(function() { $('#myModal').modal('show'); }); </script> <div class="modal fade" id="myModal" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">Edit Data</h4> </div> <div class="modal-body"> <div class="fetched-data"><?php $message ?></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> <?php } ?>
Лучший способ сделать это, используя шаблон PRG .
1. Создайте тело для модального контента в HTML
<div id=modal></div>
2. Стиль вашего #modal
элемента
#modal { position: fixed; display: none; /*important*/ color: white; text-align: center; z-index: 1000; width: 100%; height: 80px; top: 50%; left: 50%; transform: translate(-50%,-50%); background: crimson; line-height: 2; }
3. Определите функцию, как показывать и исчезать с помощью jQuery
'use strict'; window.jQuery ? $.fn.notify = function(interval) { let el = $(this), text = el.text(), modal =()=> { // this will fire after the interval has expired el.fadeOut(), clearInterval(timer) }, timer = setInterval(modal,interval); !text.match(/\S+/) || el.text('') // this will fire when modal box contains text .append('<h3>'+text+'</h3>') .show(); } : alert('jQuery required.');
4. Присоедините .notify()
к селектору jQuery
$(()=>{ $('#modal').notify(1500); // 1500 is the interval });
5. Вставьте уведомление, отправленное с PHP внутри элемента #modal
<div id=modal> <?= @$_SESSION["notify"]; // if this variable is not set, nothing will happen unset($_SESSION["notify"]); ?> </div>
с<div id=modal> <?= @$_SESSION["notify"]; // if this variable is not set, nothing will happen unset($_SESSION["notify"]); ?> </div>
6. Сделайте запрос $_GET
, выполнив простой метод PRG
<a href='parse.php?logout'>Logout</a>
7. Вернуть значение с помощью PHP в переменной $_SESSION
if (isset($_GET["logout"])) { $_SESSION["notify"] = "You have been logged out."; header("Location: index.php"); }
Это хорошая практика. Обратите внимание, что вы должны установить session_start();
в верхней части ваших файлов.
Или вы даже можете написать скрипт внутри оператора if:
<?php if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ ?> <script type="text/javascript> window.open(yourhtml); </script> </php } else { // may be some other script } ?>
Загрузите библиотеку Modal JS http://simplemodal.plasm.it
и использовать условие
if(isset($_GET['logout'])) { $logoutvalue = $_GET['logout']; if($logoutvalue = "true") { code to open the Modal as in the JS library..... }