【发布时间】:2018-06-06 10:15:22
【问题描述】:
我希望按照此处显示的内容做一些事情: http://strawpoll.me
当您在那里创建投票时,它会为您提供一个独特的网址,您和其他任何人都可以通过访问该网址访问它。
现在显然他们不能用数千个包含投票的单独文件来弄乱他们的服务器,我假设他们有一个基本模板,可以从数据库中加载投票信息。
我想制作一个表单,当用户提交它时,他们会获得自己的独特链接,就像它在稻草民意调查网站上的样子一样。
【问题讨论】:
我希望按照此处显示的内容做一些事情: http://strawpoll.me
当您在那里创建投票时,它会为您提供一个独特的网址,您和其他任何人都可以通过访问该网址访问它。
现在显然他们不能用数千个包含投票的单独文件来弄乱他们的服务器,我假设他们有一个基本模板,可以从数据库中加载投票信息。
我想制作一个表单,当用户提交它时,他们会获得自己的独特链接,就像它在稻草民意调查网站上的样子一样。
【问题讨论】:
因为它是一个简单的动态页面创建,只需要几个文件......
processing.php 文件收集数据并插入到数据库中polls.php 根据分配给投票的自动递增 id 呈现投票。polls-results.php。http://thepollsite.com/12345
.htaccess 用于标识要呈现哪个轮询以及要呈现哪些结果。
# Turns on Mod-Rewrite Engine
# ----------------------------------------------------------------
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
# Poll Pages
# ----------------------------------------------------------------
RewriteRule ^([^/]+)/?$ polls.php?id=$1 [QSA,L]
RewriteRule ^([^/]+)/?$ polls-results.php?id=$1 [QSA,L]
在polls.php 和polls-results.php 上,您都会获得带有$poll_id = $_REQUEST['id']; 的ID 并从那里处理。
嵌入代码呈现在一个简单的对话框弹出中,提供如图所示的 iframe 代码。
虽然你可以添加一些多余的东西......这确实是一个简单的过程。
【讨论】:
在.htaccess 方面,你会想要这样的东西:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
有了这个,所有对服务器上尚不存在的文件/目录的请求都将运行index.php,而不是显示 404 页面。然后,要获取请求的路径,请在 index.php 中使用 $_SERVER['PATH_INFO']。
这是在 PHP 中使用“干净”URL 的一般方法。可能在另一个SO答案中已经说过了,但是很难找到所以我又写了一遍。
相关: Why use a single index.php page for entire site? 和 How to do URL re-writing in PHP?
【讨论】: