标签归档:php

php cookie设置

一: 设置cookie

二: 设置cookie时的注意事项

三: setcookie举例

四: cookie的一些特点

五: 接收和处理cookie

六: 删除cookie

七: 使用cookie的限制

——来源与互联网,由blankyao整理

———————————-DESCRIPTION——————————————————-

一: 设置cookie

使用cookie前必须设置cookie.

函数原型:int setcookie(string name,string value,int expire,string path,string domain,int secure)

其中,除name外,所有的参数都是可选的,可以用空的字符串表示未设置.

属性value: 用来指定值.

属性path: 用来指定cookie被发送到服务器的哪一个目录路径下.

属性domain:能够在浏览器端对cookie的发送进行限定.

expire参数:用来指定cookie的有效时间,它是一个标准的Unix时间标记.

可以用time()或者mktime()函数取得,以秒为单位.

secure参数:表示这个cookie是否通过加密的HTTPS协议在网络上传输.

二: 设置cookie时的注意事项

在同一个页面中设置cookie,实际上是按从后往前的顺序进行的.如果要先删除一个cookie,再写入一个cookie,则必须先写写入语句,再写删除语句.否则会出现错误.

三: setcookie举例

简单的: setcookie(”mycookie”,”value_of_mycookie”);

带失效时间的: setcookie(”withExpire”,”Expire_in_1_hour”,time()+3600);

