1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[PHP] preg_match

Discussão em 'Web Development' iniciada por flip__, 17 de Junho de 2009. (Respostas: 6; Visualizações: 1768)

  1. flip__

    flip__ Power Member

    Alguém me consegue explicar o que está mal aqui?

    Código:
        if (!preg_match("/^[A-Za-Z0-9_]{3,20}$/", $_POST['username'])) {
            die('Invalid username.');
        }
    Com isso quero que os utilizadores possam usar letras maiúsculas e minúsculas, números e _ quando registam o username.

    Mas estranhamente não funciona... aparece-me o seguinte erro:

     
  2. PHP:
    <?php

    $subject 
    "skenner80";
    $pattern '/^[a-z-A-Z-0-9 \_ ]{3,20}$/';
    if( 
    preg_match$pattern $subject $matches ) )
        echo 
    'ok';

    /*

    acho que o teu erro estava aqui:

    "/^[A-Za-Z0-9_]{3,20}$/"

    9_

    antes dos caracteres especiais tem de se por \

    */

    ?>
    cábula:

    PHP:
    preg_match string $pattern string $subject [, array &$matches [, int $flags [, int $offset ]]] )
     
    Última edição pelo moderador: 19 de Junho de 2009
  3. flip__

    flip__ Power Member

    Muito obrigado, já funcionou! :)
     
  4. K0mA

    K0mA Power Member

    Código:
        if (!preg_match("/^[A-[COLOR=Orange]Z[/COLOR]a-[COLOR=Orange]Z[/COLOR]0-9_]{3,20}$/", $_POST['username'])) {
            die('Invalid username.');
        }
    O erro foi repetir o Z maiúsculo 2 vezes (assinalado a laranja), o correcto seria (assinalado a verde)

    Código:
        if (!preg_match("/^[A-[COLOR=Lime]Z[/COLOR]a-[COLOR=Lime]z[/COLOR]0-9_]{3,20}$/", $_POST['username'])) {
            die('Invalid username.');
        }
    Conclusão: _ não é um caracter especial.
     
  5. flip__

    flip__ Power Member

    Ei, nem tinha reparado que tinha posto o Z maiúsculo. :S



    Para não abrir outro tópico, deixo aqui outra dúvida relacionada com PHP.

    Estou a fazer um sistema de logins e aquilo funciona na perfeição, mas numa parte dá-me uns warnings que não percebo.

    Apesar disto, como disse, funciona tudo bem.

    Vi que posso fazer com que os warnings desapareçam no php.ini. É recomendável? Ou isto pode ser "sério"?
     
    Última edição: 18 de Junho de 2009
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Não descartes os warnings! Sou da opinião que uma coisa só se pode considerar bem feita se não tiver nenhum tipo de aviso.
    Esses warnings devem ser sérios, porque me parecem estar relacionados com a validação do login (por causa do ficheiro check_login.php). Vê lá se não mudaste nada na base de dados que possa estar a trazer problemas nisso.
     
  7. flip__

    flip__ Power Member

    Bem, ao acrescentar uma nova opção no site, surgiu-me um problema, e ao resolve-lo, os warnings também desapareceram. :) Faltava ali um require (ou include acho que também dava), que já o pus e deu tudo bem. :)
     
    Última edição: 19 de Junho de 2009

Partilhar esta Página