წარმოსახვითი გაგზავნა php. Html ფორმები: php ფორმა - გაგზავნეთ მოთხოვნა იმავე გვერდზე. როგორ ავიცილოთ თავიდან პრობლემები PHP _SELF-თან

დიდხანს ვფიქრობდი, რა სათაური დამეწერა ამ სტატიას და უკეთესი ვერაფერი მოვიფიქრე. ეს არის ერთადერთი სათაური, რომელიც რაღაცნაირად მაინც ასახავს ნათქვამის არსს. მართალი გითხრათ, არ ვიცი, რა ჰქვია სწორად, ამიტომ დავასახელე სტატია ისე, როგორც ვეცადე საძიებო სისტემაში მაინც მეპოვა რაიმე ინფორმაცია ამ თემაზე.

ერთ-ერთ საიტზე დამჭირდა გამომეყენებინა ორი გაგზავნის ღილაკი ერთ ფორმაში, რომელიც შევსებულ მონაცემებს გაუგზავნიდა სხვადასხვა PHP „დამმუშავებლებს“, იმისდა მიხედვით, თუ როდის დააჭირეს ღილაკს. გუგლმა არაფერი მიპასუხა გონივრული, როგორც ჩანს, მე უბრალოდ არ ვიკითხე სწორად, ამიტომ მე თვითონ მომიწია ამის მოფიქრება.

ასე რომ, მე ჩამოვაყალიბე ეს თქვენი განსახილველად.

პრობლემის არსი

მისი განხორციელების შემდეგ, მე მაინც ვიპოვე რამდენიმე გამოსავალი, რომლებიც დაფუძნებული იყო ჩვეულებრივი ღილაკების გამოყენებაზე, რომლებზეც იყო ხრახნილი JS.

მე განვახორციელე ჩემი გეგმა თითქმის იგივე გზით, მაგრამ გამოვიყენე სტანდარტული გაგზავნის ტიპი. როგორც ჩანს, ყველაფერი მუშაობს და ჩემი აზრით, ჩემი გამოსავალი უფრო ლოგიკურად სწორია.

ეს გამოსავალი ერთნაირად კარგად იმუშავებს როგორც უფასო ჰოსტინგზე, ასევე თუ აირჩევთ პროფესიონალურ ჰოსტინგს. ეს მეთოდი დანერგილია მთლიანად კლიენტის მხარეს და არ უნდა შეანელოს სერვერი.

იმისათვის, რომ გაადვილდეს იმის გაგება, თუ რა მინდა და როგორ მუშაობს, აქ არის ნამდვილად მოქმედი მაგალითი, ფორმის სახით, რომელსაც აქვს 2 გაგზავნა, რომლებიც აგზავნიან მონაცემებს სხვადასხვა გვერდებზე.

PHP-ის ერთ-ერთი მნიშვნელოვანი რამ არის ის, თუ როგორ მუშაობს იგი HTML ფორმებთან. აქ მთავარია, რომ თითოეული ფორმის ელემენტი ავტომატურად გახდეს ხელმისაწვდომი თქვენი PHP პროგრამებისთვის. PHP-ში ფორმების გამოყენების შესახებ დეტალური ინფორმაციისთვის წაიკითხეთ განყოფილება. აქ არის HTML ფორმის მაგალითი:

მაგალითი #1 უმარტივესი HTML ფორმა

Თქვენი სახელი:

Თქვენი ასაკი:

ამ ფორმაში განსაკუთრებული არაფერია. ეს არის ჩვეულებრივი HTML ფორმა ყოველგვარი სპეციალური ტეგების გარეშე. როდესაც მომხმარებელი შეავსებს ფორმას და დააჭერს გაგზავნის ღილაკს, გამოიძახება action.php გვერდი. ამ ფაილს შეიძლება ჰქონდეს მსგავსი რამ:

მაგალითი #2 ფორმის მონაცემების ჩვენება

გამარჯობა,.
Შენ მოხუცი ხარ.

ამ პროგრამის გამომავალი მაგალითი:

გამარჯობა, სერგეი. 30 წლის ხარ.

