Question
Je suis en train d'utiliser un global dans un fichier qui est juste utilisé pour écrire les données. Le monde n'est pas enregistré sur cette page. Comment puis-je obtenir les GLOBALS accessibles dans cette page.
EDIT peut-être je était pas trop clair alors laissez-moi éclaircir. Je ces fichiers
index.php
global $user;
echo $user->uid;
post.php
global $user;
echo $user->uid;
maintenant de index.php je poste à Post.php par jquery. Cependant, quand je fais écho $ user-> uid de post.php il n'est pas écho, mais quand je l'écho de index.php il le montrer. Comment puis-je obtenir que $ user-> uid accessible à partir post.php.
La solution
Une autre façon d'accéder aux variables globales est d'utiliser la pré-défini tableau $ GLOBALS.
Exemple de php.net
<?php
$a = 1;
$b = 2;
function Sum() {
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
Autres conseils
Je pense que vous devriez regarder en sessions plutôt que globals. D'après ce que cela ressemble, vous enregistrez une variable sur une page, puis lorsque l'utilisateur se déplace vers une autre page, vous voulez que la variable soit utilisable.
Sessions vous permettra de faire cela. Il suffit d'utiliser ce code:
<?php
session_start();
$_SESSION['my_var'] = 'foo';
Et sur les pages suivantes ...
<?php
session_start();
echo $_SESSION['my_var'];
qui foo
de sortie.
Vous devez vous rappeler que lorsque l'utilisateur soumet le formulaire et à rediriger post.php
, les variables index.php
est révolue depuis longtemps. les exécutions PHP sont de courte durée à la différence des applications de bureau normales.
Tout ce que vous faites dans index.php
pour obtenir l'objet $user
doit être répétée post.php
. Si vous ne voulez pas reproduire le code, il suffit de mettre dans certains init_user.php
de fichiers et ont tous les deux index.php
et post.php
comprennent le fichier en utilisant include_once('init_user.php');
si vous avez besoin d'un monde dans une fonction, utilisez cette
function phpFoobarFunction(){
global $my_global;
}
superglobales comme $_POST
, $_GET
(etc. ..) ils sont disponibles partout .
de votre question mise à jour, vous ne pouvez pas partager variable entre deux appels différents de PHP. vous auriez:
- pour recréer votre classe d'utilisateurs $ par realoading de la DB (ou source)
- stock l'objet dans le _SESSION $
- passer l'objet utilisateur via javascript (mais c'est dangereux, car l'utilisateur peut modifier que) et l'ajouter a params à votre appel ajax.
plus référence sur la façon dont le jeu de PHP avec la session il
Je suis d'accord avec mattbasta, ont été désactivés par GLOBALS des raisons de sécurité. Vous pouvez l'utiliser de toute façon, mais la bonne façon est d'utiliser session.
Autre chose est, vous avez dit: « maintenant de index.php je poste à Post.php par jquery. » Utilisez-vous un appel Ajax? Sinon, je ne comprends pas pourquoi utiliser JS pour faire ... Si vous envoyez les données via Ajax et que vous souhaitez seulement envoyer ce param essayer ceci:
<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" />
Et puis le gérer à partir de votre appel ajax comme:
$.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
Espérons que cela vous aide.