[주문 포장] PHP로 제작된 투표 시스템에 대한 해설


포인트 설치의 과정, "PHP 투표 시스템(총 13회)"의 비망록.복습에 쓰세요.
마지막 Google Chart Tools는 언급되지 않았습니다.페널티킥을 설치한 사람이 수업을 준비했다.기억해야 할 것이 아니기 때문에 빠르게 확인해서 사용할 수 있다.
Google Chart Tools 시작하기(총 12회)
개발자 웹 사이트의 영어를 읽을 수 있다면 Google Chart Tools에 관한 기사를 쓰고 싶습니다.

USE 문서 및 고유 버튼#02


#02 데이터베이스 설정
GRNT 텍스트
GRNT 문의 기본 형식은 다음과 같습니다.
GRANT '権限' ON 'データベース名.テーブルト名' TO 'ユーザー名@ホスト名';
그리고 이번 수업에 사용했던 것들.
grant all on dotinstall_poll_php.* to dbuser@localhost identified by '********';
도틴스탈입니다.poll_php 테이블에 대한 모든 권한(SELECT, UPDATE 등)dbuser@localhost구문을 사용합니다.그리고 이 사용자의 비밀번호를'***'로 설정합니다.
권한은 ON 이후에 4개의 유효 범위를 설정할 수 있다.
// グローバルレベル:
GRANT 権限 ON *.* TO user;

// データベースレベル:
GRANT 権限 ON db_name.* TO user;

// テーブルレベル:
GRANT 権限 ON db_name.table_name TO user;

// カラムレベル:
GRANT 権限 (カラム1, カラム2, ...) ON db_name.table_name TO user;
여기 좋은 샘플이 소개되어 있습니다.
Mysql 사용자/권한 관리
또 GRANNT 글도 이 기사에서 이 점을 언급했다.
[포인트 설치] 호출 기능에 대한 설명
USE
USE 데이터베이스 이름으로 데이터베이스에 연결합니다.한 번 연결하면 FROM을 사용하여 테이블만 지정하면 됩니다.데이터베이스 이름은 생략할 수 있지만 생략할 필요는 없습니다.
고유 키
유일한 키는 수치를 중복할 수 없습니다.주 키워드와 달리 NULL을 저장할 수 있습니다.또한 NULL 값만 반복할 수 있습니다.
여기서 먼저 이번 데이터베이스의 전체 그림을 파악합시다.
열수
컨텐트
보태다
id
자동 번호 지정
answer
대답하다.
향후 확장에 사용할 문자열
remote_addr
응답자의 IP 주소
user_agent
브라우저 정보
answer_date
응답 날짜
modified
업데이트 날짜
unique_answer
IP* 브라우저* 응답 날짜
하루 한 번의 제한

세션의 유효 범위 이해 #03


#03 설정 파일 만들기
PHP의 데이터베이스 조작에 대해 전문적인 글을 만들고 있습니다.그림을 준비하고 있습니다. 보십시오.
PDO를 사용한 PHP 데이터베이스 기본 작업
이 장에서 함수 하나만 확인합니다.
session_set_cookie_params(유효기간(초), 동작 경로)
이 함수의 매개 변수는 최대 5개입니다.자세한 내용은 링크 주소의 PHP 설명서를 참조하십시오.
session_set_cookie_params(0, '/poll_php/');
이번 과정의 유효기간은 0이다. 즉, 브라우저가 닫히기 전에 유효범위는poll이다.php 디렉터리 아래에 있습니다.또한 경로가 아닌 필드에 유효한 범위를 지정하려면 세 번째 매개변수를 사용합니다.
이 함수의 사용 주의사항은 호출session_start()을 하기 전에 반드시 호출session_set_cookie_params을 해야 한다.
주제 밖의 말은 PHP 매뉴얼을 보면 첫 번째 파라미터의 유효기간이 영어라면 라이프타임이다.'생명의 시간'인가.살아있는 시간', 즉'유효기간'이죠.나는 영어라는 점이 매우 재미있다고 생각한다.

함수 및 설정된 파일 분류 #04


#04 일반 함수 사전 등록
PHP의 데이터베이스 조작에 대해 전문적인 글을 만들고 있습니다.그림을 준비하고 있습니다. 보십시오.
PDO를 사용한 PHP 데이터베이스 기본 작업
함수 정의에 대해 h()는 PHP에서 흔히 볼 수 있는 htmlspecialchars()의 생략 형식이다.그런 다음 connectDb()가 하나 더 있습니다.이렇게 하면 PDO를 통해 데이터베이스에 연결하여 PDO 객체로 돌아갑니다.
저는db입니다.php라는 파일에 데이터베이스를 연결하기 전의 처리를 총괄했지만 데이터베이스 연결에만 함수 정의를 하고 상수로 파일을 구분하는 것이 좋다고 생각합니다.
<?php
/*** db.php ***/

define('DB_HOST', 'localhost');
define('DB_NAME', 'データベース名');
define('DB_USER', 'ユーザー名');
define('DB_PASSWORD', 'パスワード');
// 文字化け対策
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND=-->"SET CHARACTER SET 'utf8'");

error_reporting(E_ALL & ~E_NOTICE);

// データベースの接続
try {
    $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}
?>

id에서 선택한 것 판단하기 #05



도해 화면.

모양새의 변화는 CSS에서 미리 정의#06


#06 투표 결과를 받아보도록 하겠습니다.
이벤트 처리 프로그램의this 지시 후 내용을 클릭하십시오.이번에는 반 candidate에 클릭 이벤트를 설정했기 때문에 그 반에 첨부된 이미지를this의 대상으로 삼았다.
이번 클릭 이벤트의 내용은 다음과 같습니다.
  • candidate 클래스를 가진 selected 클래스를 제거합니다.
  • 클릭한 물건에 selected 레벨을 추가합니다.
  • IDanswer, 즉 텍스트 필드의 값을 이미지의 id 값으로 바꿉니다.
  • 왜 1의 처리를, 왜 candidate 클래스 전체에 대해removeClass()를 진행합니까?
    그림을 눌렀을 때마다 이전에 눌렀던 그림에서removeClass () 를 실행하려면 눌렀던 역사 기록을 관리해야 하며, 모든 그림의 종류를 제거하는 것이 좋습니다.약속이야.

    CSRF가 다른 사이트에서 데이터를 보내지 않도록 방지#07


    #07 CSRF 대책 구현
    CSRF란 무엇입니까?그런 사람이 있어야 한다고 생각해서 이전 해설 기사를 먼저 붙여놨어요.
    [포인트 설치] PHP가 제작한'간이 게시판'의 해설
    이번에는 자신이 지정한 폼의 발송을 잘 받아들여야 한다고 설정했다.이를 위해 토큰을 사용했다.실제 서비스라면 인터넷 뱅킹이나 온라인 게임 같은 일회용 비밀번호와 같다.
    다른 예를 들면 사이트에 접속할 때'그림 속 영문 숫자를 입력하세요'라고 말하는 것도 CSRF 대책의 일종이다.즉석에서 무작위 값을 만들어 암호로 삼는다.이 비밀번호는 네가 이미 이 사이트에서 데이터를 받아들였다는 것을 증명할 수 있다.CSRF 대책이 없으면 다른 사이트에서 데이터를 보내고, 악의적인 프로그램이라면 눈물을 흘리게 한다.예를 들어 프로그램을 링크에 숨긴다.

    in_Aray로 정답 판정 #08


    #08 오류 확인
    in_aray(값 찾기, 배열 찾기)
    if (!in_array($_POST['answer'], array(1, 2, 3, 4))) {}
    
    이 코드는 1~4에 answer가 포함되어 있는지 확인하는 데 사용됩니다.그리고 부정적이기 때문에 1~4에 answer가 포함되지 않는다. 즉, 1~4가 아니라고 대답할 때 이if문이 집행된다는 것이다.

    excute()의 반환값에 따라 투표 제한 #09-10 판단


    #09 투표 결과 저장(1)
    #10 투표 결과를 저장하세요(2)
    insert 글에서 ": ~"을 사용했습니다. 이것은 매개 변수 표시를 지정했습니다.유사 변수.사용(사칭)은 먼저 성명한 다음에 대입하면 매우 편리하다.
    SQL 문을 실행할 때 매개변수 태그를 지정할 때query () 대신 prepare를 사용합니다.그런 다음 bindParam() 매개변수 태그에 값을 설정하고 excute()로 SQL을 실행합니다.또한 excute()의 매개변수를 사용하여 매개변수 태그를 지정할 수도 있습니다.
    매개 변수 표시가 이상하면 excute () 는 실패한 형식으로 가짜를 되돌려줍니다.성공하면 진짜로 돌아간다.그래서 이 제한을 이용해 하루에 한 번씩 투고한다.매개변수 태그에는 고유한 키가 포함되어 있으므로 값을 반복할 수 없습니다.(이때의 값은 사용자를 식별하는 정보를 가리킨다)
    if ($stmt->execute($params)) {
        $msg = "投票ありがとうございました!";
    } else {
        $err = "投票は1日1回までです!";
    }
    

    좋은 웹페이지 즐겨찾기