0

データの投稿に使用されるファイルでグローバルを使用しようとしています。グローバルはそのページに登録されていません。そのページでグローバルにアクセスできるようにするにはどうすればよいですか。

編集多分私はあまりにも明確ではなかったので、それを明確にさせてください。私はこれらのファイルを持っています

index.php

global $user;
echo $user->uid;

post.php

global $user;
echo $user->uid;

今、index.php から jquery を介して post.php に投稿しています。ただし、post.php から $user->uid をエコーするとエコーしませんが、index.php からエコーすると表示されます。$user->uid を post.php からアクセスできるようにするにはどうすればよいですか。

4

5 に答える 5

2

グローバルスコープから変数にアクセスする別の方法は、PHPで定義された特別な$GLOBALS配列を使用することです。

php.netからの例

<?php
$a = 1;
$b = 2;

function Sum() {
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
} 

Sum();
echo $b;
?>
于 2009-11-18T04:08:13.990 に答える
1

グローバルではなく、セッションを検討する必要があると思います。あるページに変数を登録し、ユーザーが別のページに移動したときに、その変数を使用できるようにする必要があります。

セッションはあなたにそれをさせます。このコードを使用するだけです。

<?php
session_start();
$_SESSION['my_var'] = 'foo';

そして次のページで...

<?php
session_start();
echo $_SESSION['my_var'];

どちらが出力されますfoo

http://www.php.net/manual/en/book.session.php

于 2009-11-18T04:11:27.697 に答える
1

post.phpユーザーがフォームを送信して にリダイレクトすると、 の変数はなくなってしまっていることを覚えておく必要がありますindex.php。通常のデスクトップ アプリケーションとは異なり、PHP の実行は短命です。

index.phpオブジェクトを取得するためにで行うことは、$userで繰り返す必要がありますpost.php。コードを複製したくない場合は、それをいくつかのファイルに入れ、init_user.php両方index.phppost.php使用してファイルを含めますinclude_once('init_user.php');

于 2009-11-18T04:23:40.167 に答える
0

関数内にグローバルが必要な場合は、このようにします

function phpFoobarFunction(){
  global $my_global;
}

スコーピングに関するリファレンス

、(など...)のようなスーパーグローバルの場合、どこでも利用できます。$_POST$_GET


更新された質問から、PHPの2つの異なる呼び出し間で変数を共有することはできません. あなたが持っているでしょう:

  • DB(またはソース)から再ロードして $user クラスを再作成する
  • $_SESSION にオブジェクトをストックする
  • javascriptを介してユーザーオブジェクトを渡し(ただし、ユーザーが編集できるため危険です)、ajax呼び出しにparamsを追加します。

PHPがセッションでどのように遊ぶかについてのより多くの参照

于 2009-11-18T04:03:49.943 に答える
0

私はマットバスタに同意します。グローバルはセキュリティ上の理由で無効にされました。とにかく使用できますが、正しい方法はセッションを使用することです。

もう 1 つは、「今、index.php から jquery を介して post.php に投稿している」ということです。Ajax 呼び出しを使用していますか? そうでない場合、なぜJSを使用してこれを行うのかわかりません... Ajaxを介してデータを送信していて、このパラメーターのみを送信したい場合は、これを試してください:

<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" />

そして、次のように ajax 呼び出しから処理します。

$.ajax({
    type: "POST",
    url: "/post.php",
    data: "uid=" + uid + "&otherVar=" + otherVar, //and so on..
    success: function() {
        //Here you can notify the user that the script ran successfully 
        }
});//end of ajax

これがお役に立てば幸いです。

于 2009-11-18T09:36:01.043 に答える