Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: DJmixmancar en 17 Noviembre 2010, 16:43 pm



Título: problemas envia campo ajunto nulo
Publicado por: DJmixmancar en 17 Noviembre 2010, 16:43 pm
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.


Título: Re: problemas envia campo ajunto nulo
Publicado por: Shell Root en 17 Noviembre 2010, 18:56 pm
El mismo código pero más organizado.
Código
  1. <?php
  2.   include("config.php");
  3.   $uservista=$_SESSION["s_username"] ;
  4.   if (!empty($uservista)) {
  5.      $nombre_archivo = $HTTP_POST_FILES['archivo']['name'];
  6.      $codigo= date("g-h-s-a");
  7.      $nombrea = explode('.',$nombre_archivo);
  8.      $oneparte = $nombrea[0];
  9.      $twoparte = $nombrea[1];
  10.      $completo = $oneparte.$codigo.".".$twoparte;
  11.      if(!empty($nombre_archivo)){
  12.         move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $nombre_archivo);
  13.      }
  14.      echo"<b><h2>Mensaje enviado</h2><b> ";
  15.      echo"<a href='bandeja.php'>Volver   a la bandeja de entrada</a><br>";
  16.      $consulta2 = mysql_query("select * from `usuarios`  order by id desc");
  17.      while($rconsul2 = mysql_fetch_array($consulta2)){
  18.         $usuarioc2 = $rconsul2['id'];
  19.         $comp = "id".$usuarioc2;
  20.         $entra = $_POST['id'.$usuarioc2];
  21.         $asunto = $_POST['textfield'];
  22.         $mensaje = $_POST['textarea'];
  23.         if(isset($entra)){
  24.            echo "se a enviado mensaje  a $entra <br>";
  25.            $insertam = mysql_query("INSERT INTO mensaje (id,user_de,user_para,titulo,leido,comentario,ajunto1) values ('','$uservista','$entra','$asunto','texto_1','$mensaje','$completo')");
  26.            if(!copy("./$nombre_archivo", "./$entra/$completo")){ echo " - "; }
  27.         }
  28.      }
  29.      unlink("$nombre_archivo");
  30.   }else{
  31.      echo "\n";
  32.   }
  33. ?>

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
  1.      if(!empty($nombre_archivo)){
  2.         move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $nombre_archivo);
  3.         /* COPY */
  4.      }


Título: Re: problemas envia campo ajunto nulo
Publicado por: DJmixmancar en 17 Noviembre 2010, 20:05 pm
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)

Citar
Mensaje 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,


Título: Re: problemas envia campo ajunto nulo
Publicado por: cassiani en 17 Noviembre 2010, 20:54 pm
Citar
se 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.