CSc 337 - Web Programming > view-source.php > Source


<?php

function files_in_directory($directory)
{
    
$get_examples opendir($directory);
    
$return = array();
    while (
$file readdir($get_examples))
    {
        if (
substr($file'-4') == '.php')
            
array_push($return$directory '/' $file);
    }
    return 
$return;
}

$allowed_files = array(
    
"index.php",
    
"lectures/index.php",
    
"view-source.php",
    
"source.php"
);

$allowed_files array_merge($allowed_filesfiles_in_directory('examples/php'));
$allowed_files array_merge($allowed_filesfiles_in_directory('examples/mysql'));
$allowed_files array_merge($allowed_filesfiles_in_directory('examples/ajax'));
$allowed_files array_merge($allowed_filesfiles_in_directory('examples/libraries'));
$allowed_files array_merge($allowed_filesfiles_in_directory('examples/security'));
$allowed_files array_merge($allowed_filesfiles_in_directory('examples/templates'));

$base_url "/srv/qxlp.net/public_html/cs337/";

$allowed_files array_map(
    function(
$url) {
        global 
$base_url;
        return 
$base_url $url;
    }, 
$allowed_files
);

if (!
in_array($_GET['file'], $allowed_files))
    die(
'Invalid file.');

$source file_get_contents($_GET['file']);

$display_filename substr($_GET['file'], strlen($base_url));

?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css"></link>
<title>Source of <?=$_GET['file']?></title>
</head>
<body>
<h3><a href="/cs337/">CSc 337 - Web Programming</a>
    &gt; <a href="/cs337/<?=$display_filename?>"><?=$display_filename?></a>
    &gt; Source</h3>
<hr/>
<?=highlight_string($source,true)?>

<? include("source.php"); ?>
</body>
</html>