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>€ <input name="importoda"></td>
</tr>
<tr>
<td>Importo a</td>
<td></td>
<td>€ <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...