Carlos Castillo
Carlos Castillo

Reputation: 171

PHP base64_encode giving different result to Javascript btoa

I have the dummy account:
Username: [email protected]
Password: Av3$truz

When I try to use PHP base64_encode using the code base64_encode($userName . ":" . $password);

I get "Z2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tOkF2Mw"

When I use Javascript BTOA using the code btoa(userName + ":" + password) I get "Z2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tOkF2MyR0cnV6".

I am supposed to be getting the second one in PHP, what am I doing wrong?

Upvotes: 1

Views: 1175

Answers (2)

Amir MB
Amir MB

Reputation: 3418

Since this is your code:

$userName = "[email protected]";
$password = "Av3$truz";

echo base64_encode($userName . ":" . $password);

PHP is trying to get the value of $truz, change it to this:

$userName = "[email protected]";
$password = 'Av3$truz'; //now it does not try to evaluate it or you could scape $ like "Av3\$truz"

echo base64_encode($userName . ":" . $password);

Upvotes: 6

KIKO Software
KIKO Software

Reputation: 16688

I get the same results.

echo base64_encode('hello' . ':' . 'how are you?');

PHP eval

alert(btoa('hello' + ':' + 'how are you?'));

JS Fiddle

The result is in both cases:

aGVsbG86aG93IGFyZSB5b3U/

In case you don't get the same, can you give an example, just like I did?

Note that character encoding might be a factor here, but it is probably more likely that your variables don't have the same content.

Upvotes: 0

Related Questions