Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP需要登录才能查看_Php_Login - Fatal编程技术网

PHP需要登录才能查看

PHP需要登录才能查看,php,login,Php,Login,好吧,我已经玩了一段时间了,我不知道在哪里。我发现,为了在用户未登录时阻止页面(使用PHP),您需要以下代码: <?php session_start(); if(empty($_SESSION['logged_in'])) { header('Location: http://' . $_SERVER['HTTP_HOST'] . '/login.php'); exit; } ?> 太好了,成功了。当我没有登录时,它阻止了我。问题是,当我登录时,它仍然阻止了我

好吧,我已经玩了一段时间了,我不知道在哪里。我发现,为了在用户未登录时阻止页面(使用PHP),您需要以下代码:

<?php
session_start();
if(empty($_SESSION['logged_in']))
{
    header('Location: http://' . $_SERVER['HTTP_HOST'] . '/login.php');
    exit;
}
?>

太好了,成功了。当我没有登录时,它阻止了我。问题是,当我登录时,它仍然阻止了我。下面是login.php代码:

<?php
include("db.php");
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // username and password sent from Form
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $password = md5($password); // Encrypted Password
    $sql = "SELECT id FROM admin WHERE username='$username' and passcode='$password'";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);

    // If result matched $username and $password, table row must be 1 row
    if ($count == 1) {
        header("location: index.php");
    } else {
        $error = "Your Login Name or Password is invalid";
    }
}
?>
<form action="login.php" method="post">
    <label>UserName :</label>
    <input type="text" name="username"/><br />
    <label>Password :</label>
    <input type="password" name="password"/><br/>
    <input type="submit" value=" Login "/><br />
</form> 

您没有设置会话变量

试试这个

      if($count==1)
    {
        $_SESSION['logged_in'] = 1; //Or whatever makes it not empty
        header("location: index.php");
    }

现在,您正在使用一个空会话变量返回索引

避免使用Mysql*

正如Dainis所说,您需要在
包含
之前设置
会话启动()
,并且还需要将
$\u会话['logged\u in']=true
或在检查用户名后所需的任何内容,密码是正确的

<?php
session_start();
include("db.php");
if($_SERVER["REQUEST_METHOD"] == "POST")
{
    // username and password sent from Form
    $username=mysql_real_escape_string($_POST['username']);
    $password=mysql_real_escape_string($_POST['password']);
    $password=md5($password); // Encrypted Password
    $sql="SELECT id FROM admin WHERE username='$username' and passcode='$password'";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);

    // If result matched $username and $password, table row must be 1 row
    if($count==1)
    {
        $_SESSION['logged_in']=true;

        header("location: index.php");

    }
    else
    {
        $error="Your Login Name or Password is invalid";
    }
}
?>

如果有条件,为登录用户创建会话。检查下面修改的代码

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // username and password sent from Form
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $password = md5($password); // Encrypted Password
    $sql = "SELECT id FROM admin WHERE username='$username' and passcode='$password'";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);

    // If result matched $username and $password, table row must be 1 row
    if ($count == 1) {
        $_SESSION['logged_in'] = 'YES'; // put session value here 
        header("location: index.php");
    } else {
        $error = "Your Login Name or Password is invalid";
    }
}

非常感谢。成功了。我知道我遗漏了什么,但不太确定是什么。再次感谢!非常感谢。成功了。我知道我遗漏了什么,但不太确定是什么。再次感谢!非常感谢。成功了。我知道我遗漏了什么,但不太确定是什么。再次感谢!