par
filou80 » 08 avr. 2023, 05:11
J'ai tester ma define dans regex101 elle fonctionne :
Code : Tout sélectionner
define('REGEX_MAIL_INJECTION_SQL', "(?!.*[<>/])^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}");
voici ma vue :
Code : Tout sélectionner
<div class="mt-3">
<label for="exampleFormControlInput1" class="form-label texte"> Mail de contact :</label>
<input type="email" class="form-control" id="mail" name="mail" pattern="<?=REGEX_MAIL_INJECTION_SQL?>" placeholder="Mail (obligatoire)" <?php if (isset($mail)) echo 'value="' . htmlspecialchars($mail) . '"'; ?> required>
</div>
<div class="error mb-3"><?= htmlentities($error['mail'] ?? '', ENT_QUOTES, 'UTF-8')?></div>
et mon controlleur :
Code : Tout sélectionner
<?php
require_once(dirname(__FILE__).'/../Configuration/config.php');
require_once(dirname(__FILE__).'/../Public/Utiles/regex.php');
require_once(dirname(__FILE__).'/../Public/Utiles/phpmailer.php');
// Inclure le modele
require_once(dirname(__FILE__).'/../Modeles/ChoixContactAccueil.php');
session_start(); // initialise la session
$results = array();
// Variable(s) a controlées
$code = trim(filter_input(INPUT_GET, 'code', FILTER_SANITIZE_NUMBER_INT));
// Appel de la méthode voirTable pour récupérer les données de la table
$choixContactAccueil = new ChoixContactAccueil();
$results = $choixContactAccueil->voirTable();
//On verifie que le formulaire est envoyé
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//Champ mail
$mail = trim(filter_input(INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL));
if (!preg_match(REGEX_MAIL_INJECTION_SQL, $mail)) {
// Si la variable mail ne correspond pas à l'expression régulière
// renvoyer un message d'erreur ou faire quelque chose d'autre
$error["mail"] = 'L\'adresse email n\'est pas valide';
}
if(empty($mail)){
$error["mail"] = 'Le mail doit être renseigné.';
}
avec c'est bout de code affiché, j'obtiens toujours une erreur :
Warning: preg_match(): Unknown modifier '^' in /volume1/Controlleurs/contactAccueil-ctrl.php on line 26
Merci par avance pour vos retours.
@+ Filou
J'ai tester ma define dans regex101 elle fonctionne :
[code]define('REGEX_MAIL_INJECTION_SQL', "(?!.*[<>/])^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}");[/code]
voici ma vue :
[code] <div class="mt-3">
<label for="exampleFormControlInput1" class="form-label texte"> Mail de contact :</label>
<input type="email" class="form-control" id="mail" name="mail" pattern="<?=REGEX_MAIL_INJECTION_SQL?>" placeholder="Mail (obligatoire)" <?php if (isset($mail)) echo 'value="' . htmlspecialchars($mail) . '"'; ?> required>
</div>
<div class="error mb-3"><?= htmlentities($error['mail'] ?? '', ENT_QUOTES, 'UTF-8')?></div>[/code]
et mon controlleur :
[code]<?php
require_once(dirname(__FILE__).'/../Configuration/config.php');
require_once(dirname(__FILE__).'/../Public/Utiles/regex.php');
require_once(dirname(__FILE__).'/../Public/Utiles/phpmailer.php');
// Inclure le modele
require_once(dirname(__FILE__).'/../Modeles/ChoixContactAccueil.php');
session_start(); // initialise la session
$results = array();
// Variable(s) a controlées
$code = trim(filter_input(INPUT_GET, 'code', FILTER_SANITIZE_NUMBER_INT));
// Appel de la méthode voirTable pour récupérer les données de la table
$choixContactAccueil = new ChoixContactAccueil();
$results = $choixContactAccueil->voirTable();
//On verifie que le formulaire est envoyé
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//Champ mail
$mail = trim(filter_input(INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL));
if (!preg_match(REGEX_MAIL_INJECTION_SQL, $mail)) {
// Si la variable mail ne correspond pas à l'expression régulière
// renvoyer un message d'erreur ou faire quelque chose d'autre
$error["mail"] = 'L\'adresse email n\'est pas valide';
}
if(empty($mail)){
$error["mail"] = 'Le mail doit être renseigné.';
}[/code]
avec c'est bout de code affiché, j'obtiens toujours une erreur :
Warning: preg_match(): Unknown modifier '^' in /volume1/Controlleurs/contactAccueil-ctrl.php on line 26
Merci par avance pour vos retours.
@+ Filou