Php 为什么会话不能在网站的主目录中工作
在我的网站中,登录后会话被设置,但它们不在主目录的文件中工作,而是在其他目录中工作,如/admin 也许是我的robots.txt文件有问题。 这是robots.txt文件的代码-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"> <
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");