Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
简单的1页PHP登录不工作_Php_Mysql - Fatal编程技术网

简单的1页PHP登录不工作

简单的1页PHP登录不工作,php,mysql,Php,Mysql,注意:在我们开始之前,是的,我知道这不是最安全的登录类型。我用这个很舒服。然而,如果你可以修改它来使用MySql,我将使用它,但是在我添加了cookies之后,我似乎无法让这个脚本继续工作。我做错了什么?提前谢谢 <?php if(isset($_COOKIE['user']) && isset($_COOKIE['pass'])) { $user = $_COOKIE['user']; $pass = $_COOKIE['pass']; } else {

注意:在我们开始之前,是的,我知道这不是最安全的登录类型。我用这个很舒服。然而,如果你可以修改它来使用MySql,我将使用它,但是在我添加了cookies之后,我似乎无法让这个脚本继续工作。我做错了什么?提前谢谢

<?php
 if(isset($_COOKIE['user']) && isset($_COOKIE['pass'])) {
  $user = $_COOKIE['user'];
  $pass = $_COOKIE['pass'];
  }
else {
 $user = $_POST['user'];
 $pass = $_POST['pass'];
}

if($user == "user" && $pass == "pass") {
  setcookie("user", $user, time() + (86400 * 30), "/"); // 86400 = 1 day
  setcookie("pass", $pass, time() + (86400 * 30), "/"); // 86400 = 1 day
  echo 'Logged In';
}
else {
  if(isset($_POST))
    {?>

        <form method="POST" action="test.php">
        <label for="user">User</label> <input type="text" name="user"></input><br/>
        <label for="pass">Pass</label> <input type="password" name="pass"></input><br/>
        <input type="submit" name="submit" value="Go"></input>
        </form>
<?php}
}
?>

用户
通过

我用它保护的内容只是基本的PHP表单。没有什么可以用来伤害我的网站,如果有人进入这个。只是不希望每个人都意外地访问它。

给你。不知道为什么这很重要,但对我来说很有效。(我也更改了cookie的持续时间,但这不是修复的一部分。)


用户
通过
我更改了您的:

<?php}
}
?>

致:


我强烈建议您不要在任何类型的生产环境中使用它,但如果它是您想要使用的,那么也可以

我将在这里向您展示如何实现会话而不是cookies

第一步:无论何时使用会话,在使用这些会话的每个脚本上需要做的第一件事就是开始会话:

session_start();
现在,对于会话,会话很简单。您只需将索引添加到
$\u会话
超全局:

$_SESSION['user'] = $user;
但诀窍是不要强迫用户通过当前的过程登录。会话意味着用户已通过身份验证,因此您不想强迫他们再次登录。您要做的是在文件顶部添加一个检查,如下所示:

<?php
session_start(); // start the session

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
    die(header("Location: admin.php")); // user is logged in, send them to admin/user only page...
}
<?php
session_start(); // start the session

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
    die(header("Location: admin.php")); // user is logged in, send them to admin/user only page...
}

if(isset($_POST['submit'])) {
    if($user == "user" && $pass == "pass") {
        $_SESSION['user'] = $user;
        die(header("Location: admin.php"));
    } else {
        // add some sort of error handling here because the user had invalid credentials.
    }
} else {
 ?>
    <form method="POST" action="">
        <label for="user">User</label> <input type="text" name="user"></input><br/>
        <label for="pass">Pass</label> <input type="password" name="pass"></input><br/>
        <input type="submit" name="submit" value="Go"></input>
    </form>
<?php
}
?>

用户
通过

您考虑过使用会话吗?我考虑过,但从未考虑过,所以不太确定从哪里开始。我看过教程。我只保护这一页,上面的所有内容只能通过选择框进行更改,这样我就不用担心它的内容了。永远不要将密码存储在cookie中。另外,如果用户已经有cookie,为什么还要登录?看起来有点傻,你不觉得吗?通常Cookies=Authenticated…知道关于会话的好教程吗Darren?我看了一些,但它们留给我的问题比答案多。很简单@JesseElser,在php脚本的顶部抛出
session\u start()
,然后简单地用
$\u session['user']=$user;设置会话;。。。etc
当你想结束你的会话(即注销)时,你只需要使用
session\u destroy()
?我很感激。当我在$\u会话脚本上构建时,我将临时使用此脚本:)我移动了结束括号:You had:我做了:刚刚尝试了这个。提交表单后,它没有尝试转到admin.php,当我刷新页面时,它再次显示登录表单。匹配@JesseElser?Yep的用户名和密码改变了它们。这可能是我这边的一个小错误。事实上,我确实找到了一个我理解得相当透彻的课程教程,并在我非常感谢您的帮助时实施了该教程:)@JesseElser我的快乐伙伴!
<?php
session_start(); // start the session

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
    die(header("Location: admin.php")); // user is logged in, send them to admin/user only page...
}
<?php
session_start(); // start the session

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
    die(header("Location: admin.php")); // user is logged in, send them to admin/user only page...
}

if(isset($_POST['submit'])) {
    if($user == "user" && $pass == "pass") {
        $_SESSION['user'] = $user;
        die(header("Location: admin.php"));
    } else {
        // add some sort of error handling here because the user had invalid credentials.
    }
} else {
 ?>
    <form method="POST" action="">
        <label for="user">User</label> <input type="text" name="user"></input><br/>
        <label for="pass">Pass</label> <input type="password" name="pass"></input><br/>
        <input type="submit" name="submit" value="Go"></input>
    </form>
<?php
}
?>