Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
14 Décembre 2017, 11:09:34


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1] 2   Bas de page
  Imprimer  
Auteur Fil de discussion: SÉcurité formulaire  (Lu 4686 fois)
0 Membres et 1 Invité sur ce fil de discussion.
nitro007
Invité
« le: 04 Novembre 2008, 02:52:45 »

Bonjour, sur mon site wii-dark, dans le forumulaire d'inscription, j'aimerais le sécurisé plus.
Par exemple, le login, pourrais-je interdire des pseudos bizarres comme ...()"" ou des mots choisis ?
Y-at-il une fonction aussi qui pourrrait changer du code en texte ? par exemple  interdire <textera></textera>.
Entouca voici le lien pour voir mon formulaire d'inscription de wii-dark (http://wii-dark.site40.net/inscription.php)
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 04 Novembre 2008, 02:52:45 »

 Journalisée
Drambam
Nouveau
*
Hors ligne Hors ligne

Messages: 34



Voir le profil WWW
« Répondre #1 le: 04 Novembre 2008, 10:19:25 »

Si tu veux vraiment interdire certains caractères en particulier, je pense judicieux d'utiliser des Expression régulières. Je crois qu'il y a de bons exemples sur le Site du zero, mais attention, c'est assez compliqué! A voir si d'autres façons sont possibles ...
Journalisée

Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #2 le: 04 Novembre 2008, 12:14:11 »

Effectivement, l'utilisation d'un contrôle javascript avec les expressions régulières est la solution la plus élégante. Ce n'est pas si compliqué que ça...

Voici la doc de l'objet regexp en js : http://www.w3schools.com/js/js_obj_regexp.asp
Journalisée
nitro007
Invité
« Répondre #3 le: 04 Novembre 2008, 14:16:22 »

J'avoue c'est pas mon fort les expressions régulières, y-a-til quelqu'un qui connait ca et qui pourrait interdire des >/"$% dans les formualires ?
Journalisée
nitro007
Invité
« Répondre #4 le: 04 Novembre 2008, 16:01:30 »

J'ai réussi a trouvé quelque chose, c'est-à-dire le saisie login est vérifié pour qui a pas des peudo bizarrs comme ,.-_.
Le code qui suit:
Code:
<?php
if (isset($_POST['login']))
{
$_POST['login'] = htmlspecialchars($_POST['login']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer

    
if (preg_match('#^[a-zA-Z0-9]+$#'$_POST['login']))
{
$erreur='le login '.$_POST['login'].' est valide';
 else {
        
$erreur='Le login ' $_POST['login'] . ' n\'est pas valide, recommencez !';
    }
?>

Pouvez-vous m'aider a l'intégrer au code suivant:
Code:
<?php
// on teste si le visiteur a soumis le formulaire  
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
   
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides 
   
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) && (isset($_POST['sexe']) && !empty($_POST['sexe'])) && (isset($_POST['captcha']) && !empty($_POST['captcha']))) { 
      
// on teste les deux mots de passe 
      
if ($_POST['pass'] != $_POST['pass_confirm']) { 
         
$erreur 'Les 2 mots de passe sont différents.'
      } 
      else { 
         
$base mysql_connect (''''''); 
         
mysql_select_db (''$base); 
         
         
// on recherche si ce login est déjà utilisé par un autre membre 
         
$sql 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'
         
$req mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
         
$data mysql_fetch_array($req); 
         
$login $_GET['login']; 
 
         if (
$data[0] == 0) { 
            
$sql 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string($_POST['jeuxprefere']).'",  "'.md5(mysql_escape_string($_POST['pass'])).'","'.mysql_escape_string($_POST['sexe']).'", "'.mysql_escape_string($_POST['url_avatar']).'", "' time() . '", "'.mysql_escape_string($_POST['site_web']).'", "'.mysql_escape_string($_POST['nb_points']).'", "'.mysql_escape_string($_POST['rang']).'")'
            
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
 
         
session_start(); 
         
$_SESSION['login'] = $_POST['login']; 
         
$_SESSION['pass'] = $_POST['pass'];
         
setcookie('login'''.$_SESSION['login'].''time()+30 24 3600);
         
setcookie('pass'''.$_SESSION['pass'].''time()+30 24 3600);
         
header('Location: verifmembre.php'); 
         exit(); 
         }

         else { 
            
$erreur 'Un membre possède déjà ce login.'
         } 
      } 
   } 
   else { 
      
$erreur 'Au moins un des champs est vide.'
   }  
  }
?>
« Dernière édition: 04 Novembre 2008, 21:25:17 par nitro007 » Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 04 Novembre 2008, 16:01:30 »

 Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #5 le: 04 Novembre 2008, 19:48:23 »

Tu as essayé de le faire ?
Tu coince ou ?
Sinon évite stp d'écrire avec de gros caractères ...
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
nitro007
Invité
« Répondre #6 le: 04 Novembre 2008, 20:19:30 »

oui mais ca marche pas, ya trop de if et de else.
Svp aide-moi
Journalisée
Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #7 le: 05 Novembre 2008, 10:16:12 »

Salut,

Je pense qu'il n'est absolument pas judicieux de faire cette vérification en php. En effet, cela encombre le serveur pour rien. Une vérification de syntaxe sur une entrée se fait sur le client donc en js...

Ton expression régulière est indiquée dans le code : ^[a-zA-Z0-9]+$, voici son explication :
- ^ signifie qu'on est en début de chaîne
- $ signifie qu'on est en fin de chaîne
Donc ton expression régulière doit fonctionner sur toute la chaîne que tu testes
- [a-zA-A0-9] signifie que seuls les lettres de a à z, de A à Z et les chiffres (de 0 à 9) sont autorisés
- + signifie qu'il peut y avoir de 1 à plusieurs caractères

Citation
<script type="text/javascript">
function verifLogin()
{
    var patt1=new RegExp("^[a-zA-Z0-9]+$");
    if (!patt1.exec(document.nomduform.nomduchamplogin))
        alert('Le login est incorrect. Les caractères spéciaux ne sont pas autorisés.');
    else
        document.nomduform.submit;
}
</script>

Attention, ce script n'autorise pas les accents pour les logins... A toi de le modifier si tu souhaites qu'un login puisse contenir des accents.

Cordialement,

Arkhena
Journalisée
nitro007
Invité
« Répondre #8 le: 05 Novembre 2008, 13:57:42 »

Ou dois metrre ce script dans ma page
Journalisée
Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #9 le: 05 Novembre 2008, 18:17:31 »

La fonction doit être appelée au clic du bouton de validation du formulaire. Je te laisse effectuer des recherches sur le net sur l'utilisation des évènements pour appeler des fonctions en js.

Si la question portait plus sur le "où est-ce qu'on met du javascript dans une page html", la réponse est la même : cherche sur le net!
Journalisée
nitro007
Invité
« Répondre #10 le: 05 Novembre 2008, 18:26:55 »

Ton explication ma servit a rien, j'ai trouvé ou mettre le regex en PHP dans ma page !!!! F&acirc;ch&eacute;
Journalisée
Drambam
Nouveau
*
Hors ligne Hors ligne

Messages: 34



Voir le profil WWW
« Répondre #11 le: 05 Novembre 2008, 19:16:02 »

Même pas un merci... J'aurais pas apprécié...
Journalisée

MIkE
Big boss
*****
Hors ligne Hors ligne

Messages: 6 150



Voir le profil WWW
« Répondre #12 le: 05 Novembre 2008, 19:19:14 »

Moi je dis merci Arkhena, parce que cette explication servira un jour à quelqu'un (qui utilise la recherche du forum Clin d'oeil ).
Journalisée

Le support et les demandes se font sur le forum. Aucune réponse n'est apportée aux demandes par message privé.
Soutenez Webou en souscrivant à une offre
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #13 le: 05 Novembre 2008, 22:12:11 »

Heureusement que je n'avais pas fais la regex au début, j'ai préféré d'abord savoir s'il est sérieux ou pas ce qui n'est pas le cas  Triste
Sinon par rapport à ta réponse Arkhena, je ne suis pas d'accord. On peut très facilement contourner la vérification du pseudo en JS, de plus en PHP ce n'est pas si lourd que ça quand même Clin d'oeil
k@cem

Edit : J'ai rien dit par rapport au code d'Arkhena  Grima&ccedil;ant
« Dernière édition: 07 Novembre 2008, 20:15:07 par k@cem » Journalisée

Le support ne se fait pas par MP, merci de le respecter !
Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #14 le: 06 Novembre 2008, 10:29:30 »

Ton explication ma servit a rien, j'ai trouvé ou mettre le regex en PHP dans ma page !!!! F&acirc;ch&eacute;

ça m'apprendra à avoir voulu t'aider... Ne t'inquiète pas, on ne m'y reprendra plus!
Journalisée
Pages: [1] 2   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.027 secondes avec 22 requêtes.