必威体育Betway必威体育官网
当前位置:首页 > IT技术

LimeSurvey的使用和简单的二次开发

时间:2019-09-11 06:09:59来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

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】中写入跳转的请求。

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读