一区二区久久-一区二区三区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精品一区二区 | 美女一级毛片免费观看 | 日韩精品第一页 | 久久午夜青青草原影院 | 免费人成在线视频播放2022 | 亚洲综合天堂 | 国产成+人+综合+亚洲不卡 | 亚洲欧洲视频在线 | 国产小视频91 | 亚洲精品高清国产一久久 | 2021国内精品久久久久影院 | 国产综合91天堂亚洲国产 | 日韩中文字幕精品一区在线 | 国产在线观看人成激情视频 | 伊人小婷婷色香综合缴缴情 | 99久久精品国语对白 | 精品视频网站 | 五月综合激情久久婷婷 | 天天澡天天摸天天爽免费 | 91在线看片 | 欧美色欧美色 | 久久国产一区二区三区 | 国产真实乱子伦精品视 | 国产在线观看黄色 | 欧美一卡2卡三卡四卡五卡 欧美一欧美一区二三区性 欧美一区a | 最色网在线观看 | 久久穴 | 91麻豆精品国产片在线观看 | 中文字幕久久网 | 亚洲影院手机版777点击进入影院 | 小说区乱图片区 | 成人小视频在线免费观看 | 美女扒开双腿让男人爽透视频 | 狠狠婷 | 国产成人精选免费视频 | 一级韩国aa毛片免费观看 | 国内精品区一区二区三 |