3

我正在用 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 中获取 logout 的值并对其进行处理。

我有一个小的弹出窗口,它将显示通知变量的值。在这种情况下,它是“您已注销!” 我的问题是如何在页面加载以及 url 等于 /index.php?logout=true 时显示模式窗口?

非常感谢所有评论,答案和建议!

谢谢!- 瑞安

4

7 回答 7

4

首先,

您不能直接“使用 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>
于 2013-02-01T03:54:28.837 回答
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 } ?>
于 2013-02-01T03:35:27.063 回答
2

我知道这是一个旧帖子,但是为了帮助将来有类似任务的人,我想以下内容可能有助于进入正确的方向(我自己测试了下面的代码,所以请进行调整)。

<?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 } ?>
于 2016-06-29T16:05:00.900 回答
0

好的,所以你现有的代码就像这个片段,你遇到的问题是你想显示一个由/使用 PHP 触发的 jQuery/Bootstrap 模式,但是 jQuery/JS 还没有加载(所以你会得到“$ 未定义”错误)。

当您说“一个小的弹出窗口”时,我假设您的意思是引导类型模式。

if(isset($_GET['logout'])) {
  $logoutvalue = $_GET['logout'];

  if($logoutvalue = "true") {
    $notification = "You've been logged out!";  
  }
}

我所做的是将 PHP 代码块移动到 .php 文件的末尾,在 jQuery(等)之后,并有一个包含,所以它看起来像这样(假设你的模式的名称是 id="logoutModal"):

注销.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% 肯定这回答了你的问题,但这对我有用。希望这可以帮助。

于 2019-04-11T22:28:41.600 回答
0

使用PRG模式完成此操作的最佳方法。

索引.php

1. 在 HTML 中为模态内容创建元素

<div id=modal></div>

#modal2. 为您的元素设置样式

#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>


解析.php

$_SESSION7.在变量中使用PHP返回一个值

if (isset($_GET["logout"])) {
    $_SESSION["notify"] = "You have been logged out.";
    header("Location: index.php");
}


这是一个很好的做法。一旦注销请求发送到 PHP,它将重定向到索引页面,结果在会话变量中。PRG 模式并不总是需要 POST 请求。此示例发送一个 GET 请求,该请求可以用于注销。请注意,您必须将其放在session_start();文件的顶部。

于 2017-07-06T12:52:32.333 回答
-1

或者你甚至可以在 if 语句中编写脚本:

<?php
if(isset($_GET['logout']) && $_GET['logout'] === 'true'){ ?>
    <script type="text/javascript>
     window.open(yourhtml);
 </script>
</php } 
else {
// may be some other script
}
?>
于 2013-02-01T03:39:53.137 回答
-1

请下载模态 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..... 
}
于 2013-02-01T03:46:02.543 回答