עבור לתוכן

header ב PHP

Featured Replies

פורסם

טוב זה הקוד הבסיסי שלי כאשר השינויים שלי ב HEADERS מיועדים לשינוי הזמנים השונים (Date,Last-Modified, Expired), אבל אני לא רואה שינוי של ה header בעת קריאה לנתונים.

<?php

echo $_POST['test'];

$link = mysql_connect("localhost");

$result = mysql_query ("select req_ObjectId,req_ClientId,date_format(date,'%a, %d %b %Y') as Date,time from test.test5 where test.test5.row=$test");

while ($row = mysql_fetch_object($result)) {

header("Cache-Control : Dynamic");

header("Last-Modified : $row->Date $row->time GMT");

header("Expires : Mon, 06 JUN 1996 00:00:00 GMT");

echo $row->req_ObjectId;

echo " ";

echo $row->req_ClientId;

}

mysql_close($link);

?>

האם פיספסתי משהו (השורות המודגשות)?

העבודה היא מול MySQL, אני קורא לנתונים דרך שרת פרוקסי SQUID (הוא בעצם זה שלא מזהה את ה headers ששונו).

אודה לעזרה,

פורסם

הוא גם בטח מוציא לך הודעת שגיאה נכון?

אני חושב שבתחילת הקוד אתה צריך לכתוב

ob_start();

ובסיום:

ob_end_flush();

פורסם
  • מחבר

הוא גם בטח מוציא לך הודעת שגיאה נכון?

אני חושב שבתחילת הקוד אתה צריך לכתוב

ob_start();

ובסיום:

ob_end_flush();

תודה, אבל הוא לא מוציא לי הודעת שגיאה וניסיתי להוסיף את השורות שלך אבל .... לא עזר :nixweiss: :'(

פורסם

האמת אני לא מבין מה אתה מנסה לעשות

אולי פשוט תסביר

פורסם
  • מחבר

טוב, אנסה להסביר כמיטב יכולתי :

יש לי שרת פרוקסי squid אשר אני צריך לבדוק שנויים שעשו בו.

לצורך כך הקמתי DATABASE מאוד בסיסי תחת mysql ו apache, אל ה DB אני "ניגש" בעזרת PHP - הקוד אותו ציטטתי.

כך שנאמר אם אני קורא "test.php?test=43" אני מקבל חזרה אובייקט מרשומה 46 ב DATABASE, כאשר הבקשה והאובייקט עוברים דרך שרת הפרוקסי (squid).

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

"Last-Modified, Expired ו Date", כפי שאתה רואה אני מנסה להגדיר בעצמי (בדרך שאמורה להיות נכונה לפי החיפוש שעשיתי) לכל אובייקט את הזמנים ב HEADER, אך מבחינה של ה LOG של הפרוקסי אני רואה שאין הוא מתייחס לזמנים שהגדרתי וקובע אותם שרירותית כתאריך נוכחי ל Date ולאחרים - "1-" .

על כן שאלתי האם אני מגדיר נכון את השינויים הללו והאם יש דרך אחרת לשנות את הזמנים ב headers?

פורסם

רעיון

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

<?php
header("Cache-Control : Dynamic");
header("Last-Modified : Mon, 01 JUN 2005 00:00:00 GMT");
header("Expires : Mon, 06 JUN 1996 00:00:00 GMT");
?>
<html>
<head>
</head>
<body>
do i work ?
</body>
</html>

פשוט הקוד שלך מסובך ולא מובן ולא נראה לי נכון כלכך... ככה שהוא מקשה להבין האם הבעיה היא בו או במשהו אחר... עם קוד פשוט אפשר לדעת קודם אם הבעיה ב PHP, ב APACHE ב SQUID או במשהו אחר..

(וכמובן שבדוק שה SYNTAX של ה HEADER אמור להיות ככה).

פורסם
  • מחבר

רעיון

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

<?php
header("Cache-Control : Dynamic");
header("Last-Modified : Mon, 01 JUN 2005 00:00:00 GMT");
header("Expires : Mon, 06 JUN 1996 00:00:00 GMT");
?>
<html>
<head>
</head>
<body>
do i work ?
</body>
</html>

פשוט הקוד שלך מסובך ולא מובן ולא נראה לי נכון כלכך... ככה שהוא מקשה להבין האם הבעיה היא בו או במשהו אחר... עם קוד פשוט אפשר לדעת קודם אם הבעיה ב PHP, ב APACHE ב SQUID או במשהו אחר..

(וכמובן שבדוק שה SYNTAX של ה HEADER אמור להיות ככה).

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

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

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

האם למשהו יש רעיון נוסף הקשור בגורמים האחרים?

אגב, אני מכוון ל apache כנראה הוא עושה override, אשמח לעזרה בנושא זה.

פורסם

תנסה להתחבר ישירות ל APACHE ולא ל SQUID ולראות אז אם ה HEADER נכון (שוב, שיטת האלימינציה הפשוטה).

פורסם
  • מחבר

תנסה להתחבר ישירות ל APACHE ולא ל SQUID ולראות אז אם ה HEADER נכון (שוב, שיטת האלימינציה הפשוטה).

פה יש לי בעיה הנובעת מחוסר ניסיון, את ה HEADERS אני יודע לראות דרך הלוג של ה squid, איך אני רואה את ה header באופן רגיל? אני לא יכול להשתמש באתרים חיצוניים לצערי...

איזשהי פקודה/סקריפט בלינוקס?

פורסם

אם יש לך wget אז תוכל להוסיף את האופציה s- שישמור גם את ה HTTP HEADER

פורסם
  • מחבר

אם יש לך wget אז תוכל להוסיף את האופציה s- שישמור גם את ה HTTP HEADER

תודה לכם, לפי הבדיקה שעשיתי עם wget ה headers עוברים כמו שצריך גם דרך ה squid אך הוא עצמו כאילו מתעלם ובעצם מעביר את הקישור DIRECT !@# זה לא מה שהוא אמור לעשות לפי התאריכים שהוא מקבל....

מכיוון שאני עובד remote ולא יכול להפעיל X אז אני לא יכול להיעזר ב FF אבל ביום ראשון אנסה תודה.

פורסם
  • מחבר

פיירפוקס -> כפתור ימני -> page info..

Ok, I am on the dedicated computer, when I call to the PHP directly (not through proxy) & check in firefox as you suggested nothing has changed... my headers aren't there . . .

I guess it's something in the apache, could any one help?

thanks

פורסם

הוא (השרת) לא נותן לך לשלוח headers בכלל ?

נסה לעשות למשל:

header("HTTP/1.0 404 Not Found");

או

header("Location: [url]http://www.example.com/"[/url]);

פורסם
  • מחבר

הוא (השרת) לא נותן לך לשלוח headers בכלל ?

נסה לעשות למשל:

header("HTTP/1.0 404 Not Found");

או

header("Location: [url]http://www.example.com/"[/url]);

תודה,

כעת הצלחתי באופן חלקי לשלוח headers. . . אני אמשיך מחר.

שוב, תודה לכולם.

ארכיון

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

דיונים חדשים