声明会话变量 php


declaring session variables php

在PHP中使用任何会话变量之前,是否必须使用session_start()?我尝试了以下一段代码,一开始没有声明session_start(),它工作正常。

所以,现在我很困惑。请帮忙!!!

另外,我没有使用任何 _POST 美元或 _GET 美元将$uname传回家.php但它仍然如何工作?如果我们使用包含"主页.php",那么它是否将登录.php和主页.php视为同一页面?

// code login.php//
<?
require_once 'db_connect.php';
if (isset($_SESSION ['user_id']) && !empty($_SESSION ['user_id']))
{
    $u_name = $_SESSION['user_name'];
    include 'home.php';
}
else
{
//some stmt
}
?>
/*******home.php file ****/
<?php
require_once 'dbconnect.php';
$_SESSION['username'] = $u_name;
//echo $_SESSION['username'];
//blah blah
?>

如果你在php.ini中没有设置session.autostart,你肯定需要它。但那时你可能会知道。

你不叫db_connect.php吗?另外,我很确定您不会收到任何错误,会话只是空的。

如果您通过 php 包含文件,会话将保持活动状态(就像设置的任何其他变量一样)。如果要将此文件作为新请求访问,则需要设置 session_start()。这种行为是因为包含和要求的行为类似于将包含文件的代码移动到当前文件中,因为您将代码键入到一个文件中。

另外:你不需要两次要求dbconnect.php。

编辑:您询问了用作同一页面的两个文件 - 该页面是整个PHP代码完成后给出的输出。页面本身并不关心内部使用多少文件来生成它。

使用 session_start () 对于 php 中的每个会话都是强制性的。通过变量值传递不是使 POST 或 GET 相同的必要条件,因为已经存在值增量的情况。如果同一会话中的 ouver 值不是 null 或空白,则如果以相同的方式打开页面,则条件是错误的。

(!Isset($_SESSION ['user_id']) &&!​Is_Null($_SESSION['user_id']))

isset 检查这个需要是否为空! 之前,IF(!isset($_SESSION['user_id'])和第二种情况是检查它是否不为空,因为会话存在或不存在,如果设置了值,则为空。所以正确的观点是这样的:is_null($_SESSION ['user_id'])

重要的是,在登录页面中不包括但重定向到该页面。 在有header的情况下。

或者可以在一个页面中执行所有操作,但是在称为登录页面的页面上显示是不合法的。默认值为索引,即如果登录名停留在文件夹中,则将其放置在索引页和文件夹地址内。

会话仍然可以打开的原因是有时Web服务器没有意识到从系统缓存中删除了部分代码并将其加载。