Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Web2Py-通过电子邮件验证上载的文件_Python_Web2py - Fatal编程技术网

Python Web2Py-通过电子邮件验证上载的文件

Python Web2Py-通过电子邮件验证上载的文件,python,web2py,Python,Web2py,web2py专家。我试图完成的任务如下: -允许浏览我的网站的人通过表单将文件上载到我的网站(通过crud.create()实现) -访问者无需建立帐户或登录即可上载文件 -用户需要提供电子邮件地址才能上载文件 -基本上,在用户上传一个文件后,该文件被保存在第三方托管/搁置状态,并向用户发送验证/验证电子邮件 -用户单击验证电子邮件中的链接后,该文件将发布到页面,并公开供下载 做这件事最好的方法是什么?谢谢 最明显的是使用会话。 将上载文件的名称保留在某个会话变量中 使用验证电子邮件(onacc

web2py专家。我试图完成的任务如下:

-允许浏览我的网站的人通过表单将文件上载到我的网站(通过crud.create()实现) -访问者无需建立帐户或登录即可上载文件 -用户需要提供电子邮件地址才能上载文件

-基本上,在用户上传一个文件后,该文件被保存在第三方托管/搁置状态,并向用户发送验证/验证电子邮件

-用户单击验证电子邮件中的链接后,该文件将发布到页面,并公开供下载


做这件事最好的方法是什么?谢谢

最明显的是使用会话。 将上载文件的名称保留在某个会话变量中

使用验证电子邮件(onaccept=…)

验证用户的电子邮件后,将调用您的代码-然后您可以将文件与user:file name from session.variable和auth.user\u id关联起来
也可以设置任何权限

如果您希望,用户可以有时间考虑并确认来自其他公司和其他会话的注册,而不是在文件表中包含user.email字段:

db.define_table('gifts', 
Field('im', 'upload', requires=IS_EMPTY_OR(IS_IMAGE(maxsize=(200, 200))), autodelete=True, uploadfolder='static/gifts'),
Field('email', requires=IS_EMAIL()),
Field('notes','text', default='', writable=True),
Field('t0','datetime',default=request.now, readable=False, writable=False),
Field('t', 'datetime', default=request.now, update=request.now, writable=False),
Field('rating', 'integer', default=0, writable=False, readable=False),
Field('hidden', 'boolean', default=True, writable=False, readable=True),
)
然后在onaccept的回调函数中包含匹配查询:
db(db.gives.email==auth.user.email).update(hidden=False)

在给用户提供适当反馈之前,最好选择任何隐藏的文件(可能在确认之前他已经上传了多个文件)


祝您好运

在包含上载信息的表中,添加一个名为“validation\u key”的新字符串字段。上载文件时,在其中插入GUID或相当长的字母数字字符串。将此密钥作为电子邮件链接的一部分发送。当用户单击链接时,搜索密钥,如果找到,将数据库中匹配的“验证密钥”设置为null。空验证密钥表示已验证的上载,您可以允许下载该文件。

Hi,sherdim-谢谢您的建议!我喜欢使用额外字段(而不是会话)和auth.verify_电子邮件的方法,您的建议看起来指向了正确的方向。但是,当脚本中包含auth.verify_电子邮件时,它会强制显示一个登录屏幕,这与不让用户登录进行上载背道而驰。这有什么办法吗?谢谢,谢谢,纳维德。我理解这个过程,现在,我已经通过向用户发送电子邮件解决了这个问题,让用户单击电子邮件中静态页面的链接,输入电子邮件中包含的代码。我是web2py的新手,所以对我来说,困难在于实现一个想法。例如,你说在电子邮件中发送一个链接,让用户点击该链接-在web2py中,动态生成该链接页面的最佳方式是什么,并让它在点击时删除自身?但同时,我也很好奇是否有现成的方法来满足我的要求。据我所知,没有现成的方法。但是,它不应该是静态页面。创建一个名为validate的控制器和视图,其中显示链接。它应该将您的密钥作为参数,检查密钥是否有效,如果找到,则在db中将其置零。用户所要做的就是点击链接,而不是键入任何内容。