Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Tree folder in php

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    4

    Tree folder in php

    Salve ragazzi:

    Un utente deve visualizzare in una pagina di wordpress questa struttura ad albero dei file: deve vedere il contenuto di una specifica cartella su wordpress, deve riuscire ad esplorare e aprire i file eventualmente contenuti.

    Ho scaricato questo script: https://www.abeautifulsite.net/php-file-tree e l'ho inserito nella cartella htdocs con xampp per vedere se localmente mi funziona.

    L'esito � negativo, mi appare s�, la struttura ad albero dei file, ma non si pu� fare il collapse, cio� non posso chiudere ed aprire le cartelle in quanto risultano gi� tutte aperte. Inoltre mi appare una serie di errori:

    Undefined variable: php_file_tree in H:\xampp\htdocs\Tree\php_file_tree.php on line 73
    Undefined variable: code in H:\xampp\htdocs\Tree\php_file_tree.php on line 24


    La cartella dello script � composta dai seguenti file:

    - demo_jquery.php
    - php_file_tree.php
    - php_file_tree_jquery.js

    Il contenuto di demo_jquery.php � questo:

    [spoiler]
    codice:
    <?php// PHP File Tree Demo
    // For documentation and updates, visit http://abeautifulsite.net/notebook.php?article=21
    
    
    // Main function file
    include("php_file_tree.php");
    
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<title>PHP File Tree Demo</title>
    		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    		<link href="styles/default/default.css" rel="stylesheet" type="text/css" media="screen" />
    		
    		<!-- Makes the file tree(s) expand/collapsae dynamically -->
    		<script src="jquery-1.3.2" type="text/javascript"></script>
    		<script src="php_file_tree_jquery.js" type="text/javascript"></script>
    	</head>
    
    
    	<body>
    	
    		<h1>PHP File Tree with jQuery</h1>
    		
    		<p>
    			This entire list was generated with one line of code:
    		</p>
    		
    		<pre>	echo php_file_tree($_SERVER['DOCUMENT_ROOT'], &quot;javascript:alert('You clicked on [link]');&quot;);</pre>
    		
    		<p>
    			The dynamic effects are enabled by including the jQuery library and one small JavaScript file:
    		</p>
    		
    		<pre>	&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    	&lt;script src=&quot;php_file_tree_jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
    		
    		<p>
    			<a href="http://abeautifulsite.net/2007/06/php-file-tree/">Visit the project page</a>
    		</p>
    		
    		<hr />
    		
    		<h2>Browing...</h2>
    		
    		<?php
    		
    		// This links the user to http://example.com/?file=filename.ext
    		//echo php_file_tree($_SERVER['DOCUMENT_ROOT'], "http://example.com/?file=[link]/");
    
    
    		// This links the user to http://example.com/?file=filename.ext and only shows image files
    		//$allowed_extensions = array("gif", "jpg", "jpeg", "png");
    		//echo php_file_tree($_SERVER['DOCUMENT_ROOT'], "http://example.com/?file=[link]/", $allowed_extensions);
    		
    		// This displays a JavaScript alert stating which file the user clicked on
    		echo php_file_tree("demo/", "javascript:alert('You clicked on [link]');");
    		
    		?>
    		
    	</body>
    	
    </html>
    [/spoiler]

    Il contenuto di php_file_tree.php � questo:
    [spoiler]
    codice:
    <?php
    /*
    	
    	== PHP FILE TREE ==
    	
    		Let's call it...oh, say...version 1?
    	
    	== AUTHOR ==
    	
    		Cory S.N. LaViska
    		http://abeautifulsite.net/
    		
    	== DOCUMENTATION ==
    	
    		For documentation and updates, visit http://abeautifulsite.net/notebook.php?article=21
    		
    */
    
    
    
    
    function php_file_tree($directory, $return_link, $extensions = array()) {
    	// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
    	// Remove trailing slash
    	if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
    	$code .= php_file_tree_dir($directory, $return_link, $extensions);
    	return $code;
    }
    
    
    function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true) {
    	// Recursive function called by php_file_tree() to list directories/files
    	
    	// Get and sort directories/files
    	if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
    	natcasesort($file);
    	// Make directories first
    	$files = $dirs = array();
    	foreach($file as $this_file) {
    		if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
    	}
    	$file = array_merge($dirs, $files);
    	
    	// Filter unwanted extensions
    	if( !empty($extensions) ) {
    		foreach( array_keys($file) as $key ) {
    			if( !is_dir("$directory/$file[$key]") ) {
    				$ext = substr($file[$key], strrpos($file[$key], ".") + 1); 
    				if( !in_array($ext, $extensions) ) unset($file[$key]);
    			}
    		}
    	}
    	
    	if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
    		$php_file_tree = "<ul";
    		if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
    		$php_file_tree .= ">";
    		foreach( $file as $this_file ) {
    			if( $this_file != "." && $this_file != ".." ) {
    				if( is_dir("$directory/$this_file") ) {
    					// Directory
    					$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">" . htmlspecialchars($this_file) . "</a>";
    					$php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false);
    					$php_file_tree .= "</li>";
    				} else {
    					// File
    					// Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
    					$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1); 
    					$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
    					$php_file_tree .= "<li class=\"pft-file " . strtolower($ext) . "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a></li>";
    				}
    			}
    		}
    		$php_file_tree .= "</ul>";
    	}
    	return $php_file_tree;
    }
    
    
    // For PHP4 compatibility
    function php4_scandir($dir) {
    	$dh  = opendir($dir);
    	while( false !== ($filename = readdir($dh)) ) {
    	    $files[] = $filename;
    	}
    	sort($files);
    	return($files);
    }
    [/spoiler]

    Invece il contenuto di php_file_tree_jquery.js � questo:
    [spoiler]
    codice:
    $(document).ready( function() {
    	
    	// Hide all subfolders at startup
    	$(".php-file-tree").find("UL").hide();
    	
    	// Expand/collapse on click
    	$(".pft-directory A").click( function() {
    		$(this).parent().find("UL:first").slideToggle("medium");
    		if( $(this).parent().attr('className') == "pft-directory" ) return false;
    	});
    
    
    });
    [/spoiler]

    Considerando che mi trovo in difficolt� in quanto non ho mai programmato, chiedo il vostro aiuto per riuscire a far funzionare questa cosa.
    Ringrazio tutti coloro che mi risponderanno!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    nel file demo_jquery.php, alla riga 57
    Codice PHP:
    echo php_file_tree("demo/""javascript:alert('You clicked on [link]');"); 
    al posto di demo/ devi metterci il percorso della cartella che vuoi scansionare.

    Edit: no, sembra di no.
    Ultima modifica di Alhazred; 30-01-2017 a 17:53

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    4
    Dato che lo script sostanzialmente funziona, anche se compaiono degli errori, l'ho spostato su wordpress, ma stavolta la pagina risulta completamente vuota ( ho sostituito demo con $_SERVER['DOCUMENT_ROOT'] )

    codice:
    echo php_file_tree($_SERVER['DOCUMENT_ROOT'], "javascript:alert('You clicked on [link]');");

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Su Wordpress non puoi mettere codice PHP che non risponde all'architettura del framework. Su WP puoi installare solo cose progettate per WP, non codice php qualsiasi, passa tutto per il front controller e il codice che non riconosce non funziona.
    Ci sono dei plugin che ti permettono l'inserimento di codice PHP personalizzato, ma chiedi maggiori informazioni su come fare nella sezione CMS.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    4
    Ok grazie mille per la risposta, mentre per quanto riguarda in locale, gli errori "undefined variable" come potrebbero essere risolti? Ho provato a inizializzare le variabili php_file_tree e code prima del loro utilizzo ma non ha funzionato

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    4
    Ho risolto installando il plug in FileAway, grazie comunque!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.