検索
ホームページバックエンド開発PHPチュートリアルPHPファイルアップロードプログラムコード_PHPチュートリアル

PHPファイルアップロードプログラムコード_PHPチュートリアル

Jul 20, 2016 am 11:12 AM
phpアップロードコード私たち検索書類使用プログラム親切

あとはファイルアップロードクラスをたくさん探すだけですが、実際に役立つアップロードクラスはあまりありません。私が長年使用しているこのファイルアップロードクラスを紹介します。非常に優れたコードです。参考資料 1 を参照してください。

phpがファイルを処理します

上記のクラスファイルを呼び出し、以下のように動作します

コードは次のとおりです コードをコピーします

/**
*ファイルアップロードクラス
*/
class UploadFile {

public $max_size = '1000000';//アップロードを設定しますファイル サイズ
public $ file_name = 'date';//名前変更方法は時間に基づいて名前を付けることを意味し、他の人は指定された名前を使用します
public $allow_types;//アップロードできるファイル拡張子、異なるファイル タイプは " で区切られます。 |"
public $errmsg = '';//エラーメッセージ
public $uploaded = '';//アップロードされたファイル名(ファイルパスを含む)
public $save_path;//アップロードされたファイルの保存パス
private $files;//アップロードを待機している送信済みファイル
private $file_type = array();//ファイル タイプ
private $ext = '';//アップロード ファイル拡張子

/**
* コンストラクター、初期化クラス
* @access public
* @param string $file_name アップロード後のファイル名
* @param string $save_path アップロードされた対象フォルダー
*/
public function __construct($save_path = './upload/ ',$file_name = 'date',$allow_types = '') {
= (preg_match('// $/',$save_path)) $save_path : '/';
$allow_types rar' : $allow_types;
}

/**
* files * @Accesspublic
* @param $ファイルアップロードを待っているファイル(フォームから$ _files [])
*/
public function Upload_file($files) {
$name = $files['name'];
$type = $files['type ']; $ size = $ files [' size ']; ';
休憩;
;
ファイルサイズを検出します
if($size > $this->max_size){ ‐ ‐ ファイル サイズの確認、サポートされる最大ファイル数 .ceil($this- >max_size/1024).'kb ; //ファイルの保存パスを設定します
$new_name = $this->file_name != 'date' ? this->ext:date('YmdHis').' .' $ This-& gt; $ this-& gt; を設定します。 new_name; iLe ($ tmp_name,$this->uploaded)){
$this->errmsg = 'ファイルuploaded.'正常にアップロードされました。 ';
。 ';
$this->get_file_type($filename);
$this ->ext = $ext;
= explode('|',$this->allow_types);//ファイル拡張子を分割する配列へのアップロードが許可されています
この拡張子は、アップロードが許可されているファイル拡張子の中にありますか?使用する 使用する 使用する 使用する 使用する 使用する 使用する 使用する 使用する ‐ ‐ 使用する 使用する 全体的に使用する オフ ‐ オフ オフ ‐ ‐‐‐‐ オフバックの許可するには、 ;'.$filename.'タイプ エラー。'.str_replace('|',',',$this->allow_types) のアップロードのみをサポートします。'< ;/font> ;ファイル タイプを待っています!';
,, , ,$info = pathinfo($filename);
$ext = $info['extension'];
$ex t; ;save_path = (preg_match('//$/',$this->save_path)) ? ->save_path : $this->save_path . '/';
if(!is_dir($this-> ;save_path)){
= null) {
gt;errmsg = '作成する必要があります フォルダはすでに存在します。 ';
} $ $ DIR = Explode ('/', $ DIR);
Foreach ($ DIR AS $ v) {
$ d.'/'; $ d){$ state&lt; font&gt; ' }
public $mark_str = 'kickflip@php100'; //ウォーターマーク文字列
public $str_r = 0; //文字列の色 R
public $str_b = 0; color B
public $mark_ttf = './upload/SIMSUN .TTC'; //透かしテキストフォントファイル(パスを含む)
public $mark_logo = './upload/logo.png' //透かし画像
public $resize_h; ;//サムネイルの高さを生成
public $resize_w;/ /サムネイルの幅を生成
public $source_img;//ソース画像ファイル
public $dst_path = './upload/';//サムネイルファイルの保存ディレクトリ、空白の場合はがソース画像保存ディレクトリになります

/**
* 生成後にサムネイル画像を生成します
* @access public
* @param integer $w 縮小画像の幅(px)
* @param integer $h 縮小画像の高さ(px)
* @param string $source_img 元画像(パス+ファイル名) )
*/U Public Function Img_resize e_img; // ソース ファイルが空の場合はアドレスを取得します デフォルトは最後にアップロードされた画像です
そうそうそうそうそうそうはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはい
$this->source_img = $source_img? ; >resize_w = $w;
$this->resize_hを使用して、 / / ターゲット フォルダーのパスを取得します
$ dst_path = (preg_match ('// $/', $ dst_path)? ($dst_path)) $this->set_dir($dst_path); // 対象のフォルダーが存在しない場合は作成します
$dst_name = $this->set_newname($source_img);親指,$dst_name); //出力画像
imagedestroy($); ,$mark_postion = 2) {
$source_img = $source_img == NULL ? $this->uploaded: $source_img;// ソース ファイルのアドレスを取得します。空、それは最終的なアップロードされた画像
is_file($ source_img)){// Source Imageが存在するかどうかを確認しますSource_img); et_mark_xy ($ Mark_postion); // ウォーターマークの位置を取得します
$mark_color = imagecolorallocate($source,$this->str_r,$this->str_g,$this->str_b);を使用use using use - using using using through out out out out out out out out through outole outce Through out let out off off off's ' through ,$source_img);
Break;

case 2: //中国語の文字列透かしを追加します
使用する 使用する 使用する 使用するthis->mark_ttf.'存在しません!' ;//文字エンコーディングを変換する GBKエンコーディングを使用している場合は、 のコメントを削除してください。この行
imagettftext($source,12,0,$mark_xy[2],$mark_xy[3],$mark_color,$this->mark_ttf,$str) ;
$this-> 透かしロゴがありますロゴ画像の基本情報を取得します
$logo_info = getimagesize($this->mark_logo);使用する 使用する 使用する 使用する ' を使用する ' を使用する ' を使用する - を使用する‐ ‐ ‐‐ 取得するビット画像。 ->mark_logo.' ' ; || $logo_info[1]>$img_info[1]) { //ソース画像がロゴのサイズより小さい場合は終了
$this->errmsg = '透かしの挿入に失敗しました: ソース画像'.$this ->source_img.' は '.$this->mark_logo.' よりも優れています。 '; false y [4]、$ mark_xy [0、0、$ logo_info [1])$stre_w = strlen($this->mark_str)*9+5; //ウォーターマークの英語文字列の長さ (px) (サイズ 5 の英語の文字サイズは、美しさを考慮して約 9px プラス 5px)
数字の漢字のサイズは 12px で、UTF8 での漢字の長さは 3 バイト、バイト数は 4px、英語の文字長はバイト数 * 7px) です。 ‐ - - - - - - −-- - - - −-- - - −-- −-- −-- −-- −-- - ‐--- ‐-- ‐ ‐ ‐ − −°− −±き){mark_logo){{ //透かしのロゴ画像がある場合は、ロゴ画像の基本情報を取得します。そのため、ポジションは異なります。 s ' through out's through out using ' through through through ' s ' through ' s ‐ ‐ ‐ ‐‐‐ case 1: // 左下隅に配置します
5; // ウォーターマークの中国語文字列座標 mark_xy[5] = $img_info[1] ]-$logo_info[1]-5;//透かし画像座標 Y
Break; //透かし中国語文字列座標 ; //透かし画像座標 $mark_xy[0] = 5; // 透かし英語文字列座標 X $ mark_xy [3] = 15; // 透かし中国語文字列座標 y
$ MARK_XY [4] = 5 // 透かし画像座標 x
$ MARK_XY [5] = 5;透かし画像の座標 y
bream; 4 ケース 4: // 右上隅の位置
$ Mark_xy [0] = $ img_info [0]-$ stre_w; // 透かしの英語文字列座標 x
$ Mark_xy [1] = 5 ; // ウォーターマークの英語の文字列座標 Y
$mark_xy[2] = $img_info[0]-$strc_w;$mark_xy[4] = $img_info[0]-$logo_info[0]-5;//透かし画像の座標 その他はデフォルトで右下隅に配置されます
$mark_xy[0] = $img_info[0]-$stre_w;ウォーターマークの英語の文字列座標 座標 Y
$mark_xy[2] = $img_info[0]-$strc_w; // ウォーターマークの中国語の文字列座標 $mark_xy[4] = $img_info[0]-$logo_info[0]-5;//ウォーターマークの座標Y
);
* ソース画像の作成
* @access private
* @param string $source_img ソース画像 (パス + ファイル名)
* @return img ターゲットファイルから画像を作成
*/
プライベート関数 set_newname($sourse_img) {
$info = pathinfo ($sourse_img);
$new_name = $this->resize_w.'_'.$this->resize_h.'_'. $info['basename'];// ファイル名を次のように変更します: width_height _ ファイル名
if ($ this- & gt; dst_path == '') {// サムネイルのパスが空として保存されている場合、デフォルトは次のようになります。ソースファイルと同じファイル
$ dst_name = strplace ($ info ['basename'], $ new_name,$sourse_img);
}else{
} $dst_name = $this->dst_path.$new_name;
}
return $dst_name;
}

