PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-06-2016 17:21:07

Finelarme2
Membre
Inscription : 06-06-2016
Messages : 5

[Formulaire] - Interdire un mot dans mon script php ?

Bonjour,

J'aimerais pouvoir éviter certains mots dans mon formulaire d'inscription (qui fonctionne très bien sans cela). Mon formulaire html est classique, voici mon code php:

<?php
  require('db.php');
        if (isset($_POST['username'])){
        $username = $_POST['username'];
  $email = $_POST['email'];
        $password = $_POST['password'];
  $username = stripslashes($username);
  $username = mysql_real_escape_string($username);
  $email = stripslashes($email);
  $email = mysql_real_escape_string($email);
  $password = stripslashes($password);
  $password = mysql_real_escape_string($password);
  $trn_date = date("Y-m-d H:i:s");
        $query = "INSERT into `users2` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
        $result = mysql_query($query);
        if($result){            
            header("Location: login.php");
        }
    }else{
?>

J'ai essayé de modifier mon code (voir l'ajout des 3 lignes), mais cela ne marche pas ? Je ne comprends pas.

<?php
  require('db.php');
        if (isset($_POST['username'])){
        $username = $_POST['username'];
  $email = $_POST['email'];
        $password = $_POST['password'];
  $username = stripslashes($username);
  $username = mysql_real_escape_string($username);
  $email = stripslashes($email);
  $email = mysql_real_escape_string($email);
  $password = stripslashes($password);
  $password = mysql_real_escape_string($password);
  $trn_date = date("Y-m-d H:i:s");
 
 
 
        if ($username == "word") {
  header("Location: redirection.html");
  }else{

        $query = "INSERT into `users2` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
        $result = mysql_query($query);
        if($result){            
            header("Location: login.php");
        }
    }else{
?>

Avez-vous des conseils s'il-vous-plait ?

Merci d'avance pour votre aide.

Hors ligne

#2 08-06-2016 18:18:22

Jc2
Membre
Lieu : Zillisheim - Alsace
Inscription : 23-03-2016
Messages : 12
Site Web

Re : [Formulaire] - Interdire un mot dans mon script php ?

Bonjour,

Quels "mots" souhaitez-vous évitez?

Jc.

Hors ligne

#3 08-06-2016 22:36:14

Finelarme2
Membre
Inscription : 06-06-2016
Messages : 5

Re : [Formulaire] - Interdire un mot dans mon script php ?

Merci pour ton message.

J'aimerais éviter les mots "Twitch" et "Youtube".

Certains m'ont conseillé d'utiliser la fonction aray mais je n'arrive pas du tout à faire cela. D'autres m'ont dit que mes balises actuelles n'étaient pas fermées correctement mais j'ai du mal à savoir où ?

Hors ligne

#4 09-06-2016 12:15:55

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Formulaire] - Interdire un mot dans mon script php ?

Bonjour,

Étape 1 : se forcer à une certaine propreté du code, surtout dans ses identations :


<?php
require('db.php');
if (isset($_POST['username'])){
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $username = stripslashes($username);
    $username = mysql_real_escape_string($username);
    $email = stripslashes($email);
    $email = mysql_real_escape_string($email);
    $password = stripslashes($password);
    $password = mysql_real_escape_string($password);
    $trn_date = date("Y-m-d H:i:s");
       
    if ($username == "word") {
        header("Location: redirection.html");
    } else {
            $query = "INSERT into `users2` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
            $result = mysql_query($query);
            if($result){            
                    header("Location: login.php");
            }
    // Je crois que là il manque un } !!
} else {
?>
 

On voit alors qu'il manque des } , je suppose que celle tout en bas c'est normal (il doit y avoir du code encore en dessous), mais celle qui ferme le else du test if sur le username... ça fait deux else qui se suivent, ça ne peut pas fonctionner !

Etape 2 : utilisation d'un array

Il faut avouer que plus les mots à bloquer se multiplie, plus il faut de if, ce n'est pas pratique. On peut donc plutôt utiliser un tableau. On défini donc le tableau des mots à bloquer, exemple :


$motsInterdits = array('word', 'select', 'update');
 

et on utilise la fonction in_array dans le if (cf la documentation smile.

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#5 17-06-2016 22:35:58

Finelarme2
Membre
Inscription : 06-06-2016
Messages : 5

Re : [Formulaire] - Interdire un mot dans mon script php ?

Merci pour votre aide mais je ne comprends pas du tout.

J'ai fait ceci et rien ne marche. Je ne vois pas ce qu'il faut "fermer".

<?php
require('db.php');
if (isset($_POST['username'])){
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $username = stripslashes($username);
    $username = mysql_real_escape_string($username);
    $email = stripslashes($email);
    $email = mysql_real_escape_string($email);
    $password = stripslashes($password);
    $password = mysql_real_escape_string($password);
    $trn_date = date("Y-m-d H:i:s");
       
         
    if ($motsInterdits = array('word', 'select', 'update');
      }
   
    } else {
            $query = "INSERT into `users2` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
            $result = mysql_query($query);
            if($result){            
                    header("Location: login.php");
            }
    // Je crois que là il manque un } !!
} else {
?>

Hors ligne

#6 18-06-2016 16:25:37

Finelarme2
Membre
Inscription : 06-06-2016
Messages : 5

Re : [Formulaire] - Interdire un mot dans mon script php ?

J'ai réussi ! J'ai compris comment fonctionner les else, du moins pour mon code:

<?php
  require('db.php');
        if (isset($_POST['username'])){
        $username = $_POST['username'];
  $email = $_POST['email'];
        $password = $_POST['password'];
  $username = stripslashes($username);
  $username = mysql_real_escape_string($username);
  $email = stripslashes($email);
  $email = mysql_real_escape_string($email);
  $password = stripslashes($password);
  $password = mysql_real_escape_string($password);
  $trn_date = date("Y-m-d H:i:s");
 
 
        if ($username == "test999") {
  header("Location: redirection.html");
 
  } else

        $query = "INSERT into `users2` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
        $result = mysql_query($query);
        if($result){            
            header("Location: login.php");
        }
    }else{
?>

Cependant je n'arrive pas à utiliser in_array, j'ai essayé ceci:


$motsInterdits = array("ban1", "ban2", "ban3");
if (in_array("ban2", $motsInterdits)) {
header("Location: redirection.html");
} else

Dernière modification par Finelarme2 (18-06-2016 16:40:58)

Hors ligne

#7 20-06-2016 14:50:00

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Formulaire] - Interdire un mot dans mon script php ?


$motsInterdits = array("ban1", "ban2", "ban3");
if (in_array($username, $motsInterdits)) {
header("Location: redirection.html");
} else
 

Peut être ? smile


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

Pied de page des forums