לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 23-12-2004, 21:35
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
עזרה בעיה בשילוב PHP עם JS

אני מנסה לשלב בין PHP לבין JS ב-Postool. עד כה, כשהשתמשתי ב-JS בשביל הצגת מספר התגובות הצלחתי.

ניסיתי כעת לעשות משהו אחר, וזה לא עובד. שמתי בהתחלה HEADER:
קוד PHP:
 header("Content-type: application/x-javascript"); 

והתחלתי להציג דברים בעזרת ECHO/PRINT כשבתוכו:
קוד:
document.write('XYZ');

אך לא הצלחתי. למעשה, אני כן מצליח להוציא פלט אבל כשאני עושה בעמוד HTML קריאה ל-JS:
קוד:
<script language="javascript" src="http://www.postool.com/xyz.php?user=admin&mid=1"></script>

(העמוד XYZ לא קיים במערכת, אל תנסו)
אינני מצליח ואני לא רואה כלום. כשאני ניגש לעמוד בצורה רגילה אני רואה את פקודות ה-JS, וכשאני מוריד את ה-HEADER רואים את זה בצורה משובשת.

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

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


נערך לאחרונה ע"י ABM בתאריך 23-12-2004 בשעה 21:38.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 23-12-2004, 22:24
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
הנה אני אסביר יותר לעומק..
בתגובה להודעה מספר 2 שנכתבה על ידי dead שמתחילה ב "לא ממש הבנתי אותך אבל..."

כיום, כדי להציג תגובות ב-Postool, המשתמש צריך להשתמש בקוד Iframe. לדוגמא:
קוד:
<iframe width="500" height="400" name="qpost" border="0" frameborder="0" src="http://www.postool.com/combined.php?user=admin&mid=1"></iframe>


כעת, אני רוצה לאפשר למשתמשים להשתמש ב-JS, במקום IFRAME. אני אסביר למה:
ברגע שמשתמש ישים קוד כזה באתר שלו (לדוגמא):
קוד:
<script language="javascript" src="http://www.postool.com/blabla.php?user=admin&mid=1"></script>

התגובות יראו כאילו הן חלק מהאתר שלו, ולא כפריים חיצוני, מה שמוסיף בחלק מהאתרים קשיים בעקבות ההופעות של הסקרולבאר.
לכן, אני רוצה לאפשר להם להשתמש ב-JS. כיום אני עושה שימוש ב-JS עם PHP כאשר אני מציג את מספר התגובות, לדוגמא (שאכן פעילה, אתה יכול לנסות אותה ולראות שהיא עובדת):
קוד:
<script src="http://www.postool.com/postnum.php?user=admin&mid=1"></script>


אז מה שניסיתי לעשות זה להפוך את עמוד ה-combined.php שלי שמוסיף תגובות לעמוד בתקן JS. כלומר, עלי לכתוב הכל עם:
קוד:
document.write('abc');

