Foros del Web » Programando para Internet » PHP »

Cambiar el "level" de sesion

Estas en el tema de Cambiar el "level" de sesion en el foro de PHP en Foros del Web. He puesto en mi web un sistema de loguin para poder entrar a mi apartado de noticias y insertar y borrar noticias. El problema es ...
  #1 (permalink)  
Antiguo 04/12/2006, 04:24
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Cambiar el "level" de sesion

He puesto en mi web un sistema de loguin para poder entrar a mi apartado de noticias y insertar y borrar noticias.

El problema es que he cogido un código de un tutorial sobre loguear usuarios, el fichero "login.php"
Código PHP:
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form
{

//Creamos el form k irá a autentificar.php para comprobar los datos con la tabla users
echo '<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
<input type="submit" name="submit" value="Enviar"></form>'
;

}else{

//SI se ha logeado, mostramos el nick y la opción de deslogearse
//Este sería el menú que saldría a la gente que esta logeada, se puede modificar y añadir cosas
echo 'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '<br>Tu level es '.$_SESSION[level]; //mostramos el level del user
if($_SESSION[level] == 1
{
//mostramos el link para ir a la pagina privada porque el user tiene level 1 (*Nota: el level por defecto es 2, por lo tanto no se le mostrará)
//*Nota2: para cambiar el level a 1, se tiene k hacer manualmente por phpmyadmin
echo '<br><a href=insertar.php>Ir a pagina privada</a>'
}
echo 
'<br><a href=logout.php>Salir</a>'//link para deslogearse, iría a logout.php

}

?>
Mi problema es que el usuario entra en la sesion con level=2 y no se como cambiarlo manualmente en phpMyAdmin, lo que he hecho es que aunque el usuario sea level=2 entre a la pagina privada
Código PHP:
echo '<br><a href=insertar.php>Ir a pagina privada</a>'
pero una vez dentro de insertar, que es donde pongo las noticias no me funciona, me da el error (cosa que antes de poner lo del usuario no me da) de que no puede guardar la imagen en el servidor. Este error es una comprobacion que hago en el archivo insertar.php.

¿¿Ahora que estoy gastanto sesiones tengo que modificar algo en mi archivo insertar.php??

Si no lo entendeis intentaré explicarme mejor
  #2 (permalink)  
Antiguo 04/12/2006, 04:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Fíjate si en insertar no estas validando con level = 1 que podría ser el problema o pon el código de tu comprobación para ver que esta pasando.
__________________
Saludos!
Mty-NL..
  #3 (permalink)  
Antiguo 04/12/2006, 05:06
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
HerSAn es que es la primera vez que gasto esto de las sesiones y no lo controlo mucho, en lo de insertar noticias (insertar.php) es un formulario y le envia los datos a procesar.php que es un script que hace las comprobaciones e insertar en la base de datos si va todo bien.

procesar.php

Código PHP:
<?php 
       
include("conex.php"); 
       
$link=Conectarse(); 
       
$titulo=$_POST['titulo']; 
       
$categoria=$_POST['categoria']; 
       
$comentario=$_POST['comentario'];
       
//Variable para saber si se produce algun error
       
$error=0;
    
        
// Guarda las caracteristicas de la imagen
        //nombre_archivo=al directorio y al nombre que quieres que se guarde la foto
        
$nombre_archivo "img/".$_FILES['imagen']['name']; 
        
//tipo_archivo= a la extension del archivo en nuestro caso solo aceptamos imagenes (jpg, gif y png)
        
$tipo_archivo $_FILES['imagen']['type'];
        
// tamano_archivo= Almacena el tamaño del archivo en bytes
        
$tamano_archivo $_FILES['imagen']['size']; 
        
//compruebo si las características del archivo son las que deseo 
        
if($nombre_archivo!='img/'){
        if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 200000))) { 
          
//el tamaño o la extension del archivo no son correctas se pone error=1
          
$error=1;

                         
        }else{ 
        if (
move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre_archivo)){
         
// El archivo ha sido cargado con éxito     
           
        
        
}else{ 
        
//No se ha podido guardar el archivo en el servidor error=2
        
$error=2;
               
         } 
       }
       }
           
// Comprueba si tiene algun error
               
if ($error==1){
            echo 
"<script> alert (\"El archivo no debe tener un tamaño superior a 200 KB y deber ser JPG o GIF\"); </script>";
            echo 
"<script language=Javascript> location.href=\"insertar.php\"; </script>";
            die(); }
            elseif (
$error==2){
            echo 
"<script> alert (\"No se ha podido guardar la imagen en el SERVIDOR \"); </script>";
            echo 
"<script language=Javascript> location.href=\"insertar.php\"; </script>";
            die(); 
            }
            
//si no hay errores se inserta en la TABLA
            
else{
            
mysql_query("insert into noticias(titulo,categoria,comentario,imagen) values ('$titulo','$categoria','$comentario','$nombre_archivo')");   
           
             
header("Location: ./insertar.php"); 
               }
?>
El problema es que no se que hay que modificar de los archivos que ya tenia hechos para insertar noticias para que funcione con las sesiones.
Hay que utilizar algun tipo de variables o algo por el estilo??
Gracias!
  #4 (permalink)  
Antiguo 04/12/2006, 05:57
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Antes de todo puedes por favor reproducir el error que te envia php cuando intenta manejar la peticion que envias en el form?
__________________
Saludos!
Mty-NL..
  #5 (permalink)  
Antiguo 04/12/2006, 06:22
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
No me da error de php, si no una ventana de alerta cuando hago comprobaciones con la imagen que quiero subir al servidor, me dice que no se puede guardar en el servidor, este error es cuando en procesar.php hace esto
Código PHP:
             if (move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre_archivo)){
         
// El archivo ha sido cargado con éxito     
           
        
        
}else{ 
        
//No se ha podido guardar el archivo en el servidor error=2
        
$error=2
o sea que no puede guardar la imagen en el directorio donde le he dicho.

Tambien me gustaria saber lo que tengo que poner en el archivo insertar.php para que solo se pueda acceder a el si estas bien logueado
gracias!!
  #6 (permalink)  
Antiguo 04/12/2006, 06:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
1.- Para eso debe de haber otro problema que no tiene nada que ver con la sesion, puede ser problema de escritura en el directorio

2.- para validar que esta con login en la aplicacion solo agrega la siguiente logica a cada una de tus paginas, segun lo que viene en el codigo que empleaste.
Código PHP:
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if(!isset($_SESSION[usuario]) ){
 
// lo que tengas que hacer si esta con login
//comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form

__________________
Saludos!
Mty-NL..
  #7 (permalink)  
Antiguo 04/12/2006, 07:06
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
ok gracias!!
pero lo del error del directorio me estraña por que si no pongo lo de sesiones, para acceder con usuario si que funciona perfectamente.
A ver si consigo sacar el problema

Lo del punto 2 si que me ha funcionado!!
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 16:23.