电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > PHP教程 > 正文
PHP新手上路--5. 其他功能
PHP新手上路--5. 其他功能
2005-12-30 19:20:51  文/45IT收集   出处:电脑软硬件应用网   

  

内容: 
.1 生成图像
    PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。
    <?
    Header("Content-type: image/gif");
    $string=implode($argv," ");
    $im = imagecreatefromgif("images/button1.gif");
    $orange = ImageColorAllocate($im, 220, 210, 60);
    $px = (imagesx($im)-7.5*strlen($string))/2;
    ImageString($im,3,$px,9,$string,$orange);
    ImageGif($im);
    ImageDestroy($im);
    ?>
    (译者注:以上代码段缺少注释,请读者参考PHP Manual的图像处理函数部分)
    这段代码在其他页面中通过以下标记<img src="button.php3?text">调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。
    5.2 Cookies
    PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子:
    <?
    if (empty($VisitedBefore)) 
    {
    // 如果没有设定cookie,为cookie赋上当前时间值
    // 函数中的最后一个参数声明了该cookie保存的时间
    // 在这个例子中是1年
    // time()函数返回自1970年1月1日以来的以秒数计的时间
    SetCookie("VisitedBefore",time(), time()+(60*60*24*365));
    } 
    else 
    {
    // 欢迎浏览者再次光临
    echo "Hello there, welcome back<BR>"; 
    // 读取cookie并判断
    if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) 
    echo "Why did you take a week to come back. You should be here more often!? "; 
    } 
    ?>
    5.3 基于HTTP验证
    基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进入。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录:
    <?
    if(!isset($PHP_AUTH_USER)) 
    {
    Header("WWW-Authenticate: Basic realm=\"My Realm\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Text to send if user hits Cancel button\n";
    exit;
    } 
    else 
    {
    if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") )
    {
    // 如果是错误的用户名称/密码对,强制再验证
    Header("WWW-Authenticate: Basic realm=\"My Realm\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.";
    exit;
    } 
    else 
    {
    echo "Welcome tnc!";
    }
    ?>
    事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。
    5.4 文件上传
    你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示:
    ( upload.html ):
    <HTML>
    <HEAD>
    <TITLE>Upload Your File</TITLE>
    </HEAD>
    <BODY>
    <FORM ACTION="receiver.php3" 
    ENCTYPE="multipart/form-data" METHOD=POST>
    <INPUT TYPE="HIDDEN" 
    NAME="MAX_FILE_SIZE" VALUE="2000000">
    <INPUT TYPE="FILE" 
    NAME="uploadfile" SIZE="24" MAXLENGTH="80">
    <BR><BR>
    <INPUT TYPE="SUBMIT" VALUE="Upload File!" 
    NAME="sendit"> 
    <INPUT TYPE="SUBMIT" VALUE="Cancel" 
    NAME="cancelit"><BR>
    </FORM>
    <I><FONT SIZE="2">(You may notice a slight 
    delay while we upload your file.)</FONT></I>
    </BODY>
    </HTML>
    下面是处理上传的文件:
    ( receiver.php3 ):
    <? 
    function do_upload () 
    {
    global $uploadfile, $uploadfile_size;
    global $local_file, $error_msg;
    if ( $uploadfile == "none" ) 
    {
    $error_msg = "You did not specify a file for uploading.";
    return;
    }
    if ( $uploadfile_size > 2000000 ) 
    {
    $error_msg = "Sorry, your file is too large.";
    return;
    }
    $the_time = time ();
    // 你需要对以下目录有写权限
    $upload_dir = "/local/uploads";
    $local_file = "$upload_dir/$the_time";
    if ( file_exists ( '$local_file' ) ) 
    {
    $seq = 1;
    while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
    $local_file = "$upload_dir/$the_time$seq";
    };
    rename ( $uploadfile, $local_file );
    display_page ();
    }
    function display_page () 
    {
    // 这里是你的页面内容
    }
    <HTML>
    <HEAD>
    <TITLE>php3 Receiving Script</TITLE>
    </HEAD>
    <BODY>
    <? 
    if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
    if ( $sendit ) 
    {
    do_upload ();
    } 
    elseif ( $cancelit ) 
    {
    header ( "Location: $some_other_script" );
    exit;
    } 
    else 
    {
    some_other_func ();
    }
    ?>
    </BODY>
    </HTML>
    5.5 常用函数
    我们简单来看看一些常用的函数。
    数组
    
    array - 生成数组 
    count - 数组元素个数 
    sort - 数组排序,另有其他几种排序函数可供使用 
    list - 列出数组元素 
    each - 返回下一个key/value对 
    current - 返回当前数组元素 
    next,prev - 传回当前数组元素前后指针 
     
    
  

[1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    javascript实用技巧点滴(三)
    javascript实用技巧点滴(2)
    javascript实用技巧点滴(1)
    javascript教程 - 第一课 1.1
    用js制作完善的日,月组合下拉框
    利用JSP编程建立动态Web站点
    用PHP制作留言板
    PHP生成动态WAP页面
    PHP实现文件下载
    PHP4的session功能
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号