Comment empêcher l utilisateur d employer un pseudo avec un espace
flexi2202
Messages postés
4141
Statut
Membre
-
flexi2202 Messages postés 4141 Statut Membre -
flexi2202 Messages postés 4141 Statut Membre -
bonjour a tous
je souhaiterais pouvoir empêcher les utilisateurs de s inscrire avec un espace entre deux lettres ou deux mots
mais comment y arriver
merci de l aide je vous joints ma vérification actuelle
je souhaiterais pouvoir empêcher les utilisateurs de s inscrire avec un espace entre deux lettres ou deux mots
mais comment y arriver
merci de l aide je vous joints ma vérification actuelle
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
?>
<?php
// je me connecte a la base de donnee
require_once 'base.php';
//si tous est ok alors on passe a l inscription
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
$password = ($_POST['password']);
$password_retype = ($_POST['password_retype']);
//preparation des variables propres
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
//préparation de la requête et des variables afin de verifier si l email est present dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
$datas = [$email];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
if ($row == 0)
{
//préparation de la requête et des variables afin de verifier si le pseudo est present dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
$datas = [$pseudo];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
//on verifie que le pseudo n est pas present
if ($row == 0)
{ //on verifie que le pseudo fais moins de 40 caractere
if (strlen($pseudo) <= 40)
{ //on verifie que le email fais moins de 40 caractere
if (strlen($email) <= 40)
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) //on verifie que c est bien une email
{
if ($password == $password_retype)
{ //on verifie que le pasword retape correpond bien au passord
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
$ip = $_SERVER['REMOTE_ADDR'];
$insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
$insert->execute(array(
'pseudo' => $pseudo,
'email' => $email,
'password' => $password,
'ip' => $ip,
'token' => bin2hex(openssl_random_pseudo_bytes(24))
));
header('Location:redirection-inscription.php?reg_err=success');
die();
}
else
{
header('Location: inscription.php?reg_err=password');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=pseudo_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
A voir également:
- Comment empêcher l utilisateur d employer un pseudo avec un espace
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Comment utiliser un chromecast - Guide
- Pseudo whatsapp - Accueil - Messagerie instantanée
- Espace stockage google - Guide
6 réponses
Bonjour
Plusieurs solutions possibles
Soit tu utilises une regex afin de définir les caractères autorisés
Soit, tu vérifies si il y a un espace dans la chaîne de texte... en utilisant par exemple strpos ou str_contains dans un if.
Tu pourrais également faire ce genre de vérification côté JavaScript.
Plusieurs solutions possibles
Soit tu utilises une regex afin de définir les caractères autorisés
Soit, tu vérifies si il y a un espace dans la chaîne de texte... en utilisant par exemple strpos ou str_contains dans un if.
Tu pourrais également faire ce genre de vérification côté JavaScript.
merci pour vos réponses
cote javascript ca sera pas pour moi
déjà que le php c est limite
je vais donc voir avec un if
et une deux solutions proposées
Soit tu utilises une regex afin de définir les caractères autorisés
Soit, tu vérifies si il y a un espace dans la chaîne de texte... en utilisant par exemple strpos ou str_contains dans un if.
cote javascript ca sera pas pour moi
déjà que le php c est limite
je vais donc voir avec un if
et une deux solutions proposées
Soit tu utilises une regex afin de définir les caractères autorisés
Soit, tu vérifies si il y a un espace dans la chaîne de texte... en utilisant par exemple strpos ou str_contains dans un if.
que pensez vous de ceci
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
?>
<?php
// je me connecte a la base de donnee
require_once 'base.php';
//si tous est ok alors on passe a l inscription
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
$password = ($_POST['password']);
$password_retype = ($_POST['password_retype']);
//preparation des variables propres
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
//préparation de la requête et des variables afin de verifier si l email est present dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
$datas = [$email];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
if ($row == 0)
{
//préparation de la requête et des variables afin de verifier si le pseudo est present dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
$datas = [$pseudo];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
//on verifie que le pseudo n est pas present
if ($row == 0)
{ //on verifie que le pseudo fais moins de 40 caractere
if (strlen($pseudo) <= 40)
{ //on verifie que le email fais moins de 40 caractere
if (strlen($email) <= 40)
{
if(preg_match('/[^a-z_\-0-9]/i', $string))//on verifie les caracteres
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) //on verifie que c est bien une email
{
if ($password == $password_retype)
{ //on verifie que le pasword retape correpond bien au passord
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
$ip = $_SERVER['REMOTE_ADDR'];
$insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
$insert->execute(array(
'pseudo' => $pseudo,
'email' => $email,
'password' => $password,
'ip' => $ip,
'token' => bin2hex(openssl_random_pseudo_bytes(24))
));
header('Location:redirection-inscription.php?reg_err=success');
die();
}
else
{
header('Location: inscription.php?reg_err=password');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email');
die();
}
}
else
{
header('Location: inscription.php?reg_err=caractere');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=pseudo_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
merci pour l aide
oui en effet je vais le supprimer
car je n en vois pas l utilité
par contre mon code ne fonctionne pas
si j indique par exemple comme pseudo
azerty
c est refusé il m indique que je rentre un caractère non autorise a mon avis c est surement les espaces après les lettres
oui en effet je vais le supprimer
car je n en vois pas l utilité
par contre mon code ne fonctionne pas
si j indique par exemple comme pseudo
azerty
c est refusé il m indique que je rentre un caractère non autorise a mon avis c est surement les espaces après les lettres
B'jour,
Ta regex est mauvaise.
Je pourrais te donner la version corrigée, mais il faudrait que tu essaies d'abord de comprendre le souci.
Donc va sur https://regex101.com, pour tester ta regex.
Ta regex est mauvaise.
Je pourrais te donner la version corrigée, mais il faudrait que tu essaies d'abord de comprendre le souci.
Donc va sur https://regex101.com, pour tester ta regex.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonsoir Pyraah
merci pour ton aide
apparemment
ca serait comme ceci
car je n ai aucune erreur
avec ceci
merci pour ton aide
apparemment
ca serait comme ceci
if(preg_match('[^a-z_\-0-9]i'))
car je n ai aucune erreur
avec ceci
'[^a-z_\-0-9]i'
mais cela ne fonctionne pas
quoi que je puisse entrer comme pseudo j ai l erreur qui apparaît comme quoi qu il y a un caractère invalide
quoi que je puisse entrer comme pseudo j ai l erreur qui apparaît comme quoi qu il y a un caractère invalide
Merciiii Pyraah
c est top gentil
voila cela fonctionne
je vais m entrainer avec
https://regex101.com/
c est top gentil
voila cela fonctionne
if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo))//on vérifie les caractères
je vais m entrainer avec
https://regex101.com/
tout en sachant que le site ne peut pas faire confiance au JavaScript.
Tu fais la verif en javascript pour éviter d'avoir à transmettre le formulaire au serveur si il n'est pas conforme...
Et si tu sembles ok tu transmets au serveur côté PHP et bien entendu tu reviens vers hifi pour t'assurer que tout est toujours bon