[Powered by Google Translate] [კვირა 8 გაგრძელდა] [დევიდ ჯ Malan] [ჰარვარდის უნივერსიტეტის] [ეს არის CS50.] [CS50.TV] ეს არის CS50, ამიტომ ეს არის ბოლომდე კვირა 8 აქ. ჩვენ, რა თქმა ჰქონდა ცოტა ქარიშხალი ამ კვირაში, ამიტომ ახლავე მართლაც მხოლოდ თქვენ და მე ამ აუდიტორია, მაგრამ დღეს ჩვენ ვაგრძელებთ საუბარი PHP და ვებ პროგრამირების უფრო ზოგადად, და ჩვენ ასევე გააცნობს იდეა მონაცემთა ბაზების, განსაკუთრებით ერთი მოუწოდა MySQL, რომელიც საკმაოდ პოპულარულია ამ დღეებში, დიდი ნაწილი, რადგან მისი scalability ასევე რადგან მისი ყოფნა თავისუფალი და ღია წყაროებიდან. მაგრამ პირველი, შევხედოთ, სადაც ჩვენ შეჩერდით ბოლო დროს. შეგახსენებთ, რომ ჩვენ შევხედავთ რამდენიმე Frosh IMS მაგალითები, და ეს იყო hideous ფორმა რომ ჩამოვედი რაიმე 15 + წლის წინ იმისათვის, რომ სტუდენტებს კამპუსში რეესტრის freshman intramural სპორტული გარეშე რეალურად მქონე Trek აღარ მასშტაბით ეზოში Wigglesworth to ლღობას ფიზიკური ნაჭერი ქაღალდი ქვეშ ზოგიერთი PROCTOR ს კარი. ამის ნაცვლად გადავედით ყველაფერი შემოსული, მაგრამ უნდა გავაკეთოთ, რომ ჩვენ საჭირო გამოიყენოს რამდენიმე ტექნოლოგიები, ამიტომ ერთი, ჩვენ გვჭირდებოდა HTML, ჰიპერტექსტური მარკირებას ენაზე რაც კიდევ ერთხელ არის ამ მარკირებას ენა, რომელიც თქვენ გააკეთებთ ვებ გვერდები სტრუქტურულად. გამოყენება ცოტა CSS ამ დღეებში, კასკადური სტილების, რომლითაც ჩვენ ვიყენებთ stylizations of ვებ გვერდზე გამოყენებით ოდნავ განსხვავებული სინტაქსით, ხოლო HTML იყო ყველა სტრუქტურის შესახებ. ჩვენ ასევე უნდა შემოიღონ ვებ პროგრამირების ენაზე. ამ შემთხვევაში, ჩვენ ვიყენებთ PHP, და PHP აპირებს საშუალებას მოგვცემს to დინამიურად გამომავალი content ასევე გავაკეთოთ პროგრამული რამ, როგორიცაა გაგზავნის წერილებს, როგორც იყო საქმე ნოტა, რომელიც ჩვენ დაუტოვებიათ გასულ კვირას. შეგახსენებთ, რომ კოდი ამ იყო 2 ნაწილად. ერთი, ჩვენ გვყავდა froshims3.php, და ეს იყო რუბრიკაზე markup ერთად HTML ფორმა შიგნით ის, პაწაწინა ცოტა CSS აქ სტილში ატრიბუტები ისე, რომ ფორმა თავად იქნება ორიენტირებული გვერდზე, მაგრამ ამის მიღმა ჩვენ გვქონდა წარმომადგენელი ფორმა საშუალებებით, ველში, ჩამრთველი, ზოგიერთი რადიო ღილაკები, აირჩიეთ მენიუ და submit ღილაკს. და Via ეს ფორმა, ჩვენ წარმოდგენილი ფაილი, რომელიც სავარაუდოდ მოუწოდა register3.php, რაც თავისთავად გამოიყურებოდა ცოტა რაღაც მსგავსი. ახლა, ყველაზე მეტად კოდი register3.php იხსენებენ, იყო ყველაფერი ელ. ასე ცოტა Validation ფორმის რომ იყო წარდგენილი დარწმუნდით რომ სფეროებში ფაქტიურად იმ პირობით, რომ იყო ნავარაუდევი. მაშინ ჩვენ მოუწოდა ზოგიერთი PHP ფუნქციების გამოყენებით მსუბუქად ახალი სინტაქსის, მიუხედავად იმისა, რომ ეს ნასესხები C. ეს arrow ოპერატორი საშუალებას გვაძლევს გამოიყენონ რაღაც მოუწოდა ობიექტის ორიენტირებული პროგრამირება. ჩვენ არ შევალ, რომ ნებისმიერ დეტალს, მაგრამ ვიცი, ახლა ეს გზა მქონე ფუნქციების ასოცირდება ობიექტები, რომლებიც სპეციალური ტიპის სტრუქტურა, როგორც ვნახეთ C. მაგრამ ახლა, უბრალოდ იღებს რწმენა, რომ ეს სწორი სინტაქსი გამოიყენოს როდესაც გამოყენებით ბიბლიოთეკა მოსწონს ეს PHPMailer ბიბლიოთეკაში. ხოლო შემდეგ ბოლომდე ამ ფაილის გვქონდა დინამიურად გენერირებული ელ რომ მიიღო გაიგზავნა ჩემი jharvard@cs50.net ანგარიშის ჩემი jharvard@cs50.net ანგარიშზე, და ვაცნობეთ მომხმარებლის შესაბამისად, რომ ისინი დარეგისტრირებული ამ სპორტის. სწორედ საკმაოდ ბევრი რა Frosh IMS საიტი გააკეთა ყველა იმ წლის წინ როცა განახორციელეს, გაცემული, სხვა ენაზე, მაგრამ ეს გიჩვენებთ ალბათ ძალა, რომ თქვენ გაქვთ ახლა რომ თქვენ შეგიძლიათ გამოხატოს თავის არა მხოლოდ პროგრამულად დაბალ დონეზე ენის მსგავსად C მაგრამ ბევრად უფრო მაღალ დონეზე ამ ძალიან რეალური სამყაროს განაცხადების მოსწონს ელ რეალურად მოგვარებას ზოგიერთი რეალური სამყაროს პრობლემებს. ახლა, რა თქმა უნდა, მიუხედავად იმისა, რომ გამოვიყენო ეს სკრიპტი გენერირებისათვის ზოგიერთი წერილებს დინამიურად საწყისი jharvard@cs50.net, რომელიც მართლაც ანგარიშის რომ მე ხელი მიუწვდება, ნუ საკმაოდ ფრთხილად გააგზავნოს გვერდის მხოლოდ ანგარიშებიდან, რომლებიც ფაქტობრივად საკუთარ, Lest რამ მისაღებად თქვენ ცოტა ცხელი წყლით ცხოვრებაში. აღნიშნულის გათვალისწინებით, მოდით ახლა გადასვლას გადაჭრის სხვადასხვა პრობლემა საერთოდ, რომ შენარჩუნების შტატები. ახლა, რას ნიშნავს რეალურად? HTTP, ამ ჰიპერტექსტის გადაცემის პროტოკოლი, ფაქტიურად მოქალაქეობის არმქონე ოქმს, და რა ეს ნიშნავს, რომ როდესაც თქვენ დახევის up რაღაც Google.com და შემდეგ დააჭიროთ ჩვეულებრივ თქვენი ბრაუზერის აქვს გარკვეული სახის დაწნული ხატი, რომ მაშინ შედეგი, ზოგი ვებ გვერდზე მიმდინარეობს გადმოწერილი, და შემდეგ რომ პატარა ხატი აჩერებს დაწნული, და რომ მართლაც ვარაუდობს რომ HTTP დაასრულა გარკვეული კავშირი სერვერზე და ამით ყველაფერი მთავრდება. HTTP არის მოქალაქეობის არმქონე იმ გაგებით, რომ იგი არ შეინარჩუნოს მუდმივი კავშირი სერვერზე ისევე Skype აკეთებს ან Gchat აკეთებს, რადგან ერთად HTTP ვარაუდი არის ის, რომ ერთხელ თქვენ fetched ვებ გვერდზე რომ არის ის. ახლა, რეალურად ამ დღეებში ადგილებზე როგორიცაა Facebook და Google Maps და Twitter და მოსწონს იქ გაცილებით მეტი დინამიზმი, რომლითაც შემდეგაც კი, რომ ხატი აჩერებს დაწნული შეგიძლიათ რეალურად მიიღოთ მეტი განახლებები საწყისი სერვერზე, უფრო tweets, უფრო სტატუსები Facebook-ზე და მოსწონს. მაგრამ რომ იყენებს ტექნიკა რომ ჩვენ ვსაუბრობთ ერთ კვირაში ან ორ ცნობილია როგორც Ajax იყენებს ენის მოუწოდა JavaScript, მაგრამ დღის ბოლოს, HTTP კვლავ მოქალაქეობის არმქონე. და მაინც, თუ გსურთ როგორღაც გახსოვთ რამ მომხმარებლის შემდეგაც კი ისინი გათიშული თქვენი სერვერი PHP არ მივცემთ თავს თქვენ საშუალებით აკეთებს ამ რადგან, როგორც ვნახეთ ბოლო დროს, PHP აქვს მთელი რიგი superglobals, და superglobal არის, კიდევ ერთხელ, სპეციალური გლობალური ცვლადი რომ გადასცა თქვენ მიერ სერვერზე და PHP თავად. თქვენ არ გაქვთ არაფერს დააყენოს ღირებულებების ის, და შორის superglobals ჩვენ ვნახეთ დღემდე არიან მიიღონ და გამოქვეყნება, რაც აქ ფორმა ველები დააყენა ავტომატურად თქვენთვის, ასევე რამდენიმე სხვები, რომ ჩვენ არ მინახავს არავის გაუკეთებია. შიგნით $ _server ზოგიერთი სპეციალური ცვლადები დაკავშირებული სერვერი თავად. რა არის IP მისამართი, რა ოქმი, HTTP ან HTTPS არ გამოიყენოს, რა მოთხოვნის მეთოდი არ გამოიყენოთ და მოსწონს, ასე რომ არსებობს რამდენიმე საინტერესო, წვნიანი შესახებ სერვერზე, და ფაქტობრივად, მომხმარებლის იქ ისევე. აქ $ _cookie, სადაც ეს ყველაფერი მოუწოდა Cookies ინახება. ჩვენ არ გაატარონ დრო Cookies თავად დღეს, მაგრამ ვიცით, რომ ფუნთუშა მხოლოდ პატარა ნაჭერი ინფორმაცია რომ სერვერზე შეიძლება ქარხანა ბრაუზერში და თავის მხრივ თავისი RAM ან მისი კომპიუტერის მყარ დისკზე ინფორმაციის შესანახად მომხმარებელი, მაგალითად, მათი მომხმარებლის სახელი ისე, რომ მათ არ უნდა აკრიფოთ ეს ყოველ ჯერზე ისინი სისტემაში ან რამდენიმე უნიკალური ნომერი ან იდენტიფიკატორი ამ მომხმარებლის ასე რომ თქვენ არ უნდა pester მათ იგივე სახის კითხვებს პრეფერენციები მომავალში, მაგრამ ყველაზე საინტერესო ახლავე არის $ _session. ეს superglobal, რომელიც, ისევე როგორც სხვები, ჩაბარების თქვენ ავტომატურად PHP როდესაც თქვენ წერილობით PHP დაფუძნებული საიტებზე შენახვა შეუძლია არაფერი გსურთ, სტრინგი, რიცხვებით, მცურავი ქულა, ღირებულებების, კოლექტორები, ობიექტების, მართლაც რამე რომ გინდათ, და ეს გაძლევთ საშუალებას ჩაწეროთ იგი ასეთი გზა რომ მაშინაც კი, თუ მომხმარებლის სტუმრობს თქვენ ახლა და შემდეგ ბრუნდება წუთი ამიერიდან ან 5 წუთი ამიერიდან რადგან ისინი მათი ხნით ადრე დაწკაპვით ზოგიერთი სხვა ლინკები PHP უზრუნველყოფს, რომ რასაც თქვენ დააყენა ამ სესიის superglobal წუთი ან 5 წუთი წინ იქნება იქ, როდესაც მომხმარებლის ბრუნდება. და ქვეშ hood ამ superglobal ხორციელდება გზით იმ რამ მოუწოდა cookies, მაგრამ ახლა, უბრალოდ აბსტრაქცია რომლითაც ეს ერთგვარი პროგრამული ეკვივალენტი კალათა. რასაც თქვენ, პროგრამისტი, დასვა, რომ superglobal ასოციაციურ მასივში იქნება გარკვეული რაოდენობის წუთში სანამ არ წაშალოთ ან სანამ მომხმარებლის ტოვებს თავის ბრაუზერში საერთოდ. მოდით შევხედოთ მაგალითს, თუ როგორ ეს რამ ფაქტობრივად გამოყენებული. In counter.php შორის დღევანდელ ცალი კოდი ჩვენ გვაქვს შემდეგი ხაზი. დაწყების ამ ფაილის გვაქვს bunch of blue კომენტარები, რომლებიც uninteresting ახლა. მაგრამ ხაზი 13 გვაქვს ახალი ხაზი, session_start, და რომ რეალურად აკეთებს ზუსტად რა წერია. იგი იწყება სხდომებზე. ეს საშუალებას გაძლევთ გამოიყენოთ, რომ დიდი superglobal $ _session, და ეს იმდენად მარტივია, რომ. ახლა, თუ ვაგრძელებთ შევხედოთ ხაზი 16, მოდით ცდილობენ გაერკვნენ, რა ამ ვებ გვერდზე გაკეთებას აპირებს. თუ (isset ($ _SESSION ["მთვლელი"]) მაშინ წავიდეთ წინ და მაღაზიის counter ცვლადი, ამას counter, $ _SESSION ["მთვლელი"]. ეს, როგორც ჩანს, გამოცხადების ადგილობრივი ცვლადში counter შიგნით, რომელიც მას აყენებს ასლი რაც შიგნით superglobal მოუწოდა სხდომა საიდან "counter". სხვაგან, როგორც ჩანს, ამ პატარა ადგილობრივი ცვლადი counter, ინიციალიზდება რომ 0. მაგრამ შემდეგ რამოდენიმე ხაზს მოგვიანებით 26 გავითვალისწინოთ რომ სესიის ასლი counter, მისი გასაღები, აქვს ახალი მნიშვნელობის ენიჭება, რაც მისი მიმდინარე ღირებულების პლუს 1. მოკლედ, ამ ფაილის ჩანს განახლებას Counter რომ ინახება შიგნით სესიის superglobal მიერ დამატება იგი 1, მაგრამ ეს პირველი იტოვებს ასლი წინა ღირებულება მიერ შენახვა მას ადგილობრივი ცვლადში $ Counter, და შემდეგ ქვევით აქ ვნახოთ რა რჩება. თურმე ეს საკმაოდ ბევრი უბრალოდ HTML. ბოლოში ამ გვერდზე ვხედავთ ხაზი 37 რომ მე ნამყოფი ამ საიტიდან Counter რამდენჯერმე, ამიტომ არსებობს რამდენიმე საინტერესო თვისებები აქ. ერთი, ეს ნათლად ცვლადი, მაგრამ ეს არ გვაძლევს, უბრალოდ დააყენა $ Counter სხეულში თქვენი HTML, რადგან, რა თქმა უნდა თუ უბრალოდ იქ შორის თქვენი HTML PHP აპირებს ვივარაუდოთ, რომ უბრალოდ HTML. თქვენ სიტყვასიტყვით მინდა $ counter უნდა დაიბეჭდოს ეკრანზე. მაგრამ ნაცვლად მიერ ჩაშვების შევიდა PHP რეჟიმში ამ ნაჭერი სინტაქსის შეგვიძლია დინამიურად ჩადეთ ღირებულება აქ ძალიან მსგავსი სულისკვეთება, თუ რა გავაკეთეთ ბოლო დროის ჩასმა ღირებულებები შევიდა სტრიქონები. ფაქტობრივად, ეს მხოლოდ სტენოგრამის ნოტაცია ამას რაღაც მსგავსი სიტყვასიტყვით, ბეჭდვითი ($ counter) ან თუნდაც რაღაც printf (% s, Counter), ან თუნდაც, როგორც თქვენ შეიძლება არ მინახავს შემოსული ან სახელმძღვანელოებში, არსებობს ფუნქცია PHP მოუწოდა ეხო რომელიც იგივე, და ყველა იმ უბრალოდ აღარ winded გზები საქართველოს ამბობდა