
Originariamente inviata da
clasku
primo: non sono le variabili PHP il problema dell'inserimento multiplo in caso di refresh della pagina, ma il browser che ripropone i dati
secondo: se tu fai il redirect alla pagina del form, che mi pare che mostri sempre i messaggi in bacheca, deve funzionare per forza, a meno di errori nella query o nella serie di if/elseif/else che hai messo nel codice
ricontrolla passo passo cosa fa il tuo codice, nel caso puoi provare a commentare tutta la parte di inserimento dati nel db per vedere se la bacheca mostra i post
Ho provato con il metodo get ed il refresh ma senza successo. Il codice che trovate sotto genera questo errore:
Questa pagina non reindirizza in modo corretto
Codice PHP:
//Salvo il messaggio
if (isset($_GET['inserisci_record']))
{
//Controllo dati
$error= "";
if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome
$nome = strip_tags($_POST['name']);
}
elseif(isset($_POST['name'])){
$error .= "Nome mancante.<br />";
}
if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido
$email = $_POST['mail'];
}
elseif(isset($_POST['mail'])){
$error .= "Email mancante o non valida.<br />";
}
if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio
$messaggio = strip_tags($_POST['message']);
}
elseif(isset($_POST['message'])){
$error .= "Inserire un messaggio.<br/>";
}
try
{
if(isset($nome,$email,$messaggio)){
$sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$email."','".$messaggio."')";
//Invio i dati al database
$pdo->exec($sql);
$nome=null;
}
else{
echo "<p>".$error."</p>";
}
}
catch (PDOException $e)
{
$error .= "Impossibile scrivere nel database.<br/>";
echo "<p>".$error."</p>";
exit();
}
}
//Leggo il contenuto del database
try
{
$sql = "SELECT * FROM ".$db_bacheca." ORDER BY data_messaggio DESC";
//Invio i dati al database
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error .= "Impossibile leggere dal database.<br/>";
echo "<p>".$error."</p>";
exit();
}
//Scrivo gli ultimi 5 record dal database e li affianco al tasto elimina
try
{
$n = 0;
$max = 5;
while($row=$result->fetch() and $n < $max){
$row["data_messaggio"] = date_create($row["data_messaggio"]); // creo l'oggeto data
echo "
<div>
<p>".$row["messaggio"]."<br/>
Autore: ".$row["nome"]."<br/>
Data: ".date_format($row["data_messaggio"], 'd/m/Y - H:i:s')."<br/>
Email: ".$row["email"]."</p>
<form action=\"?elimina_notizia\" method=\"post\">
<input type=\"submit\" name=\"id\" value=\"Elimina\">
<input type=\"hidden\" name=\"id\" value=".$row["id"]."\">
</form>
</div>
";
$n++;
}
header('Location: .');
exit();
}
catch (PDOException $e)
{
$error .= "Impossibile scrivere i contenuti prelevati dal database.<br/>";
echo "<p>".$error."</p>";
exit();
}