Test existance caractere dans chaine

Résolu/Fermé
CyRux Messages postés 164 Date d'inscription dimanche 4 janvier 2015 Statut Membre Dernière intervention 8 septembre 2016 - 10 déc. 2015 à 19:00
CyRux Messages postés 164 Date d'inscription dimanche 4 janvier 2015 Statut Membre Dernière intervention 8 septembre 2016 - 11 déc. 2015 à 15:59
Bonsoir a tous ^^,
Je vous expose ma question :
J'ai un site avec du php qui crée des comptes avec la commande useradd (pour que les gens puissent se créer un accès ftp sur le site)
J'ai donc un shell_exec comme ceci :
$sortie = shell_exec("sudo useradd -m -b /home/ftp -k /home/pi/skel $user -g ftp -p $(mkpasswd $pass) 2>&1");

Donc en gros Sortie peut valoir "user ... alredy exists" si l'utilisateur existe deja ou un truc du genre "the home directory alredy exists" si l'utilisateur a simplement été suprimé.
Je voudrais que si l'utilisateur existe deja (ci sortie = "user ... already exists" ça affiche un message.
J'ai donc fait un :
if (strpbrk($sortie, 'already exists') === FALSE) {
qui si "alredy exist" va au deuxieme test qui est
if (strpbrk($sortie, 'directory') === FALSE) {
et ci le dernier test est negatif affiche un message d'erreur.
sauf que le dernier test ne detecte jamais "directory" ...
j'ai donc fait un
if (strpos($sortie, 'skel') === FALSE) {
et là ça marche ...
Donc je voudrais savoir pourquoi faire un autres strpbrk ne marche pas ...
Si j'ai n'ai pas été assez clair ou que il manque des details n'hésitez pas a me demander ^^
Merci d'avance



--
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 11/12/2015 à 12:03
Salut,

strpbrk() recherche un ensemble de caractère, autrement dit il va recherche la première occurrence de n'importe quel caractère définie dans le second paramètre.

Donc strpbrk($sortie, 'already exists') va chercher la première occurrence de la lettre 'a' ou de la lettre 'l' ou de la lettre 'r', etc... dans la variable $sortie.

strpos() recherche une chaine ce qui correspond plus à ce que tu souhaites.

Donc strpos($sortie, 'already exists') va chercher la première occurrence de la chaine 'already exists'.

Bonne journée
0
CyRux Messages postés 164 Date d'inscription dimanche 4 janvier 2015 Statut Membre Dernière intervention 8 septembre 2016 3
11 déc. 2015 à 15:59
Merci beacoup ^^ avec strpos ça marche nikel ^^
0