2009-11-18 3 views
0

J'essaie d'utiliser un global dans un fichier qui est juste utilisé pour publier des données. Le global n'est pas enregistré sur cette page. Comment puis-je obtenir les globals accessibles dans cette page.globals php help

EDIT peut-être que je n'étais pas trop clair alors laissez-moi l'é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 j'écho $ user-> uid de post.php, il ne fait pas d'écho mais quand je lui fais écho depuis index.php, il le montre. Comment puis-je obtenir ce $ user-> uid accessible depuis post.php?

Répondre

2

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; 
?> 
+0

J'ai édité le message j'espère que cela aidera. – ngreenwood6

0

si vous avez besoin d'un monde dans une fonction, utilisez cette

function phpFoobarFunction(){ 
    global $my_global; 
} 

référence sur scoping

pour superglobals comme $_POST, $_GET (etc ...), ils sont disponibles partout . À partir de votre question mise à jour, vous ne pouvez pas partager de 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 _SESSION $
  • passer l'objet utilisateur via javascript (mais c'est dangereux parce que l'utilisateur peut modifier cela) et ajouter qu'il a des paramètres à votre appel ajax.

plus référence sur la façon dont le jeu de PHP avec la session there

1

Je pense que vous devriez regarder en sessions plutôt que globals. De ce que cela ressemble, vous enregistrez une variable sur une page, puis lorsque l'utilisateur passe à une autre page, vous voulez que cette variable soit utilisable.

Les sessions vous permettront de le faire. 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 sortira foo.

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

+1

C'est ce dont vous avez besoin. Lukman décrit le problème, mais c'est la solution. – Chris

1

Vous devez vous rappeler que lorsque l'utilisateur soumet le formulaire et rediriger vers post.php, est révolue depuis longtemps les variables index.php. Les exécutions PHP sont de courte durée, contrairement aux applications de bureau normales.

Quoi que vous fassiez 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 un certain fichier init_user.php et ont tous les deux index.php et post.php comprennent le fichier en utilisant include_once('init_user.php');

0

Je suis d'accord avec mattbasta, ont été désactivés par GLOBALS des raisons de sécurité. Vous pouvez l'utiliser quand même mais la bonne façon est d'utiliser la 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.