Ver Mensaje Individual
  #19 (permalink)  
Antiguo 17/02/2006, 13:55
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
ok este es el codigo para subir datos de texto junto con una imagen y guardar la info en una tabla en MySQL en este caso.

Formulario:
Código HTML:
<html>
<head>
  <title>Introduce un Nuevo Artista Colaborador</title>
</head>
<body>
  <h1>Introduce correctamente los datos del Artista</h1>
  <form enctype="multipart/form-data" action="upload.php" method="post">
  		<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  		Upload this file: <input name="userfile" type="file">
     <table border="0">
      <tr>
        <td>Nombre Artistico</td>
         <td><input type="text" name="artnombre" maxlength="30" size="30"></td>
      </tr>
      <tr>
        <td>Biografia</td>
        <td><textarea name="artbio" cols="80" rows="20"></textarea></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="Enviar Datos"></td>
      </tr>
    </table>
  </form>
</body>
</html> 
Scrip que hace upload y guarda los datos en MySQL
Código PHP:
<?php

  
// $userfile is where file went on webserver 
  
$userfile $HTTP_POST_FILES['userfile']['tmp_name'];

  
// $userfile_name Es el nombre original del archivo 
  
$userfile_name $HTTP_POST_FILES['userfile']['name'];

  
// $userfile_size Tamaño de en bytes
  
$userfile_size $HTTP_POST_FILES['userfile']['size'];

  
// $userfile_type controla el tipo mime ej: image/gif
  
$userfile_type $HTTP_POST_FILES['userfile']['type'];

  
// $userfile_error is any error encountered
  
$userfile_error $HTTP_POST_FILES['userfile']['error'];
  
// datos correspondientes a datos de texto para almacenar en mysql
  
$artnombre=$HTTP_POST_VARS['artnombre'];
  
$artbio=$HTTP_POST_VARS['artbio'];
  if (!
$artnombre || !$artbio)
  {
     echo 
'No has introducido todos los detos requeridos.<br />'
          
.'Por favor vuelve atras y rellena todas las casillas.';
     exit;
  }

  if (
$userfile_error 0)
  {
    echo 
'Problema: ';
    switch (
$userfile_error)
    {
      case 
1:  echo 'El archivo excede el: upload_max_filesize';  break;
      case 
2:  echo 'El archivo excede el: max_file_size';  break;
      case 
3:  echo 'El arcivo no se ha subido al completo';  break;
      case 
4:  echo 'No file uploaded';  break;
    }
    exit;
  }
// otro checkeo más: tiene el archivo el tipo MIME correcto?
  
if ( ($userfile_type != 'image/jpeg') AND ($userfile_type != 'image/gif') AND ($userfile_type != 'image/png') )
  {
    echo 
'Problema: El archivo no tiene el formato adecuado (jpeg, jpg, gif o png)';
    exit;
  }

// pon el archivo donde quieras
  
$upfile '/home/mindpani/public_html/artistas/fotos/'.$userfile_name;

// is_uploaded_file y move_uploaded_file añadido para la version 4.0.3 de php
  
if (is_uploaded_file($userfile)) 
  {
     if (!
move_uploaded_file($userfile$upfile))
     {
        echo 
'Problema: No se ha podido mover el archivo a el directorio de destino';
        exit;
     }
  } 
  else 
  {
    echo 
'Problema: Posible ataque en el upload. Archivo: '.$userfile_name;
    exit;
  }
  
  
$artnombre addslashes($artnombre);
  
$artbio addslashes($artbio);
  
$userfile_name addslashes($userfile_name);

  @ 
$db mysql_pconnect("localhost","tu_base_de_datos","tu_password");

  if (!
$db)
  {
     echo 
'Error: Could not connect to database.  Please try again later.';
     exit;
  }

  
mysql_select_db('tu_base_de_datos');
  
$query "insert into artistas values 
            ('','"
.$artnombre."', '".$artbio."', '".$userfile_name."',NOW())"
  
$result mysql_query($query);
  if (
$result)
      echo  
mysql_affected_rows().' Datos subidos con exito a la base de datos.'

?>
eso es todo... si me veis alguna vulnerabilidad o algo avisarme