백엔드 개발 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vivox100s와 x100의 차이점: 성능 비교 및 ​​기능 분석 vivox100s와 x100의 차이점: 성능 비교 및 ​​기능 분석 Mar 23, 2024 pm 10:27 PM

vivox100s와 x100 휴대폰은 모두 in vivo 휴대폰 제품군의 대표적인 모델입니다. 두 휴대폰은 각각 서로 다른 시대의 vivo 첨단 기술 수준을 대표하므로 디자인, 성능, 기능 면에서 일정한 차이가 있습니다. 이번 글에서는 소비자들이 자신에게 꼭 맞는 휴대폰을 선택할 수 있도록 두 휴대폰을 성능비교와 기능분석 측면에서 자세히 비교해보겠습니다. 먼저 vivox100s와 x100의 성능 비교를 살펴보겠습니다. vivox100s에는 최신 기술이 탑재되어 있습니다.

0x80004005 오류 코드가 나타나는 경우 수행할 작업 편집기에서 0x80004005 오류 코드를 해결하는 방법을 알려줍니다. 0x80004005 오류 코드가 나타나는 경우 수행할 작업 편집기에서 0x80004005 오류 코드를 해결하는 방법을 알려줍니다. Mar 21, 2024 pm 09:17 PM

컴퓨터에서 폴더를 삭제하거나 압축을 풀 때 "오류 0x80004005: 지정되지 않은 오류"라는 프롬프트 대화 상자가 나타나는 경우가 있습니다. 이러한 상황이 발생하면 어떻게 해야 합니까? 실제로 오류 코드 0x80004005가 나타나는 데에는 여러 가지 이유가 있지만 대부분은 바이러스로 인해 발생합니다. 문제를 해결하기 위해 dll을 다시 등록할 수 있습니다. 아래에서는 편집기에서 0x80004005 오류 코드를 처리한 경험을 설명합니다. . 일부 사용자는 컴퓨터를 사용할 때 오류 코드 0X80004005가 표시됩니다. 0x80004005 오류는 주로 컴퓨터가 특정 동적 링크 라이브러리 파일을 올바르게 등록하지 않거나 컴퓨터와 인터넷 간의 HTTPS 연결을 허용하지 않는 방화벽으로 인해 발생합니다. 그렇다면 어떨까요?

여러 조건을 판단하기 위해 C 언어로 작성하는 방법 여러 조건을 판단하기 위해 C 언어로 작성하는 방법 Mar 25, 2024 pm 03:24 PM

C 언어에서 if 문은 일반적으로 단일 조건에 따라 특정 코드 블록을 실행하는 데 사용됩니다. 그러나 여러 조건을 결합하여 &&, || 및 !와 같은 논리 연산자를 사용하여 결정을 내릴 수 있습니다. 여러 조건을 판단하기 위해 논리적 AND(&&)를 사용하고, 하나 이상의 조건을 판단하기 위해 논리적 OR(||)를 사용하고, 단일 조건의 부정을 판단하기 위해 논리적 NOT(!)을 사용하고, if 문을 중첩하고 괄호를 사용하는 것을 포함합니다. 우선순위를 명확히 하기 위해.

Quark Cloud Disk에서 Baidu Cloud Disk로 파일을 전송하는 방법은 무엇입니까? Quark Cloud Disk에서 Baidu Cloud Disk로 파일을 전송하는 방법은 무엇입니까? Mar 14, 2024 pm 02:07 PM

Quark Netdisk와 Baidu Netdisk는 현재 파일 저장에 가장 일반적으로 사용되는 Netdisk 소프트웨어입니다. Quark Netdisk의 파일을 Baidu Netdisk에 저장하려면 어떻게 해야 합니까? 이번 호에서는 편집자가 Quark Network Disk 컴퓨터에서 Baidu Network Disk로 파일을 전송하는 방법에 대한 튜토리얼 단계를 정리했습니다. Quark 네트워크 디스크 파일을 Baidu 네트워크 디스크에 저장하는 방법은 무엇입니까? Quark Network Disk에서 Baidu Network Disk로 파일을 전송하려면 먼저 Quark Network Disk에서 필요한 파일을 다운로드한 다음 Baidu Network Disk 클라이언트에서 대상 폴더를 선택하고 열어야 합니다. 그런 다음 Quark Cloud Disk에서 다운로드한 파일을 Baidu Cloud Disk 클라이언트가 연 폴더에 끌어서 놓거나 업로드 기능을 사용하여 Baidu Cloud Disk에 파일을 추가합니다. 업로드가 완료된 후 파일이 Baidu Cloud Disk에 성공적으로 전송되었는지 확인하세요. 그게 다야

