PHP与ASP的差别

最近试着把以前写的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。

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。