우리는 PHP, MySQL 및 jQuery를 사용하여 우수한 등록 시스템을 만듭니다. jQuery 도구를 사용한 단계별 등록 jquery에서 양식 간의 애니메이션 스위칭

귀하의 사이트의 섹션을 저렴한 제한적으로 만드는 데 필요한 경우, 사용자의 불확실한 서클은 사용자를 등록하고 권한 부여 하여이 작업을 수행하는 가장 쉬운 방법입니다. 사용자 권한을 부여하는 방법에는 여러 가지가 있습니다. 웹 서버 도구 및 프로그래밍 언어 도구를 모두 사용할 수 있습니다. PHP 세션이 사용될 때 우리는 사례에 대해 이야기 할 것입니다.

당신은 아마 그런 양식을 만드는 가장 현대적인 방법을보고 싶습니다. 저에게 현대적이고 현재의 프리젠 테이션으로 가득 차 있지만 PHP의 객체 지향 기술을 사용하여 피드백 양식을 작성할 수 있음을 알 수 있습니다.

시작하기 위해서, 더 나아가는 모든 단계를 말하고자합시다. 우리는 무엇이 필요한가? 사용자를 등록하고 사용자 권한을 부여하는 스크립트가 필요합니다. 승인 후 어딘가에 사용자를 리디렉션하십시오. 또한 액세스 권한이없는 사용자로부터 보호되는 페이지를 만들어야합니다. 등록하고 권한을 부여하려면 HTML 형식을 만들어야합니다. 우리는 데이터베이스에 등록 된 사용자에 대한 정보를 저장합니다. 즉, DBMS에 연결하는 스크립트가 여전히 필요합니다. 모든 작업은 우리가 쓸 수있는 기능에 의해 수행됩니다. 이러한 기능을 별도의 파일로 저장합니다.

따라서 다음 파일이 필요합니다.

  • dBMS와의 연결;
  • 사용자 정의 기능;
  • 권한 부여;
  • 체크인;
  • 보안 페이지;
  • 사용자 완료 시나리오;
  • 스크립트 사용자 권한 상태 확인;
  • 우리 페이지의 가장 간단한 디자인을위한 스타일의 테이블.

이 모든 것은 데이터베이스에 해당 테이블이 없으면 의미가 없습니다. DBMS 관리 도구 (PHPMYADMIN 또는 명령 줄을보다 편리하게) 실행하고 다음 요청을 수행하십시오.

테이블 만들기`int (id` int (11) not null auto_increment,`login` char (16) ,`password` char (40) ,`reg_date` timestamp null default current_timestamp, 기본 키 (`id `)) 엔진 \u003d myisam default charset \u003d utf8 auto_increment \u003d 1;

스크립트가있는 파일을 사용하여 파일을 호출 할 수 있습니다 (모두 동일한 디렉토리에있는 경우).

  • database.php;
  • 함수 .php;
  • login.php;
  • registry.php;
  • index.php;
  • logout.php;
  • checkauth.php;
  • style.css.

그들 각각의 목적은 당신이 이해할 수 있습니다. DBMS에서 스크립트 연결을 시작해 봅시다. 당신은 이미 그것을 보았습니다. 이 스크립트의 코드를 database.php 파일에 저장하십시오. 사용자 정의 기능 우리는 function.php 파일에서 선언됩니다. 어떻게 모든 일을 할 것인가? 권한이없는 사용자는 보안 index.php 문서에 액세스하려고 시도합니다. 시스템은 사용자가 권한이 부여되지 않은 경우 사용자가 권한이 있는지 여부를 확인하고 권한 부여 페이지로 리디렉션됩니다. 권한 부여 페이지에서 사용자는 권한 부여 양식을보아야합니다. 그것을 만들자.

사용자 권한 부여

가입하기.

이제 우리의 양식은 종류가 주어져야합니다. 동시에 우리는 다른 요소에 대한 규칙을 정의합니다. 나는 앞으로 달리고 스타일 테이블의 내용을 완전히 줄 것입니다.

/ * file style.css * / .row (마진 - 아래쪽 : 10px; 폭 : 220px;) .Row 레이블 (디스플레이 : 블록; 글꼴 - 무게 : 굵게;) .Row input.text (글꼴 크기 : 1.2em; 패딩 : 2px 5px;) .to_reg (글꼴 크기 : 0.9em;) .Instruction (글꼴 크기 : 0.8em; 색상 : #AAAAAAA; Margin-left : 2px; 커서 : 기본값) .Error (색상 : 빨강; 마진 왼쪽 : 3px;)

모든 것이 올바르게 수행되면 브라우저에 다음이 있어야합니다.

물론 우리는 아직 단일 등록 된 사용자가 아니며 로그인 할 필요가 없습니다. 등록해야합니다. 등록 양식을 작성합시다.

사용자 등록

" />

PHP 변수가 html -kod에있는 사실을 알아 차렸을 것입니다. 이들은 텍스트 필드 필드 필드의 속성의 내용이며, 오류 출력을위한 컨테이너의 내용입니다. 그러나 우리는 이러한 변수를 초기화하지 않았습니다. 그걸하자.

사용자 등록

" />
사용자 이름은 라틴 알파벳, 숫자, 문자 "_", "-", "."의 기호 일 수 있습니다. 사용자 이름의 길이는 4 자보다 짧아서 16자를 초과하지 않아야합니다.
암호에서 라틴 알파벳, 숫자, 기호 "_", "!", "("( ",") "의 기호 만 사용할 수 있습니다. 암호는 6 자보다 짧아서는 16 자 이하 여야합니다.
이전 암호를 반복하십시오

조치 속성에서 양식 태그가 지정되지 않습니다. 이 경우 처리 할 데이터 양식을 보낼 때, 이들은 처리 된 동일한 시나리오에있을 것입니다. 그래서 우리는 코드 처리 데이터 양식을 작성해야합니다. 그러나 처음으로 처리를 위해 알고리즘을 정렬합시다.

로그인 및 암호 필드가 비어 있도록 필요합니다. 그런 다음 요구 사항을 준수하기 위해 로그인을 확인해야합니다. 암호는 설명 된 요구 사항을 준수해야하며 재 지정 암호는 그와 일치해야하며 더욱이 동일해야합니다. 이러한 조건 중 일부가 실행되지 않으면 양식 데이터 처리가 중단되어야하며 적절한 경고를 오류 메시지 배열에 기록해야하며 사용자에게 표시되어야합니다. 사용자의 편의를 위해, 우리는 그것에 의해 입력 된 로그인 (표시된 경우)을 저장하고 $ 필드 배열에 값을 작성합니다.

모든 것이 괜찮 으면 브라우저 창에서 registration.php 문서에 문의 하여이 양식에 대해 확인해야합니다.

이제 사용자가 등록 버튼을 눌렀습니다. 양식 필드를 채우지 않았습니다. 알고리즘에 따르면 로그인 및 암호는 비어있을 수 없습니다. 이 조건이 실행되지 않으면 등록이 불가능합니다. 우리는 현재 스크립트에서 양식 데이터의 처리가 발생한다는 것을 기억합니다. 따라서 해당 수표를 추가하여 코드를 변경해야합니다. 즉시 다음 수표를 표시하십시오. 로그인 및 암호가 입력되면 지정된 요구 사항을 준수하는지 확인해야합니다. 로그인 및 암호를 확인하려면 futters.php 파일에서 사용자 기능을 만듭니다.

/ ** * functions.php * 사용자 기능이있는 파일 * // require_once dbu ( "database.php")에 연결하기 위해 파일을 매개 변수로 연결합니다. // 사용자 기능 체크 로그인 ($ str) (// 가능한 오류 메시지가있는 변수를 초기화하십시오 \u003d ""; // 로그인 문자열이 없으면 오류 메시지를 반환하는 경우, (! $ st) ($ ERROR \u003d "사용자 이름을 입력하지 않았습니다."$ 오류;) / ** * 정규 표현식을 사용하여 사용자 이름을 확인하십시오. * 로그인은 16자를 초과하지 않고 4보다 짧아서는 안됩니다 * 라틴어의 기호가 있어야합니다. 알파벳, 숫자, * 그것은 "_", "-", "."* / $ pattern \u003d "/ \u003d _-_. az \\ d__4,16) $ / i"; $ result \u003d preg_match ($ 패턴, $ str); // 검사가 통과하지 않은 경우, 오류 메시지 ($ 결과) ($ ERRORT) ($ ERROR \u003d "너무 짧은 문자에 잘못된 문자가 잘못되었습니다."; $ 오류를 반환합니다.) / / 모든 것이 괜찮 으면 true를 true로 반환합니다.) // 사용자 암호를 확인 함수 검사 ($ str) (// 가능한 오류 메시지로 변수를 초기화합니다 $ error \u003d ""; // 로그인 문자열을 넣고 오류 메시지를 반환합니다 (! $ str) ($ ERROR \u003d "암호를 입력하지 않았습니다"; $ 오류를 반환합니다. ) / ** * 정규 표현식을 사용하여 사용자의 암호를 확인합니다. * 암호는 6 자보다 짧아서는 안됩니다. * 라틴어 알파벳, 숫자, *의 기호가 기호 "_"의 기호가 있어야합니다. "!", "(", ")"* / $ pattern \u003d "/ \u003d [_!) (. az \\ d] (6,16) $ / i"; $ \u003d preg_match ($ 패턴, $ str) // 확인을 통과하지 않은 경우 오류 메시지 ($ RETERLIDE) ($ ERRORE) ($ ERROR \u003d "사용자 암호 또는 너무 짧은 문자가 잘못됨)"; $ 오류를 반환합니다.) // 모든 경우 괜찮아, 우리는 진실한 귀환의 가치를 환불 해드립니다.)

이제 우리는 Registry.php 파일을 변경하여 우리가 선언 한 함수를 사용해야합니다. 스크립트에서 등록 버튼을 눌러 테스트 한 조건을 추가합니다. 이 조건 내부에서 로그인 및 암호 확인을 시작합니다. 일부 수표가 실패 할 경우 양식을 다시 나타내고 오류 메시지를 표시합니다. 오류가 없으면 사용자를 등록하고 등록 양식이 더 이상 표시되지 않으며, 성공적인 등록에 대해 사용자를보고하고 헤더 () 함수를 사용하여 승인 양식으로 전달합니다.

시스템에 성공적으로 등록했습니다. 이제 승인 페이지로 리디렉션됩니다. 이것이 일어나지 않았다면 직접 링크로 이동하십시오.

"; 헤더 ("새로 고침 : 5; URL \u003d login.php ");) // 그렇지 않으면 사용자에게 다른 오류 ($ errors ["full_error "] \u003d $ reg;))를 알려줍니다.) 사용자 등록
" />
사용자 이름은 라틴 알파벳, 숫자, 문자 "_", "-", "."의 기호 일 수 있습니다. 사용자 이름의 길이는 4 자보다 짧아서 16자를 초과하지 않아야합니다.
암호에서 라틴 알파벳, 숫자, 기호 "_", "!", "("( ",") "의 기호 만 사용할 수 있습니다. 암호는 6 자보다 짧아서는 16 자 이하 여야합니다.
이전 암호를 반복하십시오

스크립트에서 다른 새로운 기능 - 레지스트리 ()를 알아야했습니다. 그리고 우리는 아직 그것을 선언하지 않았습니다. 그걸하자.

// 함수 등록 함수 기능 ($ login, $ password) (// 가능한 오류 메시지가있는 변수를 초기화하십시오 \u003d ""; // 로그인 문자열이 없으면 (! $ 로그인) (! $ 로그인) $ error \u003d "지정된 로그인이 아님"; $ 오류를 반환합니다.) elseif (! $ password) ($ error \u003d "암호가 지정되지 않음"; $ 오류를 반환합니다.) // 사용자가 이미 등록되어 있는지 확인 // dbms (); // 쿼리 문자열 쓰기 $ sql \u003d "select` id '`users``login` \u003d" ". $ login" "" ""$ query \u003d mysql_query에 대한 요청을합니다. ($ SQL) 또는 DIE ( ""); // 우리는 적어도 하나가있는 경우이 로그인이있는 사용자 수를보고 // IF 오류 메시지 (mysql_num_rows ($ 쿼리)\u003e 0)를 반환합니다 ($ error \u003d "지정된 로그인이 이미 등록 된 사용자가 등록 된 사용자";이 사용자가 아니면 // 등록 // 요청 줄 쓰기 $ SQL \u003d "사용자"(`ID`,`login`) `password`) 값 (, ""$ login "." "," ". $ password. "" ")"; // $ query \u003d mysql_query ($ sql) 또는 죽거나 죽을 수 있도록 요청을합니다.

사용자를 추가 할 수 없습니다. ". mysql_error ()". 문자열에 오류가 발생했습니다. "__line__."

"); // dbms mysql_close ()에서 연결을 끊는 것을 잊지 마십시오. // Return True 사용자의 등록에 대한 성공적인 가치보고를 반환합니다.)

모든 것이 잘되면 사용자가 등록됩니다. 모양을 테스트 할 수 있습니다. 동일한 로그인으로 사용자를 등록하십시오. 등록이 성공한 후 사용자는 권한의 형태로 던져집니다. 이전에 우리는이 양식을 표시하기 위해 마크 업을 만드는 것입니다. action 속성이 매개 변수를 지정하지 않으므로 양식에 의해 전송 된 데이터가 동일한 시나리오에서 처리됩니다. 따라서 처리를 위해 코드를 작성하고 Login.php 문서에 추가해야합니다.

사용자 권한 부여

;">

시스템에 등록되지 않은 경우 등록하십시오.

아마도 권한 부여 스크립트에서 우리는 Authorization ()을 다른 익숙하지 않은 기능을 보였을 것입니다. 이 함수는 이러한 로그인 및 암호가있는 등록 된 사용자가 데이터베이스에 있는지 확인한 후에 사용자 권한을 부여해야합니다. 이러한 사용자가 발견되지 않으면 권한이 중단 될 수 있으므로 화면에 실패 메시지가 표시됩니다. 성공적으로 확인하면 Authorization () 함수가 세션을 시작하고 사용자 이름 및 암호 판독기가 로그인 및 암호 스크립트를 기록하고 스크립트가 사용자를 보안 자원 페이지로 리디렉션합니다.

/ ** * 사용자 권한 부여 기능. * 사용자 권한 부여 * PHP 세션을 사용하여 구현됩니다. * / 함수 권한 ($ 로그인, $ password) (// 가능한 오류 메시지가있는 변수 초기화 \u003d ""; // 로그인 문자열이없는 경우 (! $ login) ($ 오류) \u003d "로그인이 지정되지 않음"; $ 오류를 반환합니다.) elseif (! $ password) ($ error \u003d "암호는 지정되지 않음"; 사용자가 이미 등록되었는지 // 사용자가 이미 등록되었는지 // DBMS 연결 (); // 등록 된 // 중에서 사용자가 요구하는 사용자가`Users`에서`ID```` ""에서 $ SQL \u003d "Select`"라인을 확인해야합니다. $ login "." `password` \u003d "". $ password. "" ""; // $ query \u003d mysql_query ($ SQL) 또는 죽을 요청;

쿼리를 완료 할 수 없습니다. ". mysql_error ()". 문자열에 오류가 발생했습니다. "__line__."

"); // 그러한 데이터가있는 사용자가 없으면, 오류 메시지가있는 경우 (mysql_num_rows ($ query) \u003d\u003d 0) ($ error \u003d"지정된 데이터를 가진 사용자가 등록되지 않음 "; 리턴 $ 오류; ) // 사용자가 존재하는 경우, session_start 세션 (); //를 실행하고 IT 로그인 및 사용자 암호로 쓰기 // 이에 대해 슈퍼 글로브 배열 $ _session $ _session [ "login"] \u003d $ login; $ _session [ "password"] \u003d $ password; / / mysql_close 데이터베이스 ()에 대한 연결을 닫는 것을 잊지 마십시오. // return true의 성공적인 권한 부여를 충족시키기 위해 true를 반환합니다.)

사용자가 보안 페이지를 히는 경우 권한 부여에 대한 데이터의 정확성을 확인하십시오. 이를 위해 다른 사용자 기능이 필요합니다. IT 체크 카이트 ()를 호출 해 봅시다. 해당 작업은 데이터베이스에 저장된 사용자 권한 데이터에서 조정됩니다. 데이터가 일치하지 않으면 사용자가 권한 부여 페이지로 리디렉션됩니다.

기능 체크 카이트 ($ login, $ password) (// 로그인 또는 암호가 없으면 false를 반환하십시오. ($ login ||! $ password) false를 반환합니다. // 이러한 사용자가 등록 된지 확인 // dbms (); //`users`에서 "```select`"`select` ". $ login" "" "and` password` \u003d" ". $ password." "" "; // $ query 요청 \u003d mysql_query ($ SQL) 또는 죽을 ("

쿼리를 완료 할 수 없습니다. ". mysql_error ()". 문자열에 오류가 발생했습니다. "__line__."

"); // 그러한 데이터가없는 사용자가 없으면 false를 반환합니다. (мysql_num_rows ($ query) \u003d\u003d 0) (false 리턴) // 데이터베이스에 대한 연결을 닫는 것을 잊지 마십시오 mysql_close (); / / 그렇지 않으면 우리는 진실한 반환을 반환합니다.)

이제 사용자가 보안 페이지에 있어야하므로 권한 데이터 확인 기능을 호출해야합니다. Call and Check Script 우리는 별도의 checkauth.php 파일에 배치되며 공유 액세스를 위해 닫히는 페이지에 연결합니다.

// * 사용자 권한 부여의 스크립트 확인 * // username 및 password // session_start ()의 권한이 부여 된 사용자를 검색 할 세션을 시작합니다. // 사용자 require_once 함수가있는 파일을 노래합니다 ( "function.php"); / ** * 사용자가 권한이 있는지 확인하려면 로그인 * 및 암호에 대한 데이터베이스에 레코드가 있는지 확인해야합니다. 이렇게하려면 사용자 기능 * 사용자의 권한이 부여 된 사용자의 정확성을 확인하십시오. *이 함수가 false를 반환하면 권한이 없습니다. * 인증이 없을 경우, * 사용자가 * 사용자를 인증 페이지로 리디렉션하기 만하면됩니다. * / // 세션이 데이터 및 로그인 및 암호가 특징 인 경우 // isset ($ _ 세션 [ "로그인") && $ _session [ "로그인"] && ISSET ($ _ 세션 [ "password"]) && $ _session [ "password"]) (// 실패한 경우 기존 데이터의 테스트가 실패한 경우 (! 체크 카트 ($ _ 세션 [ "로그인", $ _session [ "암호"])))) (// 권한 페이지 헤더 ( "loctor : login.php"); // 종료 스크립트의 실행을 중지합니다. // 데이터 나 사용자 이름이 없거나 사용자 암호가 없으면, // 우리는 권한 부여가 없다고 생각합니다. else 권한 부여 페이지 (헤더 ( "loctor : login.php"); // 종료 스크립트의 실행을 중지합니다.)

그리고 이제는 보안 페이지의 코드를 작성해 봅시다. 그는 꽤 간단 할 것입니다.

권한 부여 및 사용자 등록

성공적인 승인.

보안 페이지에 액세스 할 수 있습니다. 시스템에서 나올 수 있습니다.

보안 문서에서는 보안 문서에서 하나의 파일 - Checkauth.php 만 연결합니다. 다른 모든 파일은 다른 시나리오에 연결됩니다. 따라서 우리의 코드는 번거롭지 않습니다. 우리는 사용자의 등록 및 권한을 조직했습니다. 이제 사용자가 시스템을 떠날 수 있도록해야합니다. 이렇게하려면 Logout.php 파일에 스크립트를 만듭니다.

/ ** * 시스템에서 사용자 출력 스크립트. 사용자 *가 세션을 통해 권한이 부여되므로 사용자 이름과 암호는 SuperGugue Array $ _Session에서 * 저장됩니다. 시스템에서 * 출력을 구현하려면 * 배열 $ _session [ "login"] 및 $ _session [ "password") 값을 삭제하는 것만으로 인식 페이지를 사용자를 리디렉션 한 후 * / // / session_start 세션 ()을 실행하십시오. unset ($ _ 세션 [ "로그인"]); unset ($ _ 세션 [ "암호"]); 헤더 ( "위치 : login.php");

등록 스크립트, 사용자의 권한 부여 및 검증 준비가되었습니다. 당신은 자신에게 그것을 사용하고, 보충, 필요에 따라 변경할 수 있습니다. 질문이 있으시면 주석에 물어볼 수 있습니다. 하나의 아카이브에 음성 패키지가있는 모든 파일을 다운로드 할 수 있습니다.

추신 나는 객체 지향 코드를 작성하는 것이 더 낫다는 것을 알고 있으며, 데이터베이스에 기록 된 정보가 이전에 점검되어야한다는 오픈 암호로 통과하고 저장할 가치가 없다는 것을 알고 있습니다. 알아. 나는 여기에 그것에 대해 이야기하지 않을 것이다.

온라인으로 트위터. 깨끗하고 간단한 디자인으로 페이지 작업을 관찰 할 수 있습니다. 페이지의 오른쪽 상단 부분을 보면 버튼이 표시됩니다. 권한 부여 시스템에서 볼 수있는 클릭을 클릭하여 양식 데이터를 채우려면. 오늘 우리는 자신의 사이트에서 비슷한 효력을 갖는 방법에 대해 알려 드리겠습니다. 사실, 그것은 매우 간단합니다. 또한 페이지에있는 장소를 저장하고 방문객에게 편안함을 추가하는 데 도움이됩니다. 이 기사에서는 단계별로 단계별 로이 가이드 조차도이 가이드조차도 탐험하려는 사람들에게 유용 할 것입니다. jquery....에 앞으로!

HTML 코드

먼저 HTML 코드에서 시작해야합니다. HTML 코드는 매우 간단합니다 - 양식이 표시되는 비용으로 "필드 세트"태그와 함께가는 "A"태그가 포함되어 있습니다.

그냥 새 페이지 코드로 복사하십시오.


계정이있다? 로그인하십시오.













비밀번호를 잊어 버렸습니까?


title \u003d "(! lang : 암호를 기억하는 경우 이메일로 로그인하십시오." !}
href \u003d "#"\u003e 사용자 이름을 마시겠습니까?






CSS 코드

CSS를 사용하여 권한 부여 버튼 및 로그인 양식을 확인해야합니다. 아래 코드는이 기능을 실행합니다.

이 코드를 CSS 파일에 복사하거나 스타일에 의해 결정되는 HTML 코드에 추가하십시오. 이 코드는 권한 부여 버튼을 정의합니다.

#container (
너비 : 780px;
마진 : 0 자동;
위치 : 상대;
}

#content (
너비 : 520px;
최소 - 높이 : 500px;
}
a : 링크, A : 방문 (
색상 : # 27b;
텍스트 장식 : 없음;
}
a : 호버 (
텍스트 장식 : 밑줄;
}
img (
국경 너비 : 0;
}
#topnav (
패딩 : 10px 0px 12px;
글꼴 크기 : 11px;
선 - 높이 : 23px;
텍스트 정렬 : 오른쪽;
}
#topnav a.signin (
배경 : # 88BBD4;
패딩 : 4px 6px 6px;
텍스트 장식 : 없음;
글꼴 무게 : 굵게;
색상 : #fff;
--webkit-border-radius : 4px;
-moz-border-radius : 4px;
경계 반경 : 4px;
* 배경 : 투명 URL ( "이미지 / signin-nav-bg-ie.png") 아니오 반복 0 0;
* 패딩 : 4px 12px 6px;
}
#topnav a.signin : 호버 (
배경 : # 59b;
* 배경 : 투명 URL ( "이미지 / signin-nav-bg-hover-iepng") 아니오 반복 0 0;
* 패딩 : 4px 12px 6px;
}
#topnav a.signin, #topnav a.signin : 호버 (
* 배경 - 위치 : 0 3PX! 중요;
}

