Form con campi input text e upload file

xone

Utente Attivo
4 Apr 2014
181
14
18
Salento
Salve a tutti, ho un form per l'inserimento di annunci, dovrei fare in modo che alla pressione del pulsante invia, il primo controllo fosse all'immagine e se non rispetta i parametri blocchi lo script e dia un messaggio di errore. Attualmente ciò accade ma anche se l'immagine non rispetta l'estensione o il peso, compare si un messaggio di errore, ma l'inserimento dell'annuncio continua comunque e non dovrebbe accadere! Lo script per il controllo è il seguente:

PHP:
$file = $_FILES["file"]["name"];

$img = "$titolo";
$img = str_replace(' ', '-', $img);

$allowedExts = array("gif", "jpeg", "jpg", "JPG", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/JPG")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 50000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {

    if (file_exists("../img-annunci/" . $_FILES["file"]["name"]))
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],"../img-annunci/$img.jpg");
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],"../img-annunci/$img.jpg");
      }
    }
  }
else
  {
  }

// seguono gli altri controlli sui campi input //

if (ereg("^[A-Za-z0-9]+$",$titolo)) { 
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, Sono consentiti solo caratteri alfanumerici.</p>
				</div>';

}else{
ecc.....
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ci sono alcune cose da riguardare nel tuo script, es perche fau tutto qull'ambaradan per il controllo dell'estensione?
poi per fermare l'invio
PHP:
<?php
//.....
$file = $_FILES["file"]["name"];
$estension=strtolower(pathinfo($file, PATHINFO_EXTENSION));//tutto in minuscolo
$allowedExts = array("gif", "jpeg", "jpg", "png");
if(in_array($extension, $allowedExts) && $_FILES["file"]["size"] < 50000){
	//fai gli altri controlli schematizzo
	/*
	se controllo OK prosegui
	else mostri errore e rimandi al form
	*/
}else{
	echo "file non ammesso";
	//e rimandi al form
}
//....
?>
poi non usare eregi è deprecato usa preg_match
oppure puoi con gli errori fare così (schematizzo)
PHP:
<?php
$errore="";
$file = $_FILES["file"]["name"];
$estension=strtolower(pathinfo($file, PATHINFO_EXTENSION));
$allowedExts = array("gif", "jpeg", "jpg", "png");
if(!in_array($extension, $allowedExts) || $_FILES["file"]["size"] > 50000){
	$errore.="file non ammesso<br />";
}
/*
se controllo NON OK
$errore.="caratteri non consentiti<br />";
*/
if($errore==""){//$errore rimasto vuoto
	//carichi il tutto
	//e rimandi dove vuoi
}else{
	echo $errore;
	//e rimandi al form
}
//.....
?>

dimenticavo: formatta sempre il codice con gli appositi BCCODE
 

xone

Utente Attivo
4 Apr 2014
181
14
18
Salento
Ciao, grazie per la correzione ma non sto riuscendo ad ordinare come si deve lo script poichè ho un mare di controlli da fare + l'invio di una mail di avviso + l'inserimento del db dei dati form + immagine caricata. C'è un modo per far vedere l'intero script in modo da poterlo ordinare? Te ne sarei davvero grato !
 

xone

Utente Attivo
4 Apr 2014
181
14
18
Salento
Questo è l'intero script che in grosso modo funziona ma va solo ordinato e non ne sto venendo a capo!

PHP:
<?php

$nome = $_POST['nome'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];

$tipo = $_POST['tipo'];
$categoria = $_POST['categoria'];
$dove = $_POST['dove'];
$comune = $_POST['comune'];

$titolo = $_POST['titolo'];
$prezzo = $_POST['prezzo'];
$descrizione = $_POST['descrizione'];

// PROTEZIONI CONTRO SQL INJECT

$nome = strip_tags($nome);
$email = strip_tags($email);
$telefono = strip_tags($telefono);

$tipo = strip_tags($tipo);
$categoria = strip_tags($categoria);
$dove = strip_tags($dove);
$comune = strip_tags($comune);

$titolo = strip_tags($titolo);
$prezzo = strip_tags($prezzo);
$descrizione = strip_tags($descrizione);

$nome = mysql_real_escape_string($nome);
$email = mysql_real_escape_string($email);
$telefono = mysql_real_escape_string($telefono);

$tipo = mysql_real_escape_string($tipo);
$categoria = mysql_real_escape_string($categoria);
$dove = mysql_real_escape_string($dove);
$comune = mysql_real_escape_string($comune);

$titolo = mysql_real_escape_string($titolo);
$prezzo = mysql_real_escape_string($prezzo);
$descrizione = mysql_real_escape_string($descrizione);

$data .= "".date('d/m/Y');
$file = $_FILES["file"]["name"];

$img = "$titolo";
$img = str_replace(' ', '-', $img);

$estension=strtolower(pathinfo($file, pathinfo_extension));
$allowedExts = array("gif", "jpeg", "jpg", "png");
if(in_array($extension, $allowedExts) && $_FILES["file"]["size"] < 50000){

      move_uploaded_file($_FILES["file"]["tmp_name"],"../img-annunci/$img.jpg");

}else{
    echo "file non ammesso";
    //e rimandi al form
}

// CONTROLLO SE CI SONO CAMPI VUOTI

if ($nome == "" | $email == "" | $comune == "" | $titolo == "" | $descrizione == ""){
                            echo '
                            <br />
				<div id="message-red">
				 <p class="red-left">Errore, tutti i campi con la dicitura (<i>richiesto</i>) sono richiesti.</p>
                             <a href="javascript:history.back()"><< Torna indietro</a>
				</div>';
}else{


// CONTROLLO SE IL CAMPO NOME CONTIENE SOLO CARATTERI ALFANUMERICI

if (preg_match("[A-Za-z]",$nome)) {
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, campo Nome non valido.</p>
				</div>';

}else{

// CONTROLLO SE IL CAMPO COMUNE CONTIENE SOLO CARATTERI ALFANUMERICI

if (preg_match("[A-Za-z]",$comune)) {
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, campo Comune non valido.</p>
				</div>';

}else{


// CONTROLLO SE IL CAMPO TELEFONO CONTIENE SOLO NUMERI

if (ereg("^[0-9]+$",$telefono)) {  
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, campo Telefono non valido.</p>
				</div>';

}else{

// CONTROLLO SE IL CAMPO PREZZO CONTIENE SOLO NUMERI

if (preg_match("^[0-9]+$",$prezzo)) {  
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, campo Prezzo non valido.</p>
				</div>';

}else{


// CONTROLLO LA VALIDITA DELLA EMAIL

if (!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $email)) {
                            echo '
				<div id="message-red">
				 <p class="red-left">Errore, indirizzo email non valido.</p>
				</div>';

}else{


$to = "[email protected]";
$subject = "Inserimento nuovo annuncio rapido";
$sender = "[email protected]";
$messaggio = "Inserito un nuovo annuncio rapido, verificalo prima di approvarlo.";

$ip = $_SERVER['REMOTE_ADDR'];
 
$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "X-Mailer: PHP " . phpversion();

$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 8bit\n\n";

$body = "Buone notizie! Un utente ha inserito un nuovo annuncio rapido IP: $ip\n\n Annuncio: $tipo $titolo\n\n";
$body .= "========================================================================================\n\n $messaggio";


$Sql="INSERT INTO annunci (id_utente, nome, email, telefono, tipo, categoria, dove, comune, titolo, prezzo, descrizione, miniatura, data, attivato) 
VALUES ('0', '$nome', '$email', '$telefono', '$tipo', '$categoria', '$dove', '$comune', '$titolo', '$prezzo', '$descrizione', '$img.jpg', '$data', 'no')";

if(!($Result=mysql_query($Sql)))
                            echo '
                            <br />
				<div id="message-red">
				 <p class="red-left">Errore, annuncio non pubblicato.</p>
				</div>';

else
{
                            echo '
                            <br />
				<div id="message-green">
				<p class="green-left">Complimenti! Il Tuo Annuncio sarà ora controllato prima di essere pubblicato. Attendi..</p>
				</div>';
                            mail($to, $subject, $body, $headers);

  }
echo('<meta http-equiv="refresh" content="5;url=../index.php">'); 
      }
     }
    }
   }
  }
 }
