一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP base64編碼后解碼亂碼的解決辦法

在用php做東西的時(shí)候發(fā)現(xiàn)了一個(gè)問(wèn)題,可以簡(jiǎn)單的歸結(jié)為亂碼的問(wèn)題,但是這個(gè)問(wèn)題不是函數(shù)本身造成的。來(lái)看看罪魁禍?zhǔn)资钦l(shuí)。

嫌疑人:base64_encode 和 base64_decode

罪行:我寫了一個(gè)跳轉(zhuǎn)和提示函數(shù),接收提示信息后跳轉(zhuǎn)到指定的頁(yè)面,但是跳轉(zhuǎn)提示時(shí)漢字亂碼。

跳轉(zhuǎn)模版代碼如下:
復(fù)制代碼 代碼如下:
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="author" content="王健 wj@yurendu.com" />
<title>跳轉(zhuǎn)提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微軟雅黑'; color: #333; font-size: 16px;  text-align:center; }
.system-message{ width:600px; margin:150px auto 0 auto; background:#f8f8f8; border:1px solid #ccc;-webkit-border-radius: 8px;-moz-border-radius: 8px;border-radius: 8px;-webkit-box-shadow: #666 0px 0px 10px;-moz-box-shadow: #666 0px 0px 10px;box-shadow: #666 0px 0px 10px;}
.system-message h1{ font-size:30px; font-weight:normal; height:100px; line-height:100px; color:#c60;}
.system-message .jump{ padding: 40px 0;}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ height:60px; line-height:70px; font-size: 18px; color:#900;}
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
    <div class="system-message">
        <?php if( $_GET['success'] ){?>
            <h1>:)   恭喜!</h1>
            <p class="success"><?php echo base64_decode($_GET['message']); ?></p>
        <?php }else{?>
            <h1>:(   出錯(cuò)了!</h1>
            <p class="error"><?php echo base64_decode($_GET['message']); ?></p>
        <?php }?>
        <p class="detail"></p>
        <p class="jump">系統(tǒng)將在 <b id="wait"><?php echo $_GET['time']; ?></b> 后跳轉(zhuǎn),可直接 <a id="href" href="<?php echo base64_decode($_GET['url']); ?>">點(diǎn)此跳轉(zhuǎn)</a></p>
       
    </div>
<script type="text/Javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
 var time = --wait.innerHTML;
 if(time <= 0) {
  location.href = href;
  clearInterval(interval);
 };
}, 1000);
})();
</script>
</body>
</html>

php redirect函數(shù)定義如下:

復(fù)制代碼 代碼如下:
/* 提醒后跳轉(zhuǎn) */
function _alert( $success=true, $message='success', $time='3', $url='/'){
 header('Location:/include/redirect.php?success='.$success.'&message='.base64_encode($message).'&time='.$time.'&url='.base64_encode($url));
 exit;
}

假如在php中這樣調(diào)用函數(shù)的話:
復(fù)制代碼 代碼如下:
$query = "update content set bid='$clean[bid]',title='$clean[title]',content='$clean[content]',path='$clean[path]' where id=".$clean['id'];
if( mysql_query($query) ){
 _alert(1,'修改成功',3,'/admin/manage.php');
}else{
 _alert(false,'修改失敗'.mysql_error(),5,'/admin/manage.php');
}

你就會(huì)看到,“修改成功”或者是“修改失敗”這幾個(gè)漢字亂碼了。

為什么?

有時(shí)候用base64_encode加密后,以GET的形式傳到其他頁(yè)面,用base64_decode解密的時(shí)候,出現(xiàn)亂碼。

遇到這個(gè)問(wèn)題的時(shí)候,我就納悶了,為什么有一些能正確解密,但是有一些卻出現(xiàn)亂碼呢?

后來(lái)經(jīng)過(guò)檢查,發(fā)現(xiàn)有一些中文字符,用GET形式傳過(guò)來(lái)的時(shí)候,+號(hào)會(huì)被替換成空格。

為了防止出現(xiàn)亂碼的情況,我做了一步替換,然后再解密,果然,亂碼的問(wèn)題,不復(fù)存在了!

現(xiàn)在問(wèn)題已經(jīng)很簡(jiǎn)單了,只要多寫一步就好了

復(fù)制代碼 代碼如下:
$str = base64_decode(str_replace(" ","+",$_GET['str']));

原來(lái),文章一開(kāi)始定錯(cuò)了嫌疑人了,冤枉了那兩個(gè)函數(shù)了。。。

還可以參考這篇文章:php安全的URL字符串base64編碼和解碼

php技術(shù)PHP base64編碼后解碼亂碼的解決辦法,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品一区二区久久不卡 | 久久久久国产免费 | 国产在线视频91 | 亚洲 国产 图片 | 久久久国产乱子伦精品 | 国产精品一区二区久久不卡 | 97人人模人人爽视频一区二区 | 在线一区免费视频播放 | 免费精品在线 | 伊人久久大香线蕉资源 | 黄网站在线观看高清免费 | 欧美综合区 | 一区=区三区乱码 | 中文字幕不卡一区 | 久久综合网久久综合 | 五月婷婷导航 | 国产在线更新 | 99久久精品免费看国产一区二区三区 | 骚碰97| 国产人成午夜免视频网站 | 日本黄色美女网站 | 亚洲黄色美女视频 | 久久久久青草大香线综合精品 | 人人爱天天做夜夜爽2020麻豆 | 九九亚洲精品 | 国产aⅴ一区二区三区 | 国产亚洲欧美在在线人成 | 亚洲综合在线网 | 伊人色影院 | 久久综合九色综合97婷婷群聊 | 91精品成人免费国产 | 激情六月天婷婷 | 久久久青草青青亚洲国产免观 | 日本一区二区视频免费播放 | 91久久线看在观草草青青 | 三级色网站 | 91aaa免费观看在线观看资源 | 99精品视频在线观看免费播放 | 精品综合一区二区三区 | 中文字幕第13亚洲另类 | 国产黄大片 |