懂得HTML(超文本标识语言)的读者都应该知道在“<FORM>”的标签内可使用添加“GET”和“POST”参数的方式将资料送回HTTP服务器,其实,在PHP语言中我们同样可以使用“GET”及“POST”参数。除此之外,在网址上亦可以加上“GET”的资料,例如我们以下面的URL为例:
http://www.yourserver.com/download/down.php?id=1
http://www.yourserver.com/news/show.php?page=1
这些URL通常在网站的搜索引擎中会使用得最多,你看到的URL中都带了各种参数,目的是为了将资料传回http服务器以便找到相关信息。如果你觉得这个方式不好,笔者有另外一种方法可将传送的资料加在 URL 上,例如下面的网址:http://www.yourserver.com/vote/php/show.php/200107/2138/。
其对应的PHP源代码如下:
<
php 与 java(一)
JAVA鏄釜闈炲父寮哄ぇ鐨勭紪绋嬪埄鍣紝瀹冪殑鎵╁睍搴撲篃鏄潪甯哥殑鏈夌敤锛岃繖绡囨暀绋嬶紝涓昏璁茶堪鎬庢牱浣跨敤PHP璋冪敤鍔熻兘寮哄ぇ鐨凧AVA 绫诲簱(classes)銆備负浜嗘柟渚夸綘鐨勫涔狅紝杩欑瘒鏁欑▼灏嗗寘鎷琂AVA鐨勫畨瑁呭強涓€浜涘熀鏈殑渚嬪瓙銆侟br />windows涓嬬殑瀹夎
绗竴姝ワ細瀹夎JDK锛岃繖鏄潪甯稿鏄撶殑锛屼綘鍙渶涓€璺洖杞︾殑瀹夎濂姐€傜劧鍚庡仛濂戒互涓嬫楠ゃ€侟br />鍦 Win9x 涓嬪姞鍏 锛?ldquo;PATH=%PATH%;C:jdk1.2.2in” 鍒癆UTOEXEC.BAT鏂囦欢涓
鍦 NT 涓嬪姞鍏 “;C:jdk1.2.2in”鍒扮幆澧冨彉閲忎腑銆侟br />杩欎竴姝ユ槸闈炲父閲嶈鐨勶紝杩欐牱PHP鎵嶈兘姝g‘鐨勬壘鍒伴渶璋冪敤鐨凧AVA绫汇€侟br />绗簩姝ワ細淇敼浣犵殑PHP.INI鏂囦欢銆侟br />[java]
extension=php_java.dll
java.library.path=c:webphp4extensions
java.class.path="c:webphp4extensionsjdk1.2.2php_java.jar;c:myclasses"
鍦≒HP.INI涓姞鍏xtension=php_java.dll
骞跺湪[java]涓紝璁惧畾濂絡ava.class.path锛岃瀹冩寚鍚憄hp_java.jar锛屽鏋滀綘浣跨敤鏂扮殑JAVA绫伙紝浣犱篃搴旇瀛樺叆杩欎釜璺緞锛屽湪杩欑瘒渚嬪瓙涓紝鎴戜滑浣跨敤c:myclasses杩欎釜鐩綍銆侟br />绗笁姝ワ細娴嬭瘯鐜锛屽垱寤哄涓婸HP鏂囦欢锛
$system = new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")."
";
print "Java vendor=".$system->getProperty("java.vendor")."
";
print "OS=".$system->getProperty("os.name")." ".
$system->getProperty("os.version")." on ".
$system->getProperty("os.arch")."
";
$formatter = new Java("java.text.SimpleDateFormat","EEEE,
MMMM dd, yyyy at h:mm:ss a zzzz");
print $formatter->format(new Java("java.util.Date"))."";
?>
濡傛灉浣犳纭畨瑁呬簡锛屼綘灏嗕細鐪嬪埌浠ヤ笅淇℃伅锛
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time
杩欐牱锛屾垜浠氨宸茬粡鎴愬姛鐨勫缓绔嬭捣浜嗗彲浠ヤ娇鐢↗AVA绫荤殑PHP杩愯鐜锛屾垜浠彲浠ュ紑濮嬫垜浠帴涓嬪幓鐨勮绋嬩簡銆侟br />浣滆€咃細浜曚腑鏈
杞浇锛
用 PHP 实现 POP3 邮件的解码(1)
初步认识邮件的源文件
本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。我们已经向您介绍过了邮件的收取,现在让我们来为您介绍本文的解码部。
在上一篇里,我们已经完成了一个用PHP通过POP3收取邮件的实例,可是在使用这个类的时候,相信你已经看到了,很多的邮件收下来是一堆乱码,自己根本看不懂!是的。现在的邮件大部分都已经经过了编码,需要一个解码的过程才能变成我们习惯的文字、图片、或是其它的附件。
邮件的源文件
首先,我们来看一段简单的邮件的源文件:(在Foxmail中,选中邮件,点选“查看源文件”就会看到这样的些内容了)
From:
To:
Subject: =?gb2312?B?xOO6w6Oh?=
Date: Sun, 8 Oct 2000 20:28:45 +0800
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0007_01C03166.5B1E9510"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2919.6700
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
This is a multi-part message in MIME format.
------=_NextPart_000_0007_01C03166.5B1E9510
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: base64
w7vT0MLSwuuwyaO/DQo=
------=_NextPart_000_0007_01C03166.5B1E9510
Content-Type: text/html;
charset="gb2312"
Content-Transfer-Encoding: base64
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdi
MjMxMiIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNS4w
MC4yOTIwLjAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9E
WSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPjxGT05UIHNpemU9Mj7Du9PQwtLC67DJo788L0ZPTlQ+
PC9ESVY+PC9CT0RZPjwvSFRNTD4NCg==
如何用 php 从 .jpg 图像中读取 exif
read_exif_data
(PHP 4 )
read_exif_data -- Reads header information stored in TIFF and JPEG images
Description
array exif_read_data ( string filename, string sections, bool arrays, bool thumbnail)
Note: The read_exif_data() function is an alias for exif_read_data().
See also exif_thumbnail().
User Contributed Notes
read_exif_data
inq@inq.dhs.org
03-Jan-2001 03:52
Each of my jpeg files are over 1 meg, and read_exif_data seems to read the
whole file and its very slow. So I wrote a function to read only the
beginning of each file:
function read_exif_data_quick($path) {
$tmpfile = "/tmp/read_exif_data_quick.tmp_file";
$in = fopen($path, "r");
$out = fopen($tmpfile,"w");
fwrite( $out, fread( $in, 15000 ) );
fclose($in);
fclose($out);
return read_exif_data($tmpfile);
}
And so far it works for all of my jpegs (taken with my digital camera).
garbage@sunflowerroad.com
06-Jul-2001 05:33
I started drooling when I saw that php could read the exif information
automatically for me. Then I found out that read_exif_data is NOT
compiled into the standard win32 build (think about including it please!).
To get around this I found the following program that runs from the
command line and works really well.
its actually a set of utilities that will even allow you to put exif data
into images.
Its freeware, but the license says no commercial use without written
permission.
http://www.users.bigpond.com/hughthomas/exif.html
garbage@sunflowerroad.com
06-Jul-2001 05:34
By the way, it works under linux or win32
ibaldin@anr.mcnc.org
21-Aug-2001 11:43
Perl Image::Info module is capable of reading EXIF tags (places them into
an associative array). You can write a simple script to use the module and
it will extract all or only required tags out of a jpeg file.
使用php作linux自动执行脚本(呵呵,超级好用的功能)
最近在用PHP作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为shell script直接在服务器上运行.
在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户login或者某一个页面中, 以便在用户登录或访问到该时,触发运行该代码. 这样一来, 会造成一个问题, 如果该代码教复杂, 明显减慢该页的正常调用速度.
利用PHP 的这种特性,加上linux的crontab指令,即可自动定时执行某一个php文件(统计在线人数等).
具体方法:
在安装PHP的时候,会产生一个可执行文件,文件名为php.将它它 copy 到 /usr/local/bin 下.
在终端方式执行php程序: php -q onlinnum.php<Enter>
注意到 PHP 原本是应用在网页应用的╋因此它内定会送出 HTML 的 HEADER╋但是在此我们是要将 PHP 用作 Shell Script╋"-q" 就是表示不要送出 HEADER 的意思.你可以试试看不加上 -q 的显示结果。
此时你已经可以在终端方式下执行PHP 代码了. 呵呵,可以试试执行你以前写的代码.
linux命令:cron daemon
这是一个系统中常驻的服务,功能在于执行例行性的工作,如每天一次或每月一次检查磁盘。cron daemon 会在每分钟检查一次排定的工作表(crontab),看看是否有要执行的指令,所有的输出会以mail寄给用户。
设置 crontab
命令:crontab -e<Enter>
该命令呼叫vi编辑器来编辑执行的清单。例如
0 0 1,15 * * fsck /home
1 * * * * /home/Gull/onlinnumber
每一行代表一项排定的工作,在指令前为排定的时间,总共有5个栏位,以空格间隔,由左到右依序如下:
栏位 说明
--------------------------
分钟 从00到99
点钟 从0到24
日 从01到31
月 从01到12
PHP4 调用自己编写的 COM 组件
作者:东方一蛇
搞完了PHP4调用JavaBean,又想去试试调用COM,开始以为很难,自己用VB6写了一个Active Dll在PHP4中调用,马上成功,比调用javabean方便多了,下面讲一下我的步骤。
下载的版本是从http://www.mm4.de/。
一:用VB6写Activex Dll
代码如下:
Option Explicit
Private MyScriptingContext As ScriptingContext
Private MyApplication As Application
Private MyRequest As Request Private MyResponse As Response
Private MyServer As Server
Private MySession As Session Public
Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set MyScriptingContext = PassedScriptingContext
Set MyApplication = MyScriptingContext.Application
Set MyRequest = MyScriptingContext.Request
Set MyResponse = MyScriptingContext.Response
Set MyServer = MyScriptingContext.Server
Set MySession = MyScriptingContext.Session
End Sub
Public Sub OnEndPage()
Set MyScriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub
Public Function Test_Number(num) As Variant
If num < 0 Then Get_Number_Attrib = -1
If num > 0 Then Get_Number_Attrib = 1
If num = 0 Then Get_Number_Attrib = 0
End Function
具体方法如下:新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test
类的文件内容如上。
编译生成p_test.dll文件
二:注册
提示符下运行:regsvr32 p_test.dll
三:编写php文件,test.php4代码如下:
$b=new COM("p_test.c_test");
$a=$b->Test_Number(-454);
echo $a;
?>
运行php4文件将显示-1
可能遇到的问题是,编译工程时通不过,要将
Microsoft Active Server Pages Object Library
引用进来,具体实现“Project->References”找到改库,并勾上
相比之下,PHP4调用com应该比PHP4调用javabean好哦,因为毕竟是Ms系统嘛。大家也可以去自己编写调用数据库的控件,用PHP4调用,从某种程度上,和PHP调用javabean一样,可以说,实现了“隐藏源代码”。
本文出自:
用 PHP 实现 POP3 邮件的收取(3)
应用实例
POP3收取邮件的类在前面的文章中已经给大家做了详细的介绍,下面我们来看看如何应用这个类:
include("pop3.inc.php");
$host="pop.china.com";
$user="boss_ch";
$pass="026007";
$rec=new pop3($host,110,2);
if (!$rec->open()) die($rec->err_str);
echo "open ";
if (!$rec->login($user,$pass)) die($rec->err_str);
echo "login";
if (!$rec->stat()) die($rec->err_str);
echo "共有".$rec->messages."封信件,共".$rec->size."字节大小
";
if ($rec->messages>0)
{
if (!$rec->listmail()) die($rec->err_str);
echo "有以下信件:
";
for ($i=1;$i<=count($rec->mail_list);$i++)
{
echo "信件".$rec->mail_list[$i][num]."大小:".$rec->mail_list[$i][size]."
";
}
$rec->getmail(1);
echo "邮件头的内容:
";
for ($i=0;$ihead);$i++)
echo htmlspecialchars($rec->head[$i])."
n";
echo "邮件正文 :
";
for ($i=0;$ibody);$i++)
echo htmlspecialchars($rec->body[$i])."
n";
}
$rec->close();
?>
如果你把pop3类中的debug设为true的话,你还可以看到程序与pop3服务器是如何对话的,用于正在调试的程序来说,这样显得更为直观。
小结
从以上的这个实例我们可以看到PHP真的是网站开发的一个功能非常强大的工具,但是也可以感觉到,PHP做为一种混合形的语言,其面对对象的开发与其它的工具如java相比还存在不少让人遗憾的地方。这个pop类的实现也还有不少需要改进之处,欢迎各位同仁们指导。
作者:陈俊清
如有想要取得完整的源代码的朋友,请与本人联系:boss_ch@netease.com
转载:中华网
用 PHP 实现 POP3 邮件的收取(1)
POP协议简介
本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。
现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行交流,各大网站也几乎都推出了自己的基于WEB的免费邮件系统。在本文里,笔者将介绍一些Email实现的一些原理。同时我们假设你对于PHP的编程有一定的基础,对于TCP/IP协议也有一定的了解。
POP 协议简介
POP的全称是 Post Office Protoco ,即邮局协议,用于电子邮件的接收,现在常 用的是第三版 ,简称为 POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、删除等。另外一种用于接收信件的邮件是 IMAP 协议,现在发展很快,在本文中,我们暂不讨论。
POP服务器一般使用的是TCP的110号端口,如果你用的是Foxmail的话,在其收邮件的时候,你可以看到其信息提示窗口有这么一些命令:
“正在连接到 62.123.23.123:110";
"USER BOSS_CH";
"PASS..............";
下面让我们来看一段 与 POP3 服务器对话的实录:
telenet pop.china.com 110
+OK AIMC POP service (mail2.china.com) is ready.
USER boss_ch
+OK Please enter password for user .
PASS ******
+OK boss_ch has 1 messages (750 octets)
STAT
+OK 1 750
LIST
+OK 1 messages (750 octets)
1 750
RETR 1
+OK 750 octets
Received: from smtp2.ptt.js.cn([202.102.24.37]) by china.com(JetMail 2.5.3.0)
with SMTP id jm4839cc4227; Sat, 23 Sep 2000 05:31:21 -0000
Received: from chenjunqing ([61.155.120.6]) by smtp2.ptt.js.cn
(Netscape Messaging Server 4.15) with SMTP id G1BRHJ03.V07 for
; Sat, 23 Sep 2000 13:34:31 +0800
Date: Sat, 23 Sep 2000 13:34:18 +0800
From: =?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?=
PHP 中的类:邮件群发
本类可以用与于email的群发,测试的环境是linux,系统需要安装sendmail才能使用
if ( ! defined( MAIL_CLASS_DEFINED ) ) {
define(MAIL_CLASS_DEFINED, 1 );
class email {
function email ( $subject, $message, $senderName, $senderEmail, $toList, $ccList=0, $bccList=0, $replyTo=0) {
$this->sender = $senderName . " <$senderEmail>";
$this->replyTo = $replyTo;
$this->subject = $subject;
$this->message = $message;
// 定义收件人
if ( is_array($toList) ) {
$this->to = join( $toList, "," );
} else {
$this->to = $toList;
}
// 定义抄送名单
if ( is_array($ccList) && sizeof($ccList) ) {
$this->cc = join( $ccList, "," );
} elseif ( $ccList ) {
$this->cc = $ccList;
}
// 定义密码抄送名单
if ( is_array($bccList) && sizeof($bccList) ) {
$this->bcc = join( $bccList, "," );
} elseif ( $bccList ) {
$this->bcc = $bccList;
}
}
// 发送函数
// 利用php中的mail()函数发送email
function send () {
//发件人
$this->headers = "From: " . $this->sender . " ";
// 回复地址
if ( $this->replyTo ) {
$this->headers .= "Reply-To: " . $this->replyTo . " ";
}
// 抄送
if ( $this->cc ) {
$this->headers .= "Cc: " . $this->cc . " ";
}
// 秘密抄送
if ( $this->bcc ) {
$this->headers .= "Bcc: " . $this->bcc . " ";
}
return mail ( $this->to, $this->subject, $this->message, $this->headers ); //返回结果
}
}
}
?>
说明:
参数说明
----------
- 以下几个参数是必须的:subject, message, senderName, senderEmail 和 toList
- 这几个参数则是可选的:ccList, bccList 和 replyTo
- toList, ccList 和 bccList 必须是有效的email地址
如何混合使用XML和PHP?
你必须要关掉 php3.ini 配置中的短标记功能,将short_tags设为 0,或是在Apache配置文件中使用php3_short_tags配置 。(你也可以在区域中使用。) 也可以在脚本中使用short_tags()函数让短标记功能有用或无效。
关于session不能自动去除的临时处理方法(转载)我一直没用SESSI
关于 session 不能自动去除的临时处理方法
问题是:
"PHP 的 session 会一直保存着用户第一次进入时输入的信息,即使你返回到登陆画面重新登陆也不会改变!这个问题我在 php4.02 里面发现,在最新的php 4.03pl1 的测试中仍然没有通过!只有用户关闭 ie 浏览器,重新开 IE窗口才能消除session的内容
临时解决方法:
当表单提交后,不要注册表单提交的变量,把该变量赋给另一变量$X后,注册$X,这样返回到登陆画面重新登陆就可以改变了.再要保险一点,可在登陆的那一页的页首添一句删除变量$X.
举例如下:这段是我的聊天室登陆的部分
1 登陆页面传送 $name , $pass
2 login.php 里可以这样处理
<?
$save_name = $name;
$save_pass = $pass;
session_start();
session_register("name");
session_register("pass");
$name=$save_name;
$pass=$save_pass;
......
?>
PatternModifiers-规则表达式的修饰符(转载)发现PHP里有些正则
Pattern Modifiers - 规则表达式的修饰符
下面是当前规则表达式里可用的修饰. 括号内的名字是那些修饰符的内部 PCRE 名字.
i (PCRE_CASELESS)
如果设置了这个修饰符, 则表达式不区分大小写.
m (PCRE_MULTILINE)
默认的, PCRE 认为目标字符串值是单行字符串 (即使他确实包含多行). 行开始标记 (^) 只匹配字符串的开始部分, 而行结束标记 ($) 只匹配字符串的尾部,或者一个结束行(除非指定 E 修饰符). 这个和 Perl 里面一样.
如果设定了这个修饰符, 行开始和行结束结构分别匹配在目标字符串任何新行的当前位置后面的或者以前的, 和每一个开始和结束一样. 这个等于 Perl 里面的 /m 修饰符. 如果目标字符串没有 "n" 字符, 或者模式里没有 ^ 或 $ ,这个修饰符不起作用.
s (PCRE_DOTALL)
如果设置这个修饰符, 模式里的一个"点"将匹配所有字符, 包括换行. 没有他, 换行将被排除在外. 这个修饰符等同于 Perl 里面的 /s 修饰符. 一个相反的类型,例如 [^a] 将总是匹配换行字符,而不管这个修饰符的限制.
x (PCRE_EXTENDED)
如果设置这个修饰符, 模式里面的空格数句将会被全部忽略,除非用转义符或者一个字符的内部类型,还有所有字符类型外的未转义的 # 号之间的也被忽略. 这个等同于 Perl 里面的 /x 修饰符, 这样可以复杂的模式里面加入注释. 注意,只适用于数据字符. 空格字符将不会在指定的模式字符指定顺序中出现。
e
如果设置这个修饰符, preg_replace() 将在替换值里进行正常的涉及到 的替换, 等