תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

הגשה וטיפול בטפסים באמצעות 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, ואחרי שמלאנו את הטופס ושלחנו אותו, תופיע בשורת הכתובות השורה הבאה:

שורת הכתובות באתר אחרי שליחת טופס עם מתודה 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 והדפסת התוצאה עם קוד PHP.

במידה והטופס לא נשלח, ייתכן שתופיע הודעת שגיאה מכוערת מפני שהמשתנה $_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 וקוד PHP

 

ההבדלים בין POST ו-GET

  1. בעוד הנתונים נשלחים עם GET דרך שורת הכתובות, POST לא מעביר את הנתונים דרך שורת הכתובות.
  2. עם GET ניתן להעביר עד 2000 תווים סטנדרטיים, ועם POST ניתן להעביר הרבה יותר מידע.
  3. GET הוא פחות בטוח מפני שניתן להעביר אותו דרך שורת הכתובות, ושם אפשר לשנות את הנתונים.
  4. טפסים שמשתמשים ב- GET ניתן לשמור בדפדפן, מפני שיש להם כתובת ייחודית שמכילה את הערכים שנשלחו בטופס.
  5. צריך לקודד את GET כשמעבירים תווים שאינם סטנדרטיים, דוגמת אותיות עבריות. את POST לא צריך לקודד. במדריך שאפרסם בעתיד, אסביר כיצד ניתן לקודד נתונים שנשלחים עם GET.

 

לכל מדריכי ה-PHP

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.

למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך קוראים בעברית לצ`ופצ`יק של הקומקום?

 

תמונת המגיב

שירן בתאריך: 03.03.2016

תודה רבה אחלה הסבר.

תמונת המגיב

יוסי בן הרוש בתאריך: 04.03.2016

בבקשה.

תמונת המגיב

עידן בתאריך: 09.06.2016

תודה רבה ההסבר מפורט מאד

תמונת המגיב

יוסי בן הרוש בתאריך: 10.06.2016

בכיף.

תמונת המגיב

אילון בתאריך: 03.02.2017

אין הרבה מדריכים בעברית כל הכבוד על הרעיון

תמונת המגיב

יוסי בן הרוש בתאריך: 04.02.2017

תודה רבה.

תמונת המגיב

ברק בתאריך: 20.02.2017

תודה על ההסבר!

תמונת המגיב

יוסי בן הרוש בתאריך: 22.02.2017

בבקשה, ברק.

תמונת המגיב

מרדכי אזרחי בתאריך: 10.06.2020

תודה על המדריך יצרתי טופס אלקטרוני HTML אני מעוניין שהטופס ישלח את התוכן למייל שלי איך עושים זאת ? יש לך במדריך על זה ? ושוב תודה רבה

תמונת המגיב

מרדכי אזרחי בתאריך: 07.12.2020

ראשית תודה רבה לך
שנית - זה לא עובד הקוד הזה
אולי ב 2020 זה כבר לא רלוונטי ? היום כותבים את זה אחרת ?

תמונת המגיב

שילת בתאריך: 19.07.2021

תודה רבה עזרת לי מאוד!