我网站的一部分允许用户上传文件。这些文件不会上传到托管网站的服务器(例如site.com
),而是上传到s1.site.com
,s2.site.com
等。这些子域指向不同的服务器IP地址比主服务器。我使用Uploadify jQuery插件进行文件上传。
现在,当用户登录并上传文件时,我希望上传的文件显示在“文件”下的帐户页面中。我坚持认为最好的方法是做到这一点。
我可以为Uploadify设置选项,以便在上传时发送其他POST数据。简单的解决方案是只发送上传文件的用户的用户名以及文件上传,但是其他用户可以欺骗他们的用户名并将文件上传到其他人的帐户。不酷。所以我需要一种方法来告诉用户在停止用户名欺骗时上传文件的内容。
我考虑过将用户会话作为POST数据发送,有点像这样:
$('#file_upload).uploadify({
formData : { '<?php echo session_name();?>' : '<?php echo session_id();?>' }
});
但我对会话真的不太了解。 CodeIgniter正在处理我的用户登录。这会有用吗?有人可以向我解释我是怎么做的吗?
谢谢。
答案 0 :(得分:3)
我喜欢使用md5 hashing来创建基于用户名的唯一哈希值。一旦用户第一次创建了他或她的帐户,我就会这样做。然后我将该哈希值存储在名为hash_validation
的列中。
接下来,我会(在用户登录时(为此使用CodeIngiter))为哈希值创建会话变量。然后我可以检查表和用户名的哈希值以确保安全性。它就像 - &gt;
一样简单$_SESSION['hash_value'] = $row['hash_validation']; //general example of grabbing the row we created
我喜欢在页面上的div中隐藏我的SESSION值,这样我就可以不断地使用JavaScript来引用它们,而无需与服务器通信。
完成上述所有操作后,我们可以使用formData
方法将哈希值发送到服务器(不像上面那样使用php)。然后服务器可以检查哈希值表中所述用户名的现有哈希值,如果正确,我们将上传该文件。