עזרה|שליחת טופס HTML בעזרת PHP

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

מנהל: צוות האתר

broyer
משתמש חדש
משתמש חדש
הודעות: 4
הצטרף: 10/08/2010 ב-16:10:43

עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי broyer » 10/08/2010 ב-16:17:28

טוב אז ניסיתי עזרה בכמה פורומים אבל ללא מענה.
אני מתחיל וכתבתי קוד של טופס ב html. אבל שאני מנסה לשלוח תטופס לאימייל בHtml הוא פותח את ה outlook והבנתי שב php אפשר לעשות את זה אוטומטי.
הקוד:

קוד: בחר הכל

<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />
<head></head>
<body><center>
<form method="post" action="mail.php">
 <input type="text" name="customer_name"> :שם הלקוח
<br><br>
<input type="text" name="date"> :תאריך
<br> <br>
<input type="text" name="rcon_password"> :טלפון שממנו הופקד הכסף
<br> <br>
<input type="text" name="money_sent"> :סכום שהופקד
<br> <br>
<select name="slot_number">
   <option value="12">12
   <option value="14">14
   <option value="16">16
   <option value="18">18
   <option value="20">20
   <option value="22">22
   <option value="24">24
   <option value="26">26
   <option value="28">28
   <option value="30">30
   <option value="32">32
</select> :מספר סלוטים
<br><br>
<input type="text name="phone_number"> :מספר פלאפון
<br><br>
<input type="text" name="asmahta_number"> :(מספר אסמכתא (להשאיר ריק במידה ושילמתם בטלפון
<br><br>
  <input type=submit value="שלח">                     <input type=reset value="אפס טופס">
</form>
</center></body>
</html>


עכשיו אני ממש ממש חדש ב php והבעיה שלי היא לכתוב את הקובץ mail.php אם אפשר עזרה אני אשמח.

Lenny
חבר צוות phpBB ישראל לשעבר
חבר צוות phpBB ישראל לשעבר
הודעות: 890
הצטרף: 15/07/2007 ב-15:34:10

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי Lenny » 10/08/2010 ב-16:22:31

המדריך הבא יעזר לך:
viewtopic.php?f=13&t=18777

בהצלחה.
Lenny - חבר צוות תמיכה ומודים לשעבר.

broyer
משתמש חדש
משתמש חדש
הודעות: 4
הצטרף: 10/08/2010 ב-16:10:43

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי broyer » 10/08/2010 ב-16:28:00

אוקי אבל יש לי בעיה.
ברגע שאני לוחץ על "שלח" זה פשוט מראה לי מה שרשום בקובץ mail.php
למה?

Lenny
חבר צוות phpBB ישראל לשעבר
חבר צוות phpBB ישראל לשעבר
הודעות: 890
הצטרף: 15/07/2007 ב-15:34:10

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי Lenny » 10/08/2010 ב-16:31:23

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

broyer
משתמש חדש
משתמש חדש
הודעות: 4
הצטרף: 10/08/2010 ב-16:10:43

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי broyer » 10/08/2010 ב-16:38:34

הטופס הזה שפרסמתי שכתבתי ב html בתגית form הפניתי אותו action="mail.php"
את ה Mail.php השתמשתי מהמדריך שהבאת לי ושמתי באותה תיקייה של קובץ הhtml ואני מנסה את זה על המחשב שלי לשלוח לאימייל.
התוצאה שאני מקבל זה רק את הקובץ php נפתח ב html

Lenny
חבר צוות phpBB ישראל לשעבר
חבר צוות phpBB ישראל לשעבר
הודעות: 890
הצטרף: 15/07/2007 ב-15:34:10

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי Lenny » 10/08/2010 ב-16:51:20

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

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

נקודה חשובה נוספת - קוד ה PHP שבמדריך מתאים לקוד ה HTML שמופיע באותו מדריך.
אם אתה מעוניין להשתמש בקוד ה PHP שבמדריך ובקוד ה HTML שלך יש צורך לבצע שינויים מסוימים בקוד ה PHP.

לסיום, בקוד ה HTML שלך עשית שימוש בתגית <center> על מנת למרכז אלמנטים מסוימים. לא מומלץ לעשות זאת בעזרת התגית <center>, עדיף להשתמש ב CSS.
כלומר, במקום הצורה הזאת:

קוד: בחר הכל

 <center>טקסט במרכז</center>


עדיף לעשות זאת כך:

קוד: בחר הכל

    <div align="center">טקסט במרכז</div>


ישנן שורות נוספות בקוד ה HTML שלך שאינן תואמות לתקן...

בהצלחה.
Lenny - חבר צוות תמיכה ומודים לשעבר.

broyer
משתמש חדש
משתמש חדש
הודעות: 4
הצטרף: 10/08/2010 ב-16:10:43

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי broyer » 10/08/2010 ב-17:24:31

באמת שאני משתגע..

קוד: בחר הכל

<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />
<head></head>
<body>
  <div align="center">
<form method="post" action="mail2.php">
 :שם הלקוח <input type="text" name="customer_name">
<br><br>
 :תאריך <input type="text" name="date">
<br> <br>
 :טלפון שממנו הופקד הכסף <input type="text" name="phone_number">
<br> <br>
 :אימייל פעיל <input type="text" name="email">
<br> <br>
 :סכום שהופקד <input type="text" name="money_sent">
<br><br>
  <input type=submit value="שלח">                     <input type=reset value="אפס טופס">
</form>
</div></body>
</html>

קוד: בחר הכל

<?php
header('Content-Type: text/html; charset=utf-8');

Define("MY_EMAIL", "[email protected]");
$Mess = array(
    'אחד או יותר מן השדות ריקים',
    'האימייל נשלח בהצלחה',
    'האימייל שציינתה לא חוקי'
    );

function skin($content) {
return <<<EOB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>טופס יצירת קשר</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" href="css.css" type="text/css" />
</head>

<body>
<h1>טופס יצירת קשר</h1>

{$content}
<br /><br />
<a href="http://i-host.co.il/page.php?page=tofes2">חזור לעמוד הקודם</a>
</body>

</html>
EOB;
}

if(isset($_POST['Submit'])) {
    $customer_name = trim($_POST['customer_name']);
    $date = trim($_POST['date']);
    $phone_number = trim($_POST['phone_number']);
    $email = trim($_POST['email']);
    $money_sent = trim($_POST['money_sent']);

    if(($customer_name == null) OR ($date == null) OR ($phone_number == null) OR ($email == null) OR ($money_sent == null)) {
        $cont = $Mess[0];
    } else {
        if(filter_var($Email, FILTER_VALIDATE_EMAIL)) {

            $header = "From: {$customer_name} <{$email}>\r\n";
            mail(MY_EMAIL, $Mtitle, $Mtexty, $header);

            $cont = $Mess[1];
        } else {
            $cont = $Mess[2];
        }
    }

    echo skin($cont);
} else {
    header("Location: http://i-host.co.il/page.php?page=tofes2");
}

?>


העלאתי את שתי אלה לשרת ועדיין לא עובד.. סורי על החפירה אחי

Lenny
חבר צוות phpBB ישראל לשעבר
חבר צוות phpBB ישראל לשעבר
הודעות: 890
הצטרף: 15/07/2007 ב-15:34:10

Re: עזרה|שליחת טופס HTML בעזרת PHP

הודעה שלא נקראהעל ידי Lenny » 10/08/2010 ב-18:08:45

תסביר מה זאת אומרת "לא עובד".

עברתי בקצרה על הקוד וגילתי טעות. שפת PHP היא שפה case-sensitive, כלומר שפה שמבדילה בין אותיות קטנות לאותיות גדולות.
בקוד ה PHP שהוספת לתגובה הקודמת שלך יש משתנה בשם:

קוד: בחר הכל

$email

אבל יש מקום בקוד שבו המשתנה נקרא כך:

קוד: בחר הכל

$Email

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

מה הפתרון? לפי מה שראיתי בקוד ה 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);  


כעת השורה אמורה להיות תקינה.

אין אחריות שהטעויות שציינתי הן הטעויות היחידות, ייתכן שיש טעויות נוספות.

בהצלחה!
Lenny - חבר צוות תמיכה ומודים לשעבר.


חזור אל “בניית אתרים”

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ו־ 93 אורחים

cron