国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erkl?rung des Datei-Uploads in PHP

Detaillierte Erkl?rung des Datei-Uploads in PHP

May 30, 2018 am 11:29 AM
php Hochladen Detaillierte Erkl?rung

Beherrschen Sie die Technologie zum Hochladen von PHP-Dateien wirklich? Dieser Artikel hat relevante Informationen zum Hochladen von PHP-Dateien für alle zusammengestellt. Interessierte Freunde k?nnen darauf verweisen. Zun?chst m?chte ich feststellen, dass dieses Kapitel viel Inhalt hat und relativ schwierig ist . Man muss eine Einstellung haben, mit sich selbst zu k?mpfen. Verpassen Sie nicht die Feinheiten, sondern üben Sie mehr und mehr.

Lernen ist wie das Besteigen eines Berges. Man muss sich zun?chst ein kleines Ziel setzen und dann beharrlich h?her klettern, um schlie?lich den Gipfel zu erreichen.

Bitte beachten Sie die beiden oben genannten Ratschl?ge sorgf?ltig


1. Beschreibung meiner Vorbereitungen.


Editor: sublime text3 (welcher Editor Sie verwenden, h?ngt von Ihren Vorlieben ab)
Server-Build: Verwenden Sie phpstudy2014, um den Server zu erstellen. Die Serverdatei wird in der WWW-Datei auf dem Laufwerk D meines Computers gespeichert. (Bei der Installation von phpstudy wird automatisch die WWW-Datei generiert. Sie entscheiden, auf welcher Festplatte Sie sie installieren m?chten.) Führen Sie phpstudy aus und geben Sie ?localhost“ in die Adressleiste des Browsers ein, um auf Dateien auf dem Server zuzugreifen.
Der Prozess des Hochladens von Dateien: Der Browser l?dt die Datei auf den Client hoch, klickt auf ?Senden“, die Datei wird zur Verarbeitung an eine PHP-Datei auf dem Server gesendet und die PHP l?dt die Datei hoch. Speichern Sie die Datei auf dem Server.

2. Erstellen Sie ein Formular

Bitte sehen Sie sich meinen HTML-Code an

enctype

In der Syntax des Form-Elements gibt EncType das Format der übermittelten Daten an. Das Enctype-Attribut gibt den Codierungstyp an, den der Browser beim Zurücksenden von Daten an den Server verwendet. Es gibt drei Arten von Enctype:

1. application/x-www-form-urlencoded: Formulardaten werden als Name/Wert-Paare codiert. Dies ist ein Standard-Codierungsformat.

2. Multipart/Formulardaten: Formulardaten werden als Nachricht codiert und jedes Steuerelement auf der Seite entspricht einem Teil der Nachricht.
3. Text/Plain: Die Formulardaten werden im Klartext codiert, ohne jegliche Steuerelemente oder Formatierungszeichen.
Erg?nzung (sehen Sie sich einfach um): Das enctype-Attribut von ORM ist die Codierungsmethode. Es gibt zwei h?ufig verwendete: application/x-www-form-urlencoded und multipart/form-data. Der Standardwert ist application/x -www-form. -urlencoded. Wenn die Aktion get ist, verwendet der Browser die Kodierungsmethode x-www-form-urlencoded, um die Formulardaten in eine Zeichenfolge umzuwandeln (Name1=Wert1&Name2=Wert2...), h?ngt die Zeichenfolge dann an das Ende der URL an und teilt sie auf es mit ?, und l?dt diese neue URL. Wenn die Aktion ?Post“ ist, kapselt der Browser die Formulardaten in den http-Body und sendet sie dann an den Server. Wenn kein type=file-Steuerelement vorhanden ist, verwenden Sie einfach die Standardanwendung/x-www-form-urlencoded. Wenn jedoch type=file vorhanden ist, werden multipart/form-data verwendet. Der Browser unterteilt das gesamte Formular in Steuereinheiten und fügt jedem Teil Inhaltsdisposition (Formulardaten oder Datei), Inhaltstyp (Standard ist Text/Plain), Name (Steuerelementname) und andere Informationen hinzu und fügt Trennzeichen hinzu (Grenze).

Ein bisschen schwer zu verstehen.

Kurz gesagt, merken Sie sich zwei S?tze: Wenn im Eingabe-Tag type=file steht, dann enctype=multipart/form-data. Wenn kein type=file vorhanden ist, wird im Allgemeinen application/x-www-form-urlencoded verwendet.

Beim Hochladen von Dateien müssen die Daten bestimmte Transformationen durchlaufen, bevor sie auf den Server hochgeladen werden k?nnen. Der Unterschied zwischen application/x-www-form-urlencoded und multipart/form-data ist die Konvertierungskodierungsmethode.

3. Erstellen Sie eine PHP-Datei, um die hochgeladenen Dateien zu verarbeiten.

Der Effekt nach dem Hochladen der Datei ist wie folgt:


Jede hochgeladene Datei hat ein Name, Typ, Gr??e, tmp_name und andere Informationen. Nachdem die Datei hochgeladen wurde, werden die dateibezogenen Informationen in der Array-Variablen FILES gespeichert. _FILES["myfile"]["name"] entspricht dem Zugriff auf ein mehrdimensionales Array. FILES ruft zun?chst die vom Eingabeformular namens myfile hochgeladenen Dateidaten ab und greift dann auf Name, Typ, Gr??e, Fehler und andere Daten zu. _FILES["myfile"]["error"] wird verwendet, um Situationen zu behandeln, in denen Dateien nicht normal hochgeladen werden, z. B. wenn die Gr??enbeschr?nkung für hochgeladene Dateien überschritten wird. Wenn FILES["myfile"]["error"]=0, bedeutet dies, dass die Datei normal hochgeladen wird. _FILES["myfile"]["error"]>0 bedeutet, dass die Datei nicht normal hochgeladen wurde.

FILES[“myfile”][“error”]=1 Die hochgeladene Datei überschreitet das Serverlimit, z. B. die Gr??e des Serverspeichers. _FILES["myfile"]["error"]=2 überschreitet das Browserlimit zum Hochladen $_FILES["myfile"]["error"]=3 Nur ein Teil der Datei wird hochgeladen


FILES["myfile " ]["error"]=4 Es wurde keine Datei hochgeladen. _FILES["myfile"]["error"] kann auch 5, 6, 7 oder 8 sein. Ich werde hier nicht auf Details eingehen. Beachten Sie jedoch, dass ein Fehler beim Hochladen vorliegt, wenn der Wert gr??er als 0 ist die Datei.

Upload-Limit

Normalerweise begrenzt der Server die Gr??e oder Art der vom Server hochgeladenen Dateien. Wir fügen Einschr?nkungen für den hochgeladenen Dateicode hinzu, basierend auf dem oben genannten PHP-Code.
Machen Sie sich zun?chst mit der Verwendung mehrerer Funktionen vertraut:
explode()Die Funktion wird zum Teilen von Zeichenfolgen verwendet. Zum Beispiel: explosion(".","aaa.HTML") Teilen Sie dies an der Punktposition. Die Zeichenfolge wird in zwei Zeichenfolgen unterteilt, ?aaa“ und ?HTML“, und diese beiden Zeichenfolgen werden der Reihe nach im selben Array gespeichert.
end()Den Wert des letzten Elements im Array abrufen.
in_array()Suchen Sie ein Element im Array, um zu sehen, ob es existiert. Es gibt true zurück, wenn es existiert, und false, wenn es nicht existiert.

<?php
//第一步:明確服務(wù)器規(guī)定上傳至服務(wù)器的文件類型。這里我們只允許上傳以下類型的圖片。
$allowedExts = array("gif", "jpeg", "jpg", "png");// 允許上傳的圖片后綴
//第二部:獲取上傳的文件名稱,通過explorde()函數(shù)將其分割成字符串形式的數(shù)組。
$temp = explode(".", $_FILES["myfile"]["name"]);
echo $_FILES["file"]["size"];

