Foros del Web » Programando para Internet » PHP »

formulario con campo "file"

Estas en el tema de formulario con campo "file" en el foro de PHP en Foros del Web. hola! tengo un formulario de contacto que contiene un campo Código HTML: <input name= "fichero" type= "file" id= "fichero" > elobjetivo es que quien rellene ...
  #1 (permalink)  
Antiguo 30/05/2005, 22:59
 
Fecha de Ingreso: junio-2004
Ubicación: Villa Insuperable, La Matanza, Buenos Aires.
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Desacuerdo formulario con campo "file"

hola!
tengo un formulario de contacto que contiene un campo
Código HTML:
<input name="fichero" type="file" id="fichero"> 
elobjetivo es que quien rellene el form pueda adjuntar un archivo
el problema es que cuando se recibe este formulario, ignora el campo, esté lleno o no.
tengo un php en el action del form que me pasaron que es el que permite recibir en una cuenta de mailñ los datos ingresados, lo paso aqui:

<?
# error_reporting (E_ERROR | E_WARNING | E_PARSE);
# Este script envia el contenido de un formulario a una dirección de correo
# electronico. El funcionamiento es sencillo:
# Se deben especificar las variables, para indicar las direcciónes de correo
# del remitente y del destinatario (ver VARIABLES).
# Se debe enviar el contenido del formulario por el metodo POST y no GET.


# VARIABLES


# Aqui debe especificar el asunto del mail enviado con los datos del formulario.
$asunto="Contactar";


# aqui va la dirección de correo del destinatario, que es la dirección a donde
# seran enviados los datos del formulario.
# Puede agregar un campo oculto en su formulario de la siguiente manera:
# <input type="hidden" name="basemailfor" value="[email protected]">
# En tal caso el mail ingresado reemplazará al de la linea de abajo.
$basemailfor="[email protected]" ;


# aquí va la dirección de correo del remitente. Es un dato opcional, sin el cual
# el sistema envia el mail con la dirección de correo por defecto
# También puede agregar un campo oculto en su formulario de la siguiente manera:
# <input type="hidden" name="basemailfrom" value="[email protected]">
# En tal caso el mail ingresado reemplazara al de la linea de abajo.
$basemailfrom="[email protected]" ;

# Aqui se debe incluir la dirección de la pagina que va a mostrar una vez pulsado
# el boton "enviar", luego de enviar el correo.
# se acostumbra poner una pagina que diga "los datos han sido enviados" o "gracias
# por enviar la informacion, nos pondemos en contacto a la brevedad" o algo por el
# estilo.
$redir="http://www.divastec.com/espaniol/gracias.html";



# FIN VARIABLES - NO MODIFICAR POR DEBAJO DE ESTA LINEA
# ----------------------------------------------------------------------
#
#
$a = each($HTTP_POST_VARS);
$valores ="<U>DATOS INGRESADOS:</U><br>";
$dp="";
do {
$valores .= "<b>" ;
$valores .= $a[0] ;
$valores .= "</b>" ;
$valores .= $dp ;
#$valores .= "<br>" ;
$valores .= $a[1] ;
$valores .= "<br>" ;
$a = each($HTTP_POST_VARS);
$dp=": ";

if ($a[0] == "Submit") {$a[0]="";
$a[1]="";
$dp="";
}

if ($a[0] == "basemailfor") {$a[0]="";
$dp="";
$basemailfor = $a[1] ;
$a[1]="";
}

if ($a[0] == "basemailfrom") {$a[0]="";
$dp="";
$basemailfrom = $a[1] ;
$a[1]="";
}
} while ($a) ;

$valores .="---- FIN DATOS ----";

mail ("$basemailfor", "$asunto", "$valores", "From: $basemailfrom\nContent-Type: text/html" );

print "<meta HTTP-EQUIV=REFRESH CONTENT=1;URL=$redir>";
# error_reporting (E_ERROR | E_WARNING | E_PARSE);


?>

saludos!
__________________
DG Carla Prioletta
http://www.estudiocharco.com.ar
  #2 (permalink)  
Antiguo 31/05/2005, 00:08
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Pues no veo que el script tenga la variable $fichero que es la que estas enviando
Cita:
<input name="fichero" type="file" id="fichero">
Estas segura que ese script sirve para enviar archivos adjuntos??, por lo que veo, no sirve para enviar archivos.

Mejor postealo en el foro de php

Salu2
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #3 (permalink)  
Antiguo 31/05/2005, 03:52
Avatar de donpincho  
Fecha de Ingreso: enero-2002
Mensajes: 563
Antigüedad: 15 años, 11 meses
Puntos: 1
es cierto, en el script no se menciona el fichero... de todas formas con la funcion mail no podrás enviar archivos adjuntos por email; tan sólo que los visitantes los suban al servidor donde está la web (y si deseas recibir el link por email).

pregunta en el foro de php que te explicarán mejor ^^
  #4 (permalink)  
Antiguo 31/05/2005, 05:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Pués.. de hecho hace un un ciclo aplicando la función each() a $HTTP_POST_VARS... con eso estaría (sin analizar profundamente el código) recuperando todos los elementos del formulario de forma automática... aunque en tal caso mejor el uso de la función foreach() .

Ahora bien... aunque haga ese ciclo... el archivo no se manipula con $_POST (variable superglobal similar a $HTTP_POST_VARS), debe usarse $_FILES ... entonces habrá que tratar el archivo de forma especial (aparte pués)...

Pero hay que decir que es cierto lo que mencionan de que no puedes adjuntar archivos con la función mail() (de hecho me parece que sí... pero no tan fácilmente), lo que podrías hacer es mandar un enlace a el archivo una vez subido en el servidor (lo tendrás que subir igual si lo quieres adjuntar en un correo) como te comentaron... si es necesario adjuntarlo te sugiero que busques sobre la clase PHPMailer dentro del foro de PHP ó google ¿por qué no ?.

... ahora... yo te invito que antes de volver a preguntar esperes a que muevan tu consulta a el foro adecuado (PHP) y que antes revicez las FAQ (se trata el tema) y busques en el foro.... es tema muy común.

Documentación:
- Cuestiones que mencioné:
www.php.net/manual/es/features.file-upload.php
http://www.forosdelweb.com/showthrea...989#post238989
http://www.forosdelweb.com/f18/indice-faqs-php-108208/ <<< por si fuese poco, enlace directo a las FAQ de PHP
- Funciones que ocupas:
www.php.net/each
www.php.net/while
www.php.net/foreach <<< mencioné como alternativa a las dos superiores
www.php.net/mail

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 31/05/2005 a las 05:20
  #5 (permalink)  
Antiguo 31/05/2005, 18:08
 
Fecha de Ingreso: junio-2004
Ubicación: Villa Insuperable, La Matanza, Buenos Aires.
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Busqueda enviar adjunto desde un form

buenisimo lo que me explicas...el problemaes que yo ni menos cinco de php, ese codigo me lo pasaron y supuse que me iba a servir....
espero encontrar algo relacionado y comprenderlo, realmente, no crei que se me iba a complicar terminar el sitio por este detalle, cuando me lo solicitaron, di por obvio que se podia...que error! no lo vuelvo a hacer! el tema es que ahora no piedo hecharme atras y tengo que solucionarlo, asi que pido la ayuda de todos los que puedan salvar a esta ignorante php-cita.
tiene que ser un formulario de uso sencillo, la idea es que si quien se desea contactar con la empresa necesita adjuntar un archivo (un logotipo, un propuesta, un curriculum, etc) pueda hacerlo simplemente desde ese form y no tenga que realizar un paso mas...
un millon de gracias!
__________________
DG Carla Prioletta
http://www.estudiocharco.com.ar
  #6 (permalink)  
Antiguo 31/05/2005, 19:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... Lo dicho... no te compliques y solo sube el archivo a tu servidor y mandas el link por correo... eso sí "es simple" y ejemplos de ello encontrarás muuuuchos (busca en las FAQ y te dejé otro enlace por ahí).... inténtalo y si tienes problemas aviza na más... asegurate de leer bien , no debería haber ptoblema...

