Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用$\u会话或js计时器自动注销?_Php_Javascript_Symfony1 - Fatal编程技术网

Php 如何使用$\u会话或js计时器自动注销?

Php 如何使用$\u会话或js计时器自动注销?,php,javascript,symfony1,Php,Javascript,Symfony1,我读过这个话题,但不知道从哪里开始 第一步是什么?我有一个首先被调用的代码:rclayout.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&g

我读过这个话题,但不知道从哪里开始 第一步是什么?我有一个首先被调用的代码:rclayout.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <?php include_http_metas() ?>
    <?php include_metas() ?>
    <?php include_title() ?>
    <link rel="shortcut icon" href="/favicon.ico" />
    <?php use_stylesheet('rainbow.css');  ?>
    <?php use_javascript('rainbow.js'); ?>
    <?php include_stylesheets(); ?> 
    <?php include_javascripts(); ?>
</head>
<body onload='ax_startup();'>   
<center>
    <?php
       echo "<div id='div_main_container_rc'>"; 
    ?>
<div id='div_header_container_rc'>
   <?php include_component('profile','header'); ?>
</div>
    <?php       
            echo "<div id='div_content_container_rc'>";
            echo $sf_content;
            echo "</div>";
            echo "<div id='div_footer'>";
    ?>
   //show a footer menu here
</div>  
</div> 
</center>
 </body>
 </html>
我必须从哪里开始我将如何做?我没有看到在任何地方设置会话 我是否配置php.ini文件?如果是,如何配置?或者我是通过一个会话来实现这一点的

请帮忙?
谢谢

只要在需要时使用
session\u destroy()
销毁会话变量即可。如果您不知道设置了哪些会话变量,您可以使用类似的方法将它们打印出来

 <?php 
 session_start(); 
 Print_r ($_SESSION);
 ?>

如果你想注销一个用户,你需要
unset()
用户id也可以查看php手册


(阅读说明)

默认情况下,PHP使用PHP会话机制。此会话通过
工厂.yml
配置。默认配置如下所示:

  user:
    class: myUser
    param:
      timeout:         1800
      logging:         %SF_LOGGING_ENABLED%
      use_flash:       true
      default_culture: %SF_DEFAULT_CULTURE%
因此,默认情况下,会话将在1800秒(=30分钟)后自动超时

您自己的
factories.yml
覆盖Symfony中的默认
factories.yml
(可在
/lib/vendor/Symfony/lib/config
中找到)。在
工厂中
.yml
用户工厂的定义如上所述。
因此,如果该配置对您来说足够,那么您不必做任何事情。如果要更改超时,可以覆盖自己的工厂中的相应行。yml
。在这种情况下,您可以将以下行添加到自己的
factories.yml`:

  user:
    param:
      timeout:         900  # log out after 15 minutes
哦,我真的强烈建议您在
\u header.php
中不要查看逻辑。所有带有
if
/
else
结构的PHP代码应位于
组件.class.PHP
中,te视图(
\u header.PHP
)应仅为视图数据

比如说:

  user:
    class: myUser
    param:
      timeout:         1800
      logging:         %SF_LOGGING_ENABLED%
      use_flash:       true
      default_culture: %SF_DEFAULT_CULTURE%
控制器:

// components.class.php
public function executeHeader() {

    // code here...
    $this->isAuthenticated = true/false;
} 
视图:


...
...

更干净,它将视图与逻辑分离…:-)

非常感谢。请看顶部我的工厂档案。我可以添加你的代码吗?或者我该如何配置我的代码?据我所知,用户是一个工厂,所以我怎么知道我必须给类取什么名字???谢谢谢谢你,请看我更新的工厂文件..我做了300所以不必等待30/15分钟来测试这个。。。你能解释一下超时后会发生什么吗?我打开了我的网站,一个用户登录了,但什么都没发生??我仍然可以继续在网站上,因为我仍然登录??感谢如果在超时时间内未向Web服务器发出任何请求,则会话将过期。之后的第一个请求将被赋予一个新会话,而不设置身份验证属性。(这只是默认的PHP会话行为,所以您可能只需要在谷歌上搜索一下即可)。。。
// components.class.php
public function executeHeader() {

    // code here...
    $this->isAuthenticated = true/false;
} 
 <?php if ($isAuthenticated): ?>
 ...
 <?php enif; ?>
 <?php if (!$isAuthenticated): ?>
 ...
 <?php enif; ?>