完美解决方案:wordpress后台进不去,用户名、密码输入了登陆没有反应(有更新)
亲自试过,解决了自己网站的问题,因此转过来与饱受困惑的战友们分享。
WordPress无法登陆后台,输入用户名、密码之后仍旧返回登陆界面,死循环的问题
症状为:无法登陆wordpress后台,输入用户名密码之后仍旧返回登陆界面。
(版本wordpress 3.0)
网上有各种各样的解决方法,我都试过了,但是很可惜没用。诸如:1.修改字符编码法,或set names utf8法;2.检查wp_options表法,又又名wp_user_roles法;3.清除cookies法;4.最差劲要数重装 wordpress,貌似重装也不能解决问题。
真正的解决方法:
打开文件”/wp-includes/pluggable.php“,修改wp_set_auth_cookie函数。
将(两处,第一处在666行左右,第二处就在后面几行,基本上改第一处就可以了,wordpress 2.9.2;wordpress 3.0 在691行)
setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
修改为:
setcookie($auth_cookie_name, $auth_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure, true);
后话:主要就是更改cookie的作用目录,由原来的“/wp-admin”变成根目录“/”。问题大概是由于无法跨目录读取用户的cookie导致的(参见pluggable.php中的函数wp_parse_auth_cookie)。
————————————————————————————————————————————————————————————————————————————————————————
艹,经过一晚上和一上午的试验,终于发现问题所在:
浏览器输入登陆就不会刷新,也不提示错误。
浏览器输域控/game登陆就会刷新。
看来是是因为设置了域名直接访问的缘故:见〖wordpress实用小技巧〗添加几个字符实现子目录访问转移到域名直接访问(http://www.cnblogs.com/cuizhf/p/4539608.html)。
参考这个网页http://codex.wordpress.org/Login_Trouble,应该可以得到答案,有时间再仔细看看。
————————————————————————————————————————————————————————————————————————————————————————
好吧,放弃了,直接把网站放到根目录好了;是否要开启WordPress网络功能(多站点模式)才能解决这个登录问题呢?
wordpress多站点功能在3.0版本以后已经开始提供,它的主要特色功能如下:
1、只安装一个wordpress程序即可创建多个wordpress站点,可以是子域名也可以是子目录。
2、类似新浪博客那样,让每个用户拥有自己的专栏博客。每个用户都有相互独立的博客后台。
3、管理员可设置开放哪些主题给多站点,用户可以从开放的主题中自行选择喜欢的主题样式。
4、管理员可配置插件给用户使用,借助wordpress良好的插件扩展性,不断完善用户博客的功能。
使用wordpress的多站点功能,你完全可以配置出一个迎合用户需求的个人专栏博客。
BUG呈现出的状况:
1. 浏览器地址栏如下:
http://www.ganxb2.com/xb/wp-login.php?redirect_to=http%3A%2F%2Fwww.ganxb2.com%2Fxb%2Fwp-admin%2F&reauth=1
2. 登录窗口错误提示cookies被阻止
3. 在登录页面输入密码和用户名,点击登录,页面跳一下,没提示用户名或密码错误,还是停留在 WordPress 登录页面。但是如果输入错误的用户名或密码,则提示登录错误。
BUG具体处理方法总结如下:
1、 不能正常登陆 WordPress 后台,把路由器去掉,直接插在猫上。
2、 清除 cookies 法。
一种是清除当时所用的浏览器的cookies
一种是打开ie浏览器,工具–internet选项–隐私,然后把安全级别的滑块拉到最下,“接受所有的cookies”,如果可以解决再重新打开恢复默认值。
3、 改 pluggable.php 法:
打开文件 /wp-includes/pluggable.php,修改 wp_set_auth_cookie 函数。
将
setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
修改为:
setcookie($auth_cookie_name, $auth_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure, true)
改完关了浏览器重新打开测试。
4、 修改 WordPress 目录下的 wp-config 文件,或者删除重新生成。
加上如下代码:
$home = ‘http://’.$_SERVER[‘HTTP_HOST’]; //
博客首页 $wpurl = ‘http://’.$_SERVER[‘HTTP_HOST’]; //
WP程序的路径 define(’WP_HOME’, $home);define(’WP_SITEURL’, $wpurl);。
5、 换浏览器。IE、搜狗、火狐……
6、 使用地址:域名 /wp-admin/index.php 登录后台。
7、 打开 phpMyAdmin,点开 options,看到自己的 siteurl,值为 http://www.xxx.com/WordPress ,把 www 删掉,再回到 WordPress 的登陆页面,输入用户名和密码。
8、 把主题文件夹里的functions.php中<?php …… ?>之前和之后的空格或者多出的空行删除
根目录下的wp-config.php中的<?php …… ?>之前和之后的空格删除
wp-includes/user.php中的<?php …… ?>之前和之后的空格删除
9、 删除wp-content/plugins文件夹(意思就是揪出BUG是否产生于WORDPRESS插件)
10、 重装wordpress或者旧版手动升级新版