2010-09-20 3 views
0

Quand j'appelle un fichier php en utilisant Ajax, je fais ceci:session PHP n'est pas réglé en utilisant php & ExtJS

function logIntoApp(){ 
    Ext.Ajax.request({ 
     url:'php/login.php', 
     params:{ 
       action:'login', 
       email:Ext.getCmp('userLogin').getValue(), 
       motDePasse:Ext.getCmp('passwordLogin').getValue() 
     }, 
     method:'GET', 
     success:function(result, request){ 
      //Ext.MessageBox.alert('Success',); 
      if(result.responseText == 'admin'){ 
       //Ext.MessageBox.alert('Alert', result.responseText); 
       window.location.replace("administration.php"); 
      } 
      else if(result.responseText == 'pro'){ 
       //Ext.MessageBox.alert('Alert', result.responseText); 
       window.location.replace("proAdministration.php"); 
      } 
      else{ 
       Ext.MessageBox.alert('Alert', result.responseText);//'Email ou mot de passe incorrect!'); 
      } 
     }, 
     failure:function(result, request){ 
      Ext.MessageBox.alert('Failed', 'Erreur de chargement de données'); 
     } 
    }); 
} 

dans mon fichier php, je mis un _SESSION $ pour l'utiliser dans mon administration.php

if($role=='Administrateur'){ 
        $_SESSION['role']='admin'; 
        $_SESSION['email']=$email; 
        $message = 'admin'; 
       } 

Et dans mon administration.php, je ceci:

<?php 
session_start(); 
echo "alert(''". $_SESSION['role'] . ")"; 
    if($_SESSION['role']=='admin'){ 
     //echo "alert('pro')"; 
    } 
    else{ 
     //echo "alert('admin')"; 
     header("Location:index.php"); 
    } 
?> 

Et dans mon index.php je ceci:

<?php 

    session_start(); 
    $_SESSION['role']='visiteur'; 
    $_SESSION['email']='no'; 


?> 

le problème est que je ne suis jamais redirigé vers administration.php, je pense parce que le $ _SESSION [ « rôle »] est jamais défini comme « admin »

Répondre

0

je UTF-8, le problème est qu'il envoie un caractère de nomenclature befor le flux, il estime que session_start() n'est pas la première chose ENVOYÉ . Je peux utiliser UTF-8 (sans nomenclature). J'espère que ça aide :)

-1

Vous devriez essayer session_start immédiatement après balise php pas d'espace entre l'étiquette début de session et php

+1

Comment les espaces ne seront-ils pas utiles? Vous pouvez commencer la session quand vous voulez, assurez-vous juste qu'il est avant d'utiliser la superglobale $ _SESSION, et oui, avant d'envoyer une sortie. – AlexanderMP

+3

Ce n'est pas pertinent. Vous pouvez avoir autant d'espaces/sauts de ligne/onglets que vous le souhaitez entre halfdan

0

Je ne suis pas expert ExtJS, mais à en juger par la logique, votre result.responseText est toujours égal à alert('something'), et jamais quelque chose de simple comme admin ou pro, il arrive à la dernière else déclaration. Peut-être vous devez fixer la sortie envoyée par PHP, sauter le alert()

+0

J'utilise toujours le contenu de result.responseText et je reçois toujours ce que j'ai envoyé depuis le php, le problème est que $ _SESSION ['role'] n'est pas défini dans le fichier php –

+0

Avez-vous fait un var_dump ($ _ SESSION) après session_start() et voir la sortie? – AlexanderMP

+0

Je veux savoir quelque chose avant, devrais-je faire session_start(); dans tous mes fichiers ??? –