По какой-то причине, несмотря на то, что IsLoggedIn () проверяет сеанс, он действует так, как будто его не существует.
Я использовал это для создания функций
<?php
session_start();
function DoLogin($email, $password)
{
$sql = "
SELECT U.id, password, FirstName, LastName
FROM Users U
Join ContactMethods CM On U.id=CM.User_Id
WHERE CM.`Value` = '$email'
";
$conn = getConnection();
$result = $conn->query($sql);
//echo $conn->error;
$rs = $result->fetch_assoc();
$conn->close();
if($rs['password'] == $password)
{
$_SESSION['UserId'] = $rs['id'];
$_SESSION['UserEmail'] = $email;
$_SESSION['UserName'] = $rs['FirstName'] . ' ' . $rs['LastName'];
}
}
function IsLoggedIn()
{
return isset($_SESSION['UserId']);
}
, и этовверху страниц
require_once('inc/loginauth.php'); // calls the script with the functions listed above
if(isset($_REQUEST['email']))
DoLogin($_REQUEST['email'],$_REQUEST['password']);
?>
и это для части входа на каждой странице
<?php
session_start();
if(IsLoggedIn()){ ?>
<h2>Welome <?=GetUserName()?>!</h2>
<p class="grey">Would You Like to Log Out?</p>
<p class="grey"><a href="<?=DoLogOut()?>">Log Out</a></p>
</div>
<div class="left">
<!-- Login Form --><? }else{ ?>
<form method="post">
<label class="grey" for="email">Email:</label>
<input class="field" type="email" name="email" />
<label class="grey" for="password">Password:</label>
<input class="field" type="password" name="password" />
<input type="submit" class="bt_login" value="Log In" />
</form>
<? } ?>