Incontro uno strano problema - strano soprattutto perchè non si manifesta sempre.
Ho un sistema di inserimento news, a cui possono accedere gli utenti registrati. Questo sistema, dopo aver raccolto i dati inseriti dall'utente, effettua due operazioni:
- inserisce i dati nel db
- invia una mail di avviso all'amministrazione del sito
Tutto molto semplice. La stranezza è che, alcune volte - solo alcune!, e sempre quando ad inserire le news sono utenti, mai quando lo faccio io - la news viene inserita più volte (in genere, due volte, ma in alcuni casi anche tre o quattro volte!). Inoltre, è successo in almeno un caso, la news viene aggiunta una volta ma vengono inviati due messaggi di avviso.
Questo è il codice che uso per queste due funzioni:
Codice PHP:
<?PHP
if ($tag != "null" && $title != "" && $text != "" && $geo != "null" && $kind != "null") {
// controllo che i campi richiesti non siano vuoti
$query1 = ("INSERT INTO `news` (`date`, `tag`, `title`, `text`, `location`, `kind`, `deadline`, `email`, `link`, `start`, `thumb`, `img`) VALUES ('$today', '$tag', '$title', '$text', '$geo', '$kind', '$deadline', '$email', '$link', '$start', '$thmb_name', '$img_name')");
$result1 = mysql_query($query1)
or die("Query failed 1");
// inserisco i dati nel db
$result0 = mysql_query("SELECT * FROM `news` WHERE `title` = '$title'");
while ($row0 = mysql_fetch_array($result0)) {
$tmp = $row0["news_id"];
// prelevo l'ID della news - mi servirà più avanti per altre ragioni...
$result3 = mysql_query("SELECT * FROM `coll` WHERE `name` = '$name'");
while ($row3 = mysql_fetch_array($result3)) {
$usermail = $row3["email"];
}
// prelevo la mail dell'utente che ha inserito la news
$tosend = "info@shavis.com";
$oggetto = "Submitted news";
$strMessage = "Alert: " . $name . " (Email: " . $usermail . ") ha inserito una nuova news: (" . $title . ").\nControllare...\n\nShaVis.com database system\n";
$flag_success = mail("$tosend", "$oggetto", "$strMessage", "From: $usermail");
if (!$flag_success) {
}
// invio la mail di avviso
}
?>
Perchè succedono queste stranezze?
I dati vengono inseriti in un'altra pagina, e passati a questa via POST.
Qualche idea in merito?