[Php-it] [OT?] Comportamento strano

Simone Volpini simonevolpini at yahoo.it
Mon Mar 12 10:56:35 CET 2007


Ciao

Domenico L. ha scritto:
> Lo fai transazionalmente? e poi se devono essere unici definiscili
> chiave primari o mettici sopra un unique index così eviti duplicati (e
> ti gestisci l'errore) :-)

Non lo faccio transazionalmente.
Siccome non devono essere unici, come chiave primaria utilizzo un id
autoincrementante.

> C'è da dire cmq che sembra esserci un problema nei tuoi script... la
> cosa puzza di ciclo messo male...
> 
> Prova magari a postare una parte del codice

E' un forum

// file 1.php

$disc = $_POST['hDisc']; // id della discussione
$cat  = $_POST['hCat']; // id della categoria
$nome = htmlentities(trim($_POST['txtNome']), ENT_QUOTES, 'UTF-8');
$email= htmlentities(trim($_POST['txtEmail']), ENT_QUOTES, 'UTF-8');
$titolo= htmlentities(trim($$_POST['txtTitolo']), ENT_QUOTES, 'UTF-8');
$messaggio = htmlentities(trim($_POST['txtMsg']), ENT_QUOTES, 'UTF-8');
$ip = $_SERVER['REMOTE_ADDR'];

if ($nome == '' || ($titolo == '' && $disc == 0) || $messaggio == '')
{
  // HEADER PAGINA D'ERRORE
} else {

  // controllo esistenza duplicati
  $sql = "SELECT COUNT(*) FROM tabella_messaggi
	  WHERE id = ".$disc."
	  AND titolo_msg    = '".$titolo."'
	  AND testo_msg     = '".$messaggio."'
	  AND nome_utente   = '".$nome."'
	  AND ip_utente     = '".$ip."'";

 $cont = query($sql, 'one'); // questa è testata e funziona

 if ($cont == 0)
 {
 	$sql = "INSERT INTO tabella_messaggi(id, datamsg, titolo_msg,
testo_msg, nome_utente, email_utente, ip_utente, visibile)
    		VALUES(
    			".$disc.",
    			NOW(),
    			'".$titolo."',
    			'".$messaggio."',
    			'".$nome."',
    			'".$email."',
    			'".$ip."',
    			'0')";

	query($sql); // anche questa funzia
	header('Location: 2.php'); // reindirizzamento pagina "GRAZIE"
}


Riguardando i log, avvengono 200 chiamate al file 1.php (circa 3 al
secondo).

Simone


More information about the Php-it mailing list