Heim  >  Artikel  >  Backend-Entwicklung  >  Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

WBOY
WBOYOriginal
2021-10-29 18:04:192606Durchsuche

Im vorherigen Artikel habe ich Ihnen „PHP-Formularlernen: Die Verwendung und Unterschiede von $_GET- und $_POST-Variablen“ vorgestellt, das Ihnen detaillierte Kenntnisse über $_GET-Variablen und $_POST-Variablen in PHP vermittelt hat Ich werde einen Blick auf das filterbezogene Wissen in PHP werfen und hoffe, allen zu helfen!

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

Im vorherigen Artikel haben wir etwas über die Variable $_GET und die Variable $_POST gelernt. In diesem Artikel wurden auch Sicherheitsprobleme erwähnt Die in diesem Artikel besprochenen Methoden werden zum Überprüfen und Filtern von Daten aus unsicheren Quellen, wie z. B. Benutzereingaben, verwendet. Dann werfen wir einen Blick auf die relevanten Kenntnisse über Filter in PHP. $_GET 变量与$_POST 变量的相关知识,其中有提到关于安全性的问题,本篇文章中所要讲到的PHP过滤器就是用于验证和过滤来自非安全来源的数据,比如用户的输入。那接下来我们就来看一下PHP中的过滤器的相关知识,一起看看吧。

PHP过滤器

什么是过滤器,可以先把过滤器简单的理解为过滤掉不安全的数据。那我们为什么要使用过了不起呢?在我们的日常开发中几乎所有的Web应用程序都会依赖外部的输入,这些数据通常都是来自类似Web服务的其他应用程序或者来自用户。我们通过过滤器的使用能够确保应用程序能够获得正确的输入类型。

我们应该对像来自表单的输入数据、Cookies、服务器变量和数据库查询结果等这样的外部数据进行过滤,对输入进行过滤是很重要的,因此我们需要使用过滤器。

PHP过滤器是用于验证和过滤来自非安全来源的数据,是测试、验证和过滤用户输入或者自定义数据时任何Web应用程序的重要组成部分,它的设计目的就是为了是数据处理更轻松快捷。

函数和过滤器

当我们需要过滤变量的时候,可以使用很多过滤函数:filter_var() 通过一个指定的过滤器来过滤单一的变量;filter_var_array() 通过相同的或不同的过滤器来过滤多个变量;filter_input获取一个输入变量,并对它进行过滤;filter_input_array获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤。

接下来我们通过一个示例来看一下通过filter_var() 函数验证了一个整数,示例如下:

<?php
header("Content-type:text/html;charset=utf-8");
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
{
    echo("不是一个合法的整数");
}
else
{
    echo("是个合法的整数");
}
?>

输出结果:

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

上述示例便是通过filter_var() 过滤函数来验证了一个整数,接下来看一下我们常用的两种过滤器。

  • <strong>Validating</strong> 过滤器:用于验证用户输入,有着严格的格式规则(比如 URL 或 E-Mail 验证),如果成功则返回预期的类型,如果失败则返回 FALSE。

  • <strong>Sanitizing</strong> 过滤器:用于允许或禁止字符串中指定的字符,无数据格式规则,始终返回字符串。

选项和标志

选项和标志用于向指定的过滤器添加额外的过滤选项。不同的过滤器有不同的选项和标志。

接下来我们通过示例来看一下用 filter_var() "min_range" 以及 "max_range" 选项验证了一个整数,示例如下:

<?php
header("Content-type:text/html;charset=utf-8");
$var=300;
$int_options = array(
    "options"=>array
    (
        "min_range"=>0,   //最小值
        "max_range"=>256  //最大值
    )
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
    echo("不是一个合法的整数");
}
else
{
    echo("是个合法的整数");
}
?>

输出结果:

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

在上述示例中,需要注意的是:就像上面的代码一样,选项必须放入一个名为 "options" 的相关数组中。如果使用标志,则不需在数组内。由于整数是 "300",它不在指定的范围内,所以输出结果如上。

验证输入

接下来让我们试着验证来自表单的输入。我们需要做的第一件事情是确认是否存在我们正在查找的输入数据。然后我们用 filter_input()

PHP-Filter

Was ist ein Filter, können Sie zuerst Filtern werden einfach als das Herausfiltern unsicherer Daten verstanden. Warum verwenden wir Weiwei? In unserer täglichen Entwicklung sind fast alle Webanwendungen auf externen Input angewiesen. Diese Daten stammen normalerweise von anderen Anwendungen wie Webdiensten oder von Benutzern. Durch den Einsatz von Filtern können wir sicherstellen, dass die Anwendung den richtigen Eingabetyp erhält.

Wir sollten externe Daten wie Eingabedaten aus Formularen, Cookies, Servervariablen, Datenbankabfrageergebnissen usw. filtern. Es ist wichtig, Eingaben zu filtern, daher müssen wir Filter verwenden.

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)PHP-Filter werden zum Validieren und Filtern von Daten aus nicht sicheren Quellen verwendet. Sie sind ein wichtiger Bestandteil jeder Webanwendung beim Testen, Validieren und Filtern von Benutzereingaben oder benutzerdefinierten Daten schnell.

Funktionen und Filter

🎜Wenn wir Variablen filtern müssen, können wir viele Filterfunktionen verwenden: filter_var() Filtert eine einzelne Variable durch einen angegebenen Filter; filter_var_array() Filtert mehrere Variablen durch denselben oder verschiedene Filter. filter_input Ruft eine Eingabevariable ab und filtert es; filter_input_array Ruft mehrere Eingabevariablen ab und filtert sie durch denselben oder verschiedene Filter. 🎜🎜Als nächstes nehmen wir ein Beispiel, um eine Ganzzahl mit der Funktion filter_var() zu überprüfen. Das Beispiel sieht wie folgt aus: 🎜
<?php
header("Content-type:text/html;charset=utf-8");
if(!filter_has_var(INPUT_GET, "email"))
{
    echo("没有 email 参数");
}
else
{
    if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
    {
        echo "不是一个合法的 E-Mail";
    }
    else
    {
        echo "是一个合法的 E-Mail";
    }
}
?>
🎜Ausgabeergebnis:
🎜🎜Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)🎜🎜Das obige Beispiel erfolgt über filter_var() Filterfunktion Lassen Sie uns eine Ganzzahl überprüfen. Schauen wir uns als Nächstes die beiden häufig verwendeten Filter an. 🎜
  • 🎜<strong>Validieren</strong>Filter: Wird zur Validierung von Benutzereingaben verwendet. verfügt über strenge Formatregeln (z. B. URL- oder E-Mail-Überprüfung), gibt bei Erfolg den erwarteten Typ zurück und bei Fehler FALSE. 🎜
  • 🎜<strong>Bereinigung</strong> Filter: Wird verwendet, um bestimmte Zeichen in einer Zeichenfolge zuzulassen oder zu verbieten, keine Datenformatregeln, immer gibt einen String zurück. 🎜
🎜Optionen und Flags
🎜🎜Optionen und Flags werden zur Angabe verwendet Filter fügen zusätzliche Filteroptionen hinzu. Verschiedene Filter haben unterschiedliche Optionen und Flags. 🎜🎜Als nächstes nehmen wir ein Beispiel zur Überprüfung einer Ganzzahl mit den Optionen filter_var() und "min_range" und "max_range" , Beispiel As folgt: 🎜
<?php
header("Content-type:text/html;charset=utf-8");
if(!filter_has_var(INPUT_GET, "url"))
{
    echo("没有 url 参数");
}
else
{
    $url = filter_input(INPUT_GET,
        "url", FILTER_SANITIZE_URL);
    echo $url;
}
?>
🎜Ausgabeergebnis:
🎜🎜Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)🎜🎜Im obigen Beispiel ist es wichtig zu beachten, dass die Optionen genau wie im obigen Code in ein zugehöriges Array mit dem Namen „options“ eingefügt werden müssen. Wenn Flags verwendet werden, müssen diese nicht in einem Array vorhanden sein. Da die Ganzzahl „300“ ist, liegt sie nicht im angegebenen Bereich, sodass die Ausgabe wie oben aussieht. 🎜🎜Eingabe validieren
🎜🎜Als nächstes versuchen wir, die Eingabe aus dem Formular zu validieren. Als Erstes müssen wir bestätigen, dass die gesuchten Eingabedaten vorhanden sind. Dann verwenden wir die Funktion filter_input(), um die Eingabedaten zu filtern. 🎜🎜Als nächstes nehmen wir ein Beispiel, um zu sehen, wie die Eingabevariable „email“ mit GET an die PHP-Seite übergeben wird. Das Beispiel sieht wie folgt aus: 🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜Worauf wir achten müssen ist: Das obige Beispiel ist: Eine Eingabevariable (E-Mail), die über die Methode „GET“ übergeben wird. Überprüfen Sie, ob eine Eingabevariable „E-Mail“ vom Typ „GET“ vorhanden ist. Wenn eine Eingabevariable vorhanden ist, prüfen Sie, ob es sich um eine handelt Gültige E-Mail-Adresse. 🎜

净化输入

让我们试着清理一下从表单传来的 URL。首先,我们要确认是否存在我们正在查找的输入数据。然后,我们用 filter_input() 函数来净化输入数据。

下面我们通过示例来看一下输入变量 "url" 被传到 PHP 页面,示例如下:

<?php
header("Content-type:text/html;charset=utf-8");
if(!filter_has_var(INPUT_GET, "url"))
{
    echo("没有 url 参数");
}
else
{
    $url = filter_input(INPUT_GET,
        "url", FILTER_SANITIZE_URL);
    echo $url;
}
?>

输出结果:

Führt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele)

其中我们需要注意的是:

FILTER_SANITIZE_URL 过滤器删除字符串中所有非法的 URL 字符。上面的实例有一个通过 "GET" 方法传送的输入变量 (url):检测是否存在 "GET" 类型的 "url" 输入变量,如果存在此输入变量,对其进行净化(删除非法字符),并将其存储在 $url 变量中。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

Das obige ist der detaillierte Inhalt vonFührt Sie in drei Minuten durch PHP-Filter (detaillierte Beispiele). 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