ABA


"שאלה לגבי קוד Php של עמוד נחיתה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10851 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10851
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   15:37   05.09.12   
אל הפורום  
  שאלה לגבי קוד Php של עמוד נחיתה  
 
   בניתי עמוד html פשוט למטרת עמוד נחיתה הקוד שמפנה לדף php הוא זה:
 <form method="post" action="sendit.php"> 

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



if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<script language=javascript> alert('אנא הזמן אימייל תקין')</script>";
}

elseif (empty($visitorname) || empty($visitormail)) {
echo "<script language=javascript>alert('נא מלא שדות ריקים')</script>";
}

else
{
mail("[email protected]", $subject, $message, $from);
echo "<script language=javascript >alert('פרטייך נשלחו בהצלחה!')</script>";
}

כאשר ישנה שגיאה הקפצתי הודעת שגיאה באמצעות alert, הבעיה היא שכאשר לוחצים על כפתור "שלח" הalert מופיע בעמוד חדש ולא בעמוד הקיים, מה שמצריך מהמשתמש לחזור אחורה בדפדפן, כיצד אני גורם להודעת שגיאה לקפוץ באותו עמוד html בוא נמצא המשתמש?

תודה לעונים


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  את הבדיקה שלך אתה צריך לעשות ב-JAVASCRIPT ולא ב-PHP... Ice Cold  05.09.12 16:14 1
     תוכל להראות לי כיצד? czer  05.09.12 19:18 3
  אתה יכול להחזיר אותו לעמוד חזרה בעזרת: dvir8 05.09.12 18:11 2
     את העליון אני מכניס בקובץ PHP ואת השני ב-HTML? czer  05.09.12 19:18 4
         כן וכן dvir8 06.09.12 08:12 5
             הוא כותב לי שגיאה ... czer  06.09.12 13:08 6
                 אתה שולח קוד HTML לדפדפן לפני? dvir8 06.09.12 18:52 7
                     הנה הקוד בעמוד index.html czer  07.09.12 16:30 8
                         והנה העמוד sendit.php שמבצע את הבדיקה czer  07.09.12 16:31 9
                             תעשה ככה: dvir8 09.09.12 12:14 10
                                 זה מחזיר לי שגיאה... czer  09.09.12 19:52 11
                                     אל תסתבך יותר מדי, יוחאי 09.09.12 22:09 12
                                         תודה, אבל הצלחתי בדרך אחרת.... czer  10.09.12 17:51 13

       
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   16:14   05.09.12   
אל הפורום  
  1. את הבדיקה שלך אתה צריך לעשות ב-JAVASCRIPT ולא ב-PHP...  
בתגובה להודעה מספר 0
 
הרגע שאתה שם את זה ב-PHP אתה בעצם מאשר שהבדיקה נעשית אחרי שהדפדפן כבר נשלח ללינק החדש...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   19:18   05.09.12   
אל הפורום  
  3. תוכל להראות לי כיצד?  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   18:11   05.09.12   
אל הפורום  
  2. אתה יכול להחזיר אותו לעמוד חזרה בעזרת:  
בתגובה להודעה מספר 0
 
  

<?php
header("Location.. index.php?status=succ");
?>

ובדף הראשי להכניס פונקציה js+PHP


<?php
if($_GET == "succ") { ?> alert("success");
<?php
}
?>


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   19:18   05.09.12   
אל הפורום  
  4. את העליון אני מכניס בקובץ PHP ואת השני ב-HTML?  
בתגובה להודעה מספר 2
 
   אני צריך לשנות את העמוד index.html ל-index.php?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   08:12   06.09.12   
אל הפורום  
  5. כן וכן  
בתגובה להודעה מספר 4
 
   ואת החלק של הHTML זה מחק לי סוגריים מרובעות זה אמור להיות ככה:


if($_GET['status'] == 'succ')


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   13:08   06.09.12   
אל הפורום  
  6. הוא כותב לי שגיאה ...  
בתגובה להודעה מספר 5
 
   כאשר אני לוחץ על כפתור "שלח", מופיעה ההודעה הבאה:

 Warning: Cannot modify header information - headers already sent by (output started at blabla/minisite/sendit.php:9) in blabla/minisite/sendit.php on line 10 

השגיאה קורת בשורה הזאת:

 header('Location..index.php??status=succ');

מה צריך לעשות?

תודה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   18:52   06.09.12   
אל הפורום  
  7. אתה שולח קוד HTML לדפדפן לפני?  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 06.09.12 בשעה 19:00 בברכה, dvir8
 
ז"א יש לך echo כלשהו?
או שתעלה לכאן את הקוד וזהו
או ל http://pastebin.com/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   16:30   07.09.12   
אל הפורום  
  8. הנה הקוד בעמוד index.html  
בתגובה להודעה מספר 7
 
  
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1225" />
<link type="text/css" href="style.css" rel="stylesheet" />
<title> יצירת קשר</title>
</head>

