3. Script PHP

In questa lezione vedremo come utilizzare le classi viste nel capitolo precedente e che compongono la nostra libreria PHP 5.

Innanzitutto mettiamo i tre file PHP che seguono in una cartella nominata classi :

  • UploadSettings.php
  • ErroreFile.php
  • File.php

Nel percorso in cui risiede la cartella classi, andremo a creare lo script PHP che verrà contattato per primo dal filmato Flash.
Lo script in questione avrà il nome "upload.php", e sarà lo script che riceverà il file inviato vero e proprio.

upload.php
<?php

	require_once("classi/File.php");

	try
	{
		$file = new File(UploadSettings::NAME, UploadSettings::FILE_PATH);
		$file->tipo(GIF, PNG, JPEG, GENERIC);
		$file->dimensione(UploadSettings::MAX_SIZE, "kb");
		$file->sposta();
	}
	catch (ErroreFile $e)
	{
		if (UploadSettings::LOG_ME)
			fwrite($file->log, "exception:'" . $e->messaggio() . "'");
	}
	catch (Exception $e)
	{
		if (UploadSettings::LOG_ME)
			fwrite($file->log, "exception:'" . $e->getMessage() . "'");
	}

?>

Il sorgente è molto breve, in quanto i controlli vengono effettuati tutti dalla classe File.
Il resto dello script non fa altro che loggare eventuali eccezioni nel caso in cui la costante LOG_ME sia impostata sul valore true.

In pratica il costruttore della classe File inizializza il file di log e lo script procede tentando di archiviare il file.
Se si verifica un'eccezione, i due blocchi catch la memorizzano nel file di log. A questo punto lo script termina e vengono quindi richiamati tutti i distruttori delle varie classi, quindi anche quello della classe File che come abbiamo visto nel capitolo precedente, scriverà una linea di formattazione nel file di log e poi lo chiuderà con fclose().

Una volta inviato il file, il filmato Flash contatterà un secondo script PHP per verificare che il file sia stato accettato e correttamente archiviato sul server.

Il secondo script prenderà il nome di "verify.php" :

verify.php
<?php

	require_once("classi/UploadSettings.php");

	$filename = UploadSettings::FILE_PATH . $_POST["filename"];

	if (file_exists($filename)) echo "success=1";
	else echo "success=0";

	if (UploadSettings::LOG_ME)
	{
		$file = fopen(UploadSettings::LOG_FILE, "r");
		$log = fread($file, filesize(UploadSettings::LOG_FILE));
		echo "&log=$log";
	}

?>

Lo script soprastante non fa altro che verificare la corretta archiviazione del file inviato ad upload.php, tramite la funzione nativa file_exists().

Una volta chiamata la funzione, restituirà il risultato al filmato Flash inviando le variabili in codifica URL tramite il costrutto echo.

Per motivi di debug, ho impostato lo script in modo che restituisca a Flash anche il contenuto del file di log, in modo da non obbligarci a scaricarlo via FTP per effettuarne la lettura.

Nel prossimo capitolo inizieremo a vedere il codice Client Side in ActionScript 3, che fornirà l'interfaccia per l'invio dei file ai nostri utenti.