problemas envia campo ajunto nulo

Iniciado por DJmixmancar, 17 Noviembre 2010, 16:43 PM

0 Miembros y 1 Visitante están viendo este tema.

DJmixmancar

tengo este codigo que etoy trabajando. para enviar archivos ajuntos.
tengo 2 problemas.

1.- que si manda un mensaje vacio sin ajunto me sale un error de copiar archivo. bueno esporque no enviana nada, mi pregunta como controlo eso.

2.- cuando ajunto un archivo. office 2007, al descagar el ajunto, me sale un .zip

este un sistema peque. de eviar ajuntos como mensajes a usuario. es como un mini correo.
espero un ayuda

Citar<?php
session_start();
include("config.php");
$uservista=$_SESSION["s_username"] ;
if (isset($_SESSION['s_username'])) {

$nombre_archivo = $HTTP_POST_FILES['archivo']['name'];
$codigo= date("g-h-s-a");
$nombrea = explode('.',$nombre_archivo);
$oneparte = $nombrea[0];
$twoparte = $nombrea[1];
$completo = $oneparte.$codigo.".".$twoparte;
if(trim($nombre_archivo) != ""){
move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $nombre_archivo);
}
   echo"<b><h2>Mensaje enviado</h2><b> ";
echo"<a href='bandeja.php'>Volver   a la bandeja de entrada</a><br>";

$consulta2 = mysql_query("select * from `usuarios`  order by id desc");

while($rconsul2 = mysql_fetch_array($consulta2)){
$usuarioc2 = $rconsul2['id'];
$comp = "id".$usuarioc2;
$entra = $_POST['id'.$usuarioc2];
$asunto = $_POST['textfield'];
$mensaje = $_POST['textarea'];

if(isset($entra)){
   
echo "se a enviado mensaje  a $entra <br>";
$insertam = mysql_query("INSERT INTO mensaje (id,user_de,user_para,titulo,leido,comentario,ajunto1) values ('','$uservista','$entra','$asunto','texto_1','$mensaje','$completo')");
if(!copy("./$nombre_archivo", "./$entra/$completo")){echo " - ";}

}
}
unlink("$nombre_archivo");

?>
<? }
else {

echo " ";
}
?>

gracias.

Shell Root

El mismo código pero más organizado.
Código (php) [Seleccionar]
<?php
   session_start
();
   include(
"config.php");
   
$uservista=$_SESSION["s_username"] ;
   if (!empty(
$uservista)) {
      
$nombre_archivo $HTTP_POST_FILES['archivo']['name'];
      
$codigodate("g-h-s-a");
      
$nombrea explode('.',$nombre_archivo);
      
$oneparte $nombrea[0];
      
$twoparte $nombrea[1];
      
$completo $oneparte.$codigo.".".$twoparte;
      if(!empty(
$nombre_archivo)){
         
move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $nombre_archivo);
      }
      echo
"<b><h2>Mensaje enviado</h2><b> ";
      echo
"<a href='bandeja.php'>Volver   a la bandeja de entrada</a><br>";
      
$consulta2 mysql_query("select * from `usuarios`  order by id desc");
      while(
$rconsul2 mysql_fetch_array($consulta2)){
         
$usuarioc2 $rconsul2['id'];
         
$comp "id".$usuarioc2;
         
$entra $_POST['id'.$usuarioc2];
         
$asunto $_POST['textfield'];
         
$mensaje $_POST['textarea'];
         if(isset(
$entra)){
            echo 
"se a enviado mensaje  a $entra <br>";
            
$insertam mysql_query("INSERT INTO mensaje (id,user_de,user_para,titulo,leido,comentario,ajunto1) values ('','$uservista','$entra','$asunto','texto_1','$mensaje','$completo')");
            if(!
copy("./$nombre_archivo""./$entra/$completo")){ echo " - "; }
         }
      }
      
unlink("$nombre_archivo");
   }else{
      echo 
"\n";
   }
?>


Y quizás el problema es el que decís, como no se manda ningún archivo entonces a donde se va a copiar?, entonces podrías verificar en la siguiente linea,
Código (php) [Seleccionar]
      if(!empty($nombre_archivo)){
         move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $nombre_archivo);
         /* COPY */
      }
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

DJmixmancar

Hola creo que me esprese mal. o me entendiern mal  ;D
.
spongamos. que envio un mesaje a un amigo.

mensaje + ajunto.
Citar
Mensaje enviado
Volver a la bandeja de entrada
se a enviado mensaje a mixzoner

pero. caundo envio un mensaje.

mensaje.
(sin nungun ajunto me sale el error)

CitarMensaje enviado
Volver a la bandeja de entrada
se a enviado mensaje a mixzoner

Warning: copy() [function.copy]: The first argument to copy() function cannot be a directory in C:\AppServ\www\eps\postmensaje.php on line 27
-
Warning: unlink() [function.unlink]: No error in C:\AppServ\www\eps\postmensaje.php on line 30
se que el error que sale porque no puede copiar porque no hay archivo ajunto. pero cmo hago para que nosalga ese error,

cassiani

Citarse que el error que sale porque no puede copiar porque no hay archivo ajunto. pero cmo hago para que nosalga ese error,

valida la variable que contiene el nombre del archivo o valida la existencia del mismo antes de intentar copiar o eliminarlo.