2010-05-05 8 views
0

Fondamentalement, je déteste un site Web satellite qui comprend form.php à partir d'un serveur entièrement différent.PHP http ne pas enregistrer les sessions

<?php 
    include("http://blah.com/form.php"); 
?> 

Le form.php sur les autres charges sessions classes et toutes sortes d'autres choses et génère une forme dynamique basée sur une tonne de données MySQL. Sans importance. Mon problème est que lorsque le formulaire est appelé, je commence aussi une session. Pourtant, le serveur distant n'est jamais visité par le client. La séance ce qui reste. Chaque fois que la page est actualisée, l'ancienne session est vidée.

La raison complète de ceci est que je dois retourner les erreurs de validation au formulaire original et les afficher. (Il est un tableau de choses comme « nom d'abord est un champ obligatoire »)

Le code sur le serveur principal ressemble à quelque chose comme ça ...

<?php 
    include("config.php"); // This is loading the config file with the session_start() 
    Process($id) { 
     // Do a bunch of form processing and store errors in $this->errors 
     $_SESSION['errors'] = $this->errors; 
    } 

    ShowForm($id) { 
     // This loads the form and everything. 
     echo '<div id="errors">'.print_r($_SESSION['errors']).'</div>'; // This is what is returning nothing on the other page. 
    } 
?> 

Donc, fondamentalement, ce script est appelé à partir du site distant , mais les sessions ne seront pas sauvegardées et seront sauvegardées lors de l'actualisation ... Je suppose que c'est parce que le serveur principal d'actualy n'est jamais chargé dans le navigateur des utilisateurs.

Est-ce que quelqu'un sait un moyen de contourner ce/un moyen de résoudre ce problème? Ou peut-être une solution différente? Tout fonctionne.

Merci

+0

Avez-vous appelé session_start() avant l'inclure? Ou la session a-t-elle démarré à l'intérieur de la télécommande? –

+0

Oui bien sûr. Le $ _SESSION global est en cours de définition, mais son empty et session_id retourne l'identifiant mais il change à chaque redémarrage. – sct

+0

err. refresh * ne redémarre pas, lol. – sct

Répondre

0

c'est en effet conception terrible.

include("http://blah.com/form.php?var=1&error=First%20name%20is%20a%20required%20field"); 

vous devez penser à XMLRPC ou d'une autre manière civilisée de l'échange de données

+0

Bleh ouais c'est mais pour le projet est à peu près nécessaire. Je veux prendre autant de travail que possible des mains des affiliés quand ils établissent un formulaire de plomb si vous obtenez ce que je veux dire. Nous mettons en place la campagne, leur donnons un compte, et le reste est pris en charge. J'essayais d'éviter un GET xD – sct

+0

@sct mieux essayer de réaliser ce que le protocole HTTP est et comment cela fonctionne. il vous fera économiser des heures de trouver une solution inexistante –

+0

Okay. Je vais regarder en ce moment. Merci. – sct