a.signin (
위치 : 상대;
마진 왼쪽 : 3px;
}
a.Signin Span (
배경 이미지 : URL ( "이미지 / Toggle_Down_light.png");
배경 - 반복 : 없음;
배경 위치 : 100 % 50 %;
패딩 : 4px 16px 6px 0;
}
#topnav a.menu-open (
배경 : # ddeef6! 중요;
색상 : # 666! 중요;
개요 : 없음;
}
#small_signup (
디스플레이 : 인라인;
Float : 없음;
선 - 높이 : 23px;
여백 : 25px 0 0;
너비 : 170px;
}
a.signin.menu-open span (
배경 이미지 : URL ( "이미지 / Toggle_up_dark.png");
색상 : # 789;
}

또한 로그인 양식의 정의입니다.

#signin_menu (
-Moz-Border-Radius-Topleft : 5px;
-moz-border-radius-bottomleft : 5px;
-moz-border-radius-bottomright : 5px;
- 웨이브킷 - 테두리 탑 왼쪽 반경 : 5px;
- 웨브 키트 - 테두리 바닥 왼쪽 반경 : 5px;
- 웨이브 키트 - 경계 바닥 - 오른쪽 - 오른쪽 반경 : 5px;
디스플레이 : 없음;
배경색 : # ddeef6;
위치 : 절대;
너비 : 210px;
Z- 색인 : 100;
테두리 : 1px 투명;
텍스트 - 정렬 : 왼쪽;
패딩 : 12px;
상단 : 24.5px;
오른쪽 : 0px;
마진 - 상단 : 5px;
마진 오른쪽 : 0px;
* 마진 - 오른쪽 : -1px;
색상 : # 789;
글꼴 크기 : 11px;
}

#signin_menu 입력, #signin_menu 입력 (
디스플레이 : 블록;
-moz-border-radius : 4px;
--webkit-border-radius : 4px;
테두리 : 1px 단단한 #
글꼴 크기 : 13px;
마진 : 0 0 5px;
패딩 : 5px;
너비 : 203px;
}
#signin_menu p (
마진 : 0;
}
#signin_menu a (
색상 : # 6ac;
}
#signin_menu 레이블 (
글꼴 무게 : 정상;
}
#signin_menu p.remember (
패딩 : 10px 0;
}
#signin_menu p.forgot, #signin_menu p.cheplete (
지우기 : 둘 다;
마진 : 5px 0;
}
#signin_menu p a (
색상 : # 27b! 중요;
}
#signin_submit (
-moz-border-radius : 4px;
--webkit-border-radius : 4px;
배경 : # 39D URL ( "이미지 / bg-btn-blue.png") 반복 x 스크롤 0 0;
테두리 : 1px 고체 # 39D;
색상 : #fff;
텍스트 - 그림자 : 0 -1PX 0 # 39D;
패딩 : 4px 10px 5px;
글꼴 크기 : 11px;
마진 : 0 5px 0 0;
글꼴 무게 : 굵게;
}
#signin_submit :: - moz-focus-inner (
패딩 : 0;
테두리 : 0;
}
#signin_submit : hover, #signin_submit : 초점 (
배경 - 위치 : 0 -5px;
커서 : 포인터;
}

그것은 자바 스크립트로 일할 시간입니다

HTML과 CSS의 코드가 매우 복잡하고 혼란스럽고 JavaScript에서는 매우 간단합니다. 이 JavaScript 코드를 사용하면 클릭이 로그인 양식 외부에서 수행 될 수있는 경우에도 권한 부여 버튼을 클릭 할 때 폼을 표시하고 숨길 수 있습니다.



방문자가 권한 부여 버튼을 클릭하면 위에 제시된 코드에 따르면 새 기능이 시작됩니다. 먼저 로그인 양식이 표시됩니다 (파일 "filedset"파일에 묶여 있음), ".signin"클래스에 묶인 참조는 백그라운드 이미지를 교체하는 비용으로 ".signin"클래스에 포함 된 참조가 다른 클래스 "메뉴 열기"를 추가합니다.

이 코드의 또 다른 이벤트는 방문자가 로그인 양식을 클릭하고 페이지의 어딘가에서 닫을 때 닫힙니다. 즉, "menu-open"클래스는 클래스 ".signin"클래스와 링크에서 제거되고 원래의 배경 이미지로 되돌아갑니다.

팁은 어떨까요?


우리는 당신이 사용하도록 조언합니다 jQuery의 플러그인 - 팁이 있습니다...에 ToolTip-A의 내용은 링크와 관련된 "제목"속성에 쓰여지는 것을 나타냅니다. 동쪽, 서쪽, 남쪽 또는 북쪽에 상대적인 위치 툴팁을 변경할 수 있습니다. 위의 코드에 지정된 "중력"매개 변수로 인해 구현됩니다. 우리는이 플러그인 전용 사이트에 대한 링크를 제공하므로 기능을 더 자세히 연구하고 플러그인을 다운로드 할 수 있습니다. ...에 ...

드디어

이 기사에서 모든 코드를 복사 한 경우 폴더 구조를 변경하지 마십시오. 변경하면 코드가 작동하지 않습니다. 이 코드는 만드는 한 예일뿐입니다 jQuery를 사용하여 인증 드롭 다운 형태...에 실제로 행운을 빈다!

페이지를 재부팅하지 않고도 동적 스위칭 가능성이있는 입력 및 등록 양식의 기능에 적응할 수 있습니다. 창이 나타나면 사용자는 쉽게 하나에서 다른 것으로 전환 할 수 있으며 필요한 경우 암호 변경 옵션을 선택하십시오.
오늘날 우리는 모든 것이 작지만 매우 기능적인 jquery 플러그인과 새로운 CSS3 표준을 사용하여 모든 것이 구현 될 수있는 방법을 살펴 보겠습니다.

이 메서드는 사용자가 사이트의 각 페이지의 사용자에게 입력 및 등록 양식을 사용할 수있게하려면 유용합니다. 웹 사이트 또는 등록을 입력 할 때 사용자는 다른 페이지로 리디렉션되지 않으며 현금 등록기를 벗어나지 않고 모든 필요한 작업을 수행 할 수 있습니다. "모든 것이 한 페이지에 있습니다.

팝업 양식의 모양의 모양은 CSS3을 사용하여 구현되며 플러그인의 총 중량은 전혀 크지 않고, 모달 창의 응답 및로드가 거의 지체없이 발생합니다.
양식이있는 모달 창의 100 % 적응 형 레이아웃, 모달 창의 높이 및 너비는 사용자 정의 장치의 화면의 크기에 따라 자동으로 설정됩니다.

이 예제는 이제 사이트에서 사용 방법을 배우기 위해 모달 창 및 양식의 모든 주요 구성 요소를 분석 할 것입니다.
엔트리 및 \u200b\u200b등록 양식을 사용하여 팝업 창의 작동은 인기있는 JavaScript 라이브러리, 실행 가능한 JQuey 플러그인 및 CSS 모양의 스타일을 기반으로합니다. 이 모든 도구는 사이트에 연결되어 있어야합니다. 최신 JQuey 라이브러리의 최신 버전은 Google에서 직접 연결할 수 있으며 Main.js 플러그인 자체와 완성 된 Style.css 스타일의 완성 된 세트가 아카이브에서 찾을 수 있습니다.
닫는 태그 앞에서 처방 된 자바 스크립트 CSS 스타일을 복사하여 스타일 file.css 사이트에 추가 할 수 있습니다.

HTML 구조 :

어두운 배경의 기본 모달 창 컨테이너 및 제어 요소가있는 내장 형식은 페이지 본문에 위치합니다. 더 큰 이해를 위해 섹터를 구분하고 의견을 추가했습니다. 모든 디자인 요소는 특정 클래스를 통해 CSS와 확고하게 연결되어 있으므로 사이트의 일반적인 디자인에 따라 양식의 디자인을 변경하기 위해서는별로 어려울 수 없습니다.

< div class = "cd-user-modal" > < div class = "cd-user-modal-container" > < ul class = "cd-switcher" > < li>< a href= "#0" > 입구 < li>< a href= "#0" > 체크인 < div id= "cd-login" > < form class = "cd-form" > < p class = "fieldset" > < label class = "image-replace cd-email" for = "signin-email" > 이메일 < input class = id= "signin-email" type= "email" placeholder= "이메일" > < span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < label class = "image-replace cd-password" for = "signin-password" > 암호 < input class = "전체 너비의 패딩 경계선" id \u003d "signin-password"유형 \u003d "텍스트"자리 표시 자 \u003d "(! lang : password)" > !}< a href= "#0" class = "hide-password" > 숨는 장소 < span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < input type= "checkbox" id= "remember-me" checked> < label for = "remember-me" > 날 기억해 < p class = "fieldset" > < input class = "full-width" type= "submit" value= "안으로" > < p class = "cd-form-bottom-message" >< a href= "#0" > 비밀번호를 잊어 버렸습니까? < div id= "cd-signup" > < form class = "cd-form" > < p class = "fieldset" > < label class = "image-replace cd-username" for = "signup-username" > 사용자 이름 < input class = "전체 너비의 패딩 경계선" id \u003d "signup-username"type \u003d "text"자리 표시 자 \u003d "사용자 이름"> < span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < label class = "image-replace cd-email" for = "signup-email" > 이메일 < input class = "전체 너비의 패딩 경계선" id \u003d "이메일"유형 \u003d "이메일"자리 표시 자 \u003d "(! Lang : 이메일" > !}< span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < label class = "image-replace cd-password" for = "signup-password" > 암호 < input class = "전체 너비의 패딩 경계선" ID \u003d "가입 비밀번호"유형 \u003d "텍스트"자리 표시 자 \u003d "(! LANG : 암호" > !}< a href= "#0" class = "hide-password" > 숨는 장소 < span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < input type= "checkbox" id= "accept-terms" > < label for = "accept-terms" > 나는 동의한다< a href= "#0" > 정황 < p class = "fieldset" > < input class = "full-width has-padding" type= "submit" value= "계정 만들기"> < div id= "cd-reset-password" > < p class = "cd-form-message" > 비밀번호를 잊어 버렸습니까? 당신의 이메일 주소를 입력하십시오. 새 암호를 만드는 링크를 받게됩니다. < form class = "cd-form" > < p class = "fieldset" > < label class = "image-replace cd-email" for = "reset-email" > 이메일 < input class = "전체 너비의 패딩 경계선" id \u003d "재설정 - 이메일"유형 \u003d "이메일"자리 표시 자 \u003d "(! Lang : 이메일" > !}< span class = "cd-error-message" > 여기에 오류 메시지가 있습니다! < p class = "fieldset" > < input class = "full-width has-padding" type= "submit" value= "암호 복원"> < p class = "cd-form-bottom-message" >< a href= "#0" > 입구로 돌아 가기 < a href= "#0" class = "cd-close-form" > 닫기

  • 입구
  • 체크인

