Comunidad de diseño web y desarrollo en internet online

Ayuda, es urgente.

Citar            
MensajeEscrito el 21 Ago 2010 10:56 am
Hola, tengo el sigueinte problema. E estado mas de 8 hrs con un codigo que no logro hacer andar e fumado como un loco e bebido cafe tambien como un loco y no sale :S'

El problema es el siguiente.
Tengo un archivo PHP que se encarga de resivir un FILE y subirlo al servidor. Pero tambien tiene que generar la direccion para luego almacenarla en una BDD, lo que pasa es que quiero que ese FILE que llegue se le cambie el nombre por cualquier cosa ej:(12kde342.jpg). en ves de que se guarde con su nombre original.

Puedo hacer todo. pero mi problema es que el nombre nuevo que toma el archivo no es el mismo que me registra en la BDD.

este es Php que tengo.

[php]<?php
session_start();
?>
<?php
include('./conexion.php');
$direccion_archivo = $_POST['direccion_archivo'];
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
$destino = "../Img/Fotos/".$direccion_archivo.$prefijo.$archivo.".jpg";
copy($_FILES['Filedata']['tmp_name'],$destino);
$nombre_ape = "SELECT nombre, apellido FROM $tabla WHERE usuario='".$_SESSION['k_username']."'";
$res_data = mysql_query($nombre_ape);
while(list($data1, $data2) = mysql_fetch_row($res_data)){
$name_table = "".$data1."_".$data2."";
$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$direccion_archivo.$prefijo.".jpg'";
$res = mysql_query($consulta);
echo "rpta=ok";
}
?>[/php]

Gracias de antemano.

Por sodyack

40 de clabLevel



 

Ninguno

msie8
Citar            
MensajeEscrito el 21 Ago 2010 01:17 pm
Intenta reemplazar esto:

Código PHP :

$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$direccion_archivo.$prefijo.".jpg'";

por esto:

Código PHP :

$consulta = "INSERT INTO ".$name_table." SET fotos_galeria=' ".$destino." ';

Lo que hice aqui fue colocar la variable $destino que ya habias definido antes, en la cual estaba la ruta completa.
Saludos y nos cuentas ;)

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

firefox
Citar            
MensajeEscrito el 21 Ago 2010 11:29 pm
No sirve, aun me sigue almacenanado una direccion con un codigo en la BDD diferente al nombre del archivo cuando lo sube. Otra idea de como hacerlo?

Por sodyack

40 de clabLevel



 

Ninguno

chrome
Citar            
MensajeEscrito el 22 Ago 2010 03:21 pm
Pon el código que estás usando. Y pon un ejemplo de datos de entrada y de la salida que te está dando.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2010 12:22 pm
Codigo php es este.

[php]<?php
session_start();
?>
<?php
include('./conexion.php');
$direccion_archivo = $_POST['direccion_archivo'];
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
$destino = "../Img/Fotos/".$direccion_archivo.$prefijo.$archivo.".jpg";
copy($_FILES['Filedata']['tmp_name'],$destino);
$nombre_ape = "SELECT nombre, apellido FROM $tabla WHERE usuario='".$_SESSION['k_username']."'";
$res_data = mysql_query($nombre_ape);
while(list($data1, $data2) = mysql_fetch_row($res_data)){
$name_table = "".$data1."_".$data2."";
$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$direccion_archivo.$prefijo.".jpg'";
$res = mysql_query($consulta);
echo "rpta=ok";
}
?>[/php]

Lo que hace es almacenarme una direccion encriptada en la BDD y lego halojar el archivo resivido de flash a esa direccion que Inserto en la BDD. Lo que pasa es que me inserta en el servidor con una direccion diferente a la que me almaceno en la BDD. Ej:


BDD direccio:
../Img/Fotos/8786542347_nombre.jpg
----------------------------------------------------------------------------------------------
SERVIDOR direccion:
../Img/Fotos/5382563214_nombre.jpg

Se entiende? cuando me lo tendria que dejar como el siguiente para darte un ej:
La misma encriptacion de numeros para el insert y el copy del php

BDD direccio:
../Img/Fotos/8786542347_nombre.jpg
----------------------------------------------------------------------------------------------
SERVIDOR direccion:
../Img/Fotos/8786542347_nombre.jpg

Por sodyack

40 de clabLevel



 

Ninguno

msie8
Citar            
MensajeEscrito el 23 Ago 2010 01:34 pm
A diferencia de la variable $destino, aqui No añades antes de la extencion la variable $archivo, me hice entender?

El codigo seria este:

Código PHP :

$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$direccion_archivo.$prefijo.$archivo.".jpg";


Saludos

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

firefox
Citar            
MensajeEscrito el 23 Ago 2010 02:21 pm
No anda :S, se que el error me lo genera esto.

$prefijo = substr(md5(uniqid(rand())),0,6);

Ya que me genera 2 prefijos diferentes cada ves que lo uso. Y no usa el mismo. Ademas encontre un erro que lo corregi en el php.

Este es el nuevo.

<?php
session_start();
?>
<?php
include('./conexion.php');
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
$destino = "../Img/Fotos/".$prefijo.$archivo.".jpg";
copy($_FILES['Filedata']['tmp_name'],$destino);
$nombre_ape = "SELECT nombre, apellido FROM $tabla WHERE usuario='".$_SESSION['k_username']."'";
$res_data = mysql_query($nombre_ape);
while(list($data1, $data2) = mysql_fetch_row($res_data)){
$name_table = "".$data1."_".$data2."";
$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$destino."'";
$res = mysql_query($consulta);
echo "rpta=ok";
}
?>

