Problema con links a directorios

Buenos días:
Tengo un problema con la gestión de directorios:
Por medio de una página php, a la que se accede mediante un numero de código (cada uno es diferente), se visualiza el contenido del registro de la base de datos mysql cuya idexpediente es igual a la introducida.
"hasta ahí todo me va bien", en mi carpeta raíz del sitiio web, ademas de los archivos php y las carpetas de imágenes, conexiones a la bd etc. Exiete una llamada expedientes y dentro de esta carpeta otras cuatro con nombres c1, c2, c3, c4 y dentro de estas carpetas guardo los documentos que se deben mostrar y cuyos nombres de archivo por ejemplo (plano1.jpg) o (presupuesto6.doc) son los que introduzco en la base de datos mysql para después recuperarlos.
Los muestro mediante este código :
       <a href="expedientes\disenos\"><?php echo $row_carpeta['boceto1']; ?></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc1']; ?></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado1']; ?></a></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar1']; ?></a>
Este código me genera (en caso de haber datos escritos en la bd unos LINKS a lod documentos en cuestión. Hasta ahí todo correcto y bien.
El problema me surge cuando hago "clic" en cualquier vinculo que aparezca, pues en lugar de mostrarme el contenido o el documento en cuestión, lo que me hace es redirigirme a la página index del directorio raíz mediante APACHE y me muestra ese directorio completo con lo que la confidencialidad y el acceso restringido implementado antes no me sirve de nada.
¿Qué puedo hacer para que al hacer "clic" en un link no me muestre pa página index del directorio raíz?.
Se que me extendido mucho en las explicaciones pero no he sabido definirlo de forma más breve.
Gracias

1 Respuesta

Respuesta
1
Claro;
Te estás dejando el nombre del archivo dentro del HREF, debes sustituir esto:
<a href="expedientes\disenos\"><?php echo $row_carpeta['boceto1']; ?></a></div>
Por esto:
<a href="expedientes\disenos\<?php echo $row_carpeta['boceto1']; ?>"><?php echo $row_carpeta['boceto1']; ?></a></div>
Así estás incluyendo en el vínculo, la información destino
Hola, antes que nada agradecer tu tiempo y dedicación por audar a los demás.
He realizado el cambio que me has sugerido (que en parte parece lógico), pero cuando ahora intento hacer clic en el vinculo que aparece, me da error de apache. " OBJETO NO ENCONTRADO", en cambio si lo dejo como estaba en un principio, aparece como te dije directorio completo y no puede quedarme de esta forma.
¿Puede deberse a una mala planificación del código? Una mala estructura, la verdad es que no lo se.
Ayudame por favor porque esto ya me tiene loco de los nervios:
Un saludo.
No acabo de comprender si lo que quieres al hacer click en esos vínculos exactamente, ¿qué quieres que se muestre?... si son los archivos de dentro de esa carpeta, lo deberás hacer todo por BD, no importa en que carpeta estaás porque la ruta se la das tu en todo momento, ¿no es así?
Aclárame un poquito.
Hola de nuevo:
Ante todo gracias por seguir respondiéndome. Voy a intentar explicarme mejor:
Todos los datos los tengo controlados por una base de datos en mysql.
Loa campos que tengo en una de las tablas son:
idexpediente (clave principal) le asigno yo el numero no es autonumérico.
nombrecliente, apellidos cliente, email, presupuesto, proyecto1,proyecto2,proyecto3,proyecto4,proyecto5,proyecto6,documento1,documento2,documento3,documento4,documento5,documento6,
varios1,varios2,varios3,varios4,varios,5varios6
Todos estos campos están vacíos y los voy llenando a medida que un cliente me solicita un presupuesto y o me hace un pedido en firma.
cuendo es así, voy poniendo dentro de cada campo del registro el nombre del documento "x" .doc, .jpg, .txt, etc .
Todo esto va controlado por una página web en php donde dinámicamente se accede mediante un formulario previo de identificación de expediente (expediente id) si es correcto da acceso, si no, redirige a mensaje de error.
Una vez accedido a la página si la conexión es correcta, se visualiza en modo de texto plano, el numero de expediente, el nombre, apellidos y el presupuesto dado.
Más abajo aparece una tabla con el nombre de las carpetas : documentos, proyectos y varios y en cada celda de estas tablas, si hay algu documento dentro de las carpetas mostrarlo en dormato de LINK para poder hacer clic sobre el y abrirse el documento, la foto o lo que sea.
Por ejemplo tengo en la base de datos estas introducciones:
expedienteid .... 2c584dgt31  ramon garcia perez  12.300?  y todos los campos restantes vacios.
Al entrar con el expediente id aparece en la página todos estos datos pero en la tabla de contenido de carpetas no aparece nada pues todos los campos de la bd están vacíos.
Si le escribo en la bd dentro del mismo registro en el campo por ejemplo documento3 el nombre ... permisodeobras0001.doc y en la carpeta documentos guardo el archivo word llamado permisodeobras001.doc.
Si lo visionamos ahora, aparece en el campo numero uno de la carpeta documentos ese nombre de archivo en formato LINK y al hacer clic sobre el, debería dar la opción que siempre da de abrir o descargar el archivo, en cambio lo que hace es redirigirme al index de la raíz del sitio web por medio de apache y eso es muy peligroso pues desde ahí se tiene acceso a toda la documentación que haya en las carpetas se trate o no de los documentos a mostrar para esa id de expediente.
No se si con esta explicación te servirá para darme una posible solución "si es que la hay claro".
Te pido disculpas por la extensión de este mensaje.
Un saludo y muchas gracias.
Te está yendo a la página principal porque el link que le estás dando es de una carpeta, no de un archivo concreto.
Ah, las mayúsculas... vale...
Tienes que crear los links como te he indicado, de forma que el nombre del archivo que se quiere visualizar esté dentro del HREF. Asegúrate que la dirección URL de cada documento está bien generada y accede desde una solapa nueva del navegador a la dirección del fichero, si no lo encuentra es posible que te esté devolviendo al a URL principal.
¿Tienes la página para que pueda comprobarlo desde aquí?
Hola otra vez:
No tengo la web colgada aun en internet porque estoy en fase de terminación, pero te pego aquí debajo todo el código de la página en cuestión a ver si de este modo puedes hacerte una idea de lo que pretendo hacer y si ello es posible.
Un saludo y muchas gracias por tu tiempo.
<?php require_once('Connections/otr.php'); ?>
<?php
$colname_carpeta = "-1";
if (isset($_GET['exp'])) {
  $colname_carpeta = (get_magic_quotes_gpc()) ? $_GET['exp'] : addslashes($_GET['exp']);
}
mysql_select_db($database_otr, $otr);
$query_carpeta = sprintf("SELECT * FROM expedientes WHERE idexpediente = '%s'", $colname_carpeta);
$carpeta = mysql_query($query_carpeta, $otr) or die(mysql_error());
$row_carpeta = mysql_fetch_assoc($carpeta);
$totalRows_carpeta = mysql_num_rows($carpeta);
?>
<? session_start();
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
body,td,th {
 color: #CCCCCC;
}
body {
 background-color: #602F0E;
}
a:link {
 color: #CCCCCC;
}
a:visited {
 color: #CCCCCC;
}
a:hover {
 color: #FFFFFF;
}
a:active {
 color: #CCCCCC;
}
.Estilo1 {
 font-size: 24px;
 font-weight: bold;
}
.Estilo3 {font-size: 18px}
.Estilo4 {font-size: 24px}
.Estilo5 {color: #66CCFF; font-weight: bold; font-size: 18px; }
.Estilo6 {
 font-size: 16px;
 font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body>
<div align="left">
<p><span class="Estilo4"><strong>Bienvenido a su Carpeta personal : </strong><?php echo $row_carpeta['idexpediente']; ?></span></p>
<p class="Estilo6"><strong>Aqui puede ver el contenido de los documentos que se encuentran en su carpeta de expediente. </strong></p>
<p class="Estilo6"><strong>Si no se le muestra nada, es debido a que la subcarpeta se encuentra vacia. Gr&aacute;cias.</strong></p>
<p class="Estilo3">D. / D&ordf;. <?php echo $row_carpeta['cliente']; ?> <?php echo $row_carpeta['apellido1']; ?> <?php echo $row_carpeta['apellido2']; ?> . </p>
<p>Su direcci&oacute;n de correo electr&oacute;nico es : <?php echo $row_carpeta['email']; ?><br>
  ______________________________________________________________________</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="15" colspan="3">
<p class="Estilo1"><br>
        Su presupuesto : <?php echo $row_carpeta['presupuesto']; ?></p>
<p class="Estilo1"> </p>
</td>
<td height="15"> </td>
</tr>
<tr>
<td colspan="4" bgcolor="#66CCFF"><img src="images/spacer.gif" width="100" height="3"></td>
</tr>
<tr>
<td width="25%" height="45">
<div align="center" class="Estilo5"> Dise&ntilde;os y Planos </div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Documentos</div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Estado de la obra </div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Varios</div>
</td>
</tr>
<tr>
<td width="25%" height="30">
<div align="center">
       <a href="expedientes/disenos/<?php echo $row_carpeta['boceto1']; ?>"><?php echo $row_carpeta['boceto1']; ?></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc1']; ?></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado1']; ?></a></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar1']; ?></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"><?php echo $row_carpeta['boceto2']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc2']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado2']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar2']; ?></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"><?php echo $row_carpeta['boceto3']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc3']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado3']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar3']; ?></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"><?php echo $row_carpeta['boceto4']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc4']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado4']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar4']; ?></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"><?php echo $row_carpeta['boceto5']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc5']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado5']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxilia5']; ?></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"><?php echo $row_carpeta['boceto6']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"><?php echo $row_carpeta['doc6']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"><?php echo $row_carpeta['estado6']; ?></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"><?php echo $row_carpeta['auxiliar6']; ?></a></div>
</td>
</tr>
</table>
<p> </p>
<p> </p>
<p> </p>
</div>
</body>
</html>
<?php
mysql_free_result($carpeta);
?>
OK, ahora me puedes mostrar el código fuente de esta página ejecutada, es decir, ¿cómo se ve ya en el navegador?.
Tiene pinta de que no estás poniendo bien la carpeta raíz donde están los archivos.
Hola:
Me sabe muy mal hacerte perder tanto tiempo con esto, pero yo por más vueltas que le doy, no encuentro la respuesta.
Ahí te pego el código fuente tal y como me has solicitado.
Gracias de todo corazón por tu tiempo.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
body,td,th {
color: #CCCCCC;
}
body {
background-color: #602F0E;
}
a:link {
color: #CCCCCC;
}
a:visited {
color: #CCCCCC;
}
a:hover {
color: #FFFFFF;
}
a:active {
color: #CCCCCC;
}
.Estilo1 {
font-size: 24px;
font-weight: bold;
}
.Estilo3 {font-size: 18px}
.Estilo4 {font-size: 24px}
.Estilo5 {color: #66CCFF; font-weight: bold; font-size: 18px; }
.Estilo6 {
font-size: 16px;
font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body>
<div align="left">
<p><span class="Estilo4"><strong>Bienvenido a su Carpeta personal : </strong>39026239t</span></p>
<p class="Estilo6"><strong>Aqui puede ver el contenido de los documentos que se encuentran en su carpeta de expediente. </strong></p>
<p class="Estilo6"><strong>Si no se le muestra nada, es debido a que la subcarpeta se encuentra vacia. Gr&aacute;cias.</strong></p>
<p class="Estilo3">D. / D&ordf;. cliente de prueba prueba prueba . </p>
<p>Su direcci&oacute;n de correo electr&oacute;nico es : [email protected]<br>
  ______________________________________________________________________</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="15" colspan="3">
<p class="Estilo1"><br>
        Su presupuesto : 32.584</p>
<p class="Estilo1"> </p>
</td>
<td height="15"> </td>
</tr>
<tr>
<td colspan="4" bgcolor="#66CCFF"><img src="images/spacer.gif" width="100" height="3"></td>
</tr>
<tr>
<td width="25%" height="45">
<div align="center" class="Estilo5"> Dise&ntilde;os y Planos </div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Documentos</div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Estado de la obra </div>
</td>
<td width="25%" height="45">
<div align="center" class="Estilo5">Varios</div>
</td>
</tr>
<tr>
<td width="25%" height="30">
<div align="center">
       <a href="expedientes/disenos/prueba1.doc">prueba1.doc</a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/estados/">finalizado.txt</a></a></div>
</td>
<td width="25%" height="30">
<div align="center"><a href="expedientes/varios/">permiso de obras.txt</a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"></a></div>
</td>
</tr>
<tr>
<td height="30">
<div align="center"><a href="expedientes/disenos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/documentos/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/estados/"></a></div>
</td>
<td height="30">
<div align="center"><a href="expedientes/varios/"></a></div>
</td>
</tr>
</table>
<p> </p>
<p> </p>
<p> </p>
</div>
</body>
</html>
Fíjate en lo que te he comentado:
<div align="center"><a href="expedientes/estados/">finalizado.txt</a></a></div>
Para empezar finalizas dos veces el </a>
Luego le dices que salte a la carpeta expedientes/estados/, pero no al archivo finalizado.txt, que es lo que realmente quieres abrir. Si miras el código de ejemplo que te dí, verás que te falta un trozo de PHP ahí, para indicarle cual es el archivo al que debe saltar.
Si haces un link a una carpeta, como estás haciendo ahora mismo en todos los casos, el HTACCESS de tu servidor tendrá la directiva de dirigirte al home.
Efectúa una comprobación para ver si el valor del campo en cada momento tiene valor, y si no es así, no pongas el link para impedir que hagan click ahí.
Hola otra vez:
Bueno, tu tiempo que me has dedicado ha sido excelente, tus respuestas acertadisimas, te estoy muy agradecido, tan solo puedo decirte UN MILLÓN DE GRACIAS POR TODO.
¿Sabes por qué no me funcionaba la corrección que hiciste a mi código?... pues porque el nombre del documento que pretendía abrir eres ... prueba 1.doc ... un error farrafal por mi parte ¿no?.
Cuando me he dado cuenta, simplemente he quitado el 1 y lo he dejado como prueba.doc y ahora si funciona correctamente, aunque también es cierto que sin la corrección que me hiciste no hubiera funcionado de ninguna manera.
Reitero mi gratitud.
Un abrazo.
Jordi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas