Lo script che compone il file XML è quello cui punta la action della form quindi submit.php.
Da quello che risco a capire nel fiume di simboli che compone il codice che hai postato, credo tu abbia dei problemi nel meccanismo di come passare le variabili in PHP.
La pagina che contiene la form è un paginone che contiene anche altre porzioni di codice, che sono quelle che si occupano di ricevere le variabili della form stessa.
PHP ermette di fare tutto in una pagina di script, però non come hai fatto tu.
Passo a spiegarti come devi fare, separando i due script e rendendo tutto un po' più leggibile ed ottimizzato.
Allora.
Nella pagina della form (chiamiamola inserimento.htm) metti solo il codice HTML per visualizzare la form.
Form che punta alla pagina submit.php che processerà gli input.
Quest'ultima pagina recupera dagli array $_POST e $_FILES quanto passato dall'utente.
Per riconoscere l'estensione dell'immagine, puoi usare questo codice:
Codice PHP:
$tipo = $_FILES['image_upload_box']['type'];
if ($tipo != "image/jpeg" && != "image/gif" && != "image/x-png") { $tipo = "";}
switch($tipo) {
case "image/jpeg":
$image_source = imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
break;
case "image/gif":
$image_source = imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
break;
case "image/x-png":
$image_source = imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
break;
default:
// nel caso non sia nessuno dei suddetti
echo "Spiacente, il tipo di file non è accettato.
<a href=\\"javascript:history.back()\\">Torna alla form</a>";
break;
}
Questa è una prima ottimizzazione del tuo codice.
Il nome del file, così come lo estrapoli $_FILES['name'] è quello che metterai nel XML, per cui vai a comporre, per ogni immagine caricata la stringa xml.
Codice PHP:
$nome_foto = $_FILES['name'];
$nodo_xml .= "
<pic>
<image>\percorso\alla\foto\$nome_foto</image>
</pic>
";
Tutto questo ciclo viene ripetuto N volte, dove N è il numero di immagini caricate dall'utente.
Di volta in volta, quindi, la variabile $nodo_xml, verrà aggiunta del nuovo nodo.
Usciti da questo ciclo, basterà fare così:
Codice PHP:
$inizio_xml = "
<?xml version=\\"1.0\\" encoding=\\"utf-8\\" standalone=\\"yes\\" ?>
<images>
";
$chiusura_xml = "
</images>
";
$xml = $inizio_xml.$nodo_xml.$chiusura_xml;
Questo è il momento di scrivere il file XML nel server.
Codice PHP:
$handle = fopen("/percorso/al/file/images.xml", "w");
fwrite($handle, $xml);
fclose($handle);
Ho scritto direttamente qui sul forum e potrebbero esserci degli errori di sintassi.
Ad ogni modo, spero tu abbia capito il concetto ed il meccanismo.