[RESOLU] Modifier la date d'un fichier

sr34000
Invité n'ayant pas de compte PHPfrance

01 févr. 2006, 18:12

Salut a tous

je bloque sur un petit probleme...

Modifier la date d'un fichier

j'explique :

je souhaite que lorsque quelqu'un consulte ma page truc.php au jour J et a l'heure H cela modifie ma date de fichier en J-2 et H-3 par exemple

Arriver a modifier la date du fichier (date de modif) mais en plus la forcer en imposant J-2 et H-3 (par exemple)

En cherchant j'ai bien trouvé une fonction qui semble pouvoir faire cela

Code : Tout sélectionner

<?php $url = truc.php if ( touch($url) ) { echo "La date de modification de $url a été fixée à maintenant"; } else { echo "Désolé, il est impossible de changer la date de modification de $url"; } ?>
Mais je comprend pas tout ca marche pas top

ca ne me modifie pas la date de truc.php
ca me créer un fichier trucphp ???

Si quelqu'un a une idée

@+

Mammouth du PHP | 983 Messages

01 févr. 2006, 18:30

Est que le fichier truc.php est dans le même répertoire que ton script?

De plus, tu n'as pas mis d'apostrophe autour du nom du fichier:
<?php
$url = 'truc.php';
if ( touch($url) ) {
  echo "La date de modification de $url a
         été fixée à maintenant";
} else {
  echo "Désolé, il est impossible de changer
         la date de modification de $url";
}
?>

sr34000
Invité n'ayant pas de compte PHPfrance

02 févr. 2006, 12:25

ok merci génial cela marche

pourtant dans l'exemple http://fr.php.net/manual/fr/function.touch.php
ils n'ont pas mis les ' '

Sais tu s'il est possible de dire que la date de modif n'est celle qui lance le script (jour J et heure H) mais plutot J-2 et H-3 (par exemple)

@+

sr34000
Invité n'ayant pas de compte PHPfrance

02 févr. 2006, 12:28

touch ( string filename [, int time [, int atime]] )

je comprend pas trop [, int time [, int atime]]
quoi mettre et comment ?

Mammouth du PHP | 983 Messages

02 févr. 2006, 13:03

Le 2ème paramètre correspond au timestamp de la date de dernière modification que tu veux donner.

Il faut donc que tu récupéres le timestamp courant, et que tu lui appliques les opérations que tu souhaites, puis appeler touch avec le timstamp modifié.

Tu auras besoin de :
- date()
- time()

sr34000
Invité n'ayant pas de compte PHPfrance

02 févr. 2006, 13:42

Salut et merci

une derniere petite question la date de modification d'un fichier c'est la date qui indique que le fichier a été mis a jour ??? c'est bien ca ?

Mais la date de dernier accès c'est quoi, ca sert a quoi ca s'affiche comment ? c'est stocké ou ?

Mammouth du PHP | 983 Messages

02 févr. 2006, 14:03

une derniere petite question la date de modification d'un fichier c'est la date qui indique que le fichier a été mis a jour ??? c'est bien ca ?
Tout à fait ;)
Mais la date de dernier accès c'est quoi, ca sert a quoi ca s'affiche comment ? c'est stocké ou ?
Comme son nom l'indique, la date de dernier accès d'un fichier est, bah la date de dernier accès du fichier :P. C'est stocké dans les "méta données" du fichier (ses attributs). Ca sert donc à savoir quand le fichier a été lu pour la dernière fois.
Pour y accéder : http://fr.php.net/manual/fr/function.fileatime.php

sr34000
Invité n'ayant pas de compte PHPfrance

02 févr. 2006, 23:32

ok

y a t il une methode meilleure que l'autre

Code : Tout sélectionner

$avanthier = time() - (86400*2);

Code : Tout sélectionner

$foo = 60*60*24*2+60*60*3; touch($file, strtotime(date('Y/m/d h:i:s')) - $foo);

strtotime ou pas strtotime

sr34000
Invité n'ayant pas de compte PHPfrance

06 févr. 2006, 18:10

Vraiment la derniere question lol

Code : Tout sélectionner

<?php $url = $_SERVER["PHP_SELF"]; if ( touch($url) ) { echo "La date de modification de $url a été fixée à maintenant"; } else { echo "Désolé, il est impossible de changer la date de modification de $url"; } ?>
pourquoi cela ne marche pas, cette faois c'est pas une question de '' car c'est pas du texte...
:fete:

Mammouth du PHP | 505 Messages

06 févr. 2006, 18:15

car $_SERVER["PHP_SELF"] fait référence a la racine de ton serveur http...
et pas forcement a la racine de ton file système...

Utiliser $_SERVER["SCRIPT_FILENAME"] a la place