2010-02-24 10 views
0

Im debout avec un problème, que la variable de session est « montre » avant son sens ..SESSION show variable avant sa définition

index.php est mon site, où il y a une conception et à l'intérieur qu'il ya un cadre. Maintenant, ont index.php ceci:

<div id='message2' onclick="closeNotice2()" style="display: none"> 
<? echo $_SESSION["user_message_123456"]; ?> 
</div> 

A l'intérieur du cadre, il y a un insert.php qui stocke les données à user_message_123456.

maintenant avant qu'il a été enregistré, il affiche non défini .. mais après qu'il a été enregistré, il affichera encore non définie, jusqu'à ce que vous actualisez la page ..

Mais, je veux le faire, Lorsque vous avez stocké la session, elle l'affiche et vous n'avez pas besoin d'actualiser la page (f5).

Je sais que cela provoque parce que vous appelez la variable $ _SESSION lorsque vous chargez index.php, et ce n'est pas défini, sauf si vous n'avez pas exécuté insert.php, mais je veux trouver une autre méthode/façon de le faire.

Des idées comment faire ceci? exemples? montre moi s'il te plaît!!

Répondre

0

Il ne semble pas particulièrement faisable de faire ce que vous voulez faire. Les pages chargées après les autres pages ne peuvent pas exactement revenir en arrière et changer le passé.

Si vous êtes absolument certain que le cadre est un élément essentiel de votre approche, vous devez utiliser le Javascript inter-image pour permettre aux deux documents de communiquer. Cependant, il se peut très bien que votre flux d'applications ait simplement besoin d'être modifié pour rendre cette tâche inutile. Selon Javascript, lorsque cela n'est pas nécessaire, c'est imprudent.

0

Pour afficher un nouveau contenu sur le cadre externe sans le recharger, vous pouvez utiliser du JavaScript simple.

Ajoutez le script suivant à votre fichier insert.php, dans une partie où vous avez déjà écrit la valeur dans le tableau $ _SESSION:

<script type="text/javascript"> 
    var container = parent.document.getElementById('message2'); 
    container.innerHTML = '<?=$_SESSION["user_message_123456"]?>'; 
</script> 

Quelques conseils:

  • Cela définira le contenu de votre <div id='message2'... à la valeur de la variable.
  • Si cela ne fonctionne pas, ajoutez la ligne suivante avant la balise de fin </script>:

    alert('Script is working'); 
    

    vérifier maintenant si vous voyez le menu contextuel du message lorsque insert.php charges. Sinon, cela signifie que le script n'est pas en cours d'exécution; déplacer le code afin qu'il soit placé à l'intérieur <head> ou juste avant la fin </body></html>

Hope this helps

+0

'container.innerHTML = '<= $ _ SESSION [ "user_message_123456"]?>';' quelle? –

+0

@arxanas C'est un PHP [short open tag] (http://www.php.net/manual/fr/language.basic-syntax.phpmode.php). '' est l'abréviation de ' '. Dans ce cas, j'imprime la valeur de la variable de session dans une chaîne JavaScript. – MrFusion

+0

Je le savais, mais il me semblait que vous vouliez que Javascript obtienne la valeur '$ _SESSION' lorsque le code est appelé. Mon erreur, désolé.(Mais l'utilisation de balises courtes n'est pas recommandée.) –

Questions connexes