여기에 오류 메시지가 있습니다!

숨는 장소 여기에 오류 메시지가 있습니다!

비밀번호를 잊어 버렸습니까?

여기에 오류 메시지가 있습니다!

여기에 오류 메시지가 있습니다!

숨는 장소 여기에 오류 메시지가 있습니다!

비밀번호를 잊어 버렸습니까? 당신의 이메일 주소를 입력하십시오. 새 암호를 만드는 링크를 받게됩니다.

여기에 오류 메시지가 있습니다!

입구로 돌아 가기

닫기



CSS 스타일 :

양식의 기본 템플릿과 요소 인, 저자는 미니멀리즘에 초점을 맞춘 인기있는 평면 스타일 (평면)에서 수행되었습니다. 불필요한 불필요한, 적당히 투명한 검은 색 배경, 색상, 잘 선택된 글꼴 및 아이콘을 쉽게 지정하여 입력 필드를 지정합니다. CSS 속성을 사용하면 모든 요소 양식을 쉽게 수정할 수 있습니다.

.cd- 사용자 - 모달 (위치 : 고정; 상단 : 0; 왼쪽 : 0; 폭 : 100 %, 높이 : 100 %; 배경 : RGBA (52, 54, 66, 0.9); Z- 색인 : 3; 오버플로 - Y : 자동; 커서 : 포인터; 가시성 : 숨김; 불투명도 : 불투명도 0.3s 0, 가시성 0 0.3s; -moz-transition : 불투명도 0.3s 0, 가시성 0 0.3s; 전환 : 불투명도 0.3 s 0, 가시성 0 0.3s;) .cd - 사용자 - 모달 .IS 가시 (가시성 : 가시적 인; 불투명도 : 1 --webkit-transition : 불투명도 0.3s 0, 가시성 0 0; -Moz-transition : 불투명도 0.3s) 0, 가시성 0 0; 전환 : 불투명도 0.3s 0, 가시성 0 0;) .cd - 사용자 모달 .CD - 사용자 - 모달 컨테이너 (-webkit-transform : translatey (0); -moz- 변환 : translatey (0); -ms-transform : translatey (0); -O- 변환 : translaty (0); 변형 : 변환 (0);) .cd-user-modal-container (위치 : 상대; 90 %; 최대 - WI. DTH : 600px; 배경 : #fff; 마진 : 3em 자동 4em; 커서 : 자동; 경계 반경 : 0.25em; -webkit-transform : translatey (-30px); -moz-transform : translatey (-30px); -ms-transform : translatey (-30px); -o-transform : translatey (-30px); 변환 : translatey (-30px); -webkit-transition-property : -webkit-transform; -moz-transition-property : -moz-transform; 전환 - 속성 : 변형; -webkit-transition-duration : 0.3s; -moz-transition-duration : 0.3s; 전환 기간 : 0.3 초; ) .cd- 사용자 모달 - 컨테이너 .cd- 스위처 : 이후 (콘텐츠 : "; 디스플레이 : 표; 클리어 : 둘 다) .CD - 사용자 모달 - 컨테이너 .CD 스위처 Li (폭 : 50 %; 플로트 : 왼쪽; 텍스트 - 정렬 : 센터;) .cd - 사용자 - 모달 컨테이너 .cd 스위처 Li : 첫 번째 자식 A (경계 반경 : .25em 0 0 0;) .cd-user-modal-container .cd -switcher LI : Last-Child A (Border Radious : 0.25em 0 0.25em 0.) .cd - 사용자 모달 포함 : CD 스위처 A (디스플레이 : 블록; 폭 : 100 %, 높이 : 50px, 선 - 높이 : 50px; 배경 : # D2D8D8; 색상 : # 809191;) .CD - 사용자 모달 - 컨테이너 .CD 스위처 A. 선택 (배경 : #fff; 색상 : # 505260; 색상 : # 505260;) @media only 화면과 (최소 폭 : 600px) (.cd- 사용자 모달 - 컨테이너 (마진 : 4em 자동;) .CD - 사용자 - 모달 - 컨테이너 .CD 스위처 A (높이 : 70px, 선 - 높이 : 70px;) .CD 형식 (패딩 : 1 ...에 4em; ) .cd 형식 .Fieldset (위치 : 상대, 여백 : 1.4em 0;) .CD 형식 .Fieldset : First-Child (마진 - top : 0;) .cd 형식. 필드 세트 : 마지막 - 아이 (마진 - 하단 : 0;) .CD 형태 라벨 (글꼴 크기 : 14px, 글꼴 크기 : 0.875REM;) .CD 형식 Label.Image- 교체 ( / * 아이콘으로 텍스트 바꾸기 * / 디스플레이 : 인라인 블록; 위치 : 절대; 왼쪽 : 15px; 상단 : 50 %; 하단 : 자동; -webkit-transform : translatey (-50 %); -moz-transform : 번역 (-50 %); -ms-transform : translatey (-50 %); -o- 변환 : 번역 (-50 %); 변환 : 번역 (-50 %); 높이 : 20px; 너비 : 20px; 과다.: 숨겨진.; 텍스트 - 들여 쓰기: 100% ; 화이트 공간.: 이제도; 색깔: 투명한; 텍스트 - 그림자.: 아무 것도 없음; 배경 - 반복.: 반복하지 않습니다.; 배경 위치: 50% 0 ; } / * 아이콘 입력 필드 * / .CD 형식 상표 .cd-username. { 배경 이미지.: uRL("../img/cd-icon-unername.svg") ; } .CD 형식 상표 .CD- 이메일 { 배경 이미지.: uRL("../img/cd-icon-email.svg") ; } .CD 형식 상표 .CD - 암호. { 배경 이미지.: uRL("../img/cd-icon-password.svg") ; } .CD 형식 입력 { 여유.: 0 ; : 0 ; 국경 반경.: 0.25em.; } .CD 형식 입력 .전체 넓이 { 폭.: 100% ; } .CD 형식 입력 . 하스 패딩 { : 12px. 20px. 12px. 50px; } .CD 형식 입력 . 하스 테두리. { 경계.: 1px. 고체 # D2D8D8.; - 웨이브 키트 - 외관 : 아무 것도 없음; - 모스 모양 : 아무 것도 없음; -ms-Orations. : 아무 것도 없음; - 외관 : 아무 것도 없음; 외관 : 아무 것도 없음; } .CD 형식 입력 . 하스 테두리.: 초점. { 국경 색깔: #343642 ; 상자 - 그림자: 0 0 5px. rgba.(52 , 54 , 66 , 0.1 ) ; 개요: 아무 것도 없음; } .CD 형식 입력 .has-error. { 경계.: 1px. 고체 # d76666.; } .CD 형식 입력 [ 유형 = 암호. ] { / * 숨기기 버튼을위한 공간 * / 패딩 - 오른쪽: 65px.; } .CD 형식 입력 [ 유형 = 제출 ] { : 16px. 0 ; 커서.: 바늘.; 배경.: # 2F889A.; 색깔: #fff.; 폰트 무게: 굵게.; 경계.: 아무 것도 없음; - 웨이브 키트 - 외관 : 아무 것도 없음; - 모스 모양 : 아무 것도 없음; -ms-Orations. : 아무 것도 없음; - 외관 : 아무 것도 없음; 외관 : 아무 것도 없음; } .건들지 말것 .CD 형식 입력 [ 유형 = 제출 ] : 호버, .건들지 말것 .CD 형식 입력 [ 유형 = 제출 ] : 초점. { 배경.: # 3599ae.; 개요: 아무 것도 없음; } .CD 형식 .hide-password. { 디스플레이: 인라인 블록; 위치: 순수한.; 권리: 0 ; 상단.: 0 ; : 6px. 15px.; 테두리가 남았습니다.: 1px. 고체 # D2D8D8.; 상단.: 50% ; 바닥: 자동.; -webkit-transform. : 번역 (-50% ) ; -moz-transform. : 번역 (-50% ) ; -ms-transform. : 번역 (-50% ) ; -o-transform. : 번역 (-50% ) ; 변환: 번역 (-50% ) ; 글꼴 크기: 14px.; 글꼴 크기: 0.875rem.; 색깔: #343642 ; } .CD 형식 .cd- 오류 메시지 { 디스플레이: 인라인 블록; 위치: 순수한.; 왼쪽.: -5px.; 바닥: -35px.; 배경.: rgba.(215 , 102 , 102 , 0.9 ) ; : .8em.; z-index.: 2 ; 색깔: #fff.; 글꼴 크기: 13px.; 글꼴 크기: 0.8125rem.; 국경 반경.: 0.25em.; / * 클릭을 방지하고 * / 포인터 - 이벤트.: 아무 것도 없음; 시계.: 숨겨진.; 불투명: 0 ; -webkit-transition. : 불투명 0.2s. 0 , 시계. 0 0.2s.; -moz-transition. : 불투명 0.2s. 0 , 시계. 0 0.2s.; 전이.: 불투명 0.2s. 0 , 시계. 0 0.2s.; } .CD 형식 .cd- 오류 메시지:: { / * 코너 오류 메시지 * / 함유량: "" ; 위치: 순수한.; 왼쪽.: 22px.; 바닥: 100% ; 신장: 0 ; 폭.: 0 ; 테두리가 남았습니다.: 8px. 고체 투명한; 국경 오른쪽: 8px. 고체 투명한; 테두리 바닥.: 8px. 고체 rgba.(215 , 102 , 102 , 0.9 ) ; } .CD 형식 .cd- 오류 메시지.IS 가시적입니다. { 불투명: 1 ; 시계.: 명백한; -webkit-transition. : 불투명 0.2s. 0 , 시계. 0 0 ; -moz-transition. : 불투명 0.2s. 0 , 시계. 0 0 ; 전이.: 불투명 0.2s. 0 , 시계. 0 0 ; } @미디어 단지 화면과. (최소 너비: 600px.) { .CD 형식 { : 2em.; } .CD 형식 필드 세트. { 여유.: 2em. 0 ; } .CD 형식 필드 세트.: 첫 번째 아이. { 마진 꼭대기.: 0 ; } .CD 형식 필드 세트.: 막내. { 마진 - 바닥: 0 ; } .CD 형식 입력 . 하스 패딩 { : 16px. 20px. 16px. 50px; } .CD 형식 입력 [ 유형 = 제출 ] { : 16px. 0 ; } } .CD 형식 메시지 { : 1.4em. 1.4em. 0 ; 글꼴 크기: 14px.; 글꼴 크기: 0.875rem.; 선 - 높이: 1.4 ; 텍스트 정렬.: 센터; } @미디어 단지 화면과. (최소 너비: 600px.) { .CD 형식 메시지 { : 2em. 2em. 0 ; } } .CD 형식 - 바닥 메시지 { 위치: 순수한.; 폭.: 100% ; 왼쪽.: 0 ; 바닥: -30px.; 텍스트 정렬.: 센터; 글꼴 크기: 14px.; 글꼴 크기: 0.875rem.; } .CD 형식 - 바닥 메시지 ㅏ. { 색깔: #fff.; 텍스트 장식.: 밑줄; } .CD - 닫기 - 양식 { / * 오른쪽 상단의 스타일 X 버튼 * / 디스플레이: 블록; 위치: 순수한.; 폭.: 40px.; 신장: 40px.; 권리: 0 ; 상단.: -40px.; 배경.: uRL("../img/cd-con-close.svg") 반복하지 않습니다. 센터 센터; 텍스트 - 들여 쓰기: 100% ; 화이트 공간.: 이제도; 과다.: 숨겨진.; } @미디어 단지 화면과. (최소 너비: 1170px.) { .CD - 닫기 - 양식 { 디스플레이: 아무 것도 없음; } } # cd-login, # cd-signup., # cd-reset-password { 디스플레이: 아무 것도 없음; } # cd-login.IS 선택., # cd-signup..IS 선택., # cd-reset-password.IS 선택. { 디스플레이: 블록; }

CD-user-modal (위치 : 고정; 상단 : 0; 왼쪽 : 0; 너비 : 100 %; 높이 : 100 %; 배경 : RGBA (52, 54, 66, 0.9); Z- 색인 : 3; Overflow-Y : 자동; 커서 : 포인터; 가시성 : 숨김; 불투명도 : 불투명도 0.3s 0, 가시성 0 0.3s; -moz-transition : 불투명도 0.3s 0, 가시성 0 0.3s; 전환 : 불투명도 0.3s 0, 가시성 0 0.3s;) .cd- 사용자 - modal.is-Visible (가시성 : 가시적 인; 불투명도 : 1 --webkit-transition : 불투명도 0.3s 0, 가시성 0 0; -moz-transition : 불투명 0.3s 0) , 가시성 0 0; 전환 : 불투명도 0.3s 0, 가시성 0 0;) .CD - 사용자 - modal.is 가시 .CD - 사용자 모달 - 컨테이너 (-webkit-transform : translatey (0); -moz-transform : translatey (0); -ms-transform : translatey (0); -O- 변환 : translatatey (0); 변형 : 변환 (0);) .cd-user-modal-container (위치 : 상대; 너비 : 90 %; 최대 너비 : 600px; 배경 : #fff; 마진 : 3em 자동 4em; 커서 : 자동; 테두리 반경 : 0.25em; --webkit-transform : translatey (-30px); -moz-transform : 번역 (-30px); -ms-transform : translatey (-30px); -o-transform : translatey (-30px); 변환 : translatey (-30px); -webkit-transition-property : -webkit-transform; -moz-transition-property : -moz-transform; 전환 - 속성 : 변형; -webkit-transition-duration : 0.3s; -moz-transition-duration : 0.3s; 전환 기간 : 0.3 초; ) .cd- 사용자 모달 - 컨테이너 .cd- 스위처 : 이후 (콘텐츠 : "; 디스플레이 : 표; 클리어 : 둘 다) .CD - 사용자 모달 - 컨테이너 .CD 스위처 Li (폭 : 50 %; 플로트 : 왼쪽; 텍스트 - 정렬 : 센터;) .cd - 사용자 - 모달 컨테이너 .cd 스위처 Li : 첫 번째 자식 A (경계 반경 : .25em 0 0 0;) .cd-user-modal-container .cd -switcher LI : Last-Child A (Border Radious : 0.25em 0 0.25em 0.) .cd - 사용자 모달 포함 : CD 스위처 A (디스플레이 : 블록; 폭 : 100 %, 높이 : 50px, 선 - 높이 : 50px; 배경 : # D2D8D8; 색상 : # 809191;) .CD - 사용자 모달 - 컨테이너 .CD 스위처 A. 선택 (배경 : #fff; 색상 : # 505260; 색상 : # 505260;) @media only 화면과 (최소 폭 : 600px) (.CD-USER-modal-container (마진 : 4em 자동;) .CD - 사용자 모달 - 컨테이너 .CD 스위처 A (높이 : 70px; 선 - 높이 : 70px;)) .CD 형식 (패딩 : 1.4 em;) .cd 형식. 필드 세트 (위치 : 상대, 여백 : 1.4em 0;) .cd 형식 .Fieldset : First-Child (마진 - top : 0;) .cd 형식. 필드 세트 : 마지막 - 마진 하단 : 0;) .CD 형태 라벨 (Font-Siz E : 14px; 글꼴 크기 : 0.875REM; ) .cd 형식 Label.Image- 교체 (/ * 아이콘 * / 디스플레이 : 인라인 블록으로 텍스트를 교체하십시오 : 위치 : 절대, 왼쪽 : 15px; 상단 : 50 %; 맨) : 자동; --webkit-transform : translatey ( - 50 %); -moz-transform : translatey (-50 %); -ms-transform : 번역 (-50 %); -o-transform : 번역 (-50 %); 변환 : 번역 (-50 %); 높이 : 20px; 너비 : 20px; 숨겨진; 텍스트 들여 쓰기 : 100 %; 화이트 - 공간 : 이제는 색상 : 투명; 텍스트 - 그림자 : 없음; 배경 - 반복 : 없음 - 배경 위치 : 50 % 0 ;) / * 아이콘 입력 필드 * / .cd 형식 Label.cd-username (배경 - 이미지 : URL ( " ./img/cd-icon-sername.svg ");) .cd 형식 label.cd- 전자 메일 (배경 - 이미지 : URL (".. / img / cd-icon-exam.svg ") .cd -form label.cd-password (background-image : URL ( "img / cd-icon-password.svg");) .cd 형식 입력 (여백 : 0, 패딩 : 0, 국경 반경 : 0.25 em ;) .cd 형식의 input.ful-width (너비 : 100 %;) .CD 형태 입력. 하스 패딩 (패딩 : 12px 20px 12px 50px;) .cd 형식의 Input.has-border (국경 : 1px 단단한 # d2d8d8; -webkit-appeancent : 없음; -moz-appeanance : 없음; -ms-aspress : 없음; -o-appectance : 없음; 모양 : 없음;) .cd 형식 입력 .CD 형식. 색상 : # 343642; 상자 - 그림자 : 0 5px RGBA (52, 54, 66, 0.1); 개요 : 없음;) .cd 형식 입력. 다스 오류 (테두리 : 1px 솔리드 # D7666666666666666 호) .CD 양식 입력 ( / * 숨기기를위한 공간 * / 패딩 - 오른쪽 : 65px;) .cd 형식 입력 (패딩 : 16px 0; 커서 : 포인터, 배경 : # 2F889A, 색상 : #FFF, 글꼴 : 무게 : 없음 : WebKit-Appearance : 없음; - 모드 - 외관 : 없음; -ms-Inctions : 없음; -o- 외관 : 없음; 외관 : 없음; ) .NO 터치 .cd 형식 입력 : hover, .no touch .cd 형식 입력 : 초점 (배경 : # 3599ae, 개요 : 없음;) .cd 형식의 .hide 암호 (디스플레이 : 인라인 블록) 위치 : 절대; 오른쪽 : 0; top : 0; 패딩 : 6px 15px; 국경 왼쪽 : 1px 솔리드 # D2D8D8; 상단 : 50 %; 하단 : 자동; -webkit-transform : translatey (-50 %); -moz- 변환 : translatey (-50 %); -ms- 변환 : 번역 (-50 %); -o-transform : translatey (-50 %); 변형 : 번역 (-50 %); 글꼴 크기 : 14px; 글꼴 - 크기 : 0.875REM; 색상 : # 343642;) .cd 형식 .cd - 오류 메시지 : 절대; 왼쪽 : -5px; 아래쪽 : -35px; 배경 : RGBA (215, 102, 102, 0.9); 패딩 :. 8em; z-index : 2; 색상 : #fff; 글꼴 크기 : 13px; 글꼴 크기 : 0.8125REM; 국경 반경 : 0.25em; / * Clics 및 Touch 방지 * / 포인터 - 숨김 : 없음; 가시성 : 숨김 불투명도 : 0; -webkit-transition : 불투명도 0.2s 0, 가시성 0 0.2s; -moz-transition : 불투명도 0.2s 0, 가시성 0 0.2s; 전환 : 불투명도 0.2s 0, Visi. 비성 0.2s; ) .cd- 형식 .cd- 오류 메시지 :: 이후 (/ * 코너 오류 메시지 * / 내용 : "위치 : 절대; 왼쪽 : 22px; 하단 : 100 %, 높이 : 0; 폭 : 0; 국경 : 0; 왼쪽 : 8px 고체 투명; 국경 - 오른쪽 : 8px 고체 투명; 국경 - 바닥 : 8px 고체 RGBA (215, 102, 102, 0.9);) .cd 형식 .cd-error-message.is-Visible (불투명도 : 1 ; 가시성 : 가시적 인; --webkit-transition : 불투명도 0.2s 0, 가시성 0 0; -moz-transition : 불투명도 0. 2S 0, 가시성 0 0; 전환 : 불투명도 0.2s 0, 가시성 0 0; ) @Media 만 화면과 (min-width : 600px) (.cd- 양식 (패딩 : 2em;) .cd 형식. 필드 세트 (여백 : 2em 0;) .CD 형식. 필드 세트 : 첫 번째 자식 (마진 - 맨 위로 : 0;) .CD 형식. 필드 세트 : 마지막 어린이 (마진 - 하단 : 0;) .CD 형식 입력. 헤스 패딩 (패딩 : 16px 20px 16px 50px;) .cd 형식 입력 (패딩 : 16px 0;)) .CD 형식 - 메시지 (패딩 : 1.4em 1.4em 0; 글꼴 크기 : 14px, 글꼴 크기 : 0.875REM; 라인 높이 : 1.4; 텍스트 - 정렬 : 센터;) @Media 만 화면과 (min-width : 600px) (.cd 형식 - 메시지 : 2em 2em 0;) .cd- 형식 - 하단 - 메시지 (위치 : 절대; 폭 : 폭 : 100 %, 왼쪽 : 0; 하단 : -30px, 텍스트 - 정렬 : 센터; 글꼴 크기 : 14px; 글꼴 크기 : 0.875REM;) .CD 형식 - 하단 메시지 A (색상 : #FFF, 텍스트 장식 : 밑줄;) .CD - 닫기 양식 (/ / / 오른쪽 상단의 스타일 x 버튼 * / 디스플레이 : 블록; 위치 : 절대; 너비 : 40px; 높이 : 40px; 오른쪽 : 0; 상단 : -40px; 배경 : URL ( ".. / img / cd-icon- close.svg ") - 반복 센터 센터, 텍스트 - 들여 쓰기 : 100 %; 화이트 공간 : NowRap; 오버플로 : 숨김; ) @Media only 화면 및 (최소 폭 : 1170px) (.cd-close form (디스플레이 : 없음;)) # cd-login, # cd-signup, # cd-reset-password (디스플레이 : 없음) cd- login.is-selected, # cd-signup.is-selected, # cd-reset-password.is- 선택 (디스플레이 : 블록;)

외관의 전환 효과에서 닫을 때 모달 창의 원활한 실종을 달성하기 위해 지연이 추가되었습니다.

노트:. 모든 입력 필드의 글꼴 크기는 기본적으로 16px로 설정됩니다. 이렇게하면 모바일 장치에서 볼 때 발생하는 자동 스케일링이 방지됩니다.

저자의 Plugin의 Bourgeois 버전이 있습니다. 거기에서 원본을 다운로드 할 수 있습니다.
러시아어 버전은 내 yandex.disc에서 픽업 할 수 있습니다. 필요한 모든 파일은 그 이전에 하나의 아카이브에서 조심스럽게 포장되어 있으며,이 멋진 jQuery 플러그인의 살아있는 예를 잊지 마십시오.

모든 존경심, 앤드류

이 기사에서는 배울 것입니다 등록 및 권한 부여 양식을 만드는 방법HTML, JavaScript, PHP 및 MySQL을 사용합니다. 이러한 형태는 유형에 관계없이 각 사이트에서 거의 사용됩니다. 그들은 또한 포럼 및 온라인 상점 및 소셜 네트워크 (예 : Facebook, Twiter, Odnoklassniki)와 다른 많은 유형의 사이트를 위해 만들어집니다.

로컬 컴퓨터에 사이트가있는 경우 이미 가지고 있기를 바랍니다. 그것 없이는 아무 것도 작동하지 않습니다.

데이터베이스에서 테이블 작성

사용자 등록을 구현하기 위해서는 먼저 데이터베이스가 필요합니다. 당신이 이미 가지고 있다면, 멋진, 그렇지 않으면 그것을 만들어야합니다. 이 기사에서는 어떻게해야하는지 자세히 설명합니다.

따라서 데이터베이스 (축약 된 데이터베이스)가 있습니다. 이제 테이블을 만들어야합니다. 사용자. 우리는 등록 된 사용자를 추가 할 것입니다.

데이터베이스에서 테이블을 만드는 방법은 또한 기사에서 설명했습니다. 테이블을 만들기 전에 우리는 필요한 필드를 결정해야합니다. 이 필드는 등록 양식의 필드에 해당합니다.

그래서 그들은 생각이 들었고, 어떤 분야가 우리의 형식이되고 테이블을 만드는 일을 제시했습니다. 사용자. 그런 분야와 함께 :

  • 신분증 - 식별자. 들 신분증 데이터베이스에서 각 테이블을 가져야합니다.
  • 이름. - 이름을 저장하려면.
  • last_name. - 성을 저장합니다.
  • 이메일 - 우편 주소를 저장합니다. 전자 메일 우리는 로그인으로 사용 하므로이 필드는 고유해야합니다. 즉, 고유 한 색인을 가져야합니다.
  • email_status. - 지침 필드는 메일로 확인됩니다. 메일이 확인되면 값은 1이며, 그렇지 않으면 값은 0입니다. 기본적 으로이 필드에는 값이 0이됩니다.
  • 암호. - 암호를 저장하십시오.

"varchar"유형의 모든 필드는 기본 null이어야합니다.


등록 양식을 다른 분야에 원하면 여기에 추가 할 수도 있습니다.

모든, 우리의 테이블 사용자. 준비된. 다음 단계로 가십시오.

데이터베이스 연결

데이터베이스를 만들었습니다. 이제는 연결해야합니다. PHP 확장 MySQLI를 사용하여 연결을 수행합니다.

우리 사이트의 폴더에서 이름이 지정된 파일을 만듭니다. dbconnect.php.그리고 우리는 다음 스크립트를 작성합니다.

데이터베이스에 연결 오류가 발생했습니다...에 오류 설명 : ".mysqli_connect_error ()"

"; exit ();) // $ mysqli-\u003e set_charset 연결 ("utf8 ")의 코딩을 설정합니다. // 편의를 위해 여기에 변수를 추가합니다. $ adder_site \u003d"http : //testsite.local ";?\u003e.

이 파일 dbconnect.php. 핸들러를 형성하기 위해 연결해야합니다.

변수에주의하십시오 $ address_site.여기에서는 내가 일할 테스트 사이트의 이름을 나타 냈습니다. 각각 귀하의 사이트의 이름을 지정하십시오.

사이트 구조

이제 우리 사이트의 HTML 구조로 알아낼 것입니다.

헤더와 사이트의 지하는 개별 파일에 제출됩니다. header.php.footer.php....에 우리는 모든 페이지에 연결할 것입니다. 즉, 메인 (파일) index.php.), 등록 형식의 페이지에서 (파일 form_register.php.)와 인증 형식의 페이지 (파일 form_auth.php.).

우리의 참고 문헌으로 차단하십시오 체크인권한 부여모든 페이지에 표시되도록 사이트의 머리글에 추가하십시오. 하나의 링크가 계속됩니다 등록 양식이있는 페이지 (파일 form_register.php.)와 다른 것과 함께 다른 하나는 권한 부여의 형태 (파일 form_auth.php.).

header.php 파일 내용 :

우리 웹 사이트의 이름

결과적으로 메인 페이지는 다음과 같습니다.


물론 사이트에서 완전히 다른 구조를 가질 수는 있지만 지금은 중요하지 않습니다. 주요한 것은 등록 및 권한 부여의 참조 (버튼)가있는 것입니다.

이제 등록의 형태로 돌아 가자. 이미 이해할 때, 그녀는 파일에 있습니다. form_register.php..

우리는 데이터베이스 (phpmyadmin)에 가서 테이블 구조를 엽니 다. 사용자. 그리고 우리는 우리가 필요로하는 분야를 봅니다. 따라서 이름과 성, 메일 주소 필드 (전자 메일) 및 암호 입력 필드를 입력 할 필드가 필요합니다. 보안상의 이유로 심지어 캡핑 필드를 추가하십시오.

서버에서 등록 양식을 처리 한 결과 사용자가 등록 할 수없는 다양한 오류가 발생할 수 있습니다. 따라서 사용자가 등록이 겪지 않는 이유를 이해하기 위해 이러한 오류에 대한 메시지를 표시해야합니다.

