>> [음악 연주]
DAVID J. 마란 : 좋아.
다시 오신 것을 환영합니다.
이 CS50입니다.
이것은 주 (8)의 단부이다.
여러분이 알다시피, 우리는 꽤있다 약간의 정규 근무 시간
식당의, 애넌 버그를 포함.
그리고 팀의 일부 친절 최근 일부 사진을 찍었.
그리고 경의를 할로윈, 우리는 우리가 줄 알았는데
오히려이 우리를 붙 잡았다을 공유 놀랍게도 여기에 애넌 버그 홀에서 단지
다른 밤.
귀하의 동급생 야곱은 자세를 취했다 이 사진을하지만, 더 재미있는이었다
페이스 북이고, 계속되는 이후에 일어난 대화.
>> 응답에있는 그의 첫 번째 게시물 그의 사진이이었다.
몇 분 후, 그는 결정 이와 대결까지 하나.
그것은,이로 이동 한 후 계속 다음, 더 재미있게
그의 엄마에 종을 때입니다.
그리고 궁극적으로, 이것이 바로했다 보인다
에 대한 멋진 계략 즉 무슨 일 재생할 수 있습니다.
>> 그래서, 당신이 좋아하면 야곱과 다른 사람을 볼 수,
그들 가운데 신시아 멩이, 사람이다 CS50 존 직원의 장면 뒤에,
이 URL 여기에이 놀이에 머리.
그래서 소동은, 오늘 우리 , 웹 프로그래밍에서이 모습을 계속
프로그램의 실제 작성 즉, 명령 줄에서 실행되지 않습니다
대신에 브라우저 내에서 실행.
>> 아마도 지금, 또는 매우 곧, 당신은거야
구현의 중간에 할 수 자신의 웹 서버, 어떤
웹 프로그래밍과 다릅니다.
pset6에서 웹 서버 모두에 대해 방법을 알고 소프트웨어를 작성하는 것은 촬영합니다
브라우저에서 HTTP 요청, 또는 당신에게서, 인간,
프로그램 텔넷이라고하며 다음 중 그 요청에 응답
HTML 파일을 뱉어함으로써, 또는 JPEG 또는 GIF, 또는 파일의 .php.
>> 그러나 웹 서버와, 그렇지는 않습니다 단지 PHP 파일을 열 예정,
.php 확장자 무엇인가, 그리고 다음 내용을 뱉어.
그것은 수행하기로했다 무엇을 먼저 해당 파일에?
말하자면.
컴파일하지, 우리는 월요일에 말했다 하지만 rather-- 그래서, 그것을 해석.
>> PHP는 해석 언어이고, 그래서 웹의 주요 기능 중 하나
서버, 우리에 의해 구현에도 불구하고, 웹 서버에 대해이 능력이다
오, 알 수 있습니다.
이 .php 확장자 파일입니다.
나를 단지로 전송하지 맙시다 그것과 같은 사용자는 정적 콘텐츠의
오히려 저를하여 줄 읽어 보자 라인, 왼쪽에서 오른쪽으로, 그것을 해석한다.
>> 그리고 수행하려면 그 사람은 본질적으로 의지
기기에서 프로그램에 펀트, 및 컴퓨터 시스템에 많이,
단지 PHP를했다.
즉, PHP의 이름입니다 언어 자체의 인터프리터.
그래서, 조각 우리는 구현할 당신은 무엇을 당신을 위해 남아
궁극적으로, 숫자는 조각, 그중
지원을 구현하는 것입니다 정적 콘텐츠에 대한.
>> 하지만 지금과와 문제는 당신이있어, 일곱 설정
전환을 시작할 것 실제로 PHP 코드를 작성
그 해석됩니다 백 엔드 이야기에
정보를 저장하는 데이터베이스.
그래서 일단 더 잘 이해의하자 이 슈퍼 전역의 커플
그리고 얼마나 많은 전력을 무료로 상자의 나가
PHP와 같은 언어.
당신이하지 않는 것 자신을 구현합니다.
>> 그래서, 우리는 월요일 $ _GET에서 본 이는 전역입니다,
PHP는 글로벌에 대해 어떤 말을 그냥 어디서든 액세스 할 수있는 변수입니다.
그리고 _GET의 $ 안에 무엇인가?
이 안에 무엇인가 우리가 보는 것을 전역?
물론 통계에서 적어도 한 사람은 알고있다.
무엇 _GET의 $ 내부입니까?
그래?
>> 청중 :이 변수이다 당신은 쿼리 문자열에 넣어.
>> DAVID J. 마란 : 완벽한.
이 변수 당신의 쿼리 문자열에 넣어.
그래서, 우리의 오래된 예 우리가했을 때 구글을 재 구현
URL 다음 물음표, 이는 HTTP의 시작을 구분한다
매개 변수는, 우리는 동일한 질문을했다 뭔가, q는 고양이 같다처럼,
자동으로 내부에 무엇을 갈 것입니다 당신을위한 슈퍼 지구가 $ _GET의,
PHP의 때문에, Q의 핵심이다 고양이의 그 값의.
>> 즉, $의 _GET과의 모두 이런 일들은 연관 배열이다,
종류의 해시 테이블, 그 저장 키와 값.
이제, 다시 pset5에서, 해시 테이블은 당신이 구현 수도,
또는 당신에게 있습니다 시도 정말 구현
효과적으로 결합했다 어레이 데이터 구조
이에 당신이 연결할 수 있습니다 값으로 키.
>> 그러나 pset5에서, 값은 사소한이었다.
값은 본질적으로 참 또는 거짓이었다.
사전에 단어인가?
그래서 때 당신은 사과와 같은 단어를 해시 애플은 사전에 있는지,
당신의 체크 기능 아마도 참 또는 거짓 반환.
그래서,이 효과적으로이다 값은 우리가 돌​​아가고.
>> 그러나 우리는 월요일에보고 잠깐, 당신은 확실히 할 수
재미있는 연결 다만 참 또는 거짓보다 값
사과 같은 키와.
당신은 실제로를 반환 할 수 임의의 문자열, 참으로,
그게 무슨 $ _GET 이러한있어 다른 변수는 당신이 할 수 있습니다.
>> 그래서 $ _POST는 정신이 유사 하지만 포스트를 통해 양식을 제출하면,
의 다른 HTTP 방법 신용 카드 같은 것을 사용,
및 개인 정보, 심지어 사진과 같은 이진 정보,
그런 것들은 $ _POST의 내부 끝.
실제로 파일 사진과 이것 저것 같은,
도 아니다 그 다른있다 여기뿐만 아니라 $ _FILES를했다.
>> 그래서, 서버 우리는 너무에 연연하지 않습니다 많은,하지만 그것은 당신에게 액세스를 제공합니다
에 대한 낮은 수준의 세부 사항을 정렬하려면 당신이 사용하고있는 서버 자체.
쿠키 및 세션,하지만, 우리는 효과적으로 지금 볼 수 있습니다.
마지막으로 우리가 구현하는 데 사용할 것입니다 쇼핑 카트의 개념.
슈퍼 간단한,하지만 리콜 것을 우리는 여기에서이 예제를했다
얼마나 많은 시간을 계산 전에이 페이지를 방문했다.
>> 그러나 오늘날, 오히려 단지를 살펴보다 이것의 효과는 이제 열어 보자
크롬의 경위, 이는 당신이 일반적으로 수
마우스 오른쪽 버튼을 클릭하거나 Control에 의해 수행 어디서나 웹 페이지를 클릭
다음 요소 검사를 선택합니다.
아니면 메뉴를 이동할 수 있습니다 우리는 pset6의 스펙에서 설명하는.
그리고 네트워크 탭에 갈거야 여기에,과의 잠시 보게
의 HTTP 트래픽 앞뒤로 것.
>> 내가 먼저 앞서 가자 분명 크롬의 캐시.
그래서 일부는 잘 알고 있습니다 이미이 기술,
우리는 그것을 사용하는거야 여기 디버깅 목적.
이제 우리는 컴퓨터와 과학자들은 시작 예정
디버깅을 위해이 일을 목적, ​​이에
우리는 캐시를 삭제합니다, 일반적으로, 그래서 우리
쿠키라는 것을 제거 할 수있다.
그래서 당신은 아마 일반적으로 잘 알고 어떤 쿠키는 적어도, 또는
그들이 존재하지만, 무엇이다 그들에 대한 이해,
단지 사용자로 컴퓨터, 쿠키는 무엇인가?
그래.
>> 청중 : 그것은, 집게 리아 아니라 조금 아니에요 컴퓨터 과학의 용어에 비트.
그것은 데이터의 조각의 그 웹 사이트는 순서대로 당신에게 보냅니다
당신에 대한 통계를 기록 할 수 있습니다.
DAVID J. 마란 : OK, 좋은.
그래서 데이터의 조각이다 그 서버는 컴퓨터에 넣습니다
그리고 현실을도 일반화 할 수 더욱,이 키 value-- 잘있어,
즉,보다 정확한 점점.
그것은의 조각이다 정보, 데이터의 조각,
서버 수 있음 컴퓨터에 넣어
매우 자주, 서버는 않습니다 이 당신이 누군지 기억하도록.
예, 확률에 따라서 당신은 아마 것입니다
페이스 북과 같은 사이트에 로그인, 또는 Gmail 또는 다른 사람, 이전에
당신은로 로그인하여 사용자 이름과 암호,
그리고 그 후, 일부 번호 몇 분 또는 몇 시간 또는 며칠의,
서버는 기억합니다 당신은, 사실, 로그인.
자, 실제로 무슨 일이 일어나고 있는지?
당신은 확실히 다시 입력하지 않을 때문에 사용자 이름과 비밀번호마다
당신은로 이동 페이스 북에서 다른 페이지.
그래서 그것은 밝혀 쿠키는 대답이다.
>> 당신은뿐만 생각할 수있는 쿠키, 종류의 디지털 손처럼
당신이 놀이에서 얻을 수있는 스탬프 공원이나 클럽이 본질적으로
여기에왔다 나타냅니다 전에, 당신은 이미했습니다
를 들어, 경비원에 당신의 ID를 표시 예, 그 클럽이나 공원
이제 가정한다 이미 인증했다.
당신은 이미에 의해 확인되었다.
>> 염두에두고 그래서, 여기서 카운터를 열 수 있습니다.
난 그냥했다, 내가 앞서 가자, 내 모든 쿠키의 선택을 취소합니다.
그리고 지금 내가 할거야 것은 그냥 좋은 측정을 위해, Shift 키를 누르고,
강제적으로 페이지를 다시로드.
확실히하기 시프트 그 아무것도 캐시되지됩니다.
그리고 여기에 요청이다 그 앞뒤로 갔다.
그래서 여기에 우리가 요청을하고하자 나 여기 아래로 확대하고,이 많은
에 대한 일종의 재미 세부 사항입니다 브라우저가 자동으로이 이제
보냈지 만의보기를 클릭하자 소스는 원시 헤더를 볼 수 있습니다.
>> 그리고 당신은 이미 pset6에 뛰어 한 경우, 당신은 확실히 일을 인식합니다
이 같은, 그리고 어쩌면 일부 여기에 이​​러한 다른 라인,
하지만 오늘은 더 재미있다 내가 아닌 요청에 아래로 스크롤하는 경우
하지만 소위 응답, 이 줄은 아마 익숙한 보인다.
그건 좋은 일이야 당신은 200 OK를 볼 때.
분명히이가 서버에서 날짜와 시간
물건의 무리가있다.
오, 이거 재미있다.
>> 당신이 사용할 때마다 밝혀 적어도이 서버에 PHP,
서버가 뱉어 무엇 PHP 버전은 당신이 사용하고 있습니다.
보안을 위해 실제로 어떤, 목적은, 좋은 일이 아니다.
그러나, 우리는 다시 올 것이다 아마 다른 시간.
그러나 지금은, 육즙 라인 오늘 우리는, 간단히 이들의 일부를 보았다
우리가 찌르고 때 페이스 북으로 생각 그 때의 경위 주위,
세트 쿠키 심기 무엇인가 정보의 작은 조각
컴퓨터에.
>> 이것은 HTTP 헤더 인 그 효율적이다
브라우저를 말하고, 크롬, IE, 무엇이든,
사용자의 브라우저에 헤이 저장소 하드 드라이브 또는 사용자의 RAM에있어서,
이다 PHPSESSID라는 키, 세션 ID의 줄임말,
및 그것의 값을 수득 0vlk8t, 점, 점, 점.
정말 긴 의사 임의의 영숫자 문자열.
그것은, 단지 정말 큰 숫자이다하지만 그것은 문자와 숫자로 인코딩 된 것
그래서 그것의 크기가 될 수 있다는 혼자 숫자보다 더 큰.
그리고, 그런데, 경로 = /, 그 다만이 쿠키가되어야한다는 의미
과 관련된 웹 사이트의 전체,
다만 특정하지 페이지 전부.
그래서이 가상 손 스탬프입니다.
그것은, 서버, 페이스 북처럼의 또는 우리의 경우 어플라이언스,
문자로 기록 된 0vlk8t가 등등, 당신의 손에.
어떤 서버의 주목 일을하지, 그렇지는 않습니다이다
확실히, 내 이름을 저장 비밀번호를 저장하지 않는 방법이있다.
>> 대신 것으로 보인다 의사 랜덤 정보를 기억
아무도 추측 할 수 없도록 내 손 스탬프가 무엇인지.
서버 측에서는 한편, 서버
아마 기억하는 것입니다 데이터베이스 또는 뭔가,
즉 사용자, 미래의 사람 0vlk8t의 손 스탬프를 제공, 점
점,이와 관련된해야 도트 특히 쇼핑 카트, 말하자면.
즉, 지금 가면 다시 여기에이 페이지를 다시로드,
서버는 아는가 방법 내가 한 번 방문인가?
>> 내가 다시 할 경우 또는, 어떻게 서버를 수행 내가 두 번 방문한 것을 알고있다?
그럼 난이 내려 가면 가장 최근의 요청이있는
내가 보낸으니 이제 세 번째 총, 지금 나의 요청을 확인할 수 있습니다.
여전히이있다 여기에, 같은 최대 요청
이전과 같이, 여전히 전체 무리있다 우리가 전에 무시 한 물건,
하지만 맨 마지막 헤더,이 시간, 내가 전에 여기에 있었던 때문에,
프레 젠 테이션입니다 이 가상 손 스탬프입니다.
>> 이로써이 줄을 여기에 설정하지 쿠키 하지만 쿠키 콜론 PHPSESSI = 0vlk8t,
그건 그냥 내 브라우저의 자동이다 그래서이 손 스탬프의 프리젠 테이션
이제 서버, 그것을 실현하는 즉시, 우,이 사용자 0vlk8t 점이며, 점, 점,
지금은 그 또는 그녀가 누구인지 기억할 수 그 사용자와 다시 연결 어떤
정보 내가 원하는, 그리고 모든 그 정보는 귀하가 저장​​ 될 수 있습니다
$ _SESSION의 프로그래머.
>> 내가 진짜 빨리 열 경우에 따라서, 명확하게 gedit에서의 그 실제 파일, counter.php,
내 로컬 호스트 공용 디렉토리에 이전과 같이, 참으로, 그 통지,
나는 결국에 저장 해요 $ _SESSION 인용 맺다 "카운터"
이전 카운터 값 어느 내가 여기까지 우리가이 라인에서 얻을
마지막으로 더한 보았다.
후드 아래에 따라서, 그 모든 쿠키가 있습니다.
그것은 디지털 단지 일종의 손 스탬프, 앞뒤로가는
솔직히 당신은 크롬을 열 경우 어떤 웹 사이트 관리자
당신과 함께, 오늘 방문 슈퍼 높은 확률,
당신은 아마 하나를 보게 될 것입니다 대여섯 쿠키
당신에 의해 기억된다.
>> 그리고 더 나쁜 아직, 경우에 그 웹 사이트 방문중인
모든 광고를 갖는 확실히 오늘 아주 일반적이다
그 광고는 오는 경우 일부 중앙당, 사람으로부터
구글이나 애드워즈 등 그들이 자신의 제품 중 하나를 호출
또는 다른 공급 업체 그 광고를 판매, 흥미로운 무엇을,
그리고 조금 무엇 솔직히 걱정, HTTP의 작동 방식에 대한,
당신이있는 경우에 광고가 포함 된 것입니다 Facebook.com 및 Google.com에서,
및 Harvard.edu, 임의의 숫자 웹 사이트들, 그래서 그러한있어
제공되는 중간 사람이 있다는 것을 해당 웹 사이트의 세 광고까지,
그것은 밝혀 쿠키는 도메인 당입니다.
>> 그래서 만약 당신이 광고에서 나오는 다른 웹 사이트에 같은 회사,
그 회사는 효과적으로 사람을 추적 할 수 있습니다 당신은 모든 사이트에 걸쳐 있습니다.
하버드 알고하지 않을 수 있습니다 당신은 페이스 북을 방문하고 있습니다.
페이스 북은 모를 수도 및 당신은 하버드 대학을 방문하고 있습니다.
그러나 어떤 광고 서비스 해당 도메인 인 경우 그들이 사용하는
모두 Harvard.edu 웹에 존재 페이지와 Facebook.com 웹 페이지,
이 가운데 남자는 확실히 당신이 누구인지 알고 이 쿠키가 공유되는 것이 때문에
에서, 또는 오히려,에 그 중개인 소위.
>> 그래서 우리는이 다시 올 것이다 그 보안 문제,
하지만 많은 정보가있다 언제 당신에 대해 저장되는 당신
대부분의 웹 페이지를 방문 인터넷과 정말로
이 매우 간단한 메커니즘을 줄일 수 있습니다.
어떤 경우, 다음, 발생 당신은 슈퍼 편집증
당신은 크롬이나 IE로 이동하기로 결정 또는 무엇이든과 쿠키를 해제?
어떻게됩니까?
그래?
당신은 당신이이 권리를 짓을했는지 정말 -?
확인을 클릭합니다.
아니, 가서.
>> 청중 : 특정 웹 사이트가 없습니다 그것없이 기능은 페이스 북을 좋아한다.
DAVID J. 마란 : 그래!
그래서 특정 웹 사이트 그냥 작동이 중지됩니다.
그리고 대부분의 웹 사이트에서 이러한 일 즉, 근본적으로, 쿠키에 의존
그들은 당신이 로그인이 특히 에, 그들은 단지 휴식 것입니다.
을 고려하기 때문에 대안 경우 웹 사이트
, 당신이 기억하는 방법이 없습니다 따라서 귀하의 웹 브라우저는 아니다
모든 HTTP로 표현 이 손 스탬프의 요청,
효과적으로 웹 사이트 페이스 북의가는 등
에 메시지를 표시해야합니다 모든 이놈의 시간에 로그인
당신은 페이지를 변경하거나 링크를 클릭하는 특히 좋은 사용자는 확실하지 않다
경험.
>> 이 것을,도이다 그래서 무역 오프 사이.
소동 자, 보자 웹 프로그래밍을하는 것이 당연,
PHP와 같은 언어에서, 당신은 기억 할 수 있습니다 문제의 그 같은 정보 설정
당신이 당신의 자신을 구현하는 일곱 구매하기와 E * 트레이드와 같은 웹 사이트
과 주식을 판매, 당신은 정확히 기억합니다 어떤 사용자는 구입 및 판매하고있다
그 또는 그녀는 누구 이 세션의 방법으로.
그러나 우리는 필요 해요 이메일보다 멋지지 않나요
주변 정보를 유지 시작합니다.
오른쪽?
>> 월요일에, 우리는 신입생 인스턴트 메시지에 대해 이야기 어떻게 해당 웹 사이트의 버전 하나,
년 전에 우리가했던 모든이었다 누구의 프록터 이메일
교내 스포츠 담당 프로그램 명, 성별,
그리고 그들은 주장이있어 여부, 누군가의 기숙사는 사람입니다
교내 스포츠에 등록.
그래서 나쁜 건 아니지만, 그 또는 다음 그녀 이메일을 통해 트롤했다,
스프레드 시트 나 뭔가 같이 할 즉, 모든 조직을 유지합니다.
그래서 확실히 우리 프로그래머로 그 감독관이 작업을 수행 할 수 있습니다.
그리고 SQL에 입력, 구조적 쿼리 언어,
예쁘게하려고하는 C와 PHP 모두 다른,
당신은에 더 많은 손을 다이빙 것 PHP와 문제는, 또한 일곱하지만 SQL을 설정
또는 SQL,이 언어는 그 당신은 데이터베이스에 얘기를 사용합니다.
>> 그러나 데이터베이스는 무엇인가?
그럼 당신의 생각 데이터베이스, 적어도 지금은,
같은 단지 Excel 파일이되고 싶어, 또는 당신은 맥 사용자 번호 파일이 있다면,
또는 당신은 Google 애플리케이션이라면 사용자가 구글 스프레드 시트,
효과적으로 데이터베이스, 또는 정말로 구체적으로 관계형 데이터베이스.
관계형 데이터베이스는 그냥 행과 열이 무엇인가,
당신은 어떤 종류의를 저장할 수 있습니다 이러한 행이나 열에서 정보를 제공합니다.
>> 그러나, SQL에 대한 좋은 무엇과 실제 데이터베이스에 대한뿐만 아니라
스프레드 시트 나 구글 스프레드 시트, 당신이 언어를 사용할 수 있다는 것입니다
실제로 쿼리를 실행합니다 데이터, 데이터를 제거하기 위해 삽입,
심지어 데이터를 찾아 가장 중요한 것은, 당신에게
상당히 수동으로 사용할 필요가 없습니다 만약 일반적 구글 수도로서
이 같은 스프레드 시트.
>> SQL에 그래서, 한 무리있다 근본적인 문이나 조각
기능이 내장되어 있습니다.
이보다 더 많은이있다, 하지만 당신은 엄청난 거리를 갈 수있다
그냥 아는로 이라는 언어
SQL은 적어도 네 가지가 있습니다 당신이 활용할 수있는 문.
>> 데이터를 제거, 삭제, 행을 추가, 삽입,
업데이트, 변경 행 및 선택,
행 돌아와과 즉, 실제로 SQL이하는 일입니다.
너무 행에 전적으로 운영 삽입 또는 제거 할 때,
또는 업데이트는, 또는 당신이있어 무엇을 선택 소위 결과 집합으로 돌아와
행의 배열 등을들 수있다.
테이블에서 행의 무리.
>> 그래서 그 시절에, 심지어 오늘날까지,
당신과 상호 작용할 수 있습니다 명령 줄을 사용하여 데이터베이스,
하지만 사용하는 것이 특히 재미 아니다 이 흑백 스타일 창
실제로 명령을 실행 하고 데이터베이스를 찔러.
그래픽 사용자 인터페이스, 또는 GUI, 틀림없이, 훨씬 더 바람직
그래서 우리가 추천하는 도구 어플라이언스에 당신을 위해 미리 설치
phpMyAdmin을이라고합니다.
그것은 그 총 우연의 일치 이 물건의 이름은, 그 안에 PHP가
그것은 단지 사람들을 의미 누가 자신을이 프로그램을 작성
PHP에 썼다.
>> 그러나 관리 방법에 대해 궁극적으로이다 MySQL 서버와 같은 데이터베이스 서버,
당신이있을 것을, 당신에게로 CS50 어플라이언스에서 수행.
그래서 자세한 내용은 여기보다 거기 우리는 오늘에 대해 신경 쓸 필요가
그러나 키 것은 왼쪽에 그입니다 편은 데이터베이스의 목록입니다
당신이 당신의 컴퓨터에있는 것을, 당신의 CS50 어플라이언스,
또는 최종 프로젝트를 올 당신은 수도 타사, 회사에있다
웹 사이트 또는 웹 서버, 그 당신은 공간에 대한 지불 될 수 있습니다.
그래서 왼쪽은 데이터베이스, 하나의
내가 옆에서 빌린 pset7입니다 상단에 다음 주 PSET, 및
거기가 주목 탭의 무리 중 하나
데이터베이스, SQL, 상태이며, 등 사용자, 수출 및.
그래서 당신은 오래 갈 수있다 방법은 바로 실현하여
그 사용자 인터페이스의 가장 왼쪽 열에있는
그리고 바로 거기에 상단에.
그래서 우리는 실제로 무엇을 할 수 있습니까?
음, 만들기를 시작하자 정보의 비트는 다음과 같이 다음과 같습니다.
>> 다음의 경우 가정, 며칠에있을 것 같은,
당신은을 구현하려는 CS50 금융이라는 웹 사이트,
이 웹 사이트는 당신이 살 수 있습니다 맺다 인용과 주식을 판매하고 있습니다.
그리고 알아낼 것 그 주식의 가격,
궁극적으로 보 겠지만, 야후 금융 이야기로.
어느, 멋지고, 무료 서비스가 당신은 주식 시세를 전달할 수있게된다
구글 GOOG, 그것은 같은 것입니다 구글의 현재 주식을 당신을 돌려 줄
과거 내 가격 몇 분 이상.
>> 그래서 궁극적으로, 그를 사용할 것이다, 사용자 척
구입과 실제 판매하는 가상 돈을 사용하여 주식,
하지만 제일 처음 사용자는 볼 것
그 요청이 로그인 화면입니다 자신의 사용자 이름과 암호.
그리고, 첫 번째 중 하나 pset7에 당신을위한 과제
백 엔드를 구현하는 것입니다 데이터베이스, 스프레드 시트 당신이 경우에,
즉 저장할 것 사용자 이름과 암호
궁극적으로 자신이 소유 한 어떤 주식 및 얼마나 많은, 얼마나 많은 현금 그들이 가지고있는,
그래서 다른 것들의 무리에서 다른 테이블, 또는 스프레드 시트.
>> 그럼 방법이 살펴 보자 첫눈에 나타날 수 있습니다.
나는 다시 갈거야 난 어플라이언스
여기에이 URL에 갈 phpMyAdmin을 로컬 호스트 / phpMyAdmin을
그리고 당신은 그것을 볼 수 있습니다 인터페이스 나 소요
우리가 정확히에 본대로 스크린 샷, 그리고 여기
추가 데이터베이스가 오늘이라는 강의
나 앞서 가자 제 pset7 클릭합니다.
>> 나는 몇 가지 옵션을 갖고있는 것 같다, 새로운 하나, 새 테이블을 작성하기위한,
사용자와 링크, 어느 이미 만든 테이블입니다.
그래서 표는 무엇인가?
Excel을 사용한다면 전에, 당신은했습니다 경우
사용 번호 또는 구글 스프레드 시트, 당신은 창을 열고
당신은 전체 무리를 얻을 수 행과 열을,
하지만 당신은 일반적으로 워크 시트를 하단, 또는 별도의 탭을 따라.
각 생각할 수 테이블로 워크 시트
그래서 데이터베이스가, 궁극적 인 하나 이상의 테이블의 조합, 하나
이상의 워크 시트에 일반 스프레드 시트의 세계.
그래서 내가 가서하자 이 워크 시트를 클릭
내가 미리 만들어진 것을라는 사용자, 일명,
데이터베이스 테이블.
그리고 여기 아래로 스크롤하면, 내가 조금 축소하자,
이 phpMyAdmin을이 말하고있는 것입니다 우리는 지금이 테이블의 내부입니다.
처음에는 조금 혼란 눈 UI가 아니기 때문에
세계에서 가장 예쁜 것,하지만 흥미로운 것은 여기이 부분이다.
ID, 사용자 이름 및 해시.
>> 사전에, 당신은 손으로있을거야 이 문제에서, 일곱 설정
우리는 당신이 슈퍼를 포함하는 파일을 제공 소형 데이터베이스 테이블, 실제로 빌린
해커 판에서 의 문제는 두 설정
이는 내부 여섯 행이 있습니다.
모든 벨린다에 대한 하나의 길 아래로 Zamyla 하나에,
그 중 왼쪽 알 사용자 이름은 같은 고유 ID입니다
둘, 셋, 넷, 다섯, 여섯, 정수, 다음 오른쪽에 해시입니다.
>> 그리고 확률은, 경우에, 당신은하지 않았다 해커 에디션 문제는, 두 설정
그러나 해시 암호화처럼 그냥 몇 가지주의와 암호를 입력합니다.
그래서, 당신은 여기에 무엇을 참조 여섯의 암호화 된 버전
문제에서 우리의 암호 2의 해커 버전을 설정합니다.
이제 왼쪽에 그냥 몇 가지 GUI 물건입니다, 이 행을 편집이 행을 복사,
이 행을 삭제.
>> 하지만 흥미 롭군요 이제 이하이다.
실제로 시작할 수 있습니다 이 테이블 실험.
그래서 내가 가서 SQL을 클릭하면 탭,이 큰 텍스트 상자를 얻을.
그리고 이것은 우리가가는거야 어떻게하지 실제로 코드를 작성할 때 그것을 할.
명확하게, phpMyAdmin을 그냥 도구입니다
우리가 데이터베이스 찔러 보자 것 우리가 쿼리를 실험 할 수 있습니다.
>> 그래서 예를 들어, 가정 나는 정확히이 일을 실행합니다.
그 중 하나를 선택, 키워드 나는, 이전, 스타를 언급
이는 모든 표시 테이블의 열.
어떤 테이블에서?
음, 사용자.
그리고주의 사항이있다 SQL 이상한 규칙
위치를 실제로 사용 다시는, 일반적으로, 틱
단일하지 따옴표를 두 번하지 따옴표 당신이 테이블 이름에 대해서 이야기 할 때,
그래서 다시 시세가에 일 키보드의 왼쪽 상단 가장
가능성이 높습니다.
>> 그래서 내가 지금 가서 보자 그냥 혼자 떠나
아래로 스크롤하고 클릭 이동을, 우리는있어 실제로 같은 일을 보게 될 것.
우리는 SQL 쿼리를 실행 한 선택 모든 스타를 말하는
테이블에서 사용자를 호출하고, 당신이 돌아 가야하는 것은 이것이다.
궁극적으로, 우리는 할 수 있습니다 코드에서 그 같은 일을,
하지만 지금은 모두 내가 원한 브라우저에서 볼이었다 않습니다.
음의 뭔가를 해 보자 조금 다른.
나를 SQL 탭으로 돌아 가자 그리고 그냥 무슨 그런 말을하자?
Zamyla는 그녀의 전부를 잃었다 돈, 따라서 그건
우리에게 시간은 사용자로 그녀를 삭제합니다.
그녀는 더 이상 로그인 없어요.
>> 그래서보고 나서 ... 삭제 말할거야 물론, 총액을 유지
일관성을 위해 삭제 여기서 사용자의.
그래서, 우리는이를 가질 수 있습니다 술어, 또는 이들
내 진술의 끝에 예선, 어디서 어떻게 Zamyla을 삭제할 수?
그녀의 이름 Zamyla으로, 그래서 열, 열 중 하나
이름, 어디 이름 = "Zamyla"했다.
그리고 여기 두 번 사용 따옴표 또는 작은 따옴표,
당신은 다시 때 틱 사용 예를 들어, 이름에 대해 이야기,
테이블이나 필드.
그리고 나를 여기로 이동을 클릭하자.
그리고 지금, 웹 페이지는 조금 초조 것.
>> 또는, 당신은 정말 삭제 실행하고 싶어 이름은 Zamyla에 해당 사용자의?
예.
그래서 지금, 우리는 나의 테이블로 돌아 가면 클릭 사용자들에 의해, 흠 것을 알 수 있습니다.
나는 놓 쳤어.
그리고 사실, 가지 너무 빨리 떨어져 클릭
당신도 보지 않았다 아마 빨간색 오류 메시지.
내가 잘못 무슨 짓을 한거야?
청중 : 당신은 필요하지 않았다 그녀의 이름을 활용합니다.
DAVID J. 마란 : 그래 그녀의 이름을 대문자로
하지만 그녀는 사실 username-- 바로, 몇 실수를?
하나는, 그녀의 이름은 zamyla, 소문자 Z,
및 열 이름은 사용자 이름은, 하지의 이름을, 그래서 다시이 작업을 수행 할 수 있습니다.
내가 가서하자 사용자가 어디에서 삭제
사용자 이름은 인용 맺다 "Zamyla을"동일합니다.
좋아?
그래서 좀 더 나은 보인다하자 저 아래로 스크롤 이동하고 [Go]를 클릭합니다.
아직 갈 것 확실하게 나에게 소리.
나는 예를 클릭하고, 지금 우리가 볼 수 솔직히이 정말 일어
빠르고 미만 두 번째 확실히,이
정확하게 실행있어 쿼리입니다.
확인하려면, 나 사용자를 클릭하자 실제로 지금 Zamyla 사라 졌어요.
이제 반대를 할 수 있습니다.
게이브가 싶어한다고 가정하자 웹 사이트에 등록하십시오.
SQL 쿼리는 무엇, 무엇이다 나는 게이브를 추가 입력 할 수 명령?
글쎄 그것은 꽤 간단합니다.
사용자에 삽입하고, 지금 그것은 조금 애매 가져옵니다.
나는 서버로 지정해야 내가 할당 할 필드.
난 정말 상관 없어 무엇 게이브의 ID 수는, 그래서 나는 그것을 건너 뛸거야.
내가 대신 말을하려고 해요 사용자 이름, 해시하고
값은 내가 넣을 게이브있을 것입니다.
그리고 그의 해시, 나도 몰라.
그래서 지금, 내가 갈거야 할 수있는 큰으로 그 둡니다.
우리는 다시 올 것이다 문제는 설정에서 그
당신이 실제로 그렇게 할 방법에 대한 사양.
>> 그래서 다시, 구문, 알 수 있습니다.
테이블 이름에 다음을 삽입 필드의 괄호 목록
열 당신은 추가 할 에 값하고 단지를
똑같은 순서는 왼쪽 추가 할 값의 권리,
그리고 그것은 단지 때문에 포장 것 텍스트는 조금 깁니다.
그래서 지금 나 이동을 클릭 할 수 있습니다.
한 행 삽입.
지금은 돌아갈 경우 사용자, 어떤 일이 흥미
만 게이브는 지금하지 것입니다 데이터베이스, 자신의 ID 분명히 무엇인가?
>> 글쎄 그것은 일곱입니다.
왜 나는 그것을 추가하지 않은 칠 때?
이 그래서, 너무, 중 하나입니다 기능은 데이터베이스의 얻을.
의 많은 기능이 내장되어 있습니다.
이 때 밝혀 이 테이블을 생성,
나는 자동의 사전 이러한 방법으로 ID를 할당
그것은 증가하는 것이.
그래서 당신은, 주위를 찌르고 한 경우 어떤 페이스 북 ID 보았다
수는, 정말 아니에요 요즘 것은, API로,하지만 페이스 북을 할 수
응용 프로그래밍 인터페이스, 이에 당신은 다시 얻을 수 있습니다
데이터의 전체 무리에 대한 자신, 당신의 친구에 대한,
당신의 연결.
그리고 무엇을 사용하는 것은 친절하기 멋진의, 그 시절에,
조회 무엇이 당신을 페이스 북 ID 번호였다.
마크 주커 버그의, 예를 들어, 세이며
그는 사이트의 저자 이후.
이야기가가는대로, 그는 창조 두 개의 테스트 계정, 사용자가 하나, 둘,
이는 그 후 삭제.
그리고, Zuck는,로 그의 이름입니다 페이스 북, ID 번호는 세
우리 모두는 많은 번호가 보다 큰 세 요즘.
사실, 어떤 시점에서 페이스 북은 멀리 이동
심지어 int를 사용에서하는 32 비트 값을 사용하여, 인
다음 단계 위로, 기본적으로 오래 오래 그렇게
그들은 수용 할 수 있음 등록 더 많은 사용자.
그래서 재미 작은 역사적 사실.
>> 그래서 그건 단지 기본 문법가 어떤
우리는 몇 가지를 실행할 수 있습니다 쿼리, 그러나 우리가 실제로 할 수있는
SQL과 무리 더 일을.
그리고 당신은, 궁극적으로 볼 수 있습니다 문제에 일곱 설정
당신은 할 필요가 있음을 디자인 결정의 수,
그들 사이가 될 것입니다 어떤 데이터 유형을 사용합니다.
그러니 그냥 C에서 같은 데이터가 있습니다 데이터베이스의 종류, MySQL은 같은,
데이터 유형은 당신이 선택해야 에서 여기에이 필드를 포함한다.
CHAR, VARCHAR, INT, 큰 INT, 소수점 날짜와 시간, 그리고 많은 다른 사람.
그럼 실제로이 작업을 수행 할 수 있습니다.
의 우리가하지 않았다 척하자 손 당신이 사용자의 테이블
나를 위해, 가서 만들 수 있습니다 자신의 강의에 database--
실제로 내가 가서 삭제하자 난 이미 여기에있는 테이블
그래서 우리는 실제로이를 만들 수 있습니다.
아차.
나는이 드롭거야 테이블, 그리고 지금 난
다시 갈 여기에 데이터베이스를 강의,
나는 테이블을 만들거야 라는 사용자와하자의
단지 세 개의 열을 처음에하고 이동을 클릭합니다.
>> 지금은, 대부분의 경우, 다시, 이것은 그냥
이라는 그래픽 도구를 사용하여 phpMyAdmin을, 그리고 우리는 지금 무엇을하고있는
테이블을 만드는 것입니다.
그래서이 파일을 것 같다, 새로운, 새로운 Excel 파일을 생성.
그래서 나에게 몇 시죠 질문은,에서가, 왼쪽에서 오른쪽으로
첫 번째 컬럼의 이름은 무엇입니까, 다음, 두 번째 열의 이름
세 번째의 이름.
그럼이를 다시 보자.
ID 다음 사용자 이름, 하나 다음 해시는 다른이었다.
그래서 데이터 유형은해야 ID와 같은 필드에 대해 지금 할 수?
>> 여기서 데이터 타입의 전체 목록은 데이터베이스에서 사용 가능한,
그리고 지금은 그냥 INT로 가자.
32 비트 값, 내가하지 난 현실적으로 생각
이상 40 억을해야 할 것 내 계정의 사용자, 내 서비스에,
그래서 이동을 지키려고 다음 질문으로.
나는 지정하지 않을거야 길이 또는 값,
그것은 해당 아니다 여기에 int와는, 그 자체.
그리고 지금은, 지정할 수 있습니다 분명히, 기본
사용자가 지정한 않을거야 값.
정렬, 나는 그게 뭔지 모르겠어요.
속성.
이제 우리는 실제로 수행 디자인 결정이있다.
그래서 모든, 여기에 몇 가지 필드가있다 어느 적용하지만, 서명되지 않은
단지 무엇을 의미?
그건에게 INT는해야합니까?
그냥 음이 아닌.
그래서 최대 0이어야한다.
아니, 때문에 확인하지 않을거야 나는 모든 사용자가 ID를 갖고 싶어,
그것은 null 일 수 없습니다.
그리고, 우리는 좀 더에 도착 이 같은 재미있는 디자인 결정.
우리는 순간이 다시 올 것이다 데이터베이스의 그러나 또 다른 특징
, 당신이 말할 수 있다는 것입니다 데이터베이스 서버는 진행
자신을 최적화, 당신을 RAM 및 하드 디스크 공간,
즉, 선택하고, 삽입 등 삭제 및 업데이트가 정말 빠르다.
pset5 명암이.
>> 당신이 뭔가를보고 싶었다면 당신의 해시 테이블에있는
당신은 데이터베이스와 같은 생각 모든 작업을 수행했다 누구
당신의 해시 테이블 빠르게 만들기위한 작업.
그것은 분명, 같은 당신입니다.
오른쪽?
당신은 모든 시간 벌금에 넣어했다 해시 함수를 받고, 일을 조정
바로, 그녀를 얼마나 파악 많은 버킷해야합니다.
>> 그러나, 다시, 좋은거야 대한 데이터베이스입니다
당신은 모든 펀트 다른 사람들이
누가 생각이나 했 무엇을위한 통해, 그리고
나는 아래에 여기에 말을하려고 해요 지수는 내 ID 필드에 그
의 기본 방법이 될 것입니다 이 데이터베이스에서 사용자를 식별.
나는 생각하지 않을거야 Zamyla으로 Zamyla의,
내가 생각하는거야 그녀의 숫자 6으로.
>> 이유는, 아마도, 더 잘입니다 직관적으로 모델을 생각합니다
사용하여 개별 행의 각 대신 무언가의 수
Zamyla 같은 문자열, 같은 게이브 또는 정지 이상 문자열이나?
그래?
>> 청중 : ID가 고유?
DAVID J. 마란은 : 다시 말?
청중 : ID가 고유?
DAVID J. 마란 : ID 독특하지만, suppose--
일반적인 경우와 사용자 이름과,​​ 가정
또한 만있을 수 있다고 말했다 하나 세계에서 Zamyla, 단 하나의 게이브.
나는 고유성을 부과 할 수 내가 원하는 경우, 너무, 문자열에 제약 조건.
그래서 나쁜 생각.
>> 청중 : 더 안전한.
>> DAVID J. 마란 : 더 안전한, 왜?
청중 : 당신은 말할 수없는 사용자의 등이다.
DAVID J. 마란 : OK, 당신 어떤 사용자 말할 수 없다
그래서 거기에있는 것입니다 그것은 정보 보호 측면,
특히 경우 ID가 어쩌면 URL에 나타나는.
그래서 물론, 그, 작업 종류의 수는 너무.
다른 생각?
그래?
>> 청중 : 그것은보다 쉽게 INT에 대한 작업을 수행합니다.
DAVID J. 마란 : 그건 진짜 키커입니다.
그것은 단지 더 효율적 또는 컴퓨터에 쉽게,
정수에 대한 작업을 수행 할 수 있습니다.
오른쪽?
INT는 보장된다 32 비트를 수 Zamyla 반면,
가브리엘 몇 자입니다 몇 가지 더 자입니다
데븐 포트는 정말 긴, 그리고 그것은이다 사용하는 것이 특히 효율적이지
문자열 값을 비교하고보고하기 필드 및 업데이트 필드,
당신이 멀리 얻을 수 있다면 하나의 정수와.
그냥 32 비트.
사용자 이름 그래서, 너무, 이런 식으로, 고유 할 필요는 없습니다,
그들은 아마도 하겠지만 수 있으며, 심지어는 이러한 방법으로 너무
사용자가 허용 될 수있다 자신의 이름을 변경합니다.
>> 그럼 이제로이를 떠나 보자 사용자를 식별하는 주요 수단.
이 데이터베이스를 말하고있다 가서 자신을 최적화
그래서 ID에 표정 업 슈퍼 빠르다.
AI, 끔찍하게 그냥 이름 자동 증가를 의미,
이 체크 인 우리가 확인해야 상자
에 ID 필드 지정하기 자동으로 나를 위해 업데이트,
다음 나는 갈거야 여기에서 오른쪽으로 스크롤
솔직히 난 정말 관심이 아니에요 이러한 필드 더있다.
물론 오늘은.
>> 그래서 여기에 다시 갈거야, 첫 번째 열,에
나는 사용자 이름을 지정해야합니다 해시, 및의하자
에 최소 초점에서 지금은 두 번째.
INT는 아마 옳은 아니다, 그래서 아마 더 의미?
>> 청중 : 텍스트입니다.
DAVID J. 마란은 : 다시 말?
청중 : 텍스트입니다.
DAVID J. 마란 : 텍스트?
좋아, 내가 텍스트를 들었다.
그 밖의 무엇?
우리는 종류의 선택의 무리가 자연의 텍스트됩니다.
그럼 언제, 왜, 어떻게 당신은 이들 중 일부를 사용?
문자 음, 반대로 무엇을하기를 수도 생각, 하나의 문자가 아닙니다.
그것은 문자의 특정 숫자입니다.
우리가 알고 그래서 만약 모든 사용자 이름은 8 자처럼해야합니다,
이전에 공통으로 사용되는 컴퓨터 시스템은, 내가 문자를 말할 수
그리고 난 여기에 8을 말할 수 있습니다.
세 번째 열이 될 때이다 해당 테이블을 생성 할 때.
>> 하지만 그 성가신 가지의 어떤 사람들은 수 있기 때문에
더 긴 이름을 갖고 싶어 8 자 이상,
어떤 사람들에게 할 수 있습니다 짧은 이름을 가지고,
왜 자신을 커밋 특정 번호로?
왜 변수가없는 문자의 수와 단지
말할 그 이름의 최대 길이 , 나는 64 자처럼 모른다.
나는 친구의 생각 할 수있는 사람 64 자보다 이름이 더있다,
즉, 너무 짧은 경우에도 당신은 할 수 확실히 임의의 볼륨을 높이세요.
>> 그래서 VARCHAR은 변수입니다 문자의 수.
텍스트 나쁜 본능 아니며, 솔직히 그런 종류의 그것이 말하는 것을 수행,
그러나 텍스트 필드가 될 수 적어도 65,000 바이트있다.
즉 대한 아마 잔인한 필드, 그리고 사실, 그래, 65,535.
즉 대한 아마 잔인한 이름, 우리가 일반적으로 스틱 것이다,
텍스트에 대한 VARCHAR에와 너무 필드와 해시.
해시, 알고 보니, 우리는 할 수 있습니다 VARCHAR뿐만 아니라 나처럼 뭔가,
그러나 우리는 오늘을 집중하지 않을 것이다 이 암호화 및 번호
우리가 실제로 수도 그 길이에 사용할.
>> 그러나 나에게 맞는 아래로 스크롤 할 수 있습니다.
당신은 하나를 가질 수 테이블의 주 인덱스,
하지만 이러한 사항을 적용하고 싶어, 이제, 사용자 이름, 당신은 말할 것?
무엇 username을해야하는 모호한 기준으로 이러한 네 가지 옵션의 이해?
그냥 자신의 이름으로?
>> 청중 : 고유.
>> DAVID J. 마란 : 그래서 독특한, 맞죠?
그래서 그것은뿐만 아니라 수 있다고 밝혀 만약 사전에 데이터베이스 말해
이 기본 방법 의 필드를 식별하는 단계를 포함한다.
또한 말씀이 있습니다 고유 한 분야가 될 것.
그것은 수 없을거야 나는에 의존하는 것은,
하지만 난에 데이터베이스를 싶습니다 본질적 경우 조건, 그래서이
제가 지금까지 등록을 시도하는 경우 같은 이름을 가진 두 명의 사용자,
데이터베이스 플랫 아웃 저를 보자 않을 것입니다.
나는 약간의 추가 코드가있을 수 있습니다 많은 방지 PHP에서,
그러나 데이터베이스 역시 보장 할 그 일은 결코 일어나지 않지있다.
>> 지금, 옆으로, 특히 한 당신은 최종 프로젝트에 대해 생각,
마음의 IT 인덱스 및 전체에 유지 텍스트는 실제로는 매우 유용합니다.
더 큰 데이터베이스,하지에있는 경우 수십,하지만 수백 또는 수천
필드 또는 수백만, 당신은 할 수 또한 사전에 데이터베이스 말해
이것은 내가 갈거야 필드 많은에서 검색합니다.
아마 그 이름, 당신이 있다면 아마도 바이오,의
페이스 북과 같은 웹 사이트를 만들고 그 사용자의 허용 단락을 가지고
당신이 원하는 경우 저장하고 사전 데이터베이스 말해
나는이 분야에서 검색 할거야 많이 있지만, 반드시 고유 아니다
당신은 내게 인덱스를 생성 지정할 수 있습니다.
또는, 당신은 또한 말을 나를 수행 할 수 있습니다 명령과 같은 임의의 검색의 종류
또는 제어 F, 당신 같은 워드 프로세서 파일에있을 수 있습니다,
그래서 당신은 임의의 문자열을 볼 수 있었다 이 분야에서 또는 문자열.
즉, 우리가 있어요 학기 지점
당신은 걱정하지 않아도 어디에 얼마나 효율적으로 일을 구현합니다.
당신은 단지에 대해 알아야 할 사항 디자인 결정은 그래서 당신이있어 확인하기
에 적합한 도구를 사용하여 기능을 활용하기 위해 무역
다른 사람들은 당신을 위해 구축했다.
그래서 다시 정리해 보면, 기본은해야 하나가, 당신은 단지 하나를 가질 수 있습니다
그것을 당신이 커밋하고있는 일이 고유 필드를 식별에 사용.
고유는, 정신 단지와 유사하지만 당신은 가끔 그것을 사용할 수 있습니다,
하지만 당신은 데이터베이스를 부과 할 수 있습니다.
지수는 선제 적 의미 미래의 일을 속도
내가 검색 할 수 있도록 이 분야에서 일.
그리고 전체 텍스트에 대한 일반적 단락, 또는 에세이, 또는 대형 기관
어디를 텍스트 또한이 할 수 있습니다
스타의 동등한 같은 와일드 카드.
오른쪽.
>> 그래서 가지였다 한 번에 모든에 많은.
우리는 증류 할 수 있는지 보자 이러한 기능의 몇 가지
다음 뭔가를 구축 매우 간단하지만 강력한.
다른 중에서 그래서 디자인 결정 당신이있어
궁극적으로 함께하는 것입니다 것 스토리지 엔진의 라인.
그리고 나 그냥이의 언급을 만들어 보자 최종 프로젝트의 기대에,
그리고 기대하자 얘기가 있지 아니의이 작업을 수행 할 수 있습니다.
의이 작은를 구축하자 첫 번째 응용 프로그램.
내 터미널에 갈거야 창, 여기에은 아니다
만 counter.php, 우리가 지금거야 로 더 이상 밀접한 관계를 제거하는,
그러나 우리는 모든것을 디렉토리 및이의
정신이 매우 유사 할 것입니다 당신이 문제에 볼 수 있습니다 무엇을 일곱을 설정합니다.
>> 그래서 우리는 세 개의 디렉토리를 가지고 공공 및 템플릿을 포함하는
정확히 우리가 어디에서 중단 우리의 전체 MVC 패러다임 월요일.
그리고 다시 정리해 보면, 공공 장소에서 갈 것입니다 나는 사용자가 원하는 파일을 실제로
V에 방문 할 수 URL을 통해 브라우저.
템플릿.
우리는 템플릿에 무엇을 생각하십니까?
물건의 종류는?
없었다 많이하지만 몇 월요일에 적어도 파일.
그래.
>> 청중 : 머리글과 바닥 글?
>> DAVID J. 마란 : 머리글과 바닥 글.
그래서 우리는 오늘, 너무 비슷한있다.
우리는 몇 가지 더 많은 파일을 가지고 있지만, 바닥 글은 내가, 내가 볼 헤더를 참조
다음 다른 파일의 무리.
그래서이는 것과 동일합니다 이는 V MVC보기,의,
다시 될 것입니다 조금 더 문제의 클리어, 일곱 설정
하지만이 난 그냥 폴더 나의 미학을 많이 넣어.
내 HTML, 내 양식을 많이 많이.
한편, 포함, 다른입니다 이 세 가지 파일이있는 디렉토리
과의이를 잠깐 살펴 보자.
>> 나는 앞서 갈거야 과의 config.php를 엽니 다.
그것은 훨씬 밝혀 용어에서 이전과 같은,
당신은 날카로운 포함 pset7와 CS50 도트 시간.
오늘의 예에서, 당신은거야 그에 해당하는 작업을 수행합니다
요구 문 효과적으로
이러한 여러 줄이 포함되어 있습니다.
그래서 명확하게,이입니다 파일이 config.php를 불렀다.
그리고 그것은 무엇을하고 있는지 알 수 있습니다.
그것은 분명히 뭔가를하고 있어요 수수께끼, 켜기 오류 메시지
브라우저에서 그들을 볼 수 있도록.
그것은 분명히, 그럼, 두 개의 다른 파일을 필요로
그래서 이것은, C의 사용법 #include처럼 그리고 우리가 봤어이 하나,
우리는에 의존 한,이 켜집니다 기능이 좋아하는 쇼핑 카트.
>> 이 쿠키 의지를 의미한다 앞뒤로 전송.
왜이 재미있다?
음, 우리는이 돌아갈 경우 디렉토리 예를 들어, 열,
constance.php.
주의 PHP 지원 상수를한다는 것을, 그것은 아주 C.에서의 #define처럼 아니다
대신, 문자 그대로 정의라고, 통보
나는 미리 저장 한 것을 이 파일의 네 개의 상수.
오늘의 데이터베이스에 대한 하나에 비밀번호, 사용자 이름에 대한,
서버의 이름.
그래서이 사실이 될거야 문제에 꽤 비슷한 일곱을 설정합니다.
그리고 마지막으로, 이것은 난 곳이다 몇 가지 좋은 기능을 얻을 것
직원, functions.php에서 우리가 작성한 코드의 무리입니다
나는이 중 일부를 훔쳐 문제가 일곱 설정에서
오늘, 그 사물의 무리를 수행 그리고 그냥 그들 중 하나를 살펴 보자
특히.
여기에이 기능, 쿼리는 될 것입니다
우리가 전화 PHP 함수 SQL을 실행하기 위해.
조금 전에 우리가 사용하고 phpMyAdmin을,하지만 그건 단지
학습 목적의 종류에 대한 및 진단 목적
및 데이터베이스 세트를 잊고.
때 당신이 실제로 사용하세요 데이터베이스, 당신, 인간,
분명하지 않을 수 있습니다 웹을 인상 할
페이지마다 누군가가 등록합니다.
당신은 코드를 작성하는거야 그 삽입과 수요에 사용자를 삭제
우리는이 작업을 수행 할거야 조회 함수의 방법으로.
지금 아래로 스크롤하면, 거기에 몇 가지 더 기능이 될 것이다.
리디렉션에 가고 우리가 쓴 기능을 할 수
당신을 위해은을 수행 할 수 있습니다 다른 URL로 사용자에게 보내
및 렌더링하는 것은 매우처럼 기능입니다 우리는 실제로 렌더링하는 월요일에보고
템플릿,하지만 더 많은 이들에 를 통해 pset7 자신의 거리의 형태로.
지금은 가서이 작업을 수행 할 수 있습니다.
>> 내 강의 테이블로 이동하자 현재 거기에 아무것도 볼
여기에 아직, 나 또한 가자 내 공개 디렉토리에
하나의 파일은 index.php를,있다.
이 파일은 매우 단순하게 나타납니다 순간, 그냥 다음과 같습니다.
매우 많은 방법 같은 우리 월요일에 중단.
나는,이 파일을 필요로 해요 에 config.php를,
이 디렉토리를 포함하는 점 점에, 부모님,
다음 그냥이 파일을 렌더링합니다.
그래서이 파일은 무엇입니까?
>> 의 내 템플릿에 해주시죠 form.php, 우리는이를 볼 수 있습니다.
슈퍼 간단한, 분명히이 양식입니다 $ _GET이나 $ _POST로 제출하는 것.
빠른 전성 검사.
말 그대로 시각적으로 파일을 검색 할 수 있습니다.
방법은 포스트 같습니다.
그래서 같은 URL을 사용하지 않을 것 구글은 숨기기 종류의 것,하지
뒤에 정보 장면과 그것을이다
제출 예정 register.php라는 파일,
그리고 그 파일의 우리는 아직 작성하지 않은
그러나이 것입니다 이 인처럼 보이게하려고합니다.
>> 나는 별도의 페이지로 이동하는 경우이다 어떤 로컬 호스트 / index.php에는 것 같습니다.
그리고 또, 서버의 다만 index.php를 가정.
입력합니다.
우리가 어디서 왔는지 그래서이다 에서, 그리고 내가하고 싶은
일을 입력 할 수있다 다윗처럼, 다음
내 전화 번호를 말할 것이다 지금은 617-555-1212, 등록
지금 register.php를 찾을 수 없습니다.
그래서 나는이를 구현해야합니다.
그럼 빨리 채찍하자 이 최대 뭔가.
내 공용 디렉토리로 가자 및 register.php의 gedit를 수행,
지금은 앞서 갈거야 및 우리는 월요일에했던 것처럼, PHP 모드를 시작,
과 가까운 PHP의 태그 및 의는 몇 가지 작업을 수행 할 수 있습니다.
>> 그래서 하나, 나는에서 알고 그 양식을 작성하는 데,
나는 다음을 확인하도록.
이 비어있는 경우, 어떤 사용자 다음, 이름 필드에 입력
뭔가 말을하려고 해요 같은 이름을 누락 죄송합니다.
한편,이다, 사과 하지 PHP 일에 내장,
우리가 쓴 함수의 pset7에 functions.php에
그래서 당신은에 액세스 할 수 있습니다.
다른 필드의 경우 다른 빈, 번호가 다음 난
사과 예정 사용자와 누락 된 번호를 말한다.
이 파일을 저장합니다.
>> 이제 브라우저로 돌아 가자, 다시 시도 위로 포럼으로 이동합니다.
등록합니다.
확인을 클릭합니다.
아무것도 잘하는 일이 없습니다.
나는 오류 메시지가 표시되지 않았다.
하지만 그 대신하다면,이 해 다시 보자 페이지는 아무것도 제공하지.
젠장.
그 작업을 수행합니다.
등록합니다.
내가 잘못 무슨 짓을 한거야?
빈의 경우, $ _POST 이름.
다시 말해?
>> 아, 물론.
나는 가장 중요한 부분을 잊고있는 ( "../는 / config.php 파일이 포함되어 있습니다.")이 필요하다.
나는에 액세스 할 수 있어야 , 기능을 사과하는
아무 일이없는 이유입니다.
이 기능은 실제로 존재하지 않습니다.
그럼 다시 시도 할 수 있습니다.
의 페이지를 다시로드하자, 회원 가입을 클릭합니다.
확인을 클릭합니다.
거기입니다.
그래서, 출력 우리는있어 여기에 보는 것은 결과입니다
의 사과 전화 기능, 슈퍼 간단한,
그리고 그것은 단지 출력합니다 어떤 나는 인수로 제공합니다.
>> 좋아, 그럼 협력 할 수 있습니다.
의 내 이름을 제공하자 다윗처럼, 등록,
번호를 확인하자 누락 그것도을 제공합니다.
617-555-1212.
등록합니다.
확인을 클릭합니다.
그래서 모두가 지금 잘 단지에 불과하다 흥미가 일어나고있다.
그래서 이제 좀 더 만들어 보자 흥미로운는 다음과 같이 일어난다.
내가 phpMyAdmin을로 가자,하고의를하자 실제로, 사용자라는 테이블을 생성
나는 그에게 세를 줄거야 열 및 나는 빨리거야
다음 ID를 만들고, 이름을 지정한 다음 번호,
그리고 ID 필드는 난 int로 떠날 예정.
내가 갈거야 이름 필드 VARCHAR로 떠나,
우리는 다소 임의적으로, 64을 말할 것이다.
내가 갈거야 수 수 있도록, 당신이 뭘 알아?
우리는에 갈거야 여기에 미국의 번호를 지원,
그래서 나는 일을 할거야 문자 같은 다음 10 자
지역 코드에 대한 최대 다음 7 자리.
그리고 여기, 내가 갈거야 자동 증분이 필드를 지정
이 기본 키 확인하고 나는 앞으로이 아니라 갈거야
이러한 다른 상자 중 하나를 선택합니다.
>> 그래서 이제 마지막으로 저장을 클릭하면, 나는, 내 사용자 테이블로 돌아가
이는 경우의 모습입니다 I 이제 새 탭 구조를 클릭합니다.
그래서이, 명확하게 단지 phpMyAdmin을의 방법입니다
데이터베이스 테이블을 말하는 ID, 이름 및 번호가
그 특별한 구성으로 우리는 나머지 필드를 무시 거
거기에 지금은.
>> 그래서 지금 내가 뭘하고 싶어?
나는에 지금 가면 그래서 내 소스 코드, 모든 것이 잘 경우
나는 다음과 같은 쿼리를 실행하려고합니다.
에 삽입하고, 난 그냥 수 사용자가 나는 엄격하게하지 말
가 있다면 그 뒤로 틱 필요 사용자 좋아하지 위험한 단어.
나는 이름을 말할거야, 수, 여기에 난
하드 코드하지 않을 아직 값 자리.
나는 두 개의 물음표를 넣어 갈거야.
그리고 이것은 규칙입니다 여러 언어
이에 당신이 갖고 싶어 문자열에 대한 자리 표시 자
당신은 질문을 사용하는거야 마크 이유로 우리는거야
약 채팅 돌아와 보안, 여기에
나는 그 전달거야 두 필드는 이름을 게시
다음, 번호를 게시 지금 파일을 저장합니다.
>> 지금은 갈거야 슈퍼 여기 가서
단순히 rendersuccess.php을, 말을하는 다른 템플릿이 될 것입니다.
나는 정말 빨리 만들거야.
Geditsuccess.php 난 그냥 갈거야 해당 파일에 H1 성공 대답.
좋아.
그래서 지금, 다시 가자 내가 방문한 브라우저.
의 앞서 가자와 내가 쓴 확인 데이비드에, 나는, 전화 번호 썼다
등록.
젠장.
내가 잘못 무슨 짓을 한거야?
그래서, 당신을 여기에서 오류를보고 있어요 당신의 SQL 구문에 오류가 있습니다.
나를 다시 gedit에서로 이동하자,하자 나, register.php로 돌아가
나는 것을 무엇 생략 않았다 중요한 언제죠?
나는이 필요합니다.
당신보다는 다른 알고 싶어 가진 전에 발견,하지만 난이 필요합니다.
>> 그래서 지금의 돌아 가자,이 브라우저에서 볼 도움이되었다
그 이유는 config.php 파일에의 우리는 오류를 뱉어.
, 이제 가서 다시 보자 계속 성공을 클릭합니다.
그래서 지금 나에 가서 보자 내 여기에 데이터베이스와 사용자를 클릭,
및 검색하고, 지금을 알 수 여기 내 데이터베이스에 다윗이있다.
이제 기술적으로이 웹 사이트는 아직 공용 인터넷에,
그래서 나는 다른를 가질 수 없습니다 여기에 퍼팅에있는 사람들,
하지만 지금은, 원한다면 인스턴스는, 자신에게 문자 메시지를 보낼 수 있습니다.
여기서 한 걸음에 나가자 이 실제로 작동하는 경우를 참조하십시오.
나는 앞서 갈거야 이 행을 삭제
우리는이를 흐리게합니다 비디오 아웃 이후
그래서 우리는이 없습니다 전체 인터넷이 저를 문자 메시지
우리는 지금까지 이동합니다 브라우저와 우리는 강의를 통해 갈거야
우리는 다른를 입력합니다 수, 여기, 성공을 등록합니다.
>> 그래서 지금, 내 자신의 수에 아마의 데이터베이스, 이제 재미있는 부분.
의 실제로 수행하는 PHP를 사용하자 뭔가 프로그래밍,
어느 명령 라인 또는 다른 곳에서,
그리고 지금은 그냥 해요 간단하게 것
나는에 갈거야 내 여기 디렉토리는 다음을 수행.
gedit에서 스크립트는 우리거야,의 말을하자 , 텍스트, #! / 사용자 / 빈 / ENV의 PHP를 호출
같은 우리는 지난 시간을 보았다.
PHP.
>> 지금은 필요 할거야 config.php 파일을 포함,
심지어이 힘하지만 약간의 오차를 유도한다.
그리고 지금 내가 가서 말을하려고 해요 사용자의 행, 쿼리, 선택 스타,
근데 지금은 기술을 할거야 행으로 각 행의 마지막에서.
그리고 간단한 일을 할거야.
의 이름이라고 할 수 PRINTF, 및 수는이, 백 슬래시 n은.
그리고 지금은 통과거야 행에 인용을 끝내 이름을 인용
및 행 인용 인용을 끝내 번호, 지금의 앞서 가자
내 터미널 창 chmod를이 + X를 만들기 위해
텍스트 실행이라는 스크립트.
그리고 지금의 텍스트를 실행하자.
>> 좋아, 그럼 진행.
그래서 지금은 서면으로 작성했습니다 명령 줄 스크립트,
것을, PHP라는 언어로, 그 때문에, 라인이 필요
모든 구성에 액세스 할 수 있습니다 내가 지정된 상수.
데이터베이스 등의 이름입니다.
사실, 단지 명확하게 이것은 우연이 아니라고,
날 가서 등록하자 롭 같은 다른 정말 빠른 사람
그에게 555-1212 번호를 줄 것이다.
>> 그리고 지금은 스크립트를 실행하는 경우 다시, 전원을 알
우리는 데이터베이스와 무슨 일을하는지의.
지금은 바로 무엇을 본 적이 다른 두 행은 내 데이터베이스에 있습니다.
그래서 지금의이 일을 해보자 내부에도 애호가,
이것은 우리가했습니다 부분입니다 사전에 테스트하지,
그래서 마지막으로 내가 이런 짓을 일들이 끔찍하게 비스듬히 갔다
우리는 그 효과에 비디오를 가지고있다.
>> 사실, 그래, 재미 따로.
마지막으로 그래서,에 재작년처럼 강의,
우리는 수, 내가 결정, 결정 이 모든 것이 좋은 생각 일 것이다
동적에서 이메일을 생성하는 클래스, 전체 데이터베이스 CS50를 사용하여
우리에게 자신의 번호를 준 학생, 자신의 휴대 전화 캐리어 정보를
PSET0에서 불러올 수 있습니다, 알고 보니, 추론하는 방법
내 프로그램에서 사소한 버그를 가지고 있었고, 2012 년에 몇 가지 실수를했다, 나는 생각한다.
>> 이로써, 하나의 I for 루프를했다고 , 것은 정확히 이런 종류의 한
데이터베이스 반복, 데이터베이스에서 이름을 얻고,
각 다음 데이터베이스에서 이름을 지정하고 그 루프의 반복은 내가 이메일을 보냈습니다.
하지만 그 대신 하나의 이메일을 보내는, I 하나의 이메일 첫 번째 반복을 보내,
두 개의 이메일을 두 번째 반복은, 전송 세 개의 이메일을 두 번째 반복, 어떤
당신은 기억 하듯이 우리의 점근 표기법 논의
N 같은 나쁜이 큰 O는 제곱 내가 보낸 메시지 수입니다
하지만 그것도 이메일 아니었다 이는 문자 메시지였다.
>> 여러분이 알다시피 그리고, 출석하지 않습니다 마지막 학기를 향해 초고
그래서 나는 귀여운 것이라고 생각 시간이 "왜 클래스하지?"대답
텍스트 메시지 I에서 전체 클래스에 보내,
그것은의 50 %를 좋아하는 재미 있었다 클래스 있지만, 다른 50 %, 그들 중 일부
현실에서 도피, 나는 믿을 수 없을만큼 전송 사과 달콤한 노트
직원에 대한 사과에 강의를 놓친 데 단지
이 번, 오른쪽?
>> 그래서 끔찍하게 구부러져있다.
그 정신에 그래서,이를 해보자 다시하지만 그냥 내 번호.
사전에 functions.php에, 나는 여기에이 기능을 작성했습니다.
그것은 텍스트라고하며, 그것의 세 개의 인수에 걸립니다.
번호, 캐리어, 그리고 메시지.
>> 나는 스위치 문을 사용하고있는 멋지고 PHP는, 단지를 문자열을
정수는, 내가 구현하지 않았다 아직이에 대한 모든 지원
난 그냥 AT & T와 버라이존 완료했습니다.
알고 보니 때문에 선택된 항공사와 그
그들은, SMS 게이트웨이 이메일을 이에 실제로 수
주소로 이메일을 보내 vtext.com에서 전화 번호 등
및 사용자가 차단되지 않았다면 메시지, 그것을 통해 갈거야
텍스트 메시지이다.
>> 이제이 일을, 내가 추가해야 할거야 내 데이터베이스에 정말 빨리 하나의 필드.
나는에 갈거야 내 구조, 그리고 난
가서 추가 예정 테이블의 끝에 필드.
이제 이동을 클릭하자, 그리고 난 이 캐리어를 호출하는 것
그리고 지금 나는 갈거야 바 텍스트로이를 떠나,
그러나 우리는 미래에 애호가가 될 수 있습니다.
나는 빨리 갈거야 내 테이블에, 그리고 난
롭을 제거하는 것, 그 가짜 번호가 있기 때문에,
나는 여기에 편집에 갈거야 그리고 난 수동으로 캐리어를 바꿀 것
버라이존, 할 수있는 그것을 그리고 지금 여기에 있습니다.
>> 의는 빠른 전성 검사를하자.
의 우리의 텍스트 스크립트를 열어 보자하는 이처럼 보이는, 캐리어는 % s입니다.
우리는 더 많은 오류를하고있는 나는 2012 년 캐리어를보다 검사합니다.
그리고 지금, 나는 갈거야 앞으로하고 스크립트를 다시 실행합니다.
확인을 클릭합니다.
캐리어는 의미 버라이존입니다 지금 잘하면 그냥이 작업을 수행 할 수 있습니다.
올바르게 올해, 희망, 우리가 간다.
>> 그래서 루프이 내부에, 난 이 printf의를 가질뿐만 아니라 가고,
나는 또한 텍스트를 호출하는거야와 이 기능 리콜의 사용
했다 그것은는 숫자 소요 캐리어 및 메시지.
그래서 보자, 수는 것입니다 행 시세 맺다가 될 "수"
행 인용 맺다 "캐리어" 그리고 마지막 메시지였다.
올해 세미콜론을 나사를하지 않습니다.
>> 확인을 클릭합니다.
행운을 빕니다.
이 작동하는지 보자.
그래서 좋아.
여기에 우리가 간다.
의 전화의 잠금을 해제하자, 손가락을 교차, 젠장.
정의되지 않은 변수 may-- 오 정말 빨리, 자, 잠깐만 요.
정말 빨리, 정말 빨리.
이것은 완전히 가치가있다.
내가 어 - 오, 잡아 보자, 나를 잡아 보자.
텍스트가 있고, 감사 다른 사람에서 시작했다.
내가 가서 실제 해주시죠 여기에 빠르고 dropbox.php / 메일.
대기.
그것은 완전히 가치.
다운로드.
OK, 소스 src8m.
확인을 클릭합니다.
>> 여기에 하나 더 줄 필요합니다.
아, 거기는 신입생에있어입니다 IMS는,이 세 가지에 레지스터입니다.
안녕하세요 오, 마고는, 대단히 감사합니다.
OK, 나는 여기에이 줄을 누락되었습니다.
그래서 내가 빨리 잡아 보자 이 코드 줄,
이는 메일 또는 라이브러리가 포함되어 있습니다 실제로 사용하려는,
나는 빨리에 갈거야 기능으로 돌아가서,
나는이의 상단에 갈거야 파일뿐만 아니라이 파일이 필요,
지금은 정말 건너 갈거야 내 내가 명령으로 돌아가 손가락
의 내부 라인 스크립트, 오늘의 로컬 호스트 디렉터리.
실행 텍스트입니다.
입력합니다.
메일.
대기.
메일.
아, 그렇군요.
여기에 우리가 간다.
>> 메일은 새로운 PHP 우편물을 가져옵니다.
나는이 권리를 했습니까?
젠장.
잠깐, 잠깐, 잠깐, 아, 아 -​​.
대기.
나는 이것이 약속 그럴 가치가 될 것이다.
주소.
내가하지 않는 이유입니다 바로 공과를 시작하기 전에 예.
윽.
다음받는 사람이 실패했습니다.
의이 마지막 일을 해보자.
주소를 추가로 설정할 SMTP, 주소가 실제로 있다는 것입니다.
의 주소의 마지막 부분을 해보자.
아, 난 지금 정말 슬프다.
감사합니다.
하지만 난 정말 모든 감사 텍스트는 당신이 보내 왔습니다.
이 다윗을 가지고있다.
당신은 그것을 불고있어.
의이 그것을두고 봅시다 우리는 월요일에 해결됩니다.
다음을 참조하십시오.
>> 데 이븐 판햄 : 그리고 지금 깊은 데 이븐 판햄으로 생각.
이진 트리가 숲에서 떨어지면과 아무도 C 하구 또 ㄴ 주위에 없다.