Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 19 utilisateurs en ligne, consultez le détail
Auteur Message
zephyroth
#0 Message posté le : 01-05-2009 à 21:26:49


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 13-07-2005
Nombre de messages : 210
Bonsoir,

Je code actuellement une application en objective-C qui envoie des données (méthode POST) vers une page php de mon serveur.

J'aimerais afficher la page résultante mais je ne veux pas l'intégrer via une web view dans mon application.

J'ai donc procédé comme suit:

- Envoi des informations vers la page php
- Ouverture d'une session
- Traitement des données (création des variables de session ... etc)
- Récupération de l'id de session
- Enregistrement des variables de sessions dans un fichier sess.id (remarquez le point pour éviter que ce fichier ne soit écrasé automatiquement)
- Retourne l'adresse de la page à ouvrir comme suit : http:/myhost.com/maPage.php?id=xxxxxxxxxxxxx

Mon application ouvre ensuite cette URL via openURL.

Sur cette nouvelle page, l'id de session est fixé via l'id entré dans l'url et les données de session sont chargées à partir du fichier précédemment enrigistré.

Le hic c'est que toutes les variables de sessions sont bonnes exceptée une seule ... qui est pourtant bien présente dans le fichier de sauvegarde de la session.

En fait, le fichier de sauvegarde contient dans l'ordre:

- des variables de types string (qui sont ok)
- une variable de type array (qui est ok)
- une variable de type array (celle qui déconne)
- d'autres variables (qui sont ok)

J'ai supprimé le premier tableau qui est bien chargé ---> la variable qui déconne est reconnue
Si je place le premier tableau qui est bien chargé à la suite de la variable non reconnue ---> c'est ce tableau qui n'est pas reconnue

Bref j'en perds mon latin.

Voici le code utilisé pour écrire le fichier de sauvegarde:


$session_data = session_encode();

session_write_close();

$filehandle = fopen ("../sessions/sess.".session_id(), 'w+'); 

fwrite ($filehandle, $session_data);

fclose ($filehandle);



Et le code pour le lire:

$filehandle = fopen ("../sessions/sess.".session_id(), 'r'); 

$sessiondata = fread ($filehandle, 4096);

fclose ($filehandle);

session_decode($sessiondata);



SI vous avez des suggestions ...

--Message édité par zephyroth le 01-05-2009 à 21:39:07--
zephyroth
#1 Message posté le : 02-05-2009 à 21:49:22


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 13-07-2005
Nombre de messages : 210
je dois être complètement abruti c'est pas possible ...

$sessiondata = fread ($filehandle, 4096);

Quand la quantité de données à récupérer est supérieure, forcément certaines données passent à l'as ...

Si j'étais pas moi j'me fouterais de ma gueule !
TrizoLakai
#2 Message posté le : 03-05-2009 à 10:02:15


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 18-11-2007
Nombre de messages : 95
Tu fais comment pour savoir la taille en octet de ce que tu devras lire du coup ?
zephyroth
#3 Message posté le : 03-05-2009 à 11:24:09


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 13-07-2005
Nombre de messages : 210
Supposes que tu veuilles lire ce fichier ../sessions/maSession.txt:


$fichier = "../sessions/maSession.txt";

$filehandle = fopen($fichier, "r");

$contenuFichier = fread($filehandle, filesize($fichier));



En ce qui me concerne j'avais fixé cette taille pour une raison qui m'échappe.
En même temps j'avais plus touché ce fichier depuis un bail donc forcément quand on commente pas bien son code ...
TrizoLakai
#4 Message posté le : 03-05-2009 à 12:26:50


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 18-11-2007
Nombre de messages : 95
Ok merci