[Powered by Google Translate] [PHP სესიები]
[Tommy MacWilliam, ჰარვარდის უნივერსიტეტი]
[ეს არის CS50.] [CS50.TV]
სესიები PHP შეიძლება გამოყენებულ იქნას განახორციელოს ფუნქციონირება,
როგორიცაა პროფაილი შემოსვლა, თქვენი web app.
PHP სესიები საშუალებას გაძლევთ ასოცირებული ინფორმაცია
ერთად მომხმარებელს მთელი გვერდების სხდომაზე
ვიდრე უბრალოდ ერთი გვერდი.
ასე რომ, ეს ნიშნავს, რომ როგორც მომხმარებლის სტუმრობს სხვადასხვა PHP გვერდებზე რომ შეადგინოს თქვენი ნახვა,
ნებისმიერი ინფორმაცია სხდომაზე არსებობს.
ასე რომ, ეს ნიშნავს, რომ მონაცემები ინახება სხდომაზე ერთ გვერდზე
შეიძლება მოგვიანებით გამოიყენოთ სხვა გვერდზე.
შენახვის სხდომაზე არის ადვილი,
და ჩვენ ამისათვის მეშვეობით დოლარის ნიშანი, ხაზს უსვამს, კაპიტალური სესიაზე ცვლადი.
დოლარის ნიშანი, ხაზს უსვამს, სესიის ისევე დოლარის ნიშანი, ხაზს უსვამს, ოჯახის
და დოლარის ნიშანი, ხაზს უსვამს, პოსტ
არის ასოციაციურ მასივში შედგება გასაღები ღირებულება წყვილი.
ასე რომ ჩვენ შეგვიძლია გამოვიყენოთ სინტაქსი მსგავსი დოლარის ნიშანი, ხაზს უსვამს, სესიაზე
bracket, გაცემა, foo, გაცემა, bracket, ტოლობის, გაცემა, ბარი, ციტირებით-
შენახვის ღირებულება "ბარი" გასაღები "foo".
თუმცა, ჩვენ შეგვიძლია დავწეროთ ან წაიკითხა სხდომის მასივი,
ჩვენ უნდა მოვუწოდებთ განსაკუთრებული ფუნქცია
სხდომაზე ხაზი გაესვა, დაიწყოს, () -
და ეს იქნება ინიციალიზაცია სხდომაზე.
მოდით შევხედოთ მაგალითს.
ჩვენი პირველი გვერდი, hello.php, იყენებს სხდომა გამომავალი ზოგიერთი მონაცემების შესახებ.
გახსოვდეთ, ჩვენ უნდა გამოვიყენოთ session_start სანამ ჩვენ შეუძლია ნებისმიერ სესიაზე მონაცემები.
ახლა ჩვენ გამოყენებით PHP-ის isset რათა დადგინდეს, თუ გასაღები არ არსებობს
იმ $ _SESSION ასოციაციურ მასივში.
თუ ეს გასაღები არსებობს, ეს ნიშნავს, რომ მომხმარებელს უკვე ხართ შესული სისტემაში,
ამიტომ ჩვენ დაფიქსირებულა მომხმარებლის სახელი.
თუ ეს გასაღები არ არის, ეს ნიშნავს, რომ მომხმარებელს ჯერ არ ხართ შესული არ არის,
ამიტომ ჩვენ ცარიელია ბმული login.php.
მოდით შევხედოთ login.php.
ქვემოთ აქ, ჩვენ ერთი HTML სახით ერთი შეყვანა.
ფორმის action ატრიბუტის $ _SERVER ['PHP_SELF'],
და ეს უბრალოდ ნიშნავს, რომ ჩვენ გვინდა სახით წარმოდგენილი უნდა იქნეს მიმდინარე ფაილი,
რომელიც, ამ შემთხვევაში, არის login.php.
მოდით დავუბრუნდეთ თავზე ამ ფაილის.
იმ შემთხვევაში, თუ მომხმარებელს ფორმის, მაშინ $ _POST ['name'] უნდა იყოს მითითებული.
დაწვრილებითი ინფორმაციისათვის HTML ფორმები და ჩანაწერი,
შეამოწმეთ PHP ვებ პროგრამირება video.
იმ შემთხვევაში, მომხმარებელს გააკეთა წარმოადგინონ ფორმა,
მინდა დაწერა ღირებულება, რომ ისინი აკრეფილი შევიდა სხდომაზე.
ახლა ჩვენ შეგვიძლია გადამისამართება მომხმარებელს hello.php.
რადგან ჩვენ ინახება მომხმარებლის წვლილის შეტანა სხდომაზე,
hello.php შეძლებს წვდომისათვის ღირებულება, რომელიც შეიქმნა login.php.
მოდით შეამოწმოთ ამ გარეთ ბრაუზერში.
პირველი, ჩვენ ნავიგაცია http://localhost/hello.php.
ჩვენ ვხედავთ, რომ ჩვენ არ ხართ შესული არ არის,
მოდით დააჭირეთ შესვლისას ლინკი, რომელიც გადამისამართება ჩვენთვის login.php.
Okay, მე აკრიფოთ ჩემი სახელით, რომელიც შემდეგ ინახება სხდომაზე.
დიდი! ახლა ჩვენ ვხედავთ, ჩემი შეყვანის login.php on hello.php მეშვეობით სხდომაზე.
ასე რომ, რაც შეეხება ხე მომხმარებელს out?
კარგად, რათა შეხვიდეთ მომხმარებელი, ჩვენ უბრალოდ ინახება ღირებულება თარგმნეს სხდომა სახელი.
ასე რომ დახურავს მომხმარებლის სესიას, ჩვენ უბრალოდ უნდა ამოიღონ, რომ სახელი გასაღები
სხდომის მასივი.
მოდით შევხედოთ ამ ბოლო ფაილი, logout.php.
კიდევ ერთხელ, ჩვენ უნდა მოვუწოდებთ session_start ()
სანამ ჩვენ შეგვიძლია არაფერი სხდომაზე დაკავშირებული.
ახლა ჩვენ შეგვიძლია უბრალოდ დარეკეთ session_destroy ()
რომელიც იზრუნებს მოშორების ყველა მონაცემები სხდომაზე
და შემდეგ გადამისამართება მომხმარებლის თავში hello.php.
ასე რომ, თუ მე დააწკაპუნეთ სისტემიდან გამოსვლა ბმული,
ჩვენ ვხედავთ, რომ სერვერზე დაავიწყდა ვინ ვარ,
და მე აღარ ხართ შემოსული
ასე რომ, რა ხდება აქ ქვეშ hood?
იმისათვის, რომ მიიღოთ ქცევის ჩვენ უბრალოდ დაინახა,
ჩვენს სერვერზე უნდა გააკეთოს 2 რამ.
პირველი, სერვერზე უნდა როგორღაც შესანახად მონაცემების სხდომაზე.
სხვადასხვა PHP ფაილი, რომელიც მოიცავს ნახვა
სრულდება ცალკე invocations რომ PHP ინტერპრეტატორი
ასე რომ ადგილობრივი ცვლადი ბოლომდე გაზიარებული ვერ იქნება მათ შორის.
ამის ნაცვლად, სერვერზე სჭირდება შესანახად ჩვენი სხდომა მონაცემები
რამდენიმე ადგილას, რომ მრავალჯერადი. php ფაილი შეუძლიათ.
მეორე, სერვერზე უნდა გაერთიანდნენ სხდომაზე მონაცემები მხოლოდ ჩემი გვერდების სხდომაზე.
როდესაც მე შეხვიდეთ Facebook,
არსებობს ალბათ სხვა მილიონობით ადამიანი ასევე შემოხვედით Facebook ამავე დროს.
მაგრამ სერვერზე სჭირდება გარკვეული გზა ასოცირების ჩემი მონაცემები
ჩემი მიმდინარე სასესიო და სხვისი მონაცემები მეორე სხდომა.
საბედნიეროდ, ავტორები PHP მიფიქრია ეს ყველაფერი ჩვენთვის,
ამიტომ ჩვენ არ უნდა განახორციელოს რაიმე ამ საკუთარ თავს.
მაგრამ მოდით შევხედოთ, თუ რა PHP არ იყოს.
როდესაც მე ეწვევა PHP გვერდი შეიცავს session_start პირველად,
PHP იქნება დიდი შემთხვევითი ღირებულება.
სანამ session_destroy ჰქვია, ან მე არ ნებისმიერ PHP გვერდებზე რომ საიტი ხნით-
რომ შემთხვევითი და ალბათ უნიკალური ღირებულება იქნება ასოცირდება ჩემთვის.
რომ გზა სერვერზე აქვს რამდენიმე გზა საიდენტიფიკაციო ჩემი გვერდების სხდომაზე
როგორც ეწინააღმდეგებოდა სხვისი.
ჩვენ შეგვიძლია შევხედოთ მიმდინარე სასესიო ID
გამოყენებით PHP ფუნქცია, session_ID.
აქ ჩვენ უბრალოდ outputting ღირებულება ჩვენი სესიის იდენტიფიკატორი.
ასე რომ, თუ ჩვენ კვლავ შემოხვიდეთ მაგალითად web app,
და ახლა ნავიგაცია sessid.php,
ჩვენ დავინახავთ ამ ხანგრძლივი string პერსონაჟების,
და ეს მიმდინარე იდენტიფიკატორი ჩემი სხდომა,
და ასე სერვერზე შენახვა ტრეკზე ვინ ვარ მე.
Okay, მაგრამ ჩვენ გადაიჭრას ნახევარი პრობლემა.
რა თქმა უნდა, სერვერზე უკვე რამდენიმე გზა საიდენტიფიკაციო me,
მაგრამ როცა ეწვევა სხვა გვერდზე, სერვერზე უნდა reuse იმავე იდენტიფიკატორი
ვიდრე გამოიმუშავებს ახალი.
გახსოვდეთ, თუ ვაცხადებ ადგილობრივი ცვლადი foo.php
და შემდეგ ეწვევა bar.php,
bar.php აქვს არანაირად არ იცის, თუ რა მოხდა foo.php.
ასე რომ, რა php სხდომაზე განხორციელებას მოითხოვს, რომ ბრაუზერის შეგახსენოთ სერვერზე
რომელიც სხდომაზე ID გამოიყენოს.
ეს ხორციელდება სახით cookie.
Cookie-გარდა იმისა, რომ გემრიელი snack-
უბრალოდ პატარა ტექსტური ფაილი თქვენს კომპიუტერში
რომ სერვერზე შეიძლება ვწერ გავლით ბრაუზერში.
ამიტომ მას შემდეგ, PHP საერთოდ ჩემი უნიკალური სხდომა ID მეშვეობით session_start,
ის აპირებს გითხრათ ბრაუზერში შესანახად რომ იდენტიფიკატორი ადგილობრივი ტექსტური ფაილი, ან ფუნთუშას.
მაშინ ბრაუზერში მოიცავს, რომ იდენტიფიკატორი ყველა მოთხოვნა
რომ ის რაც სერვერზე.
ასე რომ, რეალურად, სერვერზე არ ახსოვს, ვინ ვარ მე.
ამის ნაცვლად, ბრაუზერში უბრალოდ დამახსოვრების უნიკალური იდენტიფიკატორი
რომელიც გენერირდება PHP და შემდეგ მუდმივად ახსენებს სერვერზე
რა, რომ იდენტიფიკატორი არის.
ეს გზა, როგორიც ჩემს შესახებ სახელი ინახება სერვერზე არ არის ჩემი ბრაუზერში.
ბრაუზერის უბრალოდ ეუბნება სერვერზე სადაც PHP ინახება, რომ ინფორმაცია
ასე PHP შეგიძლიათ ახლიდან მას.
ასე რომ, ჩნდება კითხვა, სადაც PHP რეალურად შენახვა ამ ინფორმაციას?
სტანდარტულად, PHP შეინახავს თქვენს სხდომაზე მონაცემები
ფაილი შიგნით / tmp, ან "temp" ფოლდერში.
სახელი რომ ფაილი მოიცავს სხდომის ID ასე PHP შეუძლია განსაზღვროს
რომელიც ფაილი წაიკითხოთ და დაწეროთ ეხლა მეშვეობით მხოლოდ სხდომის ID.
ყველა უფლება. მოდით გახსნა ქსელის tab in Chrome-ს debugger
მეშვეობით wrench ხატი ზედა მარჯვენა.
ახლა მოდით უხელმძღვანელებს hello.php ერთხელ.
მოდით დააწკაპუნეთ HTTP თხოვნით hello.php
და შემდეგ დააჭირეთ ზედა.
აქ ჩვენ ვხედავთ, რომ ბმულების header შეიცავს გასაღები მოუწოდა PHPSESSID,
ან PHP სესიის ID-ღირებულებით, რომ ის არის, რომ იგივე ხანგრძლივი string ვნახეთ
როდესაც ჩვენ მოინახულა sessid.php.
სწორედ ეს არის, თუ როგორ ბრაუზერის ახსენებს სერვერზე რა სხდომაზე ID უნდა იქნეს გამოყენებული.
ის მათ შორის ის HTTP header.
ყველა უფლება. მოდით უხელმძღვანელებს თავში ტერმინალში.
მოდით ნავიგაცია / tmp, სადაც PHP არის შენახვის სხდომაზე ინფორმაცია იყოს.
დარწმუნებული საკმარისი, შიგნით ამ დროებითი საქაღალდე,
აქ არის ფაილი, რომელიც შეიცავს იმავე ზუსტი სხდომაზე პირადობის მოწმობა.
იმ შემთხვევაში, თუ ჩვენ გახსენით ეს ფაილი, ჩვენ ვხედავთ, თუ როგორ PHP წარმოადგენს my სხდომაზე დისკზე.
აქ სტრიქონი "Tommy" მიმდინარეობს ინახება გასაღები 'სახელი',
სწორედ იმას, რასაც ჩვენ ველოდით.
და ეს მიმოხილვა სესიები PHP.
რაც ჩვენ უბრალოდ ვნახე იყო მხოლოდ ნაგულისხმევი განხორციელების სხდომებს.
სინამდვილეში, ბევრი საიტებზე შეცვალოთ ეს ნაგულისხმევი ქცევის
შესანახად PHP სესიები უფრო ეფექტურად
ინტერესი გაუმჯობესების შესრულება.
ჩემი სახელი არის ტომი, და ეს არის CS50.
[CS50.TV]