הגשה וטיפול בטפסים באמצעות PHP
ברגע שלוחצים על כפתור "שלח" של הטופס, תוכנו של הטופס נשלח לאחד משני משתנים גלובליים, שאותם מספק PHP - האחד הוא$_POST[] והאחר הוא $_GET[]. מיד נסביר את המשתנים, אבל ראשית נכתוב את טופס ה-HTML.
כתיבת טופס HTML
הטופס הוא אלמנט של HTML רגיל, כשאת הטופס עוטפות תגיות <form>. כך זה נראה:
<html>
<head>
</head>
<body>
<form>
</form>
</body>
</html>
לתוך תגית ה-form הפותחת, אנחנו משלבים את שיטת השליחה ואת הדף שבו סקריפט ה-PHP, שצריך לטפל בטופס. כך זה נראה:
1. method="POST" או method="GET", תלוי בשיטת שליחת הנתונים.
2. action="form.php", כפי שזה כתוב פה אנחנו מעוניינים לשלוח את הנתונים מהטופס לסקריפט שנמצא בקובץ "form.php ". במידה ונרצה שה-PHP שמטפל בטופס יהיה באותו קובץ נשאיר את ה-action ריק.
נוסיף זאת לטופס:
<form method = "GET" action = "" >
</form>
בשלב זה, נוסיף את השדות לטופס בתוך input. השדה הראשון הוא מהסוג text ושמו firstName. כך כותבים זאת:
<form method="GET" action="">
<input name="firstName" type="text" >
הסוג text מאפשר להזין מחרוזות שכוללות אותיות, מספרים ותווים נוספים.
השם name="" של השדה הוא מאוד חשוב, מפני שהוא מאפשר לנו לגשת לתוכן שהזין המשתמש לאותו שדה.
שדה נוסף, וחשוב מאוד הוא שדה submit, שיוצר את כפתור השליחה של הטופס.
<form method="GET" action="">
<input name="firstName" type="text" >
<input type="submit" name="submit" value="שלח" >
</form>
כך ייראה הטופס המוכן.
שליחת טופס עם GET
הגדרנו את שיטת משלוח הטופס ל-GET, ואחרי שמלאנו את הטופס ושלחנו אותו, תופיע בשורת הכתובות השורה הבאה:
ננסה להבין מה שכתוב בשורת הכתובות:
forms.php?firstName=&יוסיsubmitשלח=
לפני סימן השאלה (?), מופיע שמו של הקובץ, ואחרי סימן השאלה, המשתנים שנשלחו עם GET.
המשתנה הראשון, יוסי firstName=
והמשתנה השני, שלח submit=
שמם של המשתנים firstName ו-submit הוא לפי הערך שנתנו בתור name של השדה. ערכם של המשתנים הוא לפי מה שבחר המשתמש להזין, או לפי ה-value שהגדרנו עבור השדה.
בין המשתנים מחבר &.
שימו לב: אני משתמש בדפדפן chrome שאין לו בעיה להעביר משתנים ב-GET באותיות עבריות, אבל קיימת בעיה של העברת נתונים בעברית בדפדפנים מסוימים. באחד המדריכים העתידיים, אסביר כיצד לקודד עברית, כדי שנוכל להעביר אותה בבטחה דרך שורת הכתובות בשיטת GET.
טיפול במשתנים באמצעות PHP
כדי לטפל בנתונים נוסיף סקריפט של PHP מעל לטופס. לדוגמה, הקוד הבא שמדפיס למסך את הערך שהזין המשתמש לשדה firstName.
<body>
<?php
echo $_GET["firstName"];
?>
<form method = "GET" action = "" >
<input name="firstName" type="text" >
<input type="submit" name="submit" value="שלח" >
</form>
</body>
כתוצאה מקוד זה, כשהמשתמש ישלח את הטופס עם מחרוזת מסוימת שהוא הזין לשדה, המחרוזת תופיע מעל לטופס. בדוגמה זו שלחתי את המחרוזת "יוסי".
במידה והטופס לא נשלח, ייתכן שתופיע הודעת שגיאה מכוערת מפני שהמשתנה $_GET["firstName"] אינו מוגדר. כדי למנוע שגיאה כזו, נקפיד לשאול האם המשתמש שלח את הטופס, ורק בתנאי ששלח נבקש שמה שהוא שלח יודפס למסך. כך נראה הקוד שמכיל את התנאי:
if(isset($_GET["submit"])){// האם הטופס נשלח
echo $_GET["firstName"]; // אז תדפיס את תוכן השדה למסך
}
שיטת POST לשליחת הנתונים
נוסף לשיטת GET, ששולחת את הנתונים דרך שורת הכתובות, קיימת שיטת POST, שלא מעבירה נתונים דרך שורת הפקודות. כדי להשתמש בשיטת POST, נגדיר את שיטת משלוח הטופס ל-POST והמשתנה הגלובלי שקולט ומטפל בערכים שנשלחים עם הטופס יהיה $_POST[].
<body>
<?php
if(isset($_POST["submit"])){
echo $_POST["firstName"];
}
?>
<form method = "POST" action = "" >
<input name="firstName" type="text" >
<input type="submit" name="submit" value="שלח" >
</form>
</body>
כשנשלח את הנתונים עם הטופס, לא נראה את הערכים ששלחנו בשורת הכתובות מפני שהשתמשנו ב-POST. כך זה נראה:
ההבדלים בין POST ו-GET
- בעוד הנתונים נשלחים עם GET דרך שורת הכתובות, POST לא מעביר את הנתונים דרך שורת הכתובות.
- עם GET ניתן להעביר עד 2000 תווים סטנדרטיים, ועם POST ניתן להעביר הרבה יותר מידע.
- GET הוא פחות בטוח מפני שניתן להעביר אותו דרך שורת הכתובות, ושם אפשר לשנות את הנתונים.
- טפסים שמשתמשים ב- GET ניתן לשמור בדפדפן, מפני שיש להם כתובת ייחודית שמכילה את הערכים שנשלחו בטופס.
- צריך לקודד את GET כשמעבירים תווים שאינם סטנדרטיים, דוגמת אותיות עבריות. את POST לא צריך לקודד. במדריך שאפרסם בעתיד, אסביר כיצד ניתן לקודד נתונים שנשלחים עם GET.
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.