统计某页访问次数的php代码,注意学习下文本缓存的用法。
/**
@统计页面浏览次数 文本缓存
@site http://www.
*
*/
private function visit($id)
{
if (isset()($GLOBALS['cfg_safe']['visit-article']) && $GLOBALS['cfg_safe']['visit-article'])
{
$file = SYS_PATH . 'cache/visit-article.txt';
if (!file_exists($file))
{
file_put_contents($file, ',' . $id);
}
else if ((time() - filectime($file)) < $GLOBALS['cfg_safe']['visit-article'])
{
file_put_contents($file, ',' . $id, FILE_APPEND);
}
else
{
$string = file_get_contents($file);
if ($string != '')
{
$temp = explode()(',', $string);
foreach ($temp as $row)
{
if (empty($row))
continue;
$this->mysql->update('UPDATE `pcb_article` SET `visit` = `visit` + 1 WHERE `id` = ' . $row . ' LIMIT 1');
}
}
unlink($file);
}
}
}
今天,我们开始学习php中字符串的用法。
一、了解php字符串
php中的字符串变量,用来存储并处理文本片段。
在创建字符串之后,即可使用这个字符串了。
比如,下面的例子。
例1:
二、php字符串变量的定义
1、最常用的方式
用双引号或单引号引起来的字符,比如:
例2:
说明:
双引号包起来的字符串可以不需要连接符而直接插入变量,而单引号不会对字符串内的变量格式做处理。
如果要定义拼接变量的字符串,用单引号会更快一些。
如果定义纯粹字符串,不拼接不包含变量的话,用双引号倒是效率高那么一点点。
2、字符串变量的内插
双引号包起来的字符串内可以直接插入变量,比如直接在要插入变量的位置写入变量名或者用大括号把变量名包起来。
例3:
如果不使用直接插入变量的方法定义字符串,可以用点号连接多个字符串。
例4:
这里说一个小技巧,当使用 echo进行字符串输出时,如果字符串使用拼接方式组成,可以使用逗号来连接需要拼接的各部分字符串和变量,比如
echo '',"www",$str,"beijing";
据说这样输出速度要快一些,什么原因呢,echo可以接受多个参数,并直接按顺序输出,实际上逗号不是拼接字符串,而是把不同字符串和变量作为参数传送给echo命令。
3、多行字符串 heredocument
例5:
'ok',""
I will
{$str1}
STR;
其中三个小于号代表多行字符串的输入,STR是字符串界定符,界定符的名字可以自己定义,两个界定符之间的内容就是多行字符串。
其中的单引号双引号可以直接输出而不必转义,当然里面也可以直接插入变量,输出是会自动替换变量值的。
今天的内容,就介绍到这里了。下一节为大家介绍由推出的php入门教程第4讲:php的运算符。
原创文章,未经授权,禁止转载。
我们以前学习过php将session保存入memcache的实现代码,今天开始学习session保存入数据库的代码。
<?php
/*
@filename: session.class.php
@description: 数据库保存在线用户session,实现在线用户功能。
@notice: session过期时间一个小时,因为我们的站点是使用cookie(有效时间是1小时)登录。
只记录用户登录的时间,而不是刷新一次更新一次。删除数据库中session记录的动作发生在用户超时后执行这个文件或正常退出(session_destory)
@database: database:sessions field:sessionid(char32),uid(int10),last_visit(int10)
*/
class session {
private $db;
private $lasttime=3600;//超时时间:一个小时
function session(&$db) {
$this->db = &$db;
session_module_name('user'); //session文件保存方式,这个是必须的!除非在Php.ini文件中设置了
session_set_save_handler(
array(&$this, 'open'), //在运行session_start()时执行
array(&$this, 'close'), //在脚本执行完成或调用session_write_close() 或 session_destroy()时被执行,即在所有session操作完后被执行
array(&$this, 'read'), //在运行session_start()时执行,因为在session_start时,会去read当前session数据
array(&$this, 'write'), //此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行
array(&$this, 'destroy'), //在运行session_destroy()时执行
array(&$this, 'gc') //执行概率由session.gc_probability 和 session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc
);
session_start(); //这也是必须的,打开session,必须在session_set_save_handler后面执行
}
function unserializes($data_value) {
$vars = preg_split(
'/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\|/',
$data_value, -1, PREG_SPLIT_NO_EMPTY |
PREG_SPLIT_DELIM_CAPTURE
);
for ($i = 0; isset()($vars[$i]); $i++) {
$result[$vars[$i++]] = unserialize($vars[$i]);
}
return $result;
}
function open($path, $name) {
return true;
}
function close() {
$this->gc($this->lasttime);
return true;
}
function read($SessionKey){
$sql = "SELECT uid FROM sessions WHERE session_id = '".$SessionKey."' limit 1";
$query =$this->db->query($sql);
if($row=$this->db->fetch_array($query)){
return $row['uid'];
}else{
return "";
}
}
function write($SessionKey,$VArray) {
require_once(MRoot.DIR_WS_CLASSES .'db_mysql_class.php');
$db1=new DbCom();
// make a connection to the database... now
$db1->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
$db1->query("set names utf8");
$this->db=$db1;
$SessionArray = addslashes()($VArray);
$data=$this->unserializes($VArray);
$sql0 = "SELECT uid FROM sessions WHERE session_id = '".$SessionKey."' limit 1";
$query0 =$this->db->query($sql0);
if($this->db->num_rows($query0)<=0){
if (isset($data['webid']) && !empty($data['webid'])) {
$this->db->query("insert into `sessions` set `session_id` = '$SessionKey',uid='".$data['webid']."',last_visit='".time()."'");
}
return true;
}else{
/*$sql = "update `sessions` set ";
if(isset($data['webid'])){
$sql .= "uid = '".$data['webid']."', " ;
}
$sql.="`last_visit` = null "
. "where `session_id` = '$SessionKey'";
$this->db->query($sql); */
return true;
}
}
function destroy($SessionKey) {
$this->db->query("delete from `sessions` where `session_id` = '$SessionKey'");
return true;
}
function gc($lifetime) {
$this->db->query("delete from `sessions` where unix_timestamp(now()) -`last_visit` > '".$this->lasttime."'");
return true;
}
}
?>
附:完整源码下载。