თუ არ გაითვალისწინებთ კოდის ნაწილებს htmlspecialchars() და (ინტ), ამ კოდის მუშაობის პრინციპი უნდა იყოს მარტივი და გასაგები. htmlspecialchars() უზრუნველყოფს, რომ "სპეციალური" HTML სიმბოლოები სწორად იყოს კოდირებული ისე, რომ მავნე HTML ან Javascript არ იყოს ჩასმული თქვენს გვერდზე. ასაკობრივი ველი, რომელიც ვიცით, უნდა იყოს რიცხვი, შეგვიძლია უბრალოდ გადავიყვანოთ მთელ რიცხვად, რომელიც ავტომატურად მოიშორებს არასასურველ სიმბოლოებს. PHP-ს ასევე შეუძლია ამის გაკეთება ავტომატურად ფილტრის გაფართოების გამოყენებით. $_POST["name"] და $_POST["age"] ცვლადები ავტომატურად დაყენებულია თქვენთვის PHP-ის მიერ. ადრე ვიყენებდით $_SERVER სუპერგლობალური ცვლადი, მაგრამ აქ ასევე ვიყენებთ $_POST სუპერგლობალურ ცვლადს, რომელიც შეიცავს ყველა POST მონაცემს. შეამჩნია, რომ გაგზავნის მეთოდიჩვენი ფორმის (მეთოდი) არის POST. თუ მეთოდს გამოვიყენებდით მიიღეთ, მაშინ ჩვენი ფორმის ინფორმაცია იქნება სუპერგლობალური $_GET ცვლადი. ალტერნატიულად, შეგიძლიათ გამოიყენოთ $_REQUEST ცვლადი, თუ მონაცემთა წყაროს მნიშვნელობა არ აქვს. ეს ცვლადი შეიცავს GET, POST, COOKIE მონაცემთა ნარევს.

15 წლის წინ

HTTP სპეციფიკაციის მიხედვით, თქვენ უნდა გამოიყენოთ POST მეთოდი, როდესაც იყენებთ ფორმას სერვერის ბოლოს რაღაცის მდგომარეობის შესაცვლელად. მაგალითად, თუ გვერდს აქვს ფორმა, რომელიც საშუალებას აძლევს მომხმარებლებს დაამატონ საკუთარი კომენტარები, მაგალითად, ამ გვერდზე, ფორმამ უნდა გამოიყენოს POST. თუ დააწკაპუნებთ "ხელახალი ჩატვირთვა" ან "განახლება" გვერდზე, რომელსაც მიაღწიეთ POST-ის საშუალებით, ეს თითქმის ყოველთვის შეცდომაა -- თქვენ არ უნდა განათავსოთ ერთი და იგივე კომენტარი ორჯერ -- რის გამოც ეს გვერდები არ არის მონიშნული ან ქეშირებული.

თქვენ უნდა გამოიყენოთ GET მეთოდი, როდესაც თქვენი ფორმა არის სერვერიდან რაღაცის ამოღება და რეალურად არაფერს ცვლის. მაგალითად, საძიებო სისტემის ფორმამ უნდა გამოიყენოს GET, რადგან ვებსაიტის ძიებამ არ უნდა შეცვალოს ის, რაც შეიძლება კლიენტს აინტერესებდეს, ხოლო საძიებო სისტემის შეკითხვის შედეგების სანიშნება ან ქეშირება ისეთივე სასარგებლოა, როგორც სანიშნეების ჩაწერა ან ქეშირება. სტატიკური HTML გვერდი.

2 წლის წინ

გასარკვევად ღირს:

POST არ არის უფრო უსაფრთხო ვიდრე GET.

GET vs POST-ის არჩევის მიზეზები მოიცავს სხვადასხვა ფაქტორებს, როგორიცაა მოთხოვნის განზრახვა (აგზავნით თუ არა ინფორმაციას?), მოთხოვნის ზომას (არსებობს შეზღუდვები რამდენ ხანს შეიძლება იყოს URL, და GET პარამეტრების გაგზავნა. URL) და რამდენად მარტივად გსურთ, რომ მოქმედება იყოს გაზიარებული -- მაგალითად, Google Searches არის GET, რადგან ეს აადვილებს საძიებო მოთხოვნის სხვებთან კოპირებას და გაზიარებას უბრალოდ URL-ის გაზიარებით.

