2013-04-23 3 views
0

저는 PHP에서 새롭고 PDO와 MySQL을 사용하고 있습니다. 나는이 코드를 사용하여 사용자가 입력 한 데이터를 필터링하기 위하여려고하고있다 :PHP에 사용자가 이미 존재합니다.

if(!filter_input(INPUT_POST,'$username')||!filter_input(INPUT_POST,'$password')) 
     { 
      echo "username or password already exists...."; 
     } 

     else 
     { 
$sql = "INSERT INTO users (Username,Password) VALUES (:username,:password)"; 
$q=$dbh->prepare($sql); 
$q->execute(array(':username'=>$username,':password'=>$password)); 
$count=$q->rowCount(); 
echo "inserted $count rows.\n"; 

를하지만 단순히 메시지 표시되는 오류를 보여줍니다 : 사용자 이름이나 암호가 보여 존재하지 않는 경우

username or password already exists 

을 같은 메시지? 여기에 filter_input()을 사용하지 않아야한다면 대신 무엇을 사용할 수 있습니까?

+0

우리는'filter_input'과'INPUT_POST'가 무엇을하는지 알아야합니다. – samayo

+5

http://www.php.net/filter_input –

+2

@Kolink와의 대화에 따르면, 키워드'filter_input'는 기본 입력 필터링 만 수행하며 당신의 데이타베이스에 전혀 말하지 말라. 사용자 이름이 존재하는지 여부를 결정하기 위해 질의를 할 필요가 있습니다 ('SELECT 1 FROM users FROM users = username'). – halfer

답변

1
filter_input(INPUT_POST,'$username') 

는 배열 키 이름을 기대하고, 잘못 - 항 달러 않고 (당신이 달러를 지정해 get 변수의 이름을 지정하지 않는 경우) :

filter_input(INPUT_POST,'username') 

이 정확해야한다. 암호 필터에도 $ 기호를 제거하십시오.


첫 번째 줄은 다음과 같다 :

if(!filter_input(INPUT_POST,'username')||!filter_input(INPUT_POST,'password')) 
+0

plz 코드에 코드를 추가 하시겠습니까? – msz

+0

@msz 괜찮습니까? – bwoebi

0

물론 형태가 실제로 <input name="$username" />을 가지고하지 않는 한 $을 포함 할 수 없습니다 filter_input에 부여 된 이름입니다.

+0

잘 기억하고있는 경우 $$를 사용하여 $를 사용해야합니다. – Virus721

+0

작은 따옴표로 묶어서 이스케이프 할 필요가 없습니다. '$$'은 변수 변수를위한 것이다. –

+0

그러면 이름에 $가 없어야한다고 말할 필요가 없습니다. – Virus721

관련 문제