Foros del Web » Programando para Internet » PHP »

Bloquear subir imagen si la imagen existe

Estas en el tema de Bloquear subir imagen si la imagen existe en el foro de PHP en Foros del Web. Hola. Tengo un problema He creado un codigo para subir imágenes al servidor <?php //conexion a la base de datos mysql_connect("localhost", "root", "") or die(mysql_error()) ...
  #1 (permalink)  
Antiguo 26/05/2013, 18:52
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 10 meses
Puntos: 0
Bloquear subir imagen si la imagen existe

Hola.
Tengo un problema
He creado un codigo para subir imágenes al servidor

<?php
//conexion a la base de datos
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("francisco") or die(mysql_error()) ;

//comprobamos si ha ocurrido un error.
if ($_FILES["Imagen"]["error"] > 0){
echo "ha ocurrido un error";
} else {
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
//y que el tamano del archivo no exceda los 1800kb
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png", "image/bmp");
$limite_kb = 1800;

if (in_array($_FILES['Imagen']['type'], $permitidos) && $_FILES['Imagen']['size'] <= $limite_kb * 2048){
//esta es la ruta donde copiaremos la imagen
//en el mismo lugar donde se encuentra el archivo subir.php
$ruta = "../Media/Imagenes/" . $_FILES['Imagen']['name'];
//comprobamos si este archivo existe para no volverlo a copiar.
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
//usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
//almacenara true o false
$resultado = @move_uploaded_file($_FILES["Imagen"]["tmp_name"], $ruta);
if ($resultado){
$nombre = "Media/Imagenes/".$_FILES['Imagen']['name'];
@mysql_query("INSERT INTO imagenes (Imagen) VALUES ('$nombre')") ;
echo "La imágen ha sido cargada correctamente";
} else {
echo "ocurrio un error al cargar la imágen.";
}
} else {
echo $_FILES['Imagen']['name'] . ", este archivo existe";
}
} else {
echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
}
}

?>

Una vez subida la imagen me redirecciona a otra página donde completo los datos que quiero que aparezcan con la imágen.
El problema lo tengo que cuando la imágen ya existe en la tabla, sale el mensaje de "este archivo exite", pero quiero que no me redireccione a la otra página sino que me deje otra vez en la página que uso para subir la imágen.
No sé si me he explicado bien, pero gracias por su ayuda
  #2 (permalink)  
Antiguo 27/05/2013, 00:52
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Bloquear subir imagen si la imagen existe

El problema lo tengo que cuando la imágen ya existe en la tabla, sale el mensaje de "este archivo exite", pero quiero que no me redireccione a la otra página sino que me deje otra vez en la página que uso para subir la imágen. tendrás que postear el código que te da problemas, no creo que las lineas que comentas estén en este post. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 27/05/2013, 16:17
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Bloquear subir imagen si la imagen existe

Explico completo el proceso.
Tengo una página que uso con un formulario para subir la imágen:

subir_imagen.php

<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "Administrador";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}

$MM_restrictGoTo = "../login/login.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<!DOCTYPE html PUBLIC ...
<script type="text/javascript">
function MM_popupMsg(msg) { //v1.0
alert(msg);
}
</script>
</head>

<body class="body">
<table width="100%" border="0" align="center" class="bordes">
<tr>
</tr>
</table>
<p>Seleccione un archivo.</p>
<form action="subir.php" method="POST" enctype="multipart/form-data">
<label for="Imagen">Imagen:</label>
<input type="file" name="Imagen" id="Imagen" />
<input type="submit" name="subir" value="Subir"/>
</form>
</table>
<p>&nbsp;</p>
</body>
</html>

ese formulario me lleva a la página subir.php:

<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "Administrador";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}

$MM_restrictGoTo = "../login/login.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>

