2016-10-03 9 views
-2

この問題は本当に私に苦労しています。セッション開始が '開始'でない

<?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()); 
     } 

     ?> 

フォーム:私は4つのファイル、DBの設定のための1、ログインページの他、ログイン処理とログイン成功後のリダイレクトのためのLSAT 1第3回)を持っている これは私のDB-connect.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> 

ログイン-process.php:私のユーザー-login.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 

    } 
} 


?> 

そして、私のログインページでは、私は正常にログインした後、スクリプトアラートが成功していることで証明し、しかし、 、として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コードを無視して、私は下の出力のためにそれを取得したい)。これについてあなたが知っている人はいますか?もしそうなら、私を助けてください。ありがとうございました!

+0

'$ _SESSION ['username']'の値を設定しましたか? –

+0

はい私のlogin-process.phpコードを参照 – IlanaWexler

+0

本当のデータベースのユーザー名とパスワードを公開してもよろしいですか? – Shadow

答えて

1

セッション変数に値を設定する前に、login-process.phpでsession_start()を最初に入力する必要があります。

+0

ありがとう!出来た! – IlanaWexler

1

セッションを宣言せずにセッションに直接アクセスしています。セッション変数にアクセスする前にsession_start()というユーザーにアクセスし、アクセスが完了したらsession_close()を使用することができます。

関連する問題