Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Methodenbeispielen in PHP zur Feststellung, ob eine Datei hochgeladen wurde

Ausführliche Erläuterung von Methodenbeispielen in PHP zur Feststellung, ob eine Datei hochgeladen wurde

伊谢尔伦
伊谢尔伦Original
2017-06-27 14:04:185088Durchsuche

Ein qualifizierter Programmierer muss einige sehr strenge Filter- und Datenregeln anwenden, wenn er Daten in die Datenbank implementiert. Wenn wir beispielsweise Dateien hochladen, müssen wir bestimmen, ob der Benutzer die Datei hochladen möchte Gleichzeitig können Sie auch feststellen, ob im Hintergrund hochgeladene Dateien vorhanden sind. Das Beispiel in diesem Artikel wird eine detailliertere Analyse durchführen.

Wie im folgenden HTML-Code gezeigt:

<form action="?" method="post" enctype=&#39;multipart/form-data&#39;>
文件上传:<input type="file" name="file" id="file"/>
<input type="submit" id="send" value="提交"/>
</form>

Am häufigsten verwenden wir die einfache Beurteilung des Frontends

<script>
var send=document.getElementById("send");
send.onclick=function(){
var file=document.getElementById("file").value;
if(file.length<1){
alert(&#39;请选择图片&#39;);
return false;
}
}
</script>

Wenn Sie möchten das EchteSicherheitWir müssen die Urteilsverarbeitung im Hintergrund eingeben

<?php
//判断pic文件框是否已经选择文件
if(!empty($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])){
echo&#39;已选择文件&#39;;
}else{
echo&#39;请选择文件&#39;;
}
//PS:$_FILES后面的[&#39;tmp_name&#39;]一定不要忘写,它表示是一个临时的意思
?>

Beispielanalyse

JS-Urteil ist relativ allgemein, wir nur Verwenden Sie file=document.getElementById("file").value; um festzustellen, ob die Datei einen Wert hat oder nicht leer ist. Auf diese Weise können Sie sie direkt durch Eingabe einer Zahl senden, daher müssen wir das Benutzernamenlimit eingeben zum Hochladen von Dateien
wie

function CheckWorkFile()
{
var obj=document.getElementById(&#39;fuMain&#39;);
if(obj.value==&#39;&#39;)
{
alert(&#39;请选择要上传的作业书文件&#39;);
return false;
}
var stuff=obj.value.match(/^(.*)(\.)(.{1,8})$/)[3];
if(stuff!=&#39;doc&#39;)
{
alert(&#39;文件类型不正确,请选择.doc文件&#39;);
return false;
}
return true;
}


Für die PHP-Verarbeitung verwenden wir nur if(!empty($_FILES['file']['tmp_name'])){, um zu beurteilen, ob es ist leer. Tatsächlich ist dies auch unvernünftig.
Wenn wir so damit umgehen können

function file_type($filename)
{
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);
    $typeCode = intval($strInfo[&#39;chars1&#39;].$strInfo[&#39;chars2&#39;]);
    $fileType = &#39;&#39;;
    switch ($typeCode)
    {
        case 7790:
            $fileType = &#39;exe&#39;;
            break;
        case 7784:
            $fileType = &#39;midi&#39;;
            break;
        case 8297:
            $fileType = &#39;rar&#39;;
            break;        
  case 8075:
            $fileType = &#39;zip&#39;;
            break;
        case 255216:
            $fileType = &#39;jpg&#39;;
            break;
        case 7173:
            $fileType = &#39;gif&#39;;
            break;
        case 6677:
            $fileType = &#39;bmp&#39;;
            break;
        case 13780:
            $fileType = &#39;png&#39;;
            break;
        default:
            $fileType = &#39;unknown: &#39;.$typeCode;
    }
 //Fix
 if ($strInfo[&#39;chars1&#39;]==&#39;-1&#39; AND $strInfo[&#39;chars2&#39;]==&#39;-40&#39; ) return &#39;jpg&#39;;
 if ($strInfo[&#39;chars1&#39;]==&#39;-119&#39; AND $strInfo[&#39;chars2&#39;]==&#39;80&#39; ) return &#39;png&#39;;
    return $fileType;
}
echo file_type(&#39;start.php&#39;);   // 6063 or 6033

Auf diese Weise können wir die Art der hochgeladenen Dateien einschränken und auch eine sichere Behandlung für das Programm bereitstellen

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Methodenbeispielen in PHP zur Feststellung, ob eine Datei hochgeladen wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn