Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie die Base64-Codierung in PHP

So verwenden Sie die Base64-Codierung in PHP

WBOY
WBOYOriginal
2023-09-02 20:29:103035Durchsuche

So verwenden Sie die Base64-Codierung in PHP

In diesem kurzen Artikel besprechen wir die Grundlagen der Base64-Codierung im Kontext von PHP. Im Wesentlichen werden wir sehen, wie man Daten mithilfe von PHP-Funktionen in ein Base64-codiertes Format konvertiert.

Was ist Base64-Kodierung?

Base64 ist die Kodierung von ASCII-Binärdaten. Jedes Zeichen in der Zeichenfolge repräsentiert sechs Informationsbits. Es stellt tatsächlich Binärdaten in Base-64-Darstellung dar. Wenn Sie eine Auffrischung benötigen, schauen Sie sich diese Einführung in Zahlensysteme und Grundlagen an.

Der Hauptzweck der Base64-Kodierung besteht darin, Binärdaten in ASCII-Text zu kodieren, wenn Sie solche Daten über ein Protokoll übertragen möchten, das speziell für die Verarbeitung von Textdaten entwickelt wurde. Dadurch wird sichergestellt, dass die Daten während der Übertragung intakt bleiben. Base64 wird insbesondere zum Versenden von E-Mails und zum Hochladen von Binärdaten in HTML-Formularen verwendet.

Eine weitere häufige Verwendung für die Base64-Codierung ist Hashing. Natürlich sollten Sie die Base64-Kodierung selbst nicht zum Generieren von Hashes verwenden, da diese leicht dekodiert werden kann. Zuerst wird mit Hilfe eines Hashing-Algorithmus wie SHA ein Hash generiert und dann wird der generierte Hash in ein Base64-codiertes Format konvertiert, um ihn anzuzeigen. Es ist sehr einfach, die Integrität zweier Base64-codierter Prüfsummen zu vergleichen.

Im nächsten Abschnitt besprechen wir die integrierten Base64-Funktionen in PHP.

Base64-Funktion in PHP

Es gibt zwei Hauptfunktionen in PHP, die die Base64-Codierung verarbeiten. base64_encode 函数允许您以 MIME Base64 格式对数据进行编码。另一方面,base64_decode Funktion wird zum Dekodieren von MIME Base64-kodierten Daten verwendet.

Lassen Sie uns jede Funktion im Detail vorstellen.

base64_encoding

Werfen wir einen Blick auf die Syntax der base64_encode-Funktion.

base64_encode ( string $string ) : string

Das einzige Argument, das Sie an die Funktion base64_encode übergeben müssen, ist die Quellzeichenfolge, die Sie in MIME Base64 kodieren möchten.

Dadurch wird eine Base64-codierte Zeichenfolge zurückgegeben. Es ist erwähnenswert, dass Base64-codierte Daten etwa 33 % mehr Speicherplatz beanspruchen als die Originaldaten.

base64_decoding

Werfen wir einen Blick auf die Syntax der base64_decode-Funktion.

base64_decode ( string $string , bool $strict = false ) : string|false

Der erste Parameter sind die Base64-kodierten Daten, die dekodiert werden sollen.

Der zweite Parameter ist optional, aber wenn Sie TRUE,它将执行严格的检查。这意味着如果 Base64 编码的数据包含 Base64 字母表之外的字符,则解码函数将返回 FALSE。这对于检查 Base64 编码字符串的完整性很有用。另一方面,如果您想默默地丢弃无效字符,只需传递 FALSE übergeben, ist dies der Standardwert.

Nachdem die Dekodierung erfolgreich war, gibt die Funktion die dekodierte Zeichenfolge zurück, andernfalls gibt sie FALSE zurück. Beachten Sie, dass die Funktion FALSE。需要注意的是,如果相关字符串在编码前是二进制格式,则 base64_decode möglicherweise Binärdaten zurückgibt, wenn die entsprechende Zeichenfolge vor der Codierung im Binärformat vorliegt.

