php地址栏传中文$_GET下来后乱码,urlencode和urldecode用法详解
url编码
语法: string urlencode(string str);
返回值: 字符串
函数种类: 编码处理
例如:
<?php
$ChineseName="我的名字,是中文的哦";
$EncodeStr=urlencode($ChineseName);
echo "<a href=/cgi/personal/name/$EncodeStr/gt;我的名字/lt;/a/gt;.cgi";
?>
url解码
还原 URL 编码字符串。
语法: string urldecode(string str);
返回值: 字符串
函数种类: 编码处理
例如:
对前面传过来的中文进行处理显示
<?php
$DecodeStr=urldecode($_GET['name']);//你可能不用解码都可以,因为浏览器会自动帮你解码
echo $DecodeStr;
?>
关于php用get方法从url上获得的中文乱码问题
使用$gonghui = iconv("gb2312","UTF-8",$gonghui);另一方法代码
/**
* 多字节字符串编码转换函数
*
* @param string str 需要进行编码转换的字符串
* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等
* @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码
* @return string
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
**/
mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合,几乎支持所有编码。PHP >= 4.0.6、 5 版本支持。
直接获取 reg.php?gh=某某;
//工会登入参
$gonghui = $_GET['gh'];
获得的$gonghui 为gb2312编码 输出到utf-8网页上显示乱码
改成
//工会登入参数
$gonghui = $_GET['gh'];
$gonghui = mb_convert_encoding($gonghui, "UTF-8", "gb2312");
就显示正常了
对整个页面进行转换
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正 常显示。
在php文件的头部加上下面三行代码:
mb_internal_encoding("gb2312"); // 这里的gb2312是你网站原来的编码
mb_http_output("HTML-ENTITIES");
ob_start('mb_output_handler');
使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。
如果没有没有开启php的mbstring扩展,则需要做如下设置,让php支持该扩展。
1、windows 服务器环境
编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。
2、Linux服务器环境
在编译配置时加入 --enable-mbstring=cn 编译参数,再进行PHP的编译安装。
其它网友的第三个参考方法:
//方法一 urldecode
$url = 'aaa.php?region='.urldecode("四川省");
<a href="/blog_article/</php echo $url;/gt;.html">aaa </a>
//方法二base64_encode
<?
$test="四川省";
$test1=base64_encode($test);
echo '<a href="/blog_article/www/region/$test1.html">aaa </a>';
?>
另一页面使用base64_decode解开
base64_decode($region);
//方法三让服务器支持中文
[root@dhcp ~]# locale
lang=zh_cn.utf-8
lc_ctype="zh_cn.utf-8"
lc_numeric="zh_cn.utf-8"
lc_time=c
lc_collate=c
lc_monetary="zh_cn.utf-8"
lc_messages="zh_cn.utf-8"
lc_paper="zh_cn.utf-8"
lc_name="zh_cn.utf-8"
lc_address="zh_cn.utf-8"
lc_telephone="zh_cn.utf-8"
lc_measurement="zh_cn.utf-8"
lc_identification="zh_cn.utf-8"
lc_all=
[root@dhcp ~]#
<?php
session_start();
//==========================
//作者:biyuan
//时间:2006.07
//联系:QQ6010707
//==========================
?>
<html>
<head>
<title>碧原网络PHP+ACCESS文章管理系统</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<style type="text/css">
body {
margin:0px;
text-align:center;
font-size:12px;
font-family:verdana;
}
td {
font-size:12px;
height:28px;
padding:4px;
font-family:verdana;
}
A:link,
A:visited,
A:active {
color: #005a17; text-decoration: none;
}
A:hover {
color: #ff5a00; text-decoration: underline;
}
</style>
</head>
<body>
<?php
//==================================
//连接数据库
//==================================
@$conn = new com("ADODB.Connection");
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("article.mdb"));
//==================================
//文章导航
//==================================
function article_menu(){
global $conn;
@$sql = "Select * From List";
@$rs = $conn->Execute($sql);
while(!$rs->Eof){
echo "| <a href=/index.html"?classid=" . $rs->Fields[2]->value . "\">" . $rs->Fields[1]->value . "</a> ";
$rs->MoveNext();
}
echo "| <a href=/index.html"?admin=login\">后台管理</a>\r\n";
$rs->Close();
if(@$_SESSION["ARTICLEADMIN"] == "BY_PHP_ARTICLE"){
echo "<br />管理选项-> | <a href=/index.html"?admin=class\">分类管理</a> | <a href=/index.html"?admin=insert\">发表文章</a> | <a href=/index.html"?admin=list\">文章列表</a> | <a href=/index.html"?admin=logout\">退出登陆</a>";
}
}
//==================================
//文章列表:article_list(文章分类ID)
//==================================
function article_list($str){
global $conn;
@$sql = "Select id,by_title,by_name,by_time,by_count From Article Where by_class = " . $str . " Order By id desc";
@$rs = $conn->Execute($sql);
if(!$rs->Eof){
echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#cccccc\">\r\n"
. " <tr bgcolor=\"#F3F3F3\" align=\"center\">\r\n"
. " <td>文章标题</td><td>文章作者</td><td>发表时间</td><td>浏览次数</td>\r\n"
. " </tr>\r\n";
while(!$rs->Eof){
echo " <tr bgcolor=\"#FFFFFF\">\r\n"
. " <td><a href=/index.html"?artid=" . $rs->Fields[0]->value . "\">" . $rs->Fields[1]->value . "</a></td><td>" . $rs->Fields[2]->value . "</td><td>" . date("Y-m-d H:i:s",$rs->Fields[3]->value) . "</td><td>" . $rs->Fields[4]->value . "</td>\r\n"
. " </tr>\r\n";
$rs->MoveNext();
}
echo "</table>\r\n";
}
else {
echo "<br />该分类不存在或暂时没有任何文章!";
}
$rs->Close();
}
//==================================
//文章详细:article_look(文章ID)
//==================================
function article_look($str){
global $conn;
@$sql = "Select * From Article Where id = " . $str;
@$rs = $conn->Execute($sql);
@$usql= "Update Article Set by_count = (by_count + 1) Where id = " . $str;
$conn->Execute($usql);
if(!$rs->Eof){
@$body = $rs->Fields[5]->value;
$body = str_replace("[url=file://%22,%22%22,$body/]\\","",$body[/url]);
echo "<table border=\"0\" width=\"60%\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#cccccc\">\r\n"
. " <tr bgcolor=\"#F3F3F3\" align=\"center\">\r\n"
. " <td font-size:14px;font-weight:bold\">" . $rs->Fields[1]->value . "</td>\r\n"
. " </tr>\r\n"
. " <tr bgcolor=\"#F3F3F3\" align=\"center\">\r\n"
. " <td>文章作者:" . $rs->Fields[2]->value . " | 发表时间:" . date("Y-m-d H:i:s",$rs->Fields[3]->value) . " | 浏览次数:" . $rs->Fields[4]->value . "</td>\r\n"
. " </tr>\r\n"
. " <tr bgcolor=\"#FFFFFF\">\r\n"
. " <td>" . $body . "</td>\r\n"
. " </tr>\r\n"
. " <tr bgcolor=\"#F3F3F3\">\r\n"
. " <td align=\"right\">【 <a href=/index.html"javascript:history.back();\">返 回</a> 】 【 <a href=/index.html"javascript:print();\">打 印</a> 】 【 <a href=/index.html"javascript:close();\">关 闭</a> 】</td>\r\n"
. " </tr>\r\n"
. " </table>\r\n"
. " <script language=\"JavaScript\">document.title += \"--" . $rs->Fields[1]->value . "\";</script>\r\n";
}
else {
echo "<br />该文章不存在或已被管理员删除!";
}
$rs->Close();
}
//==================================
//后台:分类管理
//==================================
function admin_class(){
global $conn;
@$sql = "Select * From List";
@$rs = $conn->Execute($sql);
echo "<form action=\"\" method=\"post\" name=\"frm\">\r\n";
while(!$rs->Eof){
echo "类别:<input type=\"text\" value=\"" . $rs->Fields[1]->value . "\" name=\"class_" . $rs->Fields[0]->value . "\" /> 编号:<input type=\"text\" value=\"" . $rs->Fields[2]->value . "\" name=\"class_cid_" . $rs->Fields[0]->value . "\" /> <input type=\"button\" value=\"修改\" onclick=\"frm.action='/blog_article/admin/class/amp; . $rs-/gt;Fields[0]-/gt;value ..html"';submit();\" /> <input type=\"button\" value=\"删除\" onclick=\"frm.action='/blog_article/admin/class/amp; . $rs-/gt;Fields[0]-/gt;value ..html"';submit();\" /><br />\r\n";
$rs->MoveNext();
}
echo "类别:<input type=\"text\" name=\"class_name\" /> 编号:<input type=\"text\" name=\"class_cid\" /> <input type=\"button\" value=\"增加\" onclick=\"frm.action='/blog_article/admin/class/amp;;submit();_.html" /> <input type=\"button\" value=\"闲置\" disabled />\r\n"
. "</form>\r\n";
//增加一个类别
if(@$_GET["class"] == "add"){
if(@$_POST["class_name"] == "" || @$_POST["class_cid"] == ""){
echo "<br />填写不完整!";
echo "<script language=\"JavaScript\">setTimeout(\"history.back();\", 2000);</script>";
exit();
}
else {
@$sql = "Insert into List(by_list,by_cid) Values('" . $_POST["class_name"] . "' , '" . $_POST["class_cid"] . "')";
$conn->Execute($sql);
echo "<br />添加成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/class.html';\", 2000);</script>";
}
}
//修改一个类别
if(@$_GET["class"] == "edit"){
if(@$_POST["class_" . $_GET["id"]] == "" || @$_POST["class_cid_" . $_GET["id"]] == ""){
echo "<br />填写不完整!";
echo "<script language=\"JavaScript\">setTimeout(\"history.back();\", 2000);</script>";
exit();
}
else {
@$sql = "Update List Set by_list = '" . $_POST["class_" . $_GET["id"]] . "' , by_cid = '" . $_POST["class_cid_" . $_GET["id"]] . "' Where id = " . $_GET["id"];
$conn->Execute($sql);
echo "<br />修改成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/class.html';\", 2000);</script>";
}
}
//删除一个类别
if(@$_GET["class"] == "del"){
@$sql = "Delete From List Where id = " . $_GET["id"];
$conn->Execute($sql);
echo "<br />删除成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/class.html';\", 100);</script>";
}
}
//==================================
//后台:发表文章(支持HTML)
//==================================
function admin_insert(){
global $conn;
if(@$_GET["innert"] == "add"){
if(@$_POST["title"] == "" || @$_POST["name"] == "" || @$_POST["class"] == "" || @$_POST["body"] == ""){
echo "<br />填写不完整!";
echo "<script language=\"JavaScript\">setTimeout(\"history.back();\", 2000);</script>";
exit();
}
else {
@$body = $_POST["body"];
$body = str_replace("'", "''", $body);
$body = str_replace("\r\n", "<br />", $body);
@$sql = "Insert into article(by_title,by_name,by_time,by_count,by_body,by_class) Values('" . $_POST["title"] . "' , '" . $_POST["name"] . "' , #" . date("Y-m-d G:i:s") . "# , 0 , '" . $body . "' , '" . $_POST["class"] . "')";
$conn->Execute($sql);
echo "<br />添加成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/insert.html';\", 2000);</script>";
}
}
else {
echo "<div width:590px;text-align:left\">\r\n"
. "<form action=\"?admin=insert&innert=add\" method=\"post\">\r\n"
. "文章标题:<input type=\"text\" name=\"title\" /><br />\r\n"
. "文章作者:<input type=\"text\" name=\"name\" /><br />\r\n"
. "文章类别:<select name=\"class\">\r\n";
@$sql = "Select * From List";
@$rs = $conn->Execute($sql);
while(!$rs->Eof){
echo "<option value=\"" . $rs->Fields[2]->value . "\">" . $rs->Fields[1]->value . "</option>\r\n";
$rs->MoveNext();
}
echo "</select><br />\r\n"
. "文章正文:<textarea cols=\"70\" rows=\"14\" name=\"body\"></textarea><br />\r\n"
. "<center><input type=\"submit\" value=\"提交\" /> <input type=\"reset\" value=\"重置\" /></center>\r\n"
. "</form>\r\n"
. "</div>\r\n";
}
}
//==================================
//后台:文章列表
//==================================
function admin_list(){
global $conn;
@$sql = "Select id,by_title,by_name,by_time,by_count,by_class From Article Order By id desc";
@$rs = $conn->Execute($sql);
if(!$rs->Eof){
echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#cccccc\">\r\n"
. " <tr bgcolor=\"#F3F3F3\" align=\"center\">\r\n"
. " <td>文章标题</td><td>文章分类<td>文章作者</td><td>发表时间</td><td>浏览次数</td><td>操作</td>\r\n"
. " </tr>\r\n";
while(!$rs->Eof){
@$sql = "Select * From List Where by_cid = " . $rs->Fields[5]->value;
@$crs = $conn->Execute($sql);
@$cid = $crs->Fields[1]->value;
echo " <tr bgcolor=\"#FFFFFF\">\r\n"
. " <td><a href=/index.html"?artid=" . $rs->Fields[0]->value . "\">" . $rs->Fields[1]->value . "</a></td><td>" . $cid . "</td><td>" . $rs->Fields[2]->value . "</td><td>" . $rs->Fields[3]->value . "</td><td>" . $rs->Fields[4]->value . "</td><td><a href=/index.html"?admin=list&list=edit&id=" . $rs->Fields[0]->value . "\">编辑</a> | <a href=/index.html"?admin=list&list=del&id=" . $rs->Fields[0]->value . "\">删除</a></td>\r\n"
. " </tr>\r\n";
$crs->Close();
$rs->MoveNext();
}
echo "</table>\r\n";
}
else {
echo "<br />该分类不存在或暂时没有任何文章!";
}
$rs->Close();
//修改文章
if(@$_GET["list"] == "edit"){
if(@$_GET["edit"] == "true"){
if(@$_POST["title"] == "" || @$_POST["name"] == "" || @$_POST["class"] == "" || @$_POST["body"] == ""){
echo "<br />填写不完整!";
echo "<script language=\"JavaScript\">setTimeout(\"history.back();\", 2000);</script>";
exit();
}
else {
@$body = $_POST["body"];
$body = str_replace("'", "''", $body);
$body = str_replace("\r\n", "<br />", $body);
@$sql = "Update article Set by_title = '" . $_POST["title"] . "' , by_name = '" . $_POST["name"] . "' , by_count = " . $_POST["count"] . " , by_body = '" . $body . "' , by_class = '" . $_POST["class"] . "' Where id = " . $_GET["id"];
$conn->Execute($sql);
echo "<br />修改成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/list.html';\", 2000);</script>";
}
}
else {
@$sql = "Select * From Article Where id = " . $_GET["id"];
@$rs = $conn->Execute($sql);
echo "<div width:590px;text-align:left\">\r\n"
. "<form action=\"?admin=list&list=edit&edit=true&id=" . $rs->fields[0]->value . "\" method=\"post\">\r\n"
. "文章标题:<input type=\"text\" name=\"title\" value=\"" . $rs->fields[1]->value . "\" /><br />\r\n"
. "文章作者:<input type=\"text\" name=\"name\" value=\"" . $rs->fields[2]->value . "\" /><br />\r\n"
. "浏览次数:<input type=\"text\" name=\"count\" value=\"" . $rs->fields[4]->value . "\" /><br />\r\n"
. "文章类别:<select name=\"class\" id=\"class\">\r\n";
@$sql = "Select * From List";
@$crs = $conn->Execute($sql);
while(!$crs->Eof){
echo "<option value=\"" . $crs->Fields[2]->value . "\">" . $crs->Fields[1]->value . "</option>\r\n";
$crs->MoveNext();
}
$crs->close();
@$body = $rs->Fields[5]->value;
$body = str_replace("<br />","\r\n",$body);
echo "</select><br />\r\n"
. "<script language=\"JavaScript\">\r\n"
. "document.getElementById(\"class\").selectedIndex = " . $rs->fields[6]->value . " - 1;\r\n"
. "</script>\r\n"
. "文章正文:<textarea cols=\"70\" rows=\"14\" name=\"body\">" . $body . "</textarea><br />\r\n"
. "<center><input type=\"submit\" value=\"提交\" /> <input type=\"reset\" value=\"重置\" /></center>\r\n"
. "</form>\r\n"
. "</div>\r\n";
}
}
//删除文章
if(@$_GET["list"] == "del"){
@$sql = "Delete From Article Where id = " . $_GET["id"];
$conn->Execute($sql);
echo "<br />删除成功!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/list.html';\", 100);</script>";
}
}
//==================================
//权限验证
//==================================
function admin_session(){
if(@$_SESSION["ARTICLEADMIN"] != "BY_PHP_ARTICLE"){
echo "<br />请先登陆!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/login.html';\", 2000);</script>";
exit();
}
}
//==================================
//后台登陆
//==================================
function admin_login(){
if(@$_SESSION["ARTICLEADMIN"] == "BY_PHP_ARTICLE"){
echo "<script language=\"JavaScript\">window.location.href='/blog_article/admin/admin.html';</script>";
}
else{
echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#cccccc\">\r\n"
. " <tr bgcolor=\"#F3F3F3\" align=\"center\">\r\n"
. " <td><strong>管理员登陆</strong></td>\r\n"
. " </tr>\r\n"
. " <tr bgcolor=\"#FFFFFF\">\r\n"
. " <form method=\"post\" action=\"?admin=check\">\r\n"
. " <td><input type=\"password\" name=\"adminPass\" /><input type=\"submit\" value=\"确定\" /></td>\r\n"
. " </form>\r\n"
. " </tr>\r\n"
. "</table>\r\n";
}
}
//==================================
//登陆验证
//==================================
function admin_check(){
if(trim($_POST["adminPass"]) != "admin"){
echo "<br />错误的密码!";
echo "<script language=\"JavaScript\">setTimeout(\"history.back();\", 2000);</script>";
}
else {
echo "<br />登陆成功!";
@$_SESSION["ARTICLEADMIN"] = "BY_PHP_ARTICLE";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/admin.html';\", 2000);</script>";
}
}
//==================================
//URL参数列表
//==================================
function page_load(){
@$classid = $_GET["classid"];
if($classid != ""){
if(!is_numeric($classid)){
echo "<br />错误的参数!";
return false;
}
else {
article_list($classid);
}
}
@$artid = $_GET["artid"];
if($artid != ""){
if(!is_numeric($artid)){
echo "<br />错误的参数!";
return false;
}
else {
article_look($artid);
}
}
@$admin = $_GET["admin"];
if($admin == "login"){
admin_login();
}
if($admin == "check"){
admin_check();
}
if($admin == "admin"){
admin_session();
echo "<br />登陆成功!请选择功能菜单进行操作.";
}
if($admin == "logout"){
session_destroy();
echo "<br />已成功退出!";
echo "<script language=\"JavaScript\">setTimeout(\"window.location.href='/blog_article/admin/login.html';\", 2000);</script>";
}
if($admin == "class"){
admin_session();
admin_class();
}
if($admin == "insert"){
admin_session();
admin_insert();
}
if($admin == "list"){
admin_session();
admin_list();
}
if($classid == "" && $artid == "" && $admin == ""){
echo "<script language=\"JavaScript\">window.location.href='/blog_article/classid/1.html';</script>";
}
}
?>
<div >
<br /><br /><br />文章分类-> <?=article_menu();?>
</div>
<?=page_load();?>
<?php
$conn->Close();
?>
</body>
</html>
<?php
// 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
function request_uri()
{
if (isset($_SERVER['REQUEST_URI']))
{
$uri = $_SERVER['REQUEST_URI'];
}
else
{
if (isset($_SERVER['argv']))
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
}
else
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
}
}
return $uri;
}
?>