Prohibit special characters in my registry

-1

This is my function for the registration of my users, only that it does not have to prohibit the special characters, I tried to put preg_match, it works, I put symbols and I notice that it is not allowed, but when I register a normal username "without symbols" I still get the notice and I do not register

   public function adduser() {

    if(isset($_POST['reg_usuario']) && isset($_POST['reg_mail']) && isset($_POST['reg_contrasena']) && isset($_POST['reg_rcontrasena']))
    {   

        $Getnombre = mysql_query("SELECT * FROM users WHERE username = '". $_POST['reg_usuario'] ."'");
        $Getmail = mysql_query("SELECT * FROM users WHERE mail = '". $_POST['reg_mail'] ."'");

        if(isset($_POST['g-recaptcha-response'])){
              $captcha = $_POST['g-recaptcha-response'];
        }

        $look = substr($_POST['habbo-avatar'], 0, -9);
        $gender = substr($_POST['habbo-avatar'], -1);

        if(empty($_POST['reg_usuario']) || empty($_POST['reg_mail']) || empty($_POST['reg_contrasena']) || empty($_POST['reg_rcontrasena']))
        {
            $_SESSION['reg_error'] = 'No dejes los campos vacios';
            return false;
        }
        elseif(mysql_num_rows($Getnombre) > 0)
        {
            $_SESSION['reg_error'] = 'El nombre de usuario ya esta en uso, pon otro';
            return false;
        }

        elseif(mysql_num_rows($Getmail) > 0)
        {
            $_SESSION['reg_error'] = 'El email ya esta en uso, pon otro';
            return false;
        }
        elseif($_POST['reg_contrasena'] !== $_POST['reg_rcontrasena'])
        {
            $_SESSION['reg_error'] = 'Las contraseñas no coinciden';
            return false;
        }
        elseif(strlen($_POST['reg_usuario']) > 12 || strlen($_POST['reg_usuario']) < 3) 
        {
            $_SESSION['reg_error'] = 'El nombre de usuario debe de tener entre 3 y 12 caracteres';
            return false;
        } 

        elseif(strrpos($_POST['reg_usuario'], "MOD-") !== false) 
        {
            $_SESSION['reg_error'] = 'No puedes registrarte con el prefijo <i>MOD-</i>';
            return false;
        } 
        elseif(strrpos($_POST['reg_usuario'], " ") || strrpos($_POST['reg_usuario'], " ") !== false) 
        {
            $_SESSION['reg_error'] = 'Tu nombre no puede contener espacios';
            return false;
        } 
        elseif(strrpos($_POST['reg_usuario'], ".") || strrpos($_POST['reg_usuario'], ".") !== false) 
        {
            $_SESSION['reg_error'] = 'Tu nombre no puede contener puntos';
            return false;
        } 
        elseif (!$captcha) 
        {
            $_SESSION['reg_error'] = 'Chequea el captcha de manera correcta';
            return false;
        }
        else
        {
            mysql_query("INSERT INTO users (username, password, mail, look, gender, motto, ip_reg, portada, date_created) VALUES ('". $this->filtro($_POST['reg_usuario']) ."', '".$this->hasht($_POST['reg_contrasena'])."', '". $this->filtro($_POST['reg_mail']) ."', '". $look ."', '". $gender ."', '". mision ."', '". $this->ip() ."', '". portada ."', '" . time() ."')");
            $_SESSION['username'] = $_POST['reg_usuario'];
            $_SESSION['password'] = $_POST['reg_contrasena'];
            return true;
        }
    }
}
    
asked by Daniel Hernandez 25.02.2017 в 04:51
source

1 answer

1

This function may be useful for you:

function checkString($myString) {
   $validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
   for ($i = 0; $i < strlen($myString); $i++){
        if (strpos($validChars, substr($myString,$i,1)) === false) {
            return false; // Caracteres no validos
        }
   }
   return true; // Caracteres validos.
}

Receive a string and check it with a series of letters / numbers and characters that you choose that will only pass the strings with characters that you decide.

Greetings!

    
answered by 26.02.2017 в 03:15