Im nächsten Abschnitt besprechen wir die Verwendung der integrierten Base64-Funktionen in PHP.

So kodieren und dekodieren Sie Daten mit MIME Base64

In diesem Abschnitt schauen wir uns einige Beispiele an, um Base64-Funktionen in Aktion zu sehen.

URL-Parameter kodieren

Normalerweise verwenden Sie am Ende die Funktion base64_encode, um die Parameter zu kodieren, die die URL enthalten.

Lassen Sie uns anhand des folgenden Beispiels schnell verstehen, wie es funktioniert.

<?php
$redirectUrl = 'https://www.example.com/some/other/url';

header('Location: https://www.example.com/redirect/' . base64_encode($redirectUrl));
//https://www.example.com/redirect/aHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21lL290aGVyL3VybA==
?>

Wie Sie sehen können, sieht die generierte URL wie folgt aus, wenn wir die Funktion base64_encode 函数,则生成的 URL 将类似于 https://www.example.com/redirect/http://www.example.com/ some/other/url nicht verwenden: https://www.example.com/redirect/http://www.example.com/ some/other /url , ungültig.

Base64-kodierte Prüfsumme

Wie bereits erwähnt, ist die Funktion base64_encode praktisch, wenn Sie Binärdaten in ASCII-Strings konvertieren.

Schauen wir uns das folgende Beispiel an.

<?php
$base64_encoded_hash = base64_encode(hash_hmac('sha1', 'Source string to be hashed.', 'YOUR_TOP_SECRET_KEY', true));
?>

Im obigen Beispiel gibt die Funktion hash_hmac gehashte Binärdaten zurück. Daher wird es schwierig sein, die generierten Binärdaten anzuzeigen, ohne die Funktion hash_hmac 函数将返回哈希二进制数据。所以如果不使用 base64_encode zu verwenden.

E-Mail-Anhänge

Wenn Sie in PHP eine E-Mail mit einem Dateianhang senden, können Sie den Dateiinhalt in das Base64-Kodierungsformat kodieren. Wenn Sie einen binären Anhang senden, müssen die Anhangsdaten tatsächlich codiert und nicht im Rohformat gesendet werden.

Schauen wir uns das folgende Beispiel an.

<?php
$to = 'receiver@example.com';
$subject = 'Example of base64 encoded attachments';
$message = 'This email contains an image attachment.';
$boundary = md5(microtime());

$headers = "From: name <from@example.com>" . "\r\n";
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=" . $boundary . "\r\n";
$headers .= "Multipart MIME example." . "\r\n";

$message.= "--" . $boundary. "\r\n";
$message.= "Content-Type: text/plain; charset=\"iso-8859-1\"" . "\r\n";
$message.= "Content-Transfer-Encoding: 8bit" . "\r\n";
$message.=  $message . "\r\n";

// attach file
$filename = 'nature.jpg';
$filecontents = file_get_contents($filename);
$filecontents = chunk_split(base64_encode($filecontents));

$message.= "--" . $boundary. "\r\n";
$message.= "Content-Type: image/jpg; name=\"" . $filename . "\"" . "\r\n";
$message.= "Content-Transfer-Encoding: base64" . "\r\n";
$message.= "Content-Disposition: attachment" . "\r\n";
$message.= $filecontents . "\r\n";
$message.= "--" . $boundary. "--";

mail($mailto, $subject, $body, $headers);
?>

Wie Sie sehen können, haben wir die Funktion base64_encode verwendet, um die binären Bilddaten zu kodieren, bevor wir sie als Anhang senden.

Auf diese Weise können Sie Base64-Funktionen in PHP für verschiedene Zwecke verwenden.

Fazit

In diesem kurzen Artikel haben wir besprochen, wie man Base64-Funktionen in der täglichen PHP-Entwicklung verwendet.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Base64-Codierung in PHP. 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