Aller au contenu

header("Last-Modified:...")


Sujets conseillés

Posté

Ma question est certainement stupide , mais je ne trouve pas de réponse:

Si je met la fonction header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); sur une page php le header me renvoie la date de la modification de la page mais pas de son contenu. Jai donc rajouté un champ "date à ma base et je voudrais donc connecter la fonction: header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); à la date du champ date de ma base de données. Comment faire?

merci

Posté

Bonjour,

Il te suffit dans ce cas d'ajouter un argument supplémentaire à la fonction gmdate qui soit le champ date de ta base de données au format "timestamp".

Je ne vois pas où est le problème ?

Posté

Merci pour ta réponse, mais n'étant en rien un spéciaste de php, je ne connais pas la sytaxe à utiliser. Que dois-je ajouter à la page php?

Posté

Je viens de trouver un morceau de code que j'ai implanté sur ma page php, mais la date retournée par le header reste la date actuelle, donc pas la date de la dernière modification. la ligne

$date = time('date');

semble poser problème, date devrait être le champ date dans ma base de données?

// --- Your code ---

// You need past following before any output

// here you need to select modified date from DB in UNIX timestamp format
// (same as time() function in PHP or UNIX_TIMESTAMP() function in MySQL)
$date = time('date');

$last_modified = gmdate('D, d M Y H:i:s', $date) . ' GMT';
// did the browser send an if-modified-since request?
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
// parse header
$if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);

if ($if_modified_since == $last_modified) {
// the browser's cache is still up to date
header('HTTP/1.0 304 Not Modified');

exit;
}
}


header('Last-Modified: ' . $last_modified);

// --- Your code ---

Posté

Le tout est de savoir quel format tu as adopté pour le champs de la base de données.

S'il est au format "timestamp", tu peux utiliser cette valeur directement dans ton appel à gmdate.

Mais avant d'aller plus avant, dis-moi quel format tu as choisi... et comment tu le mets à jour.

Dan

Posté

Si tu lis le champ de ta table dans une variable $date_page, il te suffit d'invoquer gmdate comme ceci:

gmdate("D, d M Y H:i:s", $date_page)

C'est tout simple...

Posté

Salut Dan,

Je n'ai toujours rien compris à tes explications.

Voici ce que j'ai fait:

Base de données: j'ai rajouté un champ 'date' à ma table de données 'recettes' de ma base de données 'Recettes'

nom: 'date' type='timestamp' qui me donne des dates de format 20060924114321

puis j'ai mis dans ma page detail_fr.php la requète suivante

mysql_select_db($database_recettes, $recettes);
$query_rs_date = "SELECT `date` FROM recettes ";
$rs_date = mysql_query($query_rs_date, $recettes) or die(mysql_error());
$row_rs_date = mysql_fetch_assoc($rs_date);
$totalRows_rs_date = mysql_num_rows($rs_date);

cette requète testée me donne les dates du format 20060924114321

Puis j'ai inséré le code suivant sur la même page: 'detail_fr.php

// --- Your code ---

// You need past following before any output

// here you need to select modified date from DB in UNIX timestamp format
// (same as time() function in PHP or UNIX_TIMESTAMP() function in MySQL)
$rs_date = time();

$last_modified = gmdate('D, d M Y H:i:s',$rs_date) . ' GMT';
// did the browser send an if-modified-since request?
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
// parse header
$if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);

if ($if_modified_since == $last_modified) {
// the browser's cache is still up to date
header('HTTP/1.0 304 Not Modified');

exit;
}
}


header('Last-Modified: ' . $last_modified);

// --- Your code ---

?>

le résultat me donne un header:

HTTP/1.1 200 OK

Date: Sun, 24 Sep 2006 20:03:47 GMT

Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) PHP/

4.3.11

X-Powered-By: PHP/4.3.11

Last-Modified: Sun, 24 Sep 2006 20:03:47 GMT

Connection: close

Content-Type: text/html

Donc, la date de l'instant même et non celle de la dernière modification. Je dois être plutôt stupide pour ne pas comprendre la logique de ce sysème, donc j'ai vraiment besoin d'aide, niveau jardin d'enfants!

Henri

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...