- Home
- Categorie
- Coding e Sistemistica
- Coding
- Form con dati troppo lunghi
-
Form con dati troppo lunghi
Salve a tutti.
Sto facendo uno script per poter scrivere su file di testo tramite form.
il mio script va abbastanza bene.... l'unico problema me lo da quando nel form inserisco dati troppo lunghi.
In pratica quando clicco sul pulsante "invia" non mi fa niente e i form rimangono li. Se però i miei dati non sono relativamente lunghi.... non ho problemi.
Come faccio? ve lo postoindex.html :
<html>
<head>
<title>Pannello di controllo</title>
<link rel="stylesheet" href="../stile.css" type="text/css">
</head>
<body>
<center>
<table width=600>
<tr><td align="center" background="../sfondo.jpg"><font color="#ffffff" size="5"><b>:: PANNELLO DI CONTROLLO ::</b></font></td></tr>
<tr><td>
<form method=get action="verifica.php">
<br><b>TITOLO</b><br>
<input type="text" name="titolo" size="40">
<br><b><i>Anteprima</i></b><br>
<input type="text" name="anteprima" size="80">
<p>Editoriale<br>
<textarea name="articolo" rows="15" cols="80"></textarea> </p>
<br>Immagine<br>
<input type="text" name="immagine" size="20">
<br>
<input type="submit" value="Invia">
<input type="reset" value="Cancella">
</form>
</dt></tr>
<tr><td><center>:: <a href="../admin/prova.html">Home</a> ::</center></td></tr>
<tr><td height="10" width="400" bgcolor="#cccccc"> </td></tr>
</table>
</body>
</html>verifica.php :
<?php
echo "<center>";
echo "Ciao ecco i risultati del tuo inserimento:";
$errore= false;
If((!$_GET['titolo']) || (!$_GET['anteprima']) || (!$_GET['articolo']) || (!$_GET['immagine'])) {
#controllo che nessun campo sia vuoto
$errore=true;
echo "Non hai compilato tutti i campi <a href="uno.html">torna indietro</a>";
exit;
}
else {
$_GET['titolo'] = stripslashes($_GET['titolo']);
$_GET['anteprima'] = stripslashes($_GET['anteprima']);
$_GET['articolo'] = stripslashes($_GET['articolo']);
$_GET['titolo'] = str_replace("\n", "<br>", $_GET['titolo']);
$_GET['anteprima'] = str_replace("\n", "<br>", $_GET['anteprima']);
$_GET['articolo'] = str_replace("\n", "<br>", $_GET['articolo']);
}
che il file sia accessibile
if (!$apri = fopen ("file.txt","a+")) {
$errore=true;
echo "non posso aprire il file";
}else{
$apriw = fopen ("file.txt","a+");Sul file scrivo titolo e vado a capo,l'anteprima e vado a capo
l'articolo e vado a capo e il nome dell'immagine
fputs($apriw,$_GET['titolo']."\n");
fputs($apriw,$_GET['anteprima']."\n");
fputs($apriw,$_GET['articolo']."\n");
fputs($apriw,$_GET['immagine']."\n");
#chiudo il file
fclose($apriw);
}
#se c'e l'errore mi dice di inserirli di nuovo altrimenti mi fa leggere gli annunci
if($errore){
echo"<br> Riinseriscili per favore<br>";
}
else{
echo "<br> <a href="news.php">leggi gli annunci</a>";
}
?>news.php :
<?php
echo "Ecco i vostri annunci<br>";
if (!$apri = fopen("file.txt","r")){
echo "Non posso aprire il file";
}else{
#Se il file si può leggere allora con un ciclo whileleggo tutte le righe del mio file
while(!feof($apri)){
#memorizza gli annunci in leggo che adesso è un vettore
$leggo["titolo"][] = fgets($apri,4096);
$leggo["anteprima"][] = fgets($apri,4096);
$leggo["articolo"][] = fgets($apri,4096);
$leggo["immagine"][] = fgets($apri,4096);
}Conta il numero di annunci
$numero=count($leggo["titolo"])-1;
#fa il ciclo for al contrario dall'ultimo al primo
for($i=$numero-1;$i>=$numero-5;--$i)
{
echo " <table><tr><td bgcolor=#0392e0><h3><font color=#ffffff>".$leggo["titolo"]."</font></h3></td></tr>";
echo ' <tr><td><a href="annunci.php?number='.$i.'">'.$leggo["anteprima"].'</a></td></tr></table>';
}
}
fclose($apri);
?>All'inizio pensavo che il problema fosse la funzione gets che legge massimo 4096 byte.... però, appunto LEGGE!! io invece non riesco proprio a scrivere dati lunghi
-
l'array $_GET contiene le variabili con lo stesso nome dei controlli del form che ha passato i dati. Questi dati però vengono passati sulla querystring che ha una lunghezza limitata.
Quindi probabilmente il tuo problema sta proprio nel fatto che usi il metodo get per passare i dati.