DIRECTORIOS CON PHP
Publicado por daniel (3 intervenciones) el 20/01/2017 21:03:54
Hola, me podrían ayudar tengo un directorio creado en php listando todo mi escritorio pero cuando llego a un archivo quiero abrirlo pero solo me abre su codificación , me podrían dar una ayuda?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
//Por defecto la primera vez que abrimos este explorador toma
//como carpeta la del php actual. La constante __FILE__ es la
//ruta del archivo PHP actual. Con dirname obtenemos la carpeta.
$ruta = dirname("C:/Users/DANIEL/Desktop")."/";
//Para abrir archivos necesitaremos poner la codificación
//adecuada con estos valores
//Por defecto usamos esta para htmlentities (ver más abajo)
$codificacion = "ISO-8859-1";
//Vemos si hay algo en el GET
if (isset($_GET)){
foreach($_GET as $campo=>$valor){
switch ($campo) {
//Obtenemos una ruta, carpeta o archivo
case "una-ruta":
$ruta = htmlspecialchars($valor, ENT_QUOTES);
if (get_magic_quotes_gpc() == 1) $ruta = stripslashes($ruta);
break;
//Vemos la codificación
case "una-codificacion":
$codificacion = htmlspecialchars($valor, ENT_QUOTES);
if (get_magic_quotes_gpc() == 1) $codificacion = stripslashes($codificacion);
break;
}
}
}
//Si la ruta es vacía, pone la del presente script
if ($ruta == "C:/Users/DANIEL/Desktop") $ruta = dirname("C:/Users/DANIEL/Desktop")."/";
//Esta variable contendrá la lista de nodos (carpetas y archivos)
$presenta_nodos = "";
//Esta variable es para el contenido del archivo
$presenta_archivo = "";
//Si la ruta es una carpeta, la exploramos. Si es un archivo
//sacamos también el contenido del archivo.
if (is_dir($ruta)){//ES UNA CARPETA
//Con realpath convertimos los /../ y /./ en la ruta real
$ruta = realpath($ruta)."/";
//exploramos los nodos de la carpeta
$presenta_nodos = explora_ruta($ruta);
} else {//ES UN ARCHIVO
$ruta = realpath($ruta);
//Sacamos también los nodos de la carpeta
$presenta_nodos = explora_ruta(dirname($ruta)."/");
//Y sacamos el contenido del archivo
$presenta_archivo = "<br />CONTENIDO DEL ARCHIVO: ".
$ruta."<pre>".
explora_archivo($ruta, $codificacion).
"</pre>";
}
//Función para explorar los nodos de una carpeta
//El signo @ hace que no se muestren los errores de restricción cuando
//por ejemplo open_basedir restringue el acceso a algún sitio
function explora_ruta($ruta){
//En esta cadena haremos una lista de nodos
$cadena = "";
//Para agregar una barra al final si es una carpeta
$barra = "";
//Este es el manejador del explorador
$manejador = @dir($ruta);
while ($recurso = $manejador->read()){
//El recurso sera un archivo o una carpeta
$nombre = "$ruta$recurso";
if (@is_dir($nombre)) {//ES UNA CARPETA
//Agregamos la barra al final
$barra = "/";
$cadena .= "CARPETA: ";
} else {//ES UN ARCHIVO
//No agregamos barra
$barra = "";
$cadena .= "ARCHIVO: ";
}
//Vemos si el recurso existe y se puede leer
if (@is_readable($nombre)){
$cadena .= "<a href=\"".$_SERVER["PHP_SELF"].
"?una-ruta=$nombre$barra\">$recurso$barra</a>";
} else {
$cadena .= "$recurso$barra";
}
$cadena .= "<br />";
}
$manejador->close();
return $cadena;
}
//Función para extraer el contenido de un archivo
function explora_archivo($ruta, $codif){
//abrimos un buffer para leer el archivo
ob_start();
readfile($ruta);
//volcamos el buffer en una variable
$contenido = ob_get_contents();
//limpiamos el buffer
ob_clean();
//retornamos el contenido después de limpiarlo
//aplicando la codificación seleccionada
return htmlentities($contenido, ENT_QUOTES, $codif);
}
?>
<?php
echo "<br />$presenta_nodos";
echo "<br />$presenta_archivo";
?>
Valora esta pregunta
0