נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

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

 

 

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

 

= 4 + 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

בבקשה, ברק.