190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<?php 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/** 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * Another GeSHi example script 590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * Configure your Apache server with 'AcceptPathInfo true' and something like 790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 'Alias /viewmysource /var/www/geshi/contrib/aliased.php'. Don't forget 890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * to protect this alias as necessary. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * Usage - visit /viewmysource/file.name.ext to see that file with syntax 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * highlighting, where "viewmysource" is the name of the alias you set up. 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * You can use this without an alias too, just by visiting 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * aliased.php/file.name.ext. 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * @author Ross Golder <ross@golder.org> 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * @version $Id: aliased.php 785 2006-07-19 10:09:45Z oracleshinoda $ 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */ 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Your config here 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdefine("SOURCE_ROOT", "/var/www/your/source/root/"); 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Assume you've put geshi in the include_path already 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberrequire_once("geshi.php"); 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Get path info 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$path = SOURCE_ROOT.$_SERVER['PATH_INFO']; 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Check for dickheads trying to use '../' to get to sensitive areas 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$base_path_len = strlen(SOURCE_ROOT); 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$real_path = realpath($path); 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif(strncmp($real_path, SOURCE_ROOT, $base_path_len)) { 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit("Stop that."); 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Check file exists 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif(!file_exists($path)) { 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit("File not found ($path)."); 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Gather contents 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$contents = file_get_contents($path); 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Prepare GeSHi instance 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi =& new GeSHi($contents, "PHP"); 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_header_type(GESHI_HEADER_PRE); 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->enable_classes(); 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 10); 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_overall_style('color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true); 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_line_style('font: normal normal 95% \'Courier New\', Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true); 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_code_style('color: #000020;', 'color: #000020;'); 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_link_styles(GESHI_LINK, 'color: #000060;'); 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;'); 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_header_content('Source code viewer'); 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_header_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;'); 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_footer_content('Parsed in <TIME> seconds, using GeSHi <VERSION>'); 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$geshi->set_footer_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;'); 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber?> 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<head> 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber <title>Source code viewer - <?php echo $path; ?></title> 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber <style type="text/css"> 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber <!-- 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber <?php 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // Output the stylesheet. Note it doesn't output the <style> tag 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo $geshi->get_stylesheet(); 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ?> 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber html { 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber background-color: #f0f0f0; 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber body { 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-family: Verdana, Arial, sans-serif; 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin: 10px; 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber border: 2px solid #e0e0e0; 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber background-color: #fcfcfc; 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber padding: 5px; 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber h2 { 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin: .1em 0 .2em .5em; 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber border-bottom: 1px solid #b0b0b0; 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber color: #b0b0b0; 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-weight: normal; 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-size: 150%; 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber h3 { 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin: .1em 0 .2em .5em; 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber color: #b0b0b0; 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-weight: normal; 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-size: 120%; 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber #footer { 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber text-align: center; 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-size: 80%; 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber color: #a9a9a9; 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber #footer a { 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber color: #9999ff; 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber textarea { 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber border: 1px solid #b0b0b0; 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-size: 90%; 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber color: #333; 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin-left: 20px; 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber select, input { 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin-left: 20px; 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber p { 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber font-size: 90%; 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber margin-left: .5em; 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --> 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber </style> 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</head> 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<body> 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<?php 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// The fun part :) 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberecho $geshi->parse_code(); 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber?> 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<hr/> 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</body> 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</html> 125