模仿这个strawpoll.me的页面创建/url重写效果


Imitate the page creation/url rewriting effect of this strawpoll.me

我希望按照这里显示的内容做一些事情:http://strawpoll.me

当你在那里创建民意调查时,它会给你一个唯一的url,你和其他任何人都可以通过访问该url来访问它。

现在很明显,他们不能用数千个包含民意调查的单独文件来扰乱服务器,我假设他们有一个基本模板,可以从数据库中加载民意调查信息。

我想制作一个表格,当用户提交时,他们会得到自己独特的链接,就像strawpoll网站上的链接一样。

这是一个简单的动态页面创建,只需要几个文件。。。

  1. 静态的投票创建页面
  2. 收集数据并插入数据库的processing.php文件
  3. 动态轮询呈现页面polls.php,其基于分配给轮询的自动递增的id来呈现轮询
  4. 返回结果的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.phppolls-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答案中说过了,但很难找到,所以我又写了一遍。

相关:为什么整个网站都使用一个index.php页面?以及如何用PHP进行URL重写?