Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VPS Aruba] Query funziona in locale ma non in remoto: come risolvere?

    Sto letteralmente diventando pazzo...

    Ho creato un sito web in locale su XAMPP Lite 1.7.3 per Windows a 32bit ed ora sto tentando disperatamente di farlo funzionare su una VPS di Aruba.

    In locale funziona perfettamente e tutte le query (SELECT, INSERT, UPDATE e DALATE) riescono senza alcun errore.
    In remoto funzionano solo le SELECT, mentre gli altri manipolatori danno tutti una interruzione nella stampa del messaggio di conferma dell'avvenuta operazione.

    Ho testato il sito su una VPS di Colt Engine e funziona perfettamente e quindi il problema si presenta solo sulla VPS di Aruba.

    La VPS in questione è ovviamente una LAMP interfacciata con Plesk 8.3.0; viene fornita con MySQL 5.0.22 ed è installato PHP 5.1.6. Il sito è stato realizzato invece con PHP 5.3.1 e MySQL 5.1.41: lo segnalo perché temo che possa essere questo il problema, ma non so come posso adattare il codice.

    Aggiungo che sto facendo le INSERT tramite una funzione comune a tutto il sito, per semplificarmi un po' il lavoro. Di seguito inserisco il codice della funzione:

    codice:
    public function inserisci($t,$v,$r = null)
        {
             if(isset($this->attiva))
              {
    			$istruzione = 'INSERT INTO '.$t;
                if($r != null)
                {
                    $istruzione .= ' ('.$r.')';
                }
    
                for($i = 0; $i < count($v); $i++)
                {
                    if(is_string($v[$i]))
                        $v[$i] = '"'.$v[$i].'"';
                }
                $v = implode(',',$v);
                
                $istruzione .= ' VALUES ('.$v.')';
    
                $query = mysql_query($istruzione) or die (mysql_error());
    
                }else{
                    return false;
                }
            }
    Mentre il modulo è costituito da questo piccolo listato:

    codice:
    <?php
        session_start();
        include "themes/default/top.php";
    ?>
    <h1>Aggiungi Servizio:</h1>
    
    <?php
        // valorizzazione delle variabili con i parametri dal form
        if(isset($_POST['submit'])&&($_POST['submit']=="Salva")){
    
            if(isset($_POST['idservizio'])){
                $idservizio = addslashes(filter_var($_POST['idservizio'], FILTER_SANITIZE_STRING));
            }
            if(isset($_POST['importoda'])){
                $importoda = addslashes(filter_var($_POST['importoda'], FILTER_SANITIZE_STRING));
            }
            if(isset($_POST['importoa'])){
                $importoa = addslashes(filter_var($_POST['importoa'], FILTER_SANITIZE_STRING));
            }
            if(isset($_POST['descrizione'])){
                $descrizione = addslashes(filter_var($_POST['descrizione'], FILTER_SANITIZE_STRING));
            }
    
            //connessione col database
            include '/includes/connect.php';
    
            $t = "xxx_archivio_servizi"; //nome della tabella
            $v = array($idservizio,$importoda,$importoa,$descrizione); //valori da inserire
            $r = "XXX_Codice_Servizio,XXX_Importo_Da,XXX_Importo_A,XXX_Note"; //campi da riempire
    
            // chiamata alla funzione per l'inserimento dei dati
            $data->inserisci($t,$v,$r);
                echo "Servizio inserito con successo.";
            // disconnessione
            $data->disconnetti();
    
            } else {
    
        ?>
        
    <div align="left">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="servizi">
      <table border="0" cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td>Codice Servizio</td>
            <td></td>
            <td><input name="idservizio"></td>
          </tr>
          <tr>
            <td>Importo da</td>
            <td></td>
            <td>&euro; <input name="importoda"></td>
          </tr>
          <tr>
            <td>Importo a</td>
            <td></td>
            <td>&euro; <input name="importoa"></td>
          </tr>
          <tr>
            <td>Descrizione</td>
            <td></td>
            <td><textarea cols="50" rows="6"
     name="descrizione"></textarea></td>
          </tr>
        </tbody>
      </table>
      <input name="submit" value="Salva" type="submit">
    
    </form>
    </div>
    <?php } ?>
    <?php
        include "themes/default/bottom.php";
    ?>
    La form, se ha successo, ricarica la pagina mostrando il messaggio "Servizio inserito con successo.".
    Nel mio caso, invece, ricarica la pagina, ma la stampa a monitor si ferma dopo il tag </h1>.

    Dove caspita sto sbagliando?

    Aiutatemi perché sono ormai arrivato ad ...

    PS: su consiglio di un amico ho modificato il modulo PHP della VPS Aruba da Apache Handler al modulo CGI, ma non è cambiato assolutamente nulla...

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Che casotto ...

    Innanzitutto ti sconsiglio vivamente di utilizzare questo approccio perche' ti incasini solo la vita.
    E se un utente pigia F5 sulla pagina ? Submitta costantemente il form e ti spamma il db.

    quindi consiglio di :
    1 separare
    2 semplificare


    1) separa il form (view) dalle operazioni di salvataggio dati(controller) e dalle strutture dati(model)
    2) risolvi 1 problema alla volta nei vari elementi che vai a separare al punto 1

    quindi :

    a) crei il file html con il form e la action di submit
    b) crei lo script per gestire i dati con le necessarie protezioni
    c) inserisci il codice nello script e un gestisci la terminazione con redirect + codice di uscita in get o session o dove ti pare
    d) crei la pagina di uscita dove gestire la terminazione della procedura.

    Evita quindi di mescolare troppo codice PHP e HTML.
    Inserisci i var_dump($variabile) necessari a capire lo stato delle var nelle porzioni di codice che reputi problematiche o che nn sai a priori cosa stanno gestendo
    e per l'amor d'iddio evita di fare

    if{ ?>
    codice html <?
    }

    Che diventi scemo a capire cosa succede, piuttosto forgiati una stringa in testa a lla pagina e poi la stampi direttamente nell'html altrimenti esci pazzo a debuggare infatti se noti ti manca la chiusura dell'else ( o non l'ho vista in quel marasma )

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.