הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP | בעיות עם זמן טעינה בדפדפנים מסויימים (https://hosts.co.il/forums/showthread.php?t=62139)

Kfir.G 20-04-08 16:53

PHP | בעיות עם זמן טעינה בדפדפנים מסויימים
 
שלום,
יש לי דף בPHP שלוקח לו בערך 10~20 שניות להטען. בFF וOpera הכל עובד מצויין אבל בIE הוא מציג לי משום מה 404...

מה עושים כדי לפתור את העניין? (לא תשובות של לשנות הגדרות בIE כי אני לא יכול להגיד לגולשים לשנות הגדרות...)

תודה מראש,
כפיר

Tomer 20-04-08 16:55

- מנחש את הדף -

- מנחש גם את הקוד -

אתה מתבקש להוסיף את הפרטים האלו במהרה.

Kfir.G 20-04-08 17:06

ציטוט:

נכתב במקור על ידי Tomer (פרסם 625932)
- מנחש את הדף -

- מנחש גם את הקוד -

אתה מתבקש להוסיף את הפרטים האלו במהרה.

קישור לעמוד
הערה - הheader יעביר אתכם לעמוד 404 אם אין לכם את התוכנה veohtv
קוד מקור הרלוונטי
PHP קוד:

<?php
session_start
();
if(isset(
$_SESSION['legal']) && $_SESSION['legal'] == true)
{
    
$link $_SESSION['link'];
    
$preg "***";
    if(
preg_match($preg,$link,$match) == false
        
|| ($page file_get_contents($link)) == false
        
|| strstr($page,"***"))
        echo 
"הכתובת שהוכנסה שגויה!";
    else
    {
        
$src $match[1];
        
$preg "***";
        
preg_match($preg,$page,$match);
        
$version $match[1];
        
$js file_get_contents("***".$version);
        
$preg "***";
        
preg_match($preg,$js,$match);
        
$code $match[1];
        
header("Location: ***");
        echo 
"<script>window.close()</script>";
    }
}
else
    echo 
"חלה שגיאה!";
?>

ה*** החליפו תכנים שאני לא מעוניין לשתף..

הערה:
veohtv עובדת בIE, נבדק, ולכן זאת לא הבעיה

Tomer 20-04-08 17:15

אצלי אני מקבל "חלה שגיאה", שלפי הקוד אומרת שה SESSION לא קיים.

כנראה שה Internet Explorer לא מזהה את ה VEOH, ולכן נכנס לתנאי שמעביר לעמוד 404. תדבג (debug) את הקוד, ותברר למה זה קורה, או מה גורם לתוכנה לא לפעול.

Kfir.G 20-04-08 17:19

ציטוט:

נכתב במקור על ידי Tomer (פרסם 625944)
אצלי אני מקבל "חלה שגיאה", שלפי הקוד אומרת שה SESSION לא קיים.

כנראה שה Internet Explorer לא מזהה את ה VEOH, ולכן נכנס לתנאי שמעביר לעמוד 404. תדבג (debug) את הקוד, ותברר למה זה קורה, או מה גורם לתוכנה לא לפעול.

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

יש דרך לגרום לIE שהעמוד כן עובד ולא להציג 404? אולי לשלוח לו header כלשהו או משהו בסגנון..

Kfir.G 20-04-08 21:36

הערה
ההקפצה אושרה על ידי תומר

בדקתי ומצאתי פתרון לבעיה שלי עם JavaScript. מה שעשיתי היה להדפיס את השורה
קוד:

<script type="text/javascript">
לפני התחלת הרצת קוד הPHP כך שIE ידע שבאמת יש תוכן בעמוד והמשיך לטעון אותו עד לסיום פעולת הקוד ואז הוספתי
קוד:

window.location="***";</script>
אני בכל זאת מעוניין בפתרון בעזרת header. יש דרך לשלוח מידע כלשהו לדפדפן (לא טקסט כדי שאוכל לשלוח header) כדי שהוא ידע שהעמוד באמת נטען ולא שהוא לא קיים?

תודה מראש,
כפיר

Daniel 20-04-08 22:33

אולי,
header("Content-Type: ".$x);

Kfir.G 20-04-08 23:46

ציטוט:

נכתב במקור על ידי MasterT (פרסם 626067)
אולי,
header("Content-Type: ".$x);

ניסיתי עם charset וכקובץ php לא עובד... :(
עוד רעיונות מישהו?

BlueNosE 21-04-08 01:56

נסה - ob_flush();

Kfir.G 21-04-08 09:34

חיפשתי בגוגל לגבי ob_flush() ומצאתי את התגובה הבאה באתר של PHP

ציטוט:

This will work for IE 7.0 :)

Do not use within <PRE> tag because of the extra spaces send

function hardFlush() {
// Like said in PHP description above, some version of IE (7.0 for example)
// will not 'update' the page if less then 256 bytes are received
// Send 250 characters extra
echo ' ';
echo ' ';
echo ' ';
echo ' ';
echo ' ';
flush();
ob_flush();
}
(יש שם הרבה יותר רווחים שהפורום מסיבה כלשהי חתך)
מה שלא הבנתי בדיוק היה איפה אני מכניס לפה את שליחת הheader שלי... כי אחרי ob_flush אני לא יכול :(

תודה מראש,
כפיר

BlueNosE 21-04-08 13:31

זו השליחה.

אתה יודע מתי HEADERS נשלחים?
או כשמשתמשים בפונקציה FLUSH ומבצעים שליחת היידרים, או פשוט מדפיסים טקסט.
אז הפונקציה הזאת שולחת 256 ביטים של טקסט, בשביל שIE יבין שיש טקסט בעמוד, כי גירסאות מסויימות של IE לא מדפיסות כלום אם אין לפחות 256 ביטים (לטענת כותב הפונקציה).

Kfir.G 21-04-08 15:00

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 626209)
זו השליחה.

אתה יודע מתי HEADERS נשלחים?
או כשמשתמשים בפונקציה FLUSH ומבצעים שליחת היידרים, או פשוט מדפיסים טקסט.
אז הפונקציה הזאת שולחת 256 ביטים של טקסט, בשביל שIE יבין שיש טקסט בעמוד, כי גירסאות מסויימות של IE לא מדפיסות כלום אם אין לפחות 256 ביטים (לטענת כותב הפונקציה).

הבעיה שלי שהheader עצמו זה מה שלוקח לקוד הרבה זמן להכין... יש אפשרות לשלוח טקסט כלשהו ואז לשלוח header? לנקות את הoutput buffer או משהו בסגנון =\

BlueNosE 21-04-08 22:54

ob_clean?
עשה טובה כנס למניואל

Kfir.G 22-04-08 09:54

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 626463)
ob_clean?
עשה טובה כנס למניואל

ציטוט:

Note: As of PHP 4, you can use output buffering to get around this problem, with the overhead of all of your output to the browser being buffered in the server until you send it. You can do this by calling ob_start() and ob_end_flush() in your script, or setting the output_buffering configuration directive on in your php.ini or server configuration files.
taken from php.net

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

בעצם מה שאני צריך זה או להעביר מידע כלשהו לדפדפן דרך header במשקל המינימלי שצריך או למצוא דרך לשלוח header נוסף אחרי שנשלח כבר טקסט לדפדפן (בלתי אפשרי לא?) =\

תודה מראש,
כפיר

psycho 22-04-08 11:08

אולי כל התכנון שלך מראש לא נכון, מה אתה מנסה לעשות? (לא בקטע טכני של לשלוח HEADER אחרי שהדפסתי טקסט)
אלא בקטע של

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

אז, מה הבעיה שלך?

Kfir.G 22-04-08 11:13

ציטוט:

נכתב במקור על ידי psycho (פרסם 626511)
אולי כל התכנון שלך מראש לא נכון, מה אתה מנסה לעשות? (לא בקטע טכני של לשלוח HEADER אחרי שהדפסתי טקסט)
אלא בקטע של

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

אז, מה הבעיה שלך?

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

יום טוב,
כפיר

Tomer 22-04-08 14:32

PHP קוד:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: private, no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache"); 

תנסה את זה. הייעוד שלו זה AJAX ו Internet Explorer שעושים בעיות, אבל אולי זה יעבוד. שים את זה בראש העמוד.

Kfir.G 22-04-08 15:18

ציטוט:

נכתב במקור על ידי Tomer (פרסם 626593)
PHP קוד:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: private, no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache"); 

תנסה את זה. הייעוד שלו זה AJAX ו Internet Explorer שעושים בעיות, אבל אולי זה יעבוד. שים את זה בראש העמוד.

nope עדיין לא עובד :(

עוד רעיונות?

Tomer 22-04-08 15:39

אולי...

PHP קוד:

 header("Content-Length: 260"); 

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

Daniel 22-04-08 15:41

ציטוט:

נכתב במקור על ידי Kfir.G | WebPower.co.il (פרסם 626515)
הרעיון של הSESSION פה זה לא קטע של סיסמה אלא שהגולש באמת הגיע דרך האתר שלי ולא דרך קישור ישיר לעמוד... אם הייתי טורח לקרוא את תחילת האשכול היית רואה שהקוד שאני עושה אמור להפעיל את התוכנה VeohTV. הרעיון הוא שהגולש נכנס לעמוד מעמוד מסויים באתר שלי, בעזרת קוד PHP אני מגלה מה היא הכתובת הנכונה להפעלת התוכנה עם הסרטון שלו ואז אני מעביר אותו לשם. הסיבה שאני רוצה לעשות את זה עם header היא פשוט כדי שאתרים מתחרים לא יוכלו להעתיק את הקישור המתאים להפעלת התוכנה.. להזכירך אם אני מעביר עמוד עם JavaScript הכל עובד חלק...

יום טוב,
כפיר

אני אגיב רק לייעוד - אפשר גם לגלות HEADER בקלות...

Kfir.G 23-04-08 08:29

ציטוט:

נכתב במקור על ידי Tomer (פרסם 626636)
אולי...

PHP קוד:

 header("Content-Length: 260"); 

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

ניסיתי את זה ועדיין זה לא עבד :(
ניסיתי גם content rage וגם כן ללא הצלחה :(
עוד רעיונות?

ציטוט:

נכתב במקור על ידי MasterT (פרסם 626637)
אני אגיב רק לייעוד - אפשר גם לגלות HEADER בקלות...

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


כל הזמנים הם GMT +2. הזמן כעת הוא 10:26.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