3

私は3つのファイルを持っています。正確な例を示します。

a.php

<form action="b.php" method="POST">

Enter age:
<input type="text" name="age"><br>
<input type="submit" value="Save">
</form>

b.php

<?php
$age=$_POST["age"];
if (is_numeric($age))
{
    header("Location: c.php");
    exit();
}
else
{
    echo "Age invalid!";
}
?>

c.php

<?php
//i want to use the $age variable here   
echo $age;
?>

$ageから変数を使用するにはどうすればよいb.phpですc.phpか?

また、session_start();を試しました。ファイルb.phpで使用$_SESSION["age"]=$_POST["age"];b.php、代わりにで$_SESSION["age"]使用しますが、それでも機能しませんでした。c.php$age

インクルードも試しましたが、どこにも行きませんでした...正しく使用しなかったのかもしれません。

4

8 に答える 8

6

問題は、ファイルb.phpで、ageの値をc.phpに送信していないことです。

b.phpで、これを行った場合:

 session_start();
 $_SESSION["age"] = $_POST["age"];

次に、c.phpで、次のことを行いました。

 session_start();
 $age = $_SESSION["age"];
 echo $age;

正しく動作します。

于 2012-10-27T20:11:08.833 に答える
2

ユーザーがa.phpでフォームを送信すると、ブラウザーはb.phpWITHデータに対してHTTPPOST リクエストを行います。

つまり、年齢は$_POSTありますがheader()b.phpではHTTP GETリクエストを介してユーザーをc.phpに送信するためc.phpではアクセスできません。ただし、これは、ページの更新によってデータが再送信されるのを防ぐための良い方法です。$_POST

を使用してセッションデータにアクセスするには、 c.phpでもセッションを開始する必要がありますsession_start()

于 2012-10-27T20:15:19.873 に答える
1

セッションを使用する場合は、$ _ SESSION変数を使用するすべてのページでsession_start()を呼び出す必要があります。さらに、出力の前にsession_start()を呼び出す必要があります。両方のページでsession_startを使用する場合、機能しない理由はありません。

于 2012-10-27T20:11:12.407 に答える
1

これを試してください:

b.php:

<?php
   $age=$_POST["age"];
   if (is_numeric($age))
   {
      header("Location: c.php?age=".$age);
      exit();
   }
   else
   {
      echo "Age invalid!";
   }
?>

c.php:

<?php
    //i want to use the $age variable here   
    $age = $_REQUEST["age"];
    echo $age;
?>
于 2012-10-27T20:11:46.167 に答える
1

c.phpでも使用session_start()しましたか?セッションにアクセスする各スクリプトで使用する必要があります。c.phpで使用すると、にアクセスできるようになります。session_start()session_start()$_SESSION['age']

于 2012-10-27T20:12:08.520 に答える
1

b.phpを...に変更してみませんか

<?php
$age=$_POST["age"];
if (is_numeric($age))
{
    header("Location: c.php?age=$age"); ### so it will be send as get var
    exit();
}
else
{
    echo "Age invalid!";
}
?>

とc.phpで

$age = $_GET['age'];

または、cale_bで説明されているセッションを使用します

于 2012-10-27T20:15:57.087 に答える
1

セッションの開始と破棄を作成したくない場合は、b.phpファイルをc.phpに追加する必要があります。

あなたのc.phpファイルがこのようにならなければならない後よりも

c.php

<?php
include_once 'b.php';
echo $age;
?>
于 2012-10-28T12:37:34.330 に答える
0

ユーザーには実際には必要ありませんheader('location: c.php');

$_SESSIONまた、ユーザー変数にとって適切な場所ではないようです。

include 'c.php'を使用する代わりに簡単にできると思いますheader('location: c.php');

b.php

<?php
$age=$_POST["age"];
if (is_numeric($age))
{
    include "c.php"; //THIS LINE HAS BEEN CHANGED
    exit();
}
else
{
    echo "Age invalid!";
}
?>

c.php

<?php
echo $age; //NO CHANGE AT ALL IN THE FILE 'c.php'
?>

そのため、ブラウザはそのまま残り、localhost/project/b.phpで実行されている内部アクションはc.php安全に保たれます。

header('location: c.php');ユーザーをあるページから別のページに移動するために使用されます。たとえば、ユーザーがログインした後、またはセッションの有効期限が切れたときに、ユーザーは再度認証される必要があります。この場合、ユーザーは自分がREDIRECT無許可のページにEDされていることを確認します。

この場合に使用するのはエラーheader()ではなく、コードは引き続き正常に機能しますが、そのようなアクションでは想定されていません。

于 2012-10-28T12:59:24.047 に答える