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

在php中验证用户并重定向到登录或主页

在php中验证用户并重定向到登录或主页,php,mysql,Php,Mysql,我有一个场景,我想在页面加载时验证用户。 我想为所有页面,包括登录和主页相同的脚本,在其中,如果用户登录重定向到主页,否则重定向到登录。 在我的代码中,由于重定向太多,它失败了。需要简单的解决方案。 这是我的密码: session.php <?php define('DB_SERVER', 'localhost'); define('DB_USERNAME', ''); define('DB_PASSWORD', ''); define('DB_DATABASE',

我有一个场景,我想在页面加载时验证用户。 我想为所有页面,包括登录和主页相同的脚本,在其中,如果用户登录重定向到主页,否则重定向到登录。 在我的代码中,由于重定向太多,它失败了。需要简单的解决方案。 这是我的密码:

session.php

<?php
   define('DB_SERVER', 'localhost');
   define('DB_USERNAME', '');
   define('DB_PASSWORD', '');
   define('DB_DATABASE', 'auth');
   $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

   session_start();

   $checkId = ''; $checkUser = ''; $checkPass = '';

   if(isset($_SESSION['login_userId'])){ $checkId = $_SESSION['login_userId']; };
   if(isset($_SESSION['login_userName'])){ $checkUser = $_SESSION['login_userName']; };
   if(isset($_SESSION['login_userPass'])){ $checkPass = $_SESSION['login_userPass']; };

   $sessionResult = mysqli_query($db, "select * from users where id='$checkId' AND username='$checkUser' AND password='$checkPass'");
   $getSessionRow = mysqli_fetch_array($sessionResult, MYSQLI_ASSOC);
   $sessionRowcount = mysqli_num_rows($sessionResult);

   if(isset($getSessionRow['username']) && $checkUser == $getSessionRow['username']){
      header("location:home.php");
   }
   else {
      header("location:login.php");
   }
?>

您在两个页面中使用相同的会话页面,当然它将重定向到更多。您必须从登录和主页中删除会话php。在登录后创建表单按钮中,单击将表单发布到会话php,以便它可以重定向。在home php顶部创建一个if语句,检查会话登录是否已登录,否则将其发送到会话php,该会话php将停止所有循环。

在运行会话页面后,在会话中设置登录id,并在主页开始时检查是否不存在(isset)登录id,然后将其重定向到登录页面的相同登录

if(!isset($_SESSION['login_id']))
{
    header("location:login.php");
}

不确定重定向太多意味着什么,但在使用
标题(…)
-编辑:login.php&home.php页面后,应该
退出()。。。不应该是这样的!我在登录页面上使用了相同的文件
session.php
,它开始一次又一次地循环和重定向。您应该分离这两个脚本。您的代码容易受到SQL注入的攻击。你应该使用预先准备好的语句。这不是我现在的重点:)我已经通过为登录和主页制作单独的会话文件实现了,但这不是我的目标。。。我的问题是,如何为这两个页面使用相同的
session.php
文件?正如我前面所说,在session.php中的用户控件中创建一个类似于user loggin true的会话,然后在home.php中创建一个if语句if(!isset(session[“userlogedin”]){header(session.php)}这是一个会话文件,您必须在每个文件中使用这个if语句,除了登录、注册和注销之外,您必须在这些文件中销毁会话
<?php
include('session.php');
?>
<html>
   <head>
      <title>Welcome</title>
   </head>
   <body>
      <h1>Welcome to Home page</h1>
   </body>
</html>
if(!isset($_SESSION['login_id']))
{
    header("location:login.php");
}