Dati form su file txt via PHP
Salve, ho bisogno di inviare dei dati (4 stringhe) prelevati da un form ad una pagina in php che crei e tenga aggiornato l'elenco dei dati in una pagina txt.
Ho provato innumerevoli soluzioni e nessuna ha funzionato, il form invia alla pagina php la richiesta e crea una pagina txt completamente bianca o tutt'al più php mi segnala un errore.
Sarei grato se poteste darmi una dritta.
nella pagina html il cuore del form è questo:
---------------------------------------------------------------------------------------------------------------------------------
Codice HTML:
<form name="modulo" action="http://www.[I][B].......(pagina omessa)[/B][/I]" method="post">
<table>
<tr>
<td>voce1:</td><td><input type="text" name="voce1" size="35"></td>
</tr>
<tr>
<td>voce2:</td><td><input type="text" name="voce2" size="10"></td>
</tr>
<tr>
<td>voce3:</td><td><input type="text" name="voce3" size="10"></td>
</tr>
<tr>
<td>voce4:</td><td><input type="text" name="voce4" size="35"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Invia dati"></td>
</tr>
</table>
</form>
---------------------------------------------------------------------------------------------------------------------------------
nel file php ho scritto così:
---------------------------------------------------------------------------------------------------------------------------------
Codice PHP:
<?php
// nome del file in cui inserire i testi
$file = "./filetesti.txt";
// apre il file in modalità "append", se non esiste lo crea
$fp = fopen($file, "a");
// inserisce i valori ricevuti dal form in coda al file
fputs($fp, htmlspecialchars($_POST["voce1"]) . " " . htmlspecialchars($_POST["voce2"]) . htmlspecialchars($_POST["voce3"]) . " " . htmlspecialchars($_POST["voce4"]) . "\r\n");
// chiude il file
fclose($fp);
?>
<font size="5">Fatto</font>
---------------------------------------------------------------------------------------------------------------------------------
la risposta è "Fatto", crea il file di testo ma è completamente bianco.
Qualcuno mi può aiutare?
Grazie
Piccolo aggiornamento:
La riga dove ho scritto in php """ $fp = fopen($file, "a"); """ l'ho modificata così: """ $fp = fopen($file, 'a'); """ ma ancora niente.
Problema risolto, rispondo alla curiosità e posto un SECONDO PROBLEMA!!!!!
Codice HTML:
<p class="ct">
Benvenuto bla bla bla<br><br>
<table>
<tr>
<td>
<form action="http://sito/ve/xxxxx.txt" target="_top">
<input type="submit"value="leggi il file ">
</form>
</td>
<td>
<form action="http://sito/ve/yyyy.txt" target="_top">
<input type="submit"value="leggi il file">
</form>
</td>
<td>
<form action="http://fsito/ve/zzzzz.htm" target="_top">
<input type="submit"value="Pagina">
</form>
</td>
<td>
<form action="http://paginalocale" target="_top"><input type="submit"value="Torna al cccc">
</form>
</td>
</tr>
</table>
<hr color="blue">
<p class="titolo1sinistro">titolo</p>
<center>
<form name="modulo" action="pagina.php" method="post">
<table>
<tr>
<td>voce1:</td><td><select name="voce1">
<option selected> [I]ELENCO[/I] </option>
</select>
</td>
</tr>
<tr>
<td>voce2:</td><td><input type="text" name="voce2" size="10"maxlength"10" autocomplete="off"></td>
</tr>
<tr>
<td>voce3:</td><td><input type="text" name="voce3" size="10" maxlength="8" autocomplete="off"></td>
</tr>
<tr>
<td>voce4:</td><td>[I]VOCE4[/I]</td><td><input type="hidden" name="voce4" value="[I]VOCE4[/I]"></td>
</tr>
<tr>
<td align="center"> <td><input type="submit" value="Invia dati"></td>
</tr>
</table>
</form>
<!-- ...continua -->
E questo è in HTML
---------------------------------------------------------
Codice PHP:
<script language="JavaScript">
<!--
data = new Date();
ora =data.getHours();
minuti=data.getMinutes();
secondi=data.getSeconds();
mese = data.getMonth();
date= data.getDate();
year= data.getYear();
if(minuti< 10)minuti="0"+minuti;
if(secondi< 10)secondi="0"+secondi;
if(year<1900)year=year+1900;
if(ora<10)ora="0"+ora;
if(mese == 0) mese = "Gennaio ";
if(mese ==1) mese = "Febbraio ";
if(mese ==2) mese = "Marzo ";
if(mese ==3) mese = "Aprile ";
if(mese ==4) mese = "Maggio ";
if(mese ==5) mese = "Giugno ";
if(mese ==6) mese = "Luglio ";
if(mese ==7) mese = "Agosto ";
if(mese ==8) mese = "Settembre ";
if(mese ==9) mese = "Ottobre ";
if(mese ==10) mese = "Novembre ";
if(mese ==11) mese = "Dicembre";
document.write("Inviato il "+date+" "+mese+" "+year+" - ora "+ora+":"+minuti+":"+secondi);
//-->
</script>
<br>
<?php
error_reporting(E_ALL);
// file in cui scrivere
$file = "targhe.txt";
/* contiene il testo da scrivere nel file: voce1 voce2 ... voce4
* ferma l'esecuzione nel caso un campo voce i-esimo non sia definito
*/
$contenuto = "";
for($i = 1; $i <= 4; $i++) {
$voce = 'voce' . $i;
isset($_POST[$voce]) || die("Attenzione, il campo $voce non è stato inviato.");
$contenuto .= htmlspecialchars($_POST[$voce]) . " \t ";
}
// concatena il carattere di line feed (ritorno a capo: \n)
$contenuto .= PHP_EOL;
// ora scrivi sul file, ma controlla se ci sono stati errori:
if ( ($result = file_put_contents($file, $contenuto, FILE_APPEND | LOCK_EX)) === false ) {
echo "Errore: impossibile scrivere sul file $file.";
} else {
echo "Successo. Scritti $result byte ( di " . strlen($contenuto) . " ). \r\n. Dati inviati: $contenuto";
}
?>
Questa invece è la pagina php sul sito
----------------------------------------------------
funziona solo se le due pagine operano sul server, comunque questo problema è risolto in questo modo, ora avrei un secondo dilemma.
Come vedete alla pagina php ho aggiunto uno script javascript che mostra nella risposta data e ora di invio del modulo, qualcuno può spiegarmi come posso inviare la medesima informazione sul file txt di destinazione? Magari come una voce5 che viaggia hidden?
Grazie ancora a tutti.