如果我想保护我的文件(页面),我使用以下代码:
<?php
if( isset ($_SESSION['user']['name']) && $_SESSION['user']['ip'] == $_SERVER['REMOTE_ADDR']) {
echo'';
} else {
header ("Location: index.php");
}
?>
我在上面的每个案例中都将这段代码放在页面上。因此,如果您尚未登录,则会返回登录表单。 问题是,我不能真正使用会话,我不知道我是否会把它变成它应该是什么。 Class.users a如果有人能帮助我,我会非常高兴。记录的问题是他可能不使用会话......在这里我的会话:
<?php
if($_SERVER['REQUEST_METHOD']== 'POST')
{
//echo 'Request started';
$username = $_POST['username'];
$password = $_POST['password'];
$sth = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$sth->bindParam(':username', $username);
$sth->bindParam(':password', $password);
$sth->execute();
$total = $sth->rowCount();
if($total == 1)
{
//echo 'Row found';
$row = $sth->fetch();
if($row['activated'] == 1)
{
//echo 'User is activated';
$_SESSION['user']['name'] = $username;
$_SESSION['user']['loggedin'] = true;
$_SESSION['user']['id'] = $row['id'];
$_SESSION['user']['timestamp'] = time();
$_SESSION['user']['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['user']['time'] = date('d/m/Y - H-m-s');
header ("Location: ./home.php");
exit();
}
else
{
echo '<div id="login-form-alert"><div class="alert alert-warning"><h5>Uw account is niet actief. Contacteer aub de beheerder op het mail adres <a href="mailto:info@rallypodium.be">info@rallypodium.be</a><h5></div></div>';
}
}
else
{
echo '<div id="login-form-alert"><div class="alert alert-danger"><h5>Uw wachtwoord of gebruikersnaam klopt niet.<h5></div></div>';
}
}
?>
我在这里看了几个星期......谁能帮助我,是我的英雄!!
答案 0 :(得分:1)
您在页面顶部缺少session_start()
。
<?php
session_start();
if( isset ($_SESSION['user']['name']) && $_SESSION['user']['ip'] == $_SERVER['REMOTE_ADDR']) {
echo'';
<?php
session_start();
if($_SERVER['REQUEST_METHOD']== 'POST')
{
答案 1 :(得分:0)
将会话开始放在应该使用此会话的每个页面的第一行。
session_start();
/* @var $_SERVER type */
//改为使用相同的(====)运算符
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
这里不要直接访问Superglobarl $ _POST数组,而是使用一些过滤器输入函数(例如filter_input();等等)
/* @var $username type */
$username = $_POST['username'];
$password = $_POST['password'];
}