<!DOCTYPE html PUBLIC ...
<meta http-equiv="Pragma" CONTENT="no-cache">
<script type="text/javascript">
function MM_popupMsg(msg) { //v1.0
alert(msg);
}
</script>
<meta http-equiv="Refresh" content="5;URL=nueva_entrada.php" />
</head>

<body class="body">
<table width="100%" border="0" align="center" class="bordes">
<tr>
</tr>
<tr>
</tr>
</table>
<p class="encabezado2">
</p>
<br />
</p>
<p><?php
//conexion a la base de datos
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("francisco") or die(mysql_error()) ;

//comprobamos si ha ocurrido un error.
if ($_FILES["Imagen"]["error"] > 0){
echo "ha ocurrido un error";
} else {
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
//y que el tamano del archivo no exceda los 100kb
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png", "image/bmp");
$limite_kb = 1800;

if (in_array($_FILES['Imagen']['type'], $permitidos) && $_FILES['Imagen']['size'] <= $limite_kb * 2048){
//esta es la ruta donde copiaremos la imagen
//recuerden que deben crear un directorio con este mismo nombre
//en el mismo lugar donde se encuentra el archivo subir.php
$ruta = "../Media/Imagenes/" . $_FILES['Imagen']['name'];
//comprobamos si este archivo existe para no volverlo a copiar.
//pero si quieren pueden obviar esto si no es necesario.
//o pueden darle otro nombre para que no sobreescriba el actual.
if (!file_exists($ruta)){
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
//usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
//almacenara true o false
$resultado = @move_uploaded_file($_FILES["Imagen"]["tmp_name"], $ruta);
if ($resultado){
$nombre = "Media/Imagenes/".$_FILES['Imagen']['name'];
@mysql_query("INSERT INTO imagenes (Imagen) VALUES ('$nombre')") ;
echo "La imágen ha sido cargada correctamente";
} else {
echo "ocurrio un error al cargar la imágen.";
}
} else {
echo $_FILES['Imagen']['name'] . ", este archivo existe";
}
} else {
echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
}
}

?>&nbsp;</p>

</tr>
<tr
</tr>
</table>
<p>&nbsp;</p>
</body>
</html>

y al cargar la imágen me lleva a otra página, nueva entrada.php:

lo pongo en otro mensaje porque me dice que excedo el limite de caracteres
sigue abajo
  #4 (permalink)  
Antiguo 27/05/2013, 16:19
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Bloquear subir imagen si la imagen existe

