Перейти к содержанию
Официальный форум поддержки Simpla

Автоматическая регистрация пользователя


Перейти к решению Решено SkazZzo4nik,

Рекомендуемые сообщения

Всё сделал по инструкции, всё работает кроме одного, после отправки заказа через корзину, пользователь автоматически регистрируется, ему на почту приходит два письма, первое письмо с заказом, второе с данными о регистрации:

 

в тексте письма с регистрационными данными отсутствует e-mail.

версия simpla 2.0

Логин для входа: 
Пароль: 02h6BS9KT5
Ссылка на сообщение
Поделиться на другие сайты

Ребята, а как можно добавить проверку на скидку в группе, в которой состоит существующий пользователь?

 

заменил строку

$user_id = $this->users->add_user(array('email'=>$order->email, 'password'=>$password, 'name'=>$order->name, 'enabled'=>'1', 'last_ip'=>$ip));

на

$user_id = $this->users->add_user(array('group_id'=>2, 'email'=>$order->email, 'password'=>$password, 'name'=>$order->name, 'enabled'=>'1', 'last_ip'=>$ip));

 

Теперь при автоматической регистрации, пользователь будет добавляться в группу со скидкой.

Но когда пользователь покупает новый товар, но при этом не логинется под своими данными, заказ присваивается к зарегистрированному пользователю, но скидка на товар не учитывается.

Как можно решить данный вопрос?

Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Действительно, первый вариант был с моими наработками, поэтому на стандартной версии не работал.

Вот рабочий вариант:

CartView.php перед строчкой:

// Отправляем письмо пользователю
			$this->notify->email_order_user($order->id);
//Определяем ip пользователя
      if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; }
 			elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
 			else { $ip=$_SERVER['REMOTE_ADDR']; }
 			
 			//Если мы не знаем юзера
			if(!$this->user) {
  			//Смотрим есть ли такой email в базе
    		$this->db->query('SELECT count(*) as count FROM __users WHERE email=?', $order->email);
  			$user_exists = $this->db->result('count');
  			if($user_exists) { //Если нашли, то добавляем заказ к найденому пользователю
    			$this->db->query('SELECT * FROM __users WHERE email=?', $order->email);
    			$user_exists_id = $this->db->result('id');
  			  $this->orders->update_order($order->id, array('user_id'=>$user_exists_id));
  		  } else { 
    		  //Если не нешли, то генерируем пароль, согдаем пользователя, отправляем ему письмо и добавляем заказ к созданому пользователю
    		  $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; 
    		  $max=10; 
    		  $size=StrLen($chars)-1; 
    		  $password=null; 
    		  while($max--) $password.=$chars[rand(0,$size)]; 
    		  
    		   $user_id = $this->users->add_user(array('email'=>$order->email, 'password'=>$password, 'name'=>$order->name, 'enabled'=>'1', 'last_ip'=>$ip));
    		  
    		  $this->orders->update_order($order->id, array('user_id'=>$user_id));
    		  $this->notify->email_registration($user_id, $password);
          $_SESSION['user_id'] = $user_id;
  		  }
  		}

Добавить в тему шаблон письма о регистрации email_registration.tpl

{$subject = "Регистрация на сайте `$settings->site_name`" scope=parent}
<html>
	<body>
		<p>{$user->name|escape} Вы успешно были зарегистрированы на сайте <a href='http://{$config->root_url}/'>{$settings->site_name}</a>.</p>
		<p>Ваш логин: <b>{$user->email}</b></p>
		<p>Ваш пароль: <b>{$password}</b></p>
	</body>
</html>

в Notify.php в конце, перед последней скобкой 

}
// Функция отправки письма о регистрации
	public function email_registration($user_id, $password)
	{ 
		if(!($user = $this->users->get_user(intval($user_id))))
			return false;

		$this->design->assign('password', $password);
		$this->design->assign('user', $user);

		// Отправляем письмо
		$email_template = $this->design->fetch($this->config->root_dir.'design/'.$this->settings->theme.'/html/email_registration.tpl');
		$subject = $this->design->get_var('subject');
		$this->email($user->email, $subject, $email_template, $this->settings->site_name.' <'.$this->settings->notify_from_email.'>');
	}