უსაფრთხოება აქ მხოლოდ გასათვალისწინებელია იმის გამო, რომ GET უფრო ადვილია გაზიარება, ვიდრე POST. მაგალითი: თქვენ არ გსურთ პაროლის გაგზავნა GET-ის მიერ, რადგან მომხმარებელმა შეიძლება გაიზიაროს მიღებული URL და უნებურად გამოავლინოს თავისი პაროლი.

თუმცა, GET და POST თანაბრად ადვილად დასაჭერია კარგად განლაგებული მავნე პირის მიერ, თუ თქვენ არ განათავსებთ TLS/SSL-ს თავად ქსელური კავშირის დასაცავად.

HTTP-ით გაგზავნილი ყველა ფორმა (ჩვეულებრივ პორტი 80) დაუცველია და დღეს (2017) არ არსებობს ბევრი კარგი მიზეზი იმისა, რომ საჯარო ვებსაიტმა არ გამოიყენოს HTTPS (რომელიც ძირითადად არის HTTP + სატრანსპორტო ფენის უსაფრთხოება).

ბონუსის სახით, თუ იყენებთ TLS-ს, თქვენ მინიმუმამდე ამცირებთ თქვენი მომხმარებლების მიერ თქვენს მიერ არ დაყენებული კოდის (რეკლამების) შეყვანის რისკს თქვენს ტრაფიკში.

POST და GET მეთოდები ძირითადად გამოიყენება ძალებიდან პარამეტრების გადასატანად. მთავარი განსხვავება POST და GET მეთოდებს შორის არის ინფორმაციის გადაცემის გზა. GET მეთოდში პარამეტრები გადაეცემა მისამართების ზოლში (URL), ე.ი. HTTP მოთხოვნის სათაურში, ხოლო POST მეთოდში პარამეტრები გადაიცემა HTTP მოთხოვნის სხეულის მეშვეობით და არ აისახება მისამართების ზოლში.

1. ღილაკები - Tag

ტეგი ქმნის ღილაკებს ვებ გვერდზე და მისი მოქმედება წააგავს ტეგის გამოყენებით მიღებულ შედეგს (typ="button | reset | submit" პარამეტრით). ამ ტეგისაგან განსხვავებით, ის გთავაზობთ გაფართოებულ ვარიანტებს ღილაკების შესაქმნელად. მაგალითად, ასეთ ღილაკზე შეგიძლიათ განათავსოთ ნებისმიერი HTML ელემენტი, სურათების ჩათვლით. სტილის გამოყენებით, შეგიძლიათ განსაზღვროთ ღილაკის გარეგნობა შრიფტის, ფონის ფერის, ზომის და სხვა პარამეტრების შეცვლით.

თეორიულად, ტეგი უნდა განთავსდეს ელემენტის მიერ დაყენებული ფორმის შიგნით. თუმცა, ბრაუზერები არ აჩვენებენ შეცდომის შეტყობინებას და სწორად მუშაობენ ტეგთან, თუ მას დამოუკიდებლად შეხვდებით. თუმცა, თუ თქვენ გჭირდებათ ღილაკზე დაწკაპუნების შედეგი სერვერზე გაგზავნა, ის უნდა განთავსდეს კონტეინერში. დახურვის ტეგი საჭიროა.

Პარამეტრები:

გამორთულია - ბლოკავს ელემენტის წვდომას და მოდიფიკაციას.

ტიპი - ღილაკის ტიპი

მნიშვნელობა - ღილაკის მნიშვნელობა, რომელიც გაიგზავნება სერვერზე ან წაიკითხება sprits-ის გამოყენებით.

ღილაკი ტექსტით

პარამეტრი DISABLED ბლოკავს ღილაკის წვდომას და შეცვლას. ამ შემთხვევაში, ის ნაჩვენებია ნაცრისფერით და მომხმარებლის მიერ მისი გააქტიურება შეუძლებელია. გარდა ამისა, ასეთი ღილაკი ვერ მოიპოვებს ფოკუსს Tab კლავიშის დაჭერით, მაუსის გამოყენებით ან სხვაგვარად. თუმცა, ამ ღილაკის მდგომარეობა შეიძლება შეიცვალოს სკრიპტების საშუალებით.

აქტიური ღილაკი არააქტიური ღილაკი

პარამეტრი TYPE განსაზღვრავს ღილაკის ტიპს, რომელიც ადგენს მის ქცევას ფორმაზე. სხვადასხვა ტიპის ღილაკები გარეგნულად არანაირად არ განსხვავდება, მაგრამ თითოეულ ღილაკს აქვს თავისი ფუნქციები. ნაგულისხმევი მნიშვნელობა: ღილაკი.

არგუმენტები:

ღილაკი - რეგულარული ღილაკი.

გადატვირთვა - ღილაკი შეყვანილი ფორმის მონაცემების გასასუფთავებლად და მნიშვნელობების თავდაპირველ მდგომარეობაში დასაბრუნებლად.

Submit - ღილაკი ფორმის მონაცემების სერვერზე გაგზავნისთვის.

ფორმის გასუფთავება ფორმის გაგზავნა

პარამეტრი VALUE განსაზღვრავს ღილაკის მნიშვნელობას, რომელიც გაიგზავნება სერვერზე. სერვერზე იგზავნება წყვილი „name=value“, სადაც სახელი მითითებულია ტეგის სახელის პარამეტრით, მნიშვნელობა კი მნიშვნელობის პარამეტრით. მნიშვნელობა შეიძლება ემთხვეოდეს ღილაკზე მოცემულ ტექსტს ან იყოს დამოუკიდებელი. მნიშვნელობის პარამეტრი ასევე გამოიყენება სკრიპტების საშუალებით მონაცემებზე წვდომისთვის.

ფორმის გაგზავნა

1.1. ღილაკი (შეყვანის ტიპი=ღილაკი) 1.2. ღილაკი გამოსახულებით (შეყვანის ტიპი=სურათი) ღილაკი სურათით

სურათების მქონე ღილაკები მოქმედებით მსგავსია გაგზავნის ღილაკთან, მაგრამ ისინი წარმოადგენენ სურათს. ამისათვის დააყენეთ type=image და src="image.gif" .

როდესაც მომხმარებელი დააწკაპუნებს სურათზე სადმე, შესაბამისი ფორმა გადაეგზავნება სერვერს ორი დამატებითი ცვლადით - sub_x და sub_y . ისინი შეიცავს მომხმარებლის კოორდინატებს, რომლებიც დააწკაპუნებენ სურათზე. გამოცდილმა პროგრამისტებმა შეიძლება შეამჩნიონ, რომ ბრაუზერის მიერ გაგზავნილი ცვლადის სახელები რეალურად შეიცავს წერტილს და არა ქვედა ხაზს, მაგრამ PHP ავტომატურად გარდაქმნის წერტილს ქვედა ხაზად.

1.3. ფორმის გაგზავნის ღილაკი (შეყვანის ტიპი = გაგზავნა)

ემსახურება ფორმის წარდგენას სკრიპტში. ფორმის გაგზავნის ღილაკის შექმნისას უნდა მიუთითოთ 2 ატრიბუტი: type="submit" და value="Button text" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.!}

არ არის საჭირო PHP სკრიპტი.

1.4. ღილაკების მასივი (გაგზავნა) მოქმედების ვარიანტის ასარჩევად 2. ფორმის გადატვირთვის ღილაკი (გადატვირთვის)

გადატვირთვის ღილაკზე დაწკაპუნებისას, ფორმის ყველა ელემენტი დაყენდება ნაგულისხმევ ატრიბუტებში მითითებულ მდგომარეობაში და ფორმა არ იქნება გაგზავნილი.

არ არის საჭირო PHP სკრიპტი.

3. მონიშვნის ველი

მოსანიშნი ველები მომხმარებელს უქმნის უამრავ ვარიანტს და იძლევა თვითნებური არჩევის საშუალებას (არც ერთი, ერთი ან მეტი).

თეთრი
მწვანე
ლურჯი
წითელი
შავი

// ღილაკების პირველი ნაკრები
// ღილაკების მეორე ნაკრები
// ღილაკების მესამე ნაკრები

5. ტექსტის ველი (ტექსტი)

