저는 건물에 간단한 captcha를 구현하려고하는데, 스스로 해결할 수없는 문제에 대비해 실행했습니다 . 내가 지금과 같은 임의의 숫자를 생성하는 간단한 코드를 사용하고사용자 입력 보안 문자 값을 세션에 저장된 예상 값과 비교합니다.
....
$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);
.... 그리고 좀 더 코드가 임의의 숫자의 이미지를 생성하고 그것을 표시 페이지. 나는 .... 이런 유효성 반대 내가 세션 randomnr2
에 저장된 임의의 숫자에 대해 보안 문자 입력 필드에 입력되었습니다 값을 확인 가야합니까 어떻게
if (strlen($captcha) !== ($_SESSION['randomnr2'])) {
$error['captcha'] = "CAPTCHA error. Please try again";
}
해요?
우우 우우! 그건 captcha가 작동하는 방식이 아닙니다. 길이가 아니라 두 문자열의 실제 내용을 확인합니다. 두 번째 문제에 관해서는 id = "captch"에 가 없도록하십시오. captcha를 채우기 위해 입력하는 입력 필드가 바람직합니다. – Khez
당신은 세션에 저장하고있는 $ randomnr의 값을 해시하고 있습니다 ... 또한 $ captcha의 값을 해쉬하고 두 해시 값을 비교해야합니다. –
@Khez - 네, 미안합니다. 확인해야 할 길이가 아닙니다. 내용입니다 :) 고마워요. 아래 답변에서 'int'를 대신 사용해야합니다. 입력 필드에는 라는 용어가 모두 있습니다. 회신을 보내 주셔서 감사합니다 :) – Alan