Php 如何使用$\u会话或js计时器自动注销?
我读过这个话题,但不知道从哪里开始 第一步是什么?我有一个首先被调用的代码:rclayout.phpPhp 如何使用$\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
<!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; ?>