Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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_Xampp - Fatal编程技术网

简单的PHP登录不工作

简单的PHP登录不工作,php,login,xampp,Php,Login,Xampp,我对PHP非常陌生,我正在尝试构建一个带有登录页面的网页。我想我理解它,但我的登录页面不工作,即使它非常基本 这是我目前的文件结构: 这是idx(索引): 这是login.php模板: <?php $out = "<form method='POST' action='idx.php'> <p>Login:</p> <label>Username:</label><input type=

我对PHP非常陌生,我正在尝试构建一个带有登录页面的网页。我想我理解它,但我的登录页面不工作,即使它非常基本

这是我目前的文件结构:

这是idx(索引):


这是login.php模板:

<?php
$out = "<form method='POST' action='idx.php'>
        <p>Login:</p>
        <label>Username:</label><input type='text' name ='username' required />
        <label>Password:</label><input type='password' name'password' required />
        <input type='submit' value='submit' name=submit'/>
        </form>";

echo $out;

确保在要获取或设置会话变量的每个页面上启动会话

session\u start()

它应该是这么简单,它扔了我一个循环相当长一段时间


您是否考虑过使用MVC框架?它们对保持所有的东西整洁和有序,以及提供一个有用的函数和类库都非常有帮助。CodeIgniter是一个非常好用的超轻量级框架。Laravel的参与度更高,更适合大型项目

更改此项:

<input type='password' name'password' required />

不要忘记在页面顶部添加
session\u start()

我将与您分享我的PHP登录页面设置示例。 它有3个页面,索引,管理,注销

php:创建一个询问用户名和密码的表单,一旦给出正确的用户名和密码(这里是admin,password),它将创建一个新的会话“login”。登录后,它将重定向到admin.php$validuser,以确保以前的登录是否正确

<?php
session_start();
$errorMsg = "";
$validUser = $_SESSION["login"] === true;

if (isset($_POST["sub"]))
    {
    $validUser = $_POST["username"] == "admin" && $_POST["password"] == "password";
    if (!$validUser) $errorMsg = "Invalid username or password.";
      else $_SESSION["login"] = true;
    }

if ($validUser)
    {
    header("Location: /admin.php");
    die();
    }

?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <title>Login</title>
    </head>
    <body>
        <center>
            <h1>Login</h1>
            <table>
                <form name="input" action="" method="post">
                    <tr>
                        <th>
                            <label for="username">Username</label>
                        </th>
                        <th>
                            <input type="text" value="" id="username" name="username" />
                        </th>
                    </tr>
                    <tr>
                        <th>
                            <label for="password">Password</label>
                        </th>
                        <th>
                            <input type="password" value="" id="password" name="password" />
                        </th>
                    </tr>
                    <tr>
                        <th></th>
                        <th>
                            <input type="submit" value="Login" name="sub" />
                        </th>
                    </tr>
                </form>
            </table>
        </center>
    </body>
</html>

登录
登录
用户名
暗语
php:检查会话“login”,如果设置了会话,那么它将继续进行,否则它将转到login.php

<?php
session_start();

if (!isset($_SESSION['login']))
    {
    header('LOCATION:login.php');
    die();
    }

?>
<html>
    <head>
        <title>Admin Page</title>
    </head>
    <body>
       <center>
           <h1>Succesfully logged in</h1>
           <input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
       </center>
    </body> 
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>

管理页面
成功登录
logout.php:清除会话、cookies并关闭它们,然后返回login.php

<?php
session_start();

if (!isset($_SESSION['login']))
    {
    header('LOCATION:login.php');
    die();
    }

?>
<html>
    <head>
        <title>Admin Page</title>
    </head>
    <body>
       <center>
           <h1>Succesfully logged in</h1>
           <input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
       </center>
    </body> 
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>


把它们放在同一个文件夹中,这样就行了。

这是你的实际代码吗?如果你告诉我们出了什么问题,那会有帮助的。请告诉我们,如果你真的存在,结果会不好。纯文本密码会让你陷入更深的困境。我不认为这是造成你当前问题的原因,但如果满足正确的条件,idx.php似乎会包括它自己。这里有很多问题需要解决。这只是在本地主机上,我希望能添加一些解释。。。很多解释。。。对于此代码,请仅回答。
<?php
session_start();

if (!isset($_SESSION['login']))
    {
    header('LOCATION:login.php');
    die();
    }

?>
<html>
    <head>
        <title>Admin Page</title>
    </head>
    <body>
       <center>
           <h1>Succesfully logged in</h1>
           <input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
       </center>
    </body> 
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>