Foros del Web » Programando para Internet » PHP »

fotolog: problemas con carpetas con accentos

Estas en el tema de fotolog: problemas con carpetas con accentos en el foro de PHP en Foros del Web. buenas. tengo un problema. tengo un fotolog donde cada carpeta es un album. si una carpeta (o foto) lleva un accento no se me carga. ...
  #1 (permalink)  
Antiguo 17/07/2006, 07:08
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 22 años, 2 meses
Puntos: 0
Pregunta fotolog: problemas con carpetas con accentos

buenas. tengo un problema.
tengo un fotolog donde cada carpeta es un album. si una carpeta (o foto) lleva un accento no se me carga. porque? os adjunto todo el codigo.
gracias

Cita:
require_once('funcions.php');
$album=" >> ".$_GET['album'];
if($album==' >> '){
$album="";

//cercam i imprimim els albums-directoris de la carpeta path
$path="fotos/galeria/"; //Ruta donde estan todos los albums
$directorio=opendir($path);
$i=0;
while ($subdir = readdir($directorio)) {
if ($subdir=='.' || $subdir=='..') continue;
elseif(is_dir("$path$subdir"))
$i++;
$subdirectorio[$i]=$subdir;
$enllaç[$i]="<a href=\"index.php?modul=galeriafotos&album=".$subdi r."\">
$subdir</a>";
}
closedir($directorio);
?>

<table width="90%" border="1" align="center" cellspacing="5" bordercolor="#C2C7F5">
<?php
for($i=1;$i<=count($enllaç);$i=$i+3){
echo ('
<tr>
<td width="200" height="200" align="center"><a href="index.php?modul=galeriafotos&album='.$subdir ectorio[$i].'">'
.random_img($path,$subdirectorio[$i]).'</a></td>
<td width="200" height="200" align="center"><a href="index.php?modul=galeriafotos&album='.$subdir ectorio[$i+1].'">'
.random_img($path,$subdirectorio[$i+1]).'</a></td>
<td width="200" height="200" align="center"><a href="index.php?modul=galeriafotos&album='.$subdir ectorio[$i+2].'">'
.random_img($path,$subdirectorio[$i+2]).'</a></td>
</tr>
<tr>
<td width="200"><p align="center">'.$enllaç[$i].'</p></td>
<td width="200"><p align="center">'.$enllaç[$i+1].'</p></td>
<td width="200"><p align="center">'.$enllaç[$i+2].'</p></td>
</tr>
<tr><td height="10" colspan="3"></td></tr>');
}
echo "</table>";
}
else{
$path="fotos/galeria/".($_GET['album'])."/";//Ruta on estan els albums
//Si no existeix l'album-directori, mostram error i aturam
if(!is_dir($path)){
echo '<p><font color="#FFFFFF">_</font><img src="images/del.gif" height="20"> <font size="3">
<strong>ERROR:</strong></font> Aquest àlbum no existeix.</p>';
echo '<p align="right"><a href="index.php?modul=galeriafotos">Tornar</a></p>';
include_once('footer.php');
exit();
}

// imprimir titol de navegació
echo "<h1><a href=index.php?modul=galeriafotos>Galeria de fotos del CB Petra</a>$album</h1>";

//cercam i imprimim les fotos del directori
echo '<p>Clica sobre una foto per ampliar-la</p>';
$directorio=opendir($path);
$i=0;
while ($archivo = readdir($directorio)) {
if ($archivo=='.' || $archivo=='..' || $archivo=='Thumbs.db') continue;
$i++;
$enllaç_foto[$i]='<img src="'.$path.$archivo.'" height="120" alt="Clica per ampliar" border="0" class="madelink"
onClick="ampliarfoto(this.src);">';
// $enllaç_foto[$i]='<a href="javascript:MM_openBrWindow(\'veurefoto.php?p ath='.$path.$archivo.'\',\'foto\',\'height=700
// width=700 left=10 top=0 status=no\');"><img src="'.$path.$archivo.'" height="120" alt="Clica per ampliar" border="0"></a>';

}
closedir($directorio);
echo '<table width="90%" border="1" align="center" cellspacing="5" bordercolor="#C2C7F5">';
for($i=1;$i<=count($enllaç_foto);$i=$i+3){
echo ('
<tr>
<td width="200" height="200" align="center">'.$enllaç_foto[$i].'</td>
<td width="200" height="200" align="center">'.$enllaç_foto[$i+1].'</td>
<td width="200" height="200" align="center">'.$enllaç_foto[$i+2].'</td>
</tr>');
}
echo "</table>";
echo "<p align=\"right\"><a href=\"javascript:history.back(-1);\">Tornar</a></p>";
}
?>
  #2 (permalink)  
Antiguo 17/07/2006, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En principio para evitar problemas con acentos, dieresis y demás caracteres de ese estilo, debes "codificar" el URL en un formato standard con urlencode()

Por ejemplo:

$enllaç[$i]="<a href=\"index.php?modul=galeriafotos&album=".urlenc ode($subdir)."\">


Usalo en todos los link y "src" que uses ...

Evita usar caracteres como la "C trencada" (no la tengo en mi teclado .. ;( ) en nombres de variables y demás código PHP, evitaras muchos problemas ojo con eso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/07/2006, 05:39
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 22 años, 2 meses
Puntos: 0
Gracis Cluster por tu respuesta pero lo he estado intentado esos días y nada...
Poder $enllaç[$i]="<a href=\"index.php?modul=galeriafotos&album=".urlenc ode($subdir)."\"> me funciona pero en los src no... La imagen después no aparece...
Tengo que usar urldecode en algun sitio? En teoria tengo que dejarlo así?:
Cita:
$enllaç_foto[$i]='<img src="'.urlencode($path.$archivo).'" height="120" alt="Clica per ampliar" border="0" class="madelink"
onClick="ampliarfoto(this.src);">';
???
Gracias
  #4 (permalink)  
Antiguo 19/07/2006, 05:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Pero en ese ejemplo usas javascript (esa función "apliarfoto()") tal vez ese proceso de "codificación" del URL lo tengas que hacer en javascript o tratarlo de otra manera ..

Te recomiendo colocar el código HTML/javascript generado por PHP (aplicando el urlEncode()) y preguntar en el foro de javascript si es necesario codificar o no un URL o de que forma exacta para que esa función javascript funcione correctamente.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:16.