?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ci do un occhio, ma devi avere un po' di pazienza

comunque ricorda di formmattare il codice (ultime tre iconcine nell'ordine CODE, HTML, PHP)
 
Discussioni simili
Autore Titolo Forum Risposte Data
Domenico_Falco1 [Javascript] [HTML] Campi form con sfondo imposto dal browser Javascript 5
A [HTML] form con campi dinamici. HTML e CSS 1
M Form multipagina con campi già compilati se presenti PHP 5
E Form con campi allineamento HTML e CSS 4
M Form con campi autocomplete Javascript 1
S Form con campi obbligatori PHP 41
alessandro1997 Form con campi multipli in PHP PHP 5
M Interazione tra un più campi di un form con un solo campo di database - query mysql PHP 2
P form con campi dinamici! Javascript 2
Z Banale invio dati da form con due campi e submit PHP 3
G FORM con campi dinamici PHP 1
Z [Aiuto] Form con 2 campi collegati Javascript 0
S passare un valore da un form a un file .php con metodo post PHP 4
I Form con selettore HTML e CSS 0
G form invio multiplo con checkbox PHP 12
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
G Invio form con PHP PHP 3
M Problema con controllo form in real time jQuery 6
M form con checkbox PHP 8
F query e form con select multipla PHP 17
W Rinominare Documenti Con Form Asp Classic ASP 9
S [PHP] Recupero nome immagine da Form con input file PHP 3
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
E Form inserimento dati con JavaScript Javascript 0
I [PHP] inviare form con allegato tramite una mail PHP 1
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
M [HTML] form con multipli input type image HTML e CSS 1
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
U [PHP] Form stessa pagina con qualche complicazione PHP 0
S [PHP] form con metodo get e recupero id PHP 4
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
Emix Problema con creazione form css/mobile HTML e CSS 3
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
L Scelta form con jquery jQuery 1
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
S Html con form e action .php PHP 6
bubino8 [PHP] Auto Submit form con dati PHP 7
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
T [Javascript] un form con select dinamica che funzioni da menù... Javascript 2
zammaeng [PHP] Problema form con lista PHP 8
B INSERIRE DATI CON IMMAGINE DA FORM IN MYSQL MySQL 7
V [PHP] Form con elenco a tendina con dati DB PHP 20
asevenx [PHP] form con select che non invia dati se con apostrofo PHP 4
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
S [PHP] Form iscrizione senza DB con comandi deprecated PHP 10
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
G validazione form con div tipo alert jQuery 0

Discussioni simili