Foros del Web » Programando para Internet » PHP »

Como pedir password para abrir pdf

Estas en el tema de Como pedir password para abrir pdf en el foro de PHP en Foros del Web. Hola amigos. Tengo un problema, necesito que un usuario inicie sesión para poder bajar abrir un archivo "pdf", y si no inicia sesión lo mande ...
  #1 (permalink)  
Antiguo 28/09/2005, 23:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Como pedir password para abrir pdf

Hola amigos.
Tengo un problema, necesito que un usuario inicie sesión para poder bajar abrir un archivo "pdf", y si no inicia sesión lo mande a la página de registro, como ocurre en esta dirección:

http://www.nature.com/neuro/journal/...n1005-1273.pdf

Espero su ayuda por favor.
Gracias.
  #2 (permalink)  
Antiguo 29/09/2005, 07:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En realidad el PDF no es el que tiene la contraseña .. (aunque por efectos de "mod_rewrite" (re-escritura del URL) ves el .pdf ahí en la ruta .. pero quien controla la descarga efectiva es un script/CGI que por ahí está ejecutandose).

Tu ya gestionas usuarios en tu sitio?

Bueno .. si no es así o como ejemplo para tu sistema puedes guiarte de este script:

Autentificator
http://php.cluster-web.com/autentificator

Eso es la base y la gestión de usuarios .. usa sesiones .. así que tan sólo debes usarlo como los ejemplos mencionan o las variables de sesión te dejan a tu disposición .. Luego tendrás que implementar tu sistema de desarga de archivos donde PHP será el que lea el archivo y lo deje a descargar (no un link directo .. tiene que pasar por un script tuyo que será el que apliqué el código de validación de la sesión).

Esto lo puedes ir viendo en:
www.php.net/header

Un saludo,
  #3 (permalink)  
Antiguo 29/09/2005, 09:18
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Gracias Cluster por responder.
Frente a tu pregunta "si gestiono usuarios en mi sitio" la respuesta es si, uso sesiones y nivel de usuario.

Espero me des un ejemplo de como hacerlo esto del script/cgi

Gracias.
  #4 (permalink)  
Antiguo 29/09/2005, 09:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y leistes ya sobre header()? (ahí tienes ejemplos)

Tu ya sabes como usar tu sistema para validar si un usuario está o no registrado a la hora de ejecutar uno de tus scripts PHP?.

Un saludo,
  #5 (permalink)  
Antiguo 29/09/2005, 09:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Gracias nuevamente cluster.
Uso el siguiente código:

Código PHP:
<?PHP
$usuario
=$_SESSION['usuario'];
//--------inicio de verificación de si inicio sesión
if ($inisesion=="S")
{
    
//--------inicio de verificación de nivel de usuario
    
if ($_SESSION['nivel'] <= 2)
    {
        if (
$_SESSION['nivel'] == 1)
        {
?>
aqui pongo el contenido
<?
        
}
        
/*
        if ($_SESSION['nivel'] == 2)
        {
        include ("c/usr/profile_niv_2.php"); 
        } */
    
}
    else
    if (
$_SESSION['nivel'] == 5)
    {
        
$consulta="SELECT fyb_2005_i.* FROM fyb_2005_i 
        WHERE fyb_2005_i.sigla = 'CF-321' AND fyb_2005_i.semestre = '2005-I' AND fyb_2005_i.codigo = (SELECT fyb_usuarios.codigo FROM fyb_usuarios WHERE usuario = '$usuario')"
;
        
$resultado=mysql_query($consulta,$con) or trigger_error(mysql_error(),E_USER_ERROR);
        
$registros=mysql_num_rows($resultado);
        if(
mysql_num_rows($resultado)==0)
        {
        echo 
"<p align=center>";
        echo 
"<br>";
        echo 
"<br><b>¡¡¡ NO ESTAS MATRICULADO EN ESTE CURSO !!!</b>";
        echo 
"</p>";
        }
        if(
mysql_num_rows($resultado)==1
        {
?>
aqui pongo el contenido
<?
        

    }
    
//--------fin de verificación de nivel de usuario

else
if (
$inisesion=="N")
{
echo 
"<p align=center>";
echo 
"<br>";
echo 
"<br><b>¡¡¡ NO A INICIADO SESIÓN !!!</b>";
echo 
"<br>";
echo 
"<br>Para iniciar SESIÓN debe ser un usuario Registrado";
echo 
"<br>";
echo 
"<br>Para registrarse haga <a href='index02.php?seccion=usr_registrar0' class='link_m'>click aquí</a>";
echo 
"</p>";
//--------fin de verificación de si inicio sesión
}
?>
  #6 (permalink)  
Antiguo 29/09/2005, 18:16
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Algun ejemplo por alli por favor?
  #7 (permalink)  
Antiguo 30/09/2005, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. insisto .. tu has leido la documentación oficial de header()? .. tienes ejemplos ahí!!!!!!!!!

Código PHP:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>
Lo entiendes? ..

Donde almacenas tus PDF? .. los tienes relacionados en tu BD (por lo menos ahí guardas el nombre del archivo? .. pretendes llamarlos simplemente por su nombre directo?

Un saludo,
  #8 (permalink)  
Antiguo 30/09/2005, 14:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Gracias cluster.
Los leí, ví esos ejemplos y creo que es para que el usuario "reciba un cuadro de diálogo para almacenar los datos que usted envía, como en el caso de un archivo PDF generado al vuelo, puede usar la cabecera Content-Disposition para indicar un nombre de archivo recomendado y obligar a que el navegador despliegue un diálogo de guardado". Allí habla de generado al vuelo, los archivos PDF ya los tngo en una carpeta.

Los archivos PDF los almaceno en una carpeta y desde alli pretendo llamarlos. Para llamarlos puedo usar el mismo nombre como también cambiarlos.
- ¿Debo almacenar los nombres en mi base datos?

- Donde entra para obligar a que se logueen?

Gracias por responder.
  #9 (permalink)  
Antiguo 30/09/2005, 19:40
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 13 años
Puntos: 0
Una consulta, ya logre que baje el archivo supuestamente, pero solo me baja 1kb cuando realmente es 65 kb y NO se puede abrir, a que se debe esto.

Última edición por edcala; 30/09/2005 a las 19:46
  #10 (permalink)  
Antiguo 01/10/2005, 19:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si pones el código que usastes tal vez veamos el problema.

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 13:27.