アップロード|ターミネーター
PHP コード:---------------------------------------------- -- ----------------------------------
/*
----- --- --------------------------------------------------- --- ------------------------
クラス名: Lwguploadandquery
説明: SQL ステートメントの実行とファイルのアップロードのクラス。 Lwgupload クラス
作成者 :Long Weiguo
ネットワーク ユーザー:lwg888
電子メール:lwg888@163.com
使用、変更、配布のために作成者情報を保持してください
--------------- ---------- -------------------------------------- ------- ------------
*/
require_once(dirname(__FILE__)."/Lwgdb.inc.php");//データベース接続とクエリクラス
require_once (dirname(__FILE__)." /Lwgupload.inc.php");//親クラス
class Lwguploadandquery extends Lwgupload{
var $sql;//SQL ステートメント
var $url;// ファイルのアップロード後にリダイレクトされた URL成功しました
//重要なヒント: SQL ステートメントの記述:
//$sql=sprintf("update test1 set name='%s', image1='%s', image2='%s' where id='%d '",$_POST['name' ],"image1_name","image2_name",$_POST['id']);
//「image1_name」、「image2_name」では、image1 と image2 は、ファイルドメインの後に「_name」サフィックスが続きます。以下で見つけて変更すると便利です
function Lwguploadandquery($sql="",$uploadfield="",$url="",$uploadpath="",$ maxsize="",$ftype="all"){
$this->sql=$sql;
$this->url=$url;
$this->Lwgupload($uploadfield,$uploadpath,$ maxsize,$ftype);
}
function run() {
if (empty($this->sql))return $this->output("実行可能な SQL ステートメントがありません。 ");
if (!is_array($this->uploadfield))$this->uploadfield=array($this->uploadfield);// 配列でない場合は、配列に変更します。これにより、後続のコードが簡略化されます
if (!is_array($this->maxsize))$this->maxsize=array($this->maxsize);//上記と同じです
if (!is_array ($this->ftype))$this ->ftype=array($this->ftype);//上と同じ
$totaluploadfield=count($this->uploadfield);
for ($ i=0;$i $uploadfile=$_FILES[$this->uploadfield[$i]]['tmp_name'];
$file_name=$_FILES[$this-> Uploadfield[$i]]['name'];
$file_old=$_POST[$this->uploadfield[$i].'_old'];//更新で使用され、アップロードされたファイルに対応する元のファイルを表しますfile
$file_del=$_POST[$this->uploadfield[$i].'_del'];//元のファイルが削除対象としてマークされているかどうか
if ($uploadfile!=""&&$file_name!=" "){
//アップロードする必要があることを示します、つまりファイルフィールドに任意の文字が入力されます
$uploadfield[]=$this->uploadfield[$i];
//新しいアップロードを取得しますファイルフィールドに文字がなければアップロードする必要がないため
$maxsize[]=( !empty($this->maxsize[$i]))?$this->maxsize[$i] ]:$this->maxsize[0];
//対応するサイズ制限値を取得します
$ftype []=(!empty($this->ftype[$i]))?$this->ftype [$i]:$this->ftype[0];
//対応する型制限を取得します Value
$newfile=$this->uploadpath."/".$file_name;
//アップロードされたファイルのアドレス
$ insertname=$file_name;
//mysql テーブルに対応する、SQL 言語を変更するときに使用する必要があります。フィールドの値は、現在アップロードされているファイルの名前に変更されます
if ($file_old!="")$oldfile []=$this->uploadpath."/".sprintf('%s',$file_old);
//更新中に元のファイルのアドレスを取得し、新しいファイルがアップロードされた後に古いファイルを削除します
}
else if ($file_old!=""){
//アップロードする必要がないことを示します。つまり、ファイルフィールドに文字が入力されていませんが、古いファイルがあります
if ($file_del=="true") {
//古いファイルが削除対象としてマークされている場合
$insertname="";
//SQL 言語を変更するときに使用する必要があり、mysql テーブル内の対応するフィールドを変更します。値は空に変更されます
$oldfile []=$this->uploadpath."/".sprintf('%s',$file_old);
}
else $insertname=sprintf('%s',$file_old)
//アップロードも削除も行いませんこれは SQL 言語を変更するときに使用されます。mysql テーブルの対応するフィールドの値を元のファイル名に変更します
}
else $insertname="";
// アップロードにも元のファイルにも使用されません。 SQL 言語の場合、mysql テーブルの対応するフィールドの値を空に変更します
$this->sql=str_replace($this->uploadfield[$i]."_name", $insertname, $this -> sql);
// SQL ステートメントを変更します
}
$this->uploadfield=$uploadfield;
$this->gt;maxsize=$maxsize;
$this->ftype=$ftype;
if (count ($uploadfield)>0){
if (!$this->test($oldfile))return false;
}
//すべてアップロードできるかテスト
if (count($oldfile)>0)$this->err_del((count) ( $oldfile)-1),$oldfile);
// テストに合格したら、削除対象としてマークされた元のファイルを削除します
$db=new Lwgdb();// データベース接続とクエリ クラス
if (count($uploadfield )= =0){
if(!$db->query($this->sql)){
return $this->output("エラー: NO1、送信に失敗しました。もう一度お試しください。");
/ /NO1 は、ファイルがアップロードされず、SQL ステートメントの実行が失敗したことを意味します
}
else $this->debugstr.="sql ステートメント:'".$this->sql."'実行は成功しました
}
else {
if ($this->upload()){
if(!$db->query($this->sql)){
$this->err_del(count) ($uploadfield)- 1,$this->newfile);
//アップロードされたファイルを削除します
return $this->output("エラー: NO2、送信に失敗しました。もう一度お試しください。");
//NO1ファイルのアップロード後に SQL ステートメントの実行に失敗したことを意味します
}
else $this->debugstr.="sql ステートメント:'".$this->sql."' 正常に実行されました
";
}
}
if (!empty ($this->url))header("location:".$this->url);
}
}
/*
--------使い方---------- --------------------------------------
$uploadname =array("image1" ,"image2");
$sql=sprintf("update test1 set name='%s', image1='%s', image2='%s' where id='%d'" ,$_POST['name '],$uploadname[0].'_name',$uploadname[1].'_name',$id);
$obj=new Lwguploadandquery($sql,$uploadname,'','アップロード',array(40960 ,2048),array('jpg,gif','all'));
$obj->run();
または:
$obj=new Lwguploadandquery($sql,$uploadname, '','アップロード' ,array(40960,2048),array('jpg,gif','all'));
$obj->uploadname=array("image1","image2");
$obj ->sql=sprintf ("update test1 set name='%s', image1='%s', image2='%s' where id='%d'",$_POST['name'],$uploadname [0].'_name ',$uploadname[1].'_name',$id);
$obj->url="http://xxxxxx.com";
$obj->uploadpath="アップロード/image";
$ obj->maxsize=1024*5;
$obj->ftype='swf';
$obj->run();
---------- ------ -------------------------------------------- ----------
*/
?>
-------------------------------------- ---------------------------------------------------- -
/*
----- ----------------------------------- --------------- ----------------------------
クラス名: Lwgupload
説明: 複数ファイルアップロードクラス
作者: Long Weiguo
ネットワークユーザー:lwg888
電子メール: lwg888@163.com
使用、改変、配布する際には作者情報を保管してください
-------- ------------------------ ------------------------ ------------------------ -----
*/
class Lwgupload{
//---------- ---値を設定できる変数----- --------
var $uploadfield;//アップロードされたファイルのフィールド名
var $maxsize; //アップロードするファイルのサイズを制限します
var $file_old;//削除する必要がある古いファイル
var $uploadpath;/ /ファイルのアップロードパス
var $ftype;//アップロードするファイルの種類を制限します
var $ debug=true;//デバッグ情報またはエラー情報を表示するかどうか
//----------値を取得するために変数を使用します---------- --------
var $uploadfile;//アップロード後の一時ファイル
var $file_name;// ファイル名
var $file_size;// ファイルのサイズ
var $file_size_format;// フォーマットされた $file_size
var $file_type;//ファイルタイプ
var $debugstr="";//デバッグ情報を記録する
var $ err="";//エラー情報を記録する
//Constructor
//$uploadfieldアップロードされたファイル。複数のファイルをアップロードする場合は配列にすることができます
//$uploadpath ファイルのアップロード パス(配列にすることはできません)
/ /$maxsize は、アップロードされるファイルのサイズを制限します。複数のファイルをアップロードする場合には、配列にすることができます。 . // $ftype は、アップロードされるファイルの種類を制限します。 異なる種類のファイルを制限します。 // $ftype が 'all' の場合、タイプに制限なし
//使用する場合、$ftype の値を array('jpg,gif,png','swf','all') に設定して、3 つのアップロード ファイル制限タイプを表現できます。最初のファイルは jpg、gif、または png である必要があり、2 番目のファイルは swf である必要があり、3 番目のファイルは任意のタイプである必要があります
function Lwgupload($uploadfield="",$uploadpath="",$maxsize="",$ftype=) "すべて"){
$this->uploadfield=$uploadfield;
$this->uploadpath=$uploadpath;
$this->maxsize=$maxsize;
$this->ftype=$ftype;
}
//test() は、すべてアップロードできるかどうかをテストするために使用されます。そうでない場合は、何もアップロードしないでください
//$oldfile は、削除されるファイルを表し、更新に使用されます。古いファイルを削除して、新しいファイルをアップロードします
function test($oldfile= ''){
if ($this->uploadfield=="")return;if (empty($this->uploadpath))$this->uploadpath=dirname($_SERVER['PATH_TRANSLATED'])."/Upload";
if (empty($this->maxsize))$this ->maxsize=1048576;
if (!is_array($this->uploadfield))$this->uploadfield=array($this->uploadfield);
// 配列でない場合は、便利な配列に変更しました 以下のコードを簡略化
$total_upload=count($this->uploadfield);//フィールドの総数を取得します
if (!is_array($this->maxsize)) $this->maxsize=array($this ->maxsize);//配列でない場合は配列に変更すると、後続のコードが簡略化されます
if (!is_array($this- >ftype))$this->ftype=array($this->ftype );//上と同じ
//対応するパスがない場合は作成
if (!file_exists($this-> ;uploadpath)){
if (!mkdir($this->uploadpath,0700))return Output( "エラー! 有効なパスを手動で作成してください。");
}
include_once(dirname(__FILE__)."/ Lwgfiletype.inc.php");
//このファイルには、ほとんどのファイルタイプを記録する配列変数 $filetype が含まれています 対応する拡張子
Set_time_limit(60);// タイムアウトを 60 秒に設定します
$needupload=array() ;//テスト後にアップロードできるファイル
for ($i=0;$i $this->uploadfile[$i]=$_FILES[$this->uploadfield [$i]]['tmp_name']; //一時ファイル
$this->file_name[$i ]=$_FILES[$this->uploadfield[$i]]['name']; name
$this->file_type[$i]=$_FILES[$this->uploadfield[$i ]]['type'] //Type
$this->file_lname[$i]=strto lower( substr( strrchr($this->file_name[$i], "." ), 1 )); / /拡張子
$this->file_size[$i]=$_FILES[$this->uploadfield[$] i]]['size']; // サイズ
$this->file_old[$i]= $_POST[$this->uploadfield[$i].'_old'] // 削除するファイル
$this->newfile[$i]=$this->uploadpath."/".$this ->file_name[$i];//アップロードされたアドレス
$maxsize=(!empty($this-> ;maxsize[$i]) && $this->gt;maxsize[$i]>0) ?$this->maxsize[$i]:$this->maxsize[0];
$maxsize_value=$ this->format_maxsize($maxsize);//$maxsize のフォーマット
$thetype= (!empty($this->ftype[$i]))?$this->ftype[$i]:$this ->ftype[0];
$ftype=array();
$lname= array();
if ($thetype!="all"){
$tmp_type=explode(",",$thetype);
for ($n=0;$n
if (!empty($tmp_t)){
$s_tmp= strto lower($tmp_t);
$ftype[]=$filetype[$s_tmp];
$lname[]=$s_tmp;
}
}
}
//現在のタイプを制限するパラメータを分析します
if (($ this->file_size[$i]==0)||($this->uploadfile[$i]=="")){
return $this->output($this->uploadfield[$ i]."無効なファイルまたは 0 バイトのファイルがアップロードされました。 ");
}
if ($thetype!="all" && !in_array($this->file_type[$i],$ftype) && !in_array($this->file_lname[$i],$ lname)){
return $this->output("申し訳ありません! アップロードされたファイル形式は '".$thetype."'." のみです);
}
if ($this->file_size[$i ] > $maxsize){
return $this->output("Sorry! File'".$this->file_name[$i]."' は '".$maxsize_Value."' より大きいです、アップロードに失敗しました. nファイルを「.$maxsize_Value」以内に減らして再試行してください。 ");
}
if (file_exists($this->newfile[$i])){
if ($oldfile=="" | | ($oldfile!="" && !in_array($this->newfile[$i],$oldfile)))return $this->output("Sorry! File'".$this->file_name [ $i]."'すでに存在します。アップロードに失敗しました。ファイル名を変更して再試行してください。");
//$oldfile は削除するファイルを表します。アップロードするファイルは存在しますが、削除されます。まだアップロードできます
}
if (in_array($this->file_name[$i],$needupload)){
//同じファイルを 2 つ以上のアップロード フィールドでアップロードすることはできません
return $this - >output("Sorry! File'".$this->file_name[$i]."'重複しています。アップロードに失敗しました。ファイル名を変更してもう一度お試しください。");
}
$needupload[]= $ this->file_name[$i];
}
Set_time_limit(30);//タイムアウトを 30 秒に設定します
return true;
}
//テストに合格したらアップロードできます
関数 Upload() {
if ($this->uploadfield=="")return false;
$total_upload=count($this->uploadfield);
for ($i=0;$i $this->file_size_format[$i]=$this->format_maxsize($this->file_size[$i]);
if (@move_uploaded_file($this->uploadfile[$i],$this) ->newfile[$i]))
$this->debugstr.="ファイル'".$this->ファイル名[$i]."'(".$this->ファイルサイズ形式[$i] .")アップロードに成功しました。
";
else {
if ($i>0)$this->err_del(($i-1),$this->newfile)
//ある場合1 つのアップロードに失敗すると、アップロードされたすべてのファイルが削除されます
return $this->output("Sorry! File'".$this->file_name[$i]."'アップロードに失敗しました。もう一度お試しください。" );
}
}
return true;
}
//ファイルサイズ番号をフォーマットします
function format_maxsize($value){
if ($value elseif ($ value else $maxsize_Value =number_format((double)($value/(1024*1024)),2 )."mb";
return $maxsize_Value;
}
//エラー後にアップロードされたファイルを削除する
function err_del($i,$thefile){
while ($i>=0){
if (@unlink ($thefile[$i])!=false)$this->debugstr.="ファイル'".$thefile[$i]."'正常に削除されました
";
$i--;
}
}
//エラー情報の記録と出力
function Output($msg){
if ($msg!="")$this->err=$msg;
if ($this->debug)echo " ";
return false;
}
}
/*
-----使い方---------------------- ------------------------
$obj=Lwgupload("image1","",1024*2,"all");
if ($obj - >test())$obj->upload();
-------------------------------- - --------------------------------------
*/
?>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

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