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 :

Erreur avec la sérialisation uniquement en ligne


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut Erreur avec la sérialisation uniquement en ligne
    Bonjour à tous,

    Apache me génère une erreur dût à un mauvais argument passé à la fonction serialize() : Warning: " unserialize() expects parameter 1 to be string, object given " mais il me fait cette erreur uniquement en ligne.
    En local il n'y a aucun souci.
    J'utilise la dernière version de WAMP et mon script est sur un serveur OVH 90 plan.

    Si quelqu'un à une information pour m'éclairer je suis preneur.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Salut,

    D'ou viens les données que tu tente de désérialiser ?

    Le warning te dit que les paramètres sont pas bon, je ne pense pas que ca vienne de ta config local mais la différence d'environnement ( bdd, formulaire, etc... d'ou viennent tes données ).

  3. #3
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    salut, les donnés proviennent d'une variable de session

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    t'as vérifie la tete de tes données avant de chercher a les deserialiser ?

  5. #5
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    Ouai elle correspond bien à une variable linéarisé .. en faite pour t'expliquer le contexte je stocke dans une session un objet sérializé que je désérialize à chaque rechargement de page pour le mettre dans une variable de type GLOBAL et pouvir l'utiliser n'importe ou dans mon code. Je travail avec un frontcontroller et la désérialisation se fait dans le constructeur, avant l'appelle du constructeur dans un fichier index.php il y genre deux include et la fonction session_start () ...
    Mais bien sur en local aucun problèmes tout fonctionne, j'ai tracé ma variable de session contenant l'objet sérializé pour voir si il n'y avait pas un problème mais je vois à chaque fois la chaine de caractères linéarisé ..

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Tu aurais la page de code ou tu fais la désérialisation ?

  7. #7
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    Ca c'est l'index :

    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
    <?php 
    	//Ouverture d'une session.
    	// print phpinfo();
    	session_start ();
    	//Chargement automatique des classes.
    	include_once ('./classes/autoload.php');
    	//Chargement du fichier de configuration.
    	include_once ('./configuration/config.inc.php');
    	//Appelle du gestionnaire d'affichage des données.
    	include_once ('./frontControllers/FrontController.class.php');
    	//Création des objets nécéssaires à l'affichage des informations.
    	$url = new Url();// Gestion de l'url.
    	$fc = new FrontController ($url, $GLOBALS['_POST'], $_FILES, 'FR', $_SESSION);//Gestion de l'affichage des information du site.
    	//Appelle des différentes template.
    	include_once ('./template/header.vue.php');
    	include_once ('./template/contenu.vue.php');	
    	include_once ('./template/footer.vue.php'); 
    	// print $_SESSION['client'];
    ?>
    Voilà un morceau de la class FrontController :

    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
    72
    73
    74
    75
    76
     
    <?php
    	class FrontController {
     
    		/**
    		 * @var String $url
    		 */
    		 private $url;
    		 /**
    		  * @var String connection
    		  */
    		 private $connection;
    		 /**
    		  * @var String connection
    		  */
    		 private $session;
    		 /**
    		  * @var String $connect
    		  */
    		 private $config;
    		 /**
    		  * @var array $request
    		  */
    		 private $request;	  
    		 /**
    		  * @var array $file
    		  */
    		 private $files;
    		 /**
    		  * @var String Message d'erreur.
    		  */
    		 private $erreur;
    		 /**
    		  * @var String Langue des données a afficher.
    		  */
    		 private $langue;
    		 /**
    		  * @var Array Eléments d'une page
    		  */
    		 private $data;
     
    		/**
    		  * Constructeur
    		  * @param String $p_url
    		  * @param array $p_request
    		  */
    		function __construct ($p_url, $p_request, $p_file=null, $p_langue, $p_session) {
    		 	//On dit au système qu'on est dans le front controller 
    			define('CONTROLLER', 'FRONT');
    			$this->url = $p_url;
    		 	$this->request = $p_request;
    			$this->langue = $p_langue;
    			$this->connection = new Bdd (DB, USER, PASS, HOST);
    			$this->session = $p_session;
    			$this->erreur = $this->is_valid ();
    			//connection, déconnexion des clients
    			if ($this->url->getParam('mod') === 'client' && $this->url->getParam('option') === 'deconnexion') { 
    				unset($_SESSION['client']);
    			}
    			//Un clietn essaie de se connecter soit en passsant par le système du compte client ou lors du paiement d'une commande, on l'identifie et on stocke l'objet contenant les infos du client dans un evariable globale qui pourra être utilisé n'importe ou dans les controllers.
    			if (($this->url->getParam('mod') === 'client' && $this->url->getParam('option') === 'connection') || (isset($this->request['email']) && isset($this->request['pass']))) {
    				global $client;
    				$client = new Client(0);
    				if ($client->connectClient ($this->request['email'], $this->request['pass'])) {
    					$_SESSION['client'] = serialize($client);
    					$GLOBALS['client'] = unserialize($_SESSION['client']);
    				}
    			}
    			//client est déjà connecté on créé une variable globale avec le contenu de l'objet client afin de pouvoir s'en servir comme on le veut dans les controll.
    			else if (session_is_registered('client')) {
    				$GLOBALS['client'] = unserialize($_SESSION['client']);
    				$GLOBALS['client']->getInfoFromId();
    			}
     
                     }
         }
    Il se passe d'autre choses bien sur en dessous, mais rien qui puisse modifier la variable de session linéarisé.

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/10/2022, 15h29
  2. Réponses: 2
    Dernier message: 24/02/2012, 10h54
  3. [AC-2003] Erreur avec le predicat UNIQUE
    Par Bonero dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/11/2011, 13h36
  4. function replace et erreur avec retour a la ligne
    Par voyageurdumonde dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 03/03/2011, 00h20
  5. Gestion d'erreur avec la ligne incriminée
    Par sechanbask dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/12/2007, 19h16

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