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

EDI, CMS, Outils, Scripts et API PHP Discussion :

code et sessions


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Autre
    Inscrit en
    Septembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut code et sessions
    Bonjour,

    Loin d'être professionnel en php, je bidouille un peu...

    J'intègre actuellement un code dans une page que je souhaite utiliser avec Joomla 3.2.3.
    Pour info, je ne passe pas par un plugins car je suis bien incapable d'en créer un (j'ai essayé mais j'ai du mal a comprendre le fonctionnement et les aides sur internet sont bien pauvres dans ce domaine pour les débutants)...

    Mon code joue sur le sexe des users (définis dans le composant Jomsocial) et permet de les changer de groupe d'utilisateur dans Joomla en fonction de cela.

    J'intègre à ma page d'accueil un module avec "Flexi Custom Code" qui redirige les utilisateurs enregistrés vers ma page php. Une fois le code traité, ils sont amenés vers une autre page (mur).
    Ensuite un autre composant prends le relais pour gérer les accès des utilisateurs en fonction de leur abonnement.

    Le code contient des conditions de sexe (homme ou femme) et du groupe dans lequel ils sont déjà...

    Détails :
    - Par défaut, le groupe des membres enregistrés est le 2.
    - Une femme doit être dans le groupe des femmes (ici groupe 12). Si elle ne l'est pas, on lui attribut le groupe 12 avant de la rediriger vers notre page mur.
    - Un homme abonné doit être dans le groupe correspondant soit le 10 (défini manuellement en cas d'abonnement).
    - Un homme qui vient de s'enregistrer est dans le groupe 2, on le place automatiquement dans le groupe des non abonnés (11) et on le redirige vers la page mur.
    - Un homme non abonné qui serait déjà dans le groupe 11 serait simplement redirigé vers la page mur.
    - Si l'utilisateur est un super admin (groupe 8), homme ou femme, on le redirige vers la page mur sans rien toucher.

    Problème 1 :
    Le code me met systématiquement les hommes abonnés (groupe 10) dans le groupe des non abonnés (11).

    Problème 2 :
    Le changement de groupe n'est pas pris en compte si l'utilisateur ne se déconnecte pas.
    J'ai donc testé de déconnecter l'utilisateur si il y a eu changement. Cela fonctionne, mais un peu trop !
    Si l'utilisateur se balade sur le site, aucun problème, mais s'il a le malheur d'aller sur la page d'accueil (où se trouve la redirection vers mon code),
    il est systématiquement déconnecté même s'il est correctement classé dans le bon groupe !

    En espérant que quelqu'un pourra m'apporter une quelconque aide.

    Merci d'avance

    Voici mon code :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    // définir le chemin permettant d'accéder à Joomla
    define('JPATH_BASE', '../');
     
    // Set flag that this is a parent file
    define( '_JEXEC', 1 );
     
    define( 'DS', DIRECTORY_SEPARATOR );
     
    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
     
    JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
     
    $mainframe = JFactory::getApplication('site');
    $session = JFactory::getSession();
    $user = JFactory::getUser();
     
    if (!$user->guest)
    {
    	$userid = $user->id ;
     
    	try
    	{
    		$bdd = new PDO('mysql:host=.....;dbname=.....', '.....', '.....');
    	}
    	catch(Exception $e)
    	{
    		die('Erreur : '.$e->getMessage());
    	}
     
    	$reponse = $bdd->query('SELECT group_id FROM bdt1m_user_usergroup_map WHERE user_id= ' . $userid . '');
    	$reponse2 = $bdd->query('SELECT value FROM bdt1m_community_fields_values WHERE user_id= ' . $userid . ' AND field_id=2');
     
    	while ($donnees = $reponse->fetch())
    	{
    		$group = $donnees['group_id'];
     
    		while ($donnees2 = $reponse2->fetch())
    		{ 
    			$gender = $donnees2['value'];
     
    			if ($gender === "COM_COMMUNITY_FEMALE")
    			{
    				if ($group != 8 OR $group != 12 )
    				{
    					$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 12 WHERE user_id= ' . $userid . '');
    					$session->destroy(); 
    				}
    			}
    			else if ($group != 8 OR $group != 10 OR $groupe != 11)
    			{
    				$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 11 WHERE user_id= ' . $userid . '');
    				$session->destroy(); 
    			}
    		}
    		$reponse2->closeCursor();
    	}
    	$reponse->closeCursor();
     
    	mysql_close();
    }
     
    header('Location: ../index.php/mur');
    exit();
    ?>

  2. #2
    Inactif
    Homme Profil pro
    Sans emploi
    Inscrit en
    Septembre 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Septembre 2014
    Messages : 35
    Points : 52
    Points
    52
    Par défaut un fichier extern ou tu créer un plugin?
    Ah ok tu veux mêttre dans un module de flexi. utilise plutôt sourcerer dispo gratuit sur http://www.nonumber.nl/extensions/sourcerer#download
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
    /*********Aucune utilité déjà prise en compte avec sourcerer**********
    // définir le chemin permettant d'accéder à Joomla
    define('JPATH_BASE', '../');
     
    // Set flag that this is a parent file
    define( '_JEXEC', 1 );
     
    define( 'DS', DIRECTORY_SEPARATOR );
     
    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    ****Aucune utilité déjà prise en compte avec sourcerer****/ 
    JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
     
    //$mainframe = JFactory::getApplication('site');
    $mainframe = JFactory::getApplication()->isSite();
    $session = JFactory::getSession();
    $user = JFactory::getUser();
     
    if (!$user->guest)
    {
    	$userid = $user->id ;
     
    	try
    	{
    		$bdd = new PDO('mysql:host=.....;dbname=.....', '.....', '.....');
    	}
    	catch(Exception $e)
    	{
    		die('Erreur : '.$e->getMessage());
    	}
     
    	$reponse = $bdd->query('SELECT group_id FROM bdt1m_user_usergroup_map WHERE user_id= ' . $userid . '');
    	$reponse2 = $bdd->query('SELECT value FROM bdt1m_community_fields_values WHERE user_id= ' . $userid . ' AND field_id=2');
     
    	while ($donnees = $reponse->fetch())
    	{
    		$group = $donnees['group_id'];
     
    		while ($donnees2 = $reponse2->fetch())
    		{ 
    			$gender = $donnees2['value'];
     
    			if ($gender === "COM_COMMUNITY_FEMALE")
    			{
    				if ($group != 8 OR $group != 12 )
    				{
    					$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 12 WHERE user_id= ' . $userid . '');
    					$session->destroy(); 
    				}
    			}
    			else if ($group != 8 OR $group != 10 OR $groupe != 11)
    			{
    				$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 11 WHERE user_id= ' . $userid . '');
    				$session->destroy(); 
    			}
    		}
    		$reponse2->closeCursor();
    	}
    	$reponse->closeCursor();
     
    	mysql_close();
    }
     
    //header('Location: ../index.php/mur');
    //JFactory::getApplication()->redirect($url, 'msg', '$msgType message', boolean $moved = false);
    JFactory::getApplication()->redirect('http://lien.tld/page1.html');
    //exit();
    jexit();
    ?>
    info les code MVC du Plateforme du CMS sous Joomla est http://api.joomla.org/cms-3/packages....Platform.html


    je pense pas que ça va marché. à part vaux mieux tu créé un plugin pour cela je pense

Discussions similaires

  1. code des sessions
    Par soussou1010 dans le forum Langage
    Réponses: 6
    Dernier message: 06/08/2013, 21h16
  2. Accéder à l'objet 'session' dans le code du controleur
    Par chat_roux dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/12/2007, 20h37
  3. [Session] Organisation du code et les Sessions
    Par sir_gcc dans le forum Autres composants
    Réponses: 3
    Dernier message: 03/01/2007, 21h49
  4. formatage session codée a décoder
    Par poxtra_102 dans le forum Windows XP
    Réponses: 2
    Dernier message: 18/09/2006, 21h32
  5. [Sécurité] code de session
    Par Mme N dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2006, 10h23

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