Изменить регистрационный бэкэнд Prestashop

У меня есть сайт Prestashop 1.7.

Я хочу добавить в свою базу данных столбец id_public для моих клиентов со случайным идентификатором из 16 символов. Это должно быть создано при регистрации клиента на сайте.

Как мне это сделать?

/**
 * Creates a default 16 char long hexdec string
 * @param number $length
 * @return string
 */
function RandomString( $length = 16 )
{
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++)
    {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

Я думаю, что в этом нет необходимости, у PS есть столбец с именем secure_key в таблице ps_customer, вы можете использовать его вместо нового, конечно, это безопасный ключ (как назван столбец), тогда вы не должны использовать его как общедоступный информации, но вы можете без проблем извлечь первые 16 символов, а затем использовать их как общедоступные.

Rolige 29.10.2018 20:10

Ох, ладно. Потому что мне нужен этот id_public для создания страницы профиля для общественности со ссылкой вроде mydomain.com/p/id_public. Что вы думаете ?

CanadianDeer 29.10.2018 22:52

Вы можете использовать мой рекомендованный столбец, просто помните, что используйте не более 8 или 16 символов. Никогда не все по соображениям безопасности.

Rolige 30.10.2018 02:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
140
1

Ответы 1

1 / Я рекомендую вам не изменять собственные таблицы Prestashop, а создавать новые.

2 / С помощью хука actionCustomerAccountAdd вы сможете добавить свой ключ для пользователя

    public function hookActionSubmitAccountBefore($params) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++)
    {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'tablecustom (id_customer, key_random) VALUES ('.(int)$params['id_customer'].',"'.pSQL($randomString).'")');
}

Привет, спасибо за ответ. Куда мне поместить этот код? Думаю, в classes / customer.php нету?

CanadianDeer 30.10.2018 14:01

Нет в модуле custom, и нажмите на модуль на этом крючке

ethercreation 31.10.2018 09:57

Другие вопросы по теме