網(LieHuo.Net)教程 用戶空間訪問提示“用戶名已被刪除”的問題存在許久了...真的很久額。柏拉圖說5.5 0824版本已經解決這個問題,但是據我所知,目前流行的apache+liunx/uinx和iis6.0+2003的2種服務環境下,因為各種原因,依然沒有得到徹底解決,本人的空間服務環境非常特別是 iis 7.0 + 2008 空間商說什么也不給我解決這個問題!郁悶之極!
我仔細查看過member下的文件源碼后發現每個地方都是以uid進行傳參,如果單純的吧所有的uid替換為mid后,會出現用戶A訪問用戶B的空間并給用戶B留言或者短消息的時候,就會丟失掉UID,那么用戶看到的留言里的用戶名就全部是數字,或者根本留言不了!
于是用另一個方法:保留uid的訪問方式新增mid訪問,方法很簡單只需修改member/index.php這個文件就可以實現...
這樣不會出現上面的問題也不會影響后續版本的升級!
具體辦法:
打開member/index.php這個文件
找到
以下為引用的內容: if(empty($uid)) { $uid = ''; } else { $tmpstr = @gb2utf8($uid); $tmpstr2 = @utf82gb($tmpstr); if($tmpstr2==$uid) $uid = $tmpstr; } if(empty($action)) { $action = ''; } if(empty($aid)) { $aid = ''; } |
替換為:
以下為引用的內容: if(empty($uid)) { if (empty($_REQUEST['mid'])) { $uid = ''; }else{ $uid=$dsql->GetOne("Select userid From `dede_member` where mid='".$_REQUEST['mid']."'; "); if (!is_array($uid)){ $uid=''; }else{ $uid=$uid['userid']; } } } //LIEHUO.NET if(empty($action)) { $action = ''; } if(empty($aid)) { $aid = ''; } |
至此以用戶名和UID的形式都可以訪問了。但是中文的問題還沒有解決,例如:http://www.veryhuo.net/index.php?uid=柳絮隨風,解決方法只能是讓訪客訪問UID的形式。修改方法如下:
打開member/emplets/head.htm,找到:
以下為引用的內容: <li><a href="<?php echo $myurl; ?>" title="我的空間">我的空間</a></li> |
改為:
以下為引用的內容: <li><a href="../member/index.php?mid=<?php echo $cfg_ml->M_ID; ?>" title="我的空間">我的空間</a></li> |
接下來要做的就是 用偽靜態規則重寫一下url 讓其他用戶訪問起來也很容易比如:http://www.veryhuo.net/member/1
將member/emplets/head.htm中的
以下為引用的內容: <li><a href="../member/index.php?mid=<?php echo $cfg_ml->M_ID; ?>" title="我的空間">我的空間</a></li> |
修改為:
以下為引用的內容: <li><a href="<?php echo $cfg_ml->M_ID; ?>" title="我的空間">我的空間</a></li> |
IIS偽靜態規則下載(IIS6.0與7.0文件):DedeCMS_Space_ReWrite.rar 用APACHE的朋友自己修改一下規則。