最近试着把以前写的ASP小网页改成PHP,网上资料比较集全,所以好多不会的东西都可以从网上搜索得到,现把曾经遇到的差别记录一下。
1. ASP的语句是“<% … %>”;PHP的语句是“<?php … ?>”。
2. ASP的Session是“Session(‘…’)”;PHP的Session是“$_SESSION[‘…’]”。
3. ASP的Request是“Request (‘…’)”;PHP的Request是“$_REQUEST[‘…’]”,PHP的Request还可以分为“$_GET”和“$_POST”两种。
4. ASP的重定向是“Response.Redirect("login.asp")”;PHP的重定向是“header(‘location: login.php’)”,要求header调用之前不能有任何html的输出,比如PHP语句之外的字符串、PHP的echo或print语句等,PHP的header之后需要exit语句结束当前页面。
5. ASP没有md5函数;PHP有md5函数,可以直接使用。
6. ASP的输出用“Response.Write ‘…’”;PHP的输出用“echo ‘…’”或“print ‘…’”或“print_r(…)”。
7. ASP生成验证码的代码:
<%
Option Explicit
Response.buffer=true
NumCode
Function NumCode()
Response.Expires = -1
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
dim zNum,i,j
dim Ados,Ados1
Randomize timer
zNum = cint(8999*Rnd+1000)
Session("GetCode") = zNum
dim zimg(4),NStr
NStr=cstr(zNum)
For i=0 to 3
zimg(i)=cint(mid(NStr,i+1,1))
Next
dim Pos
set Ados=Server.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
set Ados1=Server.CreateObject("Adodb.Stream")
Ados1.Mode=3
Ados1.Type=1
Ados1.Open
Ados.LoadFromFile(Server.mappath("images/body.Fix"))
Ados1.write Ados.read(1280)
for i=0 to 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
next
Ados.LoadFromFile(Server.mappath("images/head.fix"))
Pos=lenb(Ados.read())
Ados.Position=Pos
for i=0 to 9 step 1
for j=0 to 3
Ados1.Position=i*32+j*320
Ados.Position=Pos+30*j+i*120
Ados.write ados1.read(30)
next
next
Response.ContentType = "image/BMP"
Ados.Position=0
Response.BinaryWrite Ados.read()
Ados.Close:set Ados=nothing
Ados1.Close:set Ados1=nothing
End Function
%>
还需要外部文件:body.Fix、head.fix。
PHP生成验证码的代码:
<?php
// Create image
header(‘content-type: image/png’);
srand((double)microtime() * 1000000);
$img = imagecreate(54, 20);
$black = imagecolorallocate($img, 0, 0, 0);
$gray = imagecolorallocate($img, 127, 127, 127);
imagefill($img, 0, 0, $gray);
while (($code = rand() % 100000) < 10000);
$_SESSION[‘getcode’] = md5($code);
// Write code to image
imagestring($img, 5, 6, 3, $code, $black);
for($i = 0; $i < 200; $i++)
{
$randcolor = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($img, rand() % 70, rand() % 30, $randcolor);
}
imagepng($img);
imagedestroy($img);
?>
php.ini文件需要把“;extension=php_gd2.dll”之前的分号删除,以支持imageXXX函数。
8. ASP的Session默认情况就启用;PHP的Session默认情况未启用,启用方法是打开php.ini文件,找到“session.save_path”,在E:\php5.2新建一个目录tmp,把“session.save_path”的值设成tmp目录,比如:session.save_path = "E:/php5.2/tmp",如果想让Session自动启用则设置“session.auto_start”的值为1(默认值是0),否则需要调用session_start方法启用Session。