Foros del Web » Programando para Internet » PHP »

Ayuda Codigo PHP

Estas en el tema de Ayuda Codigo PHP en el foro de PHP en Foros del Web. Lo primero presentarme, jeje soy nuevo!!! Weno pos nada soy un xico de españa joven que esta intentando desarrollar una web en php. Una vez ...
  #1 (permalink)  
Antiguo 29/11/2008, 06:16
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda Codigo PHP

Lo primero presentarme, jeje soy nuevo!!! Weno pos nada soy un xico de españa joven que esta intentando desarrollar una web en php. Una vez presentado vamos al asunto.
Tengo un problema. He desarrollado un código que se descaga un archivo XML de la web de Goear para ver la dirección donde está alojado el MP3. El caso es que si el XML contiene algun carácer como & o ñ surge un problema porque el XML no es válido y PHP no me deja ver la dirección. Lo que intento es que al xml que me he bajado se le cambie el carácter "&" por el carater pero no soy capaz de desarrollar un código que haga eso... aunque debe de ser muy sencillo. Me podeis ayudar?! Gracias!
EDIT: La idea es que abra el archivo y que solo modifique los caracteres & pero con str_replace no soy capaz de hacerlo, se queda en blanco el archivo

Última edición por iaitor; 29/11/2008 a las 10:49
  #2 (permalink)  
Antiguo 29/11/2008, 07:12
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Ayuda Codigo PHP

Puedes poner la codificación del XML en utf8 y no tendras problemas con los caracteres extraños.

Si de todas formas quieres convertir los caracteres a sus entidades utiliza: htmlentities (http://es2.php.net/manual/es/function.htmlentities.php)

Un saludo!!!
  #3 (permalink)  
Antiguo 29/11/2008, 09:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Ya pero no se hacerlo...
  #4 (permalink)  
Antiguo 29/11/2008, 10:00
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

Bueno, yo hice un script para goear, lo que hacia era eso que tu pides, coger la url del mp3 y tb un formulario desde mi pagina para subir mp3s a goear sin que pasase por su web... la verdad es que nunca me dio problema con lo que tu dices de & o ñ, pero aqui te dejo el codigo...

Código:
$urlo="http://www.goear.com/listen.php?v=c467ea7";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);


echo "<a href=\"$urlFinal\">$urlFinal</a>";
si te da algun error, ponlo aqui y lo miramos...
  #5 (permalink)  
Antiguo 29/11/2008, 10:29
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

No, el tuyo si que me funciona bien de hecho le he hecho funcionar... pero el problema es si ponenos un identificador no valido... el intenta mostrarlo. He usado el comando file_exist para que diferencie pero no funciona. ¿Que puede pasar?
Código PHP:
<?
$id
=$_GET['id'];
$urlo="http://www.goear.com/listen.php?v=$id";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena $urlo;
$inicio $cadena[0];

$url=file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");
$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl $posurl strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);

$artist='artist="';
$posartist=strpos($url,$artist);
$posartist$posartist strlen($artist);
$artist=substr($url,$posartist,500);
$Finalartist=strpos($artist,'"');
$artistFinal=substr($artist,0,$Finalartist);

$title='title="';
$postitle=strpos($url,$title);
$postitle$postitle strlen($title);
$title=substr($url,$postitle,500);
$Finaltitle=strpos($title,'"');
$titleFinal=substr($title,0,$Finaltitle);


$name $artist.' - '.$title.'.mp3';
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename="'.$name.'"');
$file fopen($urlFinal'r');
fpassthru($urlFinal);

?>
Este es el código y tampoco me funciona lo del header... no me sale el cuadro para seleccionar que lo quiero guardar

Última edición por iaitor; 29/11/2008 a las 10:49
  #6 (permalink)  
Antiguo 29/11/2008, 10:37
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

ok, osea que ahora el unico problema es que quieres que aparesca un mensaje cuando no exista el tema en goear?
  #7 (permalink)  
Antiguo 29/11/2008, 10:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

jaja as contestado ahora si... eso y que te salga el cuadro de descarga en vez de la url... con lo que he puesto al final debería salir pero no aparece...
  #8 (permalink)  
Antiguo 29/11/2008, 10:43
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

bueno y k se baje directo no bastaria con:

Código:
$urlo="http://www.goear.com/listen.php?v=c467ea7";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);


header("Location: $urlFinal");
digo yo... xD lo de el mensaje dejame que piense a ver que se me ocurre...
  #9 (permalink)  
Antiguo 29/11/2008, 10:47
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

No, no vale, a mi por lo menos se me abre el Quick Time directamente en el navegador...
  #10 (permalink)  
Antiguo 29/11/2008, 10:52
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

bueno, pero eso es cosa de tu configuracion, pasa ahi y en todos los sitios al ser formato .mp3, conosco una forma de hacerlo que es mas o menos como tu lo has hecho ahi arriba, lo que pasa que eso gasta transferencia, eh?
  #11 (permalink)  
Antiguo 29/11/2008, 11:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Transferencia cuando!? los mp3 van a ir a mi sitio o no!? si es solo para los xml me da igual. y respecto a lo otro yo tengo un código que si que saca el cuadro de diálogo y tengo la misma configuración lo que pasa es que no funciona con los archivos que tienen &. Es problema del XML y no se como solucionarlo. Os lo pongo para ver si me podeis ayudar con ese:
Código PHP:
<?php
    
if($_GET['id']) {
        
$id $_GET['id'];
        
$mainid substr($id0,1);
        
$load 'files/xmlfiles/'.$mainid.'/secm'.$id.'.xml';

        
# Leer el XML
        
$xml = @simplexml_load_file('http://www.goear.com/'.$load);

        if (
$xml) {
            
$path $xml->song['path'];
            
$artist $xml->song['artist'];
            
$title $xml->song['title'];           
            
$name $artist.' - '.$title.'.mp3';

            
# Descargar
            
header('Content-type: audio/mpeg');
            
header('Content-Disposition: attachment; filename="'.$name.'"');
            
$file fopen($path'r');
            
fpassthru($file);

        } else {
            echo 
"<p align=\"center\"><b><font face=\"Verdana\" size=\"4\">Error iAGODWx0003: Identificador incorrecto o problema al leer el código XML</font></font></b></p>";
        }
    }
?>
El problema es que si teiene algún & o ñ no lo lee y yo lo que quiero es leer el xml y si hay algún caracter no legible pues que lo cambie por otro como una "y"
  #12 (permalink)  
Antiguo 29/11/2008, 11:20
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

si, la forma que utilizas ahi en el codigo que dices k si te funciona, va a utilizar la transferencia de tu hosting tambien... ese es el problema.
  #13 (permalink)  
Antiguo 29/11/2008, 11:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Da igual...
  #14 (permalink)  
Antiguo 29/11/2008, 11:26
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

pues entonces añade el codigo ese a el codigo k yo te di y ya esta...

Código:
<?

$urlo="http://www.goear.com/listen.php?v=c467ea7";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);


            header('Content-type: audio/mpeg');
            header('Content-Disposition: attachment; filename="nombre.mp3"');
            $urlFinal = fopen($path, 'r');
            fpassthru($urlFinal); 

?>
  #15 (permalink)  
Antiguo 29/11/2008, 11:27
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Ah!! Eso ya funciona pero de todos modos aun me falta lo de que me saque un mensaje si no existe. Podría ser con el comando !
  #16 (permalink)  
Antiguo 29/11/2008, 11:29
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

disculpa error mio... es asi:

Código:
<?

$urlo="http://www.goear.com/listen.php?v=c467ea7";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);


            header('Content-type: audio/mpeg');
            header('Content-Disposition: attachment; filename="nombre.mp3"');
            $urlFinal = fopen($urlFinal, 'r');
            fpassthru($urlFinal); 

?>
  #17 (permalink)  
Antiguo 29/11/2008, 11:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

por eso no te preocupes... ya esta medio solucionado, lo que me preocupa es lo que muestre un error cuando no existe la ID
  #18 (permalink)  
Antiguo 29/11/2008, 11:46
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

um, mira prueba asi:

Código:
<?

$urlo="http://www.goear.com/listen.php?v=c467ea7";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=@file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);

$urlFinal = @fopen($urlFinal, 'r');
			
if($urlFinal == FALSE){
echo "no existe";
}else{
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename="nombre.mp3"');
} 

@fclose($urlFinal); 
?>
si puedes prueba con otro navegador al habitual para evitar temas de cookies, cache etc...
  #19 (permalink)  
Antiguo 29/11/2008, 12:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Cita:
Iniciado por iaitor Ver Mensaje
Transferencia cuando!? los mp3 van a ir a mi sitio o no!? si es solo para los xml me da igual. y respecto a lo otro yo tengo un código que si que saca el cuadro de diálogo y tengo la misma configuración lo que pasa es que no funciona con los archivos que tienen &. Es problema del XML y no se como solucionarlo. Os lo pongo para ver si me podeis ayudar con ese:
Código PHP:
<?php
    
if($_GET['id']) {
        
$id $_GET['id'];
        
$mainid substr($id0,1);
        
$load 'files/xmlfiles/'.$mainid.'/secm'.$id.'.xml';

        
# Leer el XML
        
$xml = @simplexml_load_file('http://www.goear.com/'.$load);

        if (
$xml) {
            
$path $xml->song['path'];
            
$artist $xml->song['artist'];
            
$title $xml->song['title'];           
            
$name $artist.' - '.$title.'.mp3';

            
# Descargar
            
header('Content-type: audio/mpeg');
            
header('Content-Disposition: attachment; filename="'.$name.'"');
            
$file fopen($path'r');
            
fpassthru($file);

        } else {
            echo 
"<p align=\"center\"><b><font face=\"Verdana\" size=\"4\">Error iAGODWx0003: Identificador incorrecto o problema al leer el código XML</font></font></b></p>";
        }
    }
?>
El problema es que si teiene algún & o ñ no lo lee y yo lo que quiero es leer el xml y si hay algún caracter no legible pues que lo cambie por otro como una "y"
Cita:
Iniciado por codig0 Ver Mensaje
bueno, pero eso es cosa de tu configuracion, pasa ahi y en todos los sitios al ser formato .mp3, conosco una forma de hacerlo que es mas o menos como tu lo has hecho ahi arriba, lo que pasa que eso gasta transferencia, eh?
No funciona! me pone algo de Resource#id4 en la url al abrirla con fopen!
  #20 (permalink)  
Antiguo 29/11/2008, 12:11
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

toma, aqui lo tienes ahora tiene que funcionar todo ok, por favor, pruebalo con otro navegador que no sea el que has estado utilizando hasta ahora...

Código:
<?

$urlo="http://www.goear.com/listen.php?v=c467ea7p";
$urlo=str_replace("http://www.goear.com/listen.php?v=","",$urlo);
$cadena = $urlo;
$inicio = $cadena[0];

$url=@file_get_contents("http://www.goear.com/files/xmlfiles/$inicio/secm$urlo.xml");

$cadenaurl='path="';
$posurl=strpos($url,$cadenaurl);
$posurl = $posurl + strlen($cadenaurl);
$cadenaurl=substr($url,$posurl,500);
$Finalurl=strpos($cadenaurl,'"');
$urlFinal=substr($cadenaurl,0,$Finalurl);
			
if($url == FALSE){
echo "no existe";
}else{
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename="nombre.mp3"');
            $urlFinal = fopen($urlFinal, 'r');
            fpassthru($urlFinal); 
			@fclose($urlFinal); 
} 
?>
  #21 (permalink)  
Antiguo 29/11/2008, 12:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Ya lo he mirado yo y lo he arreglado. Cuando pone
Código PHP:
$urlFinal = @fopen($urlFinal'r');
            
if(
$urlFinal == FALSE){ 
lo sustituimos por
Código PHP:
$urlFinal2 = @fopen($urlFinal'r');
            
if(
$urlFinal2 == FALSE){ 
  #22 (permalink)  
Antiguo 29/11/2008, 12:17
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Ayuda Codigo PHP

mejor ponlo como te puse en mi anterior mensaje, asi no hace fopen si no existe el archivo y te ahorras tiempo de carga.
  #23 (permalink)  
Antiguo 29/11/2008, 13:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda Codigo PHP

Funcionando al 100 % con tu ultima novedad. Si alguien quiere la dirección para descargar canciones que me la pida...
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 06:54.