Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] La etiqueta HTML <video> tiene problema con PHP

Estas en el tema de La etiqueta HTML <video> tiene problema con PHP en el foro de PHP en Foros del Web. Otra vez yo, ¡carajo!, javascript y php se han puesto en mi contra. Antes de presentar códigos y el problema, les digo qué quiero hacer. ...
  #1 (permalink)  
Antiguo 18/04/2013, 14:21
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 8 meses
Puntos: 22
Sonrisa La etiqueta HTML <video> tiene problema con PHP

Otra vez yo, ¡carajo!, javascript y php se han puesto en mi contra.

Antes de presentar códigos y el problema, les digo qué quiero hacer. Tengo una galería de videos. Unos son restringidos, así que hay que logearse para verlos, otros son gratuitos. Si el video es gratuito, el title del link está vacío. Si el video es restringido, el title del link dice: restringido. Cuando el video es gratuito se muestra el video inmediatamente y aquí no hay problema. Si el video es restringido entonces se abre una nueva ventana con un formulario con usuario y contraseña. Cuando se da clic al submit se carga un doc PHP que valida al usuario, si la clave y contraseña son incorrectas simplemente no se muestra el video. Hasta aquí no hay problema. Si son correctas, entonces debe mostrarse el video elegido. Pero PHP no muestra el video. Pone el reproductor en pantalla, y éste dice que el tipo MIME del archivo no existe.

Estos son los links:
Código HTML:
Ver original
  1. <div>
  2.       <a href="#n" name="A" title="restringido" onclick="abrirVideo(this.name, this.title)"></a>
  3.     </div>
  4.     <div>
  5.       <a href="#n" name="B" title="" onclick="abrirVideo(this.name, this.title)"></a>
  6.     </div>
  7.     <div>
  8.       <a href="#n" name="C" title="restringido" onclick="abrirVideo(this.name, this.title)"></a>
  9.     </div>
  10.     <div>
  11.       <a href="#n" name="D" title="restringido" onclick="abrirVideo(this.name, this.title)"></a>
  12.     </div>

Cuando se da clic a un link se abre con javascript una nueva ventana que checa si el video es gratuito o no. Si el video es restringido, entonces se abre el formulario y cuando se da clic al submit se llama al archivo validarUsuario.php. Aquí el javascript:
Código Javascript:
Ver original
  1. function abrirVideo(nameDelVinculo, titleDelVinculo)
  2.     {
  3.         if ( titleDelVinculo != "restringido" )
  4.         { //Si el video es gratuito, simplemente se abre una nueva ventana y se muestra el video, esto funciona bien.
  5.             var ventana = window.open("", "X", "width=640, height=480");
  6.             ventana.document.write("<head><title>Video gratuito<\/title><\/head>");
  7.             ventana.document.write("<body>");
  8.  
  9. // Con la variable nameDelVinculo identifico qué video se quiere ver. Por ejemplo,
  10. // si se pulsó el video con name C, se visualizará el video llamado videoC.ogv
  11.             ventana.document.write('<video src=\"images\/video\/video' + nameDelVinculo + '.ogv\" controls><\/video>');
  12.             ventana.document.write("</body>");
  13.         }
  14.         else
  15.         {
  16.             var ventana = window.open("", "Y", "width=640, height=480");
  17.             ventana.document.write("<head><title>Video restringido<\/title></head>");
  18.             ventana.document.write("<body>");
  19.             ventana.document.write('<form action=\"images\/docs\/validarUsuario.php\" method=\"post\">');
  20.             ventana.document.write('Usuario<input type=\"text\" name=\"usuario\" \/>');
  21.             ventana.document.write('<br \/>');
  22.             ventana.document.write('Contraseña<input type=\"text\" name=\"contrasena\" \/>');
  23.             ventana.document.write('<br \/>');
  24.  
  25. // Este input guarda el valor C de la variable nameDelVinculo (luego vuelvo invisible este input).
  26. // Así, este valor se lleva al archivo PHP por medio de $_POST, con lo cual PHP podrá enviar el video requerido.
  27.             ventana.document.write('<input type=\"text\" name=\"linkClicleado\" value=\"' + nameDelVinculo + '\" />');
  28.             ventana.document.write('<input type=\"submit\" value=\"Entrar\" \/>');
  29.             ventana.document.write('<\/form>');
  30.             ventana.document.write("<\/body>");
  31.         }
  32.     }

Supongamos que el video es restringido y el usuario se logea, entonces se llama el archivo validarUsuario.php, que contiene:
Código PHP:
    if ( (!isset($_POST["usuario"])) || (!isset($_POST["contrasena"])) )
    {
        echo 
'Necesitas logearte primero para acceder a esta zona';
    }
    else
    {
        
$archivo file("users.txt");
        
$cuenta  count($archivo);
        for (
$i=0$i<$cuenta$i++)
        {
            
$filaDividida explode(":"$archivo[$i]);
            
$user         $filaDividida[0];
            
$pass         $filaDividida[1];
            if ( (
$_POST["usuario"] == trim($user)) && ($_POST["contrasena"] == trim($pass)) )
            {
                echo 
'<video src="video' $_POST["linkClicleado"] . '.ogv" controls="controls"></video>';
            }
        }
    } 
