为php中的所有页面提供登录检查,页面重定向

问题描述 投票:1回答:2

这是我的代码如果刷新我的页面退出或者当我更改菜单栏时它还注销为什么?

    <?php
$userid = ($_POST['userid']);
$pswd = ($_POST['pswd']);
$conn = oci_connect('user', 'pswrd', 'db');
$query = "SELECT userid, pswd FROM staff
WHERE userid=:userid AND pswd=:pswd";
$stmt = oci_parse($conn, $query);
oci_bind_by_name($stmt, ':userid', $userid, 8);
oci_bind_by_name($stmt, ':pswd', $pswd, 32);
oci_execute($stmt);
list($userid, $pswd) = oci_fetch_array($stmt, OCI_NUM);
if ($userid != "" && $pswd !="")
{
$_SESSION['userid'] = $userid;
echo " logged in sucessfully!!!...";
}
else {
    echo"you are not logged in ";
    }
?>
php database oracle login logout
2个回答
0
投票

您可以使用javascript或php header重定向到应用程序中的特定页面。

<?php
if ($userid != "" && $pswd !="")
{
$_SESSION['userid'] = $userid;
?>
<script> window.location ="http://www.yourwebsite.com/user.php";</script>
<?php 
}?>

或者使用php header

if ($userid != "" && $pswd !="")
{
$_SESSION['userid'] = $userid;
header("Location: http://www.yourwebsite.com/user.php");
}

0
投票

要使用Sessions,首先需要告诉PHP查找它们。为此,首先调用“session_start();”。

然后,您应该检查是否设置了会话。使用isset($ _ SESSION ['varname'])执行此操作。您可以选择设置会话以检查login_state。如果用户暂时“处于非活动状态”,您可以在这里保存时间戳并检查。当然,这只是一种简单的方法。

此外:在期待请求时,请务必先检查是否已设置。

例如。 isset($ _ POST [ 'varname的'])

<?php
session_start();

$display_page = false;

if(
    isset($_SESSION['userid'])
 && isset($_SESSION['logged'])
 && (time()-$_SESSION['logged'] < 60 * 30) // 30 Minutes
) {
    $display_page = true;
}

if(!$display_page) {
    if(!isset($_POST['userid'])) die("No userid given");
    $userid = ($_POST['userid']);
    if(!isset($_POST['pswd'])) die("No password given");
    $pswd = ($_POST['pswd']);
    $conn = oci_connect('user', 'pswrd', 'db');
    $query = "SELECT userid, pswd FROM staff
    WHERE userid=:userid AND pswd=:pswd";
    $stmt = oci_parse($conn, $query);
    oci_bind_by_name($stmt, ':userid', $userid, 8);
    oci_bind_by_name($stmt, ':pswd', $pswd, 32);
    oci_execute($stmt);
    list($userid, $pswd) = oci_fetch_array($stmt, OCI_NUM);
    if ($userid != "" && $pswd !="")
    {
        $_SESSION['userid'] = $userid;
        $_SESSION['logged'] = time();
        echo "You just logged in sucessfully!!!...<br>";
        $display_page = true;
    } else {
        echo "Your credentials did not match. Pleas try again";
    }
}

if($display_page) {
    echo "This is the page content";
}
?>

如果您想要“如果没有登录,重定向到登录页面”,您应该使用以下内容:

if(!$display_page) {
    header("Location: http://www.yourwebsite.com/login.php");
    exit();
}
© www.soinside.com 2019 - 2024. All rights reserved.