preg_match가 작동하지 않습니다

user2986690

이 스크립트는 특수 문자가 있는지 여부를 확인하고,있는 경우 preg match의 "Invalid"기능을 호출하고, 그렇지 않으면 사용자 이름을 사용할 수 있다고 표시합니다. 여기서 일어나는 일은 # @ % ^ &와 같은 특수 문자를 쓸 때마다 유효하지 않다고 말하는 대신 사용자 이름이 여전히 사용 가능하다는 메시지가 표시되며 작동하는 방식이 아닙니다. PHP 코드에서 오류를 확인했는데 깨끗한 것 같습니다. 나는 포럼의 모든 것을 시도하고 실행했지만 해결책을 찾지 못했습니다. 귀하의 기여는 대단히 감사하겠습니다!

if(isset($_POST['login'])) {
    $login = mysql_real_escape_string($_POST['login']);

    if(!empty($login)) {

        $login_query = mysql_query("SELECT COUNT(`id`) FROM `account` WHERE `login` = '$login'");
        $login_result = mysql_result($login_query,0);

        if($login_result == 0) {
           echo 'yes';
        } else {
           echo 'no';
        } 
    } 
 }

 if ( preg_match("/^[a-zA-Z0-9[:space:]]+$/" , $login) )  {
    echo 'noinput'; 
 }

추신 : 나는 인터넷에서 코드를 훔쳐서 다른 사람들이 그를 위해 일하도록 노력하는 아이가 아닙니다.이 스크립트의 70 % 정도를 작성했으며 내가 특수 문자를 제외하고는 꽤 잘 작동합니다. m 너무 붙어. 당신이 나를 도울 수 있기를 바랍니다. 감사합니다!

플로리스

당신의 문제가 무엇인지 확실하지 않습니다. 다음 프로그램을 작성했습니다.

<?php

$input="good string";
$input2="bad@string";

if (preg_match("/^[a-zA-Z0-9[:space:]]+$/",$input2)) {
  echo $input2." matches\n";
}
else {
  echo $input2." does not match\n";
}
if (preg_match("/^[a-zA-Z0-9[:space:]]+$/",$input)) {
  echo $input." matches\n";
}
else {
  echo $input." does not match\n";
}

그리고 $input일치 하는 것을 올바르게 표시 하지만 $input2그렇지 않습니다.

입력 한 내용이 확실합니까? 캐리지 리턴이있을 수 있습니까?

업데이트 나는 단순히 PHP 스크립트의 반환 값을 잘못 해석 한 경우라고 생각합니다. 옵션을 살펴 보겠습니다.

1) 유효한 사용자 이름, 사용 가능 :
쿼리가 비어 있고 "yes"문자열을 인쇄합니다. preg_match일치와 "noinput"인쇄물을 찾습니다.

2) 유효한 사용자 이름, 사용할 수 없음 :
쿼리가 무언가를 반환하고 "no"문자열을 인쇄합니다. preg_match"noinput"을 인쇄합니다.

3) 유효하지 않은 사용자 이름, 사용 가능 :
쿼리가 비어 있습니다. 인쇄 문자열 "yes". preg_match아무것도 출력하지 않습니다.

4) 유효하지 않은 사용자 이름, 사용할 수 없음 :
쿼리가 무언가를 반환하고 문자열 "no"를 인쇄합니다. preg_match아무것도 인쇄하지 않습니다.

이것이 반환 값을 해석하는 방법이 아니라면 문제입니다.

두 번째 업데이트

방금 링크의 소스 코드를 살펴 보았는데 이것이 실제로 문제입니다. 여러 다른 응답을 테스트하는 것 같습니다.

  if(data=='no') {
    // do stuff
  } else {
    // something else
    });
  }
  if(data=='noinput') {
    // more stuff
    });
  }
  if(data=='invalid') {
    // yet more stuff
  });

즉, 문자열을 확인합니다 'yes', 'no', 'noinput'. 그러나 코드가 구조화되고 실행되는 방식은 생성하는 출력이 아닙니다. 위의 네 가지 경우를 참조하십시오.

해결책

잘못된 입력에 대한 검사를 코드의 앞부분으로 옮겨야합니다. 일치하지 않는 사용자 이름을 찾은 후 즉시 돌아와야합니다. 다음이 작동 할 것이라고 생각합니다.

if(isset($_POST['login'])) {
    $login = mysql_real_escape_string($_POST['login']);

    if ( preg_match("/^[a-zA-Z0-9[:space:]]+$/" , $login) )  
    {

        $login_query = mysql_query("SELECT COUNT(`id`) FROM `account` WHERE `login` = '$login'");
        $login_result = mysql_result($login_query,0);

        if($login_result == 0) 
        {
           echo 'yes';
        } 
        else 
        {
           echo 'no';
        } 
    }
    else
    {
       echo('noinput');
    }
 }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP : preg_match가 작동하지 않습니다.

분류에서Dev

preg_match 에코가 작동하지 않습니다.

분류에서Dev

Preg_match가 제대로 작동하지 않습니다.

분류에서Dev

preg_match가 예상대로 작동하지 않습니다.

분류에서Dev

Preg_match가 작동하지 않습니다.

분류에서Dev

PHP 메일 링 주소 preg_match ()가 작동하지 않습니다.

분류에서Dev

키릴 문자를 사용한 Preg_match가 작동하지 않습니다.

분류에서Dev

preg_match 함수가 제대로 작동하지 않습니다.

분류에서Dev

문자열에 대한 preg_match가 작동하지 않습니다.

분류에서Dev

preg_match ()가 img src와 일치하지 않습니다.

분류에서Dev

Preg_match가 성공을 반환하지 않습니다.

분류에서Dev

preg_match 우편 번호 및 주가 작동하지 않음

분류에서Dev

Preg_match가 내부 테이블에서 작동하지 않습니까?

분류에서Dev

자신의 컴퓨터에서 PHP preg_match가 작동하지 않습니다.

분류에서Dev

php preg_match가 정규 표현식과 올바르게 작동하지 않습니다.

분류에서Dev

내 preg_match ()가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

PHP preg_match가 HTML5 패턴으로 작동하지 않음

분류에서Dev

preg_match가 올바른 값을 반환하지 않습니까?

분류에서Dev

preg_match가 PHP에서 어떻게 작동하는지 이해하는 데 도움이 필요합니다.

분류에서Dev

이 간단한 PHP preg_match () 함수가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

PHP preg_match가 일치하지 않음

분류에서Dev

PHP preg_match가 결과를 표시하지 않음

분류에서Dev

php preg_match () 작동하지 않음, var 찾기

분류에서Dev

preg_match의 내 패턴이 원하는대로 작동하지 않습니다.

분류에서Dev

openwrt의 php4에 preg_match가 정의되어 있지 않습니까?

분류에서Dev

PHP preg_match가 패턴에 대한 표현식과 일치하지 않습니다.

분류에서Dev

preg_match는 스크립트 PHP에서 작동하지 않지만 온라인으로 작동합니다.

분류에서Dev

preg_match는 한 서버에서 작동하지만 다른 서버에서는 작동하지 않습니다.

분류에서Dev

정규 표현식은 Javascript에서 작동하지만 PHP preg_match에서는 작동하지 않습니다.

Related 관련 기사

  1. 1

    PHP : preg_match가 작동하지 않습니다.

  2. 2

    preg_match 에코가 작동하지 않습니다.

  3. 3

    Preg_match가 제대로 작동하지 않습니다.

  4. 4

    preg_match가 예상대로 작동하지 않습니다.

  5. 5

    Preg_match가 작동하지 않습니다.

  6. 6

    PHP 메일 링 주소 preg_match ()가 작동하지 않습니다.

  7. 7

    키릴 문자를 사용한 Preg_match가 작동하지 않습니다.

  8. 8

    preg_match 함수가 제대로 작동하지 않습니다.

  9. 9

    문자열에 대한 preg_match가 작동하지 않습니다.

  10. 10

    preg_match ()가 img src와 일치하지 않습니다.

  11. 11

    Preg_match가 성공을 반환하지 않습니다.

  12. 12

    preg_match 우편 번호 및 주가 작동하지 않음

  13. 13

    Preg_match가 내부 테이블에서 작동하지 않습니까?

  14. 14

    자신의 컴퓨터에서 PHP preg_match가 작동하지 않습니다.

  15. 15

    php preg_match가 정규 표현식과 올바르게 작동하지 않습니다.

  16. 16

    내 preg_match ()가 작동하지 않는 이유는 무엇입니까?

  17. 17

    PHP preg_match가 HTML5 패턴으로 작동하지 않음

  18. 18

    preg_match가 올바른 값을 반환하지 않습니까?

  19. 19

    preg_match가 PHP에서 어떻게 작동하는지 이해하는 데 도움이 필요합니다.

  20. 20

    이 간단한 PHP preg_match () 함수가 작동하지 않는 이유는 무엇입니까?

  21. 21

    PHP preg_match가 일치하지 않음

  22. 22

    PHP preg_match가 결과를 표시하지 않음

  23. 23

    php preg_match () 작동하지 않음, var 찾기

  24. 24

    preg_match의 내 패턴이 원하는대로 작동하지 않습니다.

  25. 25

    openwrt의 php4에 preg_match가 정의되어 있지 않습니까?

  26. 26

    PHP preg_match가 패턴에 대한 표현식과 일치하지 않습니다.

  27. 27

    preg_match는 스크립트 PHP에서 작동하지 않지만 온라인으로 작동합니다.

  28. 28

    preg_match는 한 서버에서 작동하지만 다른 서버에서는 작동하지 않습니다.

  29. 29

    정규 표현식은 Javascript에서 작동하지만 PHP preg_match에서는 작동하지 않습니다.

뜨겁다태그

보관