Sto tirando su un lunghissimo script per una pagina di update dinamico di un sito, come vedrete dal codice che inserisco qui sotto ho fatto in modo che il sito esegua una serie di funzioni in base alle condizioni di esistenza di $_POST stampi a video il form da riempire oppure lavori gli eventuali dati postati. Nonostante ciò pare che il browser "parsi" a priori anche le funzioni che non dovrebbe parsare (cioè parsa le funzioni anche quando $_POST è vuoto):
codice:
<?
function update_form()
{ ?>
<div id='title2'>Clicca qui per aggiungere una linea</div>
<div id='title'>Aggiungi un prodotto</div>";
<form name='product' action="<? $_SERVER['PHP SELF'] ?>" method='post' enctype='multipart/form-data'>";
<label class='form'>Prodotto:</label>
<input type='text' name='prodotto'>
<label class='form'>Categoria:</label>
<select name=cat size=3>";
<? $query= mysql_query('SELECT prodotto from tipologia') or die('query non eseguibile');
while ($result=mysql_fetch_array($query)) {
echo "<option value='$result[prodotto]>$result[prodotto]</option>'";}
?> </select>
<label class='form'>Linea:</label>
<select name=linea size=3>";
<? $sql= mysql_query('SELECT linea from linee') or die ('query non eseguibile');
while($show=mysql_fetch_array($sql)) {
echo "<option value=$show[linea]>$show[linea]</option>";} ?>
</select>
<label class='form'>Immagine piccola:</label>
<input type='file' name='img_short' size='100'>
<label class='form'>Immagine grande:</label>
<input type='file' name='img_large' size='100' rows='2'>
<label class='form'>Testo:</label>
<textarea name='comment' rows='20' cols='60'></textarea>
<input type='submit' value='Invia prodotto' name='submit'>
<input type='reset' value='Cancella tutto'>
</form>
";
<a name='linea'><div id='title'>Aggiungi una linea</div>
</a>
<form name='line' action="<? $_SERVER['PHP SELF']?>" method='post' enctype='multipart/form-data'>
<INPUT TYPE='hidden' name='MAX_FILE_SIZE' value='307200'>
<label class='form'>Nome linea:</label>
<input type='text' name='nomelinea'>(Es. casa, notturni, etc.etc)
<label class='form'>Nome visualizzato:</label>
<input type='text' name="testolinea">(Es. Linea Casa, Linea Savana, etc.etc.)
<label class='form'>Immagine di linea:</label>
<input type='file' name='img_linea' size='100'>
<input type='submit' value='Invia nuova linea' name='submit2'>
<input type='reset' value='Cancella tutto'>
</form>";
}
<?
//upload dell'immagine grande di un nuovo prodotto
//faccio in modo che le immagini siano limitate nelle dimensioni e nel peso per non spaccare il layout
function upload_img_large() {
//nome della directory di destinazione
$dir_large= "./img_large"
//istanzio i valori del file
$large_name= $_FILES['img_large']['name'];
$large_tmp_name= $_FILES['img_large']['tmp_name'];
$large_size= $_FILES['img_large']['size'];
//istanzio il nome del file
$largefilename= basename($large_name);
// metto il limite a 30k
if ($large_size => 31700) die ("l'immagine $largefilename supera il limite di 5k");
//ricavo le dimensioni in pixel
list($large_width, $large_height) = getimagesize($_FILES['img_large']['tmp_name']);
//limito le dimensioni a 320x300
if (($large_width > 320) || ($large_height > 300)) {
$msg = "
Dimensioni di $largefilename non corrette!!</p>";
break; }
if (!@move_uploaded_file($large_tmp_name, "$dir_large/$large_name"))
die ("<div id='title'>Impossibile copiare il file $largefilename sul server</div>");
echo "<div id='title'>$largefilename è stato caricato con successo.
";
}
//upload dell'immagine piccola di un nuovo prodotto
// esprimo tutti i valori e le limitazioni del caso per non disintegrare il layout
function upload_img_short() {
//nome della directory di destinazione
$dir_short= "./img_short"
//istanzio i valori del file
$short_name= $_FILES['img_short']['name'];
$short_tmp_name= $_FILES['img_short']['tmp_name'];
$short_size= $_FILES['img_short']['size'];
//istanzio il nome del file
$shortfilename= basename($short_name);
// metto il limite a 5k
if ($short_size => 5120) die ("l'immagine $shortfilename supera il limite di 5k");
//ricavo le dimensioni in pixel
list($short_width, $short_height) = getimagesize($_FILES['img_short']['tmp_name']);
//limito le dimensioni a 100x88
if (($short_width > 100) || ($short_height > 88)) {
$msg = "
Dimensioni di $shortfilename non corrette!!</p>";
break; }
if (!@move_uploaded_file($short_tmp_name, "$dir_short/$short_name"))
die ("<div id='title'>Impossibile copiare il file $shortfilename sul server</div>");
echo "<div id='title'>$shortfilename è stato caricato con successo.
";
}
//upload dell'immagine di una nuova linea
// anche qui l'immagine sarà limitata nelle dimensioni e nel peso
function upload_img_linea() {
//nome della directory di destinazione
$dir_linea= "./linee"
//istanzio i valori del file
$linea_name= $_FILES['img_linea']['name'];
$linea_tmp_name= $_FILES['img_linea']['tmp_name'];
$linea_size= $_FILES['img_linea']['size'];
//istanzio il nome del file
$lineafilename= basename($linea_name);
// metto il limite a 5k
if ($linea_size => 5120) die ("l'immagine $lineafilename supera il limite di 5k");
//ricavo le dimensioni in pixel
list($linea_width, $linea_height) = getimagesize($_FILES['img_linea']['tmp_name']);
//limito le dimensioni a 80x101
if (($linea_width > 80) || ($linea_height > 101)) {
$msg = "
Dimensioni di $lineafilename non corrette!!</p>";
break; }
if (!@move_uploaded_file($linea_tmp_name, "$dir_linea/$linea_name"))
die ("<div id='title'>Impossibile copiare il file $lineafilename sul server</div>");
echo "<div id='title'>$lineafilename è stato caricato con successo.
";
}
//inserisco la query per il database di un nuovo prodotto
//istanzia le variabili $_POST in variabili utilizzabili e le sfrutta per inserire i dati
function insert_product_db() {
$prodotto= $_POST['prodotto'];
$cat= $_POST['cat'];
$linea= $_POST['linea'];
$comment= $_POST['comment'];
$query=mysql_query ("INSERT INTO commerciale
('id', 'prodotto' , 'categoria' , 'linea' , 'img_short' , 'img_large' , 'text')
VALUES ( '', '$prodotto', '$cat', '$linea', './$dir_short/$shortfilename', './$dir_large/largefilename', '$comment')"
or die ("impossibile inserire un nuovo prodotto nel database");
}
if ($query) {
echo "<div id='title'>Il prodotto è stata inserito con successo!</div>" }
//inserisco la query per il database di una nuova linea
//anche qui istanzio le varie variabili $_POST per sfruttarle nell'inserimento dei dati
function insert_line_db () {
$nomelinea = $_POST['nomelinea'];
$testolinea = $_POST['testolinea'];
$query = mysql_query ("INSERT INTO linee
('id', 'linea', 'text', 'img', 'link')
VALUES ('', '$nomelinea', '$testolinea', '$dir_linea/$lineafilename' 'risposta.php?linea=$nomelinea'")
or die ("Impossibile inserire una nuova linea nel database");
if ($query) {
echo "<div id='title'>La linea è stata inserita con successo!</div>" } ?>
<html>
<head>
<title>Pagina di aggiornamento linee</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="./css/style.css">
</head>
<body>
<div id="contenitore">
<? include ("./inc/common_db.inc.php");
if ($_POST['action'] == 'submit') {
upload_img_short();
upload_img_large();
insert_product_db();
}elseif ($_POST['action'] == 'submit2') {
upload_img_linea();
insert_line_db();
}if (!$_POST){
update_form();
}
?>
</div>
</body>
</html>
l'errore è alla linea 82, ovvero nel momento in cui comincio ad istanziare le variabili per gestire il file...ma in teoria a $_POST vuoto (come dicevo) non dovrebbe parsare quella parte lì...se qualcuno ha la santa pazienza di dare un'occhiata alle condizioni nell'ultima parte mi farebbe un favore...perchè probabilmente dipende da quelle
...vi ringrazio!