Я использую RedBean PHP ORM, чтобы попытаться зарегистрировать/получить пользователей. То есть, учитывая список, разделенный запятыми, я делаю
$emails = explode(',', trim($app->request->post('emails')));
А затем передайте каждое электронное письмо этой функции
function registerOrGetUser($email)
{
echo("R or G " . $email . "<br>");
$user = R::findOne('user', ' email = ? ', array($email));
if(!$user)
{
echo("Couldn't find user " . $email . ", creating new user.<br>");
//user does not exist, register them
$user = R::dispense('user');
$password = $random = substr(md5(rand()),0,8);
$user->email = $email;
$user->password = md5($password);
$user->role = 0;
R::store($user);
mail($user->email, "Welcome to imgstat!", "Welcome to imgstat, " . $user->email . "! An account has been created for you. Please sign in with this email address, and the following password: " . $password);
}
return $user;
}
Обратите внимание на оператор echo для отладки. Проблема, с которой я сталкиваюсь, заключается в том, что только иногда удается определить, существует ли уже пользователь. То есть, если я попытаюсь добавить
[email protected]
он получает пользователя (и не регистрирует нового). Однако, если я попытаюсь
[email protected], [email protected]
он создает ВТОРОГО пользователя в базе данных - с, насколько я могу судить, точно такой же электронной почтой! С этого момента я могу добавить столько [email protected], сколько захочу — они всегда будут получать пользователя и не создавать дубликатов. Но по какой-то причине этот первый дубликат создается ВСЕГДА, если электронная почта не является единственным элементом в списке, разделенном запятыми.
Есть идеи?