Php 要求用户登录某些页面

Php 要求用户登录某些页面,php,html,Php,Html,我有一个mysql表,可以使用php页面上的表单插入和删除数据。这一切都有效。现在,我希望用户能够查看index.php(显示表及其所有数据的主页),但如果他们单击“删除”或“添加”,则必须要求他们在显示add.php或delete.php页面之前登录。我在下面写了一个login.php脚本,但我不确定如何在让他们通过之前强制页面检查它。另外,如果用户确实登录了,它会将用户带到他单击的页面还是返回index.php 编辑根据要求更新代码 login.php <?php if (isset

我有一个mysql表,可以使用php页面上的表单插入和删除数据。这一切都有效。现在,我希望用户能够查看index.php(显示表及其所有数据的主页),但如果他们单击“删除”或“添加”,则必须要求他们在显示add.php或delete.php页面之前登录。我在下面写了一个login.php脚本,但我不确定如何在让他们通过之前强制页面检查它。另外,如果用户确实登录了,它会将用户带到他单击的页面还是返回index.php

编辑根据要求更新代码

login.php

<?php

if (isset($_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])) {


header("location:add.php"); // if user is logged in don't show the form take them were they need to be
} else {
?>


<?php
    //Start session
    session_start();        
    //Unset the variables stored in session
    unset($_SESSION['SESS_MEMBER_ID']);
    unset($_SESSION['SESS_FIRST_NAME']);
    unset($_SESSION['SESS_LAST_NAME']);
?>


<form name="loginform" action="login_exec.php" method="post">
<table width="309" border="0" align="center" cellpadding="2" cellspacing="5">
<tr>
<td colspan="2">
    <!--the code bellow is used to display the message of the input validation-->
     <?php
        if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
        echo '<ul class="err">';
        foreach($_SESSION['ERRMSG_ARR'] as $msg) {
            echo '<li>',$msg,'</li>'; 
            }
        echo '</ul>';
        unset($_SESSION['ERRMSG_ARR']);
        }
    ?>
</td>
</tr>
<tr>
<td width="116"><div align="right">Username</div></td>
<td width="177"><input name="username" type="text" /></td>
</tr>
<tr>
<td><div align="right">Password</div></td>
<td><input name="password" type="text" /></td>
</tr>
<tr>
<td><div align="right"></div></td>
<td><input name="" type="submit" value="login" /></td>
</tr>
</table>
</form>


<?php

}


?>

在您需要用户登录才能访问的每个页面上,您需要检查您在登录页面上设置的会话是否已设置且不为空

在这种情况下,我将使用成员id会话

passwordProtectedPage.php

<?php


if(isset( $_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])):?>

    Do your html and other code

<?php

    else:

        header("location:page.php"); // take them to page

     //or echo "You not allowed to view this page <a href=\"login.php\">Please login</a>";

    endif;
    ?> 

执行html和其他代码
顺便说一句,您不需要在会话变量上存储错误消息,如果存在错误,您可以在一个页面中完成所有操作,只需将它们打印回来即可

此外,如果它是一个本地测试页面,您需要做的事情也无关紧要 正确的方法,让你有一天能成为一名更好的程序员,所以 散列这些密码并阅读更多有关准备语句的信息

编辑:

在登录页面上,您还需要首先检查用户是否尚未登录。如果他们有日志,请将他们带到需要的地方,否则请显示表格和流程

<?php

if (isset($_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])) {


    header("location:page.php"); // if user is logged in don't show the form take them were they need to be
} else {
?>


    show the form content and do proccessing


<?php

}


?>

在您需要用户登录才能访问的每个页面上,您需要检查您在登录页面上设置的会话是否已设置且不为空

在这种情况下,我将使用成员id会话

passwordProtectedPage.php

<?php


if(isset( $_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])):?>

    Do your html and other code

<?php

    else:

        header("location:page.php"); // take them to page

     //or echo "You not allowed to view this page <a href=\"login.php\">Please login</a>";

    endif;
    ?> 

执行html和其他代码
顺便说一句,您不需要在会话变量上存储错误消息,如果存在错误,您可以在一个页面中完成所有操作,只需将它们打印回来即可

此外,如果它是一个本地测试页面,您需要做的事情也无关紧要 正确的方法,让你有一天能成为一名更好的程序员,所以 散列这些密码并阅读更多有关准备语句的信息

编辑:

在登录页面上,您还需要首先检查用户是否尚未登录。如果他们有日志,请将他们带到需要的地方,否则请显示表格和流程

<?php

if (isset($_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])) {


    header("location:page.php"); // if user is logged in don't show the form take them were they need to be
} else {
?>


    show the form content and do proccessing


<?php

}


?>

是我还是你不保护密码?这只是一个本地网页im测试。现在还不需要严格的安全措施有什么问题吗?每当用户单击添加.php
&
delete.php
时,检查用户会话是否存在。如果不存在,则将用户重定向到登录页面并显示默认内容。准备查询并使用密码散列($\u POST['password'],password\u default);
和密码验证($\u POST['log\u password'],$log\u user['password']))
(例如)不会占用你太多时间。是我还是你不保护密码?这只是一个本地网页的即时通讯测试。现在还不太安全。有什么问题吗?每当用户单击
add.php
&
delete.php
检查用户会话是否存在。如果没有,则将用户重定向到登录页面并显示默认内容。准备查询并使用
password\u散列($\u POST['password'],password\u default)
password\u验证($\u POST['log\u password'],$log\u user['password'])
(例如)不会占用您太多时间。这对安全性有帮助。谢谢你会做的,先生,我现在测试一下。给你几分钟时间。非常感谢,我还在学习,但是我有一个问题,先生。如果用户单击AddMember,登录页面打开,它会检测到用户已经登录。只要我设置了正确的标题位置,他就需要添加.php?但如果他选择删除成员呢?当我点击login时,如果我没弄错的话,他仍然需要添加.php。它只是让我回到index.php,而不是添加.php,因为
标题(“location:index.php”)您指定它显示了您将如何处理安全问题。谢谢你会做的,先生,我现在测试一下。给你几分钟时间。非常感谢,我还在学习,但是我有一个问题,先生。如果用户单击AddMember,登录页面打开,它会检测到用户已经登录。只要我设置了正确的标题位置,他就需要添加.php?但如果他选择删除成员呢?当我点击login时,如果我没弄错的话,他仍然需要添加.php。它只是让我回到index.php,而不是添加.php,因为
标题(“location:index.php”)您指定它会带您去那里
<?php


if(isset( $_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])):?>

    Do your html and other code

<?php

    else:

        header("location:page.php"); // take them to page

     //or echo "You not allowed to view this page <a href=\"login.php\">Please login</a>";

    endif;
    ?> 
<?php

if (isset($_SESSION['SESS_MEMBER_ID']) && !empty($_SESSION['SESS_MEMBER_ID'])) {


    header("location:page.php"); // if user is logged in don't show the form take them were they need to be
} else {
?>


    show the form content and do proccessing


<?php

}


?>