Submitted by gouki on 2010, May 27, 12:13 PM
最近在做个小东西,想用PHP跑console,生成一个文件,然后由WEB去调用这个文件。可是却一直失败。
命令行下,用crontab跑,因为WEB是在Safemode下面,但我需要Exec,因此crontab调用php的时候,我就指定了phpini,类似/php -c phpinifilepath phpfilename,于是这样可以了。
但生成出来的文件被WEB调用后。一直显示是失败。郁闷了。。
纯记录,无意义
Tags: php, cli, web
PHP | 评论:3
| 阅读:20811
Submitted by gouki on 2010, May 26, 10:09 AM
在PHP中可以直接对字符串进行比较,比如
PHP代码
- $a = 'A';
- $b = 'B';
- var_dump( $a > $b);
当然,在JS中也可以
JavaScript代码
- var s = 'A';
- var t = 'B';
- alert( s < t);
为什么可以比大小呢?那是因为,他们是直接转成ascii值来进行比较的,PHP中是 ord($a) 转成了65,B就是66了,所以$a>$b是返回false
PHP有两个函数用来互换,一个是ord,一个是chr,那么js中怎么办呢?也有,一个是charCodeAt(),一个是fromCharCode();看例子吧。。。
PHP代码
- <?php
- $a = 'A';
- echo ord($a);
- echo chr( ord($a) );
JavaScript代码
- var s= 'A';
- alert( s.charCodeAt() );
-
- alert( String.fromCharCode( s.charCodeAt() ) );
js中对于fromCharCode和php不太一样了。
Tags: ord, chr, php
Javascript | 评论:0
| 阅读:35765
Submitted by gouki on 2010, May 16, 2:05 PM
这篇 文章已经是07年的了,不过,我一直没有关注过drupal的db类,所以对于这方面我也根本 就没有在意过。8过,我在我的siterpc中,我也是采用了sprintf的写法,不是为了安全,而是为了格式化。因为在siterpc里我们几乎不接受外部变量,所有的变量都是由我们自己传入,所以对于安全方便忽略了很多。但还是用sprintf来格式化SQL语句了。
因此看到这篇drupal的db_query安全过滤,突然发现,可以让我的代码少写很多了。(参数可变时请使用vsprintf)
以下是原文 :
Drupal通过C风格的字符串输出格式实现了对sql语句的安全过滤。
使用方法:
PHP代码
- db_query("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type);
-
- db_query(sprintf("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type));
drupal db_query核心代码如下:
PHP代码
-
-
-
- define('DB_QUERY_REGEXP', '/(%d|%s|%%|%f|%b)/');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- function db_query($query) {
- $args = func_get_args();
- array_shift($args);
- $query = db_prefix_tables($query);
- if (isset($args[0]) and is_array($args[0])) {
- $args = $args[0];
- }
- _db_query_callback($args, TRUE);
- $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
- return _db_query($query);
- }
-
-
-
-
- function _db_query_callback($match, $init = FALSE) {
- static $args = NULL;
- if ($init) {
- $args = $match;
- return;
- }
-
- switch ($match[1]) {
- case '%d':
- return (int) array_shift($args);
- case '%s':
- return db_escape_string(array_shift($args));
- case '%%':
- return '%';
- case '%f':
- return (float) array_shift($args);
- case '%b':
- return db_encode_blob(array_shift($args));
- }
- }
简单的对一些输入做了处理。参考:
http://drupal.org/node/101496
原文来自于:http://www.luochunhui.com/id/315
Tags: drupal, php, escape_string
PHP | 评论:2
| 阅读:21256
Submitted by gouki on 2010, February 5, 10:42 AM
飞信,对于我们搞开发的人来说,确实还是需要的。网上也有一些php飞信的类(看的也很累),不过,我看的是zendstudio.net,因为看起来好象方便。
自从上次飞信改过IP地址后,我才真正的仔细看过这方面的东西(其实也只是稍看看啦。。。哈哈)
其实,说真的,飞信这东西,PHP版的在我眼里感觉很深奥,因为要抓包,以前还从来没有这样抓过,总觉得是一件很复杂很难的事情。但自从不能给好友发短信后,我到Zendstudio.net上看过别人回复后,才发现他根本就没有提供。所以就萌发了要自己的写的念头。
于是找了smartsniff这个抓包工具,找来libfetion,关掉我所有的上网的程序。然后运行他开始抓包。
发现真的很方便。。。
于是就准备开始写了。不用fsockopen,而准备直接采用curl。。。目前刚刚写了一个getSIPC,发现速度好象是比fsockopen的速度快很多。【可能是因为,zendstudio.net他是按字节读取,然后用正则处理获得sipcproxy,而我是直接取回来用simplexml_loadstring,然后直接输出这个对象的值 ?也或许只是一个感觉而己,其实并没有变化?晚上回去输出执行时间看一下就知道了。HOHO】
慢慢写,因为注意过给好友发短信的功能,是利用SID的,但普通情况下,获取不到SID,必须得先把好友拉回来做一个缓存。这样就可以了。所以本版飞信应该不会公开,否则,谁也不敢使用。【随便说说,还没写完呢。。。。】
Tags: 飞信, fetion, php
PHP | 评论:1
| 阅读:21873
Submitted by gouki on 2009, November 2, 3:46 PM
短短几行代码实现文件打包下载。。。
PHP代码
-
-
-
- $filename = "./test/test.zip";
- if(!file_exists($filename)){
-
- $zip = new ZipArchive();
- if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
- exit('无法打开文件,或者文件创建失败');
- }
- foreach( $datalist as $val){
- $attachfile = $attachmentDir . $val['filepath'];
- if(file_exists($attachfile)){
- $zip->addFile( $attachfile , basename($attachfile));
- }
- }
- $zip->close();
- }
- if( !file_exists($filename)){
- exit("无法找到文件");
- }
- header("Cache-Control: public");
- header("Content-Description: File Transfer");
- header('Content-disposition: attachment; filename='.basename($filename));
- header("Content-Type: application/zip");
- header("Content-Transfer-Encoding: binary");
- header('Content-Length: '. filesize($filename));
- @readfile($filename);
Tags: php, 文件下载, zip压缩
PHP | 评论:1
| 阅读:28575