/**
* 出力画像
* @access private
* @param $im 処理画像
* @param $dst_name 出力画像名(パス+ファイル名)
* @return 出力画像
*/
public function img_output($im,$dst_name) {
$ info = getimagesize($ this->source_img);
switch ($info[2]){
case 1:
if(!function_exists('imagegif')){
imagejpeg($im,$dst_name);
} else{
休憩。
:

使い方



コードは以下の通りです

コードをコピー




< ;title>ファイルをアップロード

> ;


コードは以下の通りです コードをコピー

$action =addslashes($_GET['action']) ;
if( $action ==="udd")
{
$state=uploadfile('uploadfile');
//echo $state['err'];exit;
if($state['err'] ){
die('< ;script>alert("アップロード エラー: '.$state['err'].'");history.go(-1);');
}
else
{
echo 'ファイルはアップロードされました!削除して再アップロード';

}


}
else{
echo '';
echo '

';
echo ' ';
echo '
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッション固定攻撃をどのように防ぐことができますか?セッション固定攻撃をどのように防ぐことができますか?Apr 28, 2025 am 12:25 AM

セッション固定攻撃を防ぐための効果的な方法には、次のものがあります。1。ユーザーがログインした後にセッションIDを再生します。 2。安全なセッションID生成アルゴリズムを使用します。 3。セッションタイムアウトメカニズムを実装します。 4。HTTPSを使用したセッションデータを暗号化します。これらの措置は、セッションの固定攻撃に直面するときにアプリケーションが破壊されないようにすることができます。

セッションレス認証をどのように実装しますか?セッションレス認証をどのように実装しますか?Apr 28, 2025 am 12:24 AM

セッションのない認証の実装は、サーバー側のセッションストレージなしですべての必要な情報がトークンに保存されるトークンベースの認証システムであるJSonWebtokens(JWT)を使用することで実現できます。 1)JWTを使用してトークンを生成および検証する、2)トークンが傍受されるのを防ぐためにHTTPSが使用されることを確認する、3)クライアント側にトークンを安全に保存する、4)改ざんを防ぐためにサーバー側のトークンを検証する、5)短期アクセスや長期的なリフレイを使用するなどのトークンの取り消しメカニズムを実装する。

PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?Apr 28, 2025 am 12:24 AM

PHPセッションのセキュリティリスクには、主にセッションハイジャック、セッションの固定、セッション予測、およびセッション中毒が含まれます。 1。HTTPSを使用してCookieを保護することにより、セッションハイジャックを防ぐことができます。 2。ユーザーがログインする前にセッションIDを再生することにより、セッションの固定を回避できます。3。セッションの予測は、セッションIDのランダム性と予測不可能性を確保する必要があります。 4.セッションの中毒は、セッションデータを確認およびフィルタリングすることで防ぐことができます。

PHPセッションをどのように破壊しますか?PHPセッションをどのように破壊しますか?Apr 28, 2025 am 12:16 AM

PHPセッションを破壊するには、最初にセッションを開始してから、データをクリアしてセッションファイルを破壊する必要があります。 1。Session_start()を使用してセッションを開始します。 2。Session_unset()を使用して、セッションデータをクリアします。 3.最後に、session_destroy()を使用してセッションファイルを破壊して、データのセキュリティとリソースのリリースを確保します。

PHPのデフォルトセッションの保存パスをどのように変更できますか?PHPのデフォルトセッションの保存パスをどのように変更できますか?Apr 28, 2025 am 12:12 AM

PHPのデフォルトセッションの保存パスを変更する方法は?次の手順で達成できます。Session_save_path( '/var/www/sessions'); session_start(); PHPスクリプトで、セッション保存パスを設定します。 session.save_path = "/var/www/sessions"をphp.iniファイルに設定して、セッションの保存パスをグローバルに変更します。 memcachedまたはredisを使用して、ini_set( 'session.save_handler'、 'memcached')などのセッションデータを保存します。 ini_set(

PHPセッションに保存されているデータをどのように変更しますか?PHPセッションに保存されているデータをどのように変更しますか?Apr 27, 2025 am 12:23 AM

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

PHPセッションに配列を保存する例を示します。PHPセッションに配列を保存する例を示します。Apr 27, 2025 am 12:20 AM

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

Garbage CollectionはPHPセッションでどのように機能しますか?Garbage CollectionはPHPセッションでどのように機能しますか?Apr 27, 2025 am 12:19 AM

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。