PHP会话不工作,不会给出任何错误

时间:2017-01-01 04:08:55

标签: php session

在我的login.php中我有

<?php 

require_once('connection.php');
$loginErr = "";
if(isset($_POST['login']))
{
  $email = mysqli_real_escape_string($conn,$_POST['email']);
  $pass = mysqli_real_escape_string($conn,$_POST['password']);
  $sel_user = "SELECT * FROM register WHERE email='$email' AND password='$pass'";
  $run_user = mysqli_query($conn, $sel_user);
  $check_user = mysqli_num_rows($run_user);
  if($check_user>0){
    $_SESSION['email'] = $email;
    header('Location: '.'index.php');
  }
  else {
    $loginErr = "Email or password is not correct, try again!";
  }
}
?>

基本上,如果用户名和密码匹配,则会创建会话&#34; email&#34;并重定向到索引页面。

在我的导航栏中,这对于索引和其他所有页面都是通用的。我有

<ul class="nav navbar-nav navbar-right">
 <?php if(!isset($_SESSION['email'])) { ?>
 <li><a href="login">Login</a></li>    
<li><a href="register.php">Register</a></li>    
<?php } else { ?>
<li><a href="logout.php">Logout</a></li>   
<?php } ?>
</ul>

基本上,如果没有会话电子邮件,则会显示登录和注销,如果设置了会话电子邮件,则会显示注销。

但即使用户已登录或退出,它也始终显示登录和注册按钮。

我的退出页面

<?php
session_start();
session_unset($_SESSION['email']);
session_destroy();
header("Location: index.php");
?>

我正在尝试在用户登录和登录时显示注销按钮,不注册时注册按钮。但是我无法在代码中找到错误,也没有给出任何错误。它只是显示登录注册按钮。

感谢。

编辑1:

忘记提及Session start在connection.php文件中

编辑2:

在session_start();我已经登录第一行登录页面和主页但是同样的问题

编辑3: 当我在会话集之后转换会话值时,我得到了电子邮件的会话值,但是当我在主页上转换为var时,我得到未定义索引:电子邮件

1 个答案:

答案 0 :(得分:0)

您必须start_Session();connection.php。或者你可以从这里开始......

<?php

require_once('connection.php');
$loginErr = "";
if(isset($_POST['login']))
{
  $email = mysqli_real_escape_string($conn,$_POST['email']);
  $pass = mysqli_real_escape_string($conn,$_POST['password']);
  $sel_user = "SELECT * FROM register WHERE email='$email' AND password='$pass'";
  $run_user = mysqli_query($conn, $sel_user);
  $check_user = mysqli_num_rows($run_user);
  if($check_user>0){
    session_start();
    $_SESSION['email'] = $email;
    header('Location:index.php');
  }
  else {
    $loginErr = "Email or password is not correct, try again!";
  }
}
?>

你的logout.php必须是这样的......

<?php
//session_start();  no need to start here
session_unset($_SESSION['email']);
session_destroy();
header("Location: index.php");
?>

主页上没有start_session。因为会话总是一次启动。并尝试以下代码。

<ul class="nav navbar-nav navbar-right">
 <?php if(isset($_SESSION['email'])) { ?>
  <li><a href="logout.php">Logout</a></li>  
<?php } else { ?>
<li><a href="login">Login</a></li>    
<li><a href="register.php">Register</a></li>    
<?php } ?>
</ul>