$extension = end($temp);   // end函數(shù)用于獲取數(shù)組中最后一個(gè)元素的值。
//第三步:列出上傳文件需要滿足的條件
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES[myfile"]["type"] == "image/jpg")
|| ($_FILES["myfile"]["type"] == "image/pjpeg")
|| ($_FILES["myfile"]["type"] == "image/x-png")
|| ($_FILES["myfile"]["type"] == "image/png"))
&& ($_FILES["myfile"]["size"] < 204800)  // 小于 200 kb
&& in_array($extension, $allowedExts))
  //in_array表示在$allowedExts數(shù)組中查找$extension這個(gè)字符串
{
  if ($_FILES["myfile"]["error"] > 0)
  {
    echo "錯(cuò)誤:: " . $_FILES["myfile"]["error"] . "<br>";
    //舉個(gè)例子服務(wù)器空間不足,文件只能上傳部分就會(huì)出現(xiàn)錯(cuò)誤。
  }
  else
  {
    echo "上傳文件名: " . $_FILES["myfile"]["name"] . "<br>";
    echo "文件類型: " . $_FILES["myfile"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br>";
    echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["myfile"]["tmp_name"] . "<br>";
  }
}
else
{
  echo "非法的文件格式";
}
?>

4. Speichern Sie die hochgeladene Datei

Nachdem die Datei hochgeladen wurde, wird sie an einem tempor?ren Speicherort gespeichert . Es verschwindet, wenn das Skript endet. Wenn wir es dauerhaft auf dem Server speichern m?chten, müssen wir es an einem anderen Ort speichern.
. file_exists(“upload/”. FILES[“file”][“name”]) prüft, ob die Datei oder das Verzeichnis existiert. .moveuploadedfile(_FILES["file"]["tmp_name"], "upload/" . $_FILES["myfile"]["name"]);Verschieben Sie die hochgeladene Datei vom tempor?ren Speicherort in den Serverbereich.

<?php
//第一步:明確服務(wù)器規(guī)定上傳至服務(wù)器的文件類型。這里我們只允許上傳以下類型的圖片。
$allowedExts = array("gif", "jpeg", "jpg", "png");// 允許上傳的圖片后綴
//第二部:獲取上傳的文件名稱,通過explorde()函數(shù)將其分割成字符串形式的數(shù)組。
$temp = explode(".", $_FILES["myfile"]["name"]);
echo $_FILES["myfilefile"]["size"];
$extension = end($temp);   // end函數(shù)用于獲取數(shù)組中最后一個(gè)元素的值。
//第三步:列出上傳文件需要滿足的
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES["myfile"]["type"] == "image/jpg")
|| ($_FILES["myfile"]["type"] == "image/pjpeg")
|| ($_FILES["myfile"]["type"] == "image/x-png")
|| ($_FILES["myfile"]["type"] == "image/png"))
&& ($_FILES["myfile"]["size"] < 204800)  // 小于 200 kb
&& in_array($extension, $allowedExts))//in_array表示在$allowedExts數(shù)組中查找$extension這個(gè)字符串
{
  if ($_FILES["myfilefile"]["error"] > 0)
  {
    echo "錯(cuò)誤:: " . $_FILES["myfile"]["error"] . "<br>";
  }
  else
  {
    echo "上傳文件名: " . $_FILES["myfile"]["name"] . "<br>";
    echo "文件類型: " . $_FILES["myfile"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br>";
    echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["myfile"]["tmp_name"] . "<br>";

    // 判斷當(dāng)期目錄(即www文件夾中)下的 upload 目錄(自己創(chuàng)建,名字自?。┦欠翊嬖谠撐募?
    // 如果沒有 upload 目錄,你需要?jiǎng)?chuàng)建它,upload 目錄權(quán)限為 777
    if (file_exists("upload/" . $_FILES["myfile"]["name"]))
    {
      echo $_FILES["myfile"]["name"] . " 文件已經(jīng)存在。 ";
    }
    else
    {
      // 如果 upload 目錄不存在該文件則將文件上傳到 upload 目錄下
      move_uploaded_file($_FILES["myfile"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);//
      echo "文件存儲(chǔ)在: " . "upload/" . $_FILES["myfile"]["name"];
    }
  }
}
else
{
  echo "非法的文件格式";
}
?>

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

So kombinieren Sie zwei Fotos der Vorder- und Rückseite eines Personalausweises mit PHP zu einem Bild

PHP verwendet die SWOOLE-Erweiterung, um die geplante Synchronisierung von MySQL-Daten zu implementieren

PHP-Zusammenfassung des Objektwissens

Das obige ist der detaillierte Inhalt vonDetaillierte Erkl?rung des Datei-Uploads in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
PHP nennt AI intelligente Sprachassistenten PHP Voice Interaction System Construction PHP nennt AI intelligente Sprachassistenten PHP Voice Interaction System Construction Jul 25, 2025 pm 08:45 PM

Benutzerspracheingabe wird erfasst und über die Mediarecorder-API des Front-End-JavaScript an das PHP-Backend gesendet. 2. PHP speichert das Audio als tempor?re Datei und ruft STTAPI (z. B. Google oder Baidu Voiceerkennung) auf, um sie in Text umzuwandeln. 3. PHP sendet den Text an einen KI -Dienst (wie OpenAigpt), um intelligente Antwort zu erhalten. 4. PHP ruft dann TTSAPI (wie Baidu oder Google Voice -Synthese) auf, um die Antwort in eine Sprachdatei umzuwandeln. 5. PHP streams die Sprachdatei zurück zum Spielen, um die Interaktion abzuschlie?en. Der gesamte Prozess wird von PHP dominiert, um eine nahtlose Verbindung zwischen allen Links zu gew?hrleisten.

So verwenden Sie PHP, um soziale Freigabefunktionen zu erstellen. PHP Sharing Interface Integration Practice So verwenden Sie PHP, um soziale Freigabefunktionen zu erstellen. PHP Sharing Interface Integration Practice Jul 25, 2025 pm 08:51 PM

Die Kernmethode zum Aufbau sozialer Freigabefunktionen in PHP besteht darin, dynamisch Freigabelinks zu generieren, die den Anforderungen jeder Plattform entsprechen. 1. Erhalten Sie zuerst die aktuelle Seite oder die angegebenen URL- und Artikelinformationen. 2. Verwenden Sie Urlencode, um die Parameter zu codieren. 3.. Splei? und generieren Teilenverbindungen gem?? den Protokollen jeder Plattform; 4. Zeigen Sie Links im vorderen Ende an, damit Benutzer klicken und freigeben k?nnen. 5. generieren Sie Dynamik OG -Tags auf der Seite, um die Anzeige der Freigabe inhaltlich zu optimieren. 6. Achten Sie darauf, dass Sie den Benutzereingaben entkommen, um XSS -Angriffe zu verhindern. Diese Methode erfordert keine komplexe Authentifizierung, weist nur geringe Wartungskosten auf und eignet sich für die meisten Anforderungen an den Inhaltsaustausch.

So verwenden Sie PHP in Kombination mit AI, um die Erkennung und Optimierung der Textfehlerkorrektur PHP -Syntax zu erreichen So verwenden Sie PHP in Kombination mit AI, um die Erkennung und Optimierung der Textfehlerkorrektur PHP -Syntax zu erreichen Jul 25, 2025 pm 08:57 PM

Um die Textfehlerkorrektur und die Syntaxoptimierung mit AI zu realisieren, müssen Sie die folgenden Schritte ausführen: 1. W?hlen Sie ein geeignetes AI -Modell oder ein geeignetes AI -Modell oder ein geeignetes AI -Modell wie Baidu, Tencent API oder Open Source NLP -Bibliothek aus; 2. Rufen Sie die API über die Curl oder das Guzzle von PHP auf und verarbeiten Sie die Rückgabeergebnisse. 3.. Informationen zur Fehlerkorrektur in der Anwendung anzeigen und erm?glichen den Benutzern, zu w?hlen, ob sie angenommen werden sollen. 4. Verwenden Sie PHP-L und PHP_CODESNIFFER für die Syntaxerkennung und -codeoptimierung. 5. sammeln Sie kontinuierlich Feedback und aktualisieren Sie das Modell oder die Regeln, um den Effekt zu verbessern. Konzentrieren Sie sich bei der Auswahl von AIAPI auf die Bewertung von Genauigkeit, Reaktionsgeschwindigkeit, Preis und Unterstützung für PHP. Die Codeoptimierung sollte den PSR -Spezifikationen folgen, Cache vernünftigerweise verwenden, zirkul?re Abfragen vermeiden, den Code regelm??ig überprüfen und x verwenden

PHP erstellt ein Blog-Kommentarsystem zur Monetarisierung von PHP-Kommentarbewertung und Anti-Brush-Strategie PHP erstellt ein Blog-Kommentarsystem zur Monetarisierung von PHP-Kommentarbewertung und Anti-Brush-Strategie Jul 25, 2025 pm 08:27 PM

1. Maximierung des kommerziellen Wertes des Kommentarsystems erfordert die Kombination der pr?zisen Lieferung native Werbung, benutzerbezahlte Wertsch?pfungsdienste (z. B. Bilder hochladen, Aufladungskommentare), den Incentive-Mechanismus basierend auf der Qualit?t der Kommentare und der Anonymen Daten Insight-Monetarisierung von Compliance; 2. Die Prüfungsstrategie sollte eine Kombination aus dynamischer Keyword-Filterung und Benutzerkennungsmechanismen vorab der Auditing einsetzen, die durch die Qualit?t der Kommentarqualit?t erg?nzt werden, um die hierarchische Inhaltsbelastung zu erreichen. 3. Die Anti-Pushing erfordert die Konstruktion einer mehrschichtigen Verteidigung: Recaptchav3 sensorlose überprüfung, Honeypot-Honeypot-Feldkennungroboter, IP und Zeitstempelfrequenzgrenze verhindert die Bew?sserung, und die Erkennung von Inhalten markiert verd?chtige Kommentare und st?ndig mit Angriffen.

So verwenden Sie PHP, um KI zu kombinieren, um Bild zu generieren. PHP generiert automatisch Kunstwerke So verwenden Sie PHP, um KI zu kombinieren, um Bild zu generieren. PHP generiert automatisch Kunstwerke Jul 25, 2025 pm 07:21 PM

PHP führt nicht direkt die KI-Image-Verarbeitung durch, sondern integriert sich über APIs, da es in der Webentwicklung und nicht in Bezug auf Computerintensive Aufgaben gut ist. Die API -Integration kann die professionelle Arbeitsteilung erreichen, die Kosten senken und die Effizienz verbessern. 2. Integration von Schlüsseltechnologien umfasst die Verwendung von Guzzle oder Curl zum Senden von HTTP-Anforderungen, JSON-Datencodierung und -decodierung, API-Schlüsselsicherheitsauthentifizierung, asynchroner Warteschlangenverarbeitungsaufgaben, robuster Fehlerbehebung und Wiederholungsmechanismus, Bildspeicherung und Anzeige. 3. Die gemeinsamen Herausforderungen sind API -Kosten au?er Kontrolle, unkontrollierbare Erzeugungsergebnisse, schlechte Benutzererfahrung, Sicherheitsrisiken und schwieriges Datenmanagement. In den Antwortstrategien werden Benutzerquoten und -darstellungen festgelegt, die Auswahl von ProPT-Anleitungen und mehrfizierende Auswahl, asynchrone Benachrichtigungen und Fortschrittsaufforderungen, wichtige Speicher- und Inhaltsprüfungen sowie Cloud-Speicher vorhanden.

PHP realisiert Rohstoffbestandsverwaltung und Monetarisierung PHP -Inventarsynchronisation und Alarmmechanismus PHP realisiert Rohstoffbestandsverwaltung und Monetarisierung PHP -Inventarsynchronisation und Alarmmechanismus Jul 25, 2025 pm 08:30 PM

PHP sorgt für die Inventarabzugsatomizit?t durch Datenbanktransaktionen und Forupdate -Reihenschl?sser, um eine hohe gleichzeitige überverl?ssigkeit zu verhindern. 2. Multi-Plattform-Inventarkonsistenz h?ngt von zentraler Verwaltung und ereignisgesteuerter Synchronisation ab, die API/Webhook-Benachrichtigungen und Nachrichtenwarteschlangen kombiniert, um eine zuverl?ssige Datenübertragung sicherzustellen. 3. Der Alarmmechanismus sollte in verschiedenen Szenarien niedrige Lagerbest?nde, Null/Negativ -Inventar, unerwünschte Verkaufszyklen, Nachschubzyklen und abnormale Schwankungsstrategien festlegen und die Auswahl von Dingtalk, SMS oder E -Mail -Verantwortlichen gem?? der Dringlichkeit ausw?hlen, und die Alarminformationen müssen vollst?ndig und frei sein, um die Anpassung und die Vergewaltigungsreaktion zu erreichen.

Jenseits des Lampenstacks: Rolle von PHP in der modernen Enterprise -Architektur Jenseits des Lampenstacks: Rolle von PHP in der modernen Enterprise -Architektur Jul 27, 2025 am 04:31 AM

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

So erstellen Sie eine PHP NGINX -Umgebung mit macOS, um die Kombination von NGINX- und PHP -Diensten zu konfigurieren So erstellen Sie eine PHP NGINX -Umgebung mit macOS, um die Kombination von NGINX- und PHP -Diensten zu konfigurieren Jul 25, 2025 pm 08:24 PM

Die Kernrolle von Homebrew bei der Konstruktion der Mac -Umgebung besteht darin, die Installation und Verwaltung der Software zu vereinfachen. 1. Homebrew verarbeitet automatisch Abh?ngigkeiten und verkapselt komplexe Kompilierungs- und Installationsprozesse in einfache Befehle. 2. Bietet ein einheitliches Softwarepaket -?kosystem, um die Standardisierung des Software -Installationsorts und der Konfiguration zu gew?hrleisten. 3. Integriert Service -Management -Funktionen und kann Dienste leicht über Brewservices starten und stoppen. 4. Bequemes Software -Upgrade und -wartung und verbessert die Sicherheit und Funktionalit?t der Systeme.

See all articles