Friday, February 24, 2012

PHP 10 - සරල Form එකක් Handle කරමු

මේ පාඩමෙන් අපි අවධානය යොමු කරන්නේ එක් PHP පිටුවක ඇති HTML Form එකක ඇති තොරතුරු PHP පිටුවකට ලබාගන්නා ආකාරය පිළිබඳවයි. තවම මූලික දැනුම පිළිබඳ පාඩම් පල කරමින් සිටින නිසා ගොඩක් ගැඹුරින් නෙවෙයි, සරල උදාහරණයකින් මේ ගැන අපි ඉගෙනගනිමු.

HTML Form එකක් කෙළින්ම අපේ PHP Scripts තුළට සම්බන්ධ කරගැනීම සඳහා භාවිතා වන ක්‍රම (Methods) කීපයක් තිබෙනවා GET, POST සහ REQUEST ලෙස. අපි ඒ එක් එක් ක්‍රම පිළිබඳව මෙතැන් පටන් කතා කරමු.

$_GET විචල්‍යය භාවිතා කිරීම


GET Method එක භාවිතා කරමින් සැකසූ HTML Form එකක ඇති තොරතුරු ග්‍රහණය කරගැනීම සඳහා අපිට $_GET විචල්‍යය භාවිතා කළ හැකියි.

උදාහරණයක් ගෙන බලමු.

මේ පහතින් ඇත්තේ මම සාදාගන්නා පළමු PHP පිටුවට අදාල කේතයයි.


මෙහිදී මම PHP කේත කිසිවක් භාවිතා කර නැහැ. HTML කේත පමණයි. මෙම පිටුවේ BODY කොටස තුළ මම සරල HTML Form එකක් නිර්මාණය කර තිබෙනවා. එහි myName සහ myEmail ලෙස නම් කළ text boxes දෙකක් Submit Button එකක් තිබෙනවා. මින් සිදුවන්නේ Form එකෙහි ඇති තොරතුරු Submit Button එක ක්ලික් කළ පසු GET Method එක හරහා Welcome.php වෙත යැවීමයි.

welcome.php පිටුව සඳහා වන කේතය පහත දැක්වේ. මෙය welcome.php ලෙස save කරගන්න. 



මෙම පිටුවෙන් සිදුවන්නේ කලින් කී index.php පිටුවේ GET Method එක හරහා ලැබෙන තොරතුරු $_GET variable එක හරහා ලබාගැනීමයි. මෙහිදී $_GET විචල්‍යය associative array එකක් ලෙස ක්‍රියාත්මකවී, ලැබෙන තොරතුරු එහි elements තුළ ගබඩා කරගනී. Form එකෙහි ඇති Fields දෙක මෙම array එකෙහි index/keys බවට පත්වේ. (arrays අමතක නම් නැවත මතක් කරගන්න).

ඉන්පසු HTML පිටුවේ BODY එක තුළ සාමාන්‍ය පරිදි PHP කේතයක් හරහා ඔබ කලින් කළ ආකාරයෙන්ම එම array එකෙහි ඇති elements බ්‍රව්සරය වෙත Print කරගෙන තිබේ. (මෙතෙක් ඔබ පේළි කීපයකින් දුටු <?php ........... ?> කේතය මෙහි එක පෙළකින් ලියා ඇත).

දැන් මේ කේත ක්‍රියාත්මක කර බලමු. පළමුව index.php පිටුව ධාවනය කරන්න.


මෙසේ තොරතුරු ඇතුළත් කිරීමෙන් පසුව Submit මත ක්ලික් කරන්න. එවිට ඔබ දෙවැනියට සැකසූ welcome.php පිටුව විවෘත වනු ඇති.


සිදුවෙලා තිබෙන දේ පැහැදිලියි නේද? GET Method එකෙන් ලැබෙන තොරතුරු $_GET array එක තුළ ගබඩා කරගෙන ඉන්පසු අප Echo විධානය සමග දෙන Array elements බ්‍රව්සරය වෙත Print කර තිබෙනවා.

 නමුත් මෙහි ඇඩ්‍රස් බාර් එක දෙස හොඳින් බලන්න. ඔබ විසින් ඇතුළත් කළ සියලු තොරතුරු Address bar එක තුළ දිස්වෙනවා. ඒ නිසා මේ ක්‍රමය Passwords, Credit card numbers වගේ සංවේදී දත්ත හුවමාරුව සඳහානම් ඒතරම් යෝග්‍ය නොවේවි. නමුත් Bookmark කරගතයුතු පිටු සඳහානම් මේ ක්‍රමය වැදගත් වෙනවා. ඒවගේම මතක තියාගන්න. අකුරු 2000කට වඩා වැඩි තොරතුරු ප්‍රමාණයක් යවනකොටත් GET භාවිතා කරන්න එපා.

එවැනි අවස්ථා වලදී අපිට POST method එක භාවිතා කළ හැකියි.


$_POST විචල්‍යය භාවිතා කිරීම