En el php anterior usaba una $direccion_archivo que me traia de flash una direccion que yo ya colocaba en $destino que era el (../Img/Fotos/).
Osea el php me generaba esto ../Img/Fotos/..Img/Fotos/21312312.jpg

Haora me genera bien la direccion. ../Img/Fotos/3335323.jpg pero igual me sigue poniendo una encriptacion diferente al del directorio. Intente con captchat pero igual hace lo mismo incluso con sesiones pero igual. Alguna otra idea?.

Por sodyack

40 de clabLevel



 

Ninguno

safari
Citar            
MensajeEscrito el 23 Ago 2010 02:27 pm
Pues ese prefijo generado aleatoriamente deberías guardarlo aparte en la DB y consultarlo antes de mostrar la imagen.
Pero me parece que no estás mostrando todo el código que usas en el sistema porque la línea que genera el prefijo aleatorio lo usas una sola vez en el código que has posteado, sin embargo dices que lo hace dos veces.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2010 02:39 pm
Ya vi cual es el error, bueno eso creo xD.

La funcion predeterminada de PHP uniqid crea un nuevo identificador unico cada microsegundo, es decir, que cambia de valor constantemente.

Significa que esta funcion debes reemplazarla, te recomendaria la funcion [URL=http://co.php.net/manual/es/function.sha1.php]sha1[URL], esta yo la uso para encriptar las contraseñas antes de añadiras a una base de datos... en este caso la podrias usar:

Código PHP :

 $prefijo = substr(md5(sha1(rand())),0,6); 

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

firefox
Citar            
MensajeEscrito el 23 Ago 2010 02:51 pm
No :S, aun me hace lo mismo. Miren este es todo el codigo de mi upload.

Este es el del FL, es el cargador de archivos. es (AS2)

import flash.net.FileReference;

TiposdeArchivos = new Array();
TiposdeArchivos = [{description:"Imagen de perfil", extension:"*.jpg"}];

var listener:Object = new Object();

listener.onSelect = function(archivo:FileReference) {
Subir.upload("../Php/unload.php");
};

listener.onProgress = function(archivo:FileReference, bytesLoaded:Number, bytesTotal:Number) {
var avance = Math.round((bytesLoaded*100)/bytesTotal);
info_txt.text = "Cargando "+avance+" % del Archivo";
};

listener.onComplete = function(archivo:FileReference) {
info_txt.text = "El Archivo "+archivo.name+" se ha subido correctamente";
var lvsend:LoadVars = new LoadVars();
var lvrecv:LoadVars = new LoadVars();
lvsend.direccion = archivo.name;
lvsend.sendAndLoad("../Php/unload.php",lvrecv,"POST");
lvrecv.onLoad = function() {
if (lvrecv.rpta == "ok") {
info_txt.text = "Imagen cargada exitosamente.";
} else {
txtestado.text = "Error en la carga de la imagen.";
}
};

};

listener.onCancel = function(archivo:FileReference) {
info_txt.text = "El usuario canceló";
};

upload_btn.onPress = function() {
Subir.browse(TiposdeArchivos);
info_txt.text = "Imagen confirmada.";
};
upload_btn.onRollOver = function() {
upload_btn.gotoAndStop(2);
};
upload_btn.onRollOut = function() {
upload_btn.gotoAndStop(1);
};
var Subir:FileReference = new FileReference();
Subir.addListener(listener);

Este es mi php.

<?php
session_start();
?>
<?php
include('./conexion.php');
$tamano = $_FILES["Filedata"]['size'];
$tipo = $_FILES["Filedata"]['type'];
$archivo = $_FILES["Filedata"]['name'];
$prefijo = substr(md5(sha1(rand())),0,6);
$destino = "../Img/Fotos/".$prefijo.$archivo."";
copy($_FILES['Filedata']['tmp_name'],$destino);
$nombre_ape = "SELECT nombre, apellido FROM $tabla WHERE usuario='".$_SESSION['k_username']."'";
$res_data = mysql_query($nombre_ape);
while(list($data1, $data2) = mysql_fetch_row($res_data)){
$name_table = "".$data1."_".$data2."";
$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$destino.".jpg'";
$res = mysql_query($consulta);
echo "rpta=ok";
}
?>

Anda exelente todo. Solo que tengo problemas con la variable $prefijo que me genera 2 diferentes en ves de 1 y luego reutilizarlo. :S.

Por sodyack

40 de clabLevel



 

Ninguno

safari
Citar            
MensajeEscrito el 23 Ago 2010 03:17 pm
Ya lo logre :). Haun que me aya costado medio pulmon de los sigarros ^^.

Aca le pongo el codigo por si a alguien le sirve.

Este es el codigo del php que resive el archivo.

$nuevoNombre = time().".jpg";
$directorio = '../Img/Fotos/'.$nuevoNombre;
move_uploaded_file($_FILES['Filedata']['tmp_name'], $directorio);
include('./conexion.php');
echo "rpta=ok";
$nombre_ape = "SELECT nombre, apellido FROM $tabla WHERE usuario='".$_SESSION['k_username']."'";
$res_data = mysql_query($nombre_ape);
while(list($data1, $data2) = mysql_fetch_row($res_data)){
$name_table = "".$data1."_".$data2."";
$consulta = "INSERT INTO ".$name_table." SET fotos_galeria='".$nuevoNombre."'";
$res = mysql_query($consulta);
}

Gracias a todos por el tiempo.

Por sodyack

40 de clabLevel



 

Ninguno

safari

 

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