WedX - журнал о программировании и компьютерных науках

Открытие модального окна с помощью 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 ?

Все комментарии, ответы и предложения приветствуются!

Спасибо! - Райан

01.02.2013

  • расположение заголовка должно использовать полный URI. 01.02.2013
  • Это просто на локальном хосте, так что это изменится, когда он будет запущен. 01.02.2013
  • вы можете написать javascript на основе значения $_GET. Разве это не похоже на этот вопрос здесь: stackoverflow.com/questions/11594974/ 01.02.2013
  • @BharathParlapalli Не думаю, что это похоже. Моя намного проще. Мне просто нужно как-то открыть модальное окно с помощью PHP. Должен быть какой-то способ сделать это! Ха-ха. И я подумал о JavaScript. Честно говоря, я просто не знаю, как это сделать... А поскольку я не знаю, я даже не знаю, сработает ли это. 01.02.2013

Ответы:


1

Прежде всего,

Вы не можете напрямую «открыть модальное окно с помощью 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>
01.02.2013

2

Вы ищете что-то вроде:

<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 } ?>
01.02.2013
  • Не совсем. Мне не нужно окно предупреждения JavaScript. Я хочу отобразить модальное окно. Например, если бы я щелкнул ссылку в html, тогда код был бы <a href="#popout">Open Popout</a>, если это кому-то поможет. Модальное окно выглядит лучше. :П 01.02.2013
  • Вы знаете, как создать модальное окно, которое появляется/исчезает при каком-то событии JS? 01.02.2013
  • Также вам потребуется jQuery UI и UI CSS, чтобы он отображался. 01.02.2013
  • @Class Просто вопрос (я понятия не имею), не должно ли это быть $("#dialog").modal();. И редактирование тоже не сработало. Я не знаю, будет ли это полезно, но именно здесь я получил свой Modal Plugin. alessioatzeni.com/blog/< /а>. 02.02.2013
  • @RyanFitzgerald Я давал вам пример пользовательского интерфейса jQuery, который представляет собой .dialog(); сайт, который вы получили, будет работать так же, вам просто нужно изменить его в соответствии с тем, как он должен выглядеть. 02.02.2013

  • 3

    Я знаю, что это старый пост, но чтобы помочь кому-то в будущем с подобным квестом, я думаю, что следующее может помочь найти правильное направление (я сам протестировал приведенный ниже код, поэтому, пожалуйста, внесите изменения).

    <?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">&times;</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 } ?>
    
    29.06.2016

    4

    Лучший способ добиться этого — использовать шаблон 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(); вверху ваших файлов.

    06.07.2017

    5

    Итак, ваш существующий код похож на этот фрагмент, и проблема, с которой вы столкнулись, заключается в том, что вы хотите показать модальность 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");  
      }
    }
    

    logout-modal.php

    <?php ?>
      <script>
        $('#logoutModal').modal('show');
      </script>
    <?php ?>
    

    Не уверен на 100%, что это отвечает на ваш вопрос, но это работает для меня. Надеюсь это поможет.

    11.04.2019

    6

    Или вы можете даже написать скрипт внутри оператора if:

    <?php
    if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ ?>
        <script type="text/javascript>
         window.open(yourhtml);
     </script>
    </php } 
    else {
    // may be some other script
    }
    ?>
    
    01.02.2013
  • чем это отличается от того, что предложил @Class? просто хочу знать, почему отрицательный рейтинг. 25.02.2015

  • 7

    Загрузите модальную JS-библиотеку https://simplemodal.plasm.it.

    и используйте условие

    if(isset($_GET['logout'])) {
    
    $logoutvalue = $_GET['logout'];
    
    if($logoutvalue = "true") {
    code to open the Modal as in the JS library..... 
    }
    
    01.02.2013
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]