Funktion move_uploaded_file() in PHP
In diesem Artikel wird hauptsächlich die PHP-Funktion move_uploaded_file() vorgestellt, die die hochgeladene Datei tatsächlich an einen neuen Speicherort verschiebt. Freunde in Not können sich auf die
Definition und Verwendung
beziehen Die Funktionmove_uploaded_file()
verschiebt die hochgeladene Datei an einen neuen Speicherort.
Bei Erfolg wird true zurückgegeben, andernfalls wird false zurückgegeben.
Syntax
move_uploaded_file(file,newloc)
参数 | 描述 |
---|---|
file | 必需。规定要移动的文件。 |
newloc | 必需。规定文件的新位置。 |
Beschreibung
Diese Funktion prüft und stellt sicher, dass die Datei angegeben ist per Datei Die Datei ist ein legitimer Upload (d. h. sie wurde über den HTTP-POST-Upload-Mechanismus von PHP hochgeladen). Wenn die Datei legal ist, wird sie in die durch newloc angegebene Datei verschoben.
Wenn es sich bei der Datei nicht um eine legal hochgeladene Datei handelt, wird kein Vorgang ausgeführt und move_uploaded_file() gibt „false“ zurück.
Wenn die Datei eine gültige hochgeladene Datei ist, aber aus irgendeinem Grund nicht verschoben werden kann, wird keine Aktion ausgeführt und move_uploaded_file() gibt „false“ zurück und es wird eine Warnung ausgegeben.
Diese Prüfung ist besonders wichtig, wenn die hochgeladene Datei dazu führen kann, dass ihr Inhalt dem Benutzer oder anderen Benutzern dieses Systems angezeigt wird.
Tipps und Hinweise
Hinweis: Diese Funktion wird nur für Dateien verwendet, die über HTTP POST hochgeladen werden.
Hinweis: Wenn die Zieldatei bereits vorhanden ist, wird sie überschrieben.
Sicherheitsergänzung
Einführung von w3c, lassen Sie uns über die Probleme sprechen, auf die ich gestoßen bin.
Im Allgemeinen schreiben wir die Speicherdatei wie folgt:
$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name']; move_uploaded_file($_FILES['file']['tmp_name'],$fileName )
Erklären Sie zunächst die Bedeutung dieser beiden Codezeilen: Speichern Sie die Datei direkt, und der Dateiname ist auch die Datei Name vom Benutzer hochgeladen
Okay, jetzt ist das Risiko da:
①Speichern Sie die Datei direkt.
Dies bedeutet, dass die Datei in keiner Weise erkannt wird, wenn ein Benutzer einen Hintergrundcode hochlädt und ihn als JPG-Suffix oder anderes speichert, wenn der Administrator ihn versehentlich PHP zuordnet und dann darauf zugreift Hintergrund, - - Ergebnis Es ist denkbar, dass, wenn er alle Datenbanken im Hintergrund löscht, die gesamte Website direkt GG wird. Kurz gesagt, das direkte Speichern von Dateien ist sehr riskant.
②Verwenden Sie denselben Dateinamen wie den Benutzerdateinamen.
Der obige Code meldet einen Fehler, wenn der Benutzer einen chinesischen Dateinamen verwendet.
Sobald es um den Dateinamen geht, ist die Codierung involviert. Wenn der Dateiname Englisch + Zahlen ist, ist es in Ordnung. Wenn er Chinesisch enthält, wird es ein großes Problem sein und es muss geändert werden -codiert.
Ich denke, eine zuverlässige Speicherung sollte so sein:
① Die von Benutzern hochgeladenen Dateien müssen identifiziert werden.
Dateierkennung, dieser Teil hat viele Funktionen. Ich denke, es ist gut, den MIME-Typ zu verwenden, der auch schwer zu fälschen ist.
② Ändern Sie den Dateinamen.
Ich denke, es ist am besten, den Dateinamen in ein Zeitformat wie „201803264104421“ zu ändern. Sie können den Dateinamen auch mit der Datenbank abgleichen.
Zusätzlich:
hat zwei Parameter. Der erste Parameter ist der temporäre Dateiname nach dem Hochladen, der automatisch vom System generiert wird. Normalerweise lautet der Stil:
$_FILE["file"]["tmp_name"];
wobei file der Name Ihres Front-End-Datei-Upload-Formulars ist.
Der zweite Parameter ist der neue Dateiname inklusive Pfad. Zum Beispiel:
"upload/1.jpg";
Auf diese Weise wird die von Ihnen hochgeladene Datei in das Unterverzeichnis mit dem Namen „upload“ im aktuellen Verzeichnis verschoben und der Dateiname lautet gespeichert als :1.jpg.
Beispiel für die Funktion „move_uploaded_file()“
Verwenden Sie die Funktion „move_uploaded_file()“, um Dateien auf den Server hochzuladen.
<?php $tmp_filename = $_FILES['myupload']['tmp_name']; if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) { echo "An error has occurred moving the uploaded file.<BR>"; echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file."; exit; } else { echo "The file has been successfully uploaded!"; } ?>
move_uploaded_file konnte Dateifälle und Lösungen nicht hochladen
Heute ist bei der Implementierung eines PHP-Skripts, das Avatar-Bilddateien hochlädt, wenn Benutzer sich registrieren, ein Problem aufgetreten: php Das Skript Der Code lautet wie folgt:
<?php define('ROOT',dirname(__FILE__).'/'); if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { if(is_uploaded_file($_FILES['file']['tmp_name'])){ $stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){ echo "Stored in: " . $stored_path; }else{ echo 'Stored failed:file save error'; } }else{ echo 'Stored failed:no post '; } } } ?>
Wenn ich das obige Skript ausführe, gibt das Skript „Gespeichert fehlgeschlagen: Fehler beim Speichern der Datei“ aus, was offensichtlich ein Fehler ist. In der Datei php_error_log habe ich das Fehlerproblem gesehen: unzureichende Berechtigungen , habe ich endlich herausgefunden, was schief gelaufen ist: Das Zielverzeichnis, in dem wir die Bilder speichern, hat keine Berechtigungen für den Benutzer, der das PHP-Skript ausführt. Der Benutzer, der das PHP-Skript ausführt, ist nicht derselbe Benutzer, der den Skriptcode geschrieben und das Bild erstellt hat Ordner, daher müssen Sie nur die Dateiberechtigungen auf 777 ändern.
PHP Development Learning File Upload (move_uploaded_file)
Funktion: Die hochgeladene temporäre Datei in das Upload-Verzeichnis verschieben. Der Upload wurde im Stammverzeichnis erstellt! ! !
<form action="" enctype="multipart/form-data" method="post" name="uploadfile">上传文件:<input type="file" name="upfile" /><br> <input type="submit" value="上传" /></form> <?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //获取数组里面的值 $name=$upfile["name"];//上传文件的文件名 $type=$upfile["type"];//上传文件的类型 $size=$upfile["size"];//上传文件的大小 $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 //判断是否为图片 switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } if($okType){ /** * 0:文件上传成功<br/> * 1:超过了文件大小,在php.ini文件中设置<br/> * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> * 3:文件只有部分被上传<br/> * 4:没有文件被上传<br/> * 5:上传文件大小为0 */ $error=$upfile["error"];//上传后系统返回的值 echo "================<br/>"; echo "上传文件名称是:".$name."<br/>"; echo "上传文件类型是:".$type."<br/>"; echo "上传文件大小是:".$size."<br/>"; echo "上传后系统返回的值是:".$error."<br/>"; echo "上传文件的临时存放路径是:".$tmp_name."<br/>"; echo "开始移动上传文件<br/>"; //把上传的临时文件移动到upload目录下面(upload是在根目录下已经创建好的!!!) move_uploaded_file($tmp_name,"upload/".$name); $destination="upload/".$name; echo "================<br/>"; echo "上传信息:<br/>"; if($error==0){ echo "文件上传成功啦!"; echo "<br>图片预览:<br>"; echo "<img src=".$destination.">"; //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; }elseif ($error==1){ echo "超过了文件大小,在php.ini文件中设置"; }elseif ($error==2){ echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; }elseif ($error==3){ echo "文件只有部分被上传"; }elseif ($error==4){ echo "没有文件被上传"; }else{ echo "上传文件大小为0"; } }else{ echo "请上传jpg,gif,png等格式的图片!"; } } ?>
Ausführungsergebnisse:
Das Obige ist der gesamte Inhalt dieses Artikels. Für weitere verwandte Inhalte. Bitte achten Sie auf die chinesische PHP-Website!
Verwandte Empfehlungen:
Der Unterschied zwischen dem Konstruktor _construct() und _initialize() von Klassen in ThinkPHP
Verwendung von eindeutig in Thinkphp
Das obige ist der detaillierte Inhalt vonFunktion move_uploaded_file() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