1. Если клиент указал существующий в базе пользователей email, то заказ привяжется к пользователю с этим email.

2. Если указанный email не найдет в нашей базе

  2.1. Регистрируем пользователя.

  2.2. Отправляем ему письмо с логином и паролем

  2.3. Логинимся под новым пользователем

 

Я прошу прощения, тут такое дело, пробовал поставить на Okay и почему-то приходит пустое сообщение. Не подскажите как решить эту проблему?

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

Добрый день, всем! А как сделать проверку не по почте, перед тем как регистрировать пользователя, а допустим еще по телефону проверять?

Просто появилась проблема. Все что Вы написали работает , НО.

Если пользователь не вводит свою почту, его кидает в группу пользователей, и регистрирует допустим как "Дмитрий" и потом все клиенты, которые сделаю так же заказ, без введения почты, все заказы летят в айди пользователя "Дмитрий". Что нужно сделать что бы правильно работало? Мне достаточно будет и что бы их *не регистрировало-если не введена почта.

Ну *либо как то проверять по телефону, если такой телефон у пользователей зарегистрированных есть, то кидать товары к пользователю, если его нет, то регистрировать по номеру телефона.

Жду ответа, Всем заранее спасибо! Любой вариант подойдет. Нужна помощь. Всем заранее спасибо!

Изменено пользователем snappk
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

А можно как-то выложить в открытый доступ дополнение. А то что-то форум дичает, все уходят в личку. Спасибо скажут многие. 

Ссылка на сообщение
Поделиться на другие сайты

А можно как-то выложить в открытый доступ дополнение. А то что-то форум дичает, все уходят в личку. Спасибо скажут многие.

Ну ну!

Придут такие как ты, корс, лухури и обосрут с ног до головы, выкладывай потом что-то на этот гнилой форум.

Имхо обойдёшься!

Ссылка на сообщение
Поделиться на другие сайты

А можно как-то выложить в открытый доступ дополнение. А то что-то форум дичает, все уходят в личку. Спасибо скажут многие. 

 

там обычная проверка смотри как сделано RegisterView.php

Ссылка на сообщение
Поделиться на другие сайты

А можно как-то выложить в открытый доступ дополнение. А то что-то форум дичает, все уходят в личку. Спасибо скажут многие. 

Поддерживаю.

Ссылка на сообщение
Поделиться на другие сайты

А можно как-то выложить в открытый доступ дополнение. А то что-то форум дичает, все уходят в личку. Спасибо скажут многие. 

 

Конкретно такую разработку выкладывать на общее обозрение я бы не стал.

1. Сама идея довольно нехорошая - тайком регистрировать покупателя.

2. Вдвойне нехорошая - довольно сомнительным способом приписывать заказы ранее зарегистировавшимся покупателям.

3. А судя по запросам из #30, у того товарища заказ переделан (стандартно без почты заказ не оформляется) - тут надо явно индивидуально работать...

 

Реализовывать бесплатно такой кривой велосипед - себя не уважать.

Ссылка на сообщение
Поделиться на другие сайты

Хорошо, если так сложно это реализовать, можно ли дописать, например что бы была проверка, если не введен в данном случае почта, его - клиента не регистрировать. 

Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Отличное решение. Использую. А как бы записать эти данные в основную
базу данных и во вторую? Т.е отправить введенные данные и
сгенерированный пароль на этом же хостинге, но в другую базу. Подскажите
плиз.

Ссылка на сообщение
Поделиться на другие сайты

Как обычно, в соответствии с правилами доступа ко второй базе.

Стандартно в Simpla нет никакой второй базы и соответственно средств для работы с ней.

 

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

 

А вообще-то надо лишний раз задуматься, действительно ли Вам все это надо...

Ссылка на сообщение
Поделиться на другие сайты

Отличное решение. Использую. А как бы записать эти данные в основную

базу данных и во вторую? Т.е отправить введенные данные и

сгенерированный пароль на этом же хостинге, но в другую базу. Подскажите

плиз.

Другая база или другая таблица?
Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...