Foros del Web » Programando para Internet » PHP »

str_replace para una extension

Estas en el tema de str_replace para una extension en el foro de PHP en Foros del Web. Amigso os explico haber si me podeis ayudar: Mando mediante un link a una pagina llamada ver.php y con ella le mando una variable que ...
  #1 (permalink)  
Antiguo 23/08/2004, 18:50
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Exclamación str_replace para una extension

Amigso os explico haber si me podeis ayudar:

Mando mediante un link a una pagina llamada ver.php y con ella le mando una variable que su valor es el nombre del video :

ejemplo:
Código PHP:
ver.php?video=playa.wmv 
Bien entonces la pagina ver recoje la variable video en dos zonas la 1º es en un objeto del window media player para que reproduzca el video.

La segunda es en la ruta de una foto que previamente se llama igual que el videoel caso es que necesito que a la foto le quite la extension del video osea " .wmv " y que solo imprima en este caso " playa " lo e echo de la siguiente manera pero no me funciona.

Código PHP:
<?php
$_GET
['video'] = str_replace(".wmv","",$_GET['video']);
$_GET['video'] = str_replace(".wmv","",$_GET['video']);
echo 
$video ?>
alguna idea para quitar la extension ?


y otra preguntilla como puedo leer en php el tamaño del video y mostrarlo?
Muchas Gracias !
__________________
Si la vida te da la espalda tocale el culo

Última edición por freedatos; 23/08/2004 a las 19:08
  #2 (permalink)  
Antiguo 23/08/2004, 19:56
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 22 años, 5 meses
Puntos: 1
Código PHP:
$_GET['video'] = str_replace(".wmv","",$_GET['video']); 
echo 
$video ?> 
tu error esta en que nunca haz creado la variable $video

si haces un echo $_GET['video'] tal vez funcione


sobre lo del tamaño del video esta la funcion

http://www.php.net/file_size
solo que solo funciona con archivos locales :)
__________________
Usuario Registrado de linux #374849
  #3 (permalink)  
Antiguo 23/08/2004, 20:00
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Pero video ya lo paso por la URL ya lo traigo no ?
__________________
Si la vida te da la espalda tocale el culo
  #4 (permalink)  
Antiguo 23/08/2004, 20:03
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
vale vale
que cazurro jajaj
esto pasa a veces por falta de sueño xD gracias por abrirme los ojos

bueno pa que ande perdio aqui ta :

Código PHP:
<?php $m$_GET['video'] = str_replace(".wmv","",$_GET['video']); 
echo 
$m ?>
__________________
Si la vida te da la espalda tocale el culo
  #5 (permalink)  
Antiguo 23/08/2004, 20:04
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 22 años, 5 meses
Puntos: 1
*/// edit

para que haces eso?
no es mas facil acceder al $_GET['video'] sin tener que crear otras variables
Código PHP:
<?
$m 
$_GET['video'] = str_replace(....
echo 
$m;

$_GET['video'] = str_replace(...
echo 
$_GET['vide'];
?>
si pero $video es una varible comun y corriente si tienes register_globlals = off entonces no puedes acceder de esa forma a tus variables tipo GET (ni post ni naa de eso)
teneis que accesar a esa variable como $_GET['video'] o hacer



$video = $_GET['video'];
__________________
Usuario Registrado de linux #374849

Última edición por sir_notos; 23/08/2004 a las 20:07
  #6 (permalink)  
Antiguo 23/08/2004, 22:28
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Muy mala idea pasar el nombre completo del archivo por la url... estás dejando una puerta abierta para que accedan a otras partes de tu servidor o a algunos archivos restringidos.
Mejor es pasar un identificador del archivo, y haces un controlador que obtenga el nombre del archivo a partir del identificador...
Una forma sencilla (sólo pa ilustrar más o menos), puede ser utilizar un array o los sacas de la BD, o de .txt... o de donde quieras. Yo te pongo un ejemplo con array asociativo:

Para el link pones:
Código PHP:
ver.php?video=playa 
Y en ver.php pones:
Código PHP:
$archivos['playa']['nombre_archivo'] = "playa.wmv";
$archivos['playa']['texto'] = "La playa";
$archivos['arena']['nombre_archivo'] = "arena032.wmv";
$archivos['playa']['texto']="La arena";
//Y así con todos los archivos que tengas


//Y ahora accedes al archivo:
//Primero validas que el identificador que enviaron por URL está dentro de tu array:
if(isset($archivos[$_GET['video']])){
   echo 
"Nombre de archivo: ".$archivos[$_GET['video']]['nombre_archivo'];
   echo 
"<br />";
   echo 
"Texto para mostrar: ".$archivos[$_GET['video']]['texto'];
}else{
   echo 
"El archivo que busca no existe";

Hacer esto es más seguro y limpio que pasar el nombre del archivo.
Si hay varios scripts que deben acceder al array, haces un "archivos.php" que contenga todo el array $archivos y lo incluyes (vía include()) donde lo necesites.... pero si la cantidad de archivos posibles es demasiada... tal vez te convendría ir pensando en una base de datos.

Saludos

Última edición por jpinedo; 23/08/2004 a las 22:29
  #7 (permalink)  
Antiguo 24/08/2004, 16:57
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 22 años, 5 meses
Puntos: 1
no creo que alla mucho problema con eso pues solo esta cargando un video el problema es cuando la variable esta dentro de un include

lo peor que te pueden hacer es meter otro videoo otro tipo de objeto que dudo que funcionara ;)


aunque siempre es una buena practica :)
__________________
Usuario Registrado de linux #374849
  #8 (permalink)  
Antiguo 24/08/2004, 19:17
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Cita:
Iniciado por sir_notos
no creo que alla mucho problema con eso pues solo esta cargando un video el problema es cuando la variable esta dentro de un include
Te equivocas... esta "debilidad" no es exclusiva de la función include().
El problema se presenta al enviar ese archivo al navegador.... sea como sea que lo envíes.
En este caso... depende de cómo esté accediendo al achivo que contiene el video (cosa que no sabemos).
Pero de todas maneras tiene que haber un controlador que "controle" (valga la "rebuznancia") qué entradas por URL son válidas y qué hacer con cada una de ellas.
No sólo es una buena práctica por el orden o la limpieza... lo es sobretodo por la seguridad... y ahí hay que saber discenir entre una "buena práctica" y una "necesidad". (todo eso es relativo)

Saludos

Última edición por jpinedo; 24/08/2004 a las 19:24
  #9 (permalink)  
Antiguo 24/08/2004, 19:23
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno.. me imagino que muchos ya lo habrán leído, pero dejo la referncia al tutorial de webstudio "Creando webs modulares" que publicó en zonaPHP hace algún tiempo:
http://www.zonaphp.com/index.php?mod...ion=leer&id=34

Aunque no es de webs modulares que estábamos hablando, creo que él explica mejor que yo estas cosas de la seguridad. En la segunda página se trata del tema de pasar nombres de archivos por URL con cierto detalle.

Saludos
  #10 (permalink)  
Antiguo 24/08/2004, 20:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Al hilo de seguridad y filtrado de todo dato "externo" que podamos aceptar en nuestros scripts PHP .. está el tema de evitar lo que denominan:

Cross-site scripting

Sería recomendable leer estos tutoriales al respecto (son bastante interesantes).
http://www.phplibrairies.com/index.p...ecure+your+url
http://www.onlamp.com/pub/a/php/2003..._security.html

Un saludo,
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 19:30.