其他功能

转自php汉语客商5. 其余杂项 5.1 生成图像
PHP能够操作管理图像。假若你已经安装了GD库,你居然足以应用PHP生成图像。
? Header(“Content-type: image/gif”卡塔尔; $string=implode($argv,” “卡塔尔国; $im =
imagecreatefromgif(“images/button1.gif”卡塔尔国; $orange =
ImageColorAllocate($im, 220, 210, 60State of Qatar; $px =
(imagesx($imState of Qatar-7.5*strlen($stringState of Qatar卡塔尔/2;
ImageString($im,3,$px,9,$string,$orangeState of Qatar; ImageGif($imState of Qatar;
ImageDestroy($imState of Qatar; ? 这段代码在别的页面中通过以下标识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($VisitedBeforeState of Qatar卡塔尔国 { //
若无设定cookie,为cookie赋上方今时间值 //
函数中的最后三个参数表明了该cookie保存的时间 // 在此个事例中是1年 //
time(卡塔尔国函数再次回到自1969年十15月1日的话的以秒数计的时日
SetCookie(“VisitedBefore”,time(卡塔尔(قطر‎, time(State of Qatar+(60*60*24*365卡塔尔卡塔尔(قطر‎; } else { //
招待浏览者再度光降 echo “Hello there, welcome backB福睿斯”; //
读取cookie并决断 if ( (time(State of Qatar – $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”; exit; } else { if (
!($PHP_AUTH_USER==”tnc” $PHP_AUTH_PW==”nature”卡塔尔国 State of Qatar { //
假诺是不分青红皂白的用户名称/密码对,强制再作证 Header(“WWW-Authenticate: Basic
realm=”My Realm””State of Qatar; Header(“HTTP/1.0 401 Unauthorized”卡塔尔(قطر‎; echo “E索罗德ROTucson :
$PHP_AUTH_USER/$PHP_AUTH_PW is invalid.”; exit; } else { echo
“Welcome tnc!”; } ?
事实上再实际引用中十分的小只怕如下面运用代码段显著的客户名称/密码对,而是使用数据库只怕加密的密码文件存取它们。
5.4 文件上传
你能够利用PHP达成文件的功效,注意顾客端的浏览器应该是Netscape3以上或然IE3以上。以下正是该作用的简便演示:
( upload.html State of Qatar: HTML HEAD TITLEUpload 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″ BRBR INPUT TYPE=”SUBMIT”
VALUE=”Upload File!” NAME=”sendit” INPUT TYPE=”SUBMIT” VALUE=”Cancel”
NAME=”cancelit”BCR-V /FORM IFONT 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 TITLEphp3 Receiving Script/TITLE /HEAD
BODY ? if ( $error_msg ) { echo “B$error_msg/BBRBR”; } if ( $sendit )
{ do_upload (); } elseif ( $cancelit ) { header ( “Location:
$some_other_script” ); exit; } else { some_other_func (State of Qatar; } ? /BODY
/HTML 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 “P ALIGN=”CENTECR-V” | “; 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($fpState of Qatar; if ( $entry == basename($PHP_SELFState of Qatar State of Qatar echo “$linknm”;
    else echo “A HREF=”$entry”$linknm/A”; echo ” | “; } $d-close(卡塔尔(قطر‎; echo ”
    /P”; ? 照片收藏夹
    我们将引用基于HTTP的表明、文件系统函数和文件上传效用维护放置图像文件的目录。
    同时我们要求建构三个足以列出在该目录下有所照片的页面。 文件上传 ?
    include(“include/common.inc”State of Qatar; // 大家在那地再做贰遍顾客验证
    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”; 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
    “E福特ExplorerRO昂Cora : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.P”; 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,VCD…
    rename($userfile, $local_file); echo “The file is uploadedBR”; echo “A
    HREF=”$HTTP_REFERE奥迪Q3″Go Back/ABKuga”; } $title = “Upload File”;
    include(“include/header.inc”卡塔尔(قطر‎; if (empty($userfile卡塔尔(قطر‎ ||
    $userfile==”none”State of Qatar { // 输出以下表单 ? FORM ACTION=”? echo
    “$PHP_SELF”; ?” ENCTYPE=”multipart/form-data” METHOD=POST INPUT
    TYPE=”HIDDEN” NAME=”MAX_FILE_SIZE” VALUE=”2000000″ INPUT TYPE=”FILE”
    NAME=”userfile” SIZE=”24″ MAXLENGTH=”80″ BRBR INPUT TYPE=”SUBMIT”
    VALUE=”Upload File!” NAME=”sendit” INPUT TYPE=”SUBMIT” VALUE=”Cancel”
    NAME=”cancelit”BR /FORM IFONT SIZE=”2″(You may notice a slight delay
    while we upload your file.)/FONT/I ? } else { if ( $error_msg ) { echo
    “B$error_msg/BBRBR”; } if ( $sendit ) { do_upload (卡塔尔; } }
    include(“include/footer.inc”卡塔尔国; ? 照片图库 ?
    include(“include/common.inc”State of Qatar; $title = “Gallery”;
    include(“include/header.inc”卡塔尔; ? P Here are some of our family photos.
    This PHP script can really be made better, by splitting into multiple
    pages. /P ? $d = dir(“photos”卡塔尔(قطر‎; while($entry = $d-read(卡塔尔卡塔尔(قطر‎ { if
    (is_file(“photos/$entry”卡塔尔国卡塔尔(قطر‎ echo “IMG SRC=”photos/$entry””; }
    $d-close(卡塔尔国; ? ? include(“include/footer.inc”卡塔尔国; ?
    其它,你能够在文书上传的表单中拉长二个输入成分去陈诉该上传的文书。这几个成分将被积攒在文书中,然后被上述的照片图库的那段代码所读出并呈现出来。

发表评论

电子邮件地址不会被公开。 必填项已用*标注