codice:
<?php
$output = "
<form method=\"GET\" action=\"{$_SERVER['PHP_SELF']}\">
<input type=\"text\" size=\"20\" name=\"filename\" /> 
<input type=\"submit\" value=\"mostra contenuto file\" />
</form>
";
if( isSet( $_GET['filename'] ) && file_exists( $_GET['filename'] = &urldecode( $_GET['filename'] ) ) ) {
	$output .= '<pre>'.htmlentities( file_get_contents( $_GET['filename'] ) ).'</pre>';
}
echo $output;
?>
creai la variabile per l'output contenente il form con il metodo GET ( che in php riceverai tramite $_GET['nome_campo'] o $_POST['nome_campo'] nel caso che il form sia in metodo POST ( senza appendere quindi il valore all' url e senza limiti di 255 caratteri ) )

oltre al form passi al controllo:

if( isSet( $_GET['filename'] )
// se esiste la variabile $_GET['filename'] ( sia essa per form o per link, e' indifferente il GET legge la variabile appesa all' url )

&& file_exists( $_GET['filename'] = &urldecode( $_GET['filename'] ) ) ) {
// controla che il file sia esistente e riassengna allo stesso tempo $_GET['filename'] decodificando il valore passato tramite url ( fuzione urldecode )


$output .= '<pre>'.htmlentities( file_get_contents( $_GET['filename'] ) ).'</pre>';
aggiungi ad output ( .= ) , racchiuso in tag <pre> per mantenere la formattazione del file, il contenuto ( file_get_contents ) del file ( $_GET['filename'] ) modificandolo tramite htmlentities che ti permette di visualizzare correttamente il file su una pagina html senza interpretarlo come tale