Newsgroup: it.comp.www.php
Titolo: doppio inserimento nel database

se condo voi perchè mi inserisce due record nel database? 
sembra ripeta il ciclo 
  if ($_GET['notizie'])
  {
  echo $_GET[titolo];
	  $insertn= "INSERT INTO notizie 
VALUES('','$_GET[categ_it]','$_GET[titolo]','$_GET[sottotitolo]','$_GET[datain]','$_GET[data]','$_GET[luogo]','$_GET[prov]','$_GET[testo]','$_GET[txt]','$_GET[img1]','$_GET[img2]','$_GET[youtube]','$_GET[link1]','$_GET[link2]')";
 
	$queryn = " $insertn";
	mysql_query($queryn);
 
	echo "<a href=\"index.php?ridir=on\">indice</a>";
	die;
 
  }

EMC wrote:

dimenticavo la form è 
<form action="exenotizie.php" method="get" 
enctype="multipart/form-data">
 <input type="submit" name="notizie" value="invia">

 se condo voi perchè mi inserisce due record nel database? 
Posto che non ci siano errori nella query, magari perche' uno dei valori e' del
tipo "L'inesperto" (senza i doppi apici, ma con l'apice singolo.
Pensa un po' cosa potrebbe succedere se uno dei valori fosse esattamente questo,
apici INCLUSI
     ';TRUNCATE TABLE notizie;'
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
It is impossible to make anything foolproof: fools are so ingenious.

quello è un problema risolto , nella form arrivano barrati /'
ho fatto dei test con un inserimento di testo base tipo 
---------------
test notizia
--------------
e nel database viene fuori 2 record ad inserimento
record 1 test notizia
record 2 test notizia 
adesso e cambio la form da GET a POST il problema è risolto ;
solo che mi accada in alcuni siti ed in altri no; residenti 
nel medesimo server. 
vorrei capire perchè


 quello è un problema risolto , nella form arrivano barrati /'
ah beh...
al massimo dovrebbero arrivare \' 
e poi cosa vuol dire?
se uno chiama la pagina a mano? 
.php?titolo='truncate blablaa';
ocio
-- 
give it away

 quello è un problema risolto , nella form arrivano barrati /'
Non dirmi che lavori con magic_quotes_gpc=on
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I've seen things you people wouldn't believe.
Attack ships on fire off the shoulder of Orion.
I watched C-beams glitter in the dark near the Tannhauser gate.
All those moments will be lost in time, like tears in rain.
Time to die.
    --Roy Batty, "Blade Runner"

no 
$nomes=addslashes($_POST['nome']);  
$nomes=htmlspecialchars($nomes);
mi sembra semplice


 $nomes=htmlspecialchars($nomes);
Meglio sarebbe usare
http://www.php.net/manual/en/function.mysql-real-escape-string.php
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
God isn't dead, he just couldn't find a parking place.

soluzione interessante, grazie;
ma non riguardo al mio problema, se ho capito bene.


 ma non riguardo al mio problema, se ho capito bene.
Il tuo problema a breve termine potrebbe essere una doppia ridirezione, dovresti
controllare il log degli accessi per capire se la pagina viene caricata due volte.
Il tuo problema a lungo termine e' che se non sanifichi ogni tipo di variabile
che passia a SQL prima o poi ti trapanano con una SQL injection: non e'
questione di _se_, ma di _quando_.  :)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
1 + 1 = 3, for large values of 1

 consultare il database navigando 
Per fare SQL injection, la seconda che hai detto e' piu' che sufficiente.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Xerox never comes up with anything original.

 > sembra ripeta il ciclo
più probabile che ci sia un refresh della pagina. Il metodo GET è
sconsigliato per gli update proprio per questo motivo: se usi POST il
browser ti avverte prima di ripetere il submit dei dati, se usi GET
no. Per verificarlo controlla l'access log del web server per vedere
se c'e' una sola chiamata GET o due.
Nel primo caso hai un problema nel codice (forse ti è scappato un
secondo "mysql_query($queryn)" da un'altra parte), nel secondo forse
c'e' un url redirect di troppo o hai semplicemente fatto un refresh
della pagina in più.
VALUES('','$_GET[categ_it]','$_GET[titolo]','$_GET[sottotitolo]','$_GET
[datain]','$_GET[data]','$_GET[luogo]','$_GET[prov]','$_GET
[testo]','$_GET[txt]','$_GET[img1]','$_GET[img2]','$_GET
[youtube]','$_GET[link1]','$_GET[link2]')";
gli argomenti dell'array $_GET dovrebbero essere sempre quotati i.e.
$_GET["nomecampo"] (ma questo non credo abbia a che vedere con
l'errore), cfr.:
http://www.php.net/manual/en/language.types.array.php#language.types.array.foo-bar
bye!

in effetti con POST fa un inserimento solo; non ho messaggi di 
allerta
