Открытие модального окна с использованием PHP
Я создаю систему входа в систему в 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?
Все комментарии, ответы и предложения приветствуются!
Спасибо! - Райан
6 ответов
Прежде всего,
Вы не можете "Открыть модальное окно с помощью PHP" напрямую. Вы можете сделать это только путем обмена переменными (через JSON или XML) или встраивания условий PHP прямо в вашу разметку.
PHP и JavaScript независимы.
У меня вопрос, как мне заставить модальное окно отображаться при загрузке страницы и когда URL равен /index.php?logout=true?
Есть два способа добиться этого.
Во-первых: хорошо использовать встраивание условий PHP прямо в разметку.
Второе: есть где-то скрытый ввод, вроде (<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>
РЕДАКТИРОВАТЬ: я думаю, что вы ищете что-то вроде этого для модального окна (с помощью 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 } ?>
Итак, ваш существующий код похож на этот фрагмент, и проблема в том, что вы хотите показать модальный jQuery/Bootstrap, запущенный с / с PHP, но jQuery/JS еще не загрузился (так что вы получите ошибка "$ undefined").
Когда вы говорите "маленькое всплывающее окно", я предполагаю, что вы имеете в виду модальный тип начальной загрузки.
if(isset($_GET['logout'])) {
$logoutvalue = $_GET['logout'];
if($logoutvalue = "true") {
$notification = "You've been logged out!";
}
}
Я переместил блок кода PHP в конец файла.php, после jQuery (и т. Д.) И включил в него включение, так что это выглядело бы так (при условии, что имя вашего модального имени равно id = "logoutModal"):
logout.php
if(isset($_GET['logout'])) {
$logoutvalue = $_GET['logout'];
if($logoutvalue = "true") {
include("logout-modal.php");
}
}
выход из системы-modal.php
<?php ?>
<script>
$('#logoutModal').modal('show');
</script>
<?php ?>
Не уверен на 100%, что это отвечает на ваш вопрос, но это работает для меня. Надеюсь это поможет.
Лучший способ сделать это с помощью шаблона PRG.
index.php
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 in milliseconds
})
5. Вставьте уведомление, отправленное с PHP внутри #modal
элемент
<div id=modal>
<?=
@$_SESSION["notify"]; // if this variable is not set, nothing will happen
unset($_SESSION["notify"]);
?>
</div>
6. Выполните простую $_GET
запрос
<a href=parse.php?logout>Logout</a>
parse.php
7. Вернуть значение с помощью PHP в $_SESSION
переменная
if (isset($_GET["logout"])) {
$_SESSION["notify"] = "You have been logged out.";
header("Location: index.php");
}
Это хорошая практика. После отправки запроса на выход в PHP он будет перенаправлен на страницу индекса с результатом в переменной сеанса. Шаблон PRG не всегда требует запроса POST. В этом примере отправляется запрос GET, который подходит для выхода из системы. Обратите внимание, что вы должны разместить session_start();
в верхней части ваших файлов.
Пожалуйста, загрузите модальную библиотеку 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.....
}
Или вы могли бы даже написать скрипт внутри оператора if:
<?php
if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ ?>
<script type="text/javascript>
window.open(yourhtml);
</script>
</php }
else {
// may be some other script
}
?>