ზომის ზომისა და მაქსიმალური სიგრძის სიმბოლოების მაქსიმალური დასაშვები სიგრძის რეგულარული ტექსტის ველის შექმნისას, type ატრიბუტი იღებს ტექსტის მნიშვნელობას. თუ მითითებულია მნიშვნელობის პარამეტრი, ველი აჩვენებს ცვლადში მითითებულ მნიშვნელობას. ველის შექმნისას არ დაგავიწყდეთ ველის სახელის მითითება, რადგან... ეს ატრიბუტი აუცილებელია.

6. პაროლის ველი

ზუსტად იგივეა, რაც ტექსტის ველი, გარდა იმისა, რომ მომხმარებლის მიერ აკრეფილი სიმბოლოები ეკრანზე არ გამოჩნდება.

7. დამალული ტექსტის ველი (დამალული)

საშუალებას გაძლევთ გადასცეთ სერვისის გარკვეული ინფორმაცია სკრიპტს გვერდზე მისი ჩვენების გარეშე.

8. ჩამოსაშლელი სია (აირჩიეთ)

ტეგი არის ჩამოსაშლელი ან გაფართოებული სია და შესაძლებელია ერთი ან მეტი მწკრივის არჩევა ერთდროულად. მაგრამ მნიშვნელობა გადაეცემა ბოლო არჩეულ ღილაკს.

სია იწყება დაწყვილებული ტეგებით. ტეგები საშუალებას გაძლევთ განსაზღვროთ სიის შინაარსი, ხოლო მნიშვნელობის პარამეტრი განსაზღვრავს სტრიქონის მნიშვნელობას. თუ არჩეული პარამეტრი მითითებულია ტეგში, მაშინ მწკრივი თავდაპირველად შეირჩევა. ზომის პარამეტრი განსაზღვრავს რამდენ ხაზს დაიკავებს სია. თუ ზომა არის 1, მაშინ სია იქნება ჩამოსაშლელი. თუ მითითებულია მრავალჯერადი ატრიბუტი, მაშინ შესაძლებელია სიიდან რამდენიმე ელემენტის არჩევა. მაგრამ ეს სქემა პრაქტიკულად არ გამოიყენება და ზომით = 1 აზრი არ აქვს.

თეთრი მწვანე ლურჯი წითელი შავი

თუ თქვენ გჭირდებათ ჩამოსაშლელი მენიუს შექმნა პროგნოზირებადი თანმიმდევრობით. მაგალითად, სია 2000 წლიდან 2050 წლამდე. შემდეგ გამოიყენება შემდეგი ტექნიკა.

9. მრავალხაზოვანი ტექსტის შეყვანის ველი (textarea)

ტექსტის შეყვანის მრავალ სტრიქონიანი ველი საშუალებას გაძლევთ გაგზავნოთ არა მხოლოდ ერთი, არამედ რამდენიმე ხაზი ერთდროულად. საჭიროების შემთხვევაში შეგიძლიათ მიუთითოთ მხოლოდ წაკითხვის ატრიბუტი, რომელიც კრძალავს ტექსტის რედაქტირებას, წაშლას და შეცვლას, ე.ი. ტექსტი იქნება მხოლოდ წაკითხვადი. თუ საჭიროა ტექსტი თავიდან აისახოს მრავალხაზოვანი შეყვანის ველში, მაშინ ის უნდა განთავსდეს ტეგებს შორის.

არსებობს შეფუთვის პარამეტრი - დაყენების ხაზის შეფუთვა. შესაძლო მნიშვნელობები:

გამორთული - გამორთავს ხაზის შეფუთვას;

ვირტუალური - აჩვენებს ხაზების წყვეტებს, მაგრამ აგზავნის ტექსტს შეყვანისთანავე;

ფიზიკური - ხაზის წყვეტები თავდაპირველ ფორმაშია დარჩენილი.

ნაგულისხმევად, ტეგი ქმნის ცარიელ ველს, რომლის სიგანეა 20 სიმბოლო და შედგება 2 ხაზისგან.


იმისათვის, რომ მრავალსტრიქონიანი ტექსტის ველი შეესაბამებოდეს html ფორმატირებას (ხაზის შეფუთვა ტეგის გამოყენებით
ან
), შემდეგ გამოიყენეთ nl2br() ფუნქცია:

თავდაპირველად ჩასმული ხაზი 1 თავდაპირველად ჩასმული ხაზი 2 თავდაპირველად ჩასმულია ხაზი 3

10. ღილაკი ფაილების ატვირთვისთვის (დათვალიერება)

ემსახურება სერვერზე ფაილების ატვირთვის განხორციელებას. ტექსტური ველის შექმნისას თქვენ ასევე უნდა მიუთითოთ ველის ტიპი, როგორც "ფაილი".

Ატვირთე ფაილი:

ბრაუზერთან სერვერთან დაკავშირების გზები

HTTP პროტოკოლით გათვალისწინებული რამდენიმე მეთოდია. ეს მნიშვნელოვანი ინფორმაციაა. სხვა გზები არ არსებობს. პრაქტიკაში გამოიყენება ორი: GET არის მონაცემების გადაცემისას მისამართების ზოლში, მაგალითად, როდესაც მომხმარებელი დააჭერს ბმულს. POST - როდესაც ის დააჭერს ღილაკს ფორმაზე.

GET მეთოდი

GET მეთოდით მონაცემების გადასატანად, თქვენ არ გჭირდებათ ფორმის შექმნა HTML გვერდზე (არავინ გიკრძალავთ ფორმების გამოყენებას მოთხოვნებისთვის GET მეთოდის გამოყენებით - მაგრამ ეს სისულელეა) - მხოლოდ დოკუმენტის ბმული დამატებით შეკითხვის სტრიქონი, რომელიც შეიძლება გამოიყურებოდეს ცვლადი=მნიშვნელობის წყვილი, გაერთიანებულია ამპერსანტის გამოყენებით და სტრიქონი ემატება გვერდის URL-ს კითხვის ნიშნის გამოყენებით „? "

მაგრამ თქვენ არ გჭირდებათ key=value წყვილების გამოყენება, თუ მხოლოდ ერთი ცვლადის გადაცემა გჭირდებათ; ამისათვის თქვენ უნდა დაწეროთ ცვლადის VALUE (არა სახელი) კითხვის ნიშნის შემდეგ.

ამ გზით პარამეტრების გადაცემის უპირატესობა ის არის, რომ კლიენტებს, რომლებსაც არ შეუძლიათ POST მეთოდის გამოყენება (მაგალითად, საძიებო სისტემებში), შეუძლიათ უბრალოდ გადასცენ პარამეტრები სკრიპტში ბმულის მიყოლებით და მიიღონ შინაარსი.

მინუსი არის ის, რომ უბრალოდ მისამართების ზოლში პარამეტრების შეცვლით მომხმარებელს შეუძლია სკრიპტის არაპროგნოზირებადი გზით შემობრუნება, ეს ქმნის უსაფრთხოების უზარმაზარ ხვრელს, როდესაც კომბინირებულია განუსაზღვრელ ცვლადებთან და register_globals-თან, ან ვინმეს შეუძლია გაარკვიოს მნიშვნელოვანი ცვლადის მნიშვნელობა. (როგორც სესიის ID) უბრალოდ მონიტორის ეკრანზე ყურებით.

საჯარო გვერდებზე წვდომა პარამეტრების გადაცემით (გაზრდილი ფუნქციონირება)

ინფორმაციის გადაცემა, რომელიც არ იმოქმედებს უსაფრთხოების დონეზე

დაცულ გვერდებზე წვდომისათვის გადაცემული პარამეტრებით

ინფორმაციის გადაცემა, რომელიც გავლენას ახდენს უსაფრთხოების დონეზე

