2015-06-16 2 views
0

Как добавить «сохранить меня в систему» ​​и сохранить пользователя и срок годности в базе данных MySQL?Как добавить Запомнить меня с помощью PHP?

Я хочу, чтобы пользователь вошел в систему через 30 дней. Через 30 дней он автоматически выйдет из системы.

Я прочитал некоторые question, но я не знаю, как реализовать это в моем текущем сценарии Войти PHP

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

Вот мой сценарий:

session_start(); 
$ipaddress = ''; 
if (getenv('HTTP_CLIENT_IP')) 
    $ipaddress = getenv('HTTP_CLIENT_IP'); 
else if(getenv('HTTP_X_FORWARDED_FOR')) 
    $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); 
else if(getenv('HTTP_X_FORWARDED')) 
    $ipaddress = getenv('HTTP_X_FORWARDED'); 
else if(getenv('HTTP_FORWARDED_FOR')) 
    $ipaddress = getenv('HTTP_FORWARDED_FOR'); 
else if(getenv('HTTP_FORWARDED')) 
    $ipaddress = getenv('HTTP_FORWARDED'); 
else if(getenv('REMOTE_ADDR')) 
    $ipaddress = getenv('REMOTE_ADDR'); 
else 
$ipaddress = 'UNKNOWN'; 

$loginDate = date("Y-m-d H:i:s"); 
$Error =""; 
$successMessage =""; 
if (isset($_POST['submit'])){ 
if (!($_POST['cnumber'] == "" && $_POST['password'] == "")){ 
    $cnumber=$_POST['cnumber']; 
    $password= sha1($_POST['password']); 
    $rememberMe=$_POST['rememberme']; 
    $cnumber = filter_var($cnumber, FILTER_SANITIZE_NUMBER_INT); 

if($rememberMe == 'checked'){ 
    setcookie('persistID', $cnumber, time()+(30 * 24 * 60 * 60), '/'); // this sets cookie for 30 days. 
} 

if (filter_var($cnumber, FILTER_VALIDATE_INT)){ 
$con=mysqli_connect("localhost","root","","users"); 

$result = mysqli_query($con, "SELECT * FROM users WHERE contractNumber='$cnumber' AND password='$password'"); 
$data = mysqli_num_rows($result); 

if(isset($_COOKIE['persistID'])){ 
if($data==1){ 
    $cnumber = $_COOKIE['persistID']; 
    $_SESSION['login_user']=$cnumber; 
    mysqli_query($con, "INSERT INTO `users`.`logs`(`contractNumber`, `lastLogin`, `ipAddress`) VALUES ('$cnumber', '$loginDate', '$ipaddress')"); 
    header('Location: profile.php'); 
} else { 
    header('Location: login.php'); 
} else { 
    $Error ="Invalid Contract Number or Password."; 
} 
    mysqli_close($con); 
} else { 
    $Error ="Invalid Contract Number."; 
    } 
} 
} else { 
    $Error ="Contract Number or Password is Empty."; 
} 
} 
+0

вы можете использовать cookie – codeneuss

+0

как это сделать? – User014019

+0

Вы действительно должны использовать Framework для достижения того, чего хотите. Многие предлагают библиотеку сеансов, хранилище ... Или посмотрите на некоторые библиотеки сеансов: http://stefangabos.ro/php-libraries/zebra-session/ –

ответ

0

Вы можете установить куки из PHP с даты истечения срока до 30 дней с этого момента успешной аутентификации

Проверьте это для полного осуществления входа в систему - https://github.com/saip92/muzik/blob/master/login.php

2

Это можно сделать с помощью cookies. Прочтите эту статью: Keep me logged in – best approach.

+0

нормально, но как реализовать это с помощью моего логина? – User014019

+0

@ User014019 прочитайте статью шаг за шагом. У вас уже есть '2) Создать сеанс' в '$ _SESSION ['login_user'] = $ cnumber;'. Теперь переходим к шагу 3 и 'setcookie()' с хешем md5 .. и так далее. Это очень легко. Потратьте немного времени на чтение - я сам использую этот метод. –

0

Помните, что у меня есть флажок в форме входа в систему. представить значения в файл php.

$username = $_POST['username']; 
    $password = $_POST['pass']; 
    $rememberMe = $_POST['remember']; 

    if($rememberMe == 'checked') 
    { 
     setcookie('persistID', $uid, time()+(30 * 24 * 60 * 60), '/'); // this sets cookie for 30 days. 
    } 
//your logic 

Тогда всякий раз, когда вы загружаете свою страницу в любое время или в любое время, первая проверка persistID cookie присутствует или нет. , если настоящее получить uid из файла cookie и перенаправить пользователя на домашнюю страницу вашего сайта. еще перенаправить на страницу входа.

кода, чтобы проверить, если печенье присутствует или нет:

if(isset($_COOKIE['persistID'])) 
{ 
    $userid = $_COOKIE['persistID']; 
    session_start(); 
    $_SESSION['uid'] = $userid; 
    //load your home page ... your logic 

} 
else 
{ 
// load your login page 
} 

Надеется, что это помогает.

+0

Что такое persistID? откуда вы взялись? – User014019

+0

@ User014019 persistid - это имя файла cookie ... его просто имя, вы можете назвать его чем угодно ... –

+0

приведенный выше сценарий - все, что мне нужно, чтобы пользователь регистрировался через 30 дней? – User014019

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