תסביר מה זאת אומרת "לא עובד".עברתי בקצרה על הקוד וגילתי טעות. שפת PHP היא שפה case-sensitive, כלומר שפה שמבדילה בין אותיות קטנות לאותיות גדולות.
בקוד ה PHP שהוספת לתגובה הקודמת שלך יש משתנה בשם:
אבל יש מקום בקוד שבו המשתנה נקרא כך:
מבחינת השפה מדובר בשני משתנים שונים לחלוטין למרות שאתה בעצם התכוונת לאותו משתנה.
מה הפתרון? לפי מה שראיתי בקוד ה PHP שהוספת לתגובתך בכל המקומות המשתנה נקרא כך $email ורק במקום אחד כך $Email (תקן אותי אם אני טועה). לכן, הפתרון הפשוט ביותר הוא להחליף את השורה:
קוד: בחר הכל
if(filter_var($Email, FILTER_VALIDATE_EMAIL)) {
עם השורה הזאת:
קוד: בחר הכל
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
עריכה: אני חושב שמצאתי טעות נוספת בקוד ה PHP. לדעתי השורה שיש בה טעות היא בשורה הבאה:
קוד: בחר הכל
mail(MY_EMAIL, $Mtitle, $Mtexty, $header);
בשורה הזו יש טעות שנובעת מכך שבקוד ה PHP שלך שינית את שמות המשתנים לעומת שמות המשתנים בקוד ה PHP שנמצא במדריך שהפניתי אותך אליו.
את MY_EMAIL ו $header לא צריך לשנות כי לפי מה שאני רואה אילו משתנים שלא שיניתי את שמם (תקן אותי אם אני טועה).
המשתנים $Mtitle ו $Mtexty היו קיימים בקוד ה PHP במדריך שהפנתי אותך אליו אבל בקוד ה PHP שלך הם לא קיימים (החלפת את שמות המשתנים).
כיצד לתקן את השורה הנ"ל? תלוי מה אתה רוצה לעשות. אני אסביר לך:
הפונקציה mail() היא פונקציית PHP שמאפשרת שליחת מייל (דואר אלקטרוני). הפונקציה הזו מקבלת מספר פרמטרים.
פרמטרים הם ערכים שמעבירים לפונקציה ושהפונקציה עושה בהם שימוש. ישנם שני סוגים של פרמטרים:
פרמטרים שהם חובה - פרמטרים שחייבים להעביר לפונקציה ופרמטרים אופציונליים - הפונקציה תעבוד גם בלעדייהם, לא חובה להעביר פרמטרים אופציונליים לפונקציה.
הפרמטרים של הפונקציה mail() את הפרמטרים מעבירים לפונקציה לפי הסדר הבא:
- הפרמטר הראשון הוא לאיזו כתובת דואר אלקטרוני צריך לשלוח את המייל. זהו פרמטר חובה.
- הפרמטר השני הוא הנושא (הכותרת) של המייל. זהו פרמטר חובה.
- הפרמטר השלישי הוא תוכן המייל. זהו פרמטר חובה.
- הפרמטר הרביעי מאפשר להוסיף מידע נוסף למייל שישלח. לדוגמא: מי שלח את המייל. זהו פרמטר אופציונלי (לא חובה).
- הפרמטר החמישי הוא גם פרמטר אופציונלי (לא חובה), לא אסביר עליו מכיוון שלא הבנתי כל כך מה תפקידו ובכל מקרה במדריך שהפנתי אותך אליו לא נעשה שימוש בפרמטר הזה (הפרמטר הזה לא מועבר לפונקציה).
כאמור בשורה הזו יש טעות:
קוד: בחר הכל
mail(MY_EMAIL, $Mtitle, $Mtexty, $header);
כמו שאמרתי, את MY_EMAIL ו $header לא צריך לשנות כי לפי מה שאני רואה אילו משתנים שלא שיניתי את שמם (תקן אותי אם אני טועה) ולכן הם לא הבעיה בשורה הזאת.
הפרמטר השני הוא המשתנה $Mtitle שבקוד שלך אינו קיים. לפי ההסבר שלי ניתן להבין שבמקום $Mtitle צריך להעביר לפונקציה משתנה שיהיה הכותרת של המייל. למשל, אם אתה רוצה שהמשתנה $customer_name יהיה הכותרת של המייל תחליף את $Mtitle עם $customer_name.
כעת השורה תראה כך:
קוד: בחר הכל
mail(MY_EMAIL, $customer_name, $Mtexty, $header);
כעת הבעיה היחידה שנותרה בשורה הוא המשתנה $Mtexty שגם הוא לא קיים. במקום $Mtexty צריך להעביר לפונקציה משתנה שיהיה תוכן ההודעה. לדוגמא, אם אתה רוצה שתוכן ההודעה יהיה $money_sent אז תשנה את השורה כך:
קוד: בחר הכל
mail(MY_EMAIL, $Mtitle, $money_sent, $header);
ויחד עם השינוי של כותרת המייל השורה תראה כך:
קוד: בחר הכל
mail(MY_EMAIL, $customer_name, $money_sent, $header);
כעת השורה אמורה להיות תקינה.
אין אחריות שהטעויות שציינתי הן הטעויות היחידות, ייתכן שיש טעויות נוספות.
בהצלחה!