Foros del Web » Programando para Internet » PHP »

¿libro de visitas con foto? ¿se puede?

Estas en el tema de ¿libro de visitas con foto? ¿se puede? en el foro de PHP en Foros del Web. amigos tengo un form de solo 3 campos: nombre, titulo y mensaje, para que el usuario envie comentarios, etc. El usuario lo envia y se ...
  #1 (permalink)  
Antiguo 20/01/2008, 02:02
Avatar de leskolpykos  
Fecha de Ingreso: junio-2007
Ubicación: Caracas
Mensajes: 96
Antigüedad: 16 años, 10 meses
Puntos: 0
Pregunta ¿libro de visitas con foto? ¿se puede?

amigos tengo un form de solo 3 campos: nombre, titulo y mensaje, para que el usuario envie comentarios, etc. El usuario lo envia y se actualiza la tabla dinamica y aparece lo q escribió. sencillo y funciona perfecto. Pero quisiera que el usuario pudiera enviar una foto en ese form y aparezca en tamaño pequeña al lado de su comentario. es ésto posible?

espero alguno pueda asesorarme si existe esta posibilidad. gracias de antemano

********** codigo php **********

<?php require_once('conex.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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"] == "form1")) {
$insertSQL = sprintf("INSERT INTO ambiente (id, nick, perfil, mensaje) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['id'], "int"),
GetSQLValueString($_POST['nick'], "text"),
GetSQLValueString($_POST['perfil'], "text"),
GetSQLValueString($_POST['mensaje'], "text"));

mysql_select_db($database_localhost);
$Result1 = mysql_query($insertSQL) or die(mysql_error());

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


************ form *****************

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Id:</td>
<td><input type="text" name="id" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Nick:</td>
<td><input type="text" name="nick" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Perfil:</td>
<td><input type="text" name="perfil" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right" valign="top">Mensaje:</td>
<td><textarea name="mensaje" cols="50" rows="5"></textarea>
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td><input type="submit" value="Insertar registro"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>

Última edición por leskolpykos; 20/01/2008 a las 02:08
  #2 (permalink)  
Antiguo 20/01/2008, 10:03
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Re: ¿libro de visitas con foto? ¿se puede?

Si que se puede, pero antes de armar el codigo tendrias que plantearte :
Que tipo de formatos vas a permitir, si el usuario tiene una foto de 3mb y pretende subirla?, si el usuario tiene una foto de 1024x 778 px? que pasara, vas a redeimencionarla, vas a permitirla subir?
o simplemente o lo mas facil, unicamente vas a permitir previa informacion al usuario "solo se admiten fotos de xpixels x xpixels hasta un peso maximo de xxxx.kb en formato *.jpg

una vez que tengas toda esa logica armada, recien arma el codigo.
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 20/01/2008, 11:19
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: ¿libro de visitas con foto? ¿se puede?

Hola, la verdad no entiendo tu código, no se como funciona tu libro.

Mira este codigo que tengo

Código PHP:
<?
if (isset($_SESSION['s_username'])) {
include(
"config_usuarios.php");
$sesion $_SESSION['s_username'];
$con mysql_query("SELECT * FROM usuarios WHERE username = '$sesion'") or die("Error: ".mysql_error());
$mostrar mysql_fetch_array($con);

?>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><div align="center">
      <form action="subir_imagenes.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
        <span class="Estilo2">Archivo</span> <br />
        <input name="archivo" type="file" id="archivo" class="file" />
        <br />
        <br />
        <input name="boton" id="boton" class="boton" type="submit" value="Subir Imagen!" />
      </form>
    </div></td>
  </tr>
  <tr>
    <td style="border: 1px solid #0099FF; background-color: #88CFFF"><b>Solo se admiten archivo con formato JPG, GIF y PNG.</b> <br />
      Tamaño máximo aceptado:<span style="color:#FF0000"> 1MB</span>.</td>
  </tr>
</table>
<br>
<br>
<?
if(isset($_POST['boton'])){

$tipo $_FILES['archivo']['type'];
$tamaño $_FILES['archivo']['size'];

if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {

if(
$HTTP_POST_FILES['archivo']['size'] < 1000000) {

if(
$tipo=="image/gif" || $tipo=="image/jpeg" || $tipo=="image/png" || $tipo=="image/jpg" || $tipo=="image/pjpeg" || $tipo=="image/x-png") {

$usuario $mostrar[username];
$info pathinfo($_FILES['archivo']['name']);
$aleatorio substr(md5(uniqid(rand())),0,10).".".strtolower($info['extension']);
$imagen $usuario."_".$aleatorio;
copy($_FILES['archivo']['tmp_name'], $imagen);

$query "INSERT INTO imagenes (username, imagen) VALUES('$usuario', '$imagen')";
mysql_query($query) or die(mysql_error());

$subio true;
}
}
}

   if(
$subio) {
      echo 
'<img src="'.$imagen.'"><br><br><a href="index.php">Volver</a>';
   } else {
      echo 
"El archivo no se pudo enviar. Recuerda que debe ser un archivo JPG, GIF o PNG y el tamaño no puede exceder 1MB";
   }

}else{
echo 
"Tu no estas autentificado. No puedes entrar aqui!!";
}
?>

Lo que hace es simple, hay 2 tablas creadas:

table "usuarios"
id | username | password

table "imagenes"
id | username | imagen

El usuario al ingresar se crea una sesion con el nombre del usuario, ejemplo "pepe". Éste debe de loguearse para entrar, sino no lo deja subir imágenes.
Al querer subir una imaegn la busca en su PC y apreta el boton "subir".

Mientras se procesa la info, ve si el archivo es mayor a 1MB y/o no es formato JPG, GIF o PNG tira una advertencia. Si cumple con las caracteristica se genera automaticamente un nombre a la imagen, donde primero esta el nombre de usuario y dps un nombre aleatorio con md5().

Ejemplo: pepe_4fsaf65sa.jpg

Además transforma todo caracter mayuscula de la extencion en miniscula.

Esta imagen se aloja en X directorio con su nuevo nombre y ese nombre se registra en la tabla "imagenes", que ademas se registra el nombre de ususario en el campo username.

¿para que es eso?

Para cuando crees un archivo "album" donde el ususario pueda ver todas las imagenes alojada que tiene, compare con WHERE el usuario y que solo muestre las imagenes del usuario.

Ejemplo: se registran 3 imagenes de pepe.

cuando pepe quiere ver sus imagenes:

Código PHP:
$sesion $_SESSION['s_username'];
$con mysql_query("SELECT * FROM imagenes WHERE username = '$sesion'");
$mostrar mysql_num_rows($con);

while (
mysql_fetch_array($cin)) {
echo 
"<img src='directorio/".$mostrar[imagen]."'><br><br>"
Espero que hayas entendido, sino manda privado.
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 15:08.