Php 如何在登录前后分离应用程序逻辑?

Php 如何在登录前后分离应用程序逻辑?,php,session,logic,Php,Session,Logic,这是我的想法。。。我有一个 index.php。。。该应用程序只有一个页面,就像facebook墙一样,如果用户登录,他们可以看到他们的“墙”,但如果他们没有登录,他们会看到一个注册页面 我应该把所有这些登录名都放在index.php中吗?或者我需要分开两个index.php…一个是logined_index.php,另一个是notLogined_index.php 此外,如何防止未登录index.php的用户?多谢各位 我建议您将登录页面放在一个单独的文件中,并从每个需要登录的页面重定向到该文

这是我的想法。。。我有一个 index.php。。。该应用程序只有一个页面,就像facebook墙一样,如果用户登录,他们可以看到他们的“墙”,但如果他们没有登录,他们会看到一个注册页面

我应该把所有这些登录名都放在index.php中吗?或者我需要分开两个index.php…一个是logined_index.php,另一个是notLogined_index.php


此外,如何防止未登录index.php的用户?多谢各位

我建议您将登录页面放在一个单独的文件中,并从每个需要登录的页面重定向到该文件,例如:

<?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();
}
?>

我建议您将登录页面放在一个单独的文件中,并从每个需要登录的页面重定向到该文件,例如:

<?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();
}
?>

您应该了解会话的目的

如果是单页应用程序,您可以让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
}

您应该了解课程的目的

如果是单页应用程序,您可以让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
}

如果您的应用程序仍然很小,则不需要单独的文件。您可以使用以下内容:

<?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 */
        }
    }
?>


这只是一个简单的代码布局,可供构建。

如果您的应用程序仍然很小,则不需要单独的文件。您可以使用以下内容:

<?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 */
        }
    }
?>

这只是一个简单的代码布局