<body>

<div class="image"></div>
<div id="page">
<form method="post" action="sendit.php">
שם פרטי <input type="text" id="styled" name="visitorname" size="15" />
כתובת אימייל <input type="text" id="styled" name="visitormail" size="15" />
טלפון ליצירת קשר <input type="text" id="styled" name="visitorphone" size="15" />
<br />
<br />
</form>
</div>
</div>
<div class="sidebar">

</div>
<div class="pas"> </div>

</body>
</html>


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   16:31   07.09.12   
אל הפורום  
  9. והנה העמוד sendit.php שמבצע את הבדיקה  
בתגובה להודעה מספר 8
 
  

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1255" />
<title>Sendemail Script</title>
<?php
header('Location:..index.php??status=succ');
$visitorname = $_POST;
$visitormail = $_POST;
$visitorphone = $_POST;
$drdlist = $_POST;
$msgs = $_POST;

$todayis = date("l, F j, Y, g:i a") ;

$drdlist = $drdlist ;
$subject = $drdlist ;

$notes = stripcslashes($notes);

$message = " $todayis \n
From: $visitorname\n
Email: ($visitormail)\n
phone: $visitorphone\n
Category: $drdlist \n
Message: $msgs \n
";

$from = "From: $visitormail\r\n";

?>

if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<script language=javascript> alert('אנא הזמן אימייל תקין')</script>";
}

elseif (empty($visitorname) || empty($visitormail)) {
echo "<script language=javascript>alert('נא מלא שדות ריקים')</script>";
}

else
{
mail("[email protected]", $subject, $message, $from);
echo "<script language=javascript >alert('פרטייך נשלחו בהצלחה!')</script>";
}
</head>
<body>

</body>
</html>


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   12:14   09.09.12   
אל הפורום  
  10. תעשה ככה:  
בתגובה להודעה מספר 9
 
   ערכתי לאחרונה בתאריך 09.09.12 בשעה 12:20 בברכה, dvir8
 
sendit.php

<?php
$visitorname = $_POST;
$visitormail = $_POST;
$visitorphone = $_POST;
$drdlist = $_POST;
$msgs = $_POST;
$todayis = date("l, F j, Y, g:i a") ;

$drdlist = $drdlist ;
$subject = $drdlist ;

$notes = stripcslashes($notes);

$message = " $todayis \n
From: $visitorname\n
Email: ($visitormail)\n
phone: $visitorphone\n
Category: $drdlist \n
Message: $msgs \n
";

$from = "From: $visitormail\r\n";

?>

if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
header('Location:..index.php?status=fail_email');
}

elseif (empty($visitorname) || empty($visitormail)) {
header('Location:..index.php?status=fail_name');
}

else
{
mail("[email protected]", $subject, $message, $from);
header('Location:..index.php?status=succ');
}
?>

index.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1225" />
<link type="text/css" href="style.css" rel="stylesheet" />
<script type="text/javascript">
<?php
if($_GET['status'] == 'succ') alert('פרטיך נשלחו בהצלחה!');
else if($_GET['status'] == 'fail_email') alert('המייל שהזנת שגוי!');
else if($_GET['status'] == 'fail_name') alert('יש להזין שם!');
?>
</script>
<title> יצירת קשר</title>
</head>
<body>

<div class="image"></div>
<div id="page">
<form method="post" action="sendit.php">
שם פרטי <input type="text" id="styled" name="visitorname" size="15" />
כתובת אימייל <input type="text" id="styled" name="visitormail" size="15" />
טלפון ליצירת קשר <input type="text" id="styled" name="visitorphone" size="15" />
<br />
<br />
</form>
</div>
</div>
<div class="sidebar">

</div>
<div class="pas"> </div>

</body>
</html>

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   19:52   09.09.12   
אל הפורום  
  11. זה מחזיר לי שגיאה...  
בתגובה להודעה מספר 10
 
  

 Warning: strstr() expects parameter 1 to be string, array given in /home/sendit.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at /home/sendit.php:2) in /home/sendit.php on line 27

מה שמופיע בשורה 25 :

 if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,"."))) 

מה שמופיע בשורה 27:

 header('Location:..index.php?status=fail_email'); 

תודה על העזרה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   22:09   09.09.12   
אל הפורום  
  12. אל תסתבך יותר מדי,  
בתגובה להודעה מספר 11
 
   בבקשה

http://swiftmailer.org/

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
czer  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
311 הודעות, 1 פידבק
   17:51   10.09.12   
אל הפורום  
  13. תודה, אבל הצלחתי בדרך אחרת....  
בתגובה להודעה מספר 12
 
   בדקתי את הטופס באמצעות JavaScript, מה שלא עשיתי קודם.
עם ה-PHP ביצעתי רק את השליחה.

תודה לכם על העזרה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net