טופס פשוט לשליחת מייל PHP - בניתי אחד עם בעיה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

טופס פשוט לשליחת מייל PHP - בניתי אחד עם בעיה


HeaT-SinK

Recommended Posts

היי לכולם,

אני די הרבה לאחרונה בפורום הזה :)

כתבתי קוד PHP לטופס 'צור קשר' ויש לי 2 בעיות:

* אני מקבל למייל טופס בג'יבריש!

* ואין התרעה כאשר מישהו לא ממלא את השדות חובה - זה תמיד נשלח

* אשמח גם אם תגידו לי אם כתבתי סתם קודים שאפשר למחוק מהסקריפט

קישור לתוכן
שתף באתרים אחרים

תנסה את זה:

<?php
if (isset($_POST['submit']))
{

$name = $_POST["name"];
$company = $_POST["company"];
$phone = $_POST["phone"];
$email = $_POST["email"];
$msg_subject = $_POST["msg_subject"];
$msg = $_POST["msg"];
$to = "my@email.com";
$subject = "התקבלה הודעה חדשה מהאתר";
$message = "
<p>שם מלא:<BR>$name</p>
<p>חברה:<BR>$company</p>
<p>טלפון:<BR>$phone</p>
<p>דואר אלקטרוני:<BR>$email</p>
<p>נושא:<BR>$msg_subject</p>
<p>פירוט:<BR>$msg</p>
";

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: $email\r\n";
$headers .= "To: $to\r\n";
$headers .= "X-Priority: 1\r\n";
$headers .= "X-MSMail-Priority: High\r\n";


if (mail( $to, $subject, $message, $headers))
echo("<html><head><script language='JavaScript'>alert('הודעתך נשלחה בהצלחה');</script></head></html>");
else
echo ("<html><head><script language='JavaScript'> alert('נא עבור על הפרטים שוב');</script></head></html>");
}
?>

<html>
<head>
</head>
<body>

<form method="post" action="">

<table width="550" border="0">
<tr>
<td align="right" valign="middle"><label><input name="name" type="text" size="20" border="0" dir="rtl"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">* שם מלא:</td>
</tr>
<tr>
<td align="right" valign="middle"><label><input name="company" type="text" size="20" border="0" dir="rtl"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">חברה:</td>
</tr>
<tr>
<td align="right" valign="middle"><label><input name="phone" type="text" size="20" border="0" dir="rtl"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">טלפון:</td>
</tr>
<tr>
<td align="right" valign="middle"><label><input name="email" type="text" size="20" border="0" dir="rtl"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">* דואר אלקטרוני:</td>
</tr>
<tr>
<td align="right" valign="middle"><label><input name="msg_subject" type="text" size="50" border="0" dir="rtl"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">נושא ההודעה:</td>
</tr>
<tr>
<td align="right" valign="middle"><label><textarea name="msg" type="text" cols="50" rows="10" border="0" dir="rtl"></textarea></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle" class="content-text">* פירוט:</td>
</tr>
<tr>
<td align="center" valign="middle"><label><input name="submit" type="submit" value="שלח" class="button"></label></td>
<td align="right" valign="middle"></td>
<td align="right" valign="middle"></td>
</tr>
</table>

</form>
</body>
</html>

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

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

(קודם כל לשנות את התג form ל- <form method="post" name="mailer" action="" onsubmit="validateFormFields();">) ולהוסיף את הסקריפט הבא:

<script type="text/javascript">
function validateFormFields()
{
if(document.mailer.email.value.length <= 0)
return false;

return true;
}
</scipt>

או לבצע בדיקה פשוטה בעזרת if ב php לדוגמה


if(!isset($_POST["email"]))
echo "Email is not set correctly";
exit();

קישור לתוכן
שתף באתרים אחרים

זה עובד, :) אך נוצרו 2 בעיות אחרות

1 אני מוסיף את הקוד שיכניסו שם מלא

מתחת או מעל ל"הכניסו מייל" אבל הוא מתייחס רק לראשון מבניהם שבקוד

2. אחרי שהוא מקפיץ את ההודעה "אנא הכנס מייל" הוא מקפיץ את ההודעה "הטופס נשלח בהצלחה" ושולח

קישור לתוכן
שתף באתרים אחרים

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

הבעיות שיש הן

סיטואציה מס' 1

כהטופס ריק ולוחצים שלח -> קופצת הודעה "אנא הכנס שם מלא" -> ואז קופצת הודעה "הודעתך נשלחה"

סיטואציה מס' 2

כשהטופס מלא רק בשם ולוחצים שלח -> קופצת הודעה "אנא מלא אי מייל -> ואז קופצת הודעה "הודעתך נשלחה"

הוא מקפיץ את ההודעה הראשונה שכתובה בסקירפט לפי הסדר ואז בכל מקרה שולח את הטופס

אני צריך שהוא לא ישלח את הטופס אלא יעצור ויתן לי להזין את השדות חובה

קישור לתוכן
שתף באתרים אחרים

הבוקר שמתי לב לבעיה חדשה

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

אבל אחרי ששולחים אותו יש שינוי ויזואלי בעמוד - ממה זה יכול לנבוע?

1. הטופס מתקרב לגבול העליון של הדף כאילו עולה שורה אחת למעלה

2. הכפתור "שלח" ומתקטן קלות

anyone?

קישור לתוכן
שתף באתרים אחרים

  • 3 שבועות מאוחר יותר...

ארכיון

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

×
  • צור חדש...