<?php
$name=$_GET['var'];
if($_SESSION["loginvalue"]==1)
{
echo "Welcome,$name";
echo " <a href='login.php'>Logout</a>";
}
?>
这是我用来在页面中维护会话的代码。我想要的是,如果有人在浏览器中输入本地/项目/cms.php url,那么它不应该打开。我希望cms.php是开放的,只有当有人登录,否则它不应该被打开。
我不能100%确定你的意思;但是…
首先有一些问题与给出的代码,哪里是session_start(),你的代码也开放的XSS攻击的$name
var,因为你没有转义输入,你需要使用htmlentities()用户输入如果你要把它显示回用户。此外,您需要在使用之前检查变量设置,以避免PHP未定义索引警告。除此之外,你会检查用户是否登录了,如果没有,你会将他们重定向到你的登录页面。
<?php
session_start();
$name = isset($_GET['var']) ? $_GET['var'] : null;
if(isset($_SESSION["loginvalue"]) && $_SESSION["loginvalue"]==1)
{
echo "Welcome,".htmlentities($name, ENT_QUOTES);
echo ' <a href="./login.php">Logout</a>';
}else{
//Redirect user to login page if not logged in.
exit(header("location: ./login.php"));
}
?>
您可以这样修改代码:
<?php
session_start();
$name=$_GET['var'];
if($_SESSION["loginvalue"]==1)
{
echo "Welcome, ". htmlentities($name, ENT_QUOTES, "UTF-8");
echo " <a href='login.php'>Logout</a>";
}else{
//Redirect user to login page.
header("location: /login.php");
}
?>