<?php require_once('../Connections/conn_francisco.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "Administrador";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}

$MM_restrictGoTo = "../login/login.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_nueva_entrada")) {
$insertSQL = sprintf("INSERT INTO fotografias (Nombre_Usuario, Titulo_Fotografia, Imagen, ALT_Imagen, Premios_Fotografia) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Nombre_Usuario'], "text"),
GetSQLValueString($_POST['Titulo_Fotografia'], "text"),
GetSQLValueString($_POST['Imagen'], "text"),
GetSQLValueString($_POST['ALT_Imagen'], "text"),
GetSQLValueString($_POST['Premios_Fotografia'], "text"));

mysql_select_db($database_conn_mingorance, $conn_francisco);
$Result1 = mysql_query($insertSQL, $conn_francisco) or die(mysql_error());

$insertGoTo = "edicion_entradas.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_conn_francisco, $conn_francisco);
$query_Nueva_entrada = "SELECT * FROM fotografias ORDER BY Id_Entrada DESC";
$Nueva_entrada = mysql_query($query_Nueva_entrada, $conn_francisco) or die(mysql_error());
$row_Nueva_entrada = mysql_fetch_assoc($Nueva_entrada);
$totalRows_Nueva_entrada = mysql_num_rows($Nueva_entrada);

mysql_select_db($database_conn_francisco, $conn_francisco);
$query_Imagen_Nueva_Entrada = "SELECT * FROM imagenes ORDER BY Id_Imagen DESC";
$Imagen_Nueva_Entrada = mysql_query($query_Imagen_Nueva_Entrada, $conn_francisco) or die(mysql_error());
$row_Imagen_Nueva_Entrada = mysql_fetch_assoc($Imagen_Nueva_Entrada);
$totalRows_Imagen_Nueva_Entrada = mysql_num_rows($Imagen_Nueva_Entrada);
?>
<!DOCTYPE html PUBLIC ....
<meta http-equiv="Pragma" CONTENT="no-cache">
<script type="text/javascript">
function MM_popupMsg(msg) { //v1.0
alert(msg);
}
</script>
</head>

<body class="body">
<table width="100%" border="0" align="center" class="bordes">
<tr>
</tr>
<tr>
</tr>
</table>
<p class="encabezado2">Gestor de entradas de galer&iacute;a</p>
<p class="encabezado_formulario">Nueva entrada</p>
<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form_nueva_entrada" id="form_nueva_entrada">
<table width="70%">
<tr>
<td scope="col">Imagen</td>
<td align="center" scope="col"><label for="Titulo_Fotografia"></label>
<img src="<?php echo $Imagen="../".$row_Imagen_Nueva_Entrada['Imagen']; ?>" width="30%" />
<input name="Imagen" type="hidden" id="Imagen" value="<?php echo $row_Imagen_Nueva_Entrada['Imagen']; ?>" /></td>
</tr>
<tr>
<td>Titulo Fotograf&iacute;a</td>
<td align="center"><label for="Imagen">
<input name="Titulo_Fotografia" type="text" id="Titulo_Fotografia" size="45" />
</label></td>
</tr>
<tr>
<td>Atributos</td>
<td align="center"><label for="ALT_Imagen"></label>
<input name="ALT_Imagen" type="text" id="ALT_Imagen" size="45" /></td>
</tr>
<tr>
<td>Premios</td>
<td align="center"><label for="Premios_Fotografia"></label>
<textarea name="Premios_Fotografia" id="Premios_Fotografia" cols="45" rows="15"></textarea></td>
</tr>
<tr>
<td><input name="Nombre_Usuario" type="hidden" id="Nombre_Usuario" value="<?php echo $_SESSION['MM_Username']; ?>" /></td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><input name="Fecha_Entrada" type="hidden" id="Fecha_Entrada" value="<?php echo $row_Nueva_entrada['Fecha_Entrada']; ?>" /></td>
<td align="center"><input type="submit" name="Insertar" id="Insertar" value="Insertar" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form_nueva_entrada" />
</form>
</table>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($Nueva_entrada);

mysql_free_result($Imagen_Nueva_Entrada);
?>

Esas son las 3 páginas que uso para el proceso de subir las imágenes y añadirlas a una galería.
El problema es que aunque la imágen exista, me lleva a la página nueva entrada, pero sale la última imágen que subí y lo que quiero es que me diga que la imágen existe y no me redireccione a nueva entrada, sino que me redireccione a subir_imagen.php.

He borrado alguna cosas de la páginas para que me deje subirlo, lo comento por si alguna celda o tabla os parece que está mal.

Espero no haber sido muy pesado con este mensaje.
Gracias por vuestra ayuda.
  #5 (permalink)  
Antiguo 28/05/2013, 10:05
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Bloquear subir imagen si la imagen existe

LA redirección puede ser esta:

Código PHP:
Ver original
  1. $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  2. header("Location: ". $MM_restrictGoTo);

esto tiene pinta de Dreamweaver, tendrás que consultar la documentación, saludos.
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 28/05/2013, 18:36
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Bloquear subir imagen si la imagen existe

Muchas gracias repara2.
He cambiado el sistema y ahora no deja subir la imagen sino es correto, y sale un mensaje.
Pero tengo un problema con las fechas.
Lo he detallado en otro tema que he creado.
Y si, es con dreamweaver, pensaba que lo había puesto.
Perdón por omitirlo.

Etiquetas: bloquear, mysql, select, sql, tabla
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 14:10.