Aquí está el problema.
No se visualiza el video con estas instrucciones PHP. Juro por mi madre, en paz descanse, que le he movido infinidad de veces, haciendo pruebas y repruebas.
Creo que pude filtrar un poco dónde está el error, aunque no de modo exacto.
Vean.

Si en el archivo validarUsuario.php se quita toda la programación PHP que valida al usuario (que es el código de aquí arriba), y sólo se pone las intrucciones PHP necesarias para ver el video que el usuario eligió, entonces sí se visualiza el video:
Código PHP:
    <?php
      
echo '<video src="video' $_POST["linkClicleado"] . '.ogv" controls="controls"></video>';
    
?>
Esto significa que la variable linkClicleado sí contiene la letra que identifica al link que fue elegido por el usuario. Pero si incluimos este mismo código dentro del código PHP que valida al usuario, ya no funciona. O sea, si resulta correcta la validación del usuario entonces se ejecuta este mismo código, pero en este contexto no funciona. ¿Por qué?





.
  #2 (permalink)  
Antiguo 18/04/2013, 14:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 6 meses
Puntos: 2534
Respuesta: La etiqueta HTML <video> tiene problema con PHP

Entiende que PHP nada tiene que ver aquí, PHP imprime lo que tu le indicas, la etiqueta <video> no es PHP sino HTML5.

Ahora, ¿al revisar el código HTML generado por tu código PHP está correctamente formado?

El único problema que podría pasar con PHP es que no imprima correctamente los valores, pero si no los revisas jamás te vas a enterar de si están bien o no.

La linea de código que has aislado no tiene consigo ningún tipo de error evidente, al menos no dentro de lo que PHP respecta.

¿Por qué?

No lo sabemos, si no analizas el código generado en tu navegador está complicado que nosotros adivinemos las causas.

PDTA: no abuses del formato para escribir tus temas, no somos retrasados como para no entender lo que nos estás tratando de decir.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/04/2013, 17:29
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 8 meses
Puntos: 22
Respuesta: La etiqueta HTML <video> tiene problema con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Entiende que PHP nada tiene que ver aquí, PHP imprime lo que tu le indicas, la etiqueta <video> no es PHP sino HTML5.
Ahora, ¿al revisar el código HTML generado por tu código PHP está correctamente formado?
El único problema que podría pasar con PHP es que no imprima correctamente los valores, pero si no los revisas jamás te vas a enterar de si están bien o ...
...
...

Carajo! Si uno no es exacto a la hora de redactar su problema, nos salen con: "Sé más específico, no somos adivinos para saber a qué te refieres con esto y esto otro", o "Mejor postea el código al que te refieres porque así no se entiende, tienes que ser más claro en tus comentarios".

Si soy muy específico en mis anotaciones es para evitar en la medida de lo posible que quien me lea no se pierda y diga: "y esta variable de dónde salió!". Soy sumamente claro para que quien lee entienda a la perfección mi problema. Creo que, al menos en estos casos, es mejor el exceso que el defecto.

Además, sí, ya sé que la etiqueta <video> es html. ¿Y cómo que PHP nada tiene que ver aquí, si mi problema es precisamente eso, que (por la razón que se te antoje) PHP no imprime en pantalla lo que yo quiero que imprima, o sea, una etiqueta HTML? Evidentemente aquí tengo yo un conflicto entre HTML y PHP, ya sea que uno de los dos, o los dos, estén mal estructurados. Pero de que hay un problema, hay un problema con HTML y PHP. Y si no es así, ¿a dónde su señoría me recomienda que mande el post, al foro de HTML? ¿O, quizá, que resuelva yo mismo el problema y después, sólo después, postee aquí para decirle a usted que ya sé cuál era el problema exacto?


Pero te voy a hacer caso en una cosa: voy a revisar minuciosamente (otra vez) el PHP y el HTML, a ver si no falta o sobra algo.

Posdata: ¿cómo sabes que no sé que la etiqueta <video> es de HTML? Es bastante claro que lo sé, tanto, que en el título de este post lo afirmo!

Última edición por berkeleyPunk; 18/04/2013 a las 17:51
  #4 (permalink)  
Antiguo 18/04/2013, 17:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: La etiqueta HTML <video> tiene problema con PHP

A lo que @pateketrueke se refiere es que no hay problema evidente con PHP, ni sintaxis ni logica, la unica posible razón es que no se envían (desde el formulario) los datos necesario o se envían de manera erronea, has un debug de la variable "linkClicleado" desde javascript pasando por el formulario y ve que se envie correctamente mediante POST...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 18/04/2013, 18:15
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 8 meses
Puntos: 22
Respuesta: La etiqueta HTML <video> tiene problema con PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
A lo que @pateketrueke se refiere es que no hay problema evidente con PHP, ni sintaxis ni logica, la unica posible razón es que no se envían (desde el formulario) los datos necesario o se envían de manera erronea, has un debug de la variable "linkClicleado" desde javascript pasando por el formulario y ve que se envie correctamente mediante POST...
Sí, muy bien. Entiendo bien lo que comentas NEMUTAGK y voy ahora mismo a revisar mis códigos.

Posdata: ahorita mismo acabo de recordar a Ruben Aguilar, ex-vocero de ese agricultor que tuvimos por presidente de la República aquí en México. No sé si sepas, pero ese Rubén salía cada rato ante los micrófonos para excusar todos los desatinos de Vicente Fox. Desatinos que no eran pocos. No digo que pateketrueke sea un agricultor, evidentemente no lo es, tiene no sé cuantos puntos por responder posts de PHP y otros tantos en html. Pero nadie negará que resulta bastante molesto que te hablen (o escriban) así, diciendote que no revisas tus propios códigos, que no analizas lo generado en tu navegador, etc. Carajo, evidentemente soy muy escrupuloso en mis códigos, se muestra en la forma en redactar este post, con formato y toda la cosa. Con que él hubiera dicho: "Mira, tienes que fijarte muy bien en qué es lo que devuelve PHP, porque quizá el problema se encuentre en que PHP no reconoce la variable tal o cual...", pero no, tiene que salir con: eres descuidado y yo no voy a adivinar tu bronca. Las palabras de paquetetruene o como se llame, me recuerdan un pasaje de las "Almas muertas" de Gogol, en donde se afirma que cuanto más pequeña es la esfera de autoridad de una persona, más abusa de ella ante sus subordinados. En este caso, este muchacho, patequertruene, tiene cierta autoridad aquí en forosdelweb, por sus 800 puntotes en PHP y ciento treinta y no se qué en HTML, y talvez, no estoy seguro, eso es el fundamento de su estilo prepotentón y displicente. Quizá estoy equivocado, quizá no, pero es buena hipótesis y yo la sostengo como algo lógicamente posible.

Última edición por berkeleyPunk; 18/04/2013 a las 18:32
  #6 (permalink)  
Antiguo 19/04/2013, 11:51
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 8 meses
Puntos: 22
Encontré la solución!

Le puse y quité tantas cosas al código, que no puedo decir exactamente dónde estaba el error. Pero seguro estaba entre una de dos opciones:

1. o metí el echo que debería imprimir la etiqueta <video>, dentro de <script> y </script>,

2. o la ruta del archivo no era exacta (estoy casi seguro que el problema fue esta última opción).

Con respecto de la segunda opción, hoy aprendí que no es lo mismo:

Joomla/images/video/videoA.ogv

que:

/Joomla/images/video/videoA.ogv

Bueno, no vuelve a pasar.

Y gracias a paquetetruene, que a pesar de su actitud prepotentona, dijo algo valioso: que busquemos y rebusquemos dentro de nuestros códigos hasta encontrar el problema (y con esto no estoy diciendo que inicialmente yo mismo no haya buscado, sino que, quizá, debí buscar un poco más antes de pedir ayuda).
  #7 (permalink)  
Antiguo 19/04/2013, 11:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: La etiqueta HTML <video> tiene problema con PHP

De hecho no solo no es lo mismo, si no la diferencia es enorme, al anteponer una diagonal a la URL le indicas al servidor que la carpeta joomla esta en la raiz del servidor, en cambio, sin la diagonal le indicas que dicha carpeta esta al mismo nivel desde el archivo que hace la petición....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 19/04/2013, 12:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 6 meses
Puntos: 2534
Respuesta: La etiqueta HTML <video> tiene problema con PHP

Que bueno que hayas solucionado tu problema.

Saliendo de eso quiero compartirte que no se trata de "autoridad" ni nada del estilo, siempre trato de comunicarme a través de la experiencia, y ciertamente la experiencia me dice que hay que observar mas de una vez un problema y analizar todos los contextos posibles, usando las herramientas conocidas para indagar mas información de lo aparentemente evidente.

La evidencia que nos mostrabas no era suficiente para llegar a ver algo, lo bueno es que te tomaste tu tiempo y aplicaste un poco más de esfuerzo para entender tu problemática.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/04/2013, 14:20
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 8 meses
Puntos: 22
Respuesta: La etiqueta HTML <video> tiene problema con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Que bueno que hayas solucionado tu problema.
La evidencia que nos mostrabas no era suficiente para llegar a ver algo, lo bueno es que te tomaste tu tiempo y aplicaste un poco más de esfuerzo para entender tu problemática.
Eso!
Bien escrito!
Así como escribiste esto último, así está bien, caes bien y uno se anima a decir: "gracias amigo por tu respuesta". Qué ésta sirva o no, no importa, pero se abre la puerta al diálogo que nos ocupa, que es programación y no reyertas inútiles.

Saludos.

Etiquetas: html, javascript+php
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 18:00.