[Powered by Google Translate] [주 8, 계속]
[데이비드 J. Malan] [하버드 대학]
[이 CS50 수 있습니다.] [CS50.TV]
>> 이 CS50입니다,이 여기에 주 8의​​ 끝입니다.
물론 우리는 이번 주 초에 태풍이 좀 많았다
그래서 지금이 강의실에서 당신과 나, 정말입니다
하지만 오늘은 PHP에 대한 우리의 대화를 계속
및 웹 프로그래밍에 대한 자세한 일반적으로, 우리는 또한 아이디어를 소개
데이터베이스, 특히 하나는 요즘 매우 인기가 MySQL을,라고
때문에 그 확장 성뿐만 아니라 무료 및 오픈 소스 것 때문에 많은 부분 인치
>> 하지만 먼저, 지난 시간을 그만 둔 곳을 살펴.
우리는 여러 신입생 인스턴트 메시지의 예에서 찾고 있다는 리콜
그리고 이건 나이 15 + 년 전으로 나온 건 무시 무시한 형태였다
신입생 교내 스포츠 학교 등록에 대한 학생들 권한을 부여하기 위해
실제로 Wigglesworth에 빠른가 더 이상 여행하지 않고도
어떤 조교의 문 아래 종이 실제 조각을 슬라이드 할 수 있습니다.
대신 우리는 온라인으로 모든 이동, 우리가 사용하는 데 필요한 그 일을 할
몇 기술의, 어느, 우리는 HTML, 하이퍼 텍스트 마크 업 언어를 필요
이는 다시는 구조적으로 웹 페이지를 만들되는이 마크 업 언어입니다.
>> 규약에서 캐스 케이 딩 스타일 시트를 요즘 CSS의 비트를 사용하여
우리는 약간 다른 구문을 사용하여 웹 페이지의 stylizations를 사용하여 상기하면,
HTML은 그 구조에 대한 전부 였어 반면.
우리는 또한 웹 프로그래밍 언어를 소개해야합니다.
이 경우, 우리는 PHP를 사용하고, PHP 우리에게 허용 할 것이다
동적으로 출력 콘텐츠에뿐 아니라 같은 프로그래밍 일을
이메일을 보내는 등 우리가 지난 주에 남긴 그 사람 메모에있는 경우이었다.
>> 이를위한 코드는 2 부분에 있던 것을 기억합니다.
하나는, 우리는 froshims3.php을했다
이 방법은 그 내부에 HTML 양식 크게 마크 업했습니다
스타일 속성에서 여기까지 CSS의 작은 비트
폼 자체는 페이지에서,하지만 그 뒷일은 중심 될 수 있도록
우리는 대표 폼 입력, 텍스트 필드, 체크 박스를 가지고
어떤 라디오 버튼, 선택 메뉴 및 제출 버튼.
그리고이 양식을 통해, 우리는 분명히 register3.php라는 한 파일에 제출
어떤 자체는 같은 뭔가를 조금 보았다.
이제 register3.php, 리콜에 코드의 대부분은 이메일에 대한 모든했습니다.
그것은 확실하게 제출 된 양식의 검증 약간 했어요
필드가 실제로 예상했다 그 제공되었는지.
그런 다음 우리는 약간 새로운 구문을 사용하여 몇 가지 PHP 함수를 호출
그것은 C.에서 차용 할지라도
>> 이 화살표 연산자는 우리가 객체 지향 프로그래밍이라는 것을 사용을 할 수 있습니다.
우리는 여기 자세히 그에 갈거야,하지만 지금 알 수 없습니다
그것은, 객체와 연관된 기능을 갖는 방법
우리는 C.에서 본대로 이것은, 구조의 특별한 유형입니다
하지만 지금은 단지이 사용하는 올바른 구문입니다 신앙에 걸릴
이 PHPMailer 라이브러리와 같은 라이브러리를 사용하는 경우.
그리고이 파일의 끝 부분에서 우리는 동적으로 이메일을 생성 한
내 jharvard@cs50.net 계정에 불려 갔어 그
내 jharvard@cs50.net 계정에서,
우리는이 스포츠에 등록 된 것을 따라 사용자 정보를.
그것은 신입생 인스턴트 메시지 사이트가 모든 년 전에 무슨 짓을했는지 꽤 많이 있습니다
제가 구현 때, 다른 언어로 부여
하지만 어쩌면 당신이 가지고있는 능력을 보여줍니다
지금 당신은뿐만 아니라 프로그램 자신을 표현 할 수있는
C와 같은 언어로 낮은 수준에 있지만, 훨씬 더 높은 수준의
실제로 해결하는 이메일과 같은이 매우 실제 응용 프로그램과
진짜 세계 문제.
>> 지금, 물론,이 스크립트가 일부를 생성하는 데 사용하는 경우에도
실제로 계정입니다 jharvard@cs50.net에서 동적으로 이메일
난에 대한 액세스 권한이 있는지, 보내 매우 조심하게
실제로 자신의 아르 계정에서 메일에만
일이 인생에 뜨거운 물을 약간에 타는 않도록.
그 말과 함께 모두 다른 문제를 해결하는 전환 지금 보자,
유지 상태의.
자,이 사실은 무엇을 의미합니까?
HTTP,이 하이퍼 텍스트 전송 프로토콜,
실제로 무국적 프로토콜입니다,이 의미있는 무엇인가
당신은 Google.com 같은 것을 뽑아 입력 한 다음 Enter 쳤을 때
일반적으로 브라우저는 다음 회전 아이콘이 어떤 종류의가 있습니다
일부 웹 페이지에 결과는 다운로드 중
그리고 그 작은 아이콘이 회전 중지하고 실제로 제안하는
HTTP는 서버에 어떤 연결 고리를 완료하고 그게 다라고.
HTTP는 유지하지 않는 의미에서 상태 비 저장입니다
같은 방식으로 스카이프 (Skype)의 서버에 영구 연결합니까
또는 Gchat 그래요 HTTP와 때문에
가정 한 번 당신이 있어요 웹 페이지를 가져 오는 한 것입니다.
>> 이제 페이스 북과 Google지도와 같은 사이트에 현실에서 이러한 일
그리고 트위터와 같은 더 많은 역 동성이있어 상기
그 아이콘이 회전 중지 후에도 당신은 실제로 더 많은 업데이트를 받아보실 수 있습니다
서버, 더 많은 트위터, 페이스 북에 대한 자세한 상태 업데이트와 같은에서.
그러나 우리는 두 주에 대한 얘기하자있는 기술을 사용하는 그
아약스 자바 스크립트라는 언어를 사용으로 알려진,
하지만 하루의 끝에서, HTTP는 여전히 상태 비 저장입니다.
그런데도 당신은 어떻게 든 사용자에 대한 일을 기억하려는 경우
그들은 서버에서 연결이 끊어 후에도
PHP는 당신에게 이런 짓을 할 수있는 방법을 여유가 않습니다
우리가 마지막으로 본으로 인해, PHP는 슈퍼 전역 변수의 번호를 가지고
그리고 전역, 다시, 특별 전역 변수입니다
그는 웹 서버와 PHP 자체로 당신에게 전달있어.
>> 당신은 거기에 값을 넣어 아무것도 할 필요가 없습니다
우리가 지금까지 본 적이 슈퍼 전역 변수들, GET과 POST 아르
양식 필드는 당신을 위해 자동으로 넣어있는 곳입니다
뿐만 아니라 우리가 아직 보지 않은 다른 사람의 몇.
$ _SERVER의 내부 서버 자체에 관한 특별한 변수가 있습니다.
프로토콜, HTTP 또는 HTTPS는 사용 했나요 IP 주소, 어떻게
, 어떤 요청 방법을 당신이 사용하고 같은, 그래서 흥미로운있어 않았다
육즙이 서버에 대한 자세한 내용과 사실, 거기에 사용자뿐만 아니라.
이런 일이 쿠키가 저장되어이라는 곳 $ _COOKIE가 있어요.
우리는 오늘 쿠키에 스스로 시간을 할애하지 않습니다
하지만 쿠키는 단지 정보의 작은 조각입니다 지금 알고
웹 서버가 웹 브라우저에 심는 수
과에는 RAM 또는 컴퓨터의 하드 드라이브를 켜
정보는 예를 들어, 사용자에 대한 자신의 사용자 이름을 저장하는 방법
그들이 입력 모든 사람들이 로그인 시간이나 일부가되지 않도록
고유 번호 또는 해당 사용자에 대한 식별자
당신은에 대한 질문의 동일한 종류를 훼방하지 않도록
미래의 환경 설정,하지만 관심의 대부분
지금 $ _session입니다.
>> 다른 이들처럼, PHP에 의해 자동으로 전달되며,이 자동 전역,
당신은 PHP 기반의 웹 사이트를 쓸 때
당신이 원하는 무엇이든, 문자열, 정수를 저장할 수 있습니다
부동 점, 값, 배열, 객체,
정말 당신이 원하는 무엇이든, 그리고 당신이하는 방식에 저장할 수 있습니다
그 사용자는 이제 다음을 방문하는 경우에도
지금 현재 5 분 거리에서 분 돌아 오는 이유
그들은 다른 링크를 클릭하기 전에 시간이 걸릴
PHP는 그 세션 전역에 쓴대로 있는지 확인합니다
분 또는 5 분 전에 아직 거기에 사용자를 반환하면 될 것입니다.
그리고 후드 밑에 전역은에 의해 구현된다
그런 쿠키라고하지만, 지금, 그냥 추상화입니다
상기는 쇼핑 카트의 프로그래밍 상응의 일종 이죠.
무슨 말씀을, 프로그래머, 그에 넣어
전역 연관 배열이 분 후 일부 뿐이지
당신은을 삭제하거나 사용자가 모두 자신의 브라우저를 종료 할 때까지.까지
>> 의이 일이 실제로 사용하는 방법에 대한 예를 살펴 보자.
코드의 오늘의 조각들 counter.php에서
우리는 다음 줄이 있습니다.
이 파일의 시작에서 우리는 지금 재미 아르 푸른 의견의 무리가 있습니다.
그러나 13 호선에서 우리는, 새로운 줄이
session_start, 그 실제로 말씀 정확히 않습니다.
이 세션을 시작합니다.
그렇게 클 전역 $ _session을 사용 할 수 있습니다, 그게만큼 간단합니다.
우리가 라인 16를보고 진행라면,이 웹 페이지가 무슨 짓을할지 알아 보도록하자.
(isset은 ($ _SESSION [ "카운터"])가 진행하는 경우
카운터 변수 및 저장, 소문자 카운터,
$ _SESSION [ "카운터"].
이 카운터라는 지역 변수를 선언 할 듯
그것은 자동 전역 속에 무엇이든의 사본을 만들고 내부에있는
위치에 세션이라는 '카운터. "
다른, 분명히이 작은 지역 변수를 카운터 0으로 초기화됩니다.
>> 하지만 몇 줄 이상 26 고지에서 해당 카운터 세션의 사본,
그 핵심은, 현재의 값을 더한 1 새 값을 할당이 있습니다.
즉,이 파일은 업데이트 할 것 같습니다
세션 전역의 내부 저장된 카운터
1을 증가하지만,하여 먼저 이전 값의 복사본을 유지
지역 변수에 저장하여, $ 카운터라고
그리고 여기 남아 알아 보자.
그것은 꽤 많은 단지 HTML 밝혀집니다.
이 페이지의 하단에서 우리는이 사이트를 방문한 라인 37에서 볼
시간 카운터 번호, 몇 재미있는 기능이있다 그래서.
하나는, 이것은 분명히 변수이지만, 그냥 넣어 충분하지 않습니다
귀하의 HTML 인해 코스의 본문에 $ 카운터
그것은 귀하의 HTML을 PHP 중 단지이 있다면 HTML입니다 거라 생각합니다.
당신은 그대로 화면에 인쇄 할 $가 카운터 싶습니다.
>> 대신 PHP 모드로 하락하여
구문이 조각을 우리는 동적으로 여기에 값을 삽입 할 수 있습니다
우리가 지난 번에 무슨 짓을했는지에 대한 정신에서 매우 유사
문자열에 값을 삽입.
사실,이 문자 그대로 같이 말을위한 속기 표기법입니다
인쇄 (카운터 $) 또는 printf (% s의, 카운터) 같은,
또는, 당신은 온라인 또는 교과서에서 보셨을 수 있으므로,
에코라는 PHP의 함수가 있습니다
이는 같은 일을 수행하고, 그 모든 단지 더 이상 숨이 차는 방법입니다
말하는 <? =.
한 사건에서는 해둘 필요는 없다
물음표 후 단어 PHP.
이 우리가 잠시 전에 본 것을 다시에 대한 속기 표기법입니다
이는 어떤 값을 울리는 있습니다.
>> 이 최종 결과는 실제로 알아 보자.
저 우리 counter.php 파일에 이상 가자
우리는 다윗이 그냥 코드를 연주하여 실수를했다는 표시됩니다.
그는이 일을 망쳐 놨다는 어떤 해결책을 가자의,
그리고 오류가 줄 37, 거기 갔다 보인다.
이 페이지의 상단에 따르면이 사이트 0 명 번 방문했습니다.
자, 이제 앞서 가자, 브라우저 상단의를 클릭
, 아이콘을 다시로드, 내가 새로 고침을 클릭합니다
지금은 사이트 1 회, 2, 3, 4, 5, 6, 7, 8을 방문했습니다.
우리가이 페이지의 소스 보면 실제로, 실제 소스 코드가 변경됩니다
와 PHP의 전체 부재를 발견하고, 그게 때문에
PHP 코드는, 평가 또는 서버 측을 해석됩니다
그리고 그렇게는 PHP 스크립트의 출력이 궁극적 브라우저로 전송 무슨 의미
이 경우 일부 원시 HTML 및 일부 원료 텍스트가있는 것입니다.
무슨 일이야?
>> 음, 코드의 상대적으로 몇 줄을 내가 저장할 수 오전
지속적으로 몇 초에 걸쳐, 또는 경우 우리는 충분히 기다렸습니다
HTTP를 만드는 방법에 분에도 시간은, 어떤 값
우리가 보존 한 것처럼 상태 저장을 보인다
서버에이 연결, 그리고 이건 그냥 내가 마지막으로 그에게 말한 것을 기억이야
하지만 현실에서 후드 아래에 무슨 일 복잡성을 아주 많이가
PHP는 나에게 환상을 제공 할 수 있도록 쿠키를 포함
이 쇼핑 카트의 같은 기능입니다.
지금은, 우리가 그냥 정수를 저장하는 사소한 예를 들어,
하지만 그 기능은 큰 도움이 될 다시 올 것이다
우리는 더 복잡한 프로젝트에 대해 얘기 시작하면
그 사이에 문제는 7로 설정합니다.
이 CS50에서 설정하여 매우 마지막 문제입니다.
내가 알고, 정말 슬픈 일 이죠,하지만 당신이 찾아내는 것은 우리가 결론거야 있다는 것입니다
실제로 전환하여 학기의이 부분
C의 맥락에서 확실히 PHP의 맥락에
하지만 똑같은 기본 중 일부를 사용하는 동안
우리는 시간에 대해 얘기했습니다.
>> pset 7 목적은 CS50 금융을 구현하는 것입니다
야후 금융 또는 Google 금융의 자신의 버전이있는 것입니다
당신이 할 수있는 능력을 가지고 상기하거나 Etrade.com
주어진 기호에 대한 주식 가격을 찾아,하지만 그보다 더 많은
당신은 주식을 "구매"와 "판매"할 수 있습니다
그 때문에이 홈 페이지 등 다양한 증권 거래소에서 거래 아르
여기 정말 우리가 시작한 할 수있는 정도입니다, 제안
당신을위한 문제 세트, 당신은 사용자 이름과 암호를 요청하는 로그인 폼을 갖추고 있습니다.
결국 우리가 보게 될 그 말은, 이후 제출 버튼을 가지고 있지만,
이 아무것도은 아직 후드 아래에 갈 수 없어 그 때문에
여러분이 새 사용자를 등록 할 수있는 기능을 구현하기 위해 남아
, 주식을 판매, 주식을 구입 할 수있는 능력
실제로 현재의 주식 가격을 찾아합니다.
>> 우리가 한 때문에 실제로이 가능한 현실 세계로 될 것입니다
하나의 함수를 수 코드의 비트를 포함
멋지고 무료 데이터를 만들어 야후 금융을 쿼리하는 방법
주식 기호 또는 종목 코드를 기반으로 주가를 찾는 경우,
그리고 당신은 일의 현재 주식 가격을 다시.
특정 pset에 당신이 실제로 표시되는 데이터는 것입니다
현실 세계와 같은에 대해 당신이 실제로 인터페이스하고 싶은받을 수로
실제 주식, 실제 가격과
그리고 우리는 당신이 아마 할 수있는 방법 많은 돈을 확인한다
자신의 문제 설정과 재생의 다음 몇 일 동안.
>> 하지만 그건 먼저 확실히 더 복잡한 뭔가를 설계하는 방법에 대한 무대를 설정
counter.php보다, 그 지금까지 신입생 인스턴트 메시지 예제의 그 누구보다 더 복잡한
우리를 허용 - 여기서 몇 패러다임을 소개 봅시다
pset 7 수도 있으며 최종 프로젝트가 기반 무언가 웹을하지 않으면 모두
자신이 제정신이 유지, 코드가 잘 정리하기 위해,
그리고, 공동 향한 조치를 취할 CS50의 마지막 프로젝트에 관계없이
또는 미래에 뭔가 프로그램을 계속하는 경우 초과.
이 일반적인 디자인 패러다임이
컴퓨터 과학 및 소프트웨어 개발에 더 일반적으로
MVC, 모델 뷰 컨트롤러로 알려져
이 방법은 아주 좋은 아이디어를 설명하는 바보 약자입니다
이는, 프로그램의 다양한 측면의 분리입니다
특히 별도의 로직이나 웹 사이트의 비즈니스 로직을 유지
같은 일을 포함 그 어떤하므로
함수를 호출하고 데이터베이스를 쿼리하고 같은
귀하의 HTML 사이에 발생하지
오히려 별도의 파일로, 그리고 실제로,이 하나의 파일이있어
당신은 컨트롤러 전화를 일반적으로 해당
그건 정말 작업 브레인, 우리는 예를 볼 수 있습니다
단지 순간이.
>> 코드를 프로그래밍하는 모델이
그 데이터베이스 이야기, 그 야후 금융과 같은 한테 뭐라고합니까,
그리고 MVC에서 V, 전망이있어
미학, 실제로 포함 된 파일과 관련이 있어요 그 물건들
귀하의 HTML, 어쩌면 당신 CSS와 같은.
여기 아이디어는,이 사진에서 알 수 있듯이, 그거 컨트롤러
우리가 곧 보게 될 당신이 특히 pset 7 볼과 같은 파일입니다,
세계는 자신의 웹 브라우저를 통해 랑 얘기하는.
즉, 공용 인터넷에 방문한됩니다 파일입니다
하지만 컨트롤러는, 잠재적으로 모델에 말을
이는 데이터에 관련 코드가 포함 된 하나 이상의 다른 파일입니다
코드는 데이터베이스와 같은 관련, 다음은 말하고
전망으로 알려진 컨트롤러는 하나 이상의 다른 파일,
웹 페이지의 미학, 종류의 템플릿은, 그 아르
입력으로 일부 데이터를 걸릴 수 있습니다,하지만 하루의 끝에서
뷰의 내부 유일한 논리, 그 데이터의 렌더링해야합니다
루프를 통해 반복하고 실제로 일부를 토
PDF와 같은 HTML 기반의 연주는 그 또는 무언가.
>> 어떤 MVC에 대한 좋은 건 당신이 다른 전망을 가질 수 있다는 것입니다
파일 형식 당신 실제로 유형에 따라 장치의 유형에 따라
사용자에게 보여주고 싶어.
의 몇 점차적으로 더 복잡하고 잘 디자인 된 예제를 살펴 보자
여기 버전 0 첫번째 시작으로.
내가 가서 오늘은 MVC 디렉토리에 열어 보자
파일 디렉토리 0에 index.php를했다.
이 슈퍼 단순하고 매우 underwhelming 웹 사이트입니다 공지 사항
즉, CS50에 대한 홈페이지의 버전 0의 일종 이죠
우리는 강좌에 대한 링크를 어떻게 발견, 우리는 강의 계획서에 대한 링크가
나는 강의 통지에 대한 링크를 수행하는 경우 그 URL
위에서는 lectures.php로 변경 예정이다.
그때 나는 1 주차 통지에 대한 링크를 따라 가면 그 week1.php의 URL로 변경됩니다.
여기에 비교적 간단한 계층 구조가있는 것 같습니다.
>> 의이 도시는 배치하는 방법에 후드 아래에 잠깐 살펴 보자
나는 index.php 보면 실제로, 그것은 아주 간단합니다.
사실,이 PHP 파일이라고하더라도 실제 프로그래밍 코드는 없습니다.
I는 사용자가 보는 끝나 진 않지 그냥 PHP 여기 쓴 댓글이 있습니다.
PHP 태그 사이에 물론, 같은 전에, 아무 것도
해석됩니다, 만약 의견이라도하고 댓글을 해석하는 방법
하루의 끝에서 그걸 버릴 만 의미가 아닌 실제
브라우저로 보내, 여기에 모든 것이 미학집니다.
나는 유사 lectures.php 열 경우이 너무 단지 하드 코딩 된 파일입니다.
그것은 무언가라고 할 수 발생합니다. PHP는,
하지만 그것은 정말로 단지입니다. HTML 및 week1.php, week2.php
마찬가지로 단지 마크 업입니다,이 설계의 단점의 무리가 있습니다.
하나는 복사 / 붙여 넣기의 거대한 금액입니다.
이러한 파일 중 변경 유일한은 정렬되지 않은 목록하더라도,
리 태그는, 나는 그럼에도 불구하고 문서 형식, HTML, 머리를,이
제목, 가까이 몸 가까이 HTML 등
모든 단일 파일에있는 제가하고 싶은 경우 구조 조정을 의미
이 웹 페이지 또는 I가 들어가서 변경해야 그것을 restylize
이러한 모든 파일을 수동으로 또는 일부 대규모로가 찾아 교체하십시오.
>> 의 현재 버전 1에서 영리하고, 더 이상 생각 디자인을 향해 한 걸음 가져 가자
상기와 같은 당은 우리가 함께 놀 수 있도록 포함 한 들립
우리가 여기에 있다는 가정에 통보이 더 여유
이 사이트의 버전 1에있는 파일의 요약,
그리고 자신을 알아 요인에 제가 찍은 것 같다
몇 가지 일반적인 코드를 header.php와 footer.php.
음, 그 첫 번째 안에 뭐가를 살펴 보자.
Header.php은 익숙
하지만 어디서 끊어 질 않는 경우가?
오른쪽 라인 (19) 후, 일반적으로 모든 것을 인 것
파일 index.php, lectures.php에서
week1하고 앞의 예에서 week2.php.
내가 한 짓이, 복사 및 모든 파일에 공통했습니다 컷 전부 였어요
별도의 헤더 파일에 넣어, 그리고 유사 footer.php에서
나도 같은 원칙을 적용 않았다 상기 유일한 재미있는 내용
footer.php에 두 가까이 몸과 가까이 HTML입니다.
>> 그런데이 지금 의미하는 것은 그 새 버전에
index.php 통지를 얼마나 간단하게는 얻을 수 있습니다.
허락하신다면, 더 많은 암호 조금 덜 직관적보고,
위에서 아래로 따라 올 수 있지만, 내 하나님은 그 중복의 모든들이 지금은 사라져 버렸습니다.
우리는 그대로 필요까지 상단라는 PHP 함수를 사용하여 필요
매우 연상되는, C의의 것은 # 메커니즘을 포함 연상케합니다.
우리는 상단에 header.php이 필요합니다.
우리는 아래에 footer.php을 필요로하고, 그 유일한 방법은 다른
또는이 파일에 대한 특별한는 고유해야 해 콘텐츠입니다.
그때 lectures.php, 말에 가면 같은 원칙이 적용됩니다.
다시 말하지만, 일부 꼭대기 의견,하지만 난 헤더를 필요는 바닥 글 필요
와 사이에이 실제로 바뀌 내용입니다.
우리가 주 1 주에봤을 때, 2 우리는 볼 수있을
같은 원리가 거기에 적용했다고.
음, 우리는 준비가 덜 안 끝났어.
>> 가 비슷한 구조를 가지고 버전 2를 살펴, 봅시다
하지만 다른 뭔가를 도입했습니다 지금 확인합니다.
라인 10 나는 helpers.php을 도입했습니다
이는 분명 도우미 기능을 포함하고 있습니다.
도우미 기능은 일반적으로 상대적으로 짧은 기능입니다
당신은 다양한 장소에서 당신을 돕기 위해 작성하는
그리고 helpers.php의 안에 알아 보자.
그 2 기능을 가지고 같은이 경우 같습니다.
우리의 큐브 예를 다른 날부터 리콜
당신은 PHP에서 자신의 기능을 정의하고 내가 지금 한 것은 내가들은이 수
바닥 글을 렌더링하고 헤더를 렌더링이라고 정의 기능,
매개 변수를 취 중 첫 번째는, 데이터라고
그의 기본 값으로이 제안 빈 배열,이다
우리는 실제로 PHP의 최신 버전에서 더욱 간결이를 작성할 수
열린 대괄호 말을하여 대괄호를 마감했다.
그 크기는 0 빈 배열하지만,​​ 그럼에도 불구하고 배열을 의미합니다.
>> 이 추출물 함수는 점에서 좀 특별합니다
만약 잘못된 것은 그것의 인자로 연관 배열이 소요됩니다
그는 0 개 이상의 키 값 쌍을 가지고, 당신은 foo는의 핵심이있는 경우
과 바 추출 기능에게의 값
줄 11으로, 그 지금부터 상황을 만듭니다
당신은 가치 바는 $ foo는라는 지역 변수가 있습니다.
그리고 데이터 배열에서 더 많은 키와 값을 가진다면,
마찬가지로 그들은 지역 범위로 추출됩니다
또는 이름 공간이 너무 footer.php과
여기 같은 생각이 너무 header.php
이러한 변수에 액세스 할 수 있습니다.
사실, 다시 header.php를 열어
지금은이 버전의 모양에 관심을 끌기.
>> 대신 하드 모든 단일 페이지에 대한 제목으로 CS50 코딩
가 가능 동성을 확인합니다.
5 호선에서 나는 제목 변수를 울리는거야
하지만 먼저 반드시 htmlspecialchars라는 함수에 해당 제목 변수를 통과거야.
기능에 대한 멍청한 이름이 있지만 한, 정말이게 뭔지 않습니다.
이 보장은 어떤 특수 문자
에 전달 된 문자열에 제대로 HTML을 탈출하고 있습니다.
이 사실은 크로스 사이트 스크립팅 공격을 불리는 것을 피할 방법입니다
상기 사람이 할 수있는 악의적 또는 실수로
웹 사이트에 자신의 HTML를 삽입
어떤 형식으로 붙여 넣어, 예를 들어,
당신은 매우, 특히 자바 스크립트 코드, 예상되지 않은 무언가
우리는 두 주 시간에 대한 얘기 하죠 있습니다.
>> 이 지금 header.php, 그것은보기의
당신이 심미적 일부 데이터 집합의 내용을 볼 수 있습니다 이었어요.
그러나 더 구체적으로, 그것은 템플릿입니다.
이것은 우리가 모든 페이지의 헤더처럼 보이도록 원하는 것을의 지금 청사진의 일종입니다
하지만 우리가 제목이 동적으로 삽입하려면 그 일부 역 동성이있어
제목 변수에 따라
우리가 전화했을 때 그는 다시 추출 된
렌더링 헤더 기능.
이제 우리는 렌더 바닥 글을 살펴봤을 때, 실제로 많은 지금은 그 사용이 없어요
footer.php에 어떠한 역 동성 없습니다 때문입니다.
,있을 수 있지만, 현재는이 태그의 하드 코딩 된 목록입니다 수 있습니다
실제로 이유가 제시 있도록하지만, 같은 생각이 적용됩니다
우리는 렌더 헤더와 렌더 바닥 글 기능을 갖는 시간을 낭비 했어?
, 제가​​ 버전 3에 지금 대신에 가자
및 도우미의 버전 3에서조차 더를 단순화하기로 결정했습니다.
>> 내가 한 렌더링 기능이 보자.
내가 그것을 다른 인자를 받아 보자, 이번에는, 템플릿이라고
어떤은 템플릿의 이름으로 의미
그럼 내가 presumptuously 연결할 수 있습니다. PHP를 그 변수의 값으로,
다음은 foo.php, bar.php 또는 header.php와 footer.php를 존재하는 경우
그럼 내가 가서 변수 데이터를 추출거야
그리고 그 경로를 필요로합니다.
나는 index.php를 열고있는 경우 즉, 지금이 기능을 사용하는 방법
난 더 이상 렌더링 헤더를 호출하지 않는 것을 확인할 수 있습니다.
난 단지 렌더링 전화,하지만 헤더의 인용 가치 전달
명확하게 할 템플릿 사실은로드하고 싶습니다.
>> 그런 다음 이상 여기 내가하고있는 일 확인합니다.
나는 제목의 동적 키에 지나가던 길에
이 너무 CS50의 가치, 그리고, 우리가 전에 본대로,
PHP의 최신 버전에서 더 간결을 만들 수
어디, 대괄호와 배열 기능을 대체 할 수
제가 제안하는이 더 많은 읽을 수와 확실히
약간의 입력을 쉽게.
그리고, 하단의 렌더링 바닥 글 호출,
우리는 모든에 두번째 인자에 더 연관 배열을 전달하지 쓰지 않는다
그 바닥 글의 아무것도 동적 안에 있기 때문입니다.
그것은 HTML에 대한 좀 가까이에 태그입니다.
좋아, 우리는 여기서 물건을 청소 향해 단계를 복용
하지만 나 2 최종 예를 열 수 있습니다.
지금 의식 결정을 내린 한이 사람, 번호 4, 통지
드디어 내 파일에 일부 계층 구조를 사용하여 앞의 예에 따라 개선 할 수 있습니다.
>> 이 요약에서는이 저를 읽기 전 도입 한 것을 확인할 수
이 디렉토리와 템플릿 디렉토리를 포함
그의 내용은 제가 포함 할 것을 될거야
내가 각각 렌더링 할 템플릿.
이거 정말 나 항문되는 일이 깔끔한 유지하려고하는
함께 관련 파일을 유지하지만, 최종 결과
지금 우리가 약간 tidier 설정을 가지고 있지만, 지금 우리가 기억해야 할 것입니다
에서 예를 들어, index.php
우리는 파일 helpers.php을 요구하는 경우
우리는 / helpers.php을 포함 통해 지금 요구해야
지금은 하위 디렉토리에 실제로이기 때문에보다는 helpers.php 말.
지금, 옆으로, 다음 예제와 몇몇 다른에서 볼 수 있습니다
필요와 같은 기능은 한 번 필요합니다.
이 자체 포함이라는 기능은 실제로, 그들은 모두 약간 다른 동작을합니다.
여기 내가 만이 할 슈퍼 확실하게 한 번 요구 말
도우미 한 번 내 프로젝트에 포함되어 있습니다.
하지만 실제로 제대로 내 논리를 생각하면 난 조심이고, 경우
그것은 정상을 필요로 말을 너무 막 충분합니다
그래서 오래으로 자신을 실수로 다른 곳에서 같은 파일을 필요로하지 않습니다.
사실이 사용하는 다음 일을 좀 더 효율적입니다
한 번 필요, 난 그저 필요에 내려 잘라께요.
>> 의는 한 걸음 더 나아가 봅시다.
마지막 예를 들어, 지금 버전 5는도 청소기 폴더 계층 구조가 있습니다.
이 최종 버전에서 날 읽어 당 내가 여기서 무슨 짓을했는지 주목
내 말은, 난 항상 셨으니 까하는 내 HTML 디렉토리를 가지고 지금
하지만 내부가의 지금 만 index.php, lectures.php입니다
week1.php 및 week2.php.
디렉토리는 이제 HTML 디렉토리의 옆에 살고 포함
그래서 형제 자매와 같은 수준에서 말하자면합니다.
따라서 템플릿 폴더는 않습니다.
여기에 키 테이크 아웃, 난 조금 더 구조를 도입했습니다입니다
하지만 키 기능은 파일 만 있습니다
공개적으로 주소 지정, 웹을 통해 액세스 할 필요가 그
공용 인터넷에 URL로 내 HTML 디렉토리에 있습니다.
>> 한편, 다른 파일, helpers.php, footer.php,
틀림없이 어쩌면 더 민감 header.php,
어쩌면 헬퍼는 실제로 일부 사용자 이름과 암호 또는 일부 지적이
내 재산은 정말도 실수하는 경우, 세상이보고 싶지 않아 작동합니다.
그것은 대중 HTML 디렉토리에서 유지하기 좋은 연습입니다
공개 할 자신이 필요하지 않는 파일.
당신이 볼 때 예를 들어,이 경우에해야 할 일은,
HTML 디렉토리의 index.php 파일
우리가 필요로 할 때 조금 더 조심해야 발견
또는 한 번에이 파일이 필요합니다.
처음해야 할 .. 상위 디렉토리로 이동하려면,
그런 다음 / / helpers.php을 포함합니까
내가 걱정하고있는 파일을 다시 다운 잠수합니다.
>> 그리고 MVC에 대한 질문
또는 그이 상대적으로 간단 화신?
그리고 우리가에 꽤 집중 명확한 것을 나 만들어 먹자
여기 V, 이러한 템플릿의 전망과 율도 아웃.
우린 단지 아직 C에서 M을 구별하지했습니다.
사실, 거기에 정말 심지어 C 이곳 엔 M이 없으며,
컨트롤러는, 정말로 그렇게하고 있지 않지만, 당신은 훨씬 더 가져올 게
MVC에서 그 두 편지 모두 잘 알고,
또는 오히려, 당신은 C에 훨씬 더 익숙해 가져올 게
문제 세트 7 때문에 수평선에 더 자세한 사항은이에 대한 MVC 인치
질문이 있으십니까?
여기 아무도 실제로 없습니다.
>> 자, 이제 오늘의 두 번째이자 마지막 주제로 이동하세요.
그건 데이터베이스의 소개입니다.
최대이 시점까지 우리는 저장 데이터의 몇 가지 방법을 했어.
우리는 변수를 사용했습니다.
다시 우리의 C 파일에서, I / O 토론 우리는 텍스트 파일을 사용하기 시작
그리고 fprintf처럼 파일을 사용하고 우리는 시작
CSV에 대해 이야기하는 것은 조금, 쉼표로 구분 된 값을, 파일
그래서이 모든 우리는 데이터를 저장 할 수
어느 비 지속적으로 또는 지속적으로.
그러나 CSVs는 검색에 아주 도움이되는 없습니다
그리고 삽입 및 삭제.
정말 쉼표로 구분 그냥 멍청한 텍스트 파일의
당신이하고 싶다면 행의 행으로 행의 행,
파일이 할 수있는 최선 정말 선형 검색입니다 검색 할 수 있습니다.
당신은 파일의 상단에 시작해야,에 전부 다 읽어
관심의 어떤 값이 있는지 확인하십시오.
당신이에 삽입하려는 경우 당신은 같은 일을해야
, 그 위에 반복하고 특정 장소에 삽입
그리고 사실, 당신은 검색 로직 자신의 모든 작업을 수행해야합니다.
>> 당신은 당신 자신이 그 코드를 작성하지 않는 한 CSV 파일에 일치하는 영리한 패턴을 수행 할 수 없습니다.
당신은 CSV 파일의 여과를 할 수 없어
하지 않는 한 당신은 직접 코드를 작성합니다.
다른 사람이 노력의 모든에 넣어 사용한다면 멋지지 않니
실제로 쉽게 삽입 쉽게 검색 할 수
및 삭제 및 업데이트, 등등?
그게 바로 데이터베이스가 무엇인지입니다.
SQL, 구조적 쿼리 언어는 또 다른 언어입니다
우리는 오늘 소개하고 있지만이 너무 매우 액세스 할 수 있는지
그리고 우리가 정말 할 수있는 일은 오직 가장 두드러의 일부 그것을 뽑아 낸되어 있습니다
특성 그게 그렇게 pset 7, 그리고, 당신이 따라 뭔가를 웹을 할 경우
최종 프로젝트, 당신은 자신을 표현 할 수있는 능력을 가지고
데이터 쿼리의 관점 인치
당신은 조금을 저장 할 수있는 기능 또는 많은 양의 데이터가
하루의 끝에있는 훨씬 더 구조화 된 방식으로
SQL로 자신을 표현 할 수 있기 때문에 당신의 인생을 더 쉽게 만들어
더 정확하게는, 훨씬 더 methodically에 순서
데이터의 큰 코퍼스에서 데이터의 일부 하위 집합을 다시.
>> 당신은 정말 Excel과 같은,이 경우, SQL 데이터베이스에 데이터베이스 생각할 수
아니면 스프레드 시트의 숫자,
아니면 여러 스프레드 시트, 물론 스프레드 시트,
행과 열을 가지고 있으며, 때문에 그건
SQL 데이터베이스는 의미에서 관계형, 관계형 아르
그들은 이러한 테이블의 측면에서 데이터를 저장하는
행과 열.
그들은 스프레드 시트와 같은보다 높은 실적
와 스프레드 시트는 인간이 사용할 수하기위한 것입니다.
데이터베이스는 프로그래머에 의해 사용 될 운명
이에 대해 코드를 작성하므로 데이터베이스의 화신
두 명령 행 될 것입니다.
>> 거기서 가장 인기있는 관계형 데이터베이스 중 하나는, 다시 MySQL을합니다
이는 매우 높은 실적을 훌륭하게 무료이며,이 무엇인지
페이스 북 오늘 여전히 어느 정도와 매우 초기 사용
그 많은 데이터를 저장할 수 있습니다, 우리는 순간에 볼 수 있습니다
비교적 간단한 명령을 사용하여 해당
우리는 데이터, 삽입 데이터, 업데이트 데이터를 선택할 수 있습니다
데이터와 같은을 삭제하지만, 다행히,보다 사용자 친화적 인 인터페이스를가
여기 검은 색과 흰색 프롬프트에 입력하는 것보다.
우리는 pset 7과 phpMyAdmin이라는 무료 툴 초과 사용합니다.
이름은 우연입니다.
이 도구는, PHP에서 구현 될 일이
하지만 그건 근본적으로 무관입니다.
어떤 phpMyAdmin에 대한 유용한 것은 그것이 웹 기반 유틸리티 있다는 것입니다.
우리는 당신을 위해 어플라이언스에에 미리 설치 한
그리고 그것으로 당신은 데이터베이스에 테이블을 만들 수 있습니다
당신은 데이터를 삽입 데이터를 삭제하고, 일반적으로 볼 수 있습니다
매우 사용자 친화적 인 환경에서 데이터입니다.
사용자가 phpMyAdmin을 사용하지 않을 수 있습니다.
>> 이 단지 행정 또는 개발자 도구입니다
보고 데이터 주위에 찌르고을 구성하는 방법을 강구하는과,
당신과 같은 직접 Excel 또는 숫자를 사용할 수 있습니다
하지만 후드 아래에 무슨 일이 일어나고 있는지 표시하는 좋은 방법이 될거에요
당신은 해결 흥미로운 문제에 집중하지 많은 수 있도록
마법 명령에.
하자 tabularly 저장 될 수도 데이터의 예를 살펴
관계형 데이터베이스 인치
여기 하나의 예입니다.
지금, 불행하게도, phpMyAdmin은 여러 단어가 너무 던지는 방법의 편에 서 있죠
그리고 당신의 그래픽,하지만에 불과으로 연마하는 경우
ID 열, 사용자 이름 열 및 해시 열,
이 효율적으로 스프레드 시트이지만, 미리보기 할 일
어플라이언스의 테이블 내부의
우리가 문제 세트 7을 제공하는 파일을 사용합니다.
>> 특히, 우리는 당신에게 표현하는 파일을 제공
사용자의 테이블, 3 열을 가진 사용자를 포함하므로 스프레드 시트,
중 하나는 1부터 시작하고 이후 증가되는 고유 한 ID입니다.
두 번째 열에는 사용자 이름이며, 해커 짓을 분들
pset 2 해커 버전은, 적어도이 사용자 이름의 일부를 인식 할 수 있습니다.
오른쪽에 암호는 있지만 문자 암호 아니야.
그들은 해시 그이야가 밝혀 있도록
데이터베이스에 암호를 저장하는 것은 정말 나쁜 생각입니다.
당신은 아마 웹 사이트의 일부 지점에서 읽었어요
또는 일부 회사의 데이터베이스가 손상된 후 당신이해야하는
비밀번호를 변경, 당신은 일에 환불을 할 필요가
어떤 나쁜 사람이 실제로 결과로 귀하의 계정에 침입 때문입니다.
>> 일반 텍스트로 암호를 저장, 데이터베이스에 암호화되지 않은
완전히 엉덩이 랑이며, 아직 크게 재밌어요
그리고 아주 잘 알려진 회사에 대해 읽기
때로는 언론에서 누구 데이터베이스가 손상되며,
그 부분은 재미 없어하지만, 데이터베이스에 포함 된 사실은 암호화되지 않은
암호 코드 한 줄에 있기 때문에 그대로 바보 같은 짓이에요
당신은 특정 위협으로부터 보호 할 수 있으며, 우리가 여기서 무슨 짓을했는지입니다.
심지어 가짜 약간 CS50 금융 버전
우리는 좋은 측정을 위해 비밀번호를 암호화하고, 그런 사실 아르
$ 1 $ 단지 컨벤션과 함께 이러한 암호의 모든 시작합니다.
그건 그냥, 그들은 암호화하거나 정말 해시 있다는 뜻
이는 편도 암호화 기능과 같은 것입니다
상기 당신은 MD5라는 걸과의 효과를 되돌릴 수 없습니다.
>> 50 그 후이 있다는 사실은 의미 소금 값이
50 한 경우를 제외하고이 암호를 모두 해싱 사용되었다.
당신이 거기 볼 수있는 것처럼 물론 광산,,, HA,
다른 소금을 사용했습니다, 그래서 약간까지 걸려 넘어 갔어 분들
어쩌면 해커 2, 그건 우리 사용한 것에의 결과 있었을 텐데
내 비밀번호는 실제로 같은 다른 다른 해시 때문에
거기에 다른 사용자로.
당신이 기다리고 경우 사실, 모든 주 수 있는지
여기에 당신이 도전되었는지 암호는 뭐하는 암호 있었다
그래서 아무도 너무 복잡한 문제 세트 2의 해커 판에 균열합니다.
사실, malan의는 jharvard 같은이었습니다
하지만 우리가 돌​​아 가면 서로 다른 보았다.
>> 그들이 다르게 소금했기 때문에 진홍의 jharvard에 초점을 맞 춥니 다.
이 알고리즘은 그 방법으로 어리둥절했습니다
값을 해시, 암호화 된 값은 좀 달라 보이는데
입력은 약간 다른 있었지만, 때문에 후드 아래에있는 암호
아직 최종적으로 진홍색했다.
이제 누가 신경이나 쓰겠 어?
음, 우리는 샘플 사용자 이름은 샘플 사용자를 제공하고 있습니다
당신은 실제로 일부를 자신의 암호 해시를 가지고 있도록
고객 CS50 금융에 대해 먼저 코드와 함께 땅을 때.
당신은 내부 데이터베이스, MySQL의 내부에 더 많은 테이블을 구현해야합니다.
당신은 효과적으로 더 많은 스프레드 시트를 작성해야하지만, 우리는 당신에게 하나를 선물하기로 결정
당신이 시작하기 위해, 당신은 볼이 문제 세트 사양
이 테이블 가져 오기의 과정을 안내합니다
또한, 특성 중 일부가 무엇인지 설명
당신은 또한 우리가 코드를 제공하는 볼
해시하거나 비밀번호의 암호화를 처리하려면,
그래서 당신은 MD5 또는 같은 모든에 대해 실제로 무엇에 대해 걱정을 너무 많이 할 필요가 없습니다.
>> 그래서, SQL, 구조적 쿼리 언어입니다.
이 간단 해요, 우리가 pset 7에서 사용하기에있는 언어입니다
아마도 일부 데이터베이스에서 데이터를 요청하는 이후.
데이터는, 다시,이 관계형 테이블, 열 및 행에 tabularly 저장됩니다
하지만 삭제 같은 비교적 간단한 구문을 사용하여,
삽입 업데이트를 선택합니다 우리는 정확히 할 수 있습니다.
우리는 삽입 데이터베이스에서 삭제할 수 있습니다
, 데이터베이스에서 데이터를 검색되는 데이터뿐만 아니라 선택을 업데이트합니다.
우리는이 일을 어떻게해야할까요?
제가 어플라이언스로 진행 보자.
, 내가 http://localhost를를 당겨 보자
있는, 다시, 로컬 기기 자체입니다.
그건 기본 닉네임입니다.
이 날 / phpMyAdmin에 가자.
이 어플라이언스가 이해하기 사전입니다 특별한 URL로 갈거야
그 즉시 사용자 이름과 암호 저를 묻는 메시지가 나타납니다.
>> 평소처럼, 나는 jharvard과 진홍색을 입력거야
하지만 컴퓨터에 관리자 계정 걸 알고 있습니다.
단지 CS50 재정에 등록 jharvard도가 있다는 우연의 일치입니다.
Jharvard은 진홍 입력 저에게 우리가 본 사용자 인터페이스를 제공합니다
순간의 단면 전, 그것은 처음에는 조금 안되네요
하지만 안심,이 도구에 링크의 대부분을 클릭해야 할 수 없어.
당신은 도움이 슈퍼 아르 작은 하위 집합을 사용하여 종료됩니다
그 중 첫 번째는 여기 데이터베이스를 백업합니다.
나는 데이터베이스까지 가면, 나는 데이터베이스를 만들 것인지 묻는 메시지가 있어요 것을 확인할 수 있습니다.
이 효과적으로, 새로운 Excel 파일을 만드는 것입니다.
나는 가서이 강의 한테 전화해서, 난 그냥 필드 데이터 정렬을 무시하는거야.
그것은 그 안에 데이터의 표현과 연관이
나는 만들기를 클릭 할, 그리고 내가 작성을 놓아으로 지금 알거야
왼쪽에 더 데이터베이스는 말합니다없는 곳
난 곧 강의 데이터베이스를 볼 수 있습니다.
>> 지금은 왼쪽, 강의 데이터베이스에서 클릭하면
내 탭을 조금 변경 확인합니다.
나는 구조, SQL, 수출, 수입 및 일부 다른 일이있어.
구조 거의 비어 있습니다.
여기 말한대로 어떤 테이블은 데이터베이스를 찾을 수 없습니다
그러니 테이블을 만들 수 있으며, 주자 가서 테이블을 만들
학생들을 좋아하고 우리가 얼마나 많은 열까요?
모든 학생들이 간단하게하자 및하자의 기록
ID 번호, 이름, 이메일 주소.
>> 우린 가야, 그래서 3 열, 그렇게 간단하겠습니다.
여기에 표시되는 형태는 이제 좀 지저분한, 압도적입니다
하지만 우리가 행하여 행을 가야하므로 정말 빨리가 해주지
이 데이터베이스 고유 식별자에 대한 ID의 이름의 첫 번째 열.
이 값은 정수 여야합니다. 사실 난 길이와 값을 무시할 수 있습니다.
INT가 32 비트 당신이 거기에 입력에 관계없이있을거야, 그러니 공백으로 비워 두세요하게 이예요.
정의 된 기본 값은, 난이 null을 만들 수 있습니다.
저 혼자 떠날거야. 기본값 걱정하지하자.
오른쪽 속성에 여기에 스크롤 보자.
이 흥미 롭습니다.
가자 가서 다소 임의의 ID는 서명되지 않은 있어야합니다 있다고합니다.
의 어떤 음수를 낭비하지 말자.
>> 가, 0 40 억 이동 정도일하자,
그리고, 어디 거기 아직 이러한 필드 중 하나를 터치하지 말자
하지만, 제가 여기 이름을 입력하게
그리고 다른 이메일이었고, 캐치 이메일이 있으므로
및 이름, 분명 정수, 그래서 다른 분야에 이러한 변경의 보자.
이 varchar, 가변 길이 문자를 밝혀
SQL 데이터베이스의 문자열 같다
하지만 변수 길이, 당신은 실제로 사전에 얘기해야
문자열의 최대 길이는, 그래서 다소 임의의로 갈거야
국제 대회 유형 255 자까지.
난 정말 32 말할 수. 나는 1,000 말할 수 있습니다.
귀하의 인구 통계 학적 무엇에 자신을 위해 결정해야 종류를 기반으로
가장 긴 학생의 이름과 해당 번호 또는 좀 더 크고로 이동
하지만 varchar에 대한 좋은 것은 그것이 낭비하지 않을 것만
모든 학생의 이름을 255 바이트.
이 다윗의 경우는 전체 255 바이트를 사용하지 않을거야
하지만, 그 상단 바운드 해, 그래서 난 그냥 대회에서 255으로 갈거야
하지만 우리는 낮은 값이 될 것을 토론, 이메일 주소를 수
단지 255 일치하도록하지만, 다시, 우리는 같은 논쟁을 만들 수 있습니다.
하지만 오른쪽에 여기에 다른 일을 할거야.
>> 어떤 데이터베이스에 대한 강력한 것은 그 무거운를 많이 할 수 있다는 것입니다
당신이나 복잡한 작동합니다.
특히, 난 정말 내 학생의 ID 번호가 무엇인지 상관하지 않습니다.
그것은 단지 데이터베이스에 고유 한 식별자 될 운명
그래서 그 학생의 32 비트 간결 표현이
나는 고유를 식별하는 몇 가지 방법이 있도록
수업 시간에 예를 들어 2, 데이비드, 거기 않도록.
사실,이 AI 상자, 자동 증가를 확인거야
데이터베이스, MySQL은, 나가 떠날 수 있도록
모든 새로 삽입 된 학생의 ID가 될 것입니다 무엇.
난 내 코드에서 신경 필요가 없습니다
그리고 나는 또한 색인 메뉴에서 무언가를 선택하는거야.
색인은 여기 독특한 차있다 드롭 다운
인덱스 및 전체 텍스트입니다.
당신은 어쩌면이 몇 가지가 무엇인지 추측 할 수
하지만 관계형 데이터베이스에 밝혀
당신이 프로그래머 또는 데이터베이스 관리자는 preemptively하게
어떤 필드로 데이터베이스에 힌트를 제공
테이블에서 좀 특별하게이 있습니다.
>> 예를 들어,이 경우에는 그런 ID를 말할거야
그렇지 않으면 프라이 머리 키 (primary key)로 알려진 기본 인덱스가 될 것입니다.
이게 정의가 의미하면 해당 ID가 금후입니다
고유이 테이블의 학생들을 식별합니다.
내가이 제약 조건 또는 인덱스를 순례있어하기 때문에 학생은 동일한 ID가 없습니다.
또한, 어떤이가 나에게 무엇을 것입니다 것은 말할 줄 거예요
MySQL은 그 ID는 특별합니다.
제가 ID에 대해 특히 신경, 해보 게하여 고급 데이터 구조의 마법을,
나무의 어떤을 구축 할 수 있습니다.
일반적으로 뭔가 우리가 몇주 전에보고하지 않은 B-트리를 호출
하지만 이진 나무에 정신이 유사한 다른 같은 데이터 구조입니다
우리가 바라 보았다 시도하지만, 말거야
데이터베이스에이 필드는 매우 중요 내가 아마
거기에 검색 할 수 있도록하려면, 어서 가서 고급을 구축
메모리의 데이터 구조는 검색을 신속하게하기 위해 그 때문에 이상적
그들은 일정한 시간이야 아니면 적어도 가능한 한 가까이
이 선형 검색로 바뀔하지 않도록되는데,이 일이 아니
가장 높은 접근 방식을 수행.
대조적으로, 이메일 주소는 프라이 머리 키 (primary key)되었습니다 수 있습니다.
>> 이론적으로, 모든 사람의 이메일 주소는 당신이 계정을 공유하지 않는 한, 독특한
하지만 문자열 같은 것을 사용하는 것이 좋지 않아
프라이 머리 키 (primary key)로 인생의 목적은 고유 식별하는 것입니다면
maximally 255 바이트를 사용하는 이유는 테이블의 행을가 없습니다
당신은 단 4 바이트로 빠져 나갈 수없는 경우 고유 사람을 식별 할 수
또는 32 비트 정수.
일반적으로, 기본 키 짧고 간결해야
이상적으로 정수 또는 64 비트에서 일어나는 큰 정수, 같은.
그러나 이메일 주소는 고유하고도 데이터베이스의 기능 중 하나한다
나를 위해 고유성을 적용하는 것입니다.
그 자체를 이메일로하더라도, 이메일 주소 옆의 여기의 고유 선택하여
, 화면을 스크롤입니다 제가 데이터베이스 말
저를 믿지 않아.
나 데이터베이스에 삽입하게하지 마십시오
내가 바보가 아닌 오전 경우에도 두 번 동일한 이메일 주소,
내 IFS와 다른 IFS 실제 PHP 코드를 아주 잘
실수로 사용자가 기존 이메일 주소로 등록하게
데이터베이스가 아직 정확성에 대한 방어의 또 다른 레벨입니다
중복 이메일 주소가 테이블에 결국하지 않도록 할 수 있습니다.
>> 이제 대조적으로, 이름에 당신은 아마 그 독특한를하지 않으
그런 다음이 데이비드 또는 예를 들어,이 마이크 스미스 (Smiths), 거기에 결코 수 있기 때문에
데이터베이스에 있으므로 그 하나는 우리가 내버려 둘 거예요.
나는 가서 오른쪽 하단에 저장을 클릭거야
모든 좋은 것 같지만 여기 발견
이 지금 우리가에 너무 많은 시간을 할애하지 않을 부분입니다
구문은 약간 복잡, 우리는 테이블을 생성 할 필요가 없기 때문에
그 자주하지만, SQL 자체가 언어입니다,
문법은있는 바로 여기 제가 강조 표시 한 것입니다.
어떤 phpMyAdmin 정말입니까 것은 당신에게 웹 기반 GUI를 생성합니다
당신은 시간을 절약하고 수동에서 입력 할 필요가 없습니다 수있는
그와 같은 상당히 긴 SQL 쿼리.
>> 당신이 원한다면 즉, 수동으로이 테이블을 만들
그 문제 흑인과 백인 프롬프트 또는에서 phpMyAdmin에서
이 다른 탭을 사용하여이 SQL 탭은 어떤 SQL 쿼리를 입력 할 수있는
이 나에게 잠시 촬​​영했을 솔직히, 원하는
실제로 전체 구문을 기억하기 위해, 심지어 아마도 난 것이다
일부 오타 한,이 도구는 그런 식으로 유용합니다, 또한 유익입니다.
당신은 구문이 무슨 날인지 추론 할 수 있음
그냥 멋진 색으로 그 phpMyAdmin이 추가되어 코딩
우리의 시각적 편의를 위해.
그러나 지금 대신이 작업을 수행 까.
저 상단에있는 삽입 탭으로 이동,이 날 가서 예를 들어 삽입 해 보자
하자의 ID가 말하는 사실 상관 없어요.
이 자동 증가에 간다. 난이 데이터베이스 계약을 가만 두지 않을거야.
하지만 데이비드한다, 내 이메일 malan@harvard.edu해야합니다.
>> 너무 앞서 가서 또 다른 하나 마이크 스미스에 넣어 보자.
나는뿐만 아니라 자신에게 성을 제공합니다
우리는 그를, smith@example.com 수 있으실 겁니다
그리고 어디 다음가요?
글쎄, 바둑을 클릭하면, 봐라 할 수있는 버튼입니다 것 같습니다.
삽입 상위 2 행에서 확인할 수 있습니다.
이것은 실제 SQL 쿼리입니다.
나를 위해 실행 phpMyAdmin 도구, 그건
하지만 최종 결과, 통지, 지금 찾아보기 탭으로 이동한다면,
매우 연상 심미적,이 표에 두 행을 볼 것입니다
표 우리는 pset 7 사용자에게 이전 본
중 하나 인 데이비드 Malan, 지금 마이크 스미스 대상 중 하나입니다.
그러나 분명히합시다, 난 phpMyAdmin를 사용할 필요가 없습니다
그리고 실제로, 당신은 곧 pset 7 코드를 작성 할 것
즉, 행과 같은을 행을 추가 행을 삭제 업데이트 프로세스를 자동화
그래서 여기까지 내가 대신 SQL 탭으로 이동하게
학생들이 곳에서 선택 * 및 유형
이메일 = "malan@harvard.edu."
>> 즉 지금 가지고 가정
다른 분야 사이에 일부 HTML 양식 및 이메일 주소의 사용자 유형,
그리고 목표는 이제 백 엔드 코드를 PHP에
실제로 해당 사용자의 다른 세부 사항을 찾아합니다.
전체 이름은 무엇입니까? 귀하의 ID 번호는 무엇입니까?
이 같은 SQL 쿼리를 작성할 수, 학생에서 *를 선택하십시오
어디에서 이메일은 = "malan@harvard.edu."
그리고 다음 Go를 누릅니다하면, 내가, 그리고 실제로 나는 단지 하나의 행을 다시해야 될납니다.
마이크는 행의 컬렉션으로,이 결과 집합에서 생략
그가 날 같은 이메일 주소를 가지고 있지 않기 때문에 일반적으로 호출됩니다.
>> 자, 다시 여기 pset 7 당신은 관리 도구로 phpMyAdmin을 사용
과 교육학 도구 길을 배울 수
SQL의 세계,하지만 하루의 끝에
당신은 실제 PHP 코드의 내부에 이러한 쿼리를 작성 할 것
그리고 특히 Zamyla의 연습에 계속 이어 지겠습니다
이 문제 집합에 대한 분포 코드의 투어를​​ 예정
우리는 로그인 페이지의 미학뿐만 아니라 당신을 제공 한 곳
그리고 좋은 섹시한 CS50 금융을 말한다 로고,하지만 우리는 또한 당신을 제공 한
생활 좀 쉽게 할 함수의 무리.
우리는 또한 당신을위한 pset의 일부를 작성한
특히 그것의 로그인 부분이 당신에게 대표 디자인의 의미를 제공하는
그 사실은, 예를 들어, index.php를 들어, 컨트롤러를 사용하여
다음 login.php와 같은, 당신은 pset 또한 템플릿 디렉토리가 표시됩니다
즉, 미학을 모두의 의견을 모두 갖추고 있습니다.
그리고 pset 7의 전체 흐름은 될거야
사용자는 브라우저에서 URL을 통해 컨트롤러를 참조하십시오.
그 컨트롤러는 당신이 쓴 PHP 코드가 포함되어 있으며, 내부 사용자의 PHP 코드
SQL의 일부 라인은 따옴표 사이에 중첩 될 수 있습니다
그리고 함수에 전달 우리라는 쿼리를 작성
그 같은 일을 사용하지 않고 사용자가 데이터베이스에 이야기 도움이 될 것입니다
phpMyAdmin 같은 관리 도구입니다.
>> 당신은 PHP 코드에서 SQL 문을 작성 할 수 있습니다
그리고, 결과 세트의 PHP 배열을 돌려
실제로 해당 검색어와 일치하는 행.
그리고 마찬가지로 당신은 삽입 또는 삭제 작업을 수행 할 수
나 업데이트 또는 같은 매우 비슷하다하는 구문
그리고 당신은 배포 코드에서 일부 온라인 참조에서 볼 수 있습니다
그리고 pset에서 정확히 어떻게 그런 일에 대해 가서 자신을 포장.
궁극적으로 우리가 단지 SQL의 표면을 긁는 것을 깨닫기
와 MySQL,하지만, 그것의 힘은 정말 당신을 자유롭게하는 것입니다
당신이 해결하려는 문제에 초점을, 사용 사례 당신은 구현하려면
적어도 초기에, 상당히 많은 신경을 쓰지 않고,
어디에 어떻게 데이터베이스를 저장하고 검색하는 방법에 대해,
페이스 북 자체의 시작은 어디에서이 말 그대로입니다
MySQL을 사용하고 더 많은 MySQL의 서버와 더 많은 MySQL의 서버를 사용하여
그럼 그들이 정말 방법에 대해 열심히 생각을 시작했다 긴 때까지 전
더 효율적으로 일을 저장하는 방법에 데이터를 저장,
사실을 당연한 해봅시다 있도록지라도 인덱스와 고유 제약
등등 그냥 매우 흥미있는 대화가 일
이 모든 결국 될, 그래서 우리가 표면을 긁는 있다는 실현할 수있는
무엇을 결국 당신이나 당신의 사업은 큰 데이터의 꽤 될 텐데.
>> 그 말과 함께, 여기서 종료 해, 우리는 다음 주에 볼 수 있습니다.
[CS50.TV]