Acabo de probar algo similar en otros sitios de prueba que hice y me funcionó. Una auto-resolución a mi planteo aparentemente funciona:
Cramlet escribió:
Había pensado en que en la tabla imagen, exista un campo llamado "publicante", por ejemplo, relacionada con el campo "nombre" de la tabla de usuarios, ¿podría funcionar?.
Imagen:
Relacioné tal y como dice la imagen los campos de ambas tablas en una BD nueva que cree para la prueba, y el campo oculto que cree llamado "publicante" como en la BD, relacionado con el campo "usuario" de la bd, en el archivo del sitio detecta al usuario loggeado que sube la imagen. Estoy en duda si yo desde mi usuario, cuando publican una imagen, veré mi nombre o el de quien publicó el archivo.
Les dejo el código por si lo quieren analizar:
gestionimagen.php
Código PHP :
<?php require_once('Connections/pruebavo.php'); ?>
<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
$nombre_archivo = $_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], "imagenes/asd/".$nombre_archivo);
?>
<script>
opener.document.form1.imagen.value="<?php echo $nombre_archivo; ?>";
self.close();
</script>
<?php
}
else{?>
<form action="gestionimagen.php" method="post" enctype="multipart/form-data" id="form1">
<div align="center">
<p>
<input name="userfile" type="file" />
</p>
<p>
<input type="submit" name="button" id="button" value="Subir Imagen" />
</p>
<p><input type="hidden" name="enviado" value="form1" /></p>
</div>
</form>
<?php }?>
subirimagen.php:
Código PHP :
<?php require_once('Connections/pruebavo.php'); ?>
<?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"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tblimagen (imagen, SEO, publicante) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['imagen'], "text"),
GetSQLValueString($_POST['SEO'], "text"),
GetSQLValueString($_POST['publicante'], "text"));
mysql_select_db($database_pruebavo, $pruebavo);
$Result1 = mysql_query($insertSQL, $pruebavo) or die(mysql_error());
$insertGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_pruebavo, $pruebavo);
$query_Recordset1 = "SELECT * FROM tblimagen ORDER BY tblimagen.publicante";
$Recordset1 = mysql_query($query_Recordset1, $pruebavo) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_select_db($database_pruebavo, $pruebavo);
$query_Recordset2 = "SELECT * FROM tblusuario ORDER BY tblusuario.usuario";
$Recordset2 = mysql_query($query_Recordset2, $pruebavo) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
?>
<script>
function subirimg(){
self.name = 'opener';
remote = open('gestionimagen.php', 'remote',
'width=400,height=350,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes,fullscreen=no, status=yes');
remote.focus();
}
</script>
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Imagen:</td>
<td><input type="text" name="imagen" value="" size="15">
<input type="button" name="button" id="button" value="examinar" onclick="javascript:subirimg()"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">SEO:</td>
<td><input type="text" name="SEO" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Publicante:</td>
<td><input type="hidden" name="publicante" value="" size="32"><?php echo $row_Recordset2['usuario']; ?></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><input type="submit" value="Insertar registro"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
<p> </p>
<?php
mysql_free_result($Recordset1);
mysql_free_result($Recordset2);
?>
Si se fijan en esta captura, el código detecta quién es el conectado en la cuenta y quién es el que sube la imagen:
Como ya les dije: Mi duda ahora es si yo desde mi usuario, cuando alguien publica una imagen, veré mi nombre de usuario o el de quien publicó el archivo.