Regex php interdire mot dans chaine
Résolu
oxonium
-
oxonium -
oxonium -
Bonjour,
voilà mon problème :
je n'arrive pas à interdire l'occurrence d'un mot dans une chaine de caractère.
Je souhaiterais interdire le mot "login" qui suit la chaine "admin/" mais permettre à d'autre mots suivant cette même chaine d'être acceptées.
Voilà un exemple pour être plus clair :
j'ai différentes url de type :
www.monsite.com/admin/login.html
www.monsite.com/admin/interface_utilisateur.html
www.monsite.com/admin/gestionnaire.html
je souhaiterais que les 2 dernières url soit acceptées mais pas la 1ère.
j'ai tenté un :
preg_match("#admin/(^login)#", $_SERVER['REQUEST_URI'])
mais j'avoue ne pas être une lumière en regex.
J'ai eu beau chercher sur google, je n'ai pas trouvé ce que je cherchais réellement.
Merci d'avance
voilà mon problème :
je n'arrive pas à interdire l'occurrence d'un mot dans une chaine de caractère.
Je souhaiterais interdire le mot "login" qui suit la chaine "admin/" mais permettre à d'autre mots suivant cette même chaine d'être acceptées.
Voilà un exemple pour être plus clair :
j'ai différentes url de type :
www.monsite.com/admin/login.html
www.monsite.com/admin/interface_utilisateur.html
www.monsite.com/admin/gestionnaire.html
je souhaiterais que les 2 dernières url soit acceptées mais pas la 1ère.
j'ai tenté un :
preg_match("#admin/(^login)#", $_SERVER['REQUEST_URI'])
mais j'avoue ne pas être une lumière en regex.
J'ai eu beau chercher sur google, je n'ai pas trouvé ce que je cherchais réellement.
Merci d'avance
A voir également:
- Regex exclure un mot
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Mettre un mot de passe sur un dossier - Guide
Il faut en priorité utiliser les fonctions de chaines PHP https://www.php.net/manual/fr/ref.strings.php
je me suis mal exprimé, ce que je cherche à faire c'est activer une fonction timer qu'une fois la page de login validé.
Autrement dit ma fonction va s'activer juste après avoir validé le formulaire de login et ma variable de session $_SESSION["temps"] sera effective à ce moment là et continuera de l'être si l'on reste dans la partie admin.
Pour résumer ma fonction doit s'activer dès qu'elle rencontre une page admin/qqch.html autre que login.
d'où l'interdiction de l'occurrence "login".
Voilà le code de la fonction (qui est fonctionnelle mis à part la partie où je vous questionne :) ) :
public function timer() {
if(preg_match("#admin/^(login)#", $_SERVER['REQUEST_URI'])) {
$_SESSION['temps'] = mktime(0, 0, date('s'), date('m'), date('d'), date('y') );
if((mktime(0, 0, 10, date('m'), date('d'), date('y') ) - $_SESSION['temps']) == 0) {
session_destroy();
} elseif((mktime(0, 0, 10, date('m'), date('d'), date('y') ) - $_SESSION['temps']) < 0) {
$_SESSION['message_login'] = "Vous avez été déconnecté !";
echo (mktime(0, 0, 10, date('m'), date('d'), date('y') ) - $_SESSION['temps']);
} else{
echo (mktime(0, 0, 10, date('m'), date('d'), date('y') ) - $_SESSION['temps']);
}
}
}
PS : le else est inutile c'est juste pour avoir un affichage que je fais ça, et le elseif sera remplacé en else une fois la fonction fonctionnelle. La durée de la session est de 10sec afin de vérifier assez rapidement si je suis bien déloggé une fois le temps écoulé.
Configuration: Mac OS X / Safari 533.4
if(strpos($_SERVER['REQUEST_URI'], "admin/") && !strpos($_SERVER['REQUEST_URI'], "login.html")) { //CODE }