Home  >  Article  >  Backend Development  >  How to use Base64 encoding in PHP

How to use Base64 encoding in PHP

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

How to use Base64 encoding in PHP

In this short article, we will discuss the basics of Base64 encoding in the context of PHP. Basically, we will see how to convert data into Base64 encoded format using PHP functions.

What is Base64 encoding?

Base64 is the encoding of ASCII binary data. Each character in the string represents six bits of information. It actually represents binary data in Base 64 representation. If you need a refresher, check out this primer on number systems and fundamentals.

The primary use of Base64 encoding is to encode binary data into ASCII text when you want to transmit such data over a protocol specifically designed to handle text data. This ensures that the data remains intact during transfer. Specifically, Base64 is used for things like sending emails and uploading binary data in HTML forms.

Another common use of Base64 encoding is hashing. Of course, you shouldn't use Base64 encoding itself to generate hashes, as it can be easily decoded. First, a hash is generated with the help of a hashing algorithm like SHA and then the generated hash is converted to Base64 encoded format to display it. It's very easy to compare the integrity of two Base64-encoded checksums.

In the next section, we will discuss the built-in Base64 functions in PHP.

Base64 function in PHP

There are two main functions in PHP that handle Base64 encoding. base64_encode Function allows you to encode data in MIME Base64 format. On the other hand, the base64_decode function is used to decode MIME Base64 encoded data.

Let’s introduce each function in detail.

base64_encoding

Let's take a look at the syntax of the base64_encode function.

base64_encode ( string $string ) : string

The only argument you need to pass to the base64_encode function is the source string you want to encode to MIME Base64.

This will return a Base64 encoded string. It's worth noting that Base64-encoded data takes up about 33% more memory space than the original data.

base64_decoding

Let's take a look at the syntax of the base64_decode function.

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

The first parameter is the Base64 encoded data to be decoded.

The second parameter is optional, but if you pass TRUE it will perform strict checking. This means that if the Base64-encoded data contains characters outside the Base64 alphabet, the decoding function will return FALSE. This is useful for checking the integrity of Base64 encoded strings. On the other hand, if you want to silently discard invalid characters, just pass FALSE, which is the default value.

After decoding is successful, the function returns the decoded string, otherwise it returns FALSE. It should be noted that the base64_decode function may return binary data if the relevant string is in binary format before encoding.

In the next section, we will discuss how to use the built-in Base64 functions in PHP.

How to encode and decode data using MIME Base64

In this section, we will look at a few examples to see the Base64 function in action.

Encoding URL parameters

Typically you end up encoding the parameters containing the URL using the base64_encode function.

Let’s quickly understand how it works with the following example.

<?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==
?>

As you can see, if we don't use the base64_encode function, the generated URL will look like https://www.example.com/redirect/http://www.example .com/some/other/url, invalid.

Base64 encoded checksum

As we discussed earlier, the base64_encode function comes in handy when converting binary data to an ASCII string.

Let’s take a look at the following example.

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

In the above example, the hash_hmac function will return hashed binary data. So it will be difficult to display the generated binary data without using the base64_encode function.

e-mail attachment

In PHP, when you send an email with a file attachment, you can encode the file content into Base64 encoding format. In fact, if you want to send a binary attachment, the attachment data must be encoded rather than sent in its raw format.

Let’s take a look at the following example.

<?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);
?>

As you can see, we encoded the binary image data using the base64_encode function before sending it as an attachment.

This way you can use Base64 functions in PHP for various purposes.

in conclusion

In this short article, we discussed how to use Base64 functions in daily PHP development.

The above is the detailed content of How to use Base64 encoding in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn