<?php
session_start();
$_SESSSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
$_SESSSION['wachtwoord'] = $_POST['wachtwoord'];
if(($_SESSSION['gebruikersnaam'] == 'admin')
&& ($_SESSSION['wachtwoord'] == 'admin123')) {
include("adminpanel.php");
} else {
echo "Uw gebruikersnaam of wachtwoord is foutief.";
}
?>
if(!empty($_SESSION['gebruikersnaam']['wachtwoord'])) {
echo "not ingelogd";
}
如果会话的条件语句有效,我可以将用户重定向到登录页面,如果他没有登录。
提前致谢,你会帮助我很多!
答案 0 :(得分:0)
这是因为舌头松动,$_SESSION
而不是$_SESSSION
而且:
$_SESSION['gebruikersnaam']['wachtwoord'];
实际上是指1个值,而不是2个:
$data = array('gebruikersnaam' => array('wachtwoord' => 'mijnwachtwoord'));
echo $data['gebruikersnaam']['wachtwoord'];
取而代之的是:
if(!empty($_SESSION['gebruikersnaam']) || !empty($_SESSION['wachtwoord'])){
echo "not ingelogd";
}
但是,您应该只在会话中存储用户名和ID。存储密码是一种潜在的安全漏洞,并非必要。
你也可以使用这样的东西来扫描所需的值:
function required_session_fields(array $keys){
foreach($keys as $k){
if(!array_key_exists($k, $_SESSION) && empty($_SESSION[$k])){
return false;
}
}
return true;
}
if(required_session_fields(['gebruikersnaam', 'wachtwoord'])){
echo 'gelukt';
}
如果您启动了会话并包含了一个文件,您仍然可以访问$_SESSION
变量。在每个 new 服务器请求中,确保会话已启动。
答案 1 :(得分:0)
在其他页面上你必须
在session_start();
之前
if(!empty($_SESSION['gebruikersnaam']['wachtwoord'])) {
echo "not ingelogd";
}
但是,永远不会创建此变量$ _SESSION [&#39; gebruikersnaam&#39;] [&#39; wachtwoord&#39;]。目前您已经创建了$ _SESSION [&#39; gebruikersnaam&#39;]和$ _SESSION [&#39; wachtwoord&#39;]
也许你的意思是
if(!empty($_SESSION['gebruikersnaam']) && !empty($_SESSION['wachtwoord'])) {
echo "not ingelogd";
}