මෙහි ක්‍රියාකාරීත්වයත් කලින් එකටම සමානයි එක දෙයකින් හැර. ඒ කලින් කොටසේදී කියූ මෙන් Address Bar එකේ URL එක තුළ ඔබ ඇතුළත් කළ දත්ත නොපෙන්වීමයි. කේතසටහනේ වෙනස් වන්නේ GET ඇති සෑම තැනකදීම ඒ වෙනුවට POST  භාවිතා වීමේ පමණයි.

index.php සඳහා කේත සටහන...


welcome.php සඳහා කේත සටහන...


මේ ක්‍රම දෙකෙන්ම ලැබෙන දත්ත ලබාගතහැකි තවත් විචල්‍යයක් තිබෙනවා. ඒ $_REQUEST.

$_REQUEST විචල්‍යය භාවිතා කිරීම


ඔබේ HTML Form එක භාවිතා කරන්නේ GET, POST අතරින් කුමන method එක වුවත් වෙනසක් නැතිව ඉන් ලැබෙන තොරතුරු ග්‍රහණය කරගැනීම සඳමා $_REQUEST විචල්‍යය භාවිතා කළ හැකියි.


1වැනි පාඩමේ සිට 10වැනි පාඩම තෙක් හැදෑරූ ඔබට දැන් PHP මූලික සංකල්ප පිළිබඳව හොද අවබෝධයක් තිබෙනවා. 11 වැනි පාඩමේදී අපි තවත් රසවත් අංශයක් පිළිබඳව ඉගෙනගන්නවා. ඒ, PHP සමග MySQL Database එකක් සම්බන්ධ කොට වැඩකරන ආකාරයයි.

ඔබ මේ ලිපියෙන් යමක් ඉගෙනගත්තානම් Comment එකකින් මා දිරිමත් කරන්නත් අමතක කරන්න එපා.ස්තුතියි!

3 comments:

  1. හොද වැඩක් දිගටම කරගෙන යන්න. http://kinith.blogspot.com/2012/02/php-10-form-handling.html එකට යමක් එකතු කල යුතුයි.
    GET,POST අතර ලොකු වෙනසක් තියනවා.

    අපි සාමාන්‍යයෙන් GET භාවිතා කරන්නෙ user, or 3rd party දෑනගත් යුතු share
    කරන දේවල් සදහා,

    ex. articles, page links...etc

    GET, හොදම උදාහරණය google search engine.try this.

    http://wwwgoogle.com/search?q=sri+lanka.
    මේ තියන්නේ මම කියලා ටයිප් කරල search කලාම ආව වෙබ් පිටුවෙ link එක. හොදට බලුවම '?' ලකුනට පසු q නම් variable එක හරහ මම textbox හී ට්යිප් කරපු pass කරල තියනවා.ඔය දෙයම POST වලින් කලා නම් මට ලැබෙන්නේ http://www.google.com. එහෙනම් මට a ලින්ක් එක share කරන්න බැ.(karala wadak na)

    අපි POST භාවිතා කරන්න් Login Form වෑනි රහස්‍ය තොරතුරු හුවමාරු කිරෛමට. GET method වලදි මෙන් 3rd party(hacker...etc) එකකට අපි යවන info කියවන්න අමාරුයි. ලොගින් ෆොර්ම් එකක username,password වගෙ ඒවා GET හරහා යවන්නේ නෑ.

    GET Method:

    1. All the name value pairs are submitted as a query string in URL.
    2. It's not secured as it is visible in plain text format in the Location bar of the web browser.
    3. As the data transfers through address bar (URL) there are some restrictions in using space, some characters like ampersand (&) etc in the GET method of posting data. We have to take special care for encoding data if such special characters are present.
    4. Length of the string is restricted.
    5. If method is not mentioned in the Form tag, this is the default method used.
    6. If get method is used and if the page is refreshed it would not prompt before the request is submitted again.
    7. One can store the name value pairs as bookmark and directly be used while sharing with others - example search results.
    8. Data is always submitted in the form of text
    9. If the response of the page is always same for the posted query then use GET example database searches

    POST Method:

    1. All the name value pairs are submitted in the Message Body of the request.

    2. Length of the string (amount of data submitted) is not restricted.

    3. Post Method is secured because Name-Value pairs cannot be seen in location bar of the web browser.

    4. If post method is used and if the page is refreshed it would prompt before the request is resubmitted.

    5. If the service associated with the processing of a form has side effects (for example, modification of a database or subscription to a service), the method should be POST.

    6. Data is submitted in the form as specified in enctype attribute of form tag and thus files can be used in FileUpload input box.

    ReplyDelete
    Replies
    1. බොහොම ස්තුතියි!

      Delete
  2. ‍හොද වැඩක් සහෝ...
    පීඑච්පී වලින් කොහොමද database එකක ඇති තොරත=රැ වලින් ඩේටා පිල්ටර් කරලා ගන්නේ.
    උදා Search box eke name matha name ekak type kalama ema name eka thiyana kenage thoraturu penwana html page ekak hada ganne? Eeta passe eka print karaganne?
    Roshan.

    ReplyDelete