测试是否已单击具有特定文本的链接(php)

时间:2017-03-28 03:43:37

标签: php

编辑:有没有办法在不重新加载页面的情况下执行此操作?我有一个类,当按下“登录”时显示,但由于重新加载页面,它会快速消失

我正在尝试测试是否点击了特定的链接文本,因为相同的链接可以有“登录”或“注销”文本,但它没有注册它是一个有效的链接

的index.php:

 <body>
        <nav>
            <ul>
                <li id="login">
                    <?php
                        if (isset($_SESSION['logged_user'])) 
                            echo "<a href='index.php?link=login'>Login";
                        else
                            echo "<a href='index.php?link=logout'>Logout";
                    ?>
                    </a>
                </li>

            </ul>
        </nav>

//LOGOUT
                if ($_GET['link']=='logout') {
                    unset($_SESSION["logged_user"] );
                    unset( $_SESSION );
                    $_SESSION = array();
                    session_destroy();
                }
  

错误:Undefined index: link

3 个答案:

答案 0 :(得分:1)

将此更改为

if ($_GET['link']=='logout') {

:此

if (isset($_GET['link']) && $_GET['link']=='logout') {

答案 1 :(得分:1)

当PHP页面加载时,PHP编译器检查GET数组中的链接属性,直到你点击它为止。因此,您必须使用isset函数来处理这种情况,以便它只在可用时验证。

 if (isset($_GET['link']) && $_GET['link']=='logout')

希望这会有所帮助!!

答案 2 :(得分:1)

我猜最上面可能会遗漏session_start();以允许您使用$_SESSION['logged_user'];

  if(session_status() == PHP_SESSION_NONE){
        session_start();
    }

还有:

<?php
     if (isset($_GET['link']) && $_GET['link']=='logout') {
          unset($_SESSION["logged_user"] );
          unset( $_SESSION );
          $_SESSION = array();
          session_destroy();
         //  echo "Hello";
     }
    ?>
祝你好运