我可以在我的标题中包含我的session_functions.php然后从body.php调用一个函数

时间:2012-02-08 03:08:21

标签: php session

我的header.php看起来像这样。

include("sessions.php");
<h1>...

我的sessions.php页面如下所示

session_start();

function validate_user()
{
    //validate user
}

我的身体里有一个user_class.php。我可以调用validate_user(),因为我已经将它包含在页面中,或者我必须将它包含在我的user_class.php和使用会话函数的每个.php中吗?

3 个答案:

答案 0 :(得分:0)

我避免混合程序代码和函数定义。

相反,请将您的程序代码(即session_start())移至单独的文件,例如bootstrap.php,并将其包含在页面顶部。

要确保包含在其他文件中定义的函数和类,请使用require_once。这样,您可以安全地包含所需的文件,而不会遇到重新定义错误。

还有一件事,session_start()应该在将任何内容发送到浏览器之前调用。为安全起见,请将其放在脚本的最顶层。

例如

bootstrap.php中

<?php
// for development only
ini_set('display_errors', 'On');
error_reporting(E_ALL);

session_start();
require_once 'functions.php';

的functions.php

<?php
function validate_user()
{
    //validate user
}

的header.php

<h1>...

user_class.php

<?php
require_once 'functions.php';

class User { ...

some_page.php

<?php
require_once 'bootstrap.php';
?>
<!DOCTYPE html>
<html>
    <head>...</head>
    <body>
        <?php include 'header.php' ?>
    </body>
</html>

答案 1 :(得分:0)

如果你的user_class.php依赖于包含的sessions.php,你可能想在你的user_class.php的顶部放一个require_once "sessions.php";。另外,我建议使用include_once而不是include

答案 2 :(得分:0)

简短的回答,是的。你的要求基本上是包括的整个目的。使用包含可以将代码划分为代表功能单元的块(文件),例如会话处理。正如其他一些海报所建议的那样,你的一个块可能是你的初始化代码。

想象一下,将文件简单地内联到include / require语句中,替换它。在这个模型中,只要函数出现在你正在使用它的点之上,你就可以了。

在一天结束时,您更喜欢分割代码,但是像Gang of Four的经典“设计模式”这样的书可以帮助您做出关于如何设计代码以便最大程度地轻松实现维护和重复使用。