WeChat 친구 지원 인증으로 차단을 해제하는 자세한 방법 WeChat 친구 지원 인증으로 차단을 해제하는 자세한 방법 Mar 25, 2024 pm 01:26 PM

1. WeChat을 연 후 검색 아이콘을 클릭하고 WeChat 팀을 입력한 후 아래 서비스를 클릭하여 들어갑니다. 2. 입력 후 좌측 하단의 셀프 서비스 도구 옵션을 클릭하세요. 3. 클릭 후, 위 옵션 중 보조검증 차단해제/이의제기 옵션을 클릭해 주세요.

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 드라이브의 루트 디렉터리에 저장되며 크기는 시스템에 설치된 메모리 크기와 동일합니다. 이 파일은 컴퓨터가 최대 절전 모드일 때 사용되며, 복구 시 빠르게 이전 상태로 복원할 수 있도록 현재 시스템의 메모리 데이터를 담고 있습니다. 크기가 메모리 용량과 동일하므로 하드 드라이브 공간을 더 많이 차지할 수 있습니다. 동면

셀프미디어란 정확히 무엇인가? 주요 특징과 기능은 무엇입니까? 셀프미디어란 정확히 무엇인가? 주요 특징과 기능은 무엇입니까? Mar 21, 2024 pm 08:21 PM

인터넷의 급속한 발전으로 셀프미디어라는 개념은 사람들의 마음속에 깊이 뿌리내렸습니다. 그렇다면 셀프미디어란 정확히 무엇인가? 주요 특징과 기능은 무엇입니까? 다음에는 이러한 문제를 하나씩 살펴보겠습니다. 1. 셀프미디어란 정확히 무엇인가? We-media는 이름에서 알 수 있듯이 당신이 미디어라는 뜻입니다. 개인이나 팀이 인터넷 플랫폼을 통해 콘텐츠를 독립적으로 생성, 편집, 출판 및 전파할 수 있는 정보 매체를 말합니다. 신문, 텔레비전, 라디오 등과 같은 전통적인 미디어와 달리 셀프 미디어는 더욱 상호작용적이고 개인화되어 있어 모든 사람이 정보의 생산자이자 전파자가 될 수 있습니다. 2. 셀프미디어의 주요 특징과 기능은 무엇입니까? 1. 낮은 문턱: 셀프미디어의 등장으로 미디어 산업에 진출하기 위한 문턱이 낮아졌습니다. 더 이상 번거로운 장비와 전문팀이 필요하지 않습니다.

Xiaohongshu 계정 관리 소프트웨어의 기능은 무엇입니까? Xiaohongshu 계정을 운영하는 방법은 무엇입니까? Xiaohongshu 계정 관리 소프트웨어의 기능은 무엇입니까? Xiaohongshu 계정을 운영하는 방법은 무엇입니까? Mar 21, 2024 pm 04:16 PM

Xiaohongshu가 젊은이들 사이에서 인기를 끌면서 점점 더 많은 사람들이 이 플랫폼을 사용하여 자신의 경험과 인생 통찰력의 다양한 측면을 공유하기 시작했습니다. 여러 Xiaohongshu 계정을 효과적으로 관리하는 방법이 중요한 문제가 되었습니다. 이 글에서는 Xiaohongshu 계정 관리 소프트웨어의 일부 기능에 대해 논의하고 Xiaohongshu 계정을 더 잘 관리하는 방법을 살펴보겠습니다. 소셜 미디어가 성장함에 따라 많은 사람들이 여러 소셜 계정을 관리해야 한다는 사실을 깨닫게 되었습니다. 이는 Xiaohongshu 사용자에게도 어려운 과제입니다. 일부 Xiaohongshu 계정 관리 소프트웨어는 자동 콘텐츠 게시, 예약 게시, 데이터 분석 및 기타 기능을 포함하여 사용자가 여러 계정을 보다 쉽게 ​​관리할 수 있도록 도와줍니다. 이러한 도구를 통해 사용자는 자신의 계정을 보다 효율적으로 관리하고 계정 노출과 관심을 높일 수 있습니다. 또한 Xiaohongshu 계정 관리 소프트웨어에는

See all articles