btoa javascript e base64_decode php

Asked

Viewed 656 times

0

I am passing a string in javascript/jQuery using btoa(), the code is like this:

<script>
$(document).ready(function(){
  $("button#btnGravarDados").on('click', function(){
    var codigoDadosPessoais = $("#codigoDadosPessoais").val();
    var dataDadosPessoais = $("#dataDadosPessoais").val();
    var documentoDadosPessoais = $("#documentoDadosPessoais").val();
    var documento2DadosPessoais = $("#documento2DadosPessoais").val();
    var nomeDadosPessoais = $("#nomeDadosPessoais").val();
    var cepDadosPessoais = $("#cepDadosPessoais").val();
    var enderecoDadosPessoais = $("#enderecoDadosPessoais").val();
    var numeroDadosPessoais = $("#numeroDadosPessoais").val();
    var complementoDadosPessoais = $("#complementoDadosPessoais").val();
    var bairroDadosPessoais = $("#bairroDadosPessoais").val();
    var cidadeDadosPessoais = $("#cidadeDadosPessoais").val();
    var ufDadosPessoais = $("#ufDadosPessoais").val();
    var observacoesDadosPessoais = $("#observacoesDadosPessoais").val();

    var transfere = codigoDadosPessoais + "_" + dataDadosPessoais + "_" + documentoDadosPessoais + "_" +  documento2DadosPessoais + "_" + nomeDadosPessoais + "_" + cepDadosPessoais + "_" + enderecoDadosPessoais + "_" + numeroDadosPessoais + "_" + complementoDadosPessoais + "_" + bairroDadosPessoais + "_" + cidadeDadosPessoais + "_" + ufDadosPessoais + "_" + observacoesDadosPessoais;

    $('#returnDados').load('cliente-cadastro.php?valor=' + btoa(transfere) + '');

  });
});
</script>  

In the client-registration file.php is like this:

<?php
$valor = $_REQUEST['valor'];
$valor = base64_decode($valor);
$explode = explode("_", $valor);
echo "<pre>";
print_r($explode);
echo "</pre>";
?>

But print_r returns:

Array
(
   [0] => 
)

I did after:

$valor = $_REQUEST['valor'];
echo $valor;

And print the base-64 encoded ASCII string, so it (variable $value) is receiving the string, but making use of echo base64_decode($value); no longer displays anything.

  • 1

    Going through the url? Wouldn’t it be better to do via POST?

  • 1

    Try this valor=' + escape(btoa(transfere))

  • Guilherme Nascimento, worked now. Thank you!

1 answer

1


I made a simulation similar to your PHP code and it worked correctly.

What may be affecting result is the value you receive in request, see if there is no special character.

You can use the function encodeURI() of javascript to avoid problems with these characters:

var transfere = codigoDadosPessoais + "_" + dataDadosPessoais + "_" + documentoDadosPessoais + "_" +  documento2DadosPessoais + "_" + nomeDadosPessoais + "_" + cepDadosPessoais + "_" + enderecoDadosPessoais + "_" + numeroDadosPessoais + "_" + complementoDadosPessoais + "_" + bairroDadosPessoais + "_" + cidadeDadosPessoais + "_" + ufDadosPessoais + "_" + observacoesDadosPessoais;
var url = 'cliente-cadastro.php?valor=' + encodeURI(btoa(transfere)) + '';
$('#returnDados').load(url);
  • 'I reinforced' the code and in fact had already made use of the encodeURI a while ago, but I did not remember, thanks for that.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.