Definitivamente de ser necesario que el archivo se ADJUNTE a el correo ve por PHPMailer... pero ahí si YO no podré ayudarte (seguro otro sí podrá) pués no lo he ocupado... ... quizá sea la oportunidad para hacerlo???

La mejor de las suertes!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 01/06/2005, 12:38
 
Fecha de Ingreso: junio-2004
Ubicación: Villa Insuperable, La Matanza, Buenos Aires.
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
si, vi como funciona eso, y me sirve muy bien. primero no entiendo nada php, encontre en mi servidor algo que me nombraste "sourceforge"y genera el formulario con esa funcion,el problema es que lo genera en mi servidor y cunado lo llevo al de mi cliente no copia el archivo, porqu quiere seguir haciendolo en el que lo genere...busque en el codigo en medio de mi ignorancia y noencontre una linea en la que modificar algo (dearriesgada nomas) para que no siga trabajando en el otro server. es decir me envia el correo con el link, pero va una ubicacion que no existe.
tambie vi que al instalarlo genera un monton de archivos y me gustaria quedarme con los utiles, pero me da miedo borrar....
creo que son estos dos, cuando lo pruebo me da este error
Warning: copy(files/02_40_09_loguito.jpg): failed to open stream: Permission denied in /home/target/public_html/hola/process.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/target/public_html/hola/process.php:15) in /home/target/public_html/hola/process.php on line 22

y veo que se refiere a la linea que tine un "copy"... asi que supongo que es alli donde debo corregir par que me funcione en otro servidor...
ese es el que estaen al action del form
<?php
include("global.inc.php");
$errors=0;
$error="The following errors occured while processing your form input.<ul>";
$adj=$HTTP_POST_FILES['adj'];
if($HTTP_POST_FILES['adj']['tmp_name']==""){ }
else if(!is_uploaded_file($HTTP_POST_FILES['adj']['tmp_name'])){
$error.="<li>The file, ".$HTTP_POST_FILES['adj']['name'].", was not uploaded!";
$errors=1;
}
if($errors==1) echo $error;
else{
$image_part = date("h_i_s")."_".$HTTP_POST_FILES['adj']['name'];
$image_list[0] = $image_part;
copy($HTTP_POST_FILES['adj']['tmp_name'], "files/".$image_part);
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF) ,"/"));
$message="adj: ".$where_form_is."files/".$image_list[0]."
";
$message = stripslashes($message);
mail("[email protected]","Form Submitted at your website",$message,"From: carla");

header("Refresh: 0;url=http://www.sitio.com.ar/gracias.html");
?><?php
}
?>


y este el include

<?php

function pt_register()
{
$num_args = func_num_args();
$vars = array();

if ($num_args >= 2) {
$method = strtoupper(func_get_arg(0));

if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {
die('The first argument of pt_register must be one of the following: GET, POST, SESSION, SERVER, COOKIE, or ENV');
}

$varname = "HTTP_{$method}_VARS";
global ${$varname};

for ($i = 1; $i < $num_args; $i++) {
$parameter = func_get_arg($i);

if (isset(${$varname}[$parameter])) {
global $$parameter;
$$parameter = ${$varname}[$parameter];
}

}

} else {
die('You must specify at least two arguments');
}

}

?>


gracias de nuevo pór estar intentando ayudarme!
__________________
DG Carla Prioletta
http://www.estudiocharco.com.ar
  #8 (permalink)  
Antiguo 02/06/2005, 10:48
 
Fecha de Ingreso: junio-2004
Ubicación: Villa Insuperable, La Matanza, Buenos Aires.
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo formulario con campo file "funcionando!!!"

hola!
dejo el link al topic que hice sobre este tema, ya que en el mensaje #6 esta todo el php y el html necesario para que sea exitoso, el error que ahi nombro y suponia era de codigo (gracias a mi ignorancia en el tema) era simplemente un tema de permisos de escritura, se soluciono solo con eso, es decir la carpeta a la que se subirá el archivo debe tener permisos de escritura,caso contario el archivo no se copiara.
http://www.forosdelweb.com/f18/formulario-con-campo-file-303335/
gracias a los que ayudaron!
__________________
DG Carla Prioletta
http://www.estudiocharco.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:54.