8

私は3つのページを持っています:

  1. index.php
  2. login.php
  3. display.php

index.php

ngRoute モジュールを使用して AngularJS をセットアップし、ページをナビゲートします。

login.php

デフォルトでロードされ、PHP $_SESSION 変数を設定します。

display.php

$_SESSION の内容をエコーし​​ます。

ngRoute を使用したリンク設定を使用して、login.php から display.php に移動します。

問題

display.php は、何回ナビゲートしても $_SESSION 変数を表示しません。ページを更新したり、ブラウザにアドレスを入力したりするなど、手動でページに移動した場合にのみ表示されます。

$_SESSION変数にアクセスしないだけで、他のことを画面にエコーできるため、phpコードが実行されることはわかっています。

どうしてこれなの?

4

4 に答える 4

1

一般に、PHP ベースのサーバー側のものを要求する AngularJS アプリが $_SESSION を読み取れない理由はありません。

とはいえ、少なくとも AngularJS コードの中心となる概念を提供していただければ、詳細を提供できます。

さらに、これだけを入れてdisplay.phpください:

<?

echo __FILE__
   . '<br />' . date( DATE_RFC822 )
   . '<br />' . var_dump( $_SESSION )
   ;

// intentionally skipped dangerous closing PHP-tag

AngularJS アプリを実行して、何が表示されるかを確認してください。

于 2014-03-06T22:27:10.187 に答える
1

SESSION 変数を読み取る前に、必ずセッションを開始してください。

<?php
    session_start();
    echo $_SESSION["user9"];
?>
于 2014-03-10T23:56:53.730 に答える
0

angularJS を探しているとは思いません。このようなものをもっと探していると思います。

index.php:

<html>
    <header>
       <title>Login</title>
    </header>
    <body>
       <form method="POST" action="login.php">
           <input type="username" name="username" placeholder="username" />
           <input type="password" name="password" placeholder="password" />
           <input type="submit" value="Login" />
       </form>
    </body>
</html>

login.php

<?php
   session_start();
   if(empty($_POST)) {
      die("You don't have permission to be here.");
   } elseif(empty($_POST['username']) or empty($_POST['password'])) {
      die("All fields are required.");
   }

   $username = "admin";
   $password = "password";

   if($_POST['password'] == $password && $_POST['username'] == $username) {
       $_SESSION['loggedIn'] == "true";
       header("Location: show.php");
   } else {
       die("Invalid login");
   }
?>

show.php

 <?php
    if($_SESSION['loggedIn'] == "true") {
        echo "You are logged in";
    } else {
        die("You don't have permission to be here.");
    }
 ?>
于 2014-03-10T12:59:01.810 に答える