什么都有的:setcookie(”FullCookie”,”Full__value”,time+3600,”/forum”,”http://www.128kj.com/”,1);

四: cookie的一些特点

cookie是面向路径的.缺省path属性时,WEB服务器页会自动传递当前路径给浏览器.指定路径会强制服务器使用设置的路径.

在一个目录页面里设的cookie在另一个目录的页面里是看不到的.

五: 接收和处理cookie

1.设置
<?
$value = ‘i like php’;
$value1= ‘i hate php’;

setcookie(”TestCookie”, $value,time()+3600); /* expire in 1 hour */
setcookie(”TestCookie1″, $value1);

?>
<a href=”testcookie.php”>输出cookie</a> <br>
<a href=”deletecookie.php”>删除名为Testcookie的cookie</a>

2.处理
<?php
// 输出单独的 cookie
echo $_COOKIE["TestCookie"] . “<br>”;

// 另一个调试的方法就是输出所有的 cookie
print_r($_COOKIE);
echo “<BR>”.count($_COOKIE); //cookie的数量

3、删除
<?php
setcookie(”TestCookie”, “”, time() – 3600);

//输出testcookie
if (!empty($_COOKIE["TestCookie"]))
echo “Testcookie值为:”.$_COOKIE["TestCookie"] . “<br>”;
else
echo “Testcookie被注销。<br>”;
//输出testcookie1
echo “testcookie1值为:”.$_COOKIE["TestCookie1"] . “<br>”;
//输出所有cookie

print_r($_COOKIE);
?>

当一个Cookie被删除后,它的值在当前页仍然有效,刷新后才能生效。

六: 删除cookie

(1)调用只带有name参数的setcookie();

(2)使失效时间为time()或time-1;

七: 使用cookie的限制

(1) 必须在HTML文件的内容输出之前设置;

(2)不同的浏览器对cookie的处理不一致,使用时一定要考虑;

(3)客户端的限制,比如用户设置禁止cookie,则cookie不能建立;

八: 一个具体的例子,希望大家对cookie有更加深刻的认识

<?php

//cookie.php

if(!isset($flag)) {
setcookie(”mycookie”,”this my cookie!”);
header(”location:cookie.php?flag=1″);
exit;
}
?>

php+iis 的最简洁安装方法

下载PHP版本。可以去 http://www.php.net 的官方站点下载

解压c:php5文件夹中,用记事本打开文件php.ini-dist,修改如下内容后“另存为…”php.ini文件

(1)查找到safe_mode = 段落,将safe_mode = Off修改为safe_mode = On
(2)查找到expose_php = On段落,将expose_php = On修改为expose_php = Off
(3)查找到display_errors = On段落,将display_errors = On修改为display_errors = Off
(4)查找到extension_dir = 段落,设置动态库扩展的路径,如extension_dir = c:php5ext
(5)查找到 ; cgi.force_redirect = 1段落,修改为 cgi.force_redirect = 0

提示:(4)和(5)是必须做的。记着要另存为php.ini

4. 将编辑好的php.ini文件剪切到Windows安装文件夹下(如:C:Winnt 或 C:

5. 在IIS中,选择要使用PHP的站点,右键菜单中选择“属性”,选择“主目录”标签,在该界面中点“配置”,添加或重新编辑php扩展的“应用程序扩展名映射”,可执行文件选择为C:php5php5isapi.dll,扩展名为php,确定应用后退出IIS配置

6. 停止IIS的WEB站点,并重新启动该站点。

这样就可以了。

PHP5时间不正确解决方法

<?
     echo date("Y-m-d H:i:s");
?>
结果自己测试果然是相差8小时。
     
      后来经过在论坛上找资料,结果终于解决,在php5以及起以上的版本,要输出本地的时间(限中国),可以这么写代码:
<?php
      date_default_timezone_set('Asia/Shanghai');
      echo date('Y-m-d H:i:s');
?>

也可以这样写代码:
<?php
      date_default_timezone_set('Asia/Chongqing');
      echo date('Y-m-d H:i:s');
?>

  从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的   
    
  也就是显示的时间(无论用什么php命令)都是格林威治标准时间  
   
  和我们的时间差了正好8个小时,有以下3中方法可以恢复正常的时间  
   
  1,最简单的方法就是不要用php5.1以上的版本,(嘿嘿,Fufay阴笑。)  
   
  2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的  
  上面加上   date_default_timezone_set   (XXX);  
   
  3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone   去掉前面的分号  
  =   后面加XXX,重启http服务(如apache2或iis等)即可  
   
   
  关于XXX,大陆内地可用的值是:gbk,Asia/Chongqing   ,Asia/Shanghai   ,Asia/Urumqi   (依次为重庆,上海,乌鲁木齐),gbk   就可以了。呵呵。

php时间截取,时间判断函数,不同时间显示不同提示

下面这个也是自己胡乱搞的,是用自己的笨办法的,可能还有很高效的方法实现,但是我水平太低了,也只能写了下面的这个代码,反正功能可以实现了就行了。。。。呵呵
<?
//获取时间
$t=date("H:i:s");
$nowtime=date("Y-m-d H:i:s", time());
if ($t > "00:00:00" &&  $t < "04:00:00" )
 {
echo "现在是$nowtime 凌晨喔 要注意身体!";
 }
elseif ( $t > "04:00:00" &&  $t < "07:00:00")
{
echo "现在是$nowtime 就要天亮了还不睡觉呀!";
}
elseif ( $t > "07:00:00" &&  $t < "10:30:00")
{
echo "现在是$nowtime 上午好 一天好心情哦!";
}
elseif ( $t > "10:30:00" &&  $t < "13:30:00")
{
echo "现在是$nowtime 中午了 该酒足饭饱了吧?";
}
elseif ( $t > "13:30:00" &&  $t < "17:00:00")
{
echo "现在是$nowtime 下午了 想想晚饭吃什么吧!^_^ ";
}
elseif ( $t > "17:00:00" &&  $t < "19:00:00")
{
echo "现在是$nowtime 吃好晚饭了吧?到屋檐人家逛逛吧!^_^ ";
}
elseif ( $t > "19:00:00" &&  $t < "22:00:00")
{
echo "现在是$nowtime 亲爱的,晚上好!^_^  ";
}
else
{
echo "现在是$nowtime  已经很晚了,考虑休息了哦";
}
?>

如果需要更多的不同的提示,安装上面的时间改下,添加进去就可以了

PHP的日期时间函数date()使用

1,年-月-日
echo date('Y-m-j');
2007-02-6

echo date('y-n-j');
07-2-6

大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。

echo date('Y-M-j');
2007-Feb-6

echo date('Y-m-d');
2007-02-06

大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。

echo date('Y-M-j');
2007-Feb-6

echo date('Y-F-jS');
2007-February-6th

大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。

小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。

2,时:分:秒

默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。

echo date('g:i:s a');
5:56:57 am

echo date('h:i:s A');
05:56:57 AM

小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。

echo date('G:i:s');
14:02:26

大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数

小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。

3,闰年、星期、天

echo date('L');
今年是否闰年:0

echo date('l');
今天是:Tuesday

echo date('D');
今天是:Tue

大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。

echo date('w');
今天星期:2

echo date('W');
本周是全年中的第 06 周

小写w表示星期几,数字形式表示
大写W表示一年中的星期数

echo date('t');
本月是 28 天

echo date('z');
今天是今年的第 36 天

小写t表示当前月份又多少天
小写z表示今天是本年中第几天

4,其他

echo date('T');
UTC
大写T表示服务器的时间区域设置

echo date('I');
0
大写I表示判断当前是否为夏令时,为真返回1,否则为0

echo date('U');
1170769424
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。

echo date('c');
2007-02-06T14:24:43+00:00
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。

echo date('r');
Tue, 06 Feb 2007 14:25:52 +0000
小写r表示RFC822日期。

解决MYSQL字符乱码,将字符转换为 UTF-8,gbk

要将字符写入为  UTF-8 使用下面方法

$_mylink = _connect($_host, $_user, $_pass);
mysql_query("SET NAMES 'UTF-8'");
 

数据库字符集为utf-8
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

$db->query("SET NAMES UTF8");

PHP视频教程下载

ed2k://|file|%E4%B8%AD%E5%8E%9F%E5%A4%A7%E5%AD%A6%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B1.wmv|94799583|6B0F489F5C6A635FD1722C6E69FA9BA1|h=LZUFT2XDJBP3FYDMSM7Y2DYALD4LGYWI|/

ed2k://|file|%E4%B8%AD%E5%8E%9F%E5%A4%A7%E5%AD%A6PHP%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B2.wmv|93701035|A26CEE9F1432F9CEB2CF957B7818DDAC|h=AUG53DQA54JSQQBELCBU2GURFOIFRCSY|/

ed2k://|file|%E4%B8%AD%E5%8E%9F%E5%A4%A7%E5%AD%A6PHP%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B3.wmv|109245507|B912816F6D12C1D7C80E2B5959EBDFFD|h=EB24TXYC6MTHIACK5K4EPL6VSMNFMTPA|/

ed2k://|file|%E4%B8%AD%E5%8E%9F%E5%A4%A7%E5%AD%A6PHP%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B4.wmv|99272117|D4A258142A9A4B49F5CF26488EBA086C|h=JZWW4DW6WXKWWQFW5CYSAKH24JQ3WTQG|/

ed2k://|file|%E4%B8%AD%E5%8E%9F%E5%A4%A7%E5%AD%A6PHP%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B5.wmv|76984063|FDD49C2622FA5C666A820801F77314C0|h=KBKKJDYRIKTBUXAP6S3AW2NSFEKO52ML|/

中文名称:中原大学PHP视频教程
地区:台湾
语言:普通话
简介
主讲孙仲岳,比较风趣。听着年龄也不大。所以发上来跟大家分享。一共五课,每课大约两小时。第一课是介绍PHP和配置环境,第二课是介绍PHP基本语法,第三课是介绍PHP+,第四课和第五课是讲实例,我还没看……呵呵。感觉对于想学PHP但又不知从和学起且没有多少编程经验的人比较好。有基础或者有编程经验的人PHP还是比较容易上手的。
PS:是台湾的中原大学。

网上找来的,还有个1.52G 的视频教程,一起分享。。

547

这几天一直沉浸在修改那个小插件中

           上次落伍上看到有个BO-BLOG的博客的自动更新插件,感觉一个很不错的东西,就是设置关键词自动更新,但是那个程序人家发布的只是一个很粗糙的程序。虽然是一个才两三个文件的程序,但是对于我来说都很难呢,这几天一直都在改这个程序想改改好,但是我水平确实太差了都。要一个函数的使用都要找很多资料,后来完善了一个功能,就是日志的归档可以联系起来的,昨天下午一直在弄那个TAGS标签能记录和联系起来,但是好像有点困难、主要是自己水平太懒了,不知道怎么弄弄,如果叫真的PHP很熟悉的那些人做的话,估计没几分钟就可以完成的事情了。
    还有就是多文章内容的代码进行了过滤,这个昨天又找正则,又弄了好久。。。虽然知道怎么弄了,但是TAG标签不知道怎么弄弄,如果标签弄好就差不多了,本来还可以分类,就是对采集到的内容自动进行栏目分类,但是对于我来说这个难度就有点高了。。自知之明。。。o(∩_∩)o…
    前面的时候没有自己好好的学,现在用起来真是太不舒服了,真是太辛苦了。。。。

php正则表达式大全,正则表达式写法

相同优先级的从左到右进行运算,不同优先级的运算先高后低。
各种操作符的优先级从高到低如下: 操作符
 描述 
  转义符 
(), (?:), (?=), []  圆括号和方括号 
*, +, ?, {n}, {n,}, {n,m}  限定符 
^, $, anymetacharacter  位置和顺序 
|  “或”操作 

全部符号解释 字符
 描述 
  将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'
' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("。 
^  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '
' 或 '
' 之后的位置。 
$  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '
' 或 '
' 之前的位置。 
*  匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 
+  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 
?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 
{n}  n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 
{n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 
{n,m}  m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 
?  当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。 
.  匹配除 "
" 之外的任何单个字符。要匹配包括 '
' 在内的任何字符,请使用象 '[.
]' 的模式。 
(pattern)  匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在vb script 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '(' 或 ')'。 
(?:pattern)  匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 
(?=pattern)  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,' (?=95|98|NT|2000)' 能匹配 " 2000" 中的 "" ,但不能匹配 " 3.1" 中的 ""。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 
(?!pattern)  负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 
x|y  匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 
[xyz]  字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 
[^xyz]  负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 
[a-z]  字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 
[^a-z]  负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 
  匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 
B  匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 
cx  匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 
d  匹配一个数字字符。等价于 [0-9]。 
D  匹配一个非数字字符。等价于 [^0-9]。 
f  匹配一个换页符。等价于 x0c 和 cL。 
  匹配一个换行符。等价于 x0a 和 cJ。 

  匹配一个回车符。等价于 x0d 和 cM。 
s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f

v]。 
S  匹配任何非空白字符。等价于 [^ f

v]。 
  匹配一个制表符。等价于 x09 和 cI。 
v  匹配一个垂直制表符。等价于 x0b 和 cK。 
w  匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 
W  匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 
xn  匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。. 
um  匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)1' 匹配两个连续的相同字符。 
  标识一个八进制转义值或一个向后引用。如果
之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 
m  标识一个八进制转义值或一个向后引用。如果
m 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果
m 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则
m 将匹配八进制转义值 nm。 
ml  如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 
un  匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。 

Apache 2.2.4 + PHP 5.2.0 + MySQL 5.0.27 + Zend Optimizer 3.2.0环境详细配置说明

  这个配置教程是我从DZ上找来的,主要是做的比较详细公证,如果一步步按照配置安装基本没什么问题,可以配置成功。

  • 2.2.4 — www..com
  • 5.2.0 — www..net
  • 5.0.27 — www..com
  • Zend Optimizer 3.2.0 — www.zend.com
  • phpMyAdmin 2.9.2 — www.phpmyadmin.net
  • 530