ინფორმაციის გადასაცემად, რომლის შეცვლა შეუძლებელია მომხმარებლის მიერ (ზოგი გადასცემს SQL მოთხოვნების ტექსტს.

POST მეთოდი

თქვენ შეგიძლიათ მონაცემების გაგზავნა POST მეთოდით მხოლოდ HTML გვერდზე არსებული ფორმის გამოყენებით. მთავარი განსხვავება POST-სა და GET-ს შორის არის ის, რომ მონაცემები გადაიცემა არა მოთხოვნის სათაურში, არამედ სხეულში, შესაბამისად მომხმარებელი ვერ ხედავს მას. მისი შეცვლა შესაძლებელია მხოლოდ თავად ფორმის შეცვლით.

უპირატესობა:

მეტი უსაფრთხოება და ფუნქციონირება POST ფორმების გამოყენებით მოთხოვნებისთვის.

ხარვეზი:

ნაკლები ხელმისაწვდომობა.

რისთვის უნდა გამოიყენოთ:

დიდი რაოდენობით ინფორმაციის გადაცემა (ტექსტი, ფაილები..);

ნებისმიერი მნიშვნელოვანი ინფორმაციის გადაცემა;

წვდომის შეზღუდვის მიზნით (მაგალითად, ნავიგაციისთვის გამოიყენეთ მხოლოდ ფორმა - ვარიანტი, რომელიც მიუწვდომელია ყველა რობოტის პროგრამისთვის ან კონტენტის მტაცებლებისთვის).

რისთვის არ უნდა იქნას გამოყენებული:

Შეზღუდვების გარეშე.

ფაილების ატვირთვა POST მეთოდით

PHP-ს შეუძლია ნებისმიერი ბრაუზერის გამოყენებით გადმოწერილი ფაილის მიღება. ეს შესაძლებელს ხდის ტექსტის და ორობითი ფაილების ატვირთვას. PHP ავთენტიფიკაციისა და ფაილური სისტემის ფუნქციებთან ერთად, თქვენ გაქვთ სრული კონტროლი იმაზე, თუ ვის უფლება აქვს ატვირთოს ფაილები და რა უნდა გააკეთოს ფაილთან მისი ატვირთვის შემდეგ.

ფაილის ატვირთვის გვერდი შეიძლება განხორციელდეს სპეციალური ფორმის გამოყენებით, რომელიც ასე გამოიყურება:

//ფაილების ატვირთვის ფორმა ამ ფაილის გაგზავნა:

ზემოთ მოყვანილ მაგალითში „_URL_“ უნდა შეიცვალოს PHP სკრიპტის ბმულით. დამალული ველი MAX_FILE_SIZE (მნიშვნელობა უნდა იყოს მითითებული ბაიტებში) წინ უნდა უსწრებდეს ფაილის შერჩევის ველს და მისი მნიშვნელობა არის ფაილის მაქსიმალური დასაშვები ზომა. ასევე უნდა დარწმუნდეთ, რომ ფორმის ატრიბუტებში მიუთითეთ enctype="multipart/form-data", წინააღმდეგ შემთხვევაში ფაილები სერვერზე არ აიტვირთება.

ყურადღება

MAX_FILE_SIZE ვარიანტი არის ბრაუზერის რეკომენდაცია, მაშინაც კი, თუ PHP ასევე შეამოწმებს ამ მდგომარეობას. ბრაუზერის მხრიდან ამ შეზღუდვის გვერდის ავლით საკმაოდ მარტივია, ასე რომ თქვენ არ უნდა დაეყრდნოთ ამ ფუნქციას ყველა დიდი ფაილის დაბლოკვისთვის. თუმცა, არ არსებობს გზა PHP-ის მაქსიმალური ზომის შეზღუდვის გვერდის ავლით. თქვენ მაინც უნდა დაამატოთ MAX_FILE_SIZE ფორმის ცვლადი, რადგან ეს ხელს უშლის მომხმარებლებს დიდი ფაილების გადაცემის დროს მოუთმენლად ლოდინი, მხოლოდ იმის გასარკვევად, რომ ფაილი ძალიან დიდია და გადაცემა რეალურად ვერ მოხერხდა.

როგორ განვსაზღვროთ მოთხოვნის მეთოდი?

პირდაპირ:

Getenv ("REQUEST_METHOD");

დაბრუნდება GET ან POST.

რომელი მეთოდი უნდა იქნას გამოყენებული?

თუ ფორმა გამოიყენება გარკვეული ინფორმაციის მოთხოვნისთვის, მაგალითად, ძიების დროს, მაშინ ის უნდა გაიგზავნოს GET მეთოდით. იმისათვის, რომ შეძლოთ გვერდის განახლება, შეგიძლიათ მონიშნოთ იგი და ან გაუგზავნოთ ბმული მეგობარს.

თუ ფორმის გაგზავნის შედეგად ხდება მონაცემების ჩაწერა ან შეცვლა სერვერზე, მაშინ ისინი უნდა გაიგზავნოს POST მეთოდით, ხოლო ფორმის დამუშავების შემდეგ აუცილებელია ბრაუზერის გადამისამართება GET მეთოდით. ასევე, POST შეიძლება საჭირო გახდეს, თუ საჭიროა დიდი რაოდენობით მონაცემების სერვერზე გადატანა (GET-ისთვის ეს ძალიან შეზღუდულია), ასევე თუ გადაცემული მონაცემები არ უნდა იყოს ნაჩვენები მისამართების ზოლში (შესვლისა და პაროლის შეყვანისას, მაგალითად).

ნებისმიერ შემთხვევაში, POST-ის დამუშავების შემდეგ ყოველთვის უნდა გადამისამართოთ ბრაუზერი რომელიმე გვერდზე, თუნდაც იგივე, მაგრამ ფორმის მონაცემების გარეშე, რათა გვერდის განახლებისას ისინი აღარ ჩაიწეროს.

როგორ გადავიტანოთ მონაცემები სხვა ფაილში პირდაპირ PHP პროგრამის კორპუსიდან GET და POST მეთოდების გამოყენებით? მაგალითი POST და GET მეთოდების გამოყენებით მონაცემთა გაგზავნის ერთდროულად და სერვერისგან პასუხის მიღების დემონსტრირებისთვის.

ეს სტატია დეტალურად განიხილავს PHP _SELF ცვლადის გამოყენებას.

რა არის PHP _SELF ცვლადი?

PHP _SELF ცვლადი აბრუნებს მიმდინარე ფაილის სახელს და გზას (დოკუმენტის ფესვთან შედარებით). თქვენ შეგიძლიათ გამოიყენოთ ეს ცვლადი ფორმის მოქმედების ატრიბუტში. ასევე არის რამდენიმე ნიუანსი, რომელიც უნდა იცოდეთ. რა თქმა უნდა, ამ ნიუანსებს გვერდს ვერ ავუვლით.

მოდით შევხედოთ რამდენიმე მაგალითს.

ექო $_SERVER["PHP_SELF"];

1) დავუშვათ, რომ თქვენი php ფაილი მდებარეობს შემდეგ მისამართზე:

