PHP とサーバー ファイル システム間のシンプルな対話
php.ini中关于文件上传的设置指令
文件上传过程
(1)上传文件提交表单html代码:
<!--向服务器上传文件的HTML表单(限制为文本文件)--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Adminstration - upoload new files</title> </head> <body> <h1>Upload new files</h1> <form action="upload.php" method="post" enctyple="multipart/form-data" > <!--enctyple:规定在发送到服务器之前对表单数据进行编码的方式(在上传控件时必须按照以上方式设置该属性)--> <div> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <!--规定传输文件的最大字节数--> <label for="userfile">Upload a file</label> <!--在<label>内点击文本,会触发该控件,此时浏览器会自动对焦到标签for属性所指向的表单控件上面--> <input type="file" name="userfile" id="userfile"> <!--id属性为<label>标签for所指向控件元素的id号--> <input type="submit" value="Send File"> </div> </form> </body> </html>
(2)php处理上传文件代码
①在php脚本中,需要处理的数据保存在超级变量数组$_FILES中,开启register_globals指令可以直接通过变量名访问这些信息;
②假如表单变量名为“username“则有:
$_FILES['userfile']['tmp_name']:储存文件在Web服务器中的临时保存位置;
$_FILES['userfile']['name']:储存用户系统中文件的名称;
$_FILES['userfile']['size']:储存文件的大小;
$_FILES['userfile']['type']:储存文件的类型;
$_FILES['userfile']['error]:储存任何与文件上传相关的错误代码;
错误类型说明:
UPLOAD_ERR_INI_SIZE:1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE:2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL:3,文件只有部分被上传。
UPLOAD_ERR_NO_FILE:4,没有文件被上传。
UPLOAD_ERR_NO_TMP_DIR:6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
UPLOAD_ERR_CANT_WRITE:7,文件写入失败。PHP 5.1.0 引进。
③php代码
<?php //检验文件传输异常 if($_FILES['userfile']['error']>0){ echo 'Problem'; switch($_FILES['userfile']['error']){ case 1: echo 'File exceeded upload_max_filesize';break; case 2: echo 'File exceeded max_file_size';break; case 3: echo 'File only partially upload';break; case 4: echo 'No file uploaded';break; case 6: echo 'Cannot upload file: No temp directory specified';break; case 7: echo 'Upload failed:Cannot write to disk';break; } exit; } //检验传输的文件是否为文本文件 if($_FILES['userfile']['type'] != 'text/plain'){ echo 'Problem: file is not plain text'; exit; } //将上传文件包含在服务器中/uploads/的目录下(该目录必须独立于Web文档树) $upfile = '/uploads/'.$_FILES['userfile']['name']; //在指定目录下以传输文件的文件名创建一个新文件 if(is_uploaded_file($_FILES['userfile']['tmp_name'])){ if(! move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){ //将传输文件的临时文件移动到创建的新文件 echo 'Problem: Could not move file to destination directory'; exit; } } else{ echo 'Problem: Possible file upload attack.Filename:'; echo $_FILES['username']['name']; exit; } echo "File uploaded seuucessfully<br/><br/>"; //对传输文件清除html和php标记 $contents = file_get_contents($upfile); //将文件内容提取为一个字符串; $contents = strip_tags($contents); //对该字符串擦除html和tags标记; file_put_contents($_FILES['userfile']['name'],$contents); //将该字符串重新写入文件中; //在浏览器上显示传输的文本文件内容 echo "<p>Preview of uploaded file contents:<br/><hr>>"; echo nl2br($contents); echo "</br></hr>";
3、使用目录函数
(1)从目录中读取文件名
①使用opendir(),readdir(),closedir()函数;
<?php $current_dir = '/uploads/'; //创建目录url对象 $dir = opendir($current_dir); //打开目录,结果返回一个目录对象 echo "<p>Upload directory is $current_dir</p>"; echo "<p>Directory Listing:</p><ul>"; while(($file = readdir($dir)) !== false){ //读取目录对象 if($file != "." && $file != ".."){ //过滤当前目录和上一级目录 echo "<li>$file</li>"; echo "<a href=\"filedetails.php?file=\'.$file.\'\">".$file."</a><br/>"; } } echo "</ul>"; closedir($dir); //关闭目录; ?>
②使用php的dir类
<?php $current_dir = '/uploads/'; //创建目录url对象 $dir = dir($current_dir); //创建dir对象 echo "<p>Handle is $dir->handle</p>"; echo "<p>Upload directory is $current_dir</p>"; echo "<p>Directory Listing:</p><ul>"; while(($file = $dir->read()) !== false){ //通过dir对象读取目录下的文件名 if($file != "." && $file != ".."){ echo "<li>$file</li>"; } } echo "</ul>"; $dir->close(); //关闭目录 ?>
(2)使用scandir()函数对文本名称进行字母表的排序方式
<?php $current_dir = '/uploads/'; //创建目录url对象 $files1 = scandir($current_dir); //将指定目录下的文件名保存为一个数组,默认以字母升序排序 $files2 = scandir($current_dir,1); //将指定目录下的文件名保存为一个数组,以字母降序排序 echo "<p>Upload directory is $current_dir</p>"; echo "<p>Directory Listing in alphabetical order,ascending:</p><ul>"; foreach($files1 as $file1) { if($file1 != "." && $file1 != "..") echo "<li>$file1</li>"; } echo "</ul>"; ?>
(3)获取当前目录的其他信息
dirname($path):返回路径的目录部分;
basename($path):返回路径的名称部分;
disk_free_space($path):返回路径所在磁盘可以保存上传文件的容量;
(4)创建和删除目录
①mkdir():创建目录;
代码:
$oldumask = umask(0); //重置当前权限码 mkdir("/tmp/testing",0777); //创建目录 umask($oldumask); //恢复当前权限码
②rmdir():删除目录;
代码:
rmdir("/temp/testing"); 或rmdir("c:\\tmp\\testing');
※要删除的目录必须是空目录;
4、与文件系统的交互
(1)获取文件信息:
while(($file = readdir($dir)) !== false){ echo "<a href=\"filedetails.php?file=\'.$file.\'\">".$file."</a><br/>"; } <?php $current_dir = '/uploads/'; $file = basename($file); //获取文件文件名 echo "<h1>Details of file</h1>"; echo "<h2>File data</h2>"; echo 'File last accessed: '.date('j F Y H:i',fileatime($file))."<br>"; //返回最近访问的时间戳 echo 'File last modifixed: '.date('j F Y H:i',filemtime($file))."<br>"; //返回最近修改的时间戳 $user = posix_getpwuid(fileowner($file)); //返回用户标识uid echo 'File owner: '.$user['name']."<br/>"; $group = posix_getgrgid(filegroup($file)); //返回组织标识gid echo 'File group: '.$group['name']."<br/>"; echo 'File permissions: '.decoct(fileperms($file))."<br/>"; //返回8位的权限码 echo 'File type'.filetype($file)."<br/>"; //返回文件类型 echo 'File size'.filesize($file)."<br/>"; //返回文件字节数 echo "<h2>File Tests</h2>"; echo 'is_dir?'.(is_dir($file) ? 'true':'false')."<br/>"; echo 'is_executable?'.(is_executable($file) ? 'true':'false')."<br/>"; //判断文件是否可执行; echo 'is_file?'.(is_file($file) ? 'true':'false')."<br/>"; echo 'is_link?'.(is_link($file) ? 'true':'false')."<br/>"; echo 'is_readable?'.(is_readable($file) ? 'true':'false')."<br/>"; echo 'is_writable?'.(is_writable($file) ? 'true':'false')."<br/>"; ?>
(2)更改文件属性
chgrp(file,group):修改文件的分组;
chmod(file,permissions):修改文件的权限;
chown(file,user):修改文件的所有者;
(3)创建、删除和移动文件
bool touch($filename,[int time,[ int atime]]):创建一个文件(time指定创建时间戳,atime指定可选时间戳)
unlink($filename):删除一个文件
copy($source_path,$destination_path):复制一个文件
rename($oldfile,$newfile):重命名一个文件;
(4)使用程序执行函数
①String exec(String command[ ,array result [ ,int result_value]])
返回命名结果的最后一行,result变量可以返回字符组数,这些字符串代表输出的每一行,result_value获取返回代码;
②void passthru(String command[ ,int result_value])
结果直接输出到浏览器;
③String system(string command[ ,int return_value])
输出结果到浏览器,返回命令结果的最后一行或false;
※在用户提交的数据包括执行命令的一部分,应该进行以下包装:
system(escapeshellcmd($command));
5、与环境变量交互
phpinfo()函数:获取php的所有变量列表;
getenv("$key_name"):
setenv("$key_name=$value");

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7
