首页

显示标签为“PHP”的博文。显示所有博文
显示标签为“PHP”的博文。显示所有博文

2010年10月31日星期日

PHP MYSQL JQUERY JS 编写二级联动下拉列表

由于本文带源代码的原因在此没法正常显示

请浏览www.wackguild.tk 我的博客浏览

我的百度空间也有http://hi.baidu.com/dszul

2010年7月23日星期五

PHP jquery ajax 提交登录

query ajax代码:

$(document).ready(function(){
    $("#form").submit(function(){
        login();
        return false;
    });
});
function login() {
var user = $("#username").val();
var pass = $("#password").val();
if (user == "") {
    $("#confirm").text(alert("请输入登录用户名!"));
    $("username").focus();
    return false;
}
if(pass == "") {
    $("#confirm").text(alert("请输入登录密码!"));
    $("#password").focus();
    return false;
}
$.ajax({
    type: "POST",
    url: "login_comment.php",
    data: "username=" + user + "&password=" + pass,
    beforeSend: function(){
    $("confirm").text("登录中,请稍候");
    },
    success: function(msg){
    var mss = msg.match(/.*?<\/body>/img).join("=").replace(//g,"").replace(/<\/body>/g,"").split("=");
    if(mss == "success"){
        var loginout_url ='退出';   
        $("#confirm").html("");

    }else {
        $("#confirm").text(alert("没有此用户或者密码不正确!"));
    }
    }
});
}   

html 代码:


                   
                   
                   
                    找回密码 | 注册用户
                   


PHP 代码:
session_start();

if($_POST["paaword"]&&$_POST["username"]){
    $_SESSION[id]=$_POST["username"];
    setcookie('n',$_POST["username"],time()+3600);
    setcookie('p',$_POST["password"],time()+3600);
    $_SESSION[p]=$_POST["password"];
}
$p = isset($_POST["password"]) ? $_POST["password"] : $_GET["password"];
$id = isset($_POST["username"]) ? $_POST["username"] : $_GET["username"];
if($id && $p ){
    echo 'success';
}

2010年7月21日星期三

PHP之Emacs实现自动提示

这里主要感谢“土豆”兄弟提供的一个日本emacser 的博客网站地址,在哪里看到详细的配置,我也是按照步骤配置的,结果成功了。不过还需要改进,有点别扭,

得知此配置的网站:http://d.hatena.ne.jp/IMAKADO jump

首先将这个文件download下来,放在一个路径里面。我的就放在 ~/.emacs.d/php/下面

wget http://www.emacswiki.org/cgi-bin/wiki/download/install-elisp.el

将此文件加载到配置文件中去。
(add-to-list 'load-path "~/.emacs.d/php/")
(require 'install-elisp)
(setq install-elisp-repository-directory "~/.emacs.d/php/");;设置使用install-elisp-from-emacswiki 后下载下来的文件路径,我把它们放在一个文件夹里面

然后使用M-x将相关的文件get download下来,不用管它会怎么样,因为我们设置了下载路径,自动会下载到那个路径文件夹里面。(* 注意,Pagename输入后 他会自动打开,你需要执行C-c C-c 进行编译。)
M-x:
install-elisp-from-emacswiki
Pagename:
anything.el
M-x:
install-elisp-from-emacswiki
Pagename:
anything-match-plugin.el
M-x:
install-elisp-from-emacswiki
Pagename:
auto-complete.el


;;完成后在.emacs 加入此句代码 :

(locate-library "auto-complete.el")

;;然后重新载入下.emacs 文件。跟前面的操作一样,我们的PHP配置文件给弄下来编译。
M-x:
install-elisp-from-emacswiki
Pagename:
php-completion.el

;;php 自动提示设置

(add-hook 'php-mode-hook
(lambda()
(require 'php-completion)
(php-completion-mode t)
(define-key php-mode-map (kbd "C-c p") 'phpcmp-complete)
(when (require 'auto-complete nol t)
(make-variable-buffer-local 'ac-sources)
(add-to-list 'ac-sources 'ac-source-php-completion)
(auto-complete-mode t))))

2010年6月24日星期四

用php中的popen函数实现php的并发处理

用php中的popen函数实现php的并发处理:当我们需要调用一个比较耗时外部资源时使用popen这个函数, 最常见的就是从外部API获取相关内容.使用方法:
1. 建立外部资源脚本。 如示例中使用t.sh。 当然, 也可以直接使用curl等命令行2. 准备好参数, 提供给pipe脚本
2. 使用popen调用脚本。 调用之后,就不用关心了。
3. 开始其他的和pipe不相关的逻辑处理
4. 其他处理完成之后, 使用fgets等方式,
获取popen的数据
php程序:
# get argument for pipe here if it has.
#start pipe
echo ’call popen start: ’. date("H:i:s"), "\n";
$pipe = popen(dirname(__FILE__) . ’/t.sh’, ’r’);
echo ’call popen end: ’. date("H:i:s"), "\n";
#Other code here
sleep(5);
echo "Here is my code. time: " . date("H:i:s"), "\n";
#read pipe result
while ($s = fgets($pipe,1024)) {
echo $s;
}
pipe脚本:
echo 1, `date +%T`;
sleep 1;
echo 2, `date +%T`;
sleep 10;
echo 3, `date +%T`;
输出结果:
call popen start: 10:16:40
call popen end: 10:16:40
Here is my code. time: 10:16:451, 10:16:402, 10:16:413, 10:16:51
结论, 我们有三个sleep。
php中一个 sleep 5,sh中两个sleep, 10+1如果使用串行的方式, 那么用时应该是10+1+5 = 16秒。而使用pipe方式, 用时仅为:max(php, pipe) = max(5,11) = 11秒。

2010年6月21日星期一

迅雷专用链接原理及转换

对于迅雷专用链接不用我去解释相信大家都明白(别告诉我你不懂~汗),现在就链接的编码原理及转换详细说明一下,明白以后就可以用迅雷下载快车、旋风专用 地址的软件啦。

首先要明白Base64编码是怎么一回事,不懂的先去百度一下再回来。
Base64编码是一种加密算 法,Email的原始信息就是由Base64编码构成的。
而这些专用链接都是通过Base64编码加工转换而成的。

迅雷专用 地址例子:thunder://QUFodHRwOi8vZG93bi5pcHZ2LmNuL3diLmV4ZVpa
真实文件下载链 接:http://down.ipvv.cn/wb.exe

附转换工具下载:http://ifu25.cn /VC_down.asp?FileName=ChangeRUL.rar

搞懂了Base64编码之后,一切都变的得心应手了:

实 例原始地址:http://im.baidu.com/install/BaiduHi.exe

1、迅雷专用链接编码

在 原地址前面加"AA",后面加"ZZ"(不包括引号),地址变为

AAhttp://im.baidu.com/install/BaiduHi.exeZZ

此地址base64编码为

QUFodHRwOi8vaW0uYmFpZHUuY29tL2luc3RhbGwvQmFpZHVIaS5leGVaWg==

迅雷专链即在上地址前加thunder://,即

Thunder://QUFodHRwOi8vaW0uYmFpZHUuY29tL2luc3RhbGwvQmFpZHVIaS5leGVaWg==
2、快车专用链接编码

在原地址前后都加上"[FLASHGET]"(不包括引号),地址变为

[FLASHGET]http://im.baidu.com/install/BaiduHi.exe[FLASHGET]

此地址base64编码为

W0ZMQVNIR0VUXWh0dHA6Ly9pbS5iYWlkdS5jb20vaW5zdGFsbC9CYWlkdUhpLmV4ZVtGTEFTSEdFVF0=&yinbing1986

快车专链即在上地址前加flashget://,注意后面还要加上"&符号",符号怎么得出不清楚,在最后后面加的是好好爱的 个人信息,至今未有人报告转换错误,即

Flashget://W0ZMQVNIR0VUXWh0dHA6Ly9pbS5iYWlkdS5jb20vaW5zdGFsbC9CYWlkdUhpLmV4ZVtGTEFTSEdFVF0=&yinbing1986

3、旋风专用链接编码

旋风相对就简单多了,将原地址直接base64编码为

aHR0cDovL2ltLmJhaWR1LmNvbS9pbnN0YWxsL0JhaWR1SGkuZXhl

旋风专链即在上地址前加qqdl://,即

qqdl://aHR0cDovL2ltLmJhaWR1LmNvbS9pbnN0YWxsL0JhaWR1SGkuZXhl

2010年6月10日星期四

emacs自定义工具栏

emacs自定义工具栏
(setq tool-bar-map (make-sparse-keymap))
要自定义工具栏,只需要修改tool-bar-map这个变量就可以了,一般我们可以用tool-bar-add-item这个函数来往tool- bar-map里添加工具项。
tool-bar-add-item的原型是这样的:
(tool-bar-add-item icon def key &rest props)
参数icon设置工具图标,emacs的工具栏可以使用XPM和PBM格式的图标,当emacs 有libxmp支持时会使用XPM格式,没有libxmp库时会寻找PBM格式的图标(Info上还说有XBM格式,我没搞清楚什么情况下使用XBM)。

在etc/images目录下可以看到emacs自带的图标一般都同时有XPM和PBM两种格式,就是为了在没有libxmp库时也能显示工具栏,因为如果我们只有xpm格式的图标而没有libxmp库时,emacs就不在工具栏上显示这个项了。所以我们自己做图标时最好XPM和PBM都准备一份。

icon参数的类型是字符串,只需要传主文件名就可以,扩展名emacs会自己加,比如对图标文件semantic.xpm写成”semantic”。

emacs会在image-load-path下查找图标文件,这个变量的值默认为(“…/etc/images/” data-directory load-path),就是说它除了查找image目录外还会查找所有的load-path,所以如果我们有自己的图标目录,把它加到image- load-path或者load-path都可以。

图标的大小好像没有限制,emacs本身使用的图标是24×24像素的,如果使用了比它大的图标,整个工具栏会自动扩大。

参数def设置这个工具项被按下的执行什么命令,它的格式跟global-set-key里的command格式是一样的。

参数key用来给这个工具项指定一个key,这个key用于唯一标识这个工具项,所以在同一个keymap里key不能重复。

剩下的参数可以设置一些属性项,具体可以设置哪些属性可以看Info > elisp > Keymaps > Menu Keymaps > Defining Menus > Extended Menu Items。常用的几个属性有:

* :enable 这个属性的值是一个表达式,emacs对这个表达式求值,如果值为nil时,这个工具项会被禁用。
* :visible 这个属性控制这个工具项是否显示,它的类型与:enable是一样的。
* :help 这个属性类型是字符串,当鼠标在工具项上停留时会显示这个字符串。

其余的属性我没用过,也没仔细研究它们用来干什么。

举例来说,如果要添加一个工具项用来执行gdb命令,并且只有在c-mode或者c++-mode时才让它有效,可以这样:
(tool-bar-add-item "gud/run" 'gdb 'gdb
:enable '(memq major-mode '(c++-mode c-mode)))

这样会把gdb这个工具项添加到默认工具栏的最后,如果不想要emacs默认的工具栏,可以先执行(setq tool-bar-map (make-sparse-keymap))把默认的工具栏清空。

2010年6月2日星期三

PHP 网站维护与开发

这是我来到公司第十一周了,主要工作是维护公司网站和开发。在工作过程中学到了很多以前没学到的东西!

不过这两天可是把我郁闷惨了。。。

具体也不是一两句就能说完的。

2010年5月29日星期六

PHP 批量生成HTML

foreach($arr as $v){
ob_start();//开启缓冲buf
..............................
.....................................
$the_content = ob_get_contents();//获取buf中的数据
ob_end_clean();//清空buf里的数据
$fp = fopen('tmp/'.$articleid.'.html', "w"); //将html文件打开
fputs($fp, $the_content); //将获取到的buf数据写入打开的文件
fclose($fp); //关闭打开的文件
}