[Powered by Google Translate] [კვირა 9] [დევიდ ჯ Malan - ჰარვარდის უნივერსიტეტი] [ეს არის CS50. - CS50.TV] ყველა უფლება. კეთილი იყოს. ეს არის CS50, და ეს არის დაწყების კვირაში 9. დღეს ჩვენ ფოკუსირება კერძოდ დიზაინი, აღარ კონტექსტში C მაგრამ კონტექსტში PHP და ცოტა SQL და ცოტა JavaScript, განსაკუთრებით მიმართ ბოლომდე ორივე pset 7 და ასევე თქვენი საბოლოო პროექტი. რეალურად, თუ თქვენ იმ ეტაპზე თქვენს საბოლოო პროექტი სადაც სავარაუდოდ, როგორც საათობრივად ან იმდენად წინ თქვენ მინიმუმ დაიწყო უკვე მისცა, აზრის თქვენი საბოლოო პროექტი და თქვენ ფიქრი გსურთ ითანამშრომლებს 1 ან 2 თანაკლასელები, თუ თქვენ მქონე უბედურება დაკავშირებულია განაცხადა თანაკლასელები, მოგერიდებათ შეავსოთ ფორმა cs50.net/partners/form. უბრალოდ სთხოვს ვინ ხარ შენ, რა სახის პროექტი თქვენ ფიქრი, სადაც თქვენ ცხოვრობთ მხოლოდ ლოგისტიკური მიზეზებით. ხოლო შემდეგ, თუ თქვენ გსურთ ადევნეთ თვალი მომდევნო კვირაში ცხრილების URL არსებობს, შეგიძლიათ შემდეგ დაინახავთ წაუკითხავი ვერსია Google doc რომელშიც ჩვენ შეგროვება, რომ ინფორმაციას. ასე რომ, თუ გსურთ მუშაობა ვინმეს, აუცილებლად მოგერიდებათ მივაწვდინოთ ხალხს მეშვეობით, რომ მექანიზმი. მაგრამ უმრავლესობა FOLKS გავაკეთოთ მუშაობა სოლო. სწორედ მთლიანად ჯარიმა. ასე რომ არ იგრძნონ, რომ ეს არანაირად სავალდებულო. პარასკევს ეს მხოლოდ მე და რამდენიმე გუნდი აქ, ცარიელი თეატრის ამისთვის დიდი ნაწილი. იყო 3 ტურისტი იჯდა იქ, ასე რომ იყო ცოტა უხერხულია. რა ჩვენ ვისაუბრეთ იყო მონაცემთა ბაზები და ჩვენ ვისაუბრეთ pset 7 ცოტა. და თუ თქვენ ასე არ მოხდა დაიჭიროთ, რომ ვიდეო უბრალოდ არ არის, რომ ჯარიმა. ვეცდები, რომ განსაზღვროს ნებისმიერი თვალსაზრისით, რომ ჩვენ სხვაგვარად თავისთავად ეფუძნება პარასკევის ლექცია. მაგრამ დღეს ჩვენ ვაპირებთ ცდილობენ თქვენ წერტილი არა მხოლოდ კონკრეტდება გამოუვა რაღაც pset 7 მაგრამ ნამდვილად გასაგებად, რა ხდება ქვეშ hood, განსაკუთრებით ზოგიერთი აბსტრაქციები რომ ჩვენ დასვა ადგილი functions.php ფაილში რათა თქვენი ცხოვრების ცოტა ადვილი, მაგრამ ისე, რომ თქვენ საბოლოოდ მესმის ასე რომ, როდესაც სასწავლო თვლები მოვა off რამდენიმე კვირაში თქვენ მაინც გადარჩება რეალურ ცხოვრებაში და ამას ვაკეთებთ, პერსონალის გარეშე CS50 ფარგლებში ქვეშ თქვენ. ეს $ _SESSION, იმ თქვენ ვინც იცნობს ან ვინც უკვე დაიჭირეს ვიდეო პარასკევს, რას სესიაზე მოდით გავაკეთოთ in PHP დაფუძნებული ვებ განაცხადის? ეს არის superglobal ცვლადი, რაც იმას ნიშნავს, რომ ის მსგავსი სულისკვეთებით მიიღონ და პოსტ და რამდენიმე სხვები, მაგრამ რა არის ეს რამ სასარგებლოა? რა არის სესიაზე გამოიყენება? Yeah. [სტუდენტი] შემოსვლა სისტემაში უკაცრავად? [სტუდენტი] შემოსვლა სისტემაში შემოსვლა სისტემაში მართლაც. In pset 7 ჩვენ გამოყენებისას სესიაზე superglobal ხელი შეუწყოს ხე შემოსული და რაც ლამაზი ამ superglobal არის, რომ ასოციაციურ მასივში. ასოციაციურ მასივში, გაწვევას, მხოლოდ მასივი, მაგრამ რომლის ინდექსების აღარ უნდა იყოს ნომრები მოსწონს 012. ეს შეიძლება იყოს ნომრები ან ისინი შეიძლება კი სიმები. და თუ თქვენ dived შევიდა pset 7 ჯერჯერობით, თქვენ შეიძლება გავიხსენოთ, რომ ჩვენ შენახვის გასაღები მოუწოდა ID შიგნით ამ ასოციაციურ მასივში, რომლის ღირებულება არის რაღაც 123 - რასაც ამჟამად რეგისტრირებული მომხმარებლის ID არის. მოტივაცია არის ის, რომ შემდეგაც კი მომხმარებელს უკვე მოინახულა Localhost ან ჩემი ნახვა საზოგადოდ და შემდეგ ისინი შესული სისტემაში, მაშინაც კი, თუ ისინი არ დააჭერთ ბმულს ან დაბრუნდეს ჩემი საიტი 5 წუთში ან თუნდაც საათში ან თუნდაც დღეში მაგრამ დაეტოვებინა ბრაუზერის ფანჯარაში ღია, მეშვეობით ამ superglobal შემიძლია გვახსოვდეს, რომ ისინი ხართ შემოსული სხვა სიტყვებით, ის საშუალებას ჩემთვის შესანახად ოდნავ გრძელვადიანი არაფერი მინდა შესახებ მომხმარებელს. და შეგიძლიათ წარმოიდგინოთ, რომ ეს მართლაც როგორც განსახიერება of კალათა. მსგავს ადგილებში Amazon აშკარად მოგცემთ დააყენა რამ შევიდა კალათა, მაგრამ HTTP, ოქმი რომ ძალაუფლება ვებ, არის მოქალაქეობის არმქონე იმ გაგებით, რომ როდესაც თქვენ ესტუმრებით ნახვა, ამისთვის დიდი ნაწილი თქვენ არ ზოგიერთი მუდმივი კავშირი შორის თქვენი ბრაუზერის და სერვერზე. როგორც კი თქვენ გადმოწერილი HTML და JPEGs და GIFs და ყველა რომ, კავშირი მიდის და თქვენ უბრალოდ უნდა ასლი HTML და whatnot საწყისი სერვერზე. მაგრამ თუ სერვერზე სურს გვახსოვს რაღაც თქვენს შესახებ, ტვირთი სერვერზე რეალურად ჩანაწერის ინფორმაციას. და ასე რომ თქვენ პროგრამისტის, რომელსაც აქვს კონტროლის სერვერი შეგიძლიათ განათავსოთ საუკეთესო არაფერი გინდათ შიგნით ამ superglobal ასოციაციურ მასივში და ის მუდმივად იქნება შემდეგი დროის მომხმარებლის ბრუნდება, თუ არა ეს წუთი ან თუნდაც დღის შემდეგ, თუ ისინი დახურვა მათი ბრაუზერის ფანჯარაში, სადაც წერტილი სესიაზე ქრება. ასე რომ ეფემერული შენახვის, ეს არასამთავრობო დაჟინებული და ეს იმას ნიშნავდა, რომ მიდიან როგორც კი მომხმარებლის ხურავს მათი ბრაუზერი - არა მხოლოდ, რომ tab, ხშირად მთელი ბრაუზერის, რითაც ეფექტურად ხე მომხმარებლის გარეთ. მაშ როგორ არის ეს საგანი რეალურად განახორციელა? ავიღოთ სწრაფი შევხედოთ მარტივ მაგალითს ჩვენ შევხედეთ პარასკევს. მათთვის უცნობ, ეს იყო როგორც მარტივი, როგორც ეს. ეს არის ვებ გვერდზე, რომლის ერთადერთი მიზანი ცხოვრებაში არის მეუბნებოდა რამდენჯერ მე ნამყოფი ამ გვერდზე. ეს არის პირველი შემთხვევა, აქ ორშაბათს, რომ ვიყავი, ასე რომ წერია 0 ჯერ. მაგრამ თუ დავიწყო გადატვირთვა ამ გვერდზე, ნათქვამია 1 დროს, 2, 3, 4, 5, და ეს საბოლოოდ მხოლოდ გააგრძელოს დათვლის up, up, up, up, up თითოეული დროს მე რეალურად დააჭირეთ ჩატვირთვა მასზე. მაშ როგორ არის ამ სამუშაო? ნება მომეცით წასვლა შიგნით ამ ფაილის მოუწოდა counter.php. ზედა ნაწილს ეს ყველა ლურჯი კომენტარი, მაგრამ საინტერესო ნაწილი არის აქ. On line 13 ჩვენ მოვუწოდებთ ამ ფუნქციის session_start, და ეს არის ფაქტიურად ყველა თქვენ მხოლოდ უნდა თუ გინდათ ჰქონდეს ამ სპეციალური superglobal მოუწოდა $ _SESSION. რომ ხდის ყველა შესაძლო, და ჩვენ ვხედავთ, როგორ მომენტში რომ ყველა შესაძლო. შეესაბამება 16 notice რა ვაკეთებ. თუ გასაღები, რომელსაც ეწოდება Counter - სხვა სიტყვებით, ინდექსი ფასი - "მთვლელი" არსებობს შიგნით ამ მასივი მოუწოდა სესიაზე, მაშინ, რა ვარ მე აკეთებს ერთად ის ხაზის ქვემოთ? რა არის ხაზზე 18 აკეთებთ? [Inaudible სტუდენტი საპასუხოდ] რა არის რომ? [სტუდენტი] შენახვის ღირებულება. კარგი. ეს შენახვის ღირებულება, რომელიც არის ამ სესიაზე ახლავე in new ადგილობრივი დროებითი ცვლადი, $ Counter ყველა ამას. გაითვალისწინეთ, რომ PHP უკვე პატარა ზარმაცი აქ. გაითვალისწინეთ ჩვენ არ გვაქვს რაიმე ნახსენები int ან ათწილადი ან სიმებიანი ან არაფერი რომ რადგან PHP არის სუსტად აკრეფილი, რომლის დროსაც თქვენ არ დააკონკრეტა ტიპის ცვლადი, და ამ შემთხვევაში აქ მე კი არ გამოაცხადა ამჟამად. მე გამოცხადების მას შიგნით ამ Curly braces და განსხვავებით C, ეს არის რეალურად okay. რაც არ უნდა ღრმად წყობილი ცვლადი განცხადებას არის PHP - შიგნით Curly გაუწიოს, შიგნით Curly გაუწიოს და მოსწონს - იგი იმ მომენტში დროში არსებობს დარჩენილი პროგრამა, უკეთესი ან უარესი. ასე რომ, ეს დაუყოვნებლივ ხდება გლობალური, როგორც კი თქვენ განსაზღვრავს, როგორც ვაკეთებთ აქ. წინააღმდეგ შემთხვევაში, თუ არ ნახავთ, რომ იქ არაფერი სესიაზე superglobal, მე აშკარად ინიციალიზაციისას ამ ცვლადი counter 0, ამით უბრალოდ ვთქვათ მომხმარებლის არასოდეს ყოფილა აქ ადრე. და მაშინ ეს, რა თქმა უნდა არის დამატება counter როგორ? მე განახლებაზე ღირებულების რომ შიგნით ამ ასოციაციურ მასივში მიიღწევა ის ტოლია რასაც counter გაკეთებული არის + 1. თუ მე გადახვევა ქვემოთ აქ HTML გვერდზე, ეს რეალურად საკმაოდ მარტივია. ყველა მე გამაჩნია ორგანოს ეს გვერდი, "თქვენ არ მოინახულა საიტი ასე და ასე ჯერ." და ეს არის PHP შენება. თუ