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.
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.
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.
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.
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.
In this section, we will look at a few examples to see the Base64 function in action.
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.
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.
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 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!