Bonjour,

J'utilise LIMESURVEY (en php) pour créer un sondage avec des tas de questions.
Afin de sécuriser le sondage, j'ai souhaité me servir de htaccess et htpasswd, sur le repertoire de limesurvey.
De plus, afin que chaque sondé ne remplisse qu'une seule fois le questionnaire, j ai écrit un script (qui fonctionne, seul) qui modifie le mot de passe crypté, par l'adresse ip du sondé (j avais précédemment créé un script supprimant le login dans htpasswd (script qui fonctionne, seul).

J'ai donc naturellement voulu incorporer mon petit script dans le script de limesurvey, en l'insérant au début de la page principale.

Mais là, problème: soit le script fonctionne, mais il faut entrer un nouveau login et son mot de passe, à chaque question du sondage, soit le script incluant les 2 morceaux buggue.

Pourriez-vous m'indiquer pourquoi il buggue, et comment le réparer , s'il vous plait ?

Est-ce que les versions utilisées dans mon script et celui de limesurvey sont incompatibles ? J'ai remarqué que la 1e ligne de limesuruvey commence par >?php, alors que mon script commence par >?
Cela a-t-il une importance ?

ci dessous, une partie du script (le debut):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php 
$tab = file ('a.txt') ; // on charge le fichier des mots de passe
$i = 0 ;
$temp = '';
$nb = count ($tab) ;
$login = $_SERVER['PHP_AUTH_USER'] ; // login du visiteur
$hipe = $_SERVER['REMOTE_ADDR'] ; // adresse ip du visiteur
 
 
while ($i < $nb)
{
$ligne = $tab [$i] ;
$position = strpos ($ligne , $login ) ; // on regarde si le login est présent dans le fichier
 
 
 
if ($position === FALSE) // s'il est présent, on le laisse dans le fichier
{
 
$temp .=$ligne ; 
}
else // sinon, on remplace le mdp par l'ip du visiteur
{
$ligne = substr_replace($ligne, $hipe, 9, -1) ;
 
$temp .=$ligne ; 
}
$i++ ;
 
} // fin while
 
 
 
$fp = fopen ('a.txt' , 'w') ; // on reecrit le fichier des mots de passe
fwrite ($fp , $temp) ;
fclose ($fp) ;
 
 
// ? >
 
 
// fin de mon script. Si on enlève ce qui suit, le script fonctionne bien.
// ce qui suit , est le code de LIMESURVEY.
 
 
 
 
//<?php
/*
* LimeSurvey
* Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz
* All rights reserved.
* License: GNU/GPL License v2 or later, see LICENSE.php
* LimeSurvey is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*
* $Id: index.php 8488 2010-03-15 21:35:23Z c_schmitz $
*/
 
// Security Checked: POST, GET, SESSION, REQUEST, returnglobal, DB 
 
require_once(dirname(__FILE__).'/classes/core/startup.php');
 
require_once(dirname(__FILE__).'/config-defaults.php');
require_once(dirname(__FILE__).'/common.php');
require_once(dirname(__FILE__).'/classes/core/language.php');
@ini_set('session.gc_maxlifetime', $sessionlifetime);
 
$loadname=returnglobal('loadname');
$loadpass=returnglobal('loadpass');
$scid=returnglobal('scid');
$thisstep=returnglobal('thisstep');
$move=sanitize_paranoid_string(returnglobal('move'));
$clienttoken=sanitize_token(returnglobal('token')); 
if (!isset($thisstep)) {$thisstep = "";}
 
 
if (!isset($surveyid)) {$surveyid=returnglobal('sid');}
else {
//This next line ensures that the $surveyid value is never anything but a number.
$surveyid=sanitize_int($surveyid);
}
 
//DEFAULT SETTINGS FOR TEMPLATES
if (!$publicdir) {$publicdir=".";}
$templaterootdir="$publicdir/templates";
 
// Compute the Session name
// Session name is based:
// * on this specific limesurvey installation (Value SessionName in DB)
// * on the surveyid (from Get or Post param). If no surveyid is given we are on the public surveys portal
$usquery = "SELECT stg_value FROM ".db_table_name("settings_global")." where stg_name='SessionName'";
$usresult = db_execute_assoc($usquery,'',true); //Checked 
if ($usresult)
{
$usrow = $usresult->FetchRow();
$stg_SessionName=$usrow['stg_value'];
if ($surveyid)
{
@session_name($stg_SessionName.'-runtime-'.$surveyid);
}
else
{
@session_name($stg_SessionName.'-runtime-publicportal');
}
}
else
{
session_name("LimeSurveyRuntime-$surveyid");
}
session_set_cookie_params(0,$relativeurl);
@session_start();
 
 
 
// First check if survey is active
// if not: copy some vars from the admin session 
// to a new user session
 
// ce script est plus long , mais j'ai arrté là la copie; elle n'apporte rien de plus, car le script de limesurvey est opérationnel !