2017-07-17 11 views
0

私は小さなアプリケーションを持っているので、すべての上にログインゲームを含める時です。ただ、それを持って、現実の世界で実行されている(:P)ここでクッキーを設定して、別のPHPファイルでそれらを読み取ることができません

は、ログインページ(login.php)に私のコードです:

<!DOCTYPE html> 
<html> 
<head> 
    <title> 
     Login 
    </title> 
    <meta charset="UTF-8"> 
    <script src="https://www.google.com/recaptcha/api.js" async defer></script> 
</head> 
<body> 
<?php include_once("analyticstracking.php") ?> 
    <form action="login.php" method="POST"> 



    <?php 
      if (isset($_POST['user']) && isset($_POST['password'])) 
      { 
       if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) 
       { 
        $secret = ''; 
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']); 
        $responseData = json_decode($verifyResponse); 

        if($responseData->success) 
        {     
         $user = $_POST['user']; 
         $password = $_POST['password']; 

         $salt = "d5f332312e3e390c81f6ef9f242c21bf9e472d6296ddd4bebddd0f54eb576f14"; 


         $hpassword = hash('sha256', $salt . $password); 

         $_COOKIE['user'] = $user; 
         $_COOKIE['pass'] = $hpassword; 

         $auth = 1; 
         $_COOKIE['authorized'] = $auth; 



         setrawcookie("user", $user, time() + 28800, "/",'domaindig.eu'); 
         setrawcookie("hpass", $hpassword, time() + 28800, "/",'domaindig.eu'); 
         setrawcookie("authorized", $auth, time() + 28800, "/",'domaindig.eu'); 

         print_r($_COOKIE); 

         header('Location: check.php'); 
        } 
       } 
      } 
    ?> 

    username: <input name="user" type="user"><br> 
    password: <input name="password" type="password"><br> 
    <div class="g-recaptcha" data-sitekey=""></div> 
    <input type="submit" value="Submit" /><br><br> 
    </form> 
</body> 
</html> 

ご覧の通り、私は私がするためにGoogleのreCAPTCHAのを使用ブルートフォースログインを防ぎます。その時(repcatchaを挿入したとき)、私の$ _SESSION変数のどれもが再び働いていませんでした。だから、私はクッキー(常にセッションの使用のために新しいexperiance)で作業することに決めました。

これまでのところ、とても良いです。

このPHPページのコーディングが終了したら、私はphpファイルcheck.phpを終了しました。このファイルでは、資格情報をチェックして、すべてがチェックアウトしたら、メインページとメニューにリダイレクトします(グラフはありません。純粋なPHPのみ)。

私の問題は、次のとおりです。

秒のファイルで、私はすべてのクッキーを参照することはできません。私はprint_r($ _ COOKIE)を使用します。私はrecaptchaからのクッキーだけを見る。ログインページでは、設定しようとしている3つのCookieが表示されますが、他のファイルでは、私はそれらを読むことができないようです。私は複数のブラウザと複数のコンピュータをチェックしましたが、同じ運があります。私はブラウザがクッキーを受け入れることができることを確認しましたが、間違いを犯したようです。

私の説明について何か不安がある場合は、私にお知らせください。私は明確にします。ここで

は(クッキーを使用して資格情報をチェックします)私のcheck.phpコードです:私は、ログインページ上に表示されたときにここで

<!DOCTYPE html> 
<html> 
<head> 
    <title> 
     check 
    </title> 
    <meta charset="UTF-8"> 
</head> 
<body> 
<?php include_once("analyticstracking.php") ?> 
    <form action="check.php" method="POST"> 

     <?php 
     if ($_COOKIE['authorized'] == 1) 
     { 
      if (isset($_COOKIE['user']) || isset($_COOKIE['hpass'])) 
      { 
       require('ConnectToDB.php'); 

       $username = $_COOKIE['user']; 
       $password = $_COOKIE['hpass']; 

       $result="SELECT `password` FROM `users` WHERE username = '$username'"; 
       $tbl=mysqli_query ($conn, $result); 

       $table = $tbl->fetch_assoc(); 
       $pass = $table['password']; 

       if ($pass) 
       { 
        if ($password == $pass) 
        { 
         $ip = $_SERVER['REMOTE_ADDR']; 
         $date = date("Y-m-d H:i:s"); 

         $result = "INSERT INTO `logins` (`username`, `date`, `ip`) VALUES ('$username', '$date', '$ip')"; 
         $tbl = mysqli_query($conn, $result); 
         $_COOKIE['authorized'] = 1; 
         echo "Login successfull! Redirecting."; 


         require 'ConnectToDB.php'; 

         $alphanumeric[0] = "0"; 
         $alphanumeric[1] = "1"; 
         $alphanumeric[2] = "2"; 
         $alphanumeric[3] = "3"; 
         $alphanumeric[4] = "4"; 
         $alphanumeric[5] = "5"; 
         $alphanumeric[6] = "6"; 
         $alphanumeric[7] = "7"; 
         $alphanumeric[8] = "8"; 
         $alphanumeric[9] = "9"; 
         $alphanumeric[10] = "a"; 
         $alphanumeric[11] = "b"; 
         $alphanumeric[12] = "c"; 
         $alphanumeric[13] = "d"; 
         $alphanumeric[14] = "e"; 
         $alphanumeric[15] = "f"; 
         $alphanumeric[16] = "g"; 
         $alphanumeric[16] = "h"; 
         $alphanumeric[17] = "i"; 
         $alphanumeric[18] = "j"; 
         $alphanumeric[19] = "k"; 
         $alphanumeric[20] = "l"; 
         $alphanumeric[21] = "m"; 
         $alphanumeric[22] = "n"; 
         $alphanumeric[23] = "o"; 
         $alphanumeric[24] = "p"; 
         $alphanumeric[25] = "q"; 
         $alphanumeric[26] = "r"; 
         $alphanumeric[27] = "s"; 
         $alphanumeric[28] = "t"; 
         $alphanumeric[29] = "u"; 
         $alphanumeric[30] = "v"; 
         $alphanumeric[31] = "w"; 
         $alphanumeric[32] = "x"; 
         $alphanumeric[33] = "y"; 
         $alphanumeric[34] = "z"; 
         $alphanumeric[35] = "A"; 
         $alphanumeric[36] = "B"; 
         $alphanumeric[37] = "C"; 
         $alphanumeric[38] = "D"; 
         $alphanumeric[39] = "E"; 
         $alphanumeric[40] = "F"; 
         $alphanumeric[41] = "G"; 
         $alphanumeric[42] = "H"; 
         $alphanumeric[43] = "I"; 
         $alphanumeric[44] = "J"; 
         $alphanumeric[45] = "K"; 
         $alphanumeric[46] = "L"; 
         $alphanumeric[47] = "M"; 
         $alphanumeric[48] = "N"; 
         $alphanumeric[49] = "O"; 
         $alphanumeric[50] = "P"; 
         $alphanumeric[51] = "Q"; 
         $alphanumeric[52] = "R"; 
         $alphanumeric[53] = "S"; 
         $alphanumeric[54] = "T"; 
         $alphanumeric[55] = "U"; 
         $alphanumeric[56] = "V"; 
         $alphanumeric[57] = "W"; 
         $alphanumeric[58] = "X"; 
         $alphanumeric[59] = "Y"; 
         $alphanumeric[60] = "Z"; 

         global $session; 
         $session = ""; 

         for ($i=0;$i<20;$i++) 
         { 
          $rnd = rand(0, 60); 
          $session .= $alphanumeric[$rnd]; 
         } 


         $date = date("Y-m-d"); 
         $ip = $_SERVER['REMOTE_ADDR']; 

         $result = "INSERT INTO `sessions` (`user`, `date`, `session_id`, `ip`, `login`) VALUES ('$username', '$date', '$session', '$ip', '1')"; 
         $tbl = mysqli_query($conn, $result);        

         echo "All done"; 
         echo '<script> window.location = "https://domaindig.eu/index.php" </script>'; 
        } 
        else 
        { 
         echo "User found but password provided was wrong. Try again!"; 
        // echo '<script> window.location = "https://domaindig.eu/login.php" </script>'; 
        } 
       } 
       else 
       { 
        echo "Failure. Couldn't fetch password!!! Try again."; 
        //echo '<script> window.location = "https://domaindig.eu/login.php" </script>'; 
       } 
      } 
      else 
      { 
       echo "Something went wrong. Try login again!"; 
       //echo '<script> window.location = "https://domaindig.eu/login.php" </script>'; 
      } 
     } 
     else 
     { 
      echo "Unauthorized access!!"; 
      //echo '<script> window.location = "https://domaindig.eu/login.php" </script>'; 
     } 

     ?> 
    </form> 
</body> 
</html> 

も私のクッキーの写真です:

enter image description here

事前に皆様に感謝いたします。

答えて

0

まず、2つのPHPファイルが同じホストにあることを確認する必要があります。 Beacuseクッキーは、ipではなく、同じホストでしか取得できません。例えば

: あなたのウェブサイトにlogin.phpを入れ、ユーザーのユーザーはこのアドレスlogining使用:

はlocalhost /ログイン

を、その後、ユーザーが得るために、このアドレスを訪問することができます彼のクッキー:

はlocalhost/analyticstracking

+0

すべてのファイルは、同じドメイン名にあり、同じディレクトリ(/)にあります。 – adamkwn

+0

私は自分のコードを今すぐ実行します。クッキーを取得できます。同じドメインの2つのPHPファイルを必ず訪れてください。 –

+0

こんにちは。これはうまくいきますが、上記のコードをgoogle recaptchaと組み合わせてもセッションは機能しませんが、クッキーがうまく動作することを期待しています。あなたはrecaptchaでコードを試しましたか? – adamkwn

関連する問題