使用过程化PHP处理会话
我想在本页专门介绍如何使用过程化php处理会话 我将从我如何开始大部分项目开始:使用过程化PHP处理会话,php,session,Php,Session,我想在本页专门介绍如何使用过程化php处理会话 我将从我如何开始大部分项目开始: session_name('Easy_App'); session_start(); if (!isset( $_SESSION['ip'] )){ $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; } if (!isset( $_SESSION['created'] )){ $_SESSION['created'] = time(); } if (!iss
session_name('Easy_App');
session_start();
if (!isset( $_SESSION['ip'] )){
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
if (!isset( $_SESSION['created'] )){
$_SESSION['created'] = time();
}
if (!isset( $_SESSION['overall_views'] )){
$_SESSION['overall_views'] = 1;
}
else {
$_SESSION['overall_views']++;
}
if (!isset( $_SESSION['username'] )){
$_SESSION['username'] = "";
}
if (!isset( $_SESSION['logged_in'] )){
$_SESSION['logged_in'] = 0;
}
/*A quick method to keep pageviews to < 5 pages per 1 second per session*/
if (!isset($_SESSION['first_action'])){
$_SESSION['first_action'] = time();
}
$first_action = $_SESSION['first_action'];
if (!isset( $_SESSION['action'] )){
$_SESSION['action'] = 1;
}
else{
$_SESSION['action']++;
}
$action=$_SESSION['action'];
if ($action>=5){
unset($_SESSION['action']);
unset($_SESSION['first_action']);
if((time() - $first_action) <=1){
exit("Please Don't Hammer My Site ");
}
}
因此,我们有一个出发点:
使用几个常用参数开始会话
在最后几行中,防止临时用户敲打。
我的问题是:
你会从这里去哪里?如果您能改进上述代码,或者简单介绍一下如何使用过程化php处理会话,我们将不胜感激 如果您试图阻止Hammer或FLOODING,那么您的代码将无法工作如果用户不保留cookie,那么您的会话将毫无用处,脚本将是一种浪费。。。您应该尝试使用memcache、mongoDB或redis等存储系统的更好方法 见:。。。。这一点以前已经得到了回答 编辑1 我不确定你想要什么,但我希望这有帮助 目标 删除重复的isset 删除重复的if语句 创建单个函数以获取和设置$\u会话 尝试将所有内容都变成函数并隐藏所有变量 最终代码
session_start ();
include("procedural.function.php");
__SESSION ( 'ip', $_SERVER ['REMOTE_ADDR'] );
__SESSION ( 'created', time () );
__SESSION ( 'overall_views', 1 );
__SESSION ( 'overall_views', "++" );
__SESSION ( 'username', "" );
__SESSION ( 'logged_in', 0 );
__SESSION ( 'first_action', time () );
__SESSION ( 'action', "++" );
if (__SESSION ( 'action' ) >= 5) {
__UNSET ( 'action' );
__UNSET ( 'first_action' );
if ((time () - __SESSION ( 'first_action' )) <= 1) {
exit ( "Please Don't Hammer My Site " );
}
}
第一个改进是在格式方面。那是一堵密密麻麻的文字墙。“学会爱上回车键吧!”幸福女神说道,我的朋友@是的,先生!不需要时间机器。简洁和清晰的优点。我认为程序化php意味着没有OOP。所以那个Memcache类可能不是他想要的。@HappyTimeGopher我只是给出了我的意见。。据我所知,如果他的目的是防止垃圾邮件,或者他称之为“锤子”,那么整个剧本都是无用的……好吧。是否使用cookies不是问题的关键。您将如何使用过程化php处理会话?顺便说一句-每个项目不一定都需要memcached。谢谢你的否决票。@DudeSolutions:你应该解释一下你所说的过程化php是什么意思,更好的是,包括为什么你要限制自己使用它。@Baba读起来像诗一样!现在我开始想知道为什么人们只想把自己限制在OOP-PHP:P
function __SESSION($var, $value = null) {
if ($value === null) {
return isset ( $_SESSION [$var] ) ? $_SESSION [$var] : null;
} else if ($value === "++") {
isset ( $_SESSION [$var] ) ? $_SESSION [$var] ++ : $_SESSION [$var] = 0;
return $_SESSION [$var];
} else {
isset ( $_SESSION [$var] ) ? $_SESSION [$var] = $value : null;
return $value;
}
}
function __UNSET($var) {
unset ( $_SESSION [$var] );
}