והבעיה היא שאני מצליח לעשות הכל בצורה תקינה, אבל אני לא מצליח להציג את התגובות בעזרת הקוד שכתבתי כאן למעלה (של הscript src..). הפלט הוא עמוד ריק לגמרי. אך ברגע שלמשל אני לא מספק מספיק פרטים, אני כן מקבל מידע, מכיוון שבעמוד ה-PHP יש שורה שאומרת:
קוד PHP:
 if ($pid=="" || $mid=="")
{
    echo 
"document.write ('שגיאה: לא סיפקת מספיק פרטים למערכת אודות התגובות שיש להציג');";
    die ();


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

מצטער על המגילה.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 25-12-2004, 18:31
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
הממ..
בתגובה להודעה מספר 8 שנכתבה על ידי ABM שמתחילה ב "כן, הבנתי.. אבל.."

טוב כמעט הצלחתי. הגעתי לפלט כפי שאמרת (קישור לעמוד )

וכאשר אני לוקח את הפלט ומדביק אותו בין הscript רואים שזה עובד, אבל כשאני עושה:
קוד:
<script src="http://www.postool.com/jsshow.php?user=admin&mid=1"></script>

זה לא עובד.

כעת מה הבעיה?

עריכה: חשבתי שאולי תצטרכו את הקוד של jsshow.php אז הנה הוא:
קוד PHP:
<?php
header
("Content-type: application/x-javascript"); // סוג הקובץ

$pid mysql_escape_string(strip_tags($_GET['user'])); // שם משתמש
$mid mysql_escape_string(strip_tags($_GET['mid'])); // מספר אשכול

$page "http://www.postool.com/combined.php?user=$pid&mid=$mid"// כתובת העמוד המקורי
$pagecon file_get_contents($page); // לקיחת המקור
echo "document.write ('$pagecon');"// הדפסת המקור

?>


נערך לאחרונה ע"י ABM בתאריך 25-12-2004 בשעה 18:39.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 26-12-2004, 04:53
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
הבעיות הן כמובן בעיות JS...
בתגובה להודעה מספר 11 שנכתבה על ידי ABM שמתחילה ב "דקל,"

אין לי מושג למה רק בקובץ חיצוני זה קורה, אולם זה אמור לקרות גם בקובץ פנימי.
ברגע שאתה מתחיל מחרוזת ב JS ואתה יורד שורה- מבחינת המפענח סיימת שורה והוא כאילו מוסיף שם ;. על מנת להראות שלא סיימת שורה, אתה אמור לסגור את המחרוזת, להוסיף סימן שירשור (+ ב-JS) ובשורה הבאה, לפתוח את המחרוזת מחדש.
כלומר, הקוד שלך אמור להיראות בערך ככה:
קוד:
document.write('.....'+ '...'+ '...');
על מנת לפתור את זה פשוט תשתמש בקוד הבא: (שיניתי קצת את הקוד המקורי שלך)
קוד PHP:
 header("Content-type: application/x-javascript");

$pid mysql_escape_string(strip_tags($_GET['user']));
$mid mysql_escape_string(strip_tags($_GET['mid']));

$page "http://www.postool.com/combined.php?user=$pid&mid=$mid";
$pagecon file_get_contents($page);
$pagecon str_replace("\n","'+\n'"$pagecon); // שים לב שזה החלק שהוספתי
echo "document.write ('$pagecon');"

בעיה נוספת: יש לך באמצע הקוד טגיות של פתיתת סקריפט וסגירת סקריפט. גם כאן מופיעה לנו בעיה של JS שהוא יכול להתייחס לסגירה כאילו סגרת את הסקריפט המקורי שלך- וזה יכול ליצור בעיות.
הפיתרון הוא לפרק את הפתיחה והסגירה בצורה הבאה:
קוד:
'...'+ '<scr'+'ipt>...'+ '...'+ '</scr'+'ipt>...'+

מקווה שבזאת יסתיימו הבעיות
בכל אופן-אם אין לך כוח לשבת ולסדר צעד צעד את כל הקוד, זה הפיתרון המלא שאצלי עובד מצויין שים לב שהוספתי על כל מיני דברים שצריך לשנות בגלל שבקוד מקור (הקוד של הדף) יש תוספות של ירידות שורה (כנראה מהקליטה של הנתונים מהמשתמשים) והיה צורך להעיף את הנתונים האלה אחרת הם יוצרים בעיות ביחד עם ה JS. אם לא אתה יכול פשוט להסתכל מה השינויים שעשיתי על מנת שהדברים יעבדו ולשנות לפי זה אצלך
קוד PHP:
 header("Content-type:application/x-javascript");
$content file("http://www.postool.com/combined.php?user=admin&mid=1");
function 
js_add(&$val)
{
    
$val rtrim($val);
    
$val str_replace("'","\'",$val);
    
$val "'$val'+";
    
$val str_replace("script","scr'+'ipt",$val);
}
array_walk($content,'js_add');
$content implode("\n",$content);
echo 
"document.write ($content'');"// הדפסת המקור 
תשנה את הדברים בקוד הנ"ל לפי הצרכים שלך (התוספת של המשתנים מהשורת כתובת וכו).
בכל אופן... תודה על האתגר היה מאוד מעניין.

בברכה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #16  
ישן 27-12-2004, 19:28
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
אגב, אם כבר..
בתגובה להודעה מספר 1 שנכתבה על ידי ABM שמתחילה ב "בעיה בשילוב PHP עם JS"

אם אני כבר פתחתי כאן אשכול כזה.. אז באותו נושא:
כשלוחצים כעת על 'שלח תגובה' העמוד עצמו מתבטל וכל העמוד עובר ל-process.php שלי שמוסיף את התגובה. האם ישנה דרך שבה ניתן לגרום לפעולה דומה לזו שיש ב-IFRAME ושבה מי שישים את הקוד באתר שלו לא יאבד את האתר שלו והתגובה תתווסף מבלי לפגוע באתר של המשתמש?

* עריכה: למי שלא הבין, ברגע שלוחצים על 'שלח תגובה' כל העמוד עושה REDIRECT ל-process.php שנמצא אצלי, ולכן המסגרת המקורית של האתר ששם את הקוד שלי אצלו נעלמת. אני מנסה להשיג אפקט כמו של IFRAME, שרק מערכת התגובות תשתנה ולא כל החלון.


נערך לאחרונה ע"י ABM בתאריך 27-12-2004 בשעה 19:31. סיבה: הסבר נוסף
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:46

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר