btoa javascript and base64_decode php

0

I'm passing a string in javascript / jQuery using btoa (), the code looks 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-register.php file it looks 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;

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

    
asked by anonymous 07.12.2017 / 11:56

1 answer

1

I did 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 encodeURI () function 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);
    
07.12.2017 / 12:39