Как разделить логику приложения до и после входа в систему?

#php #session #logic

#php #сессия #Логические

Вопрос:

Вот идея …….У меня есть index.php ……. Приложение имеет только одну страницу, как и стена facebook, если пользователь вошел в систему, он может видеть свою «стену», но если он не вошел в систему, он видит страницу регистрации ……..

Должен ли я поместить все эти логины в index.php ? или мне нужно разделить два index.php … один из них logined_index.php, и notLogined_index.php ??

Более того, как я могу предотвратить кого-либо, кто не зарегистрирован в index.php ? Спасибо.

Ответ №1:

Если ваше приложение останется небольшим, нет необходимости в отдельном файле. Вы можете использовать что-то вроде этого:

 <?php
    session_start();
    if (!isset($_SESSION['uid']) | $_SESSION['uid']=='') $_SESSION['uid']=0;

    if($_SESSION['uid']!=0) {
        if (/* user logs out */) {
            session_destroy();
            /* show register/login form */
        }
        else {
            /* main page code goes here */
        }
    }
    else {
        if (/* register details entered */) {
            if (/* register details valid */) {
                /* register the user and display it all went successful */
            }
            else {
                /* wrong register info - display error */
            }
        }
        else if (/* login details enetered */) {
                if (/* user exists and login correct */) {
                $_SESSION['uid'] = /* set the id of the logged user */;
                /* log user in and redirect to main page */
            }
                        else {
                /* wrong login info - display error */
            }
        }
        else {
            /* show register/login form */
        }
    }
?>
  

Это всего лишь простая компоновка кода для построения.

Ответ №2:

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

 <?php
// at the very beginning of index.php
if($not_logged_in){
    // redirect user to a login page
    header('Location: /login_please.php?return_to='.urlencode($_SERVER['REQUEST_URI']));
    die();
}
?>
  

Ответ №3:

Вы должны понимать, для какой сессии.

Если это одностраничное приложение, вы могли бы создать свой index.php выступать в качестве контроллера и может создавать отдельные шаблоны или представления для входа и регистрации.

И проверьте, что запрашивает пользователь, если ему не разрешен доступ к этой странице без входа в систему, проверьте сеанс и перенаправьте их на регистрацию или вход в систему. если они уже вошли в систему, перенаправьте их на свою стену или защищенную страницу.

для примера

 session_start()
if(isset($_SESSION['user_id']))
{
  //user is logged in and redirect them to main page
}
else
{
  //ask him to register or log in
}