Frage

Ich versuche, eine globale Datei in einer Datei zu verwenden, an die nur Daten veröffentlicht werden. Der Globale wird auf dieser Seite nicht registriert. Wie kann ich die Globalen auf dieser Seite zugänglich machen?

Bearbeiten, vielleicht war ich nicht zu klar, also lass mich es klären. Ich habe diese Dateien

index.php

global $user;
echo $user->uid;

post.php

global $user;
echo $user->uid;

Jetzt von index.php poste ich post.php über jQuery. Wenn ich jedoch $ user-> uid von post.php wiederhole, wiederholt es nicht, aber wenn ich es von index.php wiederhole, wird es angezeigt. Wie kann ich diesen $ user-> uid von post.php zugänglich machen?

War es hilfreich?

Lösung

Eine andere Möglichkeit, auf Variablen aus dem globalen Bereich zuzugreifen, besteht darin, das spezielle PHP-definierte $ Globals-Array zu verwenden.

Beispiel von php.net

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

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

Sum();
echo $b;
?>

Andere Tipps

Ich denke, Sie sollten sich eher mit Sitzungen als in Globalen untersuchen. Nach dem, was es sich anhört, registrieren Sie eine Variable auf einer Seite. Wenn der Benutzer zu einer anderen Seite wechselt, möchten Sie, dass diese Variable verwendet werden kann.

Mit Sitzungen können Sie das tun. Verwenden Sie diesen Code einfach:

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

Und auf nachfolgenden Seiten ...

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

Welches ausgeben wird foo.

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

Sie müssen sich daran erinnern post.php, die Variablen in index.php sind lange weg. PHP-Ausführungen sind im Gegensatz zu normalen Desktop-Anwendungen von kurzer Dauer.

Was auch immer du tust? index.php um das zu bekommen $user Objekt muss in wiederholt werden in post.php. Wenn Sie den Code nicht replizieren möchten, geben Sie ihn einfach in eine Datei ein init_user.php und beides haben index.php und post.php Fügen Sie die Datei mithilfe der Datei ein include_once('init_user.php');

Wenn Sie eine globale Innere einer Funktion benötigen, mögen dies dies

function phpFoobarFunction(){
  global $my_global;
}

Referenz über Scoping

zum Superglobale wie $_POST, $_GET (etc ...) Sie sind verfügbar irgendwo.


Aus Ihrer aktualisierten Frage können Sie keine Variable zwischen zwei verschiedenen Rufen von PHP freigeben. du würdest haben :

  • Um Ihre $ User Class durch Realoading aus dem DB (oder Ihrer Quelle) neu zu erstellen
  • Lager das Objekt in der $ _Session
  • Übergeben Sie das Benutzerobjekt über JavaScript (aber das ist gefährlich, weil der Benutzer dies bearbeiten kann) und fügen Sie es zu Ihrem Ajax -Anruf hin.

Weitere Referenz darüber, wie PHP mit der Sitzung spielt dort

Ich stimme Mattbasta zu, Globale waren aus Sicherheitsgründen deaktiviert. Sie können es trotzdem verwenden, aber der richtige Weg ist die Verwendung der Sitzung.

Andere ist, Sie sagten: "Jetzt von index.php poste ich post.php über jQuery." Verwenden Sie einen Ajax -Anruf? Wenn nicht, verstehe ich nicht, warum ich JS dazu verwenden kann ... Wenn Sie die Daten über AJAX senden und nur diesen Param senden möchten, versuchen Sie Folgendes:

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

Und dann behandeln Sie es von Ihrem Ajax -Anruf wie:

$.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

Hoffe das hilft dir.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top