Prestashop 无法以管理员身份登录

Posted

技术标签:

【中文标题】Prestashop 无法以管理员身份登录【英文标题】:Prestashop cant login in admin 【发布时间】:2012-07-05 07:28:00 【问题描述】:

几天前,我无法访问基于 prestashop 平台的网站上的管理面板。 输入登录名和密码后,我再次被重定向到登录页面,一切都重复了。

该站点托管在专用服务器上,我正在开发的其他一些 prestashop 站点也托管在该服务器上。在尝试访问这些网站上的管理面板后,我得到了相同的“错误”。

你怎么看,有什么问题?

Prestashop 版本:1.4.7.3 和 1.4.8.2

服务器:CentOs、php

【问题讨论】:

【参考方案1】:

解决方法试试这个:

打开; phpMyAdmin、ps_configuration表

找到,PS_COOKIE_CHECKIP,设置为0

清空所有缓存再试,应该会解决的。

您可以认为它与 IP/网络问题有关。

【讨论】:

【参考方案2】:

我花了很多时间调试这个。在我的计算机上本地安装 prestashop。我的情况如下,您应该手动导航到以下内容:

< domain >/admin/index.php

【讨论】:

非常感谢,您解决了我的问题...在 Fedora 32 上【参考方案3】:

在我的 Apache Web 服务器前添加 nginx 作为反向代理后,我遇到了同样的问题。

问题出在“检查 cookie 上的 IP 地址”参数设置为“yes”。由于我被管理员锁定并且无法更改它,因此我使用此 SQL 请求直接在数据库中进行了操作:

UPDATE ps_configuration SET value = 0 WHERE name='PS_COOKIE_CHECKIP';

PS : ps_ 是我的表前缀,你可以根据你的设置进行调整。

【讨论】:

这很快。一个好的解决方案可能是添加一个 if 子句并放置几行代码来检查(例如) $_REQUEST["letmein"] ... 这样您就可以进入面板并启用/禁用该实例的 cookie 检查。永久禁用不是一个好主意。 我没问题 :) 这是最可靠的解决方案,适用于所有场景。当负载均衡器设置到位并且 BO 由多个 IP 访问时,可能会引入此问题。但在安全方面,这可能不是最正确的解决方案,因为安全连接的全部意义是无效的。 谢谢!这对我有用。但我还需要禁用“游戏化 - 客户专业知识”模块。【参考方案4】:

您可以尝试以下方法:

1/ 清除浏览器缓存和 cookie

2/ 尝试使用 Firefox 而不是 Chrome(这似乎有一些意想不到的问题)

3/ 在ps_configuration 表中检查PS_SHOP_DOMAINPS_SHOP_DOMAIN_SSL

4/ 手动清除 smarty 缓存 : 删除 tools/smarty/compiletools/smarty/cache 中的所有文件

5/ 在classes/Cookie.php 中禁用 IP 检查(这可能会导致动态 IP 出现许多问题): 在isLoggedBack(),删除或注释第四个条件:

AND (!isset($this-&gt;_content['remote_addr']) OR $this-&gt;_content['remote_addr'] == ip2long(Tools::getRemoteAddr()) OR !Configuration::get('PS_COOKIE_CHECKIP'))

6/ 缩短 cookie 的过期时间(IE 可能会遇到最长时间 cookie 的问题):在 classes/Cookie.php 构造函数中,

设置:$this-&gt;_expire = isset($expire) ? (int)($expire) : (time() + 3600);

而不是$this-&gt;_expire = isset($expire) ? (int)($expire) : (time() + 1728000);

【讨论】:

对于 PS 1.5; 5/ Disable the IP check:你可以代替手动编辑核心文件去Administration &gt; Preferences并将Check the IP address on the cookie更改为no..同样的事情到6/ +1 对 Firefox 的建议!成功登录后,Chrome 似乎什么都不做...... #5 为我解决了这个问题 - 我有 2 个互联网连接,问题只发生在其中一个上,徘徊为什么...... @UnLoCo。事实上,使用其他浏览器可以让您通过管理面板进行更改。 删除我网站的 cookie 解决了我的问题。【参考方案5】:

我使用 prestashop 1.4.8.2 我刚刚通过更改 admin/login.php 调试了我的后台登录循环 只需删除以下代码中看似无用的条件即可。

if ((empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) == 'off')
     AND Configuration::get('PS_SSL_ENABLED'))

