首页 后端开发 php教程 5.PHP的其他功能_PHP

5.PHP的其他功能_PHP

Jun 01, 2016 pm 12:38 PM
echo if 功能 可以 图像 我们 文件 验证


5. 其他杂项 


5.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的图像处理函数部分)

这段代码在其他页面中通过以下标记
            5.PHP的其他功能
        
         
      
调用,然后以上的那段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
"; 

// 读取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 ):





Upload Your File






ENCTYPE="multipart/form-data" METHOD=POST>


NAME="MAX_FILE_SIZE" VALUE="2000000">


NAME="uploadfile" SIZE="24" MAXLENGTH="80">






NAME="sendit"> 


NAME="cancelit">




(You may notice a slight 

delay while we upload your file.)








下面是处理上传的文件:

( 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 () 

{

// 这里是你的页面内容

}





php3 Receiving Script





 

if ( $error_msg ) { echo "$error_msg

"; 
}

if ( $sendit ) 

{

do_upload ();



elseif ( $cancelit ) 

{

header ( "Location: $some_other_script" );

exit;



else 

{

some_other_func ();

}

?>







5.5 常用函数



我们简单来看看一些常用的函数。



数组





array - 生成数组 

count - 数组元素个数 

sort - 数组排序,另有其他几种排序函数可供使用 

list - 列出数组元素 

each - 返回下一个key/value对 

current - 返回当前数组元素 

next,prev - 传回当前数组元素前后指针 







日期和时间



checkdate - 验证日期/时间格式 

date - 生成日期/时间格式 

time - 当前时间信息 

strftime - 格式化日期/时间 



目录、文件系统



chdir - 改变目录 

dir - 目录类别 

opendir, readdir, closedir - 开启、读取、关闭目录 

fopen, fclose - 开启、关闭文件 

fgets, fgetss - 逐行读取内容 

file - 将整个文件读入一个数组变量中 



正则表达式



ereg - 匹配正则表达式 

eregi - 大小写非敏感匹配正则表达式 

ereg_replace -匹配正则表达式并替换 

eregi_replace -大小写非敏感匹配正则表达式并替换 

split - 依规则切开字符串并以数组形势存储






字符串



AddSlashes - 加上斜杠后使用字符串 

echo - 输出一个或多个字符串 

join, implode - 将数组元素合并为字符串 

htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 

split - 依规则切开字符串并以数组形势存储 

5.6 扩展我们的范例主页



我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。 
导航栏



实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码:



/* 输出该导航栏,链接所有除当前页的站内.php3文件 */

# 读取目录

$d = dir("./");

echo "

 | \n";

while($entry = $d->read())

{

// 忽略无文件情况

if ( !is_file($entry) )

continue;

/* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用\引出 */

list($filenm, $fileext) = split("\.",$entry, 2);

// 忽略非.php3文件情况

if( $fileext != "php3" )

continue;

/* 现在我们已经把.php3文件都选出,下面搜寻文件中的第一行(标题)

类似$title="something";

并将以上标题内容分开,用作链接文字 */

$linknm = "";

$fp=fopen($entry,"r");

while($buffer=fgets($fp, 4096))

{

$buffer = trim($buffer);

// 我们已经把每个文件的标题放在文件的第一行以便搜索

// 但是当你改变变量名称时可能会带来大麻烦

if (ereg("title *= *\"", $buffer))

{

/* 我们已经取得了标题内容并可以在此基础上

进行去除空格等处理。

必须以PHP代码方式处理,比如$title = "blah blah" */

eval($buffer);

// 然后将链接文字显示为标题文字

$linknm = $title;

break;

}

}

fclose($fp);

if ( $entry == basename($PHP_SELF) )

echo "$linknm";

else

echo "$linknm";

echo " | ";

}

$d->close();

echo " 

\n";

?>



照片收藏夹



我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。

同时我们需要建立一个可以列出在该目录下所有照片的页面。



文件上传



include("include/common.inc");

// 我们在这里再做一次用户验证 

if(!isset($PHP_AUTH_USER)) 

{

Header("WWW-Authenticate: Basic realm=\"$MySiteName\"");

Header("HTTP/1.0 401 Unauthorized");

echo "Sorry, you are not authorized to upload files\n";

exit;



else 

{

if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) )

{

// 如果是错误的用户名称/密码对,强制再次认证

Header("WWW-Authenticate: Basic realm=\"My Realm\"");

Header("HTTP/1.0 401 Unauthorized");

echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.

";

exit;



}

if ( $cancelit ) 

{

// 当浏览者按下"取消"按钮则转向首页面

header ( "Location: front_2.php3" );

exit;

}

function do_upload () {

global $userfile, $userfile_size, $userfile_name, $userfile_type;

global $local_file, $error_msg;

global $HTTP_REFERER;

if ( $userfile == "none" ) {

$error_msg = "You did not specify a file for uploading.";

return;

}

if ( $userfile_size > 2000000 ) 

{

$error_msg = "Sorry, your file is too large.";

return;

}

// Wherever you have write permission below...

$upload_dir = "photos";

$local_file = "$upload_dir/$userfile_name";

if ( file_exists ( $local_file ) ) {

$error_msg = "Sorry, a file with that name already exists";

return;

};

// 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3…

rename($userfile, $local_file);

echo "The file is uploaded
\n";

echo "Go Back
\n";

}

$title = "Upload File";

include("include/header.inc");

if (empty($userfile) 
 $userfile=="none") 

{

// 输出以下表单

?>

" ENCTYPE="multipart/form-data" 
METHOD=POST>



MAXLENGTH="80">












(You may notice a slight delay while 
we upload your file.)




} else {

if ( $error_msg ) { echo "$error_msg

"; 
}

if ( $sendit ) {

do_upload ();



}

include("include/footer.inc");

?>



照片图库







include("include/common.inc");

$title = "Gallery";

include("include/header.inc");

?>



Here are some of our family photos. This PHP script can really

be made better, by splitting into multiple pages.





$d = dir("photos");

while($entry = $d->read())

{

if (is_file("photos/$entry"))

echo "5.PHP的其他功能_PHP\n";

}

$d->close();

?>



include("include/footer.inc");

?>



另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vivox100s和x100区别:性能对比及功能解析 vivox100s和x100区别:性能对比及功能解析 Mar 23, 2024 pm 10:27 PM

vivox100s和x100手机都是vivo手机产品线中的代表机型,它们分别代表了vivo在不同时间段内的高端技术水平,因此这两款手机在设计、性能和功能上均有一定区别。本文将从性能对比和功能解析两个方面对这两款手机进行详细比较,帮助消费者更好地选择适合自己的手机。首先,我们来看vivox100s和x100在性能方面的对比。vivox100s搭载了最新的

夸克网盘的文件怎么转移到百度网盘? 夸克网盘的文件怎么转移到百度网盘? Mar 14, 2024 pm 02:07 PM

  夸克网盘和百度网盘都是现在最常用的储存文件的网盘软件,如果想要将夸克网盘内的文件保存到百度网盘,要怎么操作呢?本期小编整理了夸克网盘电脑端的文件转移到百度网盘的教程步骤,一起来看看是怎么操作吧。  夸克网盘的文件怎么保存到百度网盘?要将夸克网盘的文件转移到百度网盘,首先需在夸克网盘下载所需文件,然后在百度网盘客户端中选择目标文件夹并打开。接着,将夸克网盘中下载的文件拖放到百度网盘客户端打开的文件夹中,或者使用上传功能将文件添加至百度网盘。确保上传完成后在百度网盘中查看文件是否成功转移。这样就

出现0x80004005错误代码怎么办 小编教你0x80004005错误代码解决方法 出现0x80004005错误代码怎么办 小编教你0x80004005错误代码解决方法 Mar 21, 2024 pm 09:17 PM

在电脑中删除或解压缩文件夹,时有时候会弹出提示对话框“错误0x80004005:未指定错误”,如果遇到这中情况应该怎么解决呢?提示错误代码0x80004005的原因其实有很多,但大部分因为病毒导致,我们可以重新注册dll来解决问题,下面,小编给大伙讲解0x80004005错误代码处理经验。有用户在使用电脑时出现错误代码0X80004005的提示,0x80004005错误主要是由于计算机没有正确注册某些动态链接库文件,或者计算机与Internet之间存在不允许的HTTPS连接防火墙所引起。那么如何

微信好友辅助验证进行解封的详细方法 微信好友辅助验证进行解封的详细方法 Mar 25, 2024 pm 01:26 PM

1、打开微信进入后,点击搜索图标,输入微信团队,点击下方的服务进入。2、进入后,点击左下方的自助工具的选项。3、点击后,在上方的选项内,点击解封/申诉辅助验证的选项。

c语言if判断多个条件怎么写 c语言if判断多个条件怎么写 Mar 25, 2024 pm 03:24 PM

在C语言中,if语句通常用于基于单个条件执行特定代码块。但是,通过使用逻辑运算符(如 &&、|| 和 !),可以组合多个条件来进行判断。包括使用逻辑与(&&)判断多个条件、使用逻辑或(||)判断至少一个条件、使用逻辑非(!)判断单个条件的否定,以及嵌套if语句和使用括号明确优先级。

hiberfil.sys是什么文件?hiberfil.sys可以删除吗? hiberfil.sys是什么文件?hiberfil.sys可以删除吗? Mar 15, 2024 am 09:49 AM

  最近有很多网友问小编,hiberfil.sys是什么文件?hiberfil.sys占用了大量的C盘空间可以删除吗?小编可以告诉大家hiberfil.sys文件是可以删除的。下面就来看看详细的内容。hiberfil.sys是Windows系统中的一个隐藏文件,也是系统休眠文件。通常存储在C盘根目录下,其大小与系统安装内存大小相当。这个文件在计算机休眠时被使用,其中包含了当前系统的内存数据,以便在恢复时快速恢复到之前的状态。由于其大小与内存容量相等,因此它可能会占用较大的硬盘空间。  hiber

自媒体到底是什么?它的主要特点和功能有哪些? 自媒体到底是什么?它的主要特点和功能有哪些? Mar 21, 2024 pm 08:21 PM

随着互联网的快速发展,自媒体这个概念已经深入人心。那么,自媒体到底是什么?它有哪些主要特点和功能呢?接下来,我们将一一探讨这些问题。一、自媒体到底是什么?自媒体,顾名思义,就是自己就是媒体。它是指通过互联网平台,个人或者团队可以自主创建、编辑、发布和传播内容的信息载体。不同于传统媒体,如报纸、电视、电台等,自媒体具有更强的互动性和个性化,让每个人都能成为信息的生产者和传播者。二、自媒体的主要特点和功能有哪些?1.低门槛:自媒体的崛起降低了进入媒体行业的门槛,不再需要繁琐的设备和专业的团队,一部手

PHP 8 新特性:增加了验证和签名 PHP 8 新特性:增加了验证和签名 Mar 27, 2024 am 08:21 AM

PHP8是PHP的最新版本,为程序员带来了更多的便利和功能。这个版本特别关注安全性和性能,其中一个值得注意的新特性是增加了验证和签名功能。在本文中,我们将深入了解这些新的功能及其用途。验证和签名是计算机科学中非常重要的安全概念。它们通常用于确保传输的数据是完整和真实的。在处理在线交易和敏感信息时,验证和签名变得尤为重要,因为如果有人能够篡改数据,可能会对

See all articles