Php 会话启动不';启动';

Php 会话启动不';启动';,php,mysql,session,login,Php,Mysql,Session,Login,这个问题真的让我很为难。我有4个文件,一个用于数据库配置,另一个用于登录页面,第三个用于登录处理,lsat一个用于成功登录后的重定向) 这是我的db-connect.php: <?php $servername = "localhost"; $username = "dbroot"; $password = "dbpassword"; $dbname = "dbname"; // Create connec

这个问题真的让我很为难。我有4个文件,一个用于数据库配置,另一个用于登录页面,第三个用于登录处理,lsat一个用于成功登录后的重定向) 这是我的db-connect.php:

<?php

        $servername = "localhost";
        $username = "dbroot";
        $password = "dbpassword";
        $dbname = "dbname";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }

        ?>

my user-login.php中的表单:

<form action="includes/login-process.php" id="login" class="formoid-metro-black" style="background-color:transparent;font-size:14px;font-family:'Open Sans','Helvetica Neue','Helvetica',Arial,Verdana,sans-serif;color:#FFFFFF;max-width:400px;min-width:150px; float:right;" method="post" enctype="multipart/form-data"><div class="title"><h2>Log In</h2></div>
            <div class="element-input"><label class="title">Username<span class="required">*</span></label><input class="large" type="text" name="username" required="required"/></div>
            <div class="element-password"><label class="title">Password<span class="required">*</span></label><input class="large" type="password" name="password" value="" required="required"/></div>
            <div class="submit"><input type="submit" name="submit" value="Log In"/></div></form><script type="text/javascript" src="forms/sign-up-form_files/formoid1/formoid-metro-black.js"></script>
登录
用户名*
密码*
登录名为login-process.php:

<?php include ("db-connect.php");

if(isset($_POST['submit'])){

  $username = mysqli_real_escape_string($conn, $_POST['username']);
  $password = mysqli_real_escape_string($conn, $_POST['password']);

  $encrypt = md5($password);

  $userquery = "SELECT * FROM user WHERE `user-username`='$username' AND `user-password`='$password'";

  $run = mysqli_query($conn,$userquery); 

  if(mysqli_num_rows($run)>0){

    $_SESSION['username']=$username;
    ?>
    <script>alert('Login successful.')</script>
    <script>window.open('../user-profile.php','_self')</script>
    <?php
  }
  else {
    ?>
    <script>alert('Username or Password Incorrect.','_self')</script>
    <script>window.open('../user-login.php','_self')</script>
    <?php

  }
}


?>

警报('登录成功')
window.open('../user profile.php','u self')
警报('用户名或密码不正确',''自我')
window.open('../user login.php','u self')
在我的登录页面中,在我成功登录后,脚本警报被证明是成功的,但是,当user-profile.php打开时(我在上面放了一个session_start()),它直接在if语句中运行条件,忽略我已经成功登录的事实。 这是我的user-profile.php:

    <!DOCTYPE html>
      <?php  
      session_start();
      if(!isset($_SESSION['username'])){
        ?> 
        <script> alert('Please Log-in first.','_self')</script>
        <?php include_once('user-login.php'); 
      }
      else {
        $first_name= $_SESSION['fname'];
        $first_name= ucfirst($first_name);
        ?>
   //rest of my code

警报('请先登录',''您自己')
//我剩下的代码

上面的代码应该运行else语句中的内容,但是我一直得到要先登录的警报。(忽略$firstname代码,我想在下面的输出中得到它)。你们有谁知道这件事吗?如果是这样,请帮助我。谢谢大家!

在login-process.php中,在设置会话变量的值之前,必须先
session\u start()

您直接访问会话而不声明会话。在访问会话变量之前,请使用用户
session\u start()
,在访问完会话变量之后,您可以使用
session\u close()

您是否设置了
$\u session['username'的值
?是,请参阅我的login-process.php代码您确定要向公众披露您的真实数据库用户名和密码吗?这很好,仅用于教育目的。要使用会话的脚本必须执行
会话_start()位于该脚本的顶部。