Http://www.yourserver.com/form-action.php

ამ შემთხვევაში, PHP _SELF ცვლადი შეიცავს:

"/form-action.php"

2) დავუშვათ, რომ თქვენი php ფაილი მდებარეობს ამ მისამართზე:

Http://www.yourserver.com/dir1/form-action.php

PHP_SELF იქნება:

"/dir1/form-action.php"

PHP _SELF ფორმის action ატრიბუტში. რატომ სჭირდებოდა ის იქ?

როგორც წესი, PHP _SELF ცვლადი გამოიყენება ფორმის ტეგის ქმედების ატრიბუტში. მოქმედების ატრიბუტი განსაზღვრავს მისამართს, რომელზედაც გაიგზავნება ფორმის შიგთავსი დადასტურების შემდეგ (მომხმარებელი დააჭერს ღილაკს type="submit"). როგორც წესი, ეს არის იგივე გვერდი, საიდანაც ფორმა გავიდა.

თუმცა, თუ ფორმაში მითითებულ ფაილს გადაარქმევთ, თქვენ დაგჭირდებათ ფაილის სახელის გადარქმევა action ატრიბუტში, წინააღმდეგ შემთხვევაში ფორმა არ იმუშავებს.

PHP _SELF ცვლადი გიხსნით არასაჭირო შესწორებისგან, ვინაიდან გვერდის მისამართი ავტომატურად გენერირებული იქნება ფაილის სახელიდან გამომდინარე.

ვთქვათ, თქვენ გაქვთ ფორმის ფაილი, სახელწოდებით form-action.php და გსურთ, რომ ფორმა იმავე ფაილში გადაიტანოთ დადასტურების შემდეგ. ჩვეულებრივ, ისინი ასე წერენ:

მაგრამ შეგიძლიათ გამოიყენოთ PHP _SELF ცვლადი form-action.php-ის ნაცვლად. ამ შემთხვევაში კოდი ასე გამოიყურება: