- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema POSTDATA
-
problema POSTDATA
ciao a tutti, sono nuovo del forum
ho un problema con un guestbook che ho realizzato in php.
quando un visitatore invia un messaggio, esso compare immediatamente nella pagina del guestbook. però se lo stesso visitatore esegue un refresh della pagina, compare il seguente messaggio:
"la pagina che si sta cercando di vedere contiene POSTDATA, se si riinviano i dati, qualsiasi azione che hai effettuato sarà ripetuta."se il visitatore preme ok, il suo messaggio si duplica, se lo rifà si triplica, ecc...
come lo risolvo questo bug? avete qualche consiglio? (in linguaggio non troppo complesso, vi prego ... programmo da poco.. )
-
@knoxville said:
ciao a tutti, sono nuovo del forum
ho un problema con un guestbook che ho realizzato in php.
quando un visitatore invia un messaggio, esso compare immediatamente nella pagina del guestbook. però se lo stesso visitatore esegue un refresh della pagina, compare il seguente messaggio:
"la pagina che si sta cercando di vedere contiene POSTDATA, se si riinviano i dati, qualsiasi azione che hai effettuato sarà ripetuta."se il visitatore preme ok, il suo messaggio si duplica, se lo rifà si triplica, ecc...
come lo risolvo questo bug? avete qualche consiglio? (in linguaggio non troppo complesso, vi prego ... programmo da poco.. )
Dimmi come è articolato il tuo guestbook in fatto di pagine e dimmi il loro scopo... Ho capito il tuo problema ma mi devi spiegare meglio per avere una risposta soddisfacente
-
ecco le parti in php della pagina:
<?php /* Inserimento messaggio nel database */ if (trim($_POST["Nome"]) != "") { $sql = "INSERT INTO `MarinelliGuestbook` VALUES ("; $sql .= "'" . $_POST["Nome"] . "',"; $sql .= "'" . $_POST["Messaggio"] . "',"; $sql .= "'')"; mysql_query($sql) or die("**Query \"INSERT INTO\" failed**"); } /* caricamento messaggi e suddivisione in pagine */ if ($DA != 0) { $result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT $DA,50") //$result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT $DA,$A") or die("**Query failed**"); } else { $result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT 0,50") or die("**Query failed**"); } for ($i = 1; $i < $numero_pagine+1; ++$i) { $da = 0 + $a; $a = $da + 50; echo "<a href=\"http://www.carlosmarinelli.it/guestbook.php?DA=$da&A=$a\">" . $i . "</a> "; } echo "**"; if ($DA == 0) echo " da 1 a 50 "; else { echo " da " . $DA; echo " a " . $A . " "; } ?> <?php /* Stampa dei messaggi presenti nel database */ print "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" bordercolorlight=\"#910000\" bordercolordark=\"#E0E6E6\">"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "<tr>"; print "<td width=\"15%\"><font size=\"2\" face=\"Verdana\">**" . $line["Nome"] . "</font>**</td>\n"; print "<td width=\"85%\"><font size=\"2\" face=\"Verdana\">" . $line["Messaggio"] . "</font></td>\n"; print "</tr>"; } print"</table>" ?> <h2><font face="Verdana" size="3" color="#910000">Lascia un messaggio nel guestbook di Marinelli!</font></h2> <form method="POST" action="guestbook.php"> <div align="center"> <table border="0" cellpadding="2" cellspacing="0" width="80%"> <tr> <td width="23%"> **<font face="Verdana" size="2">Nome</font>**</td> <td width="77%"> <font face="Verdana" size="2"><input type="text" name="Nome" size="41"></font></td> </tr> <tr> <td width="23%"> **<font face="Verdana" size="2">Messaggio</font>**</td> <td width="77%"> <font face="Verdana" size="2"><textarea rows="3" name="Messaggio" cols="31"></textarea></font></td> </tr> <tr> <td width="23%"> </td> <td width="77%"> <p align="center"> <input type="submit" value="Invia" name="B1"> </td> </table> </div> </form>
-
@knoxville said:
ecco le parti in php della pagina:
<?php /* Inserimento messaggio nel database */ if (trim($_POST["Nome"]) != "") { $sql = "INSERT INTO `MarinelliGuestbook` VALUES ("; $sql .= "'" . $_POST["Nome"] . "',"; $sql .= "'" . $_POST["Messaggio"] . "',"; $sql .= "'')"; mysql_query($sql) or die("**Query \"INSERT INTO\" failed**"); } /* caricamento messaggi e suddivisione in pagine */ if ($DA != 0) { $result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT $DA,50") //$result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT $DA,$A") or die("**Query failed**"); } else { $result = mysql_query("SELECT Nome,Messaggio FROM `MarinelliGuestbook` ORDER BY ID desc LIMIT 0,50") or die("**Query failed**"); } for ($i = 1; $i < $numero_pagine+1; ++$i) { $da = 0 + $a; $a = $da + 50; echo "<a href=\"http://www.carlosmarinelli.it/guestbook.php?DA=$da&A=$a\">" . $i . "</a> "; } echo "**"; if ($DA == 0) echo "
da 1 a 50 ";
else
{
echo "
da " . $DA;
echo " a " . $A . " ";
}
?><?php
/* Stampa dei messaggi presenti nel database */
print "<table border="1" cellpadding="1" cellspacing="0" width="100%" bordercolorlight="#910000" bordercolordark="#E0E6E6">";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
print "<tr>";
print "<td width="15%"><font size="2" face="Verdana">" . $line["Nome"] . "</font></td>\n";
print "<td width="85%"><font size="2" face="Verdana">" . $line["Messaggio"] . "</font></td>\n";
print "</tr>";
}
print"</table>"
?><h2><font face="Verdana" size="3" color="#910000">Lascia
un messaggio nel guestbook di Marinelli!</font></h2>
<form method="POST" action="guestbook.php">
<div align="center">
<table border="0" cellpadding="2" cellspacing="0" width="80%">
<tr>
<td width="23%">
<font face="Verdana" size="2">Nome</font></td>
<td width="77%">
<font face="Verdana" size="2"><input type="text" name="Nome" size="41"></font></td>
</tr>
<tr>
<td width="23%">
<font face="Verdana" size="2">Messaggio</font></td>
<td width="77%">
<font face="Verdana" size="2"><textarea rows="3" name="Messaggio" cols="31"></textarea></font></td>
</tr>
<tr>
<td width="23%">
</td>
<td width="77%">
<p align="center">
<input type="submit" value="Invia" name="B1">
</td>
</table>
</div>
</form>quindi fai tutto su una pagina... ciò non è molto conveniente:
- Hai il problema con POST ed il refresh
- A livello di codice non è che ci si capisca molto...
Ti conviene invece usare 3 files:
in uno: visualizzi i messaggi e fai la paginazione dei dati
nel secondo: c'è il form per l'invio del messaggio
nel terzo: ricevi i dati dal form, li organizzi ( levi slashes o ' di troppo, inserisci le faccine ) ed infine mandi il risultato a MySQL