表单出错返回从填的时候以前填写的东西全部
当使用session后会出现这种情况,我们可以使用session_cache_limiter();强制生效. PLAIN TEXT PHP: <?php session_cache_limiter("private, must-revalidate"); session_start(); ... ?>
[编辑]PHP中不太常用的方法
在php中,有一些方法经常被人们所遗忘,在一些特定的需求下,他们还是非常有用的。
返回当前class的所有方法1 get_class_methods()
返回当前页所有加载的文件1 get_included_files()
返回当前页所有class1 get_declared_classes()
返回所有的接口1 get_declared_interfaces()
返回所有的function1 get_defined_functions()
返回当前页所有的变量1 get_defined_vars()
返回当前用户1 get_current_user()
返回所有常量1 get_defined_constants()
获取PHP当前加载的所有扩展1 get_loaded_extensions()
获取指定扩展的所有方法列表1 get_extension_funcs('xml')
[编辑]正则匹配中文范围
[\u4e00-\u9fa5]+
[编辑]更改apache默认路径要注意的问题
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>
将Deny改为Allow即可,即修改为如下:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory> 重启apache即可
[编辑]PHP
追踪此函数被哪些 function 呼叫来使用过
<?php function get_backtrace() { $history = debug_backtrace(); $msg = ; foreach ($history as $i => $line) { $msg .= "#$i {$line['function']}() called at [{$line['file']}:{$line['line']}]\n" ; } return $msg; } ?>
现在发现有更简单的 debug_print_backtrace()可以用, 连之前的 function 都不用写了~
<?php function a() { b(); } function b() { c(); } function c(){ debug_print_backtrace(); // print_r(get_backtrace()); // 要用这个记得把上面的 function 加进来. } a(); ?>
debug_print_backtrace() 的结果 # #0 c() called at [/tmp/a.php:7] # #1 b() called at [/tmp/a.php:3] # #2 a() called at [/tmp/a.php:15]
get_backtrace() 的结果
* #0 get_backtrace() called at [/tmp/a.php:12] * #1 c() called at [/tmp/a.php:7] * #2 b() called at [/tmp/a.php:3] * #3 a() called at [/tmp/a.php:15]
[编辑]php中
被遗忘的函数
ctype_alnum -- Check for alphanumeric character(s)
检测是否是只包含[A-Za-z0-9]
ctype_alpha -- Check for alphabetic character(s)
检测是否是只包含[A-Za-z]
ctype_cntrl -- Check for control character(s)
检查是否是只包含类是“\r\b\t”之类的字符控制字符
ctype_digit -- Check for numeric character(s)
检查时候是只包含数字字符的字符串(0-9)
ctype_graph -- Check for any printable character(s) except space
检查是否是只包含有可以打印出来的字符(除了空格)的字符串
ctype_lower -- Check for lowercase character(s)
检查是否所有的字符都是英文字母,并且都是小写的
ctype_print -- Check for printable character(s)
检查是否是只包含有可以打印出来的字符的字符串
ctype_punct -- Check for any printable character which is not whitespace or an alphanumeric character
检查是否是只包含非数字/字符/空格的可打印出来的字符
ctype_space -- Check for whitespace character(s)
检查是否是只包含类是“\r\b\t”之类的字符和空格
ctype_upper -- Check for uppercase character(s)
检查是否所有的字符都是英文字母,并且都是大写的
ctype_xdigit -- Check for character(s) representing a hexadecimal digit
检查是否是16进制的字符串,只能包括“0123456789abcdef”
[编辑]cli模式要注意接受参数的方法
//控制台命令行执行时,转换命令行参数----------------------- if (empty($_SERVER["REQUEST_URI"]) && $_SERVER["argc"]>=1) { //is command line to run this phpfile $argv = $_SERVER["argv"][1]; parse_str($argv, $_REQUEST); parse_str($argv, $_GET); define("CRLF", "\r\n"); } else { //is web(ie/netscape/firefox) to run this phpfile define("CRLF", "< BR >\r\n"); }
如果在cli模式下不加上面这段的话 不好意思 你接受不到参数 cli模式和http模式下接受参数是不相同的
[编辑]通过PHP调用RTX接口,发送消息
一、原理:通过GET或者POST方式将需要发送的消息和RTX用户帐号,传给RTX提供的cgi接口。
二、详细方法:
方法:GET/POST URL:/sendnotify.cgi 用法举例(IE地址栏中输入): http://127.0.0.1:8012/sendnotify.cgi?msg=hello&receiver=wwjs
参数表:
receiver:接收者,用户昵称,多个接收者以“,”隔开。
msg:消息内容 ,如需要发隐式链接,格式如: [明朝网络|http://www.mingchao.com]
title:消息提醒的标题。
delaytime:消息提醒框的停留时间(毫秒),0表示不自动消失。
okurl:成功后IE自动定位到指定的url 格式类似为:okurl=www.mingchao.com或者okurl=http://www.mingchao.com 注意:这里的url必须为绝对地址。
errurl:失败后IE自动定位到指定的url。
功能二:获取用户状态
1.调用方式:http://127.0.0.1:8012/getstatus.php?username=yangbin
2.参数说明: username 需要获取哪个用户的状态
功能三:给某个组群发RTX广播消息
2.参数说明: receiverdepart 需要给那个部门发送消息,该部门即在RTX中看到的组织架构中的部门名
msg 消息内容 ,如需要发隐式链接,格式如: [明朝|http://www.mingchao.com]
title 消息提醒的标题。 【可省略】
online 是否只发在线用户,默认只发给在线用户。 【可省略】
delaytime 消息提醒框的停留时间(毫秒),0表示不自动消失,默认为0。 【可省略】
okurl 成功后IE自动定位到指定的url 格式类似为:okurl=rtx.tencent.com 或者okurl=http://tx.tencent.com 注意:这里的url必须为绝对地址。 【可省略】
errurl 失败后IE自动定位到指定的url。【可省略】
功能四:给某个群群发RTX广播消息
2.参数说明: receivergroup 需要给那个群发送广播消息,即RTX群
msg 消息内容 ,如需要发隐式链接,格式如: [明朝|http://www.mingchao.com]
title 消息提醒的标题。 【可省略】
online 是否只发在线用户,默认只发给在线用户。 【可省略】
delaytime 消息提醒框的停留时间(毫秒),0表示不自动消失,默认为0。 【可省略】
okurl 成功后IE自动定位到指定的url 格式类似为:okurl=rtx.tencent.com 或者okurl=http://tx.tencent.com 注意:这里的url必须为绝对地址。 【可省略】
errurl 失败后IE自动定位到指定的url。【可省略】
三、注意事项
(1)参数msg中如果包含中文那么需要将msg的编码方式转换成GBK或者GB2312,msg是不支持UTF-8编码方式的。
(2)参数msg如需要加入超链接格式为:[点我跳转|http://www.mingchao.com]
(3)参数msg中不能出现空格,如果需要空格可用【+】替代。
(4)如果请求的url中包含特殊字符,那么需要使用urlencode(),来对url进行编码,否则可能导致超链接显示不正常。
(5)发送消息是需要权限的,这个需要在RTX服务端配置才能发送消息。
四、建议
(1)对msg进行转码的时候用GBK不要用GB2312,因为GB2312支持的汉字比较少,很多比较偏的汉字会无法显示,导致消息被中断(即用户只能收到这个中断前的字符)。
(2)在对消息进行转码的时候,可以考虑加入参数IGNORE,即$msg=iconv("utf-8","gb2312//IGNORE",$msg)这样在转码的时候将会忽略错误字符。会将错误字符后面的继续转码。
(3)在RTXServer服务端的WebRoot目录下放着很多的cgi和php文件。这些文件都是可以用HTTP方式来访问的,你也可以自己编写新的cgi或者php文件,然后将其放到改目录下即可。这样将可能提供非常强大的扩展功能。
[编辑]Highcharts图表在某些浏览器下无法显示
问题分析:导致这个问题的原因是在foreach或者section循环输出数据的时候,最后一条记录有一个逗号没有去掉,所以导致图表无法显示
解决办法:通过smarty自带的变量last来处理:{$smarty.foreach.foreachname.varname}或者{$smarty.section.sectionname.varname}
foreachname:foreach或者smarty指定的name名字 varname:需要访问的变量名字
那么通过上面的方法,我们可以这样解决问题:
<{foreach name=datetime key=index item=value from=$rs}> <{if $smarty.foreach.datetime.last}> '<{$index}>' <{else}> '<{$index}>', <{/if}> <{/foreach}>