改变

 if (!Configuration::get('PS_SSL_ENABLED'))

我还清除了 cookie 并且成功了。我不知道它是否会弄乱其他东西,但我终于可以进入我的后台了。 平安!!

【讨论】:

【参考方案6】:

如果您已将 prestashop 从本地版本或其他域中移出,除了经典版本。

update ps_configuration table set value="www.myshop.com" where name ="PS_SHOP_DOMAIN";

update ps_configuration table set value="www.myshop.com" where name ="PS_SHOP_DOMAIN_SSL";

检查名为ps_shop_url 的表,并更新domaindomain_ssl 字段,以及physical_url

例子:

update ps_shop_url set domain='www.myshop.com', domain_ssl='www.myshop.com', physical_url='/';

【讨论】:

这不适用于任何方式【参考方案7】:

例如,当我将商店域配置为非 www 并尝试使用 www 访问时,有时会出现此错误。我喜欢强制所有用户使用相同的 url,所以我强制在 .htaccess 中输入 www:

RewriteCond %HTTP_HOST !^www.
RewriteRule ^(.*)$ http://www.%HTTP_HOST/$1 [R=301,L]

【讨论】:

以防域事务不受影响。如果该域无关紧要,这无论如何都不会解决。【参考方案8】:

这对我有用:在管理>首选项控制面板中,将“检查 Cookies IP 地址”设置为“否”。

http://xbfish.com/tag/auto-logout/

【讨论】:

【参考方案9】:

我和其他人有同样的问题。

我可以通过 IE 登录,但不能通过 firefox 登录。

我解决这个问题的方法是进入 cookie 管理器并删除所有 cookie。

我知道这听起来很陈词滥调,但没有其他方法。

我搜索了我的站点名称并查看了 cookie,它的日期很长但不再有效。我的猜测是我损坏了 cookie 或者他们进行了 IP 匹配,因为在使用管理面板的过程中,我切换到手机浏览器进行检查。返回时,它只会循环登录页面,没有错误。

我认为他们需要从软件的角度解决问题。

无论如何,在我删除了与我的网站相关的所有 cookie 后,我马上就恢复了没有问题。它还解决了我在使用 www.mysite.com 和 mysite.com 时遇到的问题。我正在与技术支持人员交谈,因为有时它会起作用,而有时它不会。也许 cookie 还存储了用于动态链接的 www/non 的哪个变体。我的 DNS 被允许有时间来解决,技术支持将其归咎于此,但事实并非如此。

不要只清除 cookie,而是手动删除您网站的 cookie。当我使用清除 cookie 时,它​​并没有删除很多 cookie。我发现在清除 cookie 之后,我的网站仍然设置了 9 个 cookie。这是我的错误还是其他原因,我不知道。

祝大家好运,感谢其他建议。如果它返回,我将进入其他建议并报告。

【讨论】:

【参考方案10】:

我知道这是旧的,但它可以帮助某人,通过打开 /config/config.inc.php 打开错误。

寻找线:

ini_set('display_errors', 'off');

改成:

ini_set('display_errors', 'on');

编辑:更改了一个看似错字

【讨论】:

这并不适用。【参考方案11】:

有些事情可能会导致您的旧密码无法正常工作。一种可能是您的 _COOKIE_KEY_ 发生了变化。

您可以尝试使用以下脚本生成新的密码哈希。然后,您可以在 xxxx_employee 表中的数据库中替换它(其中 xxxx_ 是您的表前缀)。我希望这对你有用。在任何情况下:保留旧哈希的备份。

这是小脚本:

<?php
require(dirname(__FILE__).'/config/config.inc.php');
echo Tools::encrypt($_REQUEST["pw"]);

完成后不要忘记从服务器中删除脚本!

【讨论】:

【参考方案12】:

如果您有一个工作站点,您可以在其中登录。也许您可以将用户从工作复制到非工作,然后确定是否有效。

【讨论】:

不适用

以上是关于Prestashop 无法以管理员身份登录的主要内容,如果未能解决你的问题,请参考以下文章

如何结合 Prestashop (PHP) 和 DjangoCMS (Python)

尝试登录 Prestashop 管理面板时出现严重的 WordPress 错误

以管理员身份运行 Microsoft Edge 时不支持登录

以域用户身份登录时无法连接到 IBM WS 本地队列管理器

登陆域的用户要在客户机安装软件无法以本机管理员身份运行!

Wordpress 前端仅在以管理员身份登录时有效