La création de compte en php ne fonctionne plus depuis la mise à jour en 2.0.1
-
Bonjour à tous !
Nous avions jusqu'à présent un pfSense sous VMware qui nous sert essentiellement de portail captif pour distribuer le WiFi de façon publique. A l'époque de la mise en place, et pour ne pas se palucher toutes les créations de comptes, j'avais trouvé sur le forum english un script php qui permettait aux utilisateurs de créer eux-même leur compte dans la base locale via une page web. Soit :
- L'utilisateur se connecte au WiFi non sécurisé
- Il est redirigé sur la page d'authentification
- Sur cette page nous demandons à l'utilisateur de cliquer sur un lien pour créer son compte
- Il est dirigé sur une seconde page où il rentre ses informations personnelles afin de créer son compte
- Il est redirigé sur la page d'authentification sur laquelle il peut maintenant rentrer ses login/MDP.
Tout cela fonctionnait très bien, sauf que lorsque nous sommes passé en vSphere 4+, les VMware Tools n'ont plus fonctionné. Pour cette raison, j'ai décidé de mettre à jour pfSense en 2.0.1, mais j'ai oublié de tester la création de compte, et là, c'est le drame ! En gros, j'ai deux fonctions qui ne fonctionnent plus, config_lock et write_config, et des arguments incorrects dans un foreach, et là franchement, je ne sais pas quoi faire. Autant pour bidouiller le script pour ajouter des contrôles et modifier la mise en forme, j'avais pu m'en sortir, autant là je ne vois pas du tout pourquoi ca foire car je ne m'y connais quasiment pas en php.
Est-ce que quelqu'un sait ce qui a changé dans les fonctions en version 2 et par quoi je dois remplacer ces deux fonctions ?
Merci d'avance :)
Voici mon formulaire de création :
<title>Creation de compte</title>
require_once("functions.inc");
if ($_POST) {
config_lock();
$a_user = &$config['captiveportal']['user'];
unset($input_errors);
$pconfig = $_POST;
/* Validation des entrées manuelles /
if ($_POST['username'] == "") $input_errors[] = "L'identifiant est requis.";
if ($_POST['password'] == "") $input_errors[] = "Le mot de passe est requis.";
if ($_POST['fullname'] == "") $input_errors[] = "Le nom complet est requis.";
if (($_POST['password']) && ($_POST['password'] != $_POST['password2'])) $input_errors[] = "Les mots de passe ne sont pas identiques.";
if (!$input_errors) {
/ vérification des doublons */
foreach ($a_user as $userent) {
if ($userent['name'] == $_POST['username']) {
$input_errors[] = "Ce compte existe déjà.";
break;
}
}
}/* Enregistrement */
if (!$input_errors) {
$userent['name'] = $_POST['username'];
$userent['fullname'] = $_POST['fullname'];
$userent['expirationdate'] = "";//$_POST['expirationdate'];
if ($_POST['password']) $userent['password'] = md5($_POST['password']);
$a_user[] = $userent;
write_config();
$done =1;
}}
?>//Succès de l'enregistrement
if (isset($done)) {
?>CREATION DE COMPTE TERMINEE
La création du compte est terminée.
Vous pouvez maintenant vous connecter en cliquant ici.} else { //Page d'enregistrement
//Afficher message d'erreur
if ($input_errors) {
echo "ERREUR : ";
foreach ($input_errors as $input_error) {
echo $input_error . "
";
} //end foreach
} // end if
?>CREATION DE COMPTE
<form method="post">
Identifiant:
Contacter l'accueil pour en obtenir un
Mot de passe :
Entrer le mot de passe de votre choix
Retaper le mot de passe :
Resaisir le mot de passe pour confirmation
Nom complet :
Entrer vos nom et prénom} // Page d'enregistrement
?></form>