양식을 표시하기 전에 세션에서 오류 메시지를 출력하는 블록을 추가하십시오.

그리고 사용자가 이미 승인 된 경우 다른 순간이며 주소 표시 줄의 브라우저에 글을 쓸 수있어 등록 페이지에 직접 제공됩니다. address_sight / form_register.php.이 경우이 경우 등록 양식 대신에 이미 등록 된 헤드 라인을 가져올 것입니다.

일반적으로 파일 코드 form_register.php. 우리는 이렇게 얻었습니다 :

이미 등록 하셨어요

브라우저에서 등록 양식이있는 페이지는 다음과 같습니다.


통하다 필수 속성, 우리는 모든 필드를 채우기 위해 필드를 작성했습니다.

등록 코드 코드에주의하십시오 보안 문자가 파생되었습니다:


이미지의 SRC 속성 값은 파일의 경로를 표시했습니다. captcha.php.이 captcha를 생성합니다.

파일 코드를 살펴 보겠습니다 captcha.php.:

이 코드는 잘 댓글을 달았으므로 한 순간에만 거지 할 것입니다.

기능 내부 imagettftext ()글꼴에 대한 경로가 표시되었습니다 vertana.ttf....에 따라서 올바른 작업 CAPCHA의 경우 폴더를 만들어야합니다. 글꼴.글꼴 파일을 넣어 라 vertana.ttf....에 인터넷에서 찾아서 인터넷에서 다운로드 하거나이 기사의 자료로 아카이브에서 가져올 수 있습니다.

HTML 구조로 우리가 끝나면, 이제는 계속할 시간입니다.

jQuery를 사용하여 유효성을 검증 할 수 있습니다

모든 양식은 클라이언트 측 (JavaScript, jQuery 사용) 및 서버 측에서 입력 된 데이터의 유효성을 확인해야합니다.

우리는 이메일 분야에 특별한주의를 기울여야합니다. 입력 된 우편 주소가 유효 한 것이 매우 중요합니다.

이 입력 필드의 경우, 유형 전자 메일 (type \u003d "이메일")을 설정합니다. 이는 잘못된 형식이 조금 조심 스럽습니다. 그러나 이것은 브라우저가 우리에게 제공하는 코드 관리자를 통해, 당신은 속성 값을 쉽게 변경할 수 있기 때문에 충분하지 않습니다. 유형 ...에서 이메일본문.그리고 모두, 우리의 수표가 유효하지 않습니다.


이 경우, 우리는 더 신뢰할 수있는 점검을해야합니다. 이렇게하려면 JavaScript jQuery 라이브러리를 사용하십시오.

jQuery 라이브러리를 파일에 연결하려면 header.php.태그 사이 닫는 태그 앞에서 ,이 줄을 추가하십시오 :

이 줄이 직후에 전자 메일 유효성 검사 코드를 추가하십시오. 여기에서 입력 한 암호의 길이를 확인하기위한 코드를 추가합니다. 그 길이는 6 자 이상이어야합니다.

이 스크립트를 사용하여 입력 된 우편 주소가 유효성을 검사합니다. 사용자가 잘못된 이메일을 입력 한 경우,이를 실수하고 Send Shape 버튼을 비활성화합니다. 모든 것이 좋으면 오류를 제거하고 보내기 단추를 활성화합니다.

그래서, 우리가 끝낸 고객 부분에 대한 모양 체크가 있습니다. 이제 몇 가지 수표를 만들고 데이터베이스에 데이터를 추가 할 수있는 서버로 보낼 수 있습니다.

사용자 등록

우리가 파일 처리를 위해 보내는 양식 register.php., 포스트 방법을 통해. 이 핸들러 파일의 이름은 속성 값으로 표시됩니다. 동작....에 Send 메서드가 속성 값으로 표시됩니다. 방법..

이 파일을 엽니 다 register.php. 그리고 우리가해야 할 첫 번째 일은 세션을 시작하고 이전에 생성 된 파일을 연결하는 기능을 작성하는 것입니다. dbconnect.php. (이 파일에서 데이터베이스에 연결되어 있습니다). 또한 즉시 세포를 선언합니다 error_messages.success_messages. 글로벌 세션 배열에서. 에 error_messages. 양식 처리 중에 발생하는 모든 오류 메시지를 기록 할 것입니다. succes_messages.우리는 즐거운 메시지를 쓸 것입니다.

계속하기 전에, 우리는 수표해야합니다 전혀 형태가 있었습니까?...에 공격자는 속성 값을 볼 수 있습니다 동작. 양식 에서이 양식 처리에 어떤 파일을 처리하는지 알아보십시오. 그리고 그는이 파일로 직접 이동하고 브라우저의 주소 표시 줄에서 다이얼링하는 것에 대한 생각을 염두에두고 있습니다. http : ///ares_site/register.php.

따라서 글로벌 배열 게시물의 셀의 존재 여부를 확인 해야하는 이름은 "레지스터"버튼의 이름에 해당하는 이름입니다. 그래서 우리는 "등록"버튼이 누르거나 그렇지 않은지 확인합니다.

공격자 가이 파일로 직접 이동하려고하면 오류 메시지가 나타납니다. $ adder_site 변수가 사이트의 이름이 포함되어 있고 파일에 발표되었음을 상기시켜줍니다. dbconnect.php..

오류! 메인 페이지.

"); } ?>

세션의 CAPTCHA 값이 파일을 생성 할 때 추가되었습니다. captcha.php....에 파일 에서이 코드를 표시하려면 captcha.php.여기서 CAPTCHA의 값이 세션에 추가되는 경우 :

이제 수표 자체로 진행하십시오. 파일에서 register.php., IF 블록 내에서 "레지스터"버튼을 누르거나 주석이 표시되는지 여부를 확인합니다. " // (1) 다음 코드를위한 장소"우리는 쓴다:

// 결과 보안 문자 // 처음부터 틈을 자르고 $ captcha \u003d trim ($ _ 포스트 [ "CAPTCHA"])를 잘라냅니다. if (Isset ($ _ POST [ "CAPTCHA"]) &&! 비어있는 ($ CAPTCHA)) (// 세션에서 값과 값을 비교하십시오. ((((((($ _ 세션 [ "rand")! \u003d $ captcha ) && ($ _session [ "rand"]! \u003d "")) (// 핀이 올바르지 않은 경우, 우리는 사용자를 등록 페이지로 되돌립니다. 그가 소개 한 오류에 대한 메시지를 제공 할 것입니다. 잘못된 캡핑. $ error_message \u003d "

오류! 잘못된 캡핑을 입력했습니다

"// 우리는 세션에 오류 메시지를 저장합니다. $ _session ["error_messages "] \u003d $ ERROR_MESSAGE; // 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : " ". $ address_site"/ form_register.php "); // 종료 스크립트 ();) // (2) 코드의 다음 코드에 대한 장소) else (// captcha가 전송되지 않거나 비어있는 경우 출구 ( "

오류! 체크 코드, 즉 Cappitch 코드가 없습니다. 기본 페이지로 이동할 수 있습니다.

"); }

다음으로, 우리는 포스트 괴트로부터 얻은 데이터를 처리해야합니다. 우선, 우리는 셀이 셀이 있는지 여부, 즉 우리 양식의 입력 필드의 이름에 해당하는 이름이 있는지 여부를 확인해야합니다.

셀이 있으면 시작 부분에서 공백을이 셀의 줄 끝에서 자르고 그렇지 않으면 사용자가 다시 등록 양식 페이지로 되돌아갑니다.

그런 다음 공백을 절단 한 후 변수에 문자열을 추가하고이 변수를 비어 있지 않으면이 변수를 void로 점검하십시오. 그렇지 않으면 등록 양식이있는 페이지로 사용자를 다시 리디렉션합니다.

이 코드는 지정된 위치에 삽입 " // (2) 다음 코드를위한 장소".

/ * 글로벌 배열 $ _post가 양식에서 보낸 데이터가 존재하고 전송 된 데이터를 정상 변수로 결론 지어지는지 확인합니다. * / if (ISSET ($ _ POST [first_name "])) (/// $ first_name string \u003d trim ($ _ post [first_name "])의 끝에서 void if_name (empty (empty_name)) (// 보안을 위해 // 특수 문자를 변형)으로 변수를 확인합니다. HTML Entity $ first_name \u003d htmlspecialchars ($ first_name, ent_quotes);) else (// 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

이름을 지정하십시오

이름을 딴 필드

"// 등록 페이지 헤더 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"/ form_register.php "); // 종료 스크립트 ()를 시작합니다. ) (isset ($ _ post [last_name "]) (// 처음부터 공백을 자르고 $ last_name \u003d trim ($ _ post ["upt_name "]); if (! $ last_name)) (// 보안을 위해 $ last_name \u003d htmlSpecialChars ($ last_name, ent_quotes)의 HTML 에센스의 특수 문자를 변환합니다. else (// 우리는 세션에 오류 메시지를 저장합니다. $ _sessages " ]. \u003d "

마지막 이름을 지정하십시오

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"// form_register.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

성의 누락 된 필드

"// 등록 페이지 헤더 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"/ form_register.php "); // 종료 스크립트 ()를 시작합니다. ) ($ _ 게시물 [이메일 "]) (// 처음부터 $ Email \u003d TRIM ($ _ 게시물 ["이메일 "]의 끝에서 공백을 자른 경우; if (! $ 이메일)) ($ Email \u003d HTMLSPECialChars ($ Email, ENT_QUOTES); // (3) 코드의 위치는 우편 주소의 형식과 그 독창성의 형식을 확인합니다.) else (// 세션에 오류 메시지를 저장합니다). . $ _session [ "error_messages"]. \u003d "

이메일을 지정하십시오

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"// form_register.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

"// 등록 페이지 헤더 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"/ form_register.php "); // 종료 스크립트 ()를 시작합니다. ) if (ISSET_POST [ "암호"])) (// 처음부터 공백을 자르고 $ password \u003d trim ($ _ 게시물 [암호 "]); if (! $ password) ($ password \u003d htmlScelChars ($ password, ent_quotes); // paparol $ password \u003d md5 ($ password. "top_secret");) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _Session [ "error_messages"]. \u003d "

암호를 지정하십시오

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"// form_register.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

"// 헤더 등록 페이지로 사용자를 반환합니다 (영구적으로 이동"); 헤더 ( "위치 :". $ adderne_site "/ form_register.php"); // 종료 스크립트 ()를 시작합니다. ) // (4) 데이터베이스에 사용자 추가 코드에 대한 장소

특별한 중요성에는 필드가 있습니다 이메일...에 받은 우편 주소의 형식과 데이터베이스에서 고유성의 형식을 확인해야합니다. 즉, 더 이상 동일한 이메일 주소가있는 사용자가 없습니다.

지정된 장소에서 " // (3) 코드 위치가 우편 주소와 독창적 인 형식을 확인할 수 있습니다."다음 코드를 추가하십시오.

// 정규 표현식 $ reg_email \u003d "/ ^ ** @ (+ (+) + + / i"를 사용하여 수신 된 우편 주소의 형식을 확인하십시오. // 수신 된 우편 주소의 형식이 (!! preg_match ($ REG_EMAIL, $ 이메일)) (// 세션에 오류 메시지를 저장합니다. $ _SESSION [ "error_messages"]. \u003d ...에 "

무급 이메일을 입력했습니다

"// 헤더 등록 페이지로 사용자를 반환합니다 (영구적으로 이동"); 헤더 ( "위치 :". $ adderne_site "/ form_register.php"); // 종료 스크립트 ()를 시작합니다. ) // 데이터베이스에 이미 해당 주소가 있는지 확인하십시오. $ result_query \u003d $ mysqli-\u003e query (```select` Email````` ""$ 이메일 "" "" "에서"`select` Email` ""); / / 수신 된 행 수가 정확히 일치하는 경우 ($ RETERAL_QUERY-\u003e NUM_ROWS \u003d\u003d 1) (// 결과가 false와 같지 않으면, (($ 행 \u003d $ REQUARS_QUERY-\u003e FETCH_ASSOC ())! \u003d false) (// 세션에 오류 메시지를 저장합니다. $ _SESSION [ "error_messages"]. \u003d "

이러한 게시물 주소가있는 사용자는 이미 등록되어 있습니다.

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site");) else (// 우리는 오류를 저장합니다. 메시지. $ _session [ "error_messages"]. \u003d "

데이터베이스 요청의 오류가 발생합니다

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ adderne_site"/ * 샘플링 * / $ result_query -\u003e close (); // exit script ();) / * 샘플 * / $ result_query-\u003e close () 닫기;

따라서 우리는 모든 수표로 끝납니다. 데이터베이스에 사용자를 추가 할 시간입니다. 지정된 장소에서 " // (4) 데이터베이스에 사용자 추가 코드에 대한 장소"다음 코드를 추가하십시오.

// 데이터베이스에 사용자를 추가하기위한 요청 $ REQUARS_QUERY_INSERT \u003d $ MYSQLI-\u003e 쿼리 ( "ins INSERT"(first_name, last_name, 이메일, 암호) 값 ( ". $ first_name" "," " last_name. "", ""$ 이메일 "", "". $ password. "") "); if (! $ result_query_insert) (// 세션에 오류 메시지를 저장하십시오. $ _session [ "error_messages"]. \u003d "

데이터베이스에 사용자 추가를위한 오류 요청

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"// form_register.php "); // 종료 스크립트 ()를 시작합니다. ) else ($ _session [ "success_messages"] \u003d "

등록이 성공적으로 완료되었습니다 !!!
이제 로그인 및 암호를 사용하여 로그인 할 수 있습니다.

"// 헤더 인증 페이지 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 보냅니다 ("위치 : ". $ address_site"/ form_auth.php ");) / * 요청 완료 * / $ result_query_insert-\u003e close (); // 데이터베이스에 대한 연결을 닫습니다 $ mysqli-\u003e close ();

요청에 오류가 발생하여 데이터베이스에 사용자를 추가하는 경우 세션 에이 오류에 대한 메시지를 추가하고 사용자를 등록 페이지로 반환합니다.

그렇지 않으면 모든 것이 잘되면 세션에서 우리는 메시지를 추가하지만 이미 더 즐겁습니다. 즉, 등록이 성공적으로 전달되었음을 사용자에게 말합니다. 승인의 형태로 이미 페이지로 리디렉션하십시오.

우편 주소의 형식을 확인하고 암호 길이의 형식을 확인하는 스크립트가 파일에 있습니다. header.php.이렇게하면이 양식의 필드에서 작용합니다.

시작 세션도 파일에서 발생합니다 header.php.그래서 파일에서 form_auth.php. 실수를 얻기 때문에 세션을 실행할 필요가 없습니다.


내가 말했듯이, 우편 주소의 형식과 암호 길이의 형식을 확인하기위한 스크립트도 작동합니다. 따라서 사용자가 잘못된 메일 링 주소 또는 짧은 암호로 들어가면 즉시 오류 메시지가 나타납니다. 및 버튼 안으로 그것은 활성화되지 않습니다.

오류 버튼을 제거한 후 안으로 그것은 활성화되고 사용자는 처리 될 서버로 양식을 보낼 수 있습니다.

사용자 권한 부여

속성의 값으로 동작. 권한 부여 양식이 지정된 파일입니다 auth.php.즉,이 파일에서 양식이 처리됩니다.

그래서 파일을 엽니 다 auth.php. 권한 부여 양식을 처리하기위한 코드를 작성하십시오. 첫 번째 작업은 세션을 실행하고 파일을 연결하는 것입니다. dbconnect.php. 데이터베이스에 연결합니다.

// 폼 처리 중에 발생할 수있는 오류를 추가 할 셀을 선언합니다. $ _session [ "error_messages"] \u003d ""; // 성공적인 메시지를 추가 할 셀을 선언합니다 $ _session [ "success_messages"] \u003d "";

/ * 양식이 전송되었는지 여부를 확인합니다. 즉, 버튼을 눌러 입력합니다. 그렇지 않은 경우 더 이상 이동하면이 페이지에 오류에 대한 메시지를 인도합니다. * / IF ($ _ POST [BTN_SUBMIT_AUTH]) &&! 비어있는 ($ _ 게시물 [btn_submit_auth "])) (// (1) 다음 코드의 다음 코드에 대한 장소) else (exit)

오류! 이 페이지를 직접 방문하므로 처리를위한 데이터가 없습니다. 기본 페이지로 이동할 수 있습니다.

"); }

// 수신 된 CAPTCHA를 확인하십시오 (ISSET ($ _ POST [ "CAPTCHA"])) (// 처음부터 공백을 잘라 $ CAPTCHA \u003d TRIM 문자열 끝에서 "POST [CAPTCHA"]) ; if (! empty ($ cepccha)) (// 세션에서 값과 값을 비교하십시오. (($ _ 세션 [ "rand"]! \u003d $ captcha) && ($ _session [ "rand"]! \u003d "" ") (// captcha가 true가 아니면 사용자를 인증 페이지로 되돌리고 잘못된 캡핑을 도입 한 오류에 대한 메시지를 줄 것입니다. $ error_message \u003d"

오류! 잘못된 캡핑을 입력했습니다

"// 우리는 세션에 오류 메시지를 저장합니다. $ _session ["error_messages "] \u003d $ error_message; // 헤더 권한 부여 페이지 ("http / 1.1 301 영구적으로 이동 "); 헤더 ("위치 : " ". $ address_site"/ form_auth.php "); // 종료 스크립트 (););)) else ($ error_message \u003d"

오류! 캡핑 필드는 비어 있지 않아야합니다.

"// 우리는 세션에 오류 메시지를 저장합니다. $ _session ["error_messages "] \u003d $ error_message; // 헤더 권한 부여 페이지 ("http / 1.1 301 영구적으로 이동 "); 헤더 ("위치 : " ". $ address_site"/ form_auth.php "); // 종료 스크립트 (););) // (2) 우편 주소 처리를위한 장소 // (3) 암호 처리 공간 // (4) 컴파일 할 위치 데이터베이스에 요청) else (// captcha가 종료되도록 전송되지 않으면

오류! 확인 코드, 즉 CAPPICH 코드가 없습니다. 기본 페이지로 이동할 수 있습니다.

"); }

사용자가 인증 코드를 올바르게 입력 한 경우 더 나아가는 경우, 그렇지 않으면 우리는 그것을 권한 부여 페이지로 되돌립니다.

게시물 주소 확인

// 처음부터 공백을 자르고 $ Email \u003d TRIM ($ _ 포스트 [ "이메일"]); if (isset_ post [ "이메일"]) ($ Email \u003d HTMLSpecialChars ($ Email \u003d HTMLSpecialChars); // 정규 표현식을 사용하여 수신 된 우체국의 형식을 확인하십시오. $ reg_email \u003d "/ ^ ** @ (+ (* +)).) ++ / i"; // 수신 된 우편 주소의 형식이 IF 정규 표현식 (! preg_match ($ reg_email, $ 이메일 )) (// 세션 오류 메시지에 저장됩니다. $ _session [ "error_messages"]. \u003d "

잘못된 이메일을 입력했습니다

"// 헤더 권한 부여 페이지 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

메일 주소 필드 (전자 메일)는 비어 있지 않아야합니다.

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 돌려줍니다. 헤더 ("위치 : ". $ address_site"// form_register.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

이메일을 입력하기위한 필드가 없습니다

"// 헤더 권한 부여 페이지 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. ) // (3) 암호 처리 공간

사용자가 잘못된 형식으로 메일 링 주소를 입력 한 경우 메일 주소 필드의 값이 비어 있으면 IT를 인증 페이지로 되돌립니다.

암호 확인

다음 처리 필드는 암호 필드입니다. 지정된 위치에서 " // (3) 암호 처리를위한 장소", 우리는 쓴다:

if (isset _ post [ "암호"])) (// 처음부터 공백을 자르고 $ password \u003d trim ($ _ 게시물 [ "암호"]); if (! 비어있는 ($ 암호) ($ password \u003d htmlspecialchars ($ password, ent_quotes); // password $ password \u003d md5 ($ password ");) else (// 세션에 오류 메시지를 저장합니다. $ _Session [" error_messages "]. \u003d"

암호를 지정하십시오

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. )) else (// 우리는 세션에 오류 메시지를 저장합니다. $ _session [ "error_messages"]. \u003d "

누락 된 암호 입력 필드

"// 헤더 등록 페이지 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. )

여기서 우리는 암호화 된 양식에있는 데이터베이스 암호에 있기 때문에 MD5 () 함수를 사용하여 수신 된 암호를 암호화합니다. 우리의 경우 암호화의 추가 비밀 단어 " top_secret."사용 된 경우 및 사용자를 등록 할 때야합니다.

이제 전자 메일 주소가 수신 된 우편 주소와 동일한 사용자 샘플에서 데이터베이스에 요청할 필요가 있고 암호가 수신 된 암호와 동일합니다.

// 사용자 샘플에서 데이터베이스로 요청합니다. $ result_query_select \u003d $ mysqli-\u003e query ( "* from verient \u003d". "$ 이메일" "및 password \u003d". $ password "" "")를 선택하십시오. if (! $ result_query_select) (// 우리는 오류 메시지를 세션에 저장합니다. $ _session [ "error_messages"]. \u003d "

데이터베이스에서 사용자 샘플에서 오류를 요청하십시오

"// 헤더 등록 페이지 ("HTTP / 1.1 301 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. ) else (// 데이터베이스에 그러한 데이터가있는 사용자가 없는지 확인한 다음 오류 메시지가 표시되지 않은 경우 ($ REQUARS_QUERY_SELECT-\u003e NUM_ROWS \u003d\u003d 1) (// 입력 한 데이터가 데이터베이스의 데이터와 일치하면 우리는 로그인 및 암호를 세션 배열에 저장합니다. $ _session [ "이메일"] \u003d $ 이메일; $ _session [ "passion"] \u003d $ password; // 헤더 홈 페이지 ( "http / 1.1 301)로 사용자를 돌려줍니다. 영구적으로 옮겼습니다. "); 헤더 ("위치 : ". $ address_site"/ index.php ");) else (// 세션에 오류 메시지를 저장합니다. $ _session ["error_messages "]. \u003d"

잘못된 사용자 이름 및 / 또는 암호가 잘못되었습니다

"// 헤더 권한 부여 페이지 ("HTTP / 1.1 301이 영구적으로 이동 ")로 사용자를 반환합니다. 헤더 ("위치 : ". $ address_site"/ form_auth.php "); // 종료 스크립트 ()를 시작합니다. )))

사이트를 종료하십시오.

그리고 우리가 깨닫는 마지막 일은입니다 사이트에서 절차를 종료하십시오...에 현재 헤더에서는 권한 부여 페이지와 등록 페이지에 대한 링크를 제공합니다.

사이트 캡 (파일 header.php.), 세션을 사용하여 사용자가 이미 승인되었는지 확인합니다. 그렇지 않은 경우 링크와 권한 부여 링크가 표시되며, 그렇지 않으면 (권한이 부여 된 경우) 등록 및 권한 부여 링크 대신 링크를 표시합니다. 산출.

파일에서 수정 된 코드 조각 header.php.:

체크인

산출

사이트에서 종료 링크를 클릭하면 파일에 빠지게됩니다. logout.php.여기서는 세션에서 우편 주소와 암호로 셀을 파괴하는 곳입니다. 그런 다음 링크를 누른 페이지로 사용자를 돌려줍니다. 산출.

파일 코드 logout.php :

그게 다야. 이제 어떻게 알고 있습니다 등록 및 권한 부여 양식을 구현하고 처리하십시오 귀하의 사이트의 사용자. 이러한 양식은 거의 각 사이트에서 발견되므로 각 프로그래머는 이들을 만드는 방법을 알아야합니다.

우리는 또한 클라이언트 측 (브라우저에서 JavaScript, jQuery) 및 서버 측을 사용하여 서버 측에서 입력 된 데이터를 확인하는 것도 배웠습니다. 우리는 또한 배웠습니다 사이트에서 종료 절차를 구현하십시오.

모든 스크립트는 검사 및 근로자입니다. 이 링크 에서이 작은 사이트의 파일로 아카이브를 다운로드 할 수 있습니다.

앞으로는 내가 묘사 할 기사를 쓸 것입니다. 또한 내가 설명 할 기사를 작성할 계획입니다 (페이지를 재부팅하지 않고). 따라서 새로운 기사의 출시를 알고 있으려면 내 사이트를 구독 할 수 있습니다.

질문이 있으시면 연락하십시오. 연락하십시오. 기사에서 오류가 있음을 알아 차리면, 그것에 대해 알려주십시오.

수업 계획 (5 부) :

  1. 권한 부여 양식을위한 HTML 구조를 만듭니다
  2. 얻은 데이터 처리
  3. 사이트의 헤더에서 사용자의 인사말을 알려줍니다.

기사가 마음에 들었습니까?

이 기사에서는 jQuery를 사용하여 단계별 등록을 고려할 것입니다.

귀하의 사이트의 등록이 몇 가지 필드를 작성하는 경우 한 페이지에 배치하는 것은별로 합리적이지 않습니다. 결국, 생물의 사용자는 매우 게으르고,이 모든 필드를 보는 것을 기입하고 싶지 않습니다.

다른 옵션은 몇 단계를 중단하는 것입니다. 이것은 사용자로부터 단계를 수행하기 시작하기 시작하기 시작하기 시작하기 시작하기 시작하기 때문에 사용자로부터 많은 긍정적 인 응답을 생성합니다.

또한 논리 블록에 연결하는 것도 논리적이기도합니다. - 연락처 정보, 주소, 개인 데이터 등에 연결됩니다.

단계별 등록의 경우, 우리는 전혀 여러 양식을 만들고 서버에 데이터를 별도로 전송하지 않습니다. 모든 것을 하나의 형식으로 두는 것이 훨씬 편리하지만 각 단계는 사용자에게 양식의 특정 부분 만 표시합니다. 이것은 우리의 모범의 논리입니다.

논리 측면에서 링크 만 볼 수 있음을 고려할 가치가 있습니다. "앞으로"/"다음 단계"그리고 마지막 단계에서 볼 수 없지만 볼 수 있습니다. "뒤""체크인".

예제 자체를 고려하십시오.

페이지

1 단계

로그인:

이메일:

암호:

2 단계.

이름:

성:

나이:

3 단계.

국가:

시티:

거리:

뒤로 다음 단계

본체 (여백 : 0;) / * 일반적인 스타일 종료 * / 형식 (폭 : 30 %; 여백 : 0 자동;) 양식 Div.step (디스플레이 : 없음;) 양식 div.step p.step (텍스트 - 정렬 : 센터 글꼴 크기 : 28px;) 양식 Div.Step P () 양식 Div.step P 입력 (float : 오른쪽;) 양식 입력 (디스플레이 : 없음;) A (색상 : # 006600, 텍스트 장식 : 없음) 양식 p.talign (텍스트 - 정렬 : 센터;)

이 스크립트는 JS / STAST_REGISTRATION.JS에 배치 된 단계를 전환 할 책임이 있으며 jQuery 라이브러리를 연결하는 것을 잊지 마십시오.

$ (document) .ready (함수 (// 다운로드 페이지 var 단계를 기다리고 var 단계 \u003d $ "양식"); // $ (단계)의 모든 단계를 찾습니다 .Show () / / 첫 번째 단계 VAR CURRENT_STEP \u003d 0; // 현재 단계 $ ( "a.next")를 설정하십시오. ( "다음 단계"링크 "다음 단계"링크에서 함수 (// 클릭 이벤트)를 클릭하십시오 (current_step \u003d\u003d 단계 .length-2) (// 다음 단계가 마지막 $ (이) .hide ()인지 확인하십시오. // 링크 "다음 단계"$ ( "양식 입력")를 숨 깁니다. show (); // show "등록"버튼). show (); // 링크 "뒤로"current_step ++; // 카운터 전류 슬라이드 체인스 (current_step) 증가; // 단계를 변경합니다)) ; $ ( "a.back"). (함수 () (// 이벤트 (current_step \u003d\u003d 1) (// 이전 단계가 처음 $ (이) .hide ()인지 여부를 확인하십시오. // 링크를 숨기는 "뒤로") $ ( "양식 입력") .hide (); // "등록"$ ( "a.next"버튼)을 숨 깁니다. show (); // 링크를 보여줍니다 "다음 단계 "current_step--; // 현재 슬라이드 카운터를 줄입니다. Changestep (current_step); // 단계 변경))); 함수 변경 (// step $ (단계) .hide (); // 모든 단계를 숨 깁니다 (단계 [i]). show (); // 현재)))));

PHP-send to is to 여기에 쓸 수있는 코드는이 수업과 관련이 없습니다. 편지가 양식의 첫 번째 단계에서 지정된 주소로 이동한다는 점에 유의해야합니다. 어쨌든 데모의 파일을 다운로드하고 스스로를 볼 수 있습니다.

공유