Можно ли как-то сформировать в письме ссылку вместе с логином и паролем для Opencart 3.02, чтобы при клике на ссылку пользователь сразу логинился? Если да, то в каком формате она должна быть?
Сделать то можно, но кто будет делать? Сейчас авторизация идет через post запрос. Переделать нужно на get и тогда будет работать.
Т.е. я правильно понял, что как стоит по дефаулту в Opencart такую рабочую ссылку не сформировать и такое будет работать если только код переписывать?
В общем повторяем и проверяем. \catalog\controller\account\login.php меняем это Код: if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { на это PHP: if (($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) || (isset($this->request->get['email']) && $this->validateget())) { а перед этим Код: protected function validate() { добавим это PHP: protected function validateget() { // Check how many login attempts have been made. $login_info = $this->model_account_customer->getLoginAttempts($this->request->get['email']); if ($login_info && ($login_info['total'] >= $this->config->get('config_login_attempts')) && strtotime('-1 hour') < strtotime($login_info['date_modified'])) { $this->error['warning'] = $this->language->get('error_attempts'); } // Check if customer has been approved. $customer_info = $this->model_account_customer->getCustomerByEmail($this->request->get['email']); if ($customer_info && !$customer_info['status']) { $this->error['warning'] = $this->language->get('error_approved'); } if (!$this->error) { if (!$this->customer->login($this->request->get['email'], $this->request->get['password'])) { $this->error['warning'] = $this->language->get('error_login'); $this->model_account_customer->addLoginAttempt($this->request->get['email']); } else { $this->model_account_customer->deleteLoginAttempts($this->request->get['email']); } } return !$this->error; } Возможно что то не так, по быстрому накидал, проверил, работает. логинюсь по ссылки вида http://сайт/account/login?email=ra@ra.ru&password=12345 А вот ссылку для письма, регистрацию.. как нибудь сами. В симпле вроде регистрирует и отправляет данные на почту. Отредактируйте письмо и будет работать.
Добавлю свои 5 копеек. Я бы только не открывал в чистом виде почту и пароль. Обычное решение делают следующим образом. Добавляют табличку, где формируют какой-нибудь цифробуквенный код. Этому коду соответствует почта и пароль, а так же время действия кода (скажем, неделя/месяц/полгода/год). Отправляете пользователю ссылку с кодом. Если жмакает, то при логине происходит подтягивание пароля и почты, ну и, собственно, дальше аналогичный код как прислал Ravilr, только из get берётся код и простым sql-запросом проверяется в табличке.
Спасибо большое! Только в данном случае речь идёт о проекте, на котором я код не смогу поменять, у меня нет доступа к коду, я делаю лишь определённую работу с клиентами на этом проекте. Я делаю в админке пробный аккаунт для клиента и высылаю ему логин, пароль и ссылку для входа. Но было бы проще, если бы по ссылке он сразу логинился, если бы такую ссылку как-то можно было бы сформировать. Но, как я понял, без изменения кода это сделать нереально.
Нуууууууууууу, вы можете сделать отдельную страничку, которая обязательно должна быть внутри сайта и которая будет перенаправлять параметры с режимом post, скажем, с помощью jQuery в страничку login.php
Открытие ссылки это всегда get запрос, поэтому либо переписывать код, либо добавлять страничку, которая будет делать post запрос
Благодарю за поиск решения, но если я правильно понял, то таки на сам сайт что-то нужно загружать или менять код. Но такой возможности у меня нет т.к. у меня нет FTP доступа к нему. Если таки как-то можно сделать без каких-то изменений на самом сайте, то я бы поговорил о том, чтобы заказать подобное решение. А если такое невозможно, то что ж, придётся мне смириться и работать по-старому.
Ну, в принципе, можно просто написать отдельный ocmod для странички login.php и там если в параметрах get параметры, то JS скриптом их вставлять в форму и делать post формы. В таком случае доступ к фтп не нужен, так как окмод можно установить через админку. Но, это если форму логина никто не менял.
Эээх, у меня и в админку доступ очень ограниченный и доступа к расширениям нет :-( Спасибо за участие, но видно не судьба...