limesurvey
前段时间网站开发结束,需要收集下用户的反馈信息。在网上找到了LimeSurvey开源系统。整体来说用过以后,感觉很不错。下面就给大家简单介绍下这个系统,以及自己在开发中遇到的问题。
简单介绍:
LimeSurvey是一款在线问卷管理系统,具有问卷的设计、修改、发布、回收和统计等多项功能。同时它也是一个开源软件
,其最新版本的软件包可以完全免费获取和使用。它集成了调查程序开发、调查问卷的发布以及数据收集等功能,使用它,用
户不必了解这些功能的编程细节。 网上收集的调查数据可以导出多种文件格式以便分析,例如 spss数据格式 *.dat文件。
LimeSurvey是一个基于WEB的投票系统,它支持mysql/PostgreSQL/SQL Server。
资源的获取:
下载地址:http://down.51cto.com/data/561151
http://down.51cto.com/data/827001
将下载后的文件放入到php服务器中,然后访问 localhost/limesurvey/admin/install,进入安装向导页。
系统的使用:
系统的使用较为简单,多点点就都知道了。
使用中遇到的问题:
在确定字符集都设置成utf-8的情况仍然存在该问题,后来发现limesurvey的图表生成使用的是JpGraph。
然后网上搜索资料后,发现下面这个方法可以解决这个问题。
首先问题出在字体文件。先将电脑系统C:\windows\Fonts 下的 楷体 SIMKai.TTF 字体文件,拷贝到
limesurvey\fonts 文件夹下,删除原来的DejaVuSans.ttf ,然后将 SIMKAI.TTF文件改名成DejaVuSans.ttf 。
然后删除limesurvey\tmp下之前生成的对应的乱码统计图片。这样就大功告成了。
二、二次开发
网站系统和LimeSurvey系统需要进行关联,我要解决的是从网站跳转到LimeSurvey系统后,要将用户信息
存储到LimeSurvey系统的session中。然后提交调查问卷后,在LimeSurvey中执行一些数据库操作,然后
再跳转回网站系统。
解决将用户信息存储到LimeSurvey系统的session中,是在limesurvey\APPlication\controllers\survey\index.php
文件的第28行开始,加入下面17--20行代码,sd是传递的参数。
class index extends CAction {
public function run()
{
$this->action();
}
function action()
{
global $surveyid;
global $thissurvey, $thisstep;
global $clienttoken, $tokensexist, $token;
global $clang;
if (isset($_GET['sd']))
{
$_SESSION['sd'] = $_GET['sd'];
}
解决提交调查问卷后,在LimeSurvey中执行一些数据库操作这个问题,在
limesurvey\application\helpers\SurveyruntimeHelper.php文件的 505行开始修改如下(8---12行代码),
其中$thissurvey['surveyls_url']存的是调查问卷结束后跳转的url;$saved_id存储的是生成的调查问卷记录
; header("Location:".$tmp) 执行的是重定向。
$_SESSION[$LEMsessid]['finished'] = true;
$_SESSION[$LEMsessid]['sid'] = $surveyid;
sendcacheheaders();
if (isset($thissurvey['autoredirect']) && $thissurvey['autoredirect'] == "Y" && $thissurvey['surveyls_url'])
{
//Automatically redirect the page to the "url" setting for the survey、
//$tmp1 = $saved_id;
$tmp1 = $_SESSION["sd"];
$tmp = $thissurvey['surveyls_url'].'?st='.$saved_id.'?surveyid'.$surveyid;
//insert into lime_relative
$query = "INSERT INTO lime_relative_".$surveyid." values ('$saved_id', '$tmp1')";
dbExecuteAssoc($query) or show_ERROR("Unable to execute this query : $query<br />");
header("Location:".$tmp);
}
doHeader();
解决再跳转回网站系统问题,用到的是LimeSurvey系统自己的功能。将调查问卷的常规设定中的外观和导航
项里的【调查问卷结束后自动加载url?】选为是。然后在调查问卷的【编辑文本元素】项的【结束url】中写入跳转的请求。