Commit b1b5359b authored by N. Peraldi's avatar N. Peraldi
Browse files

feature: add constants & more security verifications

parent c2bb8e01
<?php
/**
* Toutes ces variables ne sont que des textes modifiables par l'utilisateur. Ils ne sont là que pour afficher des
* Toutes ces variables ne sont que des textes modifiables par le développeur/mainteneur. Ils ne sont là que pour afficher des
* informations.
*/
//variables pour le mail
$subjectAdullact = "Nouvelle demande de renouvellement d'adhésion";
$subjectUser = "Confirmation de demande de renouvellement d'adhésion";
define("SUBJECT_ADULLACT", "Nouvelle demande de renouvellement d'adhésion");
define("SUBJECT_USER", "Confirmation de demande de renouvellement d'adhésion");
$bonjourUser = "Bonjour,";
$textUser = "Nous avons bien reçu votre demande de renouvellement d'adhésion. Nous vous recontacterons sous peu.";
$byeUser = "A très bientôt !";
$endUser = "L'équipe Adullact.";
$messageUser = $bonjourUser . "<br>" . $textUser . "<br>" . $byeUser . "<br>" . $endUser;
define("TEXT_MAIL_USER", $bonjourUser . "<br>" . $textUser . "<br>" . $byeUser . "<br>" . $endUser);
define("FILTER_FIRST_NAME", "/^([a-zA-ZÀ-ÖØ-öø-ÿœŒ' -]+)$/");
define("FILTER_ADDRESS", "/^([a-zA-Z0-9À-ÖØ-öø-ÿœŒ' -]+)$/");
//nombres maximum
$maxAddressCharacters = 255;
$maxNameCharacters = 255;
$maxCityCharacters = 255;
$maxFonctionCharacters = 255;
define("MAX_ADDRESS_CHARACTERS", 255);
define("MAX_NAME_CHARACTERS", 255);
define("MAX_CITY_CHARACTERS", 255);
define("MAX_FONCTION_CHARACTERS", 255);
//Messages d'erreur
$tooLongAddress = "L'adresse que vous avez entrée est trop longue. Maximum : " . $maxAddressCharacters;
$tooLongName = "Le nom que vous avez entré est trop long. Maximum : " . $maxNameCharacters;
$tooLongNameUser = "Le prénom que vous avez entré est trop long. Maximum : " . $maxNameCharacters;
$tooLongFonctionUser = "La fonction que vous avez entrée est trop longue. Maximum : " . $maxFonctionCharacters;
$postalCodeError = "Un code postal est composé de 5 chiffres.";
$tooLongCity = "Le nom de la ville est trop long. Maximum : " . $maxCityCharacters;
$errorInCityName = "Un caractère incorrect a été entré.";
$errorInEmail = "L'adresse E-mail est invalide.";
$errorInTel = "Un numéro de téléphone se compose de 10 chiffres et commence par un zéro.";
$incorrectUrl = "L'URL est incorrecte.";
$errorInPeriodSelection = "Veuillez sélectionner une période d'adhésion.";
$errorInSiret = "Un numéro de SIRET est composé de 14 chiffres.";
$invalidSiret = "Le numéro de SIRET est invalide.";
$positiveNumberRequired = "Vous devez entrer un nombre positif.";
$numberRequired = "Vous devez entrer un nombre.";
$fieldRequired = "Vous devez compléter ce champ.";
$sizeRequired = "Vous devez sélectionner la taille de votre collectivité.";
$debug_traitement_adhesion = false;
define("ERR_TOO_LONG_ADDRESS", "L'adresse que vous avez entrée est trop longue. Maximum : " . MAX_ADDRESS_CHARACTERS);
define("ERR_TOO_LONG_NAME", "Le nom que vous avez entré est trop long. Maximum : " . MAX_NAME_CHARACTERS);
define("ERR_TOO_LONG_NAME_USER", "Le prénom que vous avez entré est trop long. Maximum : " . MAX_NAME_CHARACTERS);
define("ERR_TOO_LONG_USER_FUNCTION", "La fonction que vous avez entrée est trop longue. Maximum : " . MAX_FONCTION_CHARACTERS);
define("ERR_TOO_LONG_CITY", "Le nom de la ville est trop long. Maximum : " . MAX_CITY_CHARACTERS);
define("ERR_POSTAL_CODE", "Un code postal est composé de 5 chiffres.");
define("ERR_WRONG_CHARACTER", "Un ou plusieurs caractères incorrects ont été entrés.");
define("ERR_MAIL", "L'adresse E-mail est invalide.");
define("ERR_TEL", "Un numéro de téléphone se compose de 10 chiffres et commence par un zéro.");
define("ERR_URL", "L'URL est incorrecte.");
define("ERR_PERIOD_SELECTION", "Veuillez sélectionner une période d'adhésion.");
define("ERR_IN_SIRET", "Un numéro de SIRET est composé de 14 chiffres.");
define("ERR_INVALID_SIRET", "Le numéro de SIRET est invalide.");
define("ERR_POSITIVE_NUMBER_REQUIRED", "Vous devez entrer un nombre positif.");
define("ERR_NUMBER_REQUIRED", "Vous devez entrer un nombre.");
define("ERR_FIELD_REQUIRED", "Vous devez compléter ce champ.");
define("ERR_SIZE_REQUIRED", "Vous devez sélectionner la taille de votre collectivité.");
define("DEBUG_TRAITEMENT_ADHESION", false);
$elementsOfPostToTrash = ["ancienSelectType", "ancienSelectSize", "ancienSelectPeriod"];
$replacements = array(
......@@ -107,8 +111,7 @@ function luhn($numero)
*/
function debug_traitement_adhesion($message)
{
global $debug_traitement_adhesion;
if ($debug_traitement_adhesion) {
if (DEBUG_TRAITEMENT_ADHESION) {
echo "<p> $message </p>";
}
}
......@@ -120,7 +123,7 @@ function debug_traitement_adhesion($message)
*/
function sendAdhesionMail($tab)
{
global $mail_cible_adullact, $subjectAdullact, $subjectUser, $elementsOfPostToTrash, $replacements, $messageUser, $debug_mode_traitement;
global $elementsOfPostToTrash, $replacements;
debug_traitement_adhesion("on se prépare à envoyer le mail");
$tableauFinal = array();
......@@ -150,8 +153,8 @@ function sendAdhesionMail($tab)
$logMessage = $logMessage . $key . " : " . $value . "\n";
}
if (mail($emailUser, $subjectUser, $messageUser, $header)) {
mail($mail_cible_adullact, $subjectAdullact, $messageAdullact, $header);
if (mail($emailUser, SUBJECT_USER, TEXT_MAIL_USER, $header)) {
mail(MAIL_CIBLE_ADULLACT, SUBJECT_ADULLACT, $messageAdullact, $header);
writeInLog("Nouvelle demande", $logMessage);
} else {
writeInLog("Erreur de l'envoi mail.", "Header : \n" . $header . "\nInfos :" . $logMessage);
......@@ -166,12 +169,11 @@ function sendAdhesionMail($tab)
function writeInLog($intitule, $text)
{
//fonction qui écrit dans les logs.
global $debug_mode_traitement;
date_default_timezone_set('Europe/Paris');
$date = date("d-m-Y");
$hour = date("H:i:s");
$filePath = constant("MEMBERSHIP_LOGS_DIRECTORY");
$filePath = MEMBERSHIP_LOGS_DIRECTORY;
$beforeMessage = "\n--------------\nLe " . $date . ", à " . $hour . ", \n" . $intitule . " : \n";
$finalMessage = $beforeMessage . $text;
$fichier = fopen($filePath, "a");
......@@ -195,7 +197,6 @@ function writeInLog($intitule, $text)
*/
function verifFirstSelection($tab)
{
global $fieldRequired;
if (isset($tab["firstSelection"])) {
//première sélection présente
if ($tab["firstSelection"] != "") {
......@@ -220,13 +221,12 @@ function verifFirstSelection($tab)
*/
function verifSecondSelection($tab, $errors)
{
global $sizeRequired;
if (isset($tab["secondSelection"])) {
if ($tab["secondSelection"] == "" || $tab["secondSelection"] == "none") {
$errors["second Selection"] = $sizeRequired;
$errors["second Selection"] = ERR_SIZE_REQUIRED;
}
} else {
$errors["second Selection"] = $sizeRequired;
$errors["second Selection"] = ERR_SIZE_REQUIRED;
}
return $errors;
}
......@@ -239,7 +239,6 @@ function verifSecondSelection($tab, $errors)
*/
function verifEPCI($tab, $errors)
{
global $positiveNumberRequired, $numberRequired;
if (isset($tab["nombreHabitantsEPCI"])) {
if (isset($tab["nombreCommunesMembresEPCI"])) {
$nombreHab = $tab["nombreHabitantsEPCI"];
......@@ -251,22 +250,22 @@ function verifEPCI($tab, $errors)
if ($nombreCom > 0) {
} else {
$errors["EPCI com"] = $positiveNumberRequired;
$errors["EPCI com"] = ERR_POSITIVE_NUMBER_REQUIRED;
}
} else {
$errors["EPCI hab"] = $positiveNumberRequired;
$errors["EPCI hab"] = ERR_POSITIVE_NUMBER_REQUIRED;
}
} else {
$errors["EPCI com"] = $numberRequired;
$errors["EPCI com"] = ERR_NUMBER_REQUIRED;
}
} else {
$errors["EPCI hab"] = $numberRequired;
$errors["EPCI hab"] = ERR_NUMBER_REQUIRED;
}
} else {
$errors["EPCI hab"] = $numberRequired;
$errors["EPCI hab"] = ERR_NUMBER_REQUIRED;
}
} else {
$errors["EPCI hab"] = $numberRequired;
$errors["EPCI hab"] = ERR_NUMBER_REQUIRED;
}
return $errors;
}
......@@ -278,20 +277,23 @@ function verifEPCI($tab, $errors)
*/
function verifNom($tab)
{
global $maxNameCharacters, $tooLongName, $fieldRequired;
if (isset($tab["nomCollectivite"])) {
$nom = trim($tab["nomCollectivite"]);
if (strlen($nom) > 0) {
if (strlen($nom) < $maxNameCharacters) {
return "";
if (strlen($nom) < MAX_NAME_CHARACTERS) {
if (preg_match(FILTER_FIRST_NAME, $nom)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
} else {
return $tooLongName;
return ERR_TOO_LONG_NAME;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
/**
......@@ -301,22 +303,23 @@ function verifNom($tab)
*/
function verifAdresse($tab)
{
global $tooLongAddress, $maxAddressCharacters, $fieldRequired;
if (isset($tab["adresseCollectivite"])) {
$adresse = trim($tab["adresseCollectivite"]);
if (strlen($adresse) > 0) {
if (strlen($adresse) < $maxAddressCharacters) {
return "";
if (strlen($adresse) < MAX_ADDRESS_CHARACTERS) {
if (preg_match(FILTER_ADDRESS, $adresse)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
} else {
return $tooLongAddress;
return ERR_TOO_LONG_ADDRESS;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -327,23 +330,20 @@ function verifAdresse($tab)
*/
function verifCodePostal($tab)
{
global $debug_mode_traitement, $postalCodeError, $fieldRequired;
if (isset($tab["codePostalCollectivite"])) {
$CP = trim($tab["codePostalCollectivite"]);
debug_traitement_adhesion("code postal entré : " . $tab["codePostalCollectivite"]);
if (strlen($CP) > 0) {
if (strlen($CP) == 5 && is_numeric($CP)) {
return "";
} else {
return $postalCodeError;
return ERR_POSTAL_CODE;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -354,28 +354,24 @@ function verifCodePostal($tab)
*/
function verifVille($tab)
{
global $maxCityCharacters, $tooLongCity, $errorInCityName, $fieldRequired;
//vérifie si la ville est correcte
if (isset($tab["villeCollectivite"])) {
$ville = trim($tab["villeCollectivite"]);
if (strlen($ville) > 0) {
if (strlen($ville) < $maxCityCharacters) {
$ville = strtolower($ville);
for ($a = 0; $a < strlen($ville); $a++) {
if (!strpos("azertyuiopqsdfghjklmwxcvbnéèàçùâêîôûäëïöü-", $ville[$a])) {
return $errorInCityName;
}
if (strlen($ville) < MAX_CITY_CHARACTERS) {
if (preg_match(FILTER_FIRST_NAME, $ville)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
return "";
} else {
return $tooLongCity;
return ERR_TOO_LONG_CITY;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -387,20 +383,19 @@ function verifVille($tab)
*/
function verifMail($tab, $key)
{
global $errorInEmail, $fieldRequired;
if (isset($tab[$key])) {
$mail = trim($tab[$key]);
if (strlen($mail) > 0) {
if (filter_var($mail, FILTER_VALIDATE_EMAIL) == true) {
return "";
} else {
return $errorInEmail;
return ERR_MAIL;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -411,20 +406,23 @@ function verifMail($tab, $key)
*/
function verifNomUser($tab)
{
global $tooLongName, $fieldRequired, $maxNameCharacters;
if (isset($tab["nomUser"])) {
$nom = trim($tab["nomUser"]);
if (strlen($nom) > 0) {
if (strlen($nom) <= $maxNameCharacters) {
return "";
if (strlen($nom) <= MAX_NAME_CHARACTERS) {
if (preg_match(FILTER_FIRST_NAME, $nom)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
} else {
return $tooLongName;
return ERR_TOO_LONG_NAME;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -434,20 +432,23 @@ function verifNomUser($tab)
*/
function verifPrenomUser($tab)
{
global $tooLongNameUser, $fieldRequired, $maxNameCharacters;
if (isset($tab["prenomUser"])) {
$prenom = trim($tab["prenomUser"]);
if (strlen($prenom) > 0) {
if (strlen($prenom) <= $maxNameCharacters) {
return "";
if (strlen($prenom) <= MAX_NAME_CHARACTERS) {
if (preg_match(FILTER_FIRST_NAME, $prenom)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
} else {
return $tooLongNameUser;
return ERR_TOO_LONG_NAME_USER;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -458,20 +459,23 @@ function verifPrenomUser($tab)
*/
function verifFonctionUser($tab)
{
global $tooLongFonctionUser, $fieldRequired, $maxFonctionCharacters;
if (isset($tab["fonctionUser"])) {
$prenom = trim($tab["fonctionUser"]);
if (strlen($prenom) > 0) {
if (strlen($prenom) <= $maxFonctionCharacters) {
return "";
$fonction = trim($tab["fonctionUser"]);
if (strlen($fonction) > 0) {
if (strlen($fonction) <= MAX_FONCTION_CHARACTERS) {
if (preg_match(FILTER_FIRST_NAME, $fonction)) {
return "";
} else {
return ERR_WRONG_CHARACTER;
}
} else {
return $tooLongFonctionUser;
return ERR_TOO_LONG_USER_FUNCTION;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -484,7 +488,6 @@ function verifFonctionUser($tab)
function verifTel($tab, $key)
{
//vérifie le numéro de téléphone. il n'est pas obligatoire, on ne retourne pas d'erreur si vide.
global $errorInTel;
if (isset($tab[$key])) {
$tel = trim($tab[$key]);
if (strlen($tel) > 0) {
......@@ -493,7 +496,7 @@ function verifTel($tab, $key)
if ((strlen($tel) == 10 && is_numeric($tel)) && $tel[0] == "0") {
return "";
} else {
return $errorInTel;
return ERR_TEL;
}
} else {
return "";
......@@ -511,7 +514,6 @@ function verifTel($tab, $key)
function verifUrl($tab)
{
//vérifie l'Url du site internet grâce à un filter var. pas obligatoire, ne retourne pas d'erreurs si vide.
global $incorrectUrl;
if (isset($tab["siteCollectivite"])) {
$url = trim($tab["siteCollectivite"]);
......@@ -519,7 +521,7 @@ function verifUrl($tab)
if (filter_var($url, FILTER_VALIDATE_URL) == true) {
return "";
} else {
return $incorrectUrl;
return ERR_URL;
}
} else {
return "";
......@@ -537,15 +539,14 @@ function verifUrl($tab)
function verifPeriodeAdhesion($tab)
{
//vérifie que la période d'adhésion est OK
global $errorInPeriodSelection;
if (isset($tab["periodeAdhesionCollectivite"])) {
if (strlen($tab["periodeAdhesionCollectivite"]) > 0) {
return "";
} else {
return $errorInPeriodSelection;
return ERR_PERIOD_SELECTION;
}
} else {
return $errorInPeriodSelection;
return ERR_PERIOD_SELECTION;
}
}
......@@ -556,8 +557,6 @@ function verifPeriodeAdhesion($tab)
*/
function verifSiret($tab)
{
//on vérifie le numéro de siret
global $debug_mode_traitement, $errorInSiret, $fieldRequired, $invalidSiret;
debug_traitement_adhesion("vérification siret");
if (isset($tab["siretCollectivite"])) {
$siret = trim($tab["siretCollectivite"]);
......@@ -566,15 +565,15 @@ function verifSiret($tab)
if (luhn($siret)) {
return "";
}
return $invalidSiret;
return ERR_INVALID_SIRET;
} else {
return $errorInSiret;
return ERR_IN_SIRET;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -586,18 +585,16 @@ function verifSiret($tab)
function verifNumeroEngagement($tab)
{
//vérifie si le numéro engagement a été correctement entré
global $fieldRequired;
if (isset($tab["numeroEngagementCollectivite"])) {
$numero = trim($tab["numeroEngagementCollectivite"]);
if (strlen($numero) > 0) {
return "";
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -609,17 +606,16 @@ function verifNumeroEngagement($tab)
function verifCode($tab)
{
//vérifie si le code service a été correctement entré
global $fieldRequired;
if (isset($tab["codeCollectivite"])) {
$code = trim($tab["codeCollectivite"]);
if (strlen($code) > 0) {
return "";
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
} else {
return $fieldRequired;
return ERR_FIELD_REQUIRED;
}
}
......@@ -663,7 +659,6 @@ function traitementInformations($tab, $errors)
*/
function traitement($tab, $errors)
{
global $debug_traitement_adhesion;
debug_traitement_adhesion("début traitement");
//le résultat du premier select
......@@ -684,7 +679,7 @@ function traitement($tab, $errors)
} else {
$errors["first selection"] = "Veuillez préciser le type de collectivité.";
}
if ($debug_traitement_adhesion) {
if (DEBUG_TRAITEMENT_ADHESION) {
echo "errors : <br>";
var_dump($errors);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment