2016-10-13 3 views
3

Я хочу создать лимитный вход на основе udid устройств. Например, пользователи могут одновременно подключаться к двум различным устройствам. это то, что я сделал, но не работает, чтобы заблокировать 3rd пользователей при входе вОграничить количество пользователей

// Get the email and password 
$email  = CParam::paramPost('email'); 
$firstpassword = CParam::paramPost('password'); 
$password = md5(CParam::paramPost('password')); 
$udid  = CParam::paramPost('udid'); 
$app_id  = CParam::paramPost('app_id'); 
$app_version = CParam::paramPost('app_version'); 

// Make sure we have a UDID 
if (empty($udid)) { 
    sendJsonError('UDID parameter is missing'); 
    return; 
} 

// Check if the user is entitled 
$sql = 'SELECT * FROM accounts WHERE email = :email AND password = :password'; 
$params = array('email' => $email, 'password' => $password); 
$account = $db->fetchOne($sql, $params); 
if (!$account) { 
    sendJsonError('We could not find your subscription.'); 
    return; 
} 

// The account was found, generate an successs token if not existing yet 
if (empty($account['success_token'])) { 
    $success_token = CGuid::create(); 
    $db->update(
     'accounts', 
     array('success_token' => $success_token), 
     'id = :id', 
     array('id' => $account['id']) 
    ); 
} else { 
    $success_token = $account['success_token']; 
} 

// Register the device 
$db->insertOrUpdate(
    'devices', 
    array(
     'account_id' => $account['id'], 
     'udid'  => $udid, 
     'app_id'  => $app_id, 
     'app_version' => $app_version, 
    ) 
); 

Благодаря

+4

Sidenote: Надеюсь, вы намереваетесь использовать более безопасный хэш пароля, чем MD5, например, 'password_hash()'. –

+1

Привет, в вашем коде нет никаких условий, которые бы проверяли, сколько success_tokens создано пользователем .. или это условие elswhere? – Jimmmy

+0

Привет @Jimmmy, нет, я еще не создал условия. все еще пытаясь найти, как написать учебное пособие по работе в Интернете, но пока никто не работает, можете ли вы посоветоваться? –

ответ

-1

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

И может истекать сеанс или удалять сеансы из таблицы при выходе пользователя из системы или через некоторое время!

Смежные вопросы