elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Carga de Diversas Imágenes en Form de Contacto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Carga de Diversas Imágenes en Form de Contacto  (Leído 3,465 veces)
NetStorm

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Carga de Diversas Imágenes en Form de Contacto
« en: 16 Noviembre 2009, 19:51 pm »

Hola comunidad, tengo un problemita y quiero que me echeis una mano.

Trabajo en una empresa de modelos, me pidieron un formulario para Casting, donde las aspirantes llenan datos de tipo personal(edad, fecha nacimiento, medidas, estatura. peso, etc.) además puse un campo de tipo:"file" para que las modelos pudieran subir alguna foto suya. El formulario se envía, la foto también, todo está correcto, el problema surge cuando mi supervisor me pide que sería mejor que hubieran varios campos para cargar imágenes, pero que estos aparezcan progresivamente, es decir cada vez que seleccionaron una imagen del PC, se active o se vea un  nuevo Input debido a que las señoritas aspirantes suelen enviar más de una fotografía; ese es mi problema.

Lo que pensaba hacer es que cada vez que elijan una imagen se active o aparezca otro INPUT de tipo "file" para que mi visitante pueda continuar agregando imagenes, y cuando presione el boton enviar las envie todas. Aunque si alguién tiene algun ‭‬‭‬javascript u otro script útil que permita cargar las imagenes conforme se van agregando sería bueno.

Aquí les dejo mis dos documentos, el HTML donde esta el form, y el PHP con el que interactúa, andenle, echenme una mano.

Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulario de Casting</title>

<script type="text/‭‬‭‬javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools-yui-compressed.js"></script>

<script type="text/‭‬‭‬javascript" src="EduForm/sexyforms.v1.1.mootools.min.js"></script>



<style type="text/css">
  .tablita {
    margin:0 auto;
  }
  .tablita td{
    padding:0 13px;
  }
  tr.odd td {
    background:#f1f7ff;
  }
  .tablita td.resaltar {
    background:#F5F5E8;
  }
  .tablita a {
    font-weight:bold;
  }
  .cuadrado {
    float:left;
    width:170px;
    height:170px;
    margin:10px;
    border:1px solid #574331;
    padding:5px;
    background:#eee;
  }
</style>

<script type="text/‭‬‭‬javascript">
window.addEvent('domready', function() {
  $$(".sexyform input", ".sexyform select", ".sexyform textarea").each(function(el) {
    el.DoSexy();
  });
});
</script>

<link href="EduForm/sexyforms/vista/sexyforms-vista.css" rel="stylesheet" type="text/css" />




<style type="text/css">
<!--
.style2 {color: #CC0000}
.style7 {color: #CC0000; font-size: 14px; font-weight: bold; font-family: Arial, "Comic Sans MS", "Kristen ITC"; }
.style8 {
font-size: 16px;
font-weight: bold;
color: #585858;
font-family: Arial, "Comic Sans MS", "Kristen ITC";
}
.style10 {
font-size: 11px;
font-family: Arial, "Comic Sans MS", "Kristen ITC";
}

-->
</style>
</head>

<body>
<table width="512" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" valign="top"><form enctype="multipart/form-data" id="form1" class="sexyform" name="form1" method="post" action="Casting.php">
      <table width="511" height="681" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td height="45" colspan="2" class="style1"><div align="center" class="style8">Formulario de Casting</div></td>
        </tr>
        <tr>
          <td width="217" align="left" valign="middle"><div align="justify" class="style7">Nombres y Apellidos:</div></td>
          <td width="294" align="right" valign="middle"><label>
            <input name="Nombre" type="text" class="sexy-input" id="Nombre" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Lugar de Nacimiento:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Nacimiento" type="text" class="sexy-input" id="Nacimiento" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">DNI:</div></td>
          <td align="right" valign="middle"><label>
            <input name="DNI" type="text" class="sexy-input" id="DNI" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Dirección:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Direccion" type="text" class="sexy-input" id="Direccion" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Teléfono Fijo:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Telefijo" type="text" class="sexy-input" id="Telefijo" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Teléfono Móvil:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Telemovil" type="text" class="sexy-input" id="Telemovil" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">E-mail:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Email" type="text" class="sexy-input" id="Email" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Estatura:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Estatura" type="text" class="sexy-input" id="Estatura" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style7">Peso:</td>
          <td align="right" valign="middle"><label>
            <input name="Peso" type="text" class="sexy-input" id="Peso" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Color de Ojos:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Ojos" type="text" class="sexy-input" id="Ojos" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Color de Cabello:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Cabello" type="text" class="sexy-input" id="Cabello" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Color de Piel:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Piel" type="text" class="sexy-input" id="Piel" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Medidas:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Medidas" type="text" class="sexy-input" id="Medidas" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Mencione su experiencia en anfitrionaje, modelaje y/o actuación.</div></td>
          <td align="right" valign="middle"><label>
            <textarea name="Experiencia" cols="30" rows="5" class="sexy-input"  id="Experiencia"></textarea>
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style2"><div align="justify" class="style7">Talentos y Habilidades:</div></td>
          <td align="right" valign="middle"><label>
            <input name="Talentos" type="text" class="sexy-input" id="Talentos" size="35" />
          </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle" class="style7">Adjuntar Fotografía:</td>
          <td align="right" valign="middle"><label>
            <input name="archivo_adjunto" type="file" class="sexy-button-input" id="Adjunto" size="20" />
            <br />
            <span class="style10">(Las imágenes no deben superar los 1024Kb)</span> </label></td>
        </tr>
        <tr>
          <td align="left" valign="middle">&nbsp;</td>
          <td align="center" valign="middle"><label>
            <input name="Enviar" type="submit" class="sexy-button" id="Enviar" value="Enviar" />
          </label>
            <label>
            <input name="Limpiar" type="reset" class="sexy-button" id="button2" value="Limpiar" />
            </label></td>
        </tr>
      </table>
        </form>
    </td>
  </tr>
</table>
</body>

</html>

y este es mi archivo Casting.php

Código:
<?php

//Este Script fue Desarrollado Por Eduardo Augusto - EduMI

//Este e-mail se envía a nosotros
$nombre = $_POST["Nombre"];
$nacimiento = $_POST["Nacimiento"];
$dni = $_POST["DNI"];
$direccion = $_POST["Direccion"];
$telefijo = $_POST["Telefijo"];
$telemovil = $_POST["Telemovil"];
$email = $_POST["Email"];
$estatura = $_POST["Estatura"];
$peso = $_POST["Peso"];
$ojos = $_POST["Ojos"];
$cabello = $_POST["Cabello"];
$piel = $_POST["Piel"];
$medidas = $_POST["Medidas"];
$experiencia = $_POST["Experiencia"];
$talentos = $_POST["Talentos"];

$fecha = date("d/m/Y");
$ip=ip();


//ARRANCAMOS ALMACENANDO TODAS LAS VARIABLES EN EL CUERPO DEL MENSAJE QUE SERÁ ENVIADO

$cuerpo = '
*** Formulario de Casting Enviado Desde La WEB***
------------------------------------------------------------

Nombres y Apellidos:
'.$nombre.'

Fecha de Nacimiento:
'.$nacimiento.'

DNI:
'.$dni.'

Dirección:
'.$direccion.'

Teléfono Fijo:
'.$telefijo.'

Teléfono Movil:
'.$telemovil.'

Email:
'.$email.'

Estatura:
'.$estatura.'

Peso:
'.$peso.'

Color de Ojos:
'.$ojos.'

Color de Cabello:
'.$cabello.'

Color de Piel:
'.$piel.'

Medidas:
'.$medidas.'

Mencione su experiencia:
'.$experiencia.'

Ip del Visitante:
'.$ip.'

Fecha de Envío:
'.$fecha.'

';

//EN ESTA PARTE CONFIGURAMOS LAS VARIABLES DEL ARCHIVO ADJUNTO.

// Nombre de la imagen
$archivo=$_FILES['archivo_adjunto']['name'];
// Ruta del archivo temporal
$temporal=$_FILES['archivo_adjunto']['tmp_name'];

//AQUI CONFIGURAMOS EL CUERPO DEL MENSAJE

if($temporal!='')
{
// Leer el adjunto
$buffer = implode("",file($temporal)); // Leer fichero
$buffer = chunk_split(base64_encode($buffer)); // Codificación en base64 y divido

// Cabeceras necesarias para enviar el mail
$cabecera = "MIME-version: 1.0\n";
$cabecera .= "From: Modelos Casting<info@webmodelos.com>\n";
$cabecera .= "Return-Path: adminweb@hotmail.com\n";
$cabecera .= "Content-type: multipart/mixed; ";
$cabecera .= "boundary=\"Message-Boundary\"\n";
$cabecera .= "Content-transfer-encoding: 7BIT\n";
$cabecera .= "X-attachments: $temporal";

// Mensaje de texto plano
$mensaje = "--Message-Boundary\n";
$mensaje .= "Content-type: text/plain; charset=UTF-8\r\n";
$mensaje .= "Content-transfer-encoding: 7BIT\n";
$mensaje .= "Content-description: Mail message body\n\n";
$mensaje .=$cuerpo;

// Adjuntar el fichero
$mensaje .= "\n\n--Message-Boundary\n";
$mensaje .= "Content-type: Binary; name=\"$archivo\"\n";
$mensaje .= "Content-Transfer-Encoding: BASE64\n";
$mensaje .= "Content-disposition: attachment; filename=\"$archivo\"\n\n";
$mensaje .= "$buffer\n";
$mensaje .= "--Message-Boundary--\n";
}
else
{
// Cabeceras necesarias para enviar el mail
$cabecera = "From: $form_nombre<$form_email>\n";
$cabecera .= "Return-Path: $email_admin\n";

// Mensaje de texto plano
$mensaje = $cuerpo;
}


// Función que permite conocer la IP del visitante

function ip()
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['HTTP_VIA']))
$ip = $_SERVER['HTTP_VIA'];
elseif (isset($_SERVER['REMOTE_ADDR']))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = 'desconocida';

return $ip; // Devolver la IP
}


$destinatario = "algunmail@hotmail.com"; // Quien recibirá los corroes
$asunto = ":: Formulario De Casting Recibido!!!"; // tema del correo

mail($destinatario,$asunto,$mensaje,$cabecera) ;

?>

Bueno soy principiante en php, y este script lo armé con ayuda de algunos manuales, pero soy programador en VB.NET, así que no se me complica mucho entender ciertas cosas por si pensais que a lo mejor me vais a liar más.

Cuidense.


« Última modificación: 16 Noviembre 2009, 19:57 pm por Xhushito » En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Carga de Diversas Imágenes en Form de Contacto
« Respuesta #1 en: 16 Noviembre 2009, 23:56 pm »

Citar
foreach ($_FILES["foto"]["error"] as $key => $error) {
 if ($error == UPLOAD_ERR_OK)
 {
 $nouPath="fotos/".$_FILES["foto"]["name"][$key];
 move_uploaded_file($_FILES["foto"]["tmp_name"][$key], $nouPath);
 }
 }
Esto en lugar de lo que tienes de $archivo y $temporal o como lo haces pero obteniendo el path del modo anterior. Para el ejemplo todos los inputs que vayas generando dinámicamente deben tener el name foto.
 
 Si quieres que se suba la imágen mientras se seleccionan otras pudes utilizar un iframe o ajax pero no creo que merezca la pena, o mediante flash tambien tienes cosas como swfupload que te muestra barra de progreso y tal, pero tampoco merece la pena para cosas de poco tamaño como fotos.
 
 Saludos.


En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
NetStorm

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: Carga de Diversas Imágenes en Form de Contacto
« Respuesta #2 en: 17 Noviembre 2009, 15:38 pm »

Vale MazarD Gracias por tu ayuda, muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Diversas vulnerabilidades en Symantec Web Gateway
Noticias
wolfbcn 0 1,246 Último mensaje 19 Junio 2014, 13:34 pm
por wolfbcn
Diversas vulnerabilidades en PHP
Noticias
wolfbcn 0 1,222 Último mensaje 29 Junio 2014, 02:51 am
por wolfbcn
Control de diversas partes del pc.
Hacking
hack over crack 4 4,291 Último mensaje 8 Enero 2015, 18:36 pm
por hack over crack
Diversas vulnerabilidades en PHP
Noticias
wolfbcn 0 1,160 Último mensaje 27 Enero 2015, 21:39 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines