2016-12-20 15 views
1

Я отправляю пользователей на новую ссылку, которая имеет значение, которое кодируется с помощью btoa Javascript, однако на стороне PHP, когда я его декодирую и эхо-значение, значение, которое вторит из «не определен»Кодирование с помощью JS base64 и определение с помощью php base64_decode

$("#btn-print-bonus").click(function(){ 
     var id = btoa(id); 
     window.open('/pdf/?type=bonus&id='+id+'&name='+fullname+''); 
    }); 

PHP файл

$id = base64_decode($_GET["id"]); 
echo $id; 
+0

Откуда берутся' fullname' и 'id'? Если вы откроете инструменты разработчика браузера и установите контрольную точку в обработчике кликов, вы можете увидеть, что будет аргументом window.open. –

+0

PHP никогда не будет генерировать ключевое слово 'undefined' сам по себе, потому что он не имеет особого значения в языке. Я уверен, что у вас есть буквальный «undefined», закодированный в Base64. –

ответ

1

вот проблема - var id = btoa(id);

вар идентификатор будет «маска» любая переменная с именем идентификатор за пределами этого нажмите обратный вызов, так что по сути вы делаете

var id = undefined; 
id = btoa(id); 

что приводит к ид = dW5kZWZpbmVk передается PHP - проверить на вкладке инструментов для разработчиков сети и посмотреть, если я прав

dW5kZWZpbmVk является строкой «не определено «base64 encoded - btoa принуждает данный аргумент к строке

+0

Вот и все! благодаря –