Php 为什么会话不能在网站的主目录中工作

Php 为什么会话不能在网站的主目录中工作,php,session,session-cookies,session-variables,Php,Session,Session Cookies,Session Variables,在我的网站中,登录后会话被设置,但它们不在主目录的文件中工作,而是在其他目录中工作,如/admin 也许是我的robots.txt文件有问题。 这是robots.txt文件的代码- User-agent: * Disallow: /cgi-bin/ Disallow: /admin/ Disallow: /*?* 我的导航栏的代码- <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <

在我的网站中,登录后会话被设置,但它们不在主目录的文件中工作,而是在其他目录中工作,如/admin

也许是我的robots.txt文件有问题。 这是robots.txt文件的代码-

User-agent: *
Disallow: /cgi-bin/
Disallow: /admin/
Disallow: /*?*
我的导航栏的代码-

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <a class="navbar-brand" href=""><?php echo website_name; ?></a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item ">
                <a class="nav-link" href="<?php echo location; ?>">Home </a>
            </li>

            <li class="nav-item ">
                <a class="nav-link" href="dashboard.php">Dashboard</a>
            </li>

            <li class="nav-item">
                <a class="nav-link " href="about-us.php" >About Us</a>
            </li>

            <li class="nav-item">
                <a class="nav-link " href="contact-feedback.php" >Contact Us / Feedback</a>
            </li>
            
            <li class="nav-item">
                <a class="nav-link " href="privacy-policy.php" >Privacy Policy</a>
            </li>
            
            <?php
            
            session_start();
            
            if (isset($_SESSION['loggined'])){
                
            echo '<li class="nav-item">
                <a class="nav-link " href="wins.php">My Wins</a>
            </li>';
            
            }
            
            ?>
            
            <?php
            
            if (isset($_SESSION['admin'])) {
                echo '
                
            <li class="nav-item">
                <a class="nav-link " href="admin/Web_ManageMent" >Admin Panel</a>
            </li>
            
                ';
            }
            
            ?>
        </ul>

        <?php
    
        if (!isset($_SESSION['loggined']) ) {
            echo '
    <div class="row">
        <button class="btn btn-sm btn-primary mx-3 my-2" data-toggle="modal" data-target="#loginModal"  id="loginBtn">Login</button>
        <button id="signupBtn" class="btn btn-sm btn-primary my-2" data-toggle="modal" data-target="#signupModal" >Sign Up
        </button>
    </div>
    ';

        } else {
            echo '
                <hr>
        <span class="text-white">Welcome , '.$_SESSION['name'].'</span>
        <br>
        <button class="btn btn-sm btn-primary mx-3 my-2"><a class="text-white" href="registration/logout.php">Log Out</a></button>
        
      
     ';
     
        }
   
        ?>
    
    </div>
</nav>


<?php

include("modals/signup.php");
include("modals/login.php");
?>
导航栏位于/admin-

主目录文件中的导航栏-


因此,会话在主目录中不起作用

您的
robots.txt
文件与PHP完全无关。这纯粹是关于如何告诉道德机器人要索引哪些文件

PHP中会话“不工作”的常见问题是由于
session_start()未被调用

请将以下代码添加到它们不起作用的页面顶部:

if(session\u status()==PHP\u session\u NONE){
会话_start();
}
老实说?自从我键入
session\u start()。为什么?因为,如果你在2021年用PHP编写这个赤裸裸的代码,你就犯了令人难以置信的错误

请,请,学习拉威尔或任何现代框架。你、你的项目、你的同事、整个世界都会变得更好

我每天编写PHP代码,从2010年开始我就没有直接处理过
$\u SESSION[]
。这就像执行
document.getElementById('foo')在JavaScript中。也请不要那样做;-)

<> P.S.您可以考虑学习如何设计无状态的PHP应用程序,依赖于前端Ajax来存储状态,通过LoalStury.gTiETEM(“KEY”),使用JWT令牌(TYMON/JWT AUTH)作为认证系统。 事实上,在过去的5年里,我们都是这样滚动的

请阅读本文:


我们需要知道会话从何处开始。在哪个文件中。@GiacomoM让我把它包括进去,非常感谢你。我们应该不使用会话吗??您认为什么比js@GiacomoM中的document.getElementById('foo')更好,而jQuery的
$('foo')
。现代JS有很多处理方法。比如,在ReactJS中,对于遗留PHP应用程序(2014年之前构建),您需要注册
Register
@CreativeAkshara,我想说,很好,会话可能是一个不错的支柱,因为您可能也陷入了许多其他糟糕的实践中,特别是缺少编写器支持。在现代PHP中?不可能。了解如何制作无状态应用程序并利用PHP的强大功能。
$_SESSION["loggined"] = true;
    $_SESSION["username"] = $username;
    $_SESSION["name"] = $row['display_name'];
    $_SESSION['id'] = $row['user_id'];
    
    
    header("location: dashboard.php");