IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

l'utilisation de require() en présence de Start_session


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut l'utilisation de require() en présence de Start_session
    Bonjour à tous,
    J'ai utilisé require pour exécuter un fichier php externe. Les deux fichiers contiennent des start_session().
    fichier appelant = main.php
    fichier appelé = famille1.php(contient des var globaux par exp: global $nbr; global $req; )
    Lors de l'exécution, 2 types d'erreurs m'apparaissent:
    *A session had already been started - ignoring session_start() in C:\Program Files\EasyPHP-5.3.3.1\www\famille11.php on line x

    *Undefined variable: req in C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php on line xx

    Undefined variable: nbr in C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php on line 264
    Sachant que c'est affiché tout les var globaux

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie l'existence d'une session avant de la démarrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!isset($_SESSION))
    {
    session_start();
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Bonsoir,
    J'ai essayé cette condition dans les 2 fichiers, ça fonctionne mais ça ne me permet pas de résoudre le problème des variables globaux qui ne les connait pas telque :
    Undefined variable: req in C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php on line xx
    Alors une idée svp!!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi as-tu besoin de variables globales ? L'erreur apparait au niveau de la définition global ou ailleurs ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pourquoi as-tu besoin de variables globales ?
    je les ai utilisé dans plusieurs fonctions du programme
    Citation Envoyé par sabotage Voir le message
    L'erreur apparait au niveau de la définition global ou ailleurs ?
    L'erreur apparaît lors que "main.php" appelle "famille1.php". Il n'a pas pu connaitre les var globaux.
    J'ai pas pu identifier le source de ces erreurs!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Il y a t-il une solution d’éviter l'utilisation de global en tenant compte que je n'utilise pas l'orienté objet!

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut appeler une variable d'une fonction dans une autrefonction
    Bonjour,
    J'ai utilisé une fonction(ne contient pas de return):function parser($deep), qui permet de déterminer les variables "$nbr" et "$var". Je les déclaré comme des var globaux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function parser($deep)
    {global $req;
    global $nbr;
    for($i=0;$i<=$nb;$i++)
     {switch($i)
          {	case 0 :
    	{list($date, $heure) = explode(" ", $att[$i]);
    	 echo "<br> $date <br>";
    	 echo $heure;
    	 break;
    	}	
    	case 3 :
    	{ $id = explode("-", $att[$i]);
    	   $nbi = count($id)-1;
    	   for($ii=0; $ii<=$nbi; $ii++)
    	    { if($ii==2)
     	{$req = explode(":", $id[$ii]);	
              $nbr = count($req)-1;}
    	 break;
    	}//fin case
    	}//fin switch
     }//fin for
    }//fin fonction
    
    Je souhaite les utiliser dans une autre fonction:
    function det_protocole($req,$nbr)
    {global $protocole;	echo"******|$nbr|******";//aucune valeur affiché lors se l'exe
     for($i=0; $i<=$nbr; $i++)
     {if(stristr($req[$i],'udp')==TRUE)
    	{$protocole='UDP';
    	 echo "<br>Le protocole = $protocole";
    	}
     }//fin for
    }//fin fonction
    Est ce que personne sait où le problème réside, en tenant compte que la faute apparaît quand j'appelle "det_protocole($req,$nbr);".
    Undefined variable: req in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\main_total.php on line xx

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quel endroit fais-tu l'appel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Re,
    L'appel se fait dans une fonction, plus précisément dans une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function det_famille($ligne,$nb)
    {$famille='';
    for($i=0; $i<=$nb; $i++)
     {global $deep;
      if ((stristr($ligne[$i],'built')) && (stristr($ligne[$i],'tcp connection')) ==TRUE) 
    	{$famille='F1';
    	 echo "<br><b>FAMILLE = $famille</b>";
    	$deep=$ligne[$i];
    	 parser($deep);//fonction parser
    	det_protocole();//fonction protocole
    }
    }
    }

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans la déclaration de det_protocole() il y a des paramètres et la tu l'appelles sans.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Re,
    Merci pour votre suivie "SABOTAGE"!
    Alors, j'ai corrigé l'appel de fonction(avec paramètres)..mais toujours le même problème!!
    J'ai essayé à mon tour de trouver une autre solution..ça fonctionne mais je ne suis pas trop convaincu! J'ai appelé les deux var $req et $nbr juste avant l'appel de fonction...pourtant qu'ils sont déclarés global!!
    La sol est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function det_famille($ligne,$nb)
    {$famille='';
    for($i=0; $i<=$nb; $i++)
     {global $deep;
      if((stristr($ligne[$i],'built')) && (stristr($ligne[$i],'tcp connection')) ==TRUE) 
    	{$famille='F1';
    	 echo "<br><b>FAMILLE = $famille</b>";
    	$deep=$ligne[$i];
    	parser($deep);
    	global $req;
    	global $nbr;
    	det_protocole($nbr,$req);//function det_protocole($nbr,$req)
    	} }}
    Ma question est:Il y a t_il un appel par référence en PHP??et trouvez vous ma solution logique..car moi NON?!

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 84
    Points
    84
    Par défaut
    Pas très clair cette histoire.
    fichier appelant = main.php
    fichier appelé = famille1.php(contient des var globaux par exp: global $nbr; global $req; )
    Et l'erreur dans :
    Undefined variable: req in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\main_total.php on line xx
    D'où il sort le main_total.php ?

    Si tu déclares tes variables globales $nbr et $reg dans la fonctions parser() elle serons accessibles sur la page uniquement après l'appel à cette fonctions sinon elles n'existent pas

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    "Si tu déclares tes variables globales $nbr et $reg dans la fonctions parser() elle serons accessibles sur la page uniquement après l'appel à cette fonctions sinon elles n'existent pas"
    comment dois je faire cette déclaration en main_total.php?
    Juste avant require/include?

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/02/2021, 10h49
  2. Réponses: 0
    Dernier message: 08/08/2008, 14h42
  3. require et utilisation de variable
    Par lennelei dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2008, 14h58
  4. Réponses: 9
    Dernier message: 07/04/2007, 22h40
  5. require et utilisation d'un if
    Par Deallyra dans le forum Langage
    Réponses: 5
    Dernier message: 05/03/2007, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo