- Home
- Categorie
- Coding e Sistemistica
- Coding
- Upload controllato
- 
							
							
							
							
							Upload controllatoCiao, conoscete uno script possibilmente in PHP che eviti di re-inviare dati al database (modulo method="POST" e MYSQL) semplicemente con il reload della pagina o rientrando nella pagina che contiene il form? 
 Spero di essere stato abbastanza chiaro, il modulo che utilizzo funziona bene ed è in pagina protetta con sessione session_start();
 Non riesco ad evitare l'invio di record al Dbase al solo caricamento della pagina.
 Prima di scrivervi ho consultato decine di siti e provato altrettanti codici senza trovarne uno chiaro (per me) e affidabile.
 Grazie
 
- 
							
							
							
							
							Ciao rolandopalinoi, 
 è sufficiente inserire un IF per controllare se il modulo è stato inviato e fare dopo le operazioni.
 Se posti il codice php potrò essere più chiaro su come fare, ma è semplicissimo.
 
- 
							
							
							
							
							Grazie Thedarkita, quando dici che è semplicissimo mi sento un verme :). 
 Volentieri invio il codice.
 Struttura:
 -Include sessione di protezione
 -codice caricamento immagini in directory
 -Pagina html
 -codice caricamento dati in DB
 -incluso form upload dati in mysql e immagini in directoryCodice di protezione.php (incluso all'inizio della pagina) 
 [PHP]
 session_start();
 $var = $_SESSION['id_utente'];
 $var2 = $_SESSION['nome_utente'];
 if ( $var == "" && $var2 == "" ){
 echo "Please login";
 <meta hp-equiv="refresh" content="1; url=login.php "/>
 exit();
 }
 [/PHP]Codice generale 
 [PHP] include('protezione.php'); [/PHP]
 [PHP]
 error_reporting(0);
 $change="";
 $abc="";
 define ("MAX_SIZE","1024");
 function getExtension($str) {
 $i = strrpos($str,".");
 if (!$i) { return ""; }
 $l = strlen($str) - $i;
 $ext = substr($str,$i+1,$l);
 return $ext;
 }
 $errors=0;
 if($_SERVER["REQUEST_METHOD"] == "POST")
 {
 $image =$_FILES["file"]["name"];
 $uploadedfile = $_FILES['file']['tmp_name'];
 if ($image)
 {
 $filename = stripslashes($_FILES['file']['name']);$extension = getExtension($filename); $extension = strtolower($extension);if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
 {
 $change='<div class="msgdiv">Unknown Image extension </div> ';
 $errors=1;
 }
 else
 {
 $size=filesize($_FILES['file']['tmp_name']);
 if ($size > MAX_SIZE1024)
 {
 $change='<div class="msgdiv">You have exceeded the size limit!</div> ';
 $errors=1;
 }
 if($extension=="jpg" || $extension=="jpeg" )
 {
 $uploadedfile = $_FILES['file']['tmp_name'];
 $src = imagecreatefromjpeg($uploadedfile);
 }
 else if($extension=="png")
 {
 $uploadedfile = $_FILES['file']['tmp_name'];
 $src = imagecreatefrompng($uploadedfile);
 }
 else
 {
 $src = imagecreatefromgif($uploadedfile);
 }
 echo $scr;
 list($width,$height)=getimagesize($uploadedfile);
 $newwidth=800;
 $newheight=($height/$width)$newwidth;
 $tmp=imagecreatetruecolor($newwidth,$newheight);
 $newwidth1=100;
 $newheight1=($height/$width)*$newwidth1;
 $tmp1=imagecreatetruecolor($newwidth1,$newheight1);
 imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
 imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);
 $filename = "images/". $_FILES['file']['name'];
 $filename1 = "images/small/". $_FILES['file']['name'];
 imagejpeg($tmp,$filename,100);
 imagejpeg($tmp1,$filename1,100);
 imagedestroy($src);
 imagedestroy($tmp);
 imagedestroy($tmp1);
 }}
 }
 if(isset($_POST['Submit']) && !$errors)
 {
 $change=' <div>Image Uploaded Successfully!</div>';
 }
 [/PHP][HTML] 
 <head></head> 
 <body>
 <div id="all"> <!-- inizioall -->
 <div id="content"><!-- iniziocontent -->
 [PHP]
 include 'config.php';
 include 'opendb.php';
 $userid= $var;
 $username= $var2;
 $claim_level=$_POST['claim_level'];
 $claim_level = htmlentities($claim_level); //nuovo inserimento di prova
 $model=$_POST['model'];
 $model = htmlentities($model); //nuovo inserimento di prova
 $serial_number=$_POST['serial_number'];
 $serial_number = htmlentities($serial_number); //nuovo inserimento di prova
 $damaged_component_code=$_POST['damaged_component_code'];
 $damaged_component_code = htmlentities($damaged_component_code);
 mysql_query("INSERT INTO dbase VALUES ('id', '$userid', '$username', '$claim_level', '$model', '$serial_number', '$damaged_component_code ' )") ;
 include 'closedb.php';
 [/PHP]
 <div style='background-image: url( /eventi/images/); border:2px solid #880808; margin:10px;
 padding:10px; width:95%; align:center; border: 2px solid #882222; '>
 <div style=' border:3px solid #666666; margin:10px; padding:10px; width:90%; float="left" '>
 <form method="post" action="" enctype="multipart/form-data" name="form1">
 <div align="left">
 Level of claim <br/>
 <input type=radio name="claim_level" value="low" checked> <font color="green">Low</font> <br>
 <input type=radio name="claim_level" value="medium"> <font color="orange">Medium</font><br>
 <input type=radio name="claim_level" value="hight"> <font color="red">Hight</font><br>
 </div>
 <div align="left">
 <INPUT type=text size="10" name="model" > Model<br/>
 <INPUT type=text size="10" maxlength="25" name="serial_number" > Serial Number <br/>
 <INPUT type=text size="10" maxlength="25" name="damaged_component_code" > component code <br/>
 </div>
 </div>
 Insert Claim and Damage Description<br/>
 <textarea name="description" rows="10" cols="70" wrap="physical" maxlength="500" >Insert Claim and Damage Description</textarea><br/>
 <div align="left">
 <input type="file" size="25" name="file" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt" />
 Attach file (JPG-GIF-PDF) Image maximum size <b>1 </b>Mb <br/>
 </div>
 <div> <input type="submit" id="mybut" value="Send to me" name="Submit"/></div>
 </form>
 </div>
 <!-- finecontent --></div>
 <div id="footer"><font size="2"> 2012.</font></div> 2012.</font></div>
 <!-- fineall --> </div>
 </body>[/HTML] Un po' troppo lungo? 
 Intanto ti ringrazio per l'aiuto.
 
- 
							
							
							
							
							Serve solo esperienza, col tempo vedrai migliorerai.  Allora, un pò di codice mi sembra confuso, sicuramente a causa del copia incolla sul forum, devi modificare questa parte: 
 [php]
 include 'config.php';
 include 'opendb.php';
 $userid= $var;
 $username= $var2;
 $claim_level=$_POST['claim_level'];
 $claim_level = htmlentities($claim_level); //nuovo inserimento di prova
 $model=$_POST['model'];
 $model = htmlentities($model); //nuovo inserimento di prova
 $serial_number=$_POST['serial_number'];
 $serial_number = htmlentities($serial_number); //nuovo inserimento di prova
 $damaged_component_code=$_POST['damaged_component_code'];
 $damaged_component_code = htmlentities($damaged_component_code);
 mysql_query("INSERT INTO dbase VALUES ('id', '$userid', '$username', '$claim_level', '$model', '$serial_number', '$damaged_component_code ' )") ;
 include 'closedb.php';
 [/php]In: 
 [php]
 include 'config.php';
 include 'opendb.php';
 if(isset($_POST['claim_level']))
 {
 $userid= $var;
 $username= $var2;
 $claim_level=$_POST['claim_level'];
 $claim_level = htmlentities($claim_level); //nuovo inserimento di prova
 $model=$_POST['model'];
 $model = htmlentities($model); //nuovo inserimento di prova
 $serial_number=$_POST['serial_number'];
 $serial_number = htmlentities($serial_number); //nuovo inserimento di prova
 $damaged_component_code=$_POST['damaged_component_code'];
 $damaged_component_code = htmlentities($damaged_component_code);
 mysql_query("INSERT INTO dbase VALUES ('id', '$userid', '$username', '$claim_level', '$model', '$serial_number', '$damaged_component_code ' )") ;
 }
 include 'closedb.php';
 [/php]Se non fai altro uso del database, come penso sia, potresti inserirlo nell'if anche quello ed evitare la connessione inutilmente. 
 
- 
							
							
							
							
							Grazie 1000+1. 
 Efficace e semplice.
 Mi stupisce di non aver trovato questo suggerimento semplice in nessuno dei forum e pagine che ho consultato e provato... e sono state tantissime.
 ciao