• User

    codice php fra due server

    Ciao a tutti,
    mi sono appena registrata, ma navigo sul vostro sito da 3 giorni.
    E' bellissimo, complimenti. Siete proprio una bella "famiglia"....

    Ho un problema che mi assilla da parecchio tempo.
    Ho realizzato un programma in php per un sito web, con le classiche query (inserimento, modifica, eliminazione e ricerca).
    Fin qui tutto bene...
    Il problema consiste nel fatto che ho la necessità di far girare il codice su un server e le pagine web che mostrano l'output su un altro server.

    Vedrò di spiegarmi meglio:
    Ho due domini, www.sitoA e www.sitoB, entrambi risiedono sullo stesso server (aruba).

    Sul sitoA risiede il file A.php, che contiene al suo interno la richiesta

    require_once(conn.php); (che effettua la connessione al Db)

    e 3 funzioni, tra cui:

    function Nome(){
    ...
    }

    Sul sitoB risiedono il Db e la pagina.php che contiene:

    semplice html;
    l'inclusione del file A.php tramite:

    require_once("http://www.sitoA/A.php");

    e la chiamata alla funzione Nome tramite:

    <?PHP Nome(); ?>

    L'errore è:

    Fatal error: Call to undefined function: nome() in D:\Inetpub\webs\serverA\public\Xxx\public\xxx\pagina.php on line x

    che è la linea sulla quale effettuo la chiamata alla funzione.

    Le connessioni sono corrette perchè nella stessa pagina effettuo un'altra chiamata ad un altro file che risiede sempre sul serverA, ma che non contiene funzioni, bensì semplice codice.php ed in questo caso il risultato è perfetto...
    Credendo che fosse un problema di funzioni (a causa di require...non si include codice, ma output), ho eliminato le funzioni e nella prima pagina non ho avuto problemi perchè il codice effettua semplicemente una richiesta al db degli articoli contenuti in esso e li mostra.
    Il problema persiste nel momento in cui clicco su uno di essi per visualizzarne il contenuto in quanto non invia la variabile relativa a quel titolo.
    Non so' cosa possa essere perchè se metto tutto sullo stesso server (sito A) funziona e lo stesso in locale. Dev'essere un problema di comunicazione fra due server.
    Come faccio ad inviare all'altro server la variablie $_Get["titolo"] senza usare il form, ma con il semplice <a href ... ?

    Grazie e scusate se mi sono dilungata troppo!!!
    :ciauz:


  • User Attivo

    in realtà non puoi richiamare il codice di un server e eseguirlo su un altro...

    puoi semplicemente prendere l'output di un server (ecco perchè probabilmente se non usi funzioni il risultato sembra corretto)

    in sostanza (non ho mai provato ma penso proprio sia così)

    require_once("http://www.sitoA/A.php");

    questo comando ti inserisce l'output di A.php e non il codice


  • User

    @riky78 said:

    in realtà non puoi richiamare il codice di un server e eseguirlo su un altro...

    puoi semplicemente prendere l'output di un server (ecco perchè probabilmente se non usi funzioni il risultato sembra corretto)

    in sostanza (non ho mai provato ma penso proprio sia così)

    require_once("http://www.sitoA/A.php");

    questo comando ti inserisce l'output di A.php e non il codice

    infatti, ma credi sia possibile inviare in qualche modo una variabile, con il processo inverso?

    Cioè io ottengo l'output sulla pagina.php, output sotto forma di link:

    
    <a href=\"sitoB/pagina2.php?action=visualizza&titolo=" . $titolo . "\">" . ucwords&#40;$titolo&#41; . "</a> 
    
    

    All'interno di pagina2.php c'è
    require_once("http://www.sitoA/A2.php");
    A2.php contiene il seguente codice:

    
    	if&#40;!isset&#40;$_GET&#41;&#41;&#123; $_GET = $HTTP_GET_VARS; &#125;
    	if&#40;$_GET&#91;"action"&#93; && $_GET&#91;"titolo"&#93;&#41;&#123;
    
    		if&#40;$_GET&#91;"action"&#93; == "visualizza"&#41;&#123;
    			//controllo i dati
    			$query = "SELECT *
                                         FROM news
    					  WHERE titolo='" . $_GET&#91;"titolo"&#93; . "'
    					  ORDER BY titolo ASC";
    			$result = mysql_query&#40;$query&#41;;
    			
    			if &#40;!$result&#41;&#123;
    				echo "Nessun dato";
    			&#125;else&#123;
    				while &#40;$myrow = mysql_fetch_array&#40;$result&#41;&#41;&#123;
    					$id = $myrow&#91;"id"&#93;;
    					...
                                       echo "Articolo..."
                          &#125;
                    &#125;
              &#125;
    
    

  • User Attivo

    non ho capito quasi niente.....

    cmq il GET lo usi solo da una pagina che viene effettivamente chiamata ma non mi sembra quello che vuoi fare tu

    riesci a schematizzare meglio il tutto? :mmm:


  • User Attivo

    quello che vuoi fare non si può fare per via della sicurezza.

    tu dal sito A non puoi includere un file del sito B

    però puoi importare i dati e per fare questo puoi utilizzare dei webservice.

    non conosco il php e forse non ti sarò di aiuto, però magari spiegandoti come risolvere riesci a torvare una soluzione.

    In .NET il dialogo tra 2 server io lo gestisco tramite WebService questi non fanno altro che scambiari informazioni sotto forma di SOAP se la vogliamo fare più semplice XML.

    Quindi se trovi la maniera di realizzare una cosa simile, tu dal sito tramite un webservice generi i risultati ovvero la rappresentazione dei tuoi dati presi dal db


  • User

    3 pagine sul serverB che includono script php, generati da 3 file.php che risiedono sul serverA.
    Le pagine del serverB, includono i file tramite:
    require_once("serverA/file.php");

    e questo è ciò che dovrebbero fare:

    pag1.php mostra gli autori presenti nel Db e li rende link generando la var $autore, in modo da poter visualizzare i relativi titoli:

    
    <a href=\"serverB/pag2.php?action=visualizza&autore=" . $autore . "\">" . ucwords&#40;$autore&#41; . "</a>
    
    

    pag2.php mostra i titoli secondo l'autore selezionato:

    
    if&#40;!isset&#40;$_GET&#41;&#41;&#123; $_GET = $HTTP_GET_VARS; &#125; 
       if&#40;$_GET&#91;"action"&#93; && $_GET&#91;"titolo"&#93;&#41;&#123; 
    
          if&#40;$_GET&#91;"action"&#93; == "visualizza"&#41;&#123; 
             //seleziono i titoli
             $query = "SELECT titolo
    FROM table
    WHERE autore = '". $_GET"autore"&#93; ."';
    ...
    //mostro i titoli dell'autore $autore
    
    

    pag3.php mostra i dettagli del titolo. Stessa modalità impiegata per visualizzare i titoli secondo l'autore.

    Se tutto risiedesse sullo stesso server, non ci sarebbe problema perchè lo script funziona bene.
    Il problema nasce dal fatto che le 3 pag sopra elencate risiedono su un server ed i codici a cui fanno riferimento su un altro.

    La prima pagina: pag1.php funziona perche il suo script consiste in una query di selezione che mostra il risultato. Non ci sono condizioni e non deve verificare l'esistenza di alcuna variabile prima di agire.
    Gli altri due script invece devono mostrare i risultati in base alle variabili $autore e $ titolo che ricevono. Ed è qui che non ne vengo più a capo.
    Mi chiedo se è possibile.


  • User Attivo

    scusa se intervengo ancora, ma non fai prima a rifarti quelle pagine nel sito B?


  • User

    @Daniele80 said:

    scusa se intervengo ancora, ma non fai prima a rifarti quelle pagine nel sito B?

    Eh magari non avrei perso tutto questo tempo!!!
    Devo per forza farlo così....

    😞


  • User

    Daniele è sempre attuabile il WebService di cui parlavi?

    Però non ne capisco niente!!!
    Dove trovo qualcosa a riguardo?


  • User Attivo

    guarda il webservice in .net è facilissimo da fare e da consumare.

    butta un'occhio a questi 2 link

    http://www.devx.com/webdev/Article/22338/0/page/1

    http://webservices.devchannel.org/webserviceschannel/04/02/11/1432220.shtml?tid=47&tid=51&tid=54