Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/01/2010, 08:45
aitormartin
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: subir imagen con formulario

Hola te dejo este cogigo fuente, este codigo fuente esta un poco enrrevesado, pero te puede servir de referencia:

Código PHP:
<?PHP
    
//Código creado por:    Aitor Martin 
    //Código creado para:     http://www.aitormartin.com
    //Fecha:     jun-2009
    //Actualizado por:    
    //Actualizado:     
    //Descripción:
?>

<?php
require_once('admin/inc_menu_seguridad.php');                        //Script que restringe el acceso...
?>
<?php
function borrar_sesiones ()                                //funcion para borrar las var tipo $_SESSION...
    
{
    unset ( 
$_SESSION["fecha"] );
    unset ( 
$_SESSION["titulo"] );
    unset ( 
$_SESSION["comentario"] );

    unset ( 
$_SESSION["file_name"] );

    unset ( 
$_SESSION["procesar"] );
    }
?>

<?php
$trabajo 
"qrp/img/";                                //Ruta de las imagenes.

if(isset($_POST['enviar']))
    {
                                            
//pasamos las var $POST a var $_SESSION

    
$_SESSION["fecha"]     = $_POST['date'];                    //La fecha pasada
    
$_SESSION["titulo"]     = $_POST['titulo'];                    //titulo post
    
$_SESSION["comentario"] = nl2br(htmlentities($_POST['coment']));        //post

    
$file_name_p    $_FILES['file1']['name'];                    //el nombre del fichero
    
$file_ext_p     strrchr($_FILES['file1']['name'],'.');            //extension del fichero
    
$file_tipe_p    $_FILES['file1']['type'];                    //la extension del fichero
    
$file_size_p    $_FILES['file1']['size'];                    //el tamaño del fichero
    
$file_temp_p    $_FILES['file1']['tmp_name'];                    //el nombre temporal

    //Comprueba que hemos rellenado correctamente todos los campos.
    
if ( empty($_POST['date']) || empty($_POST['titulo']) || empty($_POST['coment']) )
        {
        
$_SESSION["error"] = "0001";                        //Si no esta correctamente rellenado pasamos el error
        
echo "<script>window.location.href='index.php?id=1022'</script>";    //recargamos la pagina para borrarlos
        
exit;                                    //datos pasados por $POST
        
}
        else
        {

    if (
$file_name_p != "")
        {
        
$renovar true;
        }

echo 
$_POST['img_eliminar']." - ".$_SESSION["file_name"];

    if ((
$_POST['img_eliminar'] == "eliminar") or (($renovar == true) and ($_SESSION["file_name"] != $file_name_p)))    //si vamos a eliminar una imagen...

            
{
            
$fichero_a_borrar $_SESSION["file_name"];
            if (
$fichero_a_borrar != "")                    //Si realmente tenemos que borrar un fichero...
                
{
                
$ruta_del_fichero_a_borrar $trabajo.$fichero_a_borrar;//Ubicacion del ficheroa a borrar.
                
if (file_exists("$ruta_del_fichero_a_borrar"))        //Miramos si el fichero a borrar esiste.
                    
{
                    
unlink("$ruta_del_fichero_a_borrar");        //Si esiste lo borra...
                    
}
                }
            }
                                            
//subimos la imagen al servidor...

        
if (($file_name_p != "") and ($file_size_p 0))            //Comprobamos si bamos a subir algo...
            
{                                //Si bamos a subir algo miramos que var del nombre del fichero
                                            //contenga texto y que ocupe mas de 0 kb...
            
if ((strpos($file_tipe_p"gif") || strpos($file_tipe_p"jpeg") || strpos($file_tipe_p"png")) && ($file_size_p 1500000))
                {
                                            
//Con este if miramos que el fichero a subir sea de un formato
                                            //valido y que ocupe menos de 1mb

                
if (is_uploaded_file($file_temp_p))            //Si hemos subido un fichero...
                    
{
                                            
//acontinuacion generamos un nombre aleatorio. 
                                            //Comprobamos que no exista un fichero con el mismo nombre
                                            //en la DB. Si exixte generamos
                                            //otro nombre aleatorios hasta encontrar
                                            //un nombre adecuado. 
                    
$link conectarse();
                    
$unico false;

                    do {
                    
$name_rand rand(0000000000,9999999999);
                    
$name_img $name_rand.$file_ext_p;
                
                    
$sql "select * from qrp_life WHERE img LIKE '$name_img'";
                    
$query mysql_query($sql) or die ("SQL Error SQL!!!");;
                    while (
$row mysql_fetch_object($query))
                        {
                        if (
$row->img != $name_img)
                            {
                            
$unico false;
                            }
                            else
                            {
                            
$unico true;
                            }
                        }
                    } while (
$unico == true);

                    
mysql_close($link);                 //Cerramos consulta
                
                    
copy($file_temp_p$trabajo.$name_img);        //Copia de el fichero de la carpeta temporal
                                            //a nuestra carpeta de trabajo.
                
                    
if (file_exists($trabajo.$name_img))        //Comprobamos si se ha copia corectamente el fichero
                        
{                    //Si se ha copiado correctamente continua el prog.
                        
}                    //Si no se ha copia muestra un error regresa
                        
else                    //al formulario...
                        
{
                        
$_SESSION["error"] = "0007";        //indica que ha surgido un error y pasamos el error
                        
$_SESSION["procesar"] = "no";        //Como ha ocurrido un error no procesamos los datos
                        
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                        
exit;
                        }
                    }
                    else
                    {
                    
$_SESSION["error"] = "0007";            //indica que ha surgido un error y pasamos el error
                    
$_SESSION["procesar"] = "no";            //Como ha ocurrido un error no procesamos los datos
                    
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                    
exit;
                    }
                }
                else
                {
                
$_SESSION["error"] = "0006";                //indica que ha surgido un error y pasamos el error
                
$_SESSION["procesar"] = "no";                //Como ha ocurrido un error no procesamos los datos
                
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                
exit;
                }

            }
            else
            {
            if ((
$file_name_p == "") and ($file_size_p 0))            //Si el fichero esta corrupto...
                
{
                
$_SESSION["error"] = "0005";                //indica que ha surgido un error y pasamos el error
                
$_SESSION["procesar"] = "no";                //Como ha ocurrido un error no procesamos los datos
                
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                
exit;    
                }
            }

        if (
$file_name_p == "")
            {
            
$name_img $_SESSION["file_name"];
            }

        if (
$_POST['img_eliminar'] == "eliminar")
            {
            
$name_img "";
            }

        
$_SESSION["file_name"] = $name_img;                    //Pasamos a una var el nombre de la imagen subida.
        
$_SESSION["procesar"] = "ok";                        //Al no dar errores procesamos los datos...
        
echo "<script>window.location.href='index.php?id=1022'</script>";    //recargamos la pagina para borrarlos
        
exit;                                    //datos pasados por $POST
        
}
    }
?>

<?php

    
if ( $_SESSION["procesar"] == "ok" )                        //Si procesar es ok pocesamos los datos, 
                                            //y los añadimos la DB
        
{
        
$link conectarse();
            
$sql "UPDATE qrp_life SET fecha = '".$_SESSION["fecha"]."', titulo = '".$_SESSION["titulo"]."', contenido = '".$_SESSION["comentario"]."', img = '".$_SESSION["file_name"]."' WHERE id LIKE '".$_SESSION["id_actualizar"]."' LIMIT 1";
        
mysql_query($sql);

        
borrar_sesiones();

        unset ( 
$_SESSION["id_actualizar"] );
    
        
$_SESSION["add_ok"] = "0000";                        //Pasamos la notificación que los datos se han modificado ok
        
echo "<script>window.location.href='index.php?id=1020'</script>";    //recargamos la pagina de actualizar.
        
exit;
        }

    if ( 
$_SESSION["procesar"] == "ok" )                        //Si no procesamos los datos borramos las session
        
{
        
borrar_sesiones();
        }

?>

<?php
//Control de errores...
if( $_SESSION["error"] == "0001" )
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0001')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0005")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0005')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0006")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0006')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0007")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0007')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
?>

<?php
                                            
//Lemos los datos del correspondientes al id a actualizar
    
$link conectarse();
        
$sql "select * from qrp_life WHERE id LIKE '".$_SESSION["id_actualizar"]."'";
        
$query mysql_query($sql);
    
mysql_close($link);

    while (
$row mysql_fetch_object($query))
        {
        
$fecha_p    $row->fecha;
        
$titulo_p    $row->titulo;
        
$comentario_p    html_entity_decode($row->contenido);
        
$img_p        =  $row->img;
        }

    
$_SESSION["file_name"] = $img_p;                        //Pasaomos los datos de la img auna session.

    
if($img_p != "")                                //Si no contiene img mostramos "nopic.png"
        
{
        
$img_actual $trabajo.$img_p;
        }
        else
        {
        
$img_actual $trabajo."nopic.png";
        }

    if (
file_exists($img_actual))                            //Si no existe la img mostramos "nopic.png"
        
{
        }
        else
        {
        
$img_actual $trabajo."nopic.png";
        }


?>

<div id= "qrp_add">

<h3>Actualizar Post 2</h3>

<form name="form" action="index.php?id=1022" method="POST" enctype="multipart/form-data">

    <input type="hidden" name="MAX_FILE_SIZE" value="1500000" />
    * Fecha:
    <br />
    <input name="date" type="text" id="date" value="<?php echo $fecha_p?>" size="16">
    <br />
    * Titulo:
    <br />
    <input type="text" name="titulo"  value="<?php echo $titulo_p?>"  size="87">
    <br />
    * Texto:
    <br />
    <textarea name="coment" cols="100" rows="15"><?php echo $comentario_p?></textarea>
    <br />
    <br />
    Imagen actual:
    <br />
    <br />
    <img src="<?php echo "$img_actual"?>">
    <br />
    <?php echo "$img_p"?>
    <br />
    <br />
    Sustituir imagen:
    <br />
    <br />
    <input type="file" name="file1">
    <br />
    <br />
    Eliminar la imagen:
    <input name="img_eliminar" type="checkbox" value="eliminar" />
    <br />
    <br />
    <input name="enviar" type="submit" id="enviar" value="Enviar">

</form>

</div>