Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2008, 15h47   #1
Membre à l'essai
 
Avatar de erehcab
 
Inscription : avril 2007
Messages : 193
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 193
Points : 23
Points : 23
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.
erehcab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 16h48   #2
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 51
Points : 39
Points : 39
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 ).
oOSebOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2008, 18h06   #3
Membre à l'essai
 
Avatar de erehcab
 
Inscription : avril 2007
Messages : 193
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 193
Points : 23
Points : 23
salut, les donnés proviennent d'une variable de session
erehcab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2008, 22h42   #4
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 51
Points : 39
Points : 39
t'as vérifie la tete de tes données avant de chercher a les deserialiser ?
oOSebOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2008, 22h54   #5
Membre à l'essai
 
Avatar de erehcab
 
Inscription : avril 2007
Messages : 193
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 193
Points : 23
Points : 23
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é ..
erehcab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2008, 22h57   #6
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 51
Points : 39
Points : 39
Tu aurais la page de code ou tu fais la désérialisation ?
oOSebOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2008, 23h27   #7
Membre à l'essai
 
Avatar de erehcab
 
Inscription : avril 2007
Messages : 193
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 193
Points : 23
Points : 23
Ca c'est l'index :

Code :
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 :
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é.
erehcab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web