prestashop中的程序化登录

时间:2017-04-26 14:12:48

标签: php ajax post prestashop

我在Cookie中有一个加密链接,其中包含一个cutomer的电子邮件和密码。 当我转到此页面时,电子邮件和密码将被取消(所有这一切都正常)。

我发现一个线程告诉我将POST方法中的3个参数传递给某个url: email,passwd,submitLogin。 引用的线程 - > PrestaShop - Login programmatically

我没有其他选择使用ajax post方法执行此登录,如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

<?php

function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}

$email = base64_url_decode($_GET['id']);
$password = base64_url_decode($_GET['pwd']);

?>

<script>
    $( document ).ready(function() {
        $.post('index.php?controller=authentication', { back: 'my-account', email: '<?php echo $email ?>', passwd : '<?php echo $password ?>', SubmitLogin: 1},
            function(returnedData){
                console.log(returnedData);
            }).fail(function(){
            console.log("error");
        });
    });
</script>

然而,ajax的响应对应于登录页面,特别是没有任何消息。

有人会知道它为什么不登录我们吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

上一个获得awnser的线程是正确的,但仅限于他们的prestashop版本(v1.5),我一直使用v1.7(当前最新版本)。

差异是控制器验证的post变量的名称: V1.5:

  • 电子邮件
  • passwd的
  • SubmitLogin

而在v1.7中,这些应该改为:

  • 电子邮件
  • 密码
  • submitLogin

因此更改帖子值的名称对我来说是这样的。 我仍然有问题,它在我的ajax帖子上返回了一个失败,但它的工作原理很奇怪。

我感谢所有花时间阅读我的帖子的人。