Comunidad de diseño web y desarrollo en internet online

Varialbes de sesion y copy();

Citar            
MensajeEscrito el 20 Ago 2009 11:29 pm
Saludos.
Ultimamente he tenido problemas con las variables de sesion en scripts de subida de ficheros al servidor.
Ponco el codigo a ver si algun maestro me enseña el motivo.
Antes que nada decir que $rango == 100 significa tener permisos de administrador para poder hacer lo ke hay ke hacer.
¿Por que si descomento las primeras lineas y rango vale 100 no va?
Un saludo y 1.000.000 de gracias.

<?php
//session_start();
//$rango = $_SESSION['rango'];
//$_SESSION['rango'] = $rango;
//if($rango == 100){

$idlocal = $_REQUEST['idlocal'];
$nombreevento = $_REQUEST['nombreevento'];
$dia_inicio = $_REQUEST['dia_inicio'];
$dia_fin = $_REQUEST['dia_fin'];
$comentarios = $_REQUEST['comentarios'];
require_once("clases/bd.php");
//Obtenemos la id del nuevo evento
$id = getNewIdEvento();
if($id != null){
//Obtenermos el nombre de la imagen del evento a partir de su id
$extension = ".jpg";
$directorio_imagen = "images/eventos/";
$directorio_thumb = "images/eventos/thumb/";
$ruta_imagen = $directorio_imagen . $id . $extension;
$ruta_thumb = $directorio_thumb . $id . $extension;
$tamanyo = "205";
//Comprobamos que las rutas esten disponibles
if(file_exists($ruta_thumb)){
unlink($ruta_thumb);
}
if(file_exists($ruta_imagen)){
unlink($ruta_imagen);
}
//Copiamos la imagen al servidor
if(copy($_FILES['Filedata']['tmp_name'], $ruta_imagen)){
if(crearthumbnail($ruta_imagen, $ruta_thumb, $tamanyo, 30)){
$bdID=conectarBD();
if($bdID){
$st='
INSERT INTO `eventos` (
`id` ,
`idlocal` ,
`nombreevento` ,
`imagen` ,
`dia_inicio` ,
`dia_fin` ,
`comentarios`
)
VALUES (
"'.$id.'" ,
"'.$idlocal.'" ,
"'.$nombreevento.'" ,
"'.$ruta_imagen.'" ,
"'.$dia_inicio.'" ,
"'.$dia_fin.'" ,
"'.$comentarios.'"
);
';
$statement = mysql_query($st,$bdID);
mysql_close($bdID);
if($statement != false){
//Todo correcto
}else{
//Error en la insercion
unlink($ruta_imagen);
unlink($ruta_thumb);

}
}else{
//Error al conectar a la bd
unlink($ruta_imagen);
unlink($ruta_thumb);
}
}else{
//Error al crear el thumb
unlink($ruta_imagen);
}
}else{
//Error al subir el archivo
}
}
//}
?>

Por weedom

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Ago 2009 04:03 am
La verdad es que no sé. Pero prueba lo siguiente. Al principio del script pon:

Código PHP :

session_start();
Echo $_SESSION['rango']."<br />;


Para saber si realmente $_SESSION['rango'] existe y si existe qué valor tiene. Eso te puede dar una idea de por qué anda mal.

Y un consejo: "no va" no nos dice mucho sobre tu problema excepto que no funciona. Si hay algún mensaje de error ponlo aquí, si por otro lado el script no hace lo que espera que haga di qué esperas que suceda y qué realmente sucede.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Ago 2009 04:04 am
La verdad es que no sé. Pero prueba lo siguiente. Al principio del script pon:

Código PHP :

session_start();
Echo $_SESSION['rango']."<br />";


Para saber si realmente $_SESSION['rango'] existe y si existe qué valor tiene. Eso te puede dar una idea de por qué anda mal.

Y un consejo: "no va" no nos dice mucho sobre tu problema excepto que no funciona. Si hay algún mensaje de error ponlo aquí, si por otro lado el script no hace lo que espera que haga di qué esperas que suceda y qué realmente sucede.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Ago 2009 11:00 am
Muchas gracias DriverOp por tu respuesta.
Te cuento.
$rango la he comrobado y vale 100.
Exactamente cual es el fallo que devuelve el script no lo se. Lo llamo desde un .swf :S
pero segun pruebas que he realizado comentando fragmentos todo apunta a que el fallo esta en $_FILE
Creo que cuando compruebo que $rango == 100 no pilla $_FILE y la funcion copy() falla porque no encuentra el archivo a copiar.
Se me ha ocurrido hacer un html o php que llame al script pasandole las variables por get y el fichero pero...no se como hacerlo :S
He estado probando pasarle el archivo por POST pero el $_FILE no lo recibe...
Si se os ocurre algo...
Gracias

Por weedom

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Ago 2009 09:07 pm
Epa, has dicho algo que antes no. Que estás usando un .swf (yo ni idea de Flash, lo siento), pensé que estabas usando un formulario HTML con un par de inputs tipo text y un input tipo file.

Me parece (y lamento no poder probarlo porque ya te digo, no sé nada de Flash) que el problema está en que cuando llamas al script desde Flash éste no pasa la cookie que session_start le pide. Te explico. PHP para poder implementar sesiones necesita que el cliente almacene una cookie la cual contiene el valor de sessionid que es la forma en que PHP discrimina entre sesiones de distintos visitantes al sitio. Si session_start no recibe ese sessionid no tiene idea de qué sesión usar, o lo que es lo mismo, no hay ninguna sesión.

Pero insisto, esto es especulación mía. Si dices que meo fuera del tarro, te creo :P.

Otra cosa podría ser que el .swf no esté formando bien el parámetro file en el archivo que le envia al servidor. Quizá deberías, al principio del script PHP, mostrar el valor de todos los array globales incluyendo $_FILE, algo así:

Código PHP :

echo "POST: <pre>";
print_r($_POST);
echo "</pre>FILES: <pre>";
print_r($_FILES);
echo "</pre>";

Esto te dará una idea de qué y cómo llegan las cosas desde el cliente.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 24 Ago 2009 09:31 am
gracias driverop
el caso es que tengo unos 30 ficheros php que hacen interactuar al flash con la bd y en todos compruebo el rango de la misma manera y el tema de la cookie no falla.
solo me da problemas en los php que suben archivos al servidor.
por ejemplo, en los php que se realizan unlinks tampoco falla, inserciones, actualizaciones,... sin problemas
pero cuando el php recibe un fichero y hago la comprobacion del rango... catástrofe
si comento la comprobacion de rango no falla la subida O si comento la funcion copy() y su if no falla el insert
expediente X
jejeje
un saludo

Por weedom

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ago 2009 12:55 pm
Pues llama a Molder y Scully... :P

Ignoro cuál puede ser el problema :(

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.