php 如何判断$_SESSION 是不是有值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 如何判断$_SESSION 是不是有值相关的知识,希望对你有一定的参考价值。

我要判断 $_SESSION['aa'] 是不是已经有值了 应该怎么判断有没有什么函数
我是这么判断的 if($_SESSION['aa']==null)..... 不知道对不对

需要准备的材料分别是:电脑、php编辑器、浏览器。

1、首先,打开php编辑器,新建php文件,例如:index.php。

2、在index.php中,输入代码:

if (isset($_SESSION['aa']))

echo '有值';

else

echo '没有值';

3、浏览器运行index.php页面,此时会打印出$_SESSION['aa']有没有值的判断结果。

参考技术A 应该是:
if (isset($_SESSION['aa'])) ...

isset -- 检测变量是否设置
bool isset ( mixed var [, mixed var [, ...]] )
如果 var 存在则返回 TRUE,否则返回 FALSE。
参考技术B //判断值是否为空
if($_SESSION['aa'])
echo '如果值不为空 显示这里';

//如果为空

if(!$_SESSION['aa'])
echo '如果值为空 显示这里';
本回答被提问者采纳

为啥不会/如何对 PHP 会话变量进行排序而不是取消设置

【中文标题】为啥不会/如何对 PHP 会话变量进行排序而不是取消设置【英文标题】:Why won't/How can sort PHP session variables not unsetting为什么不会/如何对 PHP 会话变量进行排序而不是取消设置 【发布时间】:2014-02-13 13:52:24 【问题描述】:

似乎在我所有的尝试中,会话变量在被指示时都没有被取消设置。我试过的方法是:

session_unset();
session_destroy();
unset($_SESSION['name']);
$_SESSION = array();

和所有结合。我已经用 var_dump 验证了变量本身仍然具有该值。我尝试使用标头禁用浏览器缓存:

$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");  

(以及以上所有内容)但据我所知,这甚至不是问题。 唯一取消设置变量的是关闭浏览器。我了解会话 UID 存储在一个特殊的? cookie 但不知道如何直接操作/删除它,甚至不确定这是否是解决方案(尽管我有唯一的想法)。

完整代码..

索引.htm:

<html>
<?php
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");
?>

<a href = "new_user.htm"> New User</a><br>
<a href = "Login.htm"> User Login</a><br>
<a href = "search.htm"> Search</a><br>
<a href = "member.php"> Member</a><br>

</html>

Logout.htm(其中会话变量是 unsest 等):

<html>

<?php
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");

session_start();

unset($_SESSION['name']);
session_unset();
session_destroy();
$_SESSION = array();

?>
Logout Succesful.<br><br>
<a href = "index.htm">index</a>

</html>

member.php(会话变量被转储的地方):

<?php
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");

session_start();

if(!isset($_SESSION['user']))


$_SESSION = array();
session_destroy();
header("location:index.htm");
//echo $_SESSION['user'];


?>

<html>
<body>

<?php 
$uu = $_SESSION['user'];
var_dump($uu);
?>

Main User Page.++Code++
(seperate pages atm for ease+speed of writing,<br>
embedded stuff would take a bit longer)<br><br>
<a href = "addservice.php"> Add Service </a><br>
<a href = "additem.php"> Add Item </a><br>
<a href = "search.htm"> Search </a><br><br>
<a href = "logout.htm"> Logout </a><br><br>

</body>
</html>

登录.php:

<html>

<?php

$username="root";
$password="";
$database="test_db";
$con=mysqli_connect("localhost",$username,"",$database);
if (mysqli_connect_errno())
  
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  

?>

<form action="log_in.php" method="post">
UserName: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>

<input type="submit"><br>
</form>

<?php

?>

</html>

这导致log_in.php(其中设置会话变量):

<?php
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");

$username="root";
$password="";
$database="test_db";
$con=mysqli_connect("localhost",$username,"",$database);

if (mysqli_connect_errno())
 
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 

$username_l = $_POST['username'];
$pword_l = $_POST['password'];

$q_usercheck = "SELECT * FROM user WHERE User_Name='$username_l'";
$q_pwcheck = "SELECT * FROM user WHERE User_Name = '$username_l' and Password = '$pword_l'";

$uc_result = mysqli_query($con, $q_usercheck);
$uc_count = mysqli_num_rows($uc_result);

$pc_result = mysqli_query($con, $q_pwcheck);
$pc_count = mysqli_num_rows($pc_result);

if ($uc_count != 1)

echo "<br>invalid username<br>";
     var_dump($uc_result);


if ($uc_count == 1)


 if ($pc_count == 1)
            
              //echo "Login Successful +code";
              session_start();                
              $_SESSION[user] = $username_l;
              header("location:member.php");
            

                  

else

    echo "<br>Invalid password for username + code<br>";
     var_dump($username_l);

    

mysqli_close($con);

?>
<br>
<a href = "index.htm">index</a>;

【问题讨论】:

浏览器缓存与会话变量无关,它们在服务器上。 提供unsets 变量和var_dumps 变量的完整代码 顶部的所有东西都应该工作。请张贴SSCCE 说明问题。 session_destroy 足以摧毁整个会话。可能还有其他原因导致问题。如果您共享完整的代码和输出会更好 好的,我已经添加了来自各种相关脚本的所有代码.. 【参考方案1】:

我想你可能错过了

session_start(); 

将其添加到您的代码中并尝试这样的事情(按此顺序):

session_start(); 
unset($_SESSION['name']); 
session_unset(); 
session_destroy(); 

要清除所有会话变量,这对我一直有效:

session_start ();
foreach ($_SESSION as $key=>$val)
    unset($_SESSION[$key]);

【讨论】:

以上是关于php 如何判断$_SESSION 是不是有值的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么判断一个接受到的参数是不是为空

php 中 判断数组中是不是有值

php在服务器中获取不到session的值

详解图形图像技术如何生成验证码?

如何在php中检查mysql select语句结果是不是有值?

php 如何防止表单重复提交呢