Pues bien, tengo un formulario en flash que tiene para subir archivos, cuando haces clic en el boton te sube y inserta en la base de datos, bien, el problema es que, cuando me inserta en base de datos, mete 2 filas una con el codigo del usuario, y otra con el resto de datos pero sin el codigo del usuario el php es subir.php,
Código PHP:
<?php
session_start();
include("libreria.php");
$conexion=conecta();
$archivo = $_FILES["Filedata"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($archivo != "") {
$destino = "files/".$prefijo."_".$archivo;
$alias = $prefijo."_".$archivo;
copy($_FILES['Filedata']['tmp_name'], $destino);
}
$num = $_POST['numflash'];
$tiempo = $_POST['tiempoflash'];
$pass = $_POST['passflash'];
$fecha=date('d-m-Y');
$usuario=$_SESSION['usuario_valido'];
$conscod="select cod_usuario from usuarios where nick = '$usuario'";
$registro=mysql_fetch_array(mysql_query($conscod));
$cod_usuario=$registro['cod_usuario'];
$cons = "insert into archivos (max_descargas,tiempo_vida,clave_archivo,codigo_usuario,nombre,alias,size,num_descargas,fecha_subida,estado) values ('$num','$tiempo','$pass','$cod_usuario','$archivo','$alias','1','0','$fecha','-1')";
mysql_query($cons);
mysql_close($conexion);
En mi flash en una capa tengo un script para cojer y mandar cosas usando los php pertinentes.
Código:
import flash.net.*;
//ENVIAR DATOS
var php:String = "subir.php";
var req:URLRequest = new URLRequest(php);
var vars:URLVariables = new URLVariables();
req.method = URLRequestMethod.POST;
req.data = vars;
/*function alClick(e:MouseEvent):void{
vars.numflash = enviar_mc.numero.text;
vars.tiempoflash = enviar_mc.tiempo.text;
vars.passflash = enviar_mc.pass.text;
sendToURL(req);
//navigateToURL(req);
//loader.load(req);
URLLoader("admindescarga.php");
}*/
// enviar_mc.enviar_btn.addEventListener(MouseEvent.CLICK, alClick);
//Clases necesarias
import flash.events.*;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
//Dirección del PHP que va a subir el archivo
var uploadURL:URLRequest;
var archivo:FileReference;
//Función llamada al pulsar examinar, se crea el filereference y se abre el navegador de archivos
function Examinar(event:MouseEvent) {
vars.numflash = enviar_mc.numero.text;
vars.tiempoflash = enviar_mc.tiempo.text;
vars.passflash = enviar_mc.pass.text;
//sendToURL(req);
//navigateToURL(req);
//loader.load(req);
Estado_txt.appendText("\n" + "Vamos a seleccionar el archivo.");
uploadURL = new URLRequest();
uploadURL.url = "subir.php";
archivo = new FileReference();
PonerListeners(archivo);
archivo.browse(getTypes());
}
//Añado los listener al objeto filereference
function PonerListeners(dispatcher:IEventDispatcher) {
dispatcher.addEventListener(Event.CANCEL, cancelHandler);
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.SELECT, selectHandler);
dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);
}
//Con está función se generan los tipos de archivos que estarán disponibles para seleccionar desde el navegador
function getTypes():Array {
var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter());
return allTypes;
}
//Tipos de imágenes admitidos, tanto para pc como para mac
function getImageTypeFilter():FileFilter {
return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
}
//Tipos de archivos de texto admitidos, para pc y mac
function getTextTypeFilter():FileFilter {
return new FileFilter("Text Files (*.txt, *.rtf)","*.txt;*.rtf");
}
//Se distribuye cuando se cancela la descarga desde el navegador de archivos.
function cancelHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida cancelada.");
}
//Se distribuye cuando se finaliza la descarga o la carga
function completeHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida completada.");
}
//Se reciben datos del servidor tras completar la carga
function uploadCompleteDataHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida confirmada por el servidor.");
}
//Se produce cuando falla la carga y hay un código http de error.
//Por ejemplo si no se encuentra el PHP, se generará un error 404.
function httpStatusHandler(event:HTTPStatusEvent):void {
Estado_txt.appendText("\n" + "Se ha producido el siguiente error: " + event.status);
}
//Se produce cuando falla la carga o descarga
function ioErrorHandler(event:IOErrorEvent):void {
Estado_txt.appendText("\n" + event.text);
}
//Se inicia la carga o descarga
function openHandler(event:Event):void {
Estado_txt.appendText("\nComienza la subida");
}
//Se distribuye periodicamente durante la carga o la descarga, mostrando el progreso de la misma.
function progressHandler(event:ProgressEvent):void {
var file:FileReference = FileReference(event.target);
Estado_txt.appendText("\n" + event.bytesLoaded + " bytes de " + event.bytesTotal + " bytes subidos.");
}
//Se distribuye al intentar descargar o cargar un archivo de un servidor fuera del entorno de seguridad de la película
function securityErrorHandler(event:SecurityErrorEvent):void {
Estado_txt.appendText("\nEl servidor no permitió la carga del archivo.");
}
//Se distribuye al elegir el archivo para carga o descarga desde el navegador de archivos.
function selectHandler(event:Event):void {
Estado_txt.text = "";
var archivo:FileReference = FileReference(event.target);
Estado_txt.appendText("\n" + "Archivo elegido: " + archivo.name + "\n" + "Tamaño = " + archivo.size + " bytes.");
archivo.upload(req);
}
Examinar_bt.addEventListener(MouseEvent.CLICK,Examinar);
El flash a sido viendo y copiando cosas de tutoriales, no se donde poner esto, no e visto apartado de flash. Si alguien tiene idea, que me mire el subir.php para ver si hago algo mal, el tema es que me crea 2 filas cuando inserta en vez de hacer una solo con su cod_usuario.