Visualizzazione risultati 1 fino 9 di 9

Discussione: Problema script php inserimento in DB MySql

  1. #1
    Guest

    Predefinito Problema script php inserimento in DB MySql

    Salve, ho configurato il mio account su Altervista con un Database di classe 2.
    Sono riuscito a fare un import di un dump per avere una tabella uguale a quella che uso nel mio DB locale sul PC e tutto ok.
    Il problema è nato nel momento in cui ho cercato di replicare una cosa funzionante sul mio PC locale sul mio account Altervista.
    In pratica si tratta di lanciare da browser una pagina php con metodo GET.
    Tra i parametri gli passo il valore che voglio la pagina php prenda e inserisca sul DB sottostante.
    Non capisco perchè, ma mentre questa integrazione funziona perferttamente sul mio pc, proprio non funziona, pur non restituendo errore, sullo script che ho in altervista.
    Di seguito lo script:

    Codice:
    <?php
    echo ("provaPhpInsertValue.php indicator");
    
    require "configure.php";
    require "../../class/class.mysql.php";
    require "lib.contoonline.php";
    
    //Connect to database
    $con = mysql_connect("localhost", "nigroengineering", "");
    if(!$con)
    	{
    	die('Could not connect: ' .mysql_error());
    	}
    mysql_select_db("my_nigroengineering", $con);
    
    mysql_query("INSERT INTO FirstTableSoap(id,name,loggingLevel,startPassword,rpcStartEnabled,sourceID,destinationID,sourceData,destinationData,mailHost,recipientAddress,startTime,endTime,lastStatus,duration,lastUser) 		VALUES ('','$name',11,'Password',1,'provaSOurce','provaDestination',22,33,'primaMailHost','primoRecipient','','','primoStatus',99,'primoUSer')");
    mysql_close($con);
    echo ("Dopo connessione");
    
    ?>
    Ripeto. lo script non mi esce con errore di connessione come mi aspetterei se ci fossero problemi di connessione, ma semplicemente non inserisce sul DB come dovrebbe.
    Lo stesso script girando sulla mia applicazione XAMPP locale funziona perferttamente, anzi, li' addirittura l'ho fatto funzionare facendo uso di un'integrazione SoAP web services.
    Grazie a chiunque mi possa dare indicazioni.
    Saluti

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Se quello è tutto lo script allora direi che non hai considerato il fatto che su Altervista non è attivo il register globals. E direi per fortuna perché il tuo script ha un grave problema di sicurezza.

    I dati passati via get devi prenderli dalla variabile globale $_GET.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Ciao saitfainder e grazie anzitutto.
    In realtà quello che ho postato è solo la parte piu' esemplificativa della connessione.
    Il passaggio con la $_GET c'è e quella parte di script è la seguente:

    Codice:
    $name = $_GET['name'];
    
    $con = mysql_connect("localhost", "nigroengineering", "");
    if(!$con)
    	{
    	die('Could not connect: ' .mysql_error());
    	}
    mysql_select_db("my_nigroengineering", $con);
    
    mysql_query("INSERT INTO FirstTableSoap(id,name,loggingLevel,startPassword,rpcStartEnabled,sourceID,destinationID,sourceData,destinationData,mailHost,recipientAddress,startTime,endTime,lastStatus,duration,lastUser) 		VALUES ('','$name',11,'Password',1,'provaSOurce','provaDestination',22,33,'primaMailHost','primoRecipient','','','primoStatus',99,'primoUSer')");
    mysql_close($con);
    echo ("Dopo connessione");
    Purtuttavia comunque non funziona e non riesco a inserire nel DB.
    Dipende sempre dal fatto che non è attivo il register globals?
    In tal caso, non è che avresti suggerimenti su come potrei realizzare l'integrazione in altro modo?

    Come ho scritto all'inizio, io ho la necessità di inviare su un'unica riga di browser la seguente istruzione:
    http://nigroengineering.altervista.o...maRigaInserita.

    In realtà, è un pezzo di una istruzione che viene inviata da un microcontrollore Arduino con la seguente istruzione in linguaggio C-like:

    client.println("GET nigroengineering.altervista.org/test/soap/server/provaPhpInsertValue.php?name=primaRigaInserita


    Per darti un quadro della situazione, il codice che gira sul microcontrollore che è collegato direttamente in rete con un suo indirizzo IP, controlla varie periferiche di un impianto e tramite quella chiamata esemplificativa, inserisce il valore rilevato su DB MySql tramite codice PHP.

    In realtà il tutto gira e anche benino direi, sotto SOAP web service e cercavo una soluzione di hosting per cominciare a testarlo direttamente su Web.
    Purtroppo ho letto che le SOAP extensions sono disattivate su Altervista e non mi è venuto in mente niente di meglio che cercare di farlo passare con una chiamata a una pagina php che recuperi il parametro e faccia l'inserimento.
    Di nuovo, in locale sul mio XAMPP, funziona tutto, ma non va su Altervista.


    Ti ringrazio anticipatamente per ogni tua indicazione in merito,
    Gerry

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Purtroppo quando si danno informazioni incomplete si ottengono risposte incomplete.

    Il codice sembra corretto. Proverei a controllare l'esito della query di insert tramite mysql_errno() e mysql_error().


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    Guest

    Predefinito

    Ciao saitfinder, ho eseguito un controllo dopo ogni istruzione mysql come mi avevi suggerito e ho scoperto il problema.
    La questione è che il db su altervista è key sensitive, mentre sul mio locale questo problema non emergeva.
    Sono dunque riuscito finalmente a completare l'inserimento dati tramite il passaggio parametro direttamente dal browser con il seguente codice che ha funzionato bene:

    Codice:
    <?php
    echo ("provaPhpInsertValue.php indicator");
    
    require "configure.php";
    require "../../class/class.mysql.php";
    require "lib.contoonline.php";
    
    $name = $_GET['name'];
    //Connect to database
    echo ("name: $name");
    
    //Connect to database
    $con = mysql_connect("localhost", "nigroengineering", "");
    if(!$con)
    	{
    	die('Could not connect: ' .mysql_error());
    	}
    mysql_select_db("my_nigroengineering", $con);
    echo mysql_errno($con) . ": " . mysql_error($con). "\n";
    
    mysql_query("INSERT INTO firsttablesoap(id,name,loggingLevel,startPassword,rpcStartEnabled,sourceID,destinationID,sourceData,destinationData,mailHost,recipientAddress,startTime,endTime,lastStatus,duration,lastUser) 		VALUES ('','$name',11,'Password',1,'provaSOurce','provaDestination',22,33,'primaMailHost','primoRecipient','','','primoStatus',99,'primoUSer')");
    echo mysql_errno($con) . ": " . mysql_error($con). "\n";
    mysql_close($con);
    echo ("Dopo connessione");
    
    ?>
    A questo punto ho provato a far girare il codice sulla scheda Arduino e purtroppo li' prendo ancora picche.
    Il codice è il seguente ed è un C-like.
    Ti premetto che verso il mio web server locale Apache funziona tutto.
    Sicuramente tu hai più confidenza con simili problematiche Php su Altervista quindi potresti avere la chiave di lettura giusta, per così dire


    Codice:
    #include <SPI.h>
    #include <Ethernet.h>
    
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    
    byte ip[] = { 192, 168, 1, 102 }; //assigned arduino LAN IP address
    byte server[] = { 178, 63, 78, 3 };
    Client client(server, 80); //apache Altervista web server running on port 80
    
    void setup()
    {
      //Ethernet.begin(mac, ip, subnet);
      Ethernet.begin(mac, ip);
      Serial.begin(9600);
      Serial.println("starting simple arduino client test");
      Serial.println();
    
      delay(1000);
    
      Serial.println("connecting...");
    
      if (client.connect()) {
        Serial.println("connected");
        client.println("GET /test/soap/server/provaPhpInsertValue.php?name=nuovaRigaInserita HTTP/1.1"); //text file in altervista  htdocs folder - questa è la riga che effettuerebbe l'invocazione della pagina php    client.println();
      } else {
        Serial.println("connection failed");
      }
    }
    Praticamente il dispositivo NON SI CONNETTE ed esce con "connection failed", ossia alla GET non ci arriva proprio.
    Hai mica qualche idea a riguardo?
    Ti ripeto che sulla mia installazione locale di Apache Web Server tutto va a buon fine, quindi non so proprio che pesci pigliare

    La mia installazione locale restituisce, tra gli altri, i seguenti valori da phpinfo(), casomai ti possano essere utili.

    SERVER_NAME localhost
    SERVER_ADDR 127.0.0.1
    SERVER_PORT 80
    REMOTE_ADDR 127.0.0.1
    DOCUMENT_ROOT C:/XAMPP/xampp/htdocs
    SERVER_ADMIN postmaster@localhost
    SCRIPT_FILENAME C:/XAMPP/xampp/htdocs/infoPhp.php

    e il mio portale locale sta tutto nella /htdocs come da default di Apache Web server.

    Grazie di nuovo,
    Gerry

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Non devi collegarsi all'IP, ma al nome dell'host. Quindi nel tuo caso a nigroengineering.altervista.org. Nel caso la libreria non supporti questa modalità devi comunque trovare il modo di infilare un header del stipo "Host: nigroengineering.altervista.org" nella richiesta.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    Guest

    Predefinito

    Ok saitfainder,
    pare che ce l'abbia fatta, sono riuscito a inserire i primi record inviati direttamente dalla mia scheda Arduino.
    Di seguito uno stralcio del codice scritto.
    Grazie per le tue preziose indicazioni

    Codice:
     if (client.connect()) {
        Serial.println("connected");
    
        //Andiamo su Altervista
        client.println("GET /test/soap/server/provaPhpInsertValue.php?name=primoInserimentoSerio HTTP/1.1"); //Andiamo su Altervista
        client.println("Host: nigroengineering.altervista.org");//Andiamo su Altervista
        client.println("\r\n");//Andiamo su Altervista
        //Fine Andiamo su Altervista
    
        client.println();
      } else {
        Serial.println("connection failed");
      }

  8. #8
    magliani non è connesso Neofita
    Data registrazione
    06-10-2008
    Messaggi
    1

    Predefinito

    Ho un problema simile.
    Leggo i dati da un sensore collegato ad un microprocessore Intel Galileo (Arduino based) e li invio ad una pagina web su Altervista, che li interpreta e aggiorna il database. Dopo la prima richiesta gestita correttamente, la connessione al server fallisce sempre.
    E' un problema relativo alla gestione della connessione ai server di Altervista?
    A cosa può essere dovuto?

  9. #9
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Magliani: questa è una discussione di tre anni fa, aprine una nuova riportando le porzioni di codice significative.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •