[მუსიკალური სათამაშო] დევიდ ჯ Malan ყველა უფლება. მივესალმებით უკან. ეს არის CS50. ეს არის ბოლომდე კვირაში 8. და როგორც მოგეხსენებათ, ჩვენ გვაქვს საკმაოდ რეგულარული ოფისში საათის რამდენიმე სასადილო დარბაზები, მათ შორის Annenberg. და ზოგიერთი გუნდის kindly რამდენიმე ფოტო დაგვიანებით. და საპატივცემულოდ Halloween, გვეგონა ჩვენ ავღნიშნო გაზიარება რომ საკმაოდ გამოგვიჭირა მიერ სიურპრიზი აქ Annenberg Hall მხოლოდ სხვა ღამის. თქვენი თანაკლასელი იაკობ შეუქმნა ეს ფოტო, მაგრამ უფრო სახალისო იყო Facebook, მომდევნო საუბარი, რომ მოხდა შემდეგ. მისი პირველი ჩანაწერი პასუხი მისი ფოტო იყო ეს. რამდენიმე წუთის შემდეგ, მან გადაწყვიტა, ერთი თავი ამ. ის წავიდა, მაშინ გადადით ამ, და შემდეგ, კიდევ უფრო amusingly როდესაც მისი დედა ერევა. და მაშინ საბოლოოდ, როგორც ჩანს, ეს იყო მხოლოდ შესანიშნავი რუსეს დიდი ითამაშოს, რომ ხდება. ასე რომ, თუ გსურთ, იმისათვის, რომ ნახოთ იაკობი და სხვები, მათ შორის Cynthia Meng, რომელიც არის კულუარებში CS50 ზონაში პერსონალის, უხელმძღვანელებს ამ URL და ამ პიესის აქ. ასე გარეშე ado, დღეს ჩვენ გაგრძელდება ამ შევხედოთ ვებ პროგრამირების, და ფაქტობრივი შექმნას პროგრამები რომ არ აწარმოებს თქვენი ბრძანების, მაგრამ ნაცვლად აწარმოებს შიგნით ბრაუზერში. სავარაუდოდ, ახლა, ან ძალიან მოკლედ, თქვენ აპირებს უნდა იყოს საქართველოს შუაგულში ახორციელებს თქვენს საკუთარ სერვერზე, რომელიც განსხვავდება ვებ პროგრამირების. სერვერზე pset6 ყველაფერი წერა პროგრამული უზრუნველყოფა, რომ იცის, თუ როგორ უნდა მიიღოს HTTP მოითხოვს მისამართს ბრაუზერში, ან თუნდაც თქვენ, ადამიანური, პროგრამას სახელწოდებით Telnet და შემდეგ რეაგირება იმ მოთხოვნების ან მიერ spitting გარეთ HTML ფაილი, ან jpeg, ან gif, ან თუნდაც php ფაილი. მაგრამ სერვერზე, ეს არ არის უნდა უბრალოდ გახსნა PHP ფაილი, რაღაც დამთავრებული და შემდეგ შამფურზე out შინაარსი. ეს უნდა გააკეთოს რა, რომ ფაილი პირველი? ასე ვთქვათ. არ კომპილირება, ჩვენ განაცხადა ორშაბათს, მაგრამ rather-- ასე რომ, ინტერპრეტაცია. PHP არის გაგებული, ენის, და ა.შ. ერთ-ერთი ძირითადი თვისებები თქვენს ვებ სერვერზე, თუმცა მიერ განხორციელებული, ეს უნარი თქვენს სერვერზე შეამჩნია, oh. ეს ფაილი დამთავრებული. ნება მომეცით არა მხოლოდ გაუგზავნოთ შესახებ, როგორც ეს კონტენტი, არამედ მიადევნე თვალი წაიკითხავს ხაზი ხაზი, მარცხნიდან მარჯვნივ, და ინტერპრეტაცია. და გავაკეთოთ, რომ თქვენ ბიჭები არსებითად punt პროგრამა მოწყობილობების, და უამრავი კომპიუტერული სისტემები, უბრალოდ მოუწოდა PHP. რომ არის სახელი PHP ენის საკუთარი თარჯიმანი. ასე, რომ ნაჭერი ჩვენ განხორციელება თქვენ, და რა დარჩა თქვენთვის, საბოლოო ჯამში, არის მთელი რიგი ცალი, მათ შორის, ახორციელებს მხარდაჭერა სტატიკური შინაარსი. მაგრამ ახლა, და პრობლემა ნაკრები შვიდი, თქვენ დაწყებას აპირებს გადასვლას რეალურად წერა PHP კოდი რომელიც იღებს ინტერპრეტირებული საუბარი უკან ბოლოს მონაცემთა ბაზა, რომელიც ინახავს ინფორმაციას. მოდით უკეთ გავიგოთ, პირველი რამდენიმე ამ superglobals და მხოლოდ რამდენი ძალა გავიდნენ ყუთი უფასოდ ენა, როგორიცაა PHP. რამ, რაც არ უნდა განახორციელოს თავს. ასე რომ, დავინახეთ, ორშაბათს $ _GET, რომელიც არის superglobal, რომელიც მხოლოდ PHP საუბარი გლობალური ცვლადი შეგიძლიათ ყველგან. და რა არის შიგნით $ _GET? რა არის შიგნით superglobal, რომ ჩვენ ვხედავთ? რა თქმა უნდა, სტატისტიკურად at მინიმუმ ერთი პირი იცის. რა არის შიგნით $ _GET? ჰო? აუდიტორია: ეს ცვლადები თქვენ დააყენა შეკითხვაზე string. დევიდ ჯ Malan: Perfect. ეს ცვლადები თქვენ დააყენა შეკითხვაზე string. ასე რომ, ჩვენი ძველი მაგალითია reimplementing Google, როდესაც ჩვენ გვქონდა URL და შემდეგ კითხვის ნიშნის, რომელიც demarcates დაწყების HTTP პარამეტრებს, მაშინ ჩვენ გვქონდა q თანაბარი რაღაც, როგორიცაა q ტოლია კატა, რა იქნებოდა ავტომატურად შიგნით რომ $ _GET სუპერ გლობალური თქვენთვის, იმიტომ, რომ PHP, არის გასაღები Q, და არც მისი კატა. სხვა სიტყვებით, $ _GET და ყველა ეს ყველაფერი ასოციაციურ მასივები, hash მაგიდები ჯიშები, რომელიც მაღაზია გასაღებები და ღირებულებები. ახლა, უკან pset5, hash მაგიდის თქვენ არ განხორციელდა, ან ცდილობენ თქვენ არ განხორციელდა, ნამდვილად ეფექტურად ასოციაციურ მასივი, მონაცემთა სტრუქტურა რომლის დროსაც თქვენ შეგიძლიათ დაუკავშიროთ გასაღებები ფასეულობებით. მაგრამ pset5, ღირებულებები იყო ტრივიალური. ღირებულება არსებითად ჭეშმარიტი ან ცრუ. არის სიტყვა ლექსიკონი? ასე რომ, როდესაც თქვენ hashed სიტყვა, როგორიცაა ვაშლის ვნახოთ, თუ ვაშლის ლექსიკონი, თქვენი გამშვები ფუნქცია, სავარაუდოდ, დაბრუნდა ჭეშმარიტი ან ცრუ. ასე რომ, ეფექტურად არც ჩვენ დავუბრუნდეთ. მაგრამ ჩვენ ვნახეთ, ორშაბათს მოკლედ, თქვენ შეგიძლიათ რა თქმა უნდა ასოცირებული უფრო საინტერესო ღირებულებები, ვიდრე უბრალოდ ჭეშმარიტი ან მცდარი გასაღებები, როგორიცაა ვაშლი. თქვენ შეიძლება რეალურად დაბრუნდეს თვითნებური string, და მართლაც, ის, რაც $ _GET და ეს სხვა ცვლადები ნება თქვენ. ასე რომ $ _POST მსგავსი სულისკვეთებით, მაგრამ თუ თქვენ წარმოადგინოს ფორმა ფოსტით, სხვადასხვა HTTP მეთოდი, რომელიც არის გამოიყენება რამ, როგორიცაა საკრედიტო ბარათები, და კერძო ინფორმაციას, და კიდევ ორობითი ინფორმაცია, ფოტოები, ის, რაც დასრულდება up შიგნით $ _POST. და რეალურად ფაილი როგორიცაა jpegs და whatnot, არსებობს კიდევ ერთი, რომ არ არის აქ მოუწოდა $ _FILES ასევე. ასე რომ, სერვერი ჩვენ არ შევჩერდებით ძალიან ბევრი, მაგრამ ეს გაძლევთ ხელმისაწვდომობის სახის ქვედა დონეზე დეტალები შესახებ სერვერზე თავად, რომ თქვენ იყენებთ. ფუნთუშა და სხდომაზე, თუმცა, ჩვენ ეფექტურად ვხედავ ახლა. ბოლო არის ის, რაც ჩვენ ვიყენებთ განახორციელოს ცნება კალათა. სუპერ მარტივი, მაგრამ გავიხსენოთ რომ ჩვენ გვქონდა ამ მაგალითში, დათვლის რამდენჯერ მან მოინახულა ამ გვერდზე ადრე. მაგრამ დღეს, ვიდრე უბრალოდ შეხედეთ ეფექტი ამ, მოდით გახსენით Chrome- ს ინსპექტორი რომელიც შეგიძლიათ ჩვეულებრივ ამის გაკეთება, მარჯვენა დაწკაპვით ან კონტროლის დაწკაპვით ყველგან ვებ გვერდზე, და შემდეგ აირჩიოს შეამოწმოს ელემენტს. ან შეგიძლიათ მენიუები ჩვენ აღწერს pset6 ს სპეც. და მე ვაპირებ ქსელი tab აქ, და მოდით უყუროთ ერთი წუთით HTTP ტრაფიკის, რომელიც არის ბრუნდება და მეოთხე. ნება მომეცით პირველი წავიდეთ წინ და ნათელი Chrome- ს cache. ასე რომ ზოგიერთი თქვენ შეიძლება იცნობს ეს ტექნიკა უკვე, და ჩვენ ვაპირებთ გამოვიყენოთ ეს გამართვის მიზნებისათვის აქ. ახლა ჩვენ, როგორც კომპიუტერული მეცნიერები იწყებენ ამით გამართვის მიზნით, რომლის დროსაც ჩვენ გარკვევას cache, როგორც წესი, ასე, რომ ჩვენ შეგიძლიათ მოშორება რამ მოუწოდა cookies. ასე რომ, თქვენ, ალბათ, ნაცნობია თუ რა ნაჭდევები, ან თუნდაც რომ ისინი არსებობენ, მაგრამ რა თქვენი გაგება მათ, როგორც მხოლოდ მომხმარებელია კომპიუტერები, რა არის ბმული? ჰო. აუდიტორია: ეს ცოტა of-- კარგად, არა ცოტა ვადით კომპიუტერულ მეცნიერებაში. ეს ნაჭერი მონაცემები, რომ საიტი აგზავნის თქვენთან, რათა შეძლებს ჩაწერას სტატისტიკა თქვენ. დევიდ ჯ Malan: OK, კარგი. ასე რომ, ეს ნაჭერი მონაცემები, სერვერზე, აყენებს თქვენს კომპიუტერში, და მოდით განზოგადება, ეს კი უფრო მეტიც, ეს ერთ-ერთი მთავარი ღირებულება, ასევე, რომ ის მიღების უფრო ზუსტი. ეს არის ნაწილი ინფორმაცია, ნაჭერი მონაცემები, რომ სერვერზე შეუძლია იმისათვის, რომ თქვენს კომპიუტერში და ძალიან ხშირად, სერვერზე არ ეს ისე, უნდა გვახსოვდეს, ვინ ხარ შენ. ასე მაგალითად, შანსები არის, თქვენ ალბათ შესული საიტებზე, როგორიცაა Facebook, ან Gmail, ან სხვები ადრე, და თქვენ შეხვიდეთ თქვენი სახელი და პაროლი და შემდეგ, რომ რაიმე ნომერი წუთის ან საათის განმავლობაში ან თუნდაც დღით, სერვერზე ახსოვს, რომ თქვენ, ფაქტობრივად, სისტემაში შესული. ახლა, როგორ არის, რომ რეალურად ხდება? იმიტომ, რომ თქვენ რა თქმა უნდა არ retyping თქვენი სახელი და პაროლი ყველა დროის ნავიგაცია სხვადასხვა Facebook- ის გვერდზე. გამოდის, cookies პასუხი. ბმულების შეგიძლიათ წარმოიდგინოთ, როგორც, სახის მოსწონს, ციფრული მხრივ ბეჭედი, რომელიც შესაძლოა გასართობი park ან კლუბი, რომელიც, ძირითადად, მიუთითებს, რომ არ აქ ადრე, და თქვენ უკვე ნაჩვენებია თქვენი პირადობის bouncer, for მაგალითად, და რომ კლუბი ან პარკში უნდა ვივარაუდოთ, რომ თქვენ არ დამოწმებული უკვე. თქვენ უკვე განსაზღვრული იყო. ასე, რომ გონება, მოდით გახსენით counter აქ. ნება მომეცით წავიდეთ წინ, უბრალოდ გააკეთეს, და ნათელი ყველა ჩემი cookies. და ახლა რა მე ვაპირებ ამის გაკეთებას, გამართავს Shift, მხოლოდ კარგი ღონისძიება, და იძულებით განაახლეთ გვერდი. გადაიტანოს უბრალოდ დარწმუნდით რომ არაფერი იღებს კეშს. და აქ მოთხოვნით რომ წავიდა უკან და მეოთხე. ასე რომ აქ ჩვენ გვაქვს მოთხოვნა და მისცეს მომეცით მიუახლოვდით აქ, და ბევრი ამ სახის უინტერესო დეტალები ახლა, ბრაუზერს გააჩნია ავტომატურად გაიგზავნა, მაგრამ მოდით დააჭირეთ View წყარო სანახავად ნედლეული headers. და თუ თქვენ საპირისპირო მხარეს ბურთის pset6 უკვე, თქვენ რა თქმა უნდა აღიარებს რამ როგორც ეს, და შესაძლოა, რამდენიმე ამ, სხვა აქ, მაგრამ რა არის უფრო საინტერესო დღეს თუ მე გადახვევა ქვემოთ, არ მოთხოვნა მაგრამ იმისათვის, რომ ე.წ. საპასუხოდ, ეს ხაზი ალბათ გამოიყურება ნაცნობი. რომ ეს კარგია როდესაც ხედავთ 200 OK. როგორც ჩანს, ეს არის თარიღი და დრო სერვერზე და იქ bunch პერსონალის. ოჰ, ეს არის საინტერესო. თურმე, როდესაც თქვენ იყენებთ PHP, მინიმუმ ამ სერვერზე, სერვერზე SpitS გარეთ რა ვერსია PHP თქვენ იყენებთ. რომელიც, ფაქტობრივად, უსაფრთხოების მიზნებისათვის, არ არის კარგი რამ. მაგრამ ჩვენ დავბრუნდებით, რომ სხვა დროს, ალბათ. მაგრამ ახლა ეს წვნიანი ონლაინ დღეს, და ჩვენ ვნახეთ მოკლედ ზოგიერთი, მე ვფიქრობ, Facebook, როდესაც ჩვენ poked გარშემო ინსპექტორი, იმ დროს, კომპლექტი ფუნთუშა არის ის, რაც დარგვა რომ პატარა ნაჭერი ინფორმაცია გადატანა თქვენს კომპიუტერში. ეს არის HTTP header რომ ეფექტურად ვეუბნებოდი თქვენს ბრაუზერში, Chrome, IE, რასაც, hey ბრაუზერის მაღაზია მომხმარებელს მყარი დისკის, ან ამ მომხმარებლის RAM, გასაღები მოუწოდა PHPSESSID, რომელიც სტენოგრამის ნოტაცია სესია, და მისცეს მას ღირებულება 0vlk8t, dot, dot, dot. მართლაც დიდი ფსევდო შემთხვევითი ალფანუმერული სიმებიანი. ეს მხოლოდ მართლაც დიდი რაოდენობის, მაგრამ ის კოდირებით ერთად წერილები და ციფრები ისე, რომ ზომა, ეს შეიძლება იყოს უფრო დიდი, ვიდრე ნომრები მარტო. და მაშინ, სხვათა შორის, Path = /, რომელიც მხოლოდ იმას ნიშნავს, რომ ეს cookie უნდა იყოს უკავშირდება მთლიანად ვებ-გვერდზე, არა მხოლოდ კონკრეტული გვერდი მთელი რამ. ასე რომ, ეს არის ის, რომ ვირტუალური მხრივ შტამპი. ეს თითქოს სერვერზე, Facebook, ან ჩვენს შემთხვევაში მოწყობილობების, ფაქტიურად წერილობითი 0vlk8t და ასე შემდეგ, თქვენს ხელში. ყურადღება მიაქციეთ, რა სერვერზე, არ აკეთებენ, ის არ შენახვის ჩემი სახელი, რა თქმა უნდა, არ შენახვა ჩემი პაროლი. ამის ნაცვლად, როგორც ჩანს, შენახვის ფსევდო შემთხვევითი ინფორმაცია ისე, რომ არავინ ვერ ვხვდები, რა ჩემი მხრივ შტამპი. სერვერის მხარეს, იმავდროულად, სერვერზე აპირებს გვახსოვდეს, ალბათ, მონაცემთა ბაზაში ან რამე, რომ მომხმარებელს, რომელიც მომავალში წარმოგიდგენთ მხრივ ბეჭედი 0vlk8t, dot, dot, dot, დაკავშირებული უნდა იყოს ამ კერძოდ კალათა, ასე ვთქვათ. სხვა სიტყვებით, თუ მე ახლა წავიდეთ უკან აქ და განაახლეთ ეს გვერდი როგორ ამჯამად სერვერზე იცის, რომ მე ვიყავი ერთ დროს? ან თუ კიდევ ერთხელ, როგორ სერვერზე ვიცი, რომ მე მოინახულა ეს ორჯერ? თუ მე ქვევით ამ უკანასკნელი მოთხოვნა, რომელიც არის მესამე, რომ მე გამოგზავნილი საერთო ჯამში, შეამჩნია ჩემი თხოვნა არის. ჯერ კიდევ არსებობს ამ მოითხოვოს აქ, იგივე როგორც ადრე, ჯერ კიდევ მთელი bunch პერსონალის, რომ ჩვენ იგნორირებას, როგორც ადრე, მაგრამ ძალიან ბოლო header ეს დრო, რადგან მე უკვე აქ ადრე, არის პრეზენტაცია ეს ვირტუალური მხრივ შტამპი. რომლის დროსაც ეს ხაზი აქ, არ არის cookie მაგრამ ფუნთუშა colon PHPSESSI = 0vlk8t, ეს მხოლოდ ჩემი ბრაუზერის ავტომატიკა პრეზენტაცია ამ მხრივ შტამპი, ისე, რომ ახლა სერვერზე, როგორც კი ის აცნობიერებს, ooh, ეს არის შესახებ 0vlk8t dot, dot, dot, მე ახლა მახსოვს, რომელმაც იგი და reassociate რომ შესახებ, რასაც ინფორმაცია მინდა, და ყველა რომ ინფორმაცია შეიძლება შენახული თქვენ, პროგრამისტი, $ _SESSION. ასე უნდა იყოს მკაფიო, თუ გახსნა რეალური სწრაფი in gedit, რომ ფაქტობრივი ფაილის counter.php, ჩემი ადგილობრივი მასპინძელი საზოგადოების დირექტორია როგორც ადრე, შეამჩნევთ, რომ, რა თქმა უნდა, მე საბოლოოდ შენახვა $ _SESSION გაცემა unquote "counter" ღირებულება წინა counter, რომელიც მე ამ ხაზები, რომ ჩვენ აქ შევხედე ბოლო დროს პლუს ერთი. ასე ქვევმოთ hood, რომ ყველა ნაჭდევები. ეს მხოლოდ ერთგვარი ციფრული მხრივ შტამპი ბრუნდება და მეოთხე, და გულწრფელად თუ გახსნა Chrome მიერ ინსპექტორი ნებისმიერ საიტზე თქვენ ეწვევა დღეს, სუპერ დიდი ალბათობით, თქვენ ვაპირებთ, შესაძლოა, ერთი, იქნებ ნახევარი ათეული cookies მიმდინარეობს ახსოვდეს თქვენს მიერ. და უარესი არ არის, თუ აღნიშნული საიტი თქვენ გამოჩენის ყველას აქვს რეკლამას, რომელიც რა თქმა უნდა, საკმაოდ გავრცელებული დღეს და თუ იმ რეკლამებს მოდის ზოგიერთი ცენტრალური პარტიული, ვინმე როგორიცაა Google ან AdWords, რადგან ისინი მოვუწოდებთ მათი პროდუქცია ან სხვა მსგავსი მოვაჭრეებს, გაყიდვას განცხადებები, რა საინტერესოა, და გულწრფელად რა პატარა აღმაშფოთებელია, იმაზე, თუ როგორ HTTP სამუშაოები, ის არის, რომ თუ თქვენ გაქვთ ad ჩართული in Facebook.com და Google.com, და Harvard.edu, ნებისმიერი რაოდენობის საიტებზე, ამიტომ ასეთ რომ იქ შუა კაცი რომელიც ემსახურება up განცხადებები სამივე იმ საიტებზე, გამოდის, რომ ნაჭდევი თითო დომენში. ასე რომ, თუ თქვენ გაქვთ ad მოდის იგივე კომპანია სხვადასხვა საიტებზე, რომ კომპანიას შეუძლია ეფექტურად აკონტროლოთ რომელიც თქვენ მასშტაბით ყველა იმ საიტებზე. ჰარვარდის შეიძლება არ ვიცი თქვენ გამოჩენის Facebook. Facebook, შესაძლოა, არ ვიცი და თქვენ გამოჩენის ჰარვარდის. მაგრამ რაც ad მომსახურება ისინი გამოყენებით, თუ ეს დომენი დღემდე ორივე Harvard.edu ვებ გვერდები და Facebook.com მართლმადიდებელი, ამ შუა კაცი აუცილებლად იცის ვინ ხარ შენ იმიტომ, რომ ამ cookies მიმდინარეობს გაუზიარეს მთელი, უფრო სწორად, რომ ე.წ. შუამავალი. ასე რომ, ჩვენ დავბრუნდებით ამ უსაფრთხოების მნიშვნელობა მისი, მაგრამ არსებობს ბევრი ინფორმაცია შენახული თქვენს შესახებ ნებისმიერ დროს ეწვიეთ საუკეთესო ნებისმიერი ვებ გვერდი ინტერნეტში და ნამდვილად ამცირებს ამ ძალიან მარტივი მექანიზმი. რა ხდება, მაშინ, თუ თქვენ სუპერ paranoid და თქვენ გადაწყვიტეთ, რომ წასვლას Chrome ან IE ან რასაც და გამორთეთ თქვენი cookies? რა ხდება? ჰო? თქვენ ნამდვილად თქვენ კეთდება ეს უფლება? OK. არ, წავიდეთ წინ. აუდიტორია: გარკვეულ საიტებზე არ აქვს ფუნქცია გარეშე, როგორიცაა Facebook. დევიდ ჯ Malan: ჰო! ასე გარკვეული საიტები უბრალოდ შეწყვეტს მუშაობას. და უმეტეს საიტებზე ამ დღეებში რომ ფუნდამენტურად დაეყრდნოს cookies, განსაკუთრებით, თუ ისინი არ გაქვთ, შედით in, ისინი უბრალოდ აპირებს დაარღვიოს. იმის გამო, რომ განიხილოს ალტერნატივა, თუ ვებ- არ არსებობს გზა დამახსოვრების, რომლებიც თქვენ, და ამიტომ არის თქვენი ვებ ბრაუზერი არ წარმოადგენს ყველა HTTP მოთხოვნის ამ მხრივ შტამპი, ეფექტურად ნახვა როგორიცაა Facebook აპირებს უნდა შეგახსენებთ, რომ შედით ყველა darn დრო თქვენ შეგიძლიათ შეცვალოთ გვერდებზე, ან დააჭერთ ბმულს, რომელიც ნამდვილად არ არის განსაკუთრებით კარგი შესახებ გამოცდილება. ასე რომ არ არის, ასევე, შორის სავაჭრო ღ. ასე გარეშე ado, მოდით, თავისთავად, რომ ვებ პროგრამირების, ენებს, როგორიცაა PHP, თქვენ გახსოვთ ინფორმაცია, რომ პრობლემა მითითებული შვიდი როდესაც თქვენ განახორციელოს საკუთარი E * სავაჭრო მსგავსი საიტი სადაც ყიდვა და გაყიდოს აქციები, თქვენ მახსოვს ზუსტად რა მომხმარებელს უკვე შეიძინა და გაყიდა და ვინც ის არის გზა ამ სხდომაზე. მაგრამ ჩვენ ვაპირებთ უნდა fancier, ვიდრე ელ დაიწყოს ინფორმაციის შენახვის გარშემო. არა? ორშაბათს, ჩვენ ვისაუბრეთ Frosh მესიჯები და როგორ ერთი ვერსია, რომ ნახვა, წლის წინ, ყველა ჩვენ არ იყო ელ Proctor ვინ არის პასუხისმგებელი intramural სპორტული პროგრამა, სახელი და სქესი, და თუ არა ისინი კაპიტანი, და სტუდქალაქის ვინც არის რეგისტრაციისას intramural სპორტული. ასე რომ, ეს არ არის ცუდი, მაგრამ მას შემდეგ ჰქონდა troll მათი ელექტრონული ფოსტის, რათა ცხრილების ან რაღაც მსგავსი რომ შენარჩუნება ყველაფერი ორგანიზებული. ასე რომ აუცილებლად ჩვენ, როგორც პროგრამისტები შეიძლება ეს რომ proctor. და ასე შევა SQL, სტრუქტურირებული შეკითხვის ენა, რომელიც აპირებს გამოიყურებოდეს ლამაზი სხვადასხვა, როგორც C და PHP, და თქვენ ჩაყვინთვის გაცილებით ხელები PHP და პრობლემა კომპლექტი შვიდი, არამედ SQL, ან SQL, ეს არის ენა, რომელიც თქვენ იყენებთ გაიგო მონაცემთა ბაზაში. მაგრამ რა არის მონაცემთა ბაზა? ასევე ფიქრობთ მონაცემთა ბაზა, ამ ეტაპზე მაინც, როგორც, რომ, უბრალოდ, როგორიცაა Excel ფაილი, ან თუ თქვენ Mac პროფაილი ნომრები ფაილი, თუ თქვენ Google Apps შესახებ Google ცხრილების, ეს ეფექტურად ბაზაში, ან მართლაც კონკრეტულად რელატიური მონაცემთა ბაზა. რელატიური მონაცემთა ბაზა, ისევე, რაღაც რომ აქვს სტრიქონები და სვეტები, და თქვენ შეგიძლიათ ჩაწეროთ ნებისმიერი სახის ინფორმაცია ამ სტრიქონების ან სვეტების. მაგრამ რა ლამაზი SQL, და აქტუალური მონაცემთა ბაზა, არა მხოლოდ ცხრილები ან Google ცხრილები, არის, რომ თქვენ შეგიძლიათ გამოიყენოთ ენის რეალურად შეასრულოს შეკითხვებს ჩადეთ მონაცემები, ამოიღონ მონაცემები, უნდა ვეძებოთ მონაცემებით, კი რაც მთავარია, და თქვენ არ უნდა გამოვიყენოთ იგი საკმაოდ ხელით თქვენ შეიძლება, როგორც წესი, Google ცხრილების მოსწონს ეს. ასე რომ, SQL, არსებობს რამოდენიმე ძირითადი განცხადებებს ან ცალი ფუნქციონირება აშენდა. არსებობს მრავალი სხვა, ვიდრე ამ, მაგრამ შეიძლება დიდი მანძილი მხოლოდ იცის, რომ ამ ენის მოუწოდა SQL ცოტა ოთხი განცხადებები შეგიძლიათ ბერკეტები. წაშლა, ჩასწორება, ჩასვათ, დასძინა რიგები, განახლება, იცვლება რიგები და შერჩევა, დავუბრუნდეთ რიგები და ეს მართლაც რა SQL აკეთებს. ის მოქმედებს მთლიანად რიგები ასე რომ როდესაც თქვენ ჩადეთ ან ამოიღონ, ან განახლება, ან აირჩიეთ რა თქვენ დავუბრუნდეთ, როგორც ე.წ. შედეგი კომპლექტი, მასივი რიგები. რამოდენიმე რიგები მაგიდა. ასე რომ უკან დღეს, და კიდევ ამ დღეს, თქვენ შეგიძლიათ ურთიერთქმედება მონაცემთა ბაზის გამოყენებით ბრძანების, მაგრამ ეს არ არის განსაკუთრებით fun გამოყენება ეს შავი და თეთრი სტილი window და რეალურად შეასრულოს ბრძანებები და poke გარშემო თქვენს მონაცემთა ბაზაში. გრაფიკული ინტერფეისი, ან GUI, ბევრად უფრო სასურველია, სავარაუდოდ, და ასე ინსტრუმენტი, ჩვენ რეკომენდაციას და preinstalled თქვენ ელექტრო ეწოდება phpMyAdmin. ეს სულ დამთხვევა, რომ სახელი ამ რამ PHP ის, ეს მხოლოდ იმას ნიშნავს, რომ ხალხი ვინ დაწერა ეს პროგრამა თავს წერდა იგი PHP. მაგრამ ეს საბოლოო ჯამში დაახლოებით ადმინისტრირების მონაცემთა ბაზის სერვერი, როგორიცაა MySQL სერვერი რომ თქვენ შეიძლება, როგორც თქვენ არა, CS50 ელექტრო მოწყობილობების. ასე რომ იქ უფრო დეტალურად, ვიდრე ჩვენ უნდა აღელვებს დღეს მაგრამ რა არის მთავარი ის არის, რომ მარცხენა მხარეს არის ჩამონათვალი მონაცემთა ბაზა რომ თქვენ გაქვთ თქვენს კომპიუტერში, თქვენი CS50 ელექტრო მოწყობილობების, ან მოდის საბოლოო პროექტი, რომ თქვენ შეიძლება გვაქვს მესამე მხარის, კომპანიის საიტი ან ვებ სერვერი, რომელიც თქვენ შეიძლება გადახდის სივრცეში. ასე რომ მარცხენა არის მონაცემთა ბაზა, რომელთაგან ერთ-ერთი არის pset7 რომელიც მე ნასესხები შემდეგი კვირის pset, ხოლო შემდეგ ზედა არ შეამჩნია არსებობს bunch ჩანართების, რომელთაგან ერთ-ერთი არის მონაცემთა ბაზა, SQL, სტატუსი, მომხმარებლებს, ექსპორტი და სხვ. ასე რომ თქვენ შეგიძლიათ წასვლა დიდი გზა უბრალოდ ხვდებიან რომ ყველაზე ინტერფეისი არის ზედა მარცხენა სვეტი და მთელს ზედა მარჯვენა არსებობს. ასე რომ, რა შეგვიძლია რეალურად ვუყოთ? კარგად, მოდით დავიწყოთ ცოტა ინფორმაცია ასეთია. დავუშვათ, შემდეგ იმ შემთხვევაში, იქნება, მხოლოდ რამდენიმე დღის განმავლობაში, გსურთ განახორციელოს ნახვა მოუწოდა CS50 ფინანსთა, ეს საიტი საშუალებას გაძლევთ შეიძინოთ ციტირებით unquote და გაყიდოს აქციები. და ის აპირებს გაერკვნენ ღირებულება იმ აქციების, საბოლოო ჯამში, როგორც თქვენ, საუბარი Yahoo Finance. რომელიც, შესანიშნავად აქვს უფასო მომსახურება რომლის დროსაც თქვენ ვერ გაივლის საფონდო ticker როგორიცაა GOOG for Google, და ეს მოგაწვდით უკან Google- ის აქციები მიმდინარე ფასი გასული რამდენიმე წუთი მაინც. ასე რომ თქვენ გამოიყენოთ, რომ, საბოლოო ჯამში, რომ ვიტყვი, რომ შესახებ ყიდვა და გაყიდვა ფაქტობრივი აქციების გამოყენებით ვირტუალური ფული, მაგრამ პირველი, რაც მომხმარებელი აპირებს, რომ ეს შესვლისას ეკრანზე, რომელიც სთხოვს მათ მათი სახელი და პაროლი. ასე რომ, ერთ-ერთი პირველი გამოწვევები თქვენ pset7 იქნება განახორციელოს უკან ბოლომდე მონაცემთა ბაზის ცხრილების თუ გნებავთ, რომ აპირებს შესანახად ასაკი სახელები და პაროლები და საბოლოო ჯამში რა აქციების ფლობენ და რამდენი, და რამდენად ნაღდი აქვთ, ასე bunch სხვა რამ სხვა მაგიდები და ცხრილები. მოდით შევხედოთ, თუ როგორ ეს შესაძლოა, როგორც ჩანს ერთი შეხედვით. მე ვაპირებ დაბრუნდეს ელექტრო და მე აპირებს მისვლას ამ URL აქ phpMyAdmin localhost / phpmyadmin და დაინახავთ, რომ ეს იღებს ჩემთვის ინტერფეისი ზუსტად ისე, როგორც ვნახეთ screen shot, მე აქ აქვს დამატებითი მონაცემთა მოუწოდა ლექცია დღეს და ნება მომეცით წავიდეთ წინ პირველი და დააჭირეთ pset7. მე, როგორც ჩანს, რამდენიმე ვარიანტი, ერთი ახალი, შექმნა ახალი მაგიდა, და ბმული მომხმარებლებს, რომლებიც მაგიდა I უკვე შექმნილია. რა არის მაგიდა? ასე რომ, თუ თქვენ გამოიყენება Excel ადრე, და, თუ თქვენ მეორადი ნომრები ან Google ცხრილები, თქვენ გახსენით window და თქვენ მთელი bunch რიგები და სვეტები, მაგრამ მაშინ, როგორც წესი, სამუშაო გასწვრივ ბოლოში, ან ცალკე ჩანართი. შეგიძლიათ წარმოიდგინოთ, რომ თითოეული worksheet მაგიდა ასე რომ, მონაცემთა ბაზა, საბოლოო ჯამში, არის კომბინაცია ერთი ან მეტი მაგიდები, ერთი ან მეტი სამუშაო, რომელიც მსოფლიოში ნორმალური ცხრილების. ნება მომეცით წავიდეთ წინ და დააჭირეთ ამ worksheet რომ მე premade, მოუწოდა წევრებს, a.k.a. მონაცემთა ბაზის ცხრილში. და თუ მე გადახვევა ქვემოთ აქ, ნება მომეცით დააშორებს ცოტა, ეს არის ის, რაც phpMyAdmin ეუბნება ჩვენს შიგნით ამ მაგიდასთან ახლავე. ეს ცოტა გაუგებარია, პირველ რიგში, ერთი შეხედვით, რადგან UI არ არის ყველაზე ლამაზი რამ მსოფლიოში, მაგრამ რა არის საინტერესო ის არის, რომ ეს ნაწილი აქ. ID, სახელი და hash. წინასწარ, და თქვენ უნდა გადასცეს ამ პრობლემების მითითებული შვიდი, ჩვენ მოგცემთ ფაილი შეიცავს სუპერ პატარა მონაცემთა ბაზის ცხრილს, ნასესხები რეალურად საწყისი ჰაკერი გამოცემა პრობლემა ნაკრები ორი, შიგნით რაც არსებობს ექვსი რიგები. ერთი Belinda ყველა გზა ქვემოთ ერთი Zamyla, და შენიშნავს, რომ მარცხნივ იმ სახელისა უნიკალური პირადობის მოწმობები, როგორც ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი, რიცხვებით, და შემდეგ მარჯვენა ჰეშები. და თუ, შანსი, თქვენ არ ჰაკერი გამოცემა პრობლემა კომპლექტი, ორი, მაგრამ hash, ისევე, როგორც დაშიფრული პაროლი რამდენიმე აპირებს. ასე რომ, რა ხედავთ აქ დაშიფრული ვერსიები ექვსივე ჩვენი პაროლები პრობლემა მითითებული ორი ჰაკერების გამოცემა. ახლა მარცხენა რამოდენიმე GUI პერსონალი, რედაქტირება ამ row, კოპირება ამ row, წაშლის ამ row. მაგრამ რა საინტერესოა ახლა არის შემდეგი. მე შემიძლია რეალურად დაიწყოს ექსპერიმენტები ამ მაგიდასთან. ასე რომ, თუ მე და დააჭირეთ SQL tab, მე ამ დიდი ტექსტში ყუთი. და ეს არ არის, თუ როგორ ჩვენ ვაპირებთ ამის გაკეთება, როდესაც რეალურად წერა კოდი. უნდა იყოს მკაფიო, phpMyAdmin მხოლოდ ინსტრუმენტი, რომელიც არის აპირებს მოდით poke გარშემო მონაცემთა ბაზა და მოდით ექსპერიმენტი შეკითხვებს. ასე მაგალითად, ვარაუდობენ, მე შეასრულოს სწორედ ეს არის. არჩევა, რომელიც ერთ-ერთია იმ საკვანძო სიტყვები ვთქვი ადრე, ვარსკვლავი, რომელიც წარმოადგენს ყველა სვეტის მაგიდასთან. ის, რაც მაგიდაზე? ასევე, მომხმარებლებს. და შენიშნავს, რომ არსებობს ამ უცნაური კონვენციის SQL სადაც თქვენ ნამდვილად გამოიყენოს უკან ტკიპები, როგორც წესი, არ ერთჯერადი შეთავაზებები და არ ორმაგი შეთავაზებები როდესაც თქვენ საუბრობთ მაგიდები სახელები, ასე რომ, უკან გაცემა, არის ის, რომ ზედა მარცხენა თქვენს კლავიატურაზე ყველაზე სავარაუდოა. ნება მომეცით წავიდეთ წინ ახლა და დატოვოს, რომ მარტო და გადახვევა ქვემოთ და დააკლიკეთ გადასვლა, და ჩვენ რეალურად აპირებს იგივე. ჩვენ მხოლოდ შესრულებული SQL query ამბობდა აირჩიეთ ყველაფერი ვარსკვლავი საწყისი მაგიდა სახელწოდებით წევრებს, და რაც თქვენ დავუბრუნდეთ, ეს არის. საბოლოო ჯამში, ჩვენ შევძლებთ გავაკეთოთ, რომ იგივე კოდი, მაგრამ ახლა მინდოდა არ იყო მისი დანახვა ჩემს ბრაუზერში. კარგად მოდით რაღაც ცოტა განსხვავებული. ნება მომეცით წავიდეთ უკან SQL tab, და მოდით უბრალოდ, ვამბობთ, რომ რა? Zamyla დაკარგა ყველა მისი ფული, და ამიტომ ეს დრო ჩვენთვის წაშლა მისი, როგორც მომხმარებელს. ის აღარ შესასვლელად. ამიტომ, მე ვაპირებ ვთქვა წაშლა აქედან ასევე, შენარჩუნება კაპიტალიზაცია თანმიმდევრულობა, წაშლა წევრებს, სადაც. ასე რომ, ჩვენ შეგვიძლია, რომ ამ predicates, ან ამ შესარჩევ, ბოლოს ჩემი განცხადება სად და როგორ შეიძლება წავშალო Zamyla? მისი სახელი Zamyla, ასე რომ სვეტი, ერთ-ერთ გრაფაში დასახელდა, ასე რომ name = "Zamyla". და აქ მე ორმაგ შეთავაზებები და ერთჯერადი შეთავაზებები, თქვენ მხოლოდ უკან ტკიპები, როდესაც ვსაუბრობთ სახელები, მაგალითად, მაგიდები და სფეროებში. და ნება მომეცით დააჭირეთ აქ. და ახლა, ვებ-გვერდი რომ ცოტა uptight. ან, თქვენ ნამდვილად მინდა შეასრულოს წაშლა წევრებს, სადაც სახელი შეადგენს Zamyla? დიახ. ახლა, თუ ჩვენ დავუბრუნდებით ჩემი მაგიდა დაჭერით ასაკი შეამჩნევთ, რომ Hm. მე goofed. და, ფაქტობრივად, I ტიპის დაწკაპავთ მოშორებით ასე სწრაფად თქვენ კი არ ვხედავ წითელი შეცდომა, ალბათ. რა გავაკეთო არასწორი? აუდიტორია: თქვენ არ უნდა უნდა ესარგებლა მისი სახელი. დევიდ ჯ Malan: ჰო მთავრული და მისი სახელი, მაგრამ მისი username-- რეალურად მე გააკეთა რამდენიმე შეცდომებს, არა? ერთი, მისი სახელი არის Zamyla, ამას Z, და სვეტის სახელი სახელი, არ ასახელებს, მოდით ეს კიდევ ერთხელ გავაკეთოთ. ნება მომეცით წავიდეთ წინ და წაშლა წევრებს, სადაც სახელი შეადგენს გაცემა unquote "Zamyla". ყველა უფლება? ასე რომ, ეს გამოიყურება პატარა უკეთესია, მოდით მომეცით წავიდეთ გადაფურცლეთ ქვემოთ და დააჭირეთ ღილაკს Go. ის კვლავ აპირებს დაწეროთ at me რა თქმა უნდა. მე დააჭირეთ დიახ, და ახლა ჩვენ ვხედავთ, გულწრფელად ეს მოხდა, ნამდვილად სწრაფი, არანაკლებ ერთი მეორე, რა თქმა უნდა, ამ არის ზუსტად ის შეკითხვა, რომ მიიღო შესრულებული. იმის დასადასტურებლად, ნება მომეცით დააჭირეთ ასაკი და მართლაც, ახლა Zamyla გაქრა. ახლა მოდით გავაკეთოთ საპირისპირო. ვარაუდობენ, რომ Gabe სურს დარეგისტრირდეთ საიტზე. რა არის SQL შეკითხვაზე, თუ რა არის ბრძანების მე აკრიფოთ დაამატოთ Gabe? ისე ეს საკმაოდ მარტივია. INSERT INTO მომხმარებლებს, და ახლა იგი იღებს პატარა cryptic. მე უნდა მიუთითოთ, სერვერზე, რა სფეროებში მინდა მინიჭებას. მე ნამდვილად არ მაინტერესებს, რა Gabe პირადობის რაოდენობა, ამიტომ მე ვაპირებ გამოტოვება, რომ. მე ნაცვლად აპირებს ამბობენ სახელი, hash, და შემდეგ ღირებულებების მინდა დააყენა არ იქნება Gabe. და შემდეგ მისი hash, მე არ ვიცი. ასე რომ, მე ვაპირებ დატოვება, რომ, როგორც დიდი უნდა გააკეთოს. ჩვენ დავბრუნდებით რომ პრობლემა კომპლექტი სპეც, თუ როგორ რეალურად გაგვაჩნია. ასე რომ შეამჩნია, კიდევ ერთხელ, სინტაქსი. ჩადეთ მაგიდის სახელი, მაშინ parenthesized სია იმ სფეროებში, სვეტების გსურთ დაამატოთ ფასეულობები, და შემდეგ უბრალოდ ზუსტად იგივე შეკვეთა დარჩა მარჯვნივ ღირებულებების გსურთ დაამატოთ, და ეს მხოლოდ შეფუთვა, რადგან ტექსტი ცოტა ხნის. ახლა ნება მომეცით დააჭირეთ ღილაკს Go. ერთი რიგის შეიყვანეს. და ახლა თუ მე დაბრუნდეს ასაკი, რა საინტერესოა ის არის, რომ ეს არ არის მხოლოდ Gabe ახლა მონაცემთა ბაზა, რა აშკარად მისი ID? ისე ეს შვიდი. რატომ არის, რომ შვიდი, როდესაც მე არ დაამატოთ ეს? ასე რომ, ეს, ძალიან, არის ერთ-ერთი მახასიათებლები თქვენ მონაცემთა ბაზაში. ბევრი აშენდა ფუნქცია. გამოდის, რომ როდესაც განთავსებულია ამ მაგიდასთან, მე preconfigured ეს ავტომატურად მივანიჭოთ ID ისე, ის, რომ მდე. ასე რომ, თუ თქვენ ოდესმე poked გარშემო, და ჩანდა, თუ რა თქვენი Facebook ID ნომერი, ამ დღეებში, ეს ნამდვილად არ რამ უნდა გააკეთოს, მაგრამ Facebook როგორც API, განაცხადის პროგრამირების ინტერფეისი, რომლის დროსაც შეგიძლიათ მიიღოთ უკან მთელი bunch მონაცემები საკუთარ თავს, თქვენი მეგობრები, და თქვენი კავშირები. და რა უნდა იყოს ასეთი მაგარი, უკან დღეში, იყო ეძებოთ რა თქვენი Facebook ID ნომერი იყო. Mark Zuckerberg ის, მაგალითად, სამი რადგან იგი იყო ავტორი საიტზე. და როგორც ამბავი მიდის, მან შექმნა ორი ტესტი ანგარიშები, მომხმარებლებს ერთი და ორი, რომელიც მას შემდეგ წაიშალოს. ასე რომ, Zuck, როგორც მისი სახელი on Facebook, არის ID ნომერი სამი, და ყველა ჩვენგანს აქვს ნომრები გაცილებით უფრო დიდი, ვიდრე სამი ამ დღეებში. ფაქტობრივად, რაღაც მომენტში Facebook ჩამოშორდნენ კი გამოყენებით int, რომელიც არის 32-bit ღირებულება, გამოყენებით შემდეგი ნაბიჯი, არსებითად ხანგრძლივი ხანგრძლივი ისე, რომ ისინი განთავსდება კიდევ უფრო მომხმარებლებს რეგისტრაცია. ასე fun პატარა ისტორიული ფაქტი. ასე რომ, ეს მხოლოდ ძირითადი სინტაქსური რომელიც ჩვენ შეიძლება შეასრულოს რამდენიმე შეკითხვებს, მაგრამ ჩვენ შეგვიძლია რეალურად გაცაკეთოთ რამ ერთად SQL. და დაინახავთ, საბოლოო ჯამში, პრობლემა კომპლექტი შვიდი რომ თქვენ უნდა მიიღოს ნომერი დიზაინი გადაწყვეტილებები, მათ შორის იქნება რა ტიპის მონაცემები გამოიყენოს. ამიტომ ისევე როგორც C, არსებობს მონაცემები სახის მონაცემთა ბაზა, როგორიცაა MySQL, და მონაცემთა ტიპები, თქვენ უნდა აირჩიოს საწყისი შეიცავდეს ამ სფეროებში აქ. Char, varchar, Int, დიდი int, ათობითი თარიღი და დრო, და მრავალი სხვა. მოდით რეალურად ამის გაკეთება. მოდით ვიტყვი, რომ ჩვენ არ მხრივ ამ მომხმარებლის რეისები და ნება მომეცით წავიდეთ წინ და შექმნა, თავს, ლექციები მონაცემთა ბაზაში მოდით წავიდეთ წინ და წაშლა მაგიდა მაქვს, რომ აქ უკვე ასე რომ ჩვენ შეგვიძლია რეალურად შექმნა ამ. Whoops. მე ვაპირებ ვარდნა ამ მაგიდა, და ახლა მე ვაპირებ წავიდეთ ერთხელ ლექცია მონაცემთა აქ, მე ვაპირებ შექმნას მაგიდა მოუწოდა წევრებს და მოდით მხოლოდ ამის სამი სვეტით თავდაპირველად და დააჭირეთ ღილაკს Go. ახლა, უმეტესწილად, კიდევ ერთხელ, ეს მხოლოდ გამოყენებით ამ გრაფიკული ინსტრუმენტი მოუწოდა phpMyAdmin, და თუ რას ვაკეთებთ ახლა ქმნის მაგიდა. ასე რომ, ეს მოსწონს აპირებს ფაილი, New, და შექმნა ახალი Excel ფაილი. ასე რომ, ეს მთხოვდნენ რამდენიმე კითხვები, მარცხნიდან მარჯვნივ, რა არის სახელი პირველი სვეტი, და მერე სახელით მეორე სვეტი, და სახელი მესამე. მოდით ხელახლა ეს. ID და შემდეგ სახელი იყო ერთი, და შემდეგ hash იყო სხვა. მერე რა უნდა მონაცემთა ტიპი იყოს ახლა სფეროში, როგორიცაა ID? აქ არის მთელი სია მონაცემთა ტიპები ხელმისაწვდომი მონაცემთა ბაზა, და ახლა მოდით უბრალოდ წავიდეთ ერთად int. 32-bit არც მე არ ვფიქრობ, რეალურად მე აპირებთ უნდა მეტი 4 მილიარდი ასაკი ჩემს ანგარიშზე, ჩემი მომსახურება, ამიტომ მე ვაპირებ შენარჩუნება მოძრავი მომდევნო კითხვა. მე არ ვაპირებ, რომ განსაზღვროს სიგრძე და ღირებულებები, ეს არ ექვემდებარება შევსებას აქ int, თავისთავად. და ახლა შეგიძლიათ მიუთითოთ, როგორც ჩანს, რა ღირებულება, რომელიც მე არ ვაპირებ დააკონკრეტა. შედარება, მე არ ვიცი, რა არის. ატრიბუტი. ახლა ჩვენ რეალურად აქვს დიზაინი გადაწყვეტილება. ასე რომ, არსებობს რამდენიმე სფეროებში აქ, არა ყველა რომელიც გამოიყენება, მაგრამ ხელმოუწერელი მხოლოდ იმას ნიშნავს, რა? რომ int უნდა იყოს? მხოლოდ არასამთავრობო უარყოფითი. ასე რომ, ეს უნდა იყოს 0-მდე. არა, მე არ ვაპირებ შეამოწმოს რადგან მინდა, რომ ყველა მომხმარებელს უნდა ჰქონდეს პირადობის მოწმობა, ეს არ შეიძლება იყოს null. და მაშინ, მივიღებთ კიდევ რამდენიმე საინტერესო დიზაინის გადაწყვეტილებები მოსწონს ეს. ჩვენ დავბრუნდებით ამ მომენტში, მაგრამ რა, კიდევ ერთი თვისება მონაცემთა ის არის, რომ თქვენ შეგიძლიათ თქვათ, მონაცემთა ბაზის სერვერი წავიდეთ წინ და ოპტიმიზაცია თავს, თქვენი RAM და თქვენს მყარ დისკზე, ასე რომ ირჩევს და ჩანართები, და წაშლის, და განახლება მართლაც სწრაფი. განსხვავებით ამ pset5. თუ თქვენ სურდა რაღაც თქვენი hash მაგიდა, რომელიც ფიქრობთ მონაცემთა ბაზა, რომელიც უნდა გაეკეთებინათ ყველა მუშაობა მიღების თქვენი hash მაგიდასთან სწრაფად. ეს იგივეა, ცხადია, თქვენ. არა? თქვენ უნდა დააყენოს ყველა დროის ჯარიმა tuning რამ, მიღების ქეშირების ფუნქცია უფლება, მჭიდროდაა თუ როგორ მრავალი თაიგულების აქვს. მაგრამ რა ლამაზი, კიდევ ერთხელ, შესახებ მონაცემთა ბაზა თქვენ უბრალოდ punt ყველა ეს სხვა ადამიანი ვინც ფიქრობდა, რომ ეს მეშვეობით, და რა მე ვაპირებ ვთქვა აქ ქვეშ ინდექსი არის, რომ ჩემი ID სფეროში იქნება პირველადი გზა საიდენტიფიკაციო წევრებს ამ მონაცემთა ბაზაში. მე არ ვაპირებ, ვფიქრობ, საქართველოს Zamyla როგორც Zamyla, მე ვაპირებ, ვფიქრობ, მისი, როგორც 6. რატომ არის ეს, ალბათ, უკეთესი ინტუიციურად ვფიქრობ და მოდელი თითოეულ ინდივიდუალური რიგების გამოყენებით რიგი ნაცვლად რაღაც როგორც სიმებიანი, როგორიცაა Zamyla ან Gabe ან აღარ string მაინც? ჰო? აუდიტორია: ID უნიკალურია? დევიდ ჯ Malan: ამბობენ, რომ კიდევ ერთხელ? აუდიტორია: ID უნიკალურია? დევიდ ჯ Malan: ID უნიკალური, მაგრამ suppose-- როგორც ამ შემთხვევაში, ზოგადად, ერთად სახელები, ვფიქრობ, მე ასევე განაცხადა, რომ მხოლოდ ერთი Zamyla მსოფლიოში, და მხოლოდ ერთი Gabe. მე შეიძლება დააკისროს უნიკალურობა შეზღუდვა სიმები, ძალიან, თუ მინდოდა. ასე არ არის ცუდი აზრის. აუდიტორია: უფრო უსაფრთხო. დევიდ ჯ Malan: უფრო უსაფრთხო, რატომ? აუდიტორია: თქვენ ვერ გეტყვით, რომელიც რომელიც, როგორც მომხმარებელს. დევიდ ჯ Malan: OK, ვერ გეტყვით, თუ რომელი შესახებ რომელი ამიტომ იქ კონფიდენციალურობის ასპექტი კი, განსაკუთრებით, თუ პირადობის მოწმობები იქნებ გამოჩენა მისამართები. ასე რომ დარწმუნებული ვარ, რომ შეიძლება სახის სამუშაო, ძალიან. სხვა აზრები? ჰო? აუდიტორია: ეს ადვილია ოპერაციების int. დევიდ ჯ Malan: ეს არის რეალური kicker. უბრალოდ უფრო ეფექტური, ან ადვილია კომპიუტერი, შეასრულოს ოპერაციები რიცხვი. არა? Int არის გარანტირებული, 32-bit, ხოლო Zamyla რამდენიმე სიმბოლო Gabriel არის კიდევ რამდენიმე სიმბოლო Davenport მართლაც ხანგრძლივი, ამიტომ ეს არ არის განსაკუთრებით ეფექტური გამოყენება strings შედარების ფასეულობების და გამოიყურება for სფეროებში, განახლება და სფეროებში, თუ შეგიძლიათ მიიღოთ მოშორებით მხოლოდ ერთი რიცხვი. მხოლოდ 32 ბიტი. ასე სახელები, ძალიან, ამ გზით, არ უნდა იყოს უნიკალური, მიუხედავად იმისა, რომ ისინი, ალბათ, უნდა იყოს, და თუნდაც ამ გზით ძალიან შესახებ შეიძლება დაშვებული შეცვლა მისი სახელი. მოდით ახლა დატოვოს ეს როგორც პირველადი იდენტიფიკაციის შესახებ. ეს ეუბნება მონაცემთა ბაზა წავიდეთ წინ და ოპტიმიზაცია თავს ისე, რომ სახე ups on ID სუპერ სწრაფი. AI, horribly დაასახელა, უბრალოდ ნიშნავს Auto ნამატი, და ეს არის გამშვები ყუთი ჩვენ უნდა შევამოწმოთ მიუთითა, რომ ID სფეროში ავტომატურად განახლება ჩემთვის, და შემდეგ მე ვაპირებ გადადით უფლება აქ და გულწრფელად, მე არ აინტერესებს ნებისმიერ სხვა ამ სფეროებში. რა თქმა უნდა, არა. ამიტომ, მე ვაპირებ, რომ დაბრუნდეს აქ, პირველი სვეტი მე უნდა მიუთითოთ სახელი და hash, და მოდით მინიმუმ ფოკუსირება მეორე დღეს. Int ალბათ არ არის სწორი ზარი, ისე რაც უფრო გრძნობა, ალბათ? აუდიტორია: ტექსტი. დევიდ ჯ Malan: ამბობენ, რომ კიდევ ერთხელ? აუდიტორია: ტექსტი. დევიდ ჯ Malan: ტექსტი? OK, მე გავიგე ტექსტი. რა? ჩვენ სახის გაქვთ bunch of არჩევანი რომ არის ტექსტური ხასიათისაა. ასე რომ, როდესაც, და რატომ, ამას თქვენ იყენებთ ამ? ასევე char, პირიქით, თუ რა შეიძლება ვფიქრობ, ეს არ არის ერთი ხასიათი. ეს კონკრეტული რაოდენობა სიმბოლო. ასე რომ, თუ ჩვენ ვიცით, რომ ყველა სახელები როგორი უნდა იყოს რვა სიმბოლო, როგორც უნდა იყოს, საერთო ხანდაზმული კომპიუტერული სისტემების, მე შეიძლება ითქვას, char და მაშინ მე ვიტყოდი, 8 აქ. ეს მაშინ, როდესაც მესამე სვეტი ხდება გამოიყენება, როდესაც შექმნა მაგიდასთან. მაგრამ ეს სახის შემაშფოთებელი რადგან ზოგიერთი ადამიანი შეიძლება გსურთ აქვს აღარ სახელი ვიდრე რვა სიმბოლო, ზოგიერთი ადამიანი დაგვჭირდება აქვს მოკლე სახელი, რატომ ჩაიდინოს თავს კონკრეტული რაოდენობის? რატომ არ აქვს ცვლადი ნომერი chars და მხოლოდ ამბობენ, რომ მაქსიმალური სახელი არის, მე არ ვიცი, როგორიცაა 64 სიმბოლო. მე არ ვფიქრობ, რომ ნებისმიერ მეგობრები, რომლებიც აქვს სახელების უმეტეს 64 სიმბოლოს, და მაშინაც კი, თუ ძალიან მოკლე შესაძლებელი რა თქმა უნდა bump ეს თვითნებურად. ასე varchar ცვლადი ნომერი სიმბოლო. ტექსტი არ არის ცუდი ინსტიქტი, გულწრფელად რომ ერთგვარი აკეთებს რასაც ამბობს, მაგრამ ველში შეიძლება იყოს როგორიცაა 65,000 bytes მაინც. ეს, ალბათ, გადაჭარბებულია, რომ სფეროში და, ფაქტობრივად, yup, 65.535. ეს, ალბათ, გადაჭარბებულია, რომ სახელი, ამიტომ ჩვენ გამყარებაში, როგორც წესი, ერთად varchars ტექსტური სფეროში და hash, ძალიან. Hash, თურმე, ჩვენ შეგვიძლია ამის გაკეთება varchar ასევე, თუ რაღაც მსგავსი, მაგრამ ჩვენ არ შევაჩერო დღეს კრიპტოგრაფიის არსებობს და ციფრები რომ ჩვენ შეიძლება რეალურად გსურთ გამოიყენოთ მისი სიგრძე. მაგრამ ნება მომეცით გადახვევა ქვემოთ მარჯვნივ. თქვენ შეიძლება ჰქონდეს მხოლოდ ერთი პირველადი მაჩვენებელია მაგიდა, მაგრამ არ მინდა, ნებისმიერი ამ, ახლა, სახელი, იტყვით? რა უნდა username ეფუძნება ბუნდოვანი გაგება ამ ოთხი ვარიანტი? მხოლოდ მათი სახელები? აუდიტორია: უნიკალური. დევიდ ჯ Malan: ასე რომ უნიკალური, არა? გამოდის, რომ არა მხოლოდ შეიძლება გითხრათ, მონაცემთა ბაზა, წინასწარ, ეს არის პირველადი გზა საიდენტიფიკაციო სფეროებში. თქვენ შეიძლება ითქვას, რომ ეს არის იქნება უნიკალური სფეროში. ეს არ იქნება რაც მე დაეყრდნონ, მაგრამ მე მინდა, მონაცემთა ბაზა, არსებითად, რომ თუ მდგომარეობა, ამიტომ რომ თუ ოდესმე ცდილობდა რეგისტრაცია ორი მომხმარებლებს იგივე სახელი, მონაცემთა ბაზის ბინა, არ აპირებს ნება მომეცით. მე შეიძლება გარკვეული დამატებითი კოდი in PHP, რაც ხელს უშლის, ისევე, მაგრამ ბაზაში, ძალიან, შეუძლია უზრუნველყოს , რომ ეს არასდროს მოხდება. ახლა, როგორც განზე, მით უმეტეს, ფიქრობთ, რომ საბოლოო პროექტების, გვახსოვდეს, რომ ეს მაჩვენებელი და სრული ტექსტი არის ძალიან სასარგებლო. თუ თქვენ გაქვთ დიდი მონაცემთა ბაზა, და არა ათობით, არამედ ასობით და ათასობით ან თუნდაც მილიონობით სფეროებში, თქვენ შეგიძლიათ ასევე გითხრათ მონაცემთა ბაზის წინასწარ ეს არის სფეროში ვაპირებ ეძებენ ბევრი. შესაძლოა, მისი სახელი, შესაძლოა, ეს ბიო, თუ თქვენ მიღების Facebook მსგავსი ვებგვერდზე, აქვს პუნქტები მომხმარებლის დაშვებული შენახვა და თუ გვინდა, რომ ვუთხრა ბაზაში წინასწარ მე ვაპირებ ძებნას ამ სფეროში ბევრი, მაგრამ ეს არ არის აუცილებელი უნიკალური, თქვენ შეგიძლიათ მიუთითოთ შექმნა ჩემთვის ინდექსი. ან, შეიძლება ითქვას, ასევე ნება მიბოძეთ გავაკეთოთ სახის თვითნებური ძიება როგორიცაა Command ან კონტროლის F, როგორც თქვენ შესაძლოა, სიტყვა პროცესორი, ასე რომ თქვენ შეიძლება შევხედოთ თვითნებური სიმები ან substrings ამ სფეროში. სხვა სიტყვებით, ჩვენ ვიღებთ იმ დროისთვის სემესტრის სადაც თქვენ არ უნდა ფიქრი როგორ უნდა განახორციელოს რამ ეფექტურად. თქვენ უბრალოდ უნდა იცოდეს, თუ რა დიზაინი გადაწყვეტილებები მიიღოს ისე, რომ თქვენ გამოყენების უფლება ინსტრუმენტები სავაჭრო რათა მხარი მახასიათებლები რომ სხვა ადამიანების შევქმენით თქვენთვის. ასე რომ Recap, პირველადი უნდა იყოს მხოლოდ ერთი, თქვენ შეიძლება იყოს მხოლოდ ერთი, და ეს არის, რაც თქვენ ჩადენის გამოყენებით საიდენტიფიკაციო სფეროებში ცალსახად. უნიკალური მხოლოდ იგივე სულისკვეთებით, მაგრამ შეიძლება მხოლოდ ზოგჯერ გამოიყენოს იგი, მაგრამ გსურთ მონაცემთა ბაზაში დააკისროს მას. ინდექსი მხოლოდ იმას ნიშნავს, წინასწარ დაჩქარდეს რამ მდე მომავალში ასე რომ, შემიძლია ძიება რამ ამ სფეროში. და შემდეგ სრული ტექსტი ზოგადად პუნქტებში, ან ესეები, ან დიდი ორგანოების ტექსტის სადაც თქვენ შეიძლება ასევე მინდა ველური ბარათები, როგორიცაა ექვივალენტი ვარსკვლავი. უფლება. ასე რომ, სახის ბევრი ერთდროულად. მოდით ვნახოთ, თუ ჩვენ არ შეგვიძლია გამოიხადოს რამდენიმე ამ თვისებების და შემდეგ ავაშენოთ რაღაც საკმაოდ მარტივი, მაგრამ ძლიერი. ასე შორის სხვა დიზაინი გადაწყვეტილებები თქვენ საბოლოოდ აპირებს ჰქონდეს ერთად ხაზები შენახვის სისტემებში. და ნება მომეცით უბრალოდ ნახსენები ეს მოლოდინში საბოლოო პროექტების, და მოლოდინში მოდით ვთქვათ არ მოდით გავაკეთოთ ეს. მოდით ავაშენოთ ეს პატარა განაცხადის პირველი. მე ვაპირებ წასვლას ჩემს ტერმინალში window, და აქ არ არის მხოლოდ counter.php, რომელიც ჩვენ ახლა აპირებს თავი დაეღწია, როგორც აღარ გერმანე, მაგრამ ჩვენ გვაქვს მთელი თაიგული დირექტორიების და ეს იქნება ძალიან მსგავსი სულისკვეთებით, რა დაინახავთ პრობლემების შექმნას შვიდი. ასე რომ, ჩვენ გვაქვს სამი საიტები მოიცავს საზოგადოებრივი და შაბლონები, რომელიც არის ზუსტად ის, სადაც ჩვენ შეჩერდით ორშაბათი მთელი MVC პარადიგმა. და recap, საჯარო აპირებს მისვლას ნებისმიერი ფაილი, რომელიც მინდა მომხმარებლებს რეალურად v შეძლებს ეწვევა მათი ბრაუზერის მეშვეობით URL. Template. რა მივიღეთ ამით თარგები? რა სახის პერსონალი? იქ არ იყო ბევრი, მაგრამ რამდენიმე ფაილი მინიმუმ ორშაბათს. ჰო. აუდიტორია: ზედა და ქვედა? დევიდ ჯ Malan: ზედა და ქვედა. ასე რომ, ჩვენ გვაქვს რაღაც მსგავსი, რომ დღევანდელ დღეს. ჩვენ მივიღეთ რამდენიმე ფაილი მაგრამ Footer ვხედავ, Header მე ვხედავ, და მაშინ რამოდენიმე სხვა ფაილი. ასე რომ, ეს არის ეკვივალენტი საქართველოს V MVC ხედი, რომელიც, კიდევ ერთხელ, იქნება ცოტა მეტი ნათელი პრობლემა მითითებული შვიდი, მაგრამ ეს მხოლოდ საქაღალდეში ვარ აყენებს ბევრი ჩემი ესთეტიკას. ბევრი ჩემი HTML, ბევრი ჩემი ფორმები. იმავდროულად, მოიცავს, კიდევ ერთი მომსახურება რომ აქვს ეს სამი ფაილი და მოდით მიიღოს სწრაფი შევხედოთ ამ. მე ვაპირებ წავიდეთ წინ და გახსენით config.php. როგორც ირკვევა, ბევრად როგორც ადრე ვადა, თქვენ მკვეთრი შედის CS50 dot სთ pset7. დღეს მაგალითად, თქვენ აპირებს გავაკეთოთ ეკვივალენტს, რომ ერთად მოითხოვს განაცხადი რომელიც ეფექტურად მოიცავს ამ რამდენიმე ხაზები. ასე უნდა იყოს მკაფიო, ეს არის ფაილი სახელად config.php. და შენიშნავს, რასაც ის აკეთებს. ეს აშკარად აკეთებს რაღაც cryptic, გარდამტეხი შეცდომა შეტყობინებები ასე რომ თქვენ შეგიძლიათ ნახოთ მათი ბრაუზერი. ეს, მაშინ, როგორც ჩანს, თუ ორი სხვა ფაილი ასე რომ, ეს, როგორიცაა მოიცავს C, და მაშინ ეს ჩვენ არ ვხედავთ, და ჩვენ ეყრდნობოდა, ეს თურმე on რომ კალათა, როგორიცაა ფუნქცია. ეს ნიშნავს, რომ cookie ნების უნდა დაუბრუნდეს და სხვა. რატომ არის ეს საინტერესო? ისე, თუ ჩვენ დავუბრუნდებით დირექტორია და გახსენით, მაგალითად, constance.php. გაითვალისწინეთ, რომ PHP არ მხარდაჭერა მუდმივები ეს არ არის საკმაოდ, როგორიცაა განსაზღვრავს in C. ამის ნაცვლად, თქვენ სიტყვასიტყვით ამბობენ, განსაზღვრული, და ცნობა რომ მე ინახება წინასწარ ოთხი მუდმივები ფაილი. ერთ დღეს ბაზაში დაგავიწყდათ, ჩემი სახელი, და სახელი სერვერზე. ასე რომ ეს რეალურად იქნება საკმაოდ მსგავსი პრობლემა კომპლექტი შვიდი. და ბოლოს, და ეს არის სადაც მე ვარ ვაპირებ კიდევ რამდენიმე ლამაზი ფუნქციონალური პერსონალი, in functions.php არის bunch of კოდი ჩვენ წერილობით, და მე მოიპარეს ზოგიერთი ამ საწყისი პრობლემა ნაკრები შვიდი დღეს, რომ ჯერ bunch რამ და მოდით შევჩერდეთ ერთ-ერთი მათგანი კერძოდ. ამ ფუნქციის აქ, შეკითხვაზე, აპირებს PHP ფუნქცია ჩვენ მოვუწოდებთ რათა შესრულდეს SQL. მომენტში წინ იყო გამოყენებით phpMyAdmin, მაგრამ ეს მხოლოდ ამისთვის სახის სასწავლო მიზნებისათვის და დიაგნოსტიკის მიზნით და აღარც თქვენს მონაცემთა ბაზაში მითითებული. როცა რეალურად გამოიყენოთ თქვენი მონაცემთა ბაზა, თქვენ, ადამიანური, აშკარად არ აპირებს უნდა უბიძგებენ ვებ გვერდი ყოველ ჯერზე ვინმე რეგისტრაციას. თქვენ აპირებს დაწეროს კოდი, რომელიც ჩანართები და წაშლის ასაკი მოთხოვნა, და ჩვენ ვაპირებთ, რომ ამის გაკეთება გზით შეკითხვის ფუნქცია. თუ მე ახლა გადახვევა down, არსებობს იქნება რამდენიმე თვისებები. Redirect აპირებს იქნება ფუნქცია ჩვენ წერდა თქვენ, რომელიც საშუალებას გაძლევთ გაუგზავნე მომხმარებელს სხვა URL, და გამოიტანოს ფუნქცია, საკმაოდ მოსწონს დავინახეთ, ორშაბათს, რომ რეალურად უწევს თარგი, მაგრამ უფრო ამ წელს ფორმა pset7 საკუთარი გავლა. ახლა, მოდით წავიდეთ წინ და ამის გაკეთება. ნება მომეცით წასვლას ჩემი ლექციები მაგიდა და ვხედავთ, რომ იქ გაკეთებული არაფერია აქ უბრალოდ არ არის, და ნება მომეცით წავიდეს ჩემი საჯარო დირექტორია, სადაც არსებობს მხოლოდ ერთი ფაილი, index.php. ეს ფაილი არის სუპერ მარტივი ამ ეტაპზე, ეს გამოიყურება, ისევე, როგორც ეს. ძალიან ჰგავს, თუ როგორ ჩვენ შეჩერდით ორშაბათს. მე მოითხოვს ფაილის config.php, რომელიც მოიცავს დირექტორია, რომელიც არის dot dot, ჩემი მშობლები, და მაშინ ის უბრალოდ გაწევის ფაილი. რა არის ეს ფაილი? მოდით გახსენით ჩემი თარგები form.php, და ჩვენ ვხედავთ ამ. სუპერ მარტივი, როგორც ჩანს, ამ ფორმით აპირებს წარმოადგინოს $ _GET და $ _POST. სწრაფი საღი აზრის ქვითარი. ფაქტიურად ვიზუალურად ძიება ფაილი. მეთოდი შეადგენს პოსტი. ასე რომ, ის არ აპირებს გამოიყენოს URL, როგორიცაა Google აკეთებს, ის აპირებს დასალაგებლად დამალვა ინფორმაცია უკან სცენები და ეს შეიტანენ ფაილი სახელად register.php, და ეს ფაილი ჩვენ ჯერ არ დაწერილი მაგრამ რას აპირებს უნდა გამოიყურებოდეს, ეს არის. თუ მე ცალკე, ეს არის რა localhost / index.php ჰგავს. და კიდევ ერთხელ, სერვერის უბრალოდ ვთქვათ index.php. შევა. ასე რომ, სადაც ჩვენ , და რა მინდა რომ გავაკეთო არის, რომ სწრაფად აკრიფოთ რამ დავითის მსგავსად, და შემდეგ ჩემი ტელეფონის ნომერი, რომელიც იტყვის, 617-555-1212 ახლა, რეგისტრაცია და ახლა register.php არ იქნა ნაპოვნი. ასე რომ მე უნდა შეასრულოს ეს. მოდით სწრაფად whip მსგავსი რამ up. ნება მომეცით წასვლას ჩემი საჯარო დირექტორია და ამის gedit of register.php, და ახლა მე ვაპირებ წავიდეთ წინ და დაიწყოს PHP რეჟიმში, როგორც ჩვენ ორშაბათს, და ახლო PHP ს აქვს, და მოდით რამდენიმე რამ. ასე რომ, ერთი, მე ვიცი, რომელმაც წერილობითი, რომ ფორმა, რომ მინდა შემოწმება შემდეგ. თუ ეს ცარიელი, მიუხედავად შესახებ აკრეფილი, რომ სახელი სფეროში, მაშინ მე ვაპირებ ვთქვა რაღაც როგორიცაა ბოდიში დაკარგული სახელი. ბოდიშს, იმავდროულად, არ აშენდა PHP რამ, ეს ფუნქცია ჩვენ წერდა in functions.php for pset7 ასე რომ თქვენ გაქვთ ეს. სხვაგან, თუ სხვა სფეროში არის ცარიელი, ნომერი, მაშინ მე აპირებს ბოდიში მოუხადოს შესახებ და აცხადებენ, რომ დაკარგული ნომერი. გადარჩენა ამ ფაილის. ახლა მოდით დავუბრუნდეთ ჩემს ბრაუზერში, დავუბრუნდეთ ფორუმის სცადეთ კიდევ ერთხელ. რეგისტრაცია. OK. არაფერი მომხდარა, რაც კარგია. მე არ მიიღოს შეცდომა. მაგრამ თუ ნაცვლად, მოდით განაახლეთ ეს გვერდზე და არ უზრუნველყოფს რაიმე. რა იგი. გავაკეთოთ, რომ. რეგისტრაცია. რა გავაკეთო არასწორი? თუ ცარიელი, $ _POST სახელი. ამბობენ, კიდევ ერთხელ? ოჰ, რა თქმა უნდა. დამავიწყდა ყველაზე მნიშვნელოვანი ნაწილი, რომელიც არის მოითხოვს ("../ მოიცავს / config.php."). მე უნდა ხელმისაწვდომობის ბოდიში ფუნქცია, რომელიც ამიტომ არაფერი არ ხდებოდა. ფუნქცია არ არსებობს. მოდით ცდილობენ ამ ერთხელ. მოდით განაახლეთ გვერდი, დააწკაპუნეთ რეგისტრაცია. OK. ეს არის. ასე რომ, გამომავალი ჩვენ აი, აქ არის შედეგი მოუწოდებდა ბოდიშს ფუნქცია, სუპერ მარტივი, და ეს უბრალოდ ბეჭდავს out რაც მე ვაძლევ მას როგორც არგუმენტი. ყველა უფლება, მოდით ვითანამშრომლოთ. მოდით გთავაზობთ, ჩემი სახელი დავითის მსგავსად, რეგისტრაცია, დაკარგული რაოდენობა OK მოდით გთავაზობთ, რომ ძალიან. 617-555-1212. რეგისტრაცია. OK. ასე რომ ყველა კარგად არის, უბრალოდ არაფერი საინტერესო ხდება. ასე რომ, ახლა მოდით რაღაც უფრო საინტერესო მოხდეს მოსწონს ეს. ნება მომეცით წასვლას phpMyAdmin, და მოდით რეალურად შევქმნათ ცხრილი სახელად წევრებს, მე ვაპირებ, რათა ეს სამი სვეტები, და მე სწრაფად შექმნა ID და შემდეგ სახელი და შემდეგ ნომერი, და ID სფეროში ვარ დატოვებას აპირებს, როგორც int. სახელის ველი მე ვაპირებ უნდა დატოვონ, როგორც varchar, და ჩვენ ვიტყვით, 64, გარკვეულწილად თვითნებურად. ნომერი მე ვაპირებ რათა, იცით, რა? ჩვენ ვაპირებთ შევიდა მხარს ვუჭერთ აშშ ნომრები აქ, ამიტომ მე ვაპირებ, რომ რამე როგორც char და შემდეგ 10 სიმბოლო მაქსიმალური რეგიონის კოდი და შემდეგ შვიდი ციფრი. და მერე აქ, მე ვაპირებ დააკონკრეტა ავტომობილი ნამატი ამ სფეროში, რომ ეს ძირითადი გასაღები, და მე ვაპირებ წავიდეთ წინ და არა შეამოწმეთ ამ სხვა საშუალებები. ასე რომ, როდესაც მე საბოლოოდ დააჭირეთ Save და მე ისევ ჩემს მომხმარებლებს მაგიდა, ეს არის, თუ რას ჰგავს, თუ მე ახლა დააჭირეთ New Tab სტრუქტურა. ასე რომ, ეს, უნდა იყოს ნათელი, არის მხოლოდ phpMyAdmin გზა ამბობდა, რომ თქვენი მონაცემთა ბაზის ცხრილი აქვს პირადობის მოწმობა, სახელი და ნომერი იმ კერძოდ კონფიგურაციის და ჩვენ იგნორირება დანარჩენი სფეროებში იქ არის. ასე რომ, ახლა რა უნდა გავაკეთოთ? ასე რომ, თუ მე ახლა ჩემს კოდის, თუ ყველაფერი კარგად მინდა შეასრულოს შემდეგ შეკითხვაზე. ჩადეთ და შემიძლია მხოლოდ ამბობენ ასაკი მე არ მკაცრად საჭიროა იმ უკან ტკიპები, თუ ის არ არის სახიფათო სიტყვა, როგორიცაა მომხმარებლებს. მე ვაპირებ ვთქვა, სახელი, ნომერი, და მერე აქ ვარ არ ვაპირებთ მძიმე კოდი ციფრი ღირებულებების ამჟამად. მე ვაპირებ დააყენა ორი კითხვის ნიშნები. და ეს კონვენცია მრავალ ენაზე რომლის მიხედვითაც, თუ გსურთ აქვს placeholder სიმებიანი თქვენ აპირებს გამოიყენოს კითხვა ნიშნები, იმის გამო ჩვენ დავბრუნდებით სტატისტიკა შესახებ უსაფრთხოებისა და აქ მე ვაპირებ გაკეთებას იმ ორი მიმართულებით პოსტი სახელი, და შემდეგ დაპოსტოთ ნომერი, და ახლა ფაილის შენახვა. და ახლა მე ვაპირებ ქვევით აქ არის სუპერ უბრალოდ ვთქვა, rendersuccess.php, რომელიც იქნება ერთი თარგი. მე ვაპირებ, რომ შევქმნათ მართლაც სწრაფი. Geditsuccess.php და მე უბრალოდ აპირებს ვთქვა H1 წარმატებას, რომ ფაილი. ყველა უფლება. ახლა, მოდით, დავუბრუნდეთ ბრაუზერში, სადაც მე ვიყავი ადრე. მოდით წავიდეთ წინ და დაადასტურეთ მე დავწერე დავით, მე დავწერე ტელეფონის ნომერი, რეგისტრაცია. რა იგი. რა გავაკეთო არასწორი? ასე რომ, მე ხედავს შეცდომა აქ, თქვენ არ შეცდომა თქვენი SQL syntax. ნება მომეცით გადასვლა უკან gedit, ნება მომეცით დაბრუნდეს register.php, და რა მე გამომრჩეს, რომ მნიშვნელოვანი იყო ბოლო დროს? მინდა ეს. გსურთ ვიცით, რომ სხვა, ვიდრე რომელსაც შენიშნა ადრე, მაგრამ მე უნდა ეს. ახლა მოდით დავუბრუნდეთ და ეს იყო სასარგებლოა, ბრაუზერის და სწორედ ამიტომ config.php ჩვენ შამფურზე შეცდომები. მოდით წავიდეთ წინ და განაახლეთ დააჭირეთ გაგრძელება წარმატება. ახლა ნება მომეცით წავიდეთ მეტი ჩემს მონაცემთა ბაზა აქ და დაწკაპეთ მომხმარებელი, და დაათვალიეროთ, და შენიშნავს, მე ახლა დავითი ჩემი მონაცემთა აქ. ახლა ტექნიკურად ამ ნახვა არ არის საჯარო ინტერნეტით, ასე რომ მე არ შეიძლება ჰქონდეს სხვა ხალხი აყენებს აქ, მაგრამ თუ მე ახლა სურდა, რადგან მაგალითად, გაგზავნის თავს ტექსტური შეტყობინება. მოდით წავიდეთ გარეთ კიდურის აქ და თუ ეს რეალურად მუშაობს. მე ვაპირებ წავიდეთ წინ და წაშლა row და ჩვენ ბუნდოვანი ამ გარეთ video შემდეგ ასე რომ, ჩვენ არ გვაქვს მთელი ინტერნეტ texting me, და ახლა ჩვენ ახვიდეთ ბრაუზერი და ჩვენ წავიდეთ მეტი ლექციათა და ჩვენ აკრიფოთ სხვადასხვა ნომერი აქ, რეგისტრაცია, წარმატება. ასე რომ, ახლა, ჩემი ნომერი სავარაუდოდ in მონაცემთა ბაზა, და ახლა სახალისო ნაწილი. მოდით რეალურად გამოიყენოს PHP უნდა გააკეთოს რაღაც პროგრამულად, ან ბრძანება ხაზის ან სხვაგან, და ახლა მე მხოლოდ აპირებს შენარჩუნება ეს მარტივი და მე ვაპირებ წასვლას ჩემი დირექტორია აქ და შემდეგ. Gedit script ვთქვათ, ჩვენ გამოგიგზავნით ეძახით ტექსტი, #! / user / bin / env PHP, როგორც დავინახეთ, ბოლო დროს. PHP. ახლა მე ვაპირებ არ საჭიროებს მოიცავს config.php, მიუხედავად იმისა, რომ ეს შეიძლება გამოიწვიოს უმნიშვნელო შეცდომა. და ახლა მე ვაპირებ წავიდეთ წინ და ვთქვათ რიგები, შეკითხვაზე, აირჩიეთ star წევრებს, და აი, ახლა მე ვაპირებ ამის გაკეთებას ტექნიკა ბოლო დროს თითოეული რიგები row. და მე ვაპირებ რაღაც უბრალო. Printf, ასე ვთქვათ, სახელი ამ და ნომერი არის ეს, წარმატებული n. და ახლა მე ვაპირებ გაკეთებას ზედიზედ ციტირებით unquote სახელი, და ზედიზედ გაცემა unquote ნომერი, და ახლა მოდით წავიდეთ წინ და ჩემი ტერმინალის ფანჯარაში chmod ამ + x რათა ეს სცენარი მოუწოდა ტექსტი გაშვება. და ახლა მოდით აწარმოებს ტექსტი. OK, ასე რომ პროგრესი. ასე რომ, მე ახლა დაწერილი ბრძანების ხაზი script, ენის მოუწოდა PHP, რომ, იმის გამო, რომ საჭიროებს ხაზი, აქვს წვდომა ყველა იმ კონფიგურაციის მუდმივები, რომ მითითებული. მონაცემთა ბაზის სახელი და სხვ. სინამდვილეში, უბრალოდ უნდა იყოს მკაფიო რომ ეს არ არის Fluke, ნება მომეცით წავიდეთ წინ და რეგისტრაცია, მართლაც სწრაფი, ვინმეს მოსწონს რობ და მისცემს მას 555-1212 ნომერი. და ახლა, თუ მე აწარმოებს script კიდევ ერთხელ, შეამჩნია ძალა რასაც ჩვენ ვაკეთებთ მონაცემთა ბაზაში. ახლა მე მაშინვე ჩანს, თუ რა დანარჩენი ორი რიგები არის ჩემს მონაცემთა ბაზაში. ახლა მოდით ცდილობენ რაღაც კიდევ fancier შიგნით, და ეს არის ამის ნაწილი ჩვენ არ ტესტირება წინასწარ, ასე რომ, ბოლო დროს მე ეს წავიდა horribly awry, ჩვენ გვაქვს ვიდეო რომ ეფექტი. რეალურად, yeah, სასაცილო განზე. ასე რომ, ბოლო დროს, ლექცია, როგორც ორი წლის წინ, ჩვენ გადავწყვიტეთ, გადავწყვიტე, რომ იყოს ყველა ეს იქნება დიდი იდეა დინამიურად დააგენერიროთ ელ კლასი გამოყენებით მთელი მონაცემთა ბაზაში CS50 სტუდენტები, რომელმაც მოგვცა მათი ნომრები და მათი მობილური ტელეფონები მატარებლების, რომელიც თქვენ შეიძლება გავიხსენოთ pset0, როგორ გამომდინარე, თურმე მქონდა მცირე bug ჩემი პროგრამა და გააკეთა რამდენიმე შეცდომები, 2012 წელს, მე ვფიქრობ. რომლის დროსაც, ერთ-ერთი მქონდა ციკლი, რომელიც ზუსტად ამ სახის რამ, iterating მეტი მონაცემთა ბაზაში, მიღების სახელი მონაცემთა ბაზაში, სახელი მონაცემთა ბაზიდან და შემდეგ ყოველ iteration რომ მარყუჟი I წერილი გაუგზავნა. მაგრამ ნაცვლად გაგზავნის ელ, მე გაგზავნილი ერთი email პირველი iteration, და ორი ელექტრონული მეორე iteration, გაიგზავნა სამ წერილებს მეორე iteration, რომელიც როგორც თქვენ შესაძლოა გავიხსენოთ ჩვენი განხილვა asymptotic notation ეს დიდი O ცუდი, ისევე n კვადრატში რამდენი შეტყობინებები გავუგზავნე, მაგრამ ეს არ იყო კი წერილებს ეს იყო ტექსტური შეტყობინებები. და როგორც მოგეხსენებათ, დასწრება არ არის სუპერ მაღალი დასასრულს სემესტრში და ასე, რომ ეს იქნება მიმზიდველი at დრო, რომ ამბობენ, "რატომ არ კლასში?" ტექსტში გაგზავნა I გაგზავნილი მთელი კლასი, და ეს იყო სასაცილო მომწონს 50% კლასი, მაგრამ 50%, რომელთაგან ზოგიერთი freaked out, მე გადაუგზავნა წარმოუდგენლად apologetic sweet შენიშვნები თანამშრომლებს ბოდიშს მოიხდიდნენ გაცდენა ლექცია მხოლოდ ეს კიდევ ერთხელ, არა? ასე რომ horribly awry. ასე რომ, სული, მოდით ცდილობენ ამ კიდევ ერთხელ, მაგრამ მხოლოდ ჩემი ნომერი. წინასწარ, functions.php, მე დაწერილი ამ ფუნქციას აქ. ეს ე.წ. ტექსტი, და ეს იღებს სამ არგუმენტს. ნომერი, გადამზიდი, და გაგზავნა. მე გამოყენებით შეცვლა განაცხადი, რომელიც შესანიშნავად PHP მიიღოს strings, არა მხოლოდ რიცხვებით, და მე არ განახორციელოს ყველა მხარდაჭერისათვის არის, მე უბრალოდ გაკეთდეს AT & T და Verizon. იმიტომ, რომ თურმე რომ ამ მატარებლების მათ აქვთ ელ SMS გეითვეი, რომლის დროსაც თქვენ შეგიძლიათ რეალურად ელ მისამართი როგორიცაა ტელეფონის ნომერი vtext.com და თუ მომხმარებელი არ დაბლოკა შეტყობინებები, გავლა ტექსტის გაგზავნა. ახლა ამის გაკეთება, მე ვაპირებ, რომ დაამატოთ ერთი ნამდვილად სწრაფი ჩემს მონაცემთა ბაზაში. მე ვაპირებ წასვლას ჩემი სტრუქტურა, და მე ვაპირებ წავიდეთ წინ და დაამატოთ სფეროში ბოლოს მაგიდასთან. მოდით დააჭირეთ Go, და მე ვაპირებ მოვუწოდო ამ გადამზიდავი და ახლა მე ვაპირებ დატოვეთ ეს როგორც ბარი ტექსტი მაგრამ ჩვენ შეიძლება fancier მომავალში. მე ვაპირებ სწრაფად წავიდეს ჩემს მაგიდასთან, და მე აპირებს მოშორებას Rob, იმიტომ, რომ ყალბი ნომერი, მე ვაპირებ წასვლას რედაქტირება აქ და მე ვაპირებ შევცვალო ჩემი გადამზიდავი ხელით იყოს Verizon, რომელიც მას არის, და ახლა აქ. მოდით სწრაფი საღი აზრის ქვითარი. მოდით გახსენით ჩვენი ტექსტი სცენარი ასე გამოიყურება, გადამზიდავი% s. ვაკეთებთ უფრო მეტს შეცდომა შემოწმების, ვიდრე მე 2012 წელს, გადამზიდავი. და ახლა, მე ვაპირებ წავიდეთ წინ და ხელახლა აწარმოებს სცენარი. OK. გადამზიდავი Verizon, რაც იმას ნიშნავს, ახლა იმედია შემიძლია ამის გაკეთება მხოლოდ ამ. სწორად ამ წელს, იმედია, აქ ჩვენ მივდივართ. ასე რომ შიგნით ამ loop, მე აპირებს არა მარტო ამ printf, მე ასევე ვაპირებ მოვუწოდო ტექსტი და გამოყენება ამ ფუნქციას გაწვევას იყო სჭირდება ნომერი, გადამზიდი, და გაგზავნა. ასე რომ, ვნახოთ, ნომერი აპირებს იქნება ზედიზედ გაცემა unquote "ნომერი" ზედიზედ გაცემა unquote "გადამზიდი" და ბოლოს ერთი გაგზავნა. არ Screw up წელს, მძიმით. OK. თითების გადმოკვეთა. მოდით ვნახოთ, თუ ეს სამუშაოები. ყველა უფლება, ასე. აქ ჩვენ მივდივართ. მოდით ზარალი ტელეფონი, გადაკვეთა თქვენი თითები, რა იგი. Undefined variable may-- oh დაველოდოთ, დაველოდოთ, დაველოდოთ, რეალური სწრაფად. რეალური სწრაფი, რეალური სწრაფად. ეს არის მთლიანად ღირს. ნება მიბოძეთ აითვისებდა, ნება მიბოძეთ აითვისებდა, uh-oh. დიდი მადლობა, ტექსტები აქვს დაიწყო ვინმეს. ნება მომეცით წავიდეთ წინ და გახსენით რეალური სწრაფი, dropbox.php / mail აქ. ლოდინის. მთლიანად ღირს. ჩამოტვირთულები. OK, წყარო src8m. OK. კიდევ ერთი ხაზი აქ. Oh არ არის, ეს არის Frosh მესიჯები, ის რეესტრში სამი. Oh hello, მარგო, დიდი მადლობა. OK, და მე დაკარგული ეს ხაზი აქ. ნება მომეცით სწრაფად დაიბრუნოს ეს ხაზი კოდი, რომელიც მოიცავს mail ან ბიბლიოთეკაში რომელიც მე რეალურად მინდა გამოყენება, მე ვაპირებ სწრაფად დავუბრუნდეთ ფუნქციები, მე ვაპირებ წასვლა ზედა ამ ფაილი და მოითხოვს ეს ფაილი ისევე, და ახლა მე ვაპირებ ნამდვილად გადაკვეთა ჩემი თითი, როდესაც მე დაბრუნდეს ბრძანება ონლაინ სკრიპტი, რომელიც არის შიგნით დღეს ადგილობრივი მასპინძელი დირექტორია. აწარმოებს ტექსტი. შევა. Mail. ლოდინის. ლოდინის. Mail. ოჰ, OK. აქ ჩვენ მივდივართ. Mail იღებს ახალ PHP გამგზავნის. გავაკეთე ეს უფლება? რა იგი. რომელთა მიზანია oh, დაველოდოთ, დაველოდოთ, დაველოდოთ. დგას. მე გპირდებით, რომ ეს არის იქნება ასე ღირს. მისამართზე. ამიტომ, მე არ მიიღოს მაგალითები უფლება ადრე კლასის. Ugh. შემდეგი მიმღები ვერ მოხერხდა. მოდით ცდილობენ ერთი ბოლო რამ. SMTP ნაკრები, დაამატეთ მისამართი, მისამართი, მართლაც რომ. მოდით ცდილობენ ამ ბოლო ნაწილი მისამართზე. Aw, მე ნამდვილად სამწუხარო ახლავე. მადლობა. მაგრამ მე ნამდვილად ვაფასებ ყველა ტექსტები თქვენ უკვე გაგზავნის. თქვენ მოხვდით ამ დავით. თქვენ აფეთქება ეს. მოდით დატოვოს იგი არსებობს და დავაფიქსირებთ ორშაბათს. აგრეთვე შეგიძლიათ შემდეგ. DAVEN FARNHAM: ახლა Deep აზრები Daven Farnham. თუ ორობითი ხე წაიქცა ტყეში და არავინ არ არის გარშემო C it-- [chuckling].