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?