【发布时间】:2011-03-15 20:25:21
【问题描述】:
在我的应用程序中,用户可以创建他/她的相册。
我的问题是如何上传特定于上传图片的用户 ID 的图片?这意味着应该有一些标准可以表明这些图像属于该用户。
我的想法是,我可以使用用户 ID 的图像名称存储图像,但在这种情况下,很难将 cmets 与这些图像一起存储。
有没有更好的办法?
【问题讨论】:
标签: php image file-upload
在我的应用程序中,用户可以创建他/她的相册。
我的问题是如何上传特定于上传图片的用户 ID 的图片?这意味着应该有一些标准可以表明这些图像属于该用户。
我的想法是,我可以使用用户 ID 的图像名称存储图像,但在这种情况下,很难将 cmets 与这些图像一起存储。
有没有更好的办法?
【问题讨论】:
标签: php image file-upload
一个常用的解决方案是为每张图片设置两个数据:
数据库中的记录一般至少会包含:
这样,对于每个图像,您都有额外的数据——您可以使用这些数据向您的应用程序添加一些行为。
当然,这意味着当用户上传图片时,您需要做更多的工作——但这也没有那么糟糕,而且可以证明是有用的。
当需要时,您也可以将一些其他字段添加到存储这些数据的数据库表中,例如:
【讨论】:
你没有使用数据库吗?
如果没有:
建立一个数据库来存储用户,然后在图像和用户之间建立一个逻辑连接。
例如
用户:
|---------------------------------------
| UserId Username Password |
|---------------------------------------
| 1 Robert 3j9745t3 |
| 2 Paul 03945u30 |
|---------------------------------------
图片:
|--------------------------------------------------
| ImageID UserId Desc ImageHash |
|-------------------------------------------------|
| 1 1 Some Desc 87ytr8d23yr|
| 2 1 Some Desc 5uty4095u40|
|-------------------------------------------------|
然后将图像存储在您的图像目录中,例如87ytr8d23yr.png,然后您可以像这样进行 php 查询
$userid = 1;
$sql = "SELECT * FROM Images WHERE UserId = " . (int) $userid . " ORDER BY ImageID LIMIT 10";
if(false !== ($resource = mysql_query($sql)))
{
while($imageRow = mysql_fetch_object($resource))
{
if(file_exists('imageDir/' . $imageRow->ImageHash . '.png'))
{
//Do whatever.
}else
{
//Delete the row and inform the user that the picture has been deleted for some reason.
}
}
}
另外你只需要做一个 Comments 表并添加 ImageId,当用户在图像上添加图像时,只需将图像添加到评论行中,以便你可以跟踪它。
【讨论】:
mysql_real_escape_string 和 sql 注入),表连接,图像安全(使用标题推送图像类型,png,jpg等)。 :) 快乐的日子
你有数据库吗?用户是否登录?创建一个表来跟踪图像,包括一个用户 ID 列,并将整个图像存储在数据库中,或者只存储图像的路径名。
【讨论】: