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.

Était-ce utile?

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.

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

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;
}

portée

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top