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
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
function abrirVideo(nameDelVinculo, titleDelVinculo) { if ( titleDelVinculo != "restringido" ) { //Si el video es gratuito, simplemente se abre una nueva ventana y se muestra el video, esto funciona bien. var ventana = window.open("", "X", "width=640, height=480"); ventana.document.write("<head><title>Video gratuito<\/title><\/head>"); ventana.document.write("<body>"); // Con la variable nameDelVinculo identifico qué video se quiere ver. Por ejemplo, // si se pulsó el video con name C, se visualizará el video llamado videoC.ogv ventana.document.write('<video src=\"images\/video\/video' + nameDelVinculo + '.ogv\" controls><\/video>'); ventana.document.write("</body>"); } else { var ventana = window.open("", "Y", "width=640, height=480"); ventana.document.write("<head><title>Video restringido<\/title></head>"); ventana.document.write("<body>"); ventana.document.write('<form action=\"images\/docs\/validarUsuario.php\" method=\"post\">'); ventana.document.write('Usuario<input type=\"text\" name=\"usuario\" \/>'); ventana.document.write('<br \/>'); ventana.document.write('Contraseña<input type=\"text\" name=\"contrasena\" \/>'); ventana.document.write('<br \/>'); // Este input guarda el valor C de la variable nameDelVinculo (luego vuelvo invisible este input). // Así, este valor se lleva al archivo PHP por medio de $_POST, con lo cual PHP podrá enviar el video requerido. ventana.document.write('<input type=\"text\" name=\"linkClicleado\" value=\"' + nameDelVinculo + '\" />'); ventana.document.write('<input type=\"submit\" value=\"Entrar\" \/>'); ventana.document.write('<\/form>'); ventana.document.write("<\/body>"); } }
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>';
}
}
}
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>';
?>
.