עבור לתוכן

מבקש עזרה ב php

Featured Replies

פורסם

שלום לכולם.

אני בונה אתר ויש בו טופס "צור קשר".

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

כשההודעה נשלחת החלון נמחק ומופיעה הודעה (שאומרת תודה על הפניה).

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

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

והקובץ האחראי על העניין:


<?
/* removing space characters from the edges of the data infos */

$_POST["mail_from"]=trim($_POST["mail_from"]);
$_POST["mail_name"]=trim($_POST["mail_name"]);
$_POST["mail_subject"]=trim($_POST["mail_subject"]);

$mail_ok=true; //we assume the form is set correctly...

/* checking that the fields are filled ok */

****************************************************************************
if ($_POST["mail_from"]=="")
{
echo "<FONT color=\"#FF0000\">.'יש למלא את השדה 'דואר אלקטרוני</FONT><BR>\n";
$mail_ok=false;
}
if ($_POST["mail_name"]=="")
{
echo "<FONT color=\"#FF0000\">.'יש למלא את השדה 'שם מלא</FONT><BR>\n";
$mail_ok=false;
}
if ($_POST["mail_subject"]=="")
{
echo "<FONT color=\"#FF0000\">.'יש למלא את השדה 'נושא</FONT><BR>\n";
$mail_ok=false;
}
if ($_POST["mail_body"]=="")
{
echo "<FONT color=\"#FF0000\">.'יש למלא את השדה 'הודעה</FONT><BR>\n";
$mail_ok=false;
}
****************************************************************************
if ($mail_ok) //if the fields are filled, we attempt to send the mail
{
$to= "xxx@gmail.com"; //the E-mail to send the message to
$subject=$_POST["mail_subject"]." xxx נשלח מהאתר "; //the subject of the mail
$body=$_POST["mail_body"]."\n\n\n\n\n-----------------------------------------------------------\n נשלח מ\n xxx"; //the body of the mail (a text added to every mail body)
$headers="From: ".$_POST["mail_from"]."\r\n"; //the headers of the mail

if ($_POST["mail_name"]!="") //if the name field is filled
$headers="From: ".$_POST["mail_name"]." <".$_POST["mail_from"].">\r\n"; //we add the name to the From header

/* attempt to send the message */
$mail_ok=@mail($to,$subject,$body,$headers); //returns true if mail was sent successfully, if not then returns false

if ($mail_ok) //if the mail was sent successfully
{
****************************************************************************
echo "<P><B><br/>הודעתך נשלחה בהצלחה!תודה</B></P>";
echo "<A href=\"../frames/1.html\">חזרה לעמוד הראשי</A>";
****************************************************************************
}
else
{
echo "<P><FONT color=\"#FF0000\"><B>שליחת האי-מייל נכשלה!!!</B> (בדוק את כתובת האי-מייל שאליו אתה שולח)</FONT></P>";
}
}
?>

הדגשתי את החלק של ההודעות.

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

עריכה: אי אפשר להדגיש ב code אז סימתי את החלקים ב "******************"

אני יודה מאוד למי שיעזור.

פורסם

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

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

בתגית ה <form> אתה מוסיף:

target="<שם ה Iframe>"

תבנה לך פונקציה של MsgBox:


function MsgBox($text) {
echo "<script>\n";
echo " alert('".$text."')";
echo "</script>\n";
}

ובשביל להציג בעיה אתה עושה:

if (empty($_POST["mail_from"])) {
MsgBox("נא להקליד דואר אלקטרוני");
exit;
}

כך המשתמש יקבל הודעה, העמוד לא ימחק וכולם מרוצים.

בסוף העמוד תרשום:

echo "window.parent.location.href = 'bla.php';";

פורסם
  • מחבר

אוקי תודה רבה על העזרה. תגיד למה צריך לכתוב exit; ראיתי את זה במערכת אחרת. אם אני רושם את זה אני צריך למחוק את ה $mail_ok=false;?

ולידע כללי, אם בכל זאת הייתי רוצה מעבר לדף אחר איך הייתי עושה את זה? ואם הייתי רושם תנאי לכל שדה בנפרד, שלא היו ממלאים 2 או יותר זה גם היה מעביר דף? או שהייתי צריך לרשום תנאי כולל של if/and לכל השגיאות (שנראה לי עושים את זה ככה: xxx || xxx)

שוב תודה על העזרה. אני שוקל להשתמש בעצה שלך עם כמה msgbox שונים - אחד לכל אחד שכל אחד יופיע ליד השדה שלו.

פורסם

ה exit כשמו כן הוא, יוצא מהתוכנית, מספיק אותה באמצא ולא ממשיך לכן אין צורך במשתנה בקרה.

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

פורסם
  • מחבר

אוקיי הבנתי תודה. ומה לגבי זה

ולידע כללי, אם בכל זאת הייתי רוצה מעבר לדף אחר איך הייתי עושה את זה?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים