Mon hébergeur (levillage.org) vient d'interdire sans prévenir
l'utilisation de putenv(), pour raisons de sécurité.
C'est peut-être légitime, mais il se trouve que j'utilise une
application qui elle-même utilise les packages PEAR pour les calculs
de date et de décallage horaire en fonction du fuseau horaire et de
l'heure d'été.
Est-ce qu'il y a une possibilité de contourner cette interdiction ?
Le code incriminé est dans pear/Date/TimeZone.php, ligne 236 et suiv.
:
/**
* Is the given date/time in DST for this time zone
*
* Attempts to determine if a given Date object represents a
date/time
* that is in DST for this time zone. WARNINGS: this basically
attempts to
* "trick" the system into telling us if we're in DST for a given
time zone.
* This uses putenv() which may not work in safe mode, and relies
on unix time
* which is only valid for dates from 1970 to ~2038. This relies
on the
* underlying OS calls, so it may not work on Windows or on a
system where
* zoneinfo is not installed or configured properly.
*
* @access public
* @param object Date $date the date/time to test
* @return boolean true if this date is in DST for this time zone
*/
function inDaylightTime($date)
{
$env_tz = "";
if(getenv("TZ")) {
$env_tz = getenv("TZ");
}
putenv("TZ=".$this->id);
$ltime = localtime($date->getTime(), true);
putenv("TZ=".$env_tz);
return $ltime['tm_isdst'];
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
P'tit Marcel
Hello,
Mon hébergeur (levillage.org) vient d'interdire sans prévenir l'utilisation de putenv(), pour raisons de sécurité. C'est peut-être légitime, mais il se trouve que j'utilise une application qui elle-même utilise les packages PEAR pour les calculs de date et de décallage horaire en fonction du fuseau horaire et de l'heure d'été. Est-ce qu'il y a une possibilité de contourner cette interdiction ?
Tu devrais t'en sortir simplement comme cela :
function inDaylightTime($date) { return -date('I', $date); # I donne -1 si heure d'été, 0 sinon }
si cela ne marche pas et si le serveur est dans l'Union Européenne, il y a la solution bourrin :
function inDaylightTime($date) { $mois = date('n', $date); if(($mois < 3) or ($mois > 10)) return 0; # heure d'hiver if(($mois > 3) and ($mois < 10)) return 1; # heure d'été $jour = date('j', $date); $heure = date('H', $date); $annee = date('Y', $date); # calculons le dernier dimanche du mois (date bascule été/hiver) $bascule = mktime(0,0,0, $mois, 31, $annee); for($jb1; date("w", $bascule)!=0; $jb--) { $bascule = mktime(0,0,0, $mois, $jb, $annee); } if($mois==3) { if (($jour < $jb) or (($jour == $jb) and ($heure < 2))) return 0; # heure d'hiver else return 1; # heure d'été } if($mois=) { if (($jour < $jb) or (($jour == $jb) and ($heure < 2))) return 1; # heure d'été elseif(($jour == $jb) and ($heure == 2))) return -1; # impossible de conclure else return 0; # heure d'hiver } # en principe le programme ne devrait pas arriver ici ! return -1; # impossible de conclure }
eça -- P'tit MÃrcel stats sur les forums modérés http://www.centrale-lyon.org/ng/
Hello,
Mon hébergeur (levillage.org) vient d'interdire sans prévenir
l'utilisation de putenv(), pour raisons de sécurité.
C'est peut-être légitime, mais il se trouve que j'utilise une
application qui elle-même utilise les packages PEAR pour les calculs
de date et de décallage horaire en fonction du fuseau horaire et de
l'heure d'été.
Est-ce qu'il y a une possibilité de contourner cette interdiction ?
Tu devrais t'en sortir simplement comme cela :
function inDaylightTime($date)
{
return -date('I', $date); # I donne -1 si heure d'été, 0 sinon
}
si cela ne marche pas et si le serveur est dans l'Union Européenne, il y
a la solution bourrin :
function inDaylightTime($date)
{
$mois = date('n', $date);
if(($mois < 3) or ($mois > 10)) return 0; # heure d'hiver
if(($mois > 3) and ($mois < 10)) return 1; # heure d'été
$jour = date('j', $date);
$heure = date('H', $date);
$annee = date('Y', $date);
# calculons le dernier dimanche du mois (date bascule été/hiver)
$bascule = mktime(0,0,0, $mois, 31, $annee);
for($jb1; date("w", $bascule)!=0; $jb--) {
$bascule = mktime(0,0,0, $mois, $jb, $annee);
}
if($mois==3) {
if (($jour < $jb) or (($jour == $jb) and ($heure < 2)))
return 0; # heure d'hiver
else return 1; # heure d'été
}
if($mois=) {
if (($jour < $jb) or (($jour == $jb) and ($heure < 2)))
return 1; # heure d'été
elseif(($jour == $jb) and ($heure == 2)))
return -1; # impossible de conclure
else return 0; # heure d'hiver
}
# en principe le programme ne devrait pas arriver ici !
return -1; # impossible de conclure
}
eça
--
P'tit MÃrcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
Mon hébergeur (levillage.org) vient d'interdire sans prévenir l'utilisation de putenv(), pour raisons de sécurité. C'est peut-être légitime, mais il se trouve que j'utilise une application qui elle-même utilise les packages PEAR pour les calculs de date et de décallage horaire en fonction du fuseau horaire et de l'heure d'été. Est-ce qu'il y a une possibilité de contourner cette interdiction ?
Tu devrais t'en sortir simplement comme cela :
function inDaylightTime($date) { return -date('I', $date); # I donne -1 si heure d'été, 0 sinon }
si cela ne marche pas et si le serveur est dans l'Union Européenne, il y a la solution bourrin :
function inDaylightTime($date) { $mois = date('n', $date); if(($mois < 3) or ($mois > 10)) return 0; # heure d'hiver if(($mois > 3) and ($mois < 10)) return 1; # heure d'été $jour = date('j', $date); $heure = date('H', $date); $annee = date('Y', $date); # calculons le dernier dimanche du mois (date bascule été/hiver) $bascule = mktime(0,0,0, $mois, 31, $annee); for($jb1; date("w", $bascule)!=0; $jb--) { $bascule = mktime(0,0,0, $mois, $jb, $annee); } if($mois==3) { if (($jour < $jb) or (($jour == $jb) and ($heure < 2))) return 0; # heure d'hiver else return 1; # heure d'été } if($mois=) { if (($jour < $jb) or (($jour == $jb) and ($heure < 2))) return 1; # heure d'été elseif(($jour == $jb) and ($heure == 2))) return -1; # impossible de conclure else return 0; # heure d'hiver } # en principe le programme ne devrait pas arriver ici ! return -1; # impossible de conclure }
eça -- P'tit MÃrcel stats sur les forums modérés http://www.centrale-lyon.org/ng/
DrPiquouze
P'tit Marcel wrote:
Hello,
Tu devrais t'en sortir simplement comme cela :
function inDaylightTime($date) { return -date('I', $date); # I donne -1 si heure d'été, 0 sinon }
Salut P'tit Marcel, et merci de t'être penché sur mon problème. J'essaie ça dès que j'ai un moment et je te tiens au courant.
Cordialement
P'tit Marcel wrote:
Hello,
Tu devrais t'en sortir simplement comme cela :
function inDaylightTime($date)
{
return -date('I', $date); # I donne -1 si heure d'été, 0 sinon
}
Salut P'tit Marcel, et merci de t'être penché sur mon problème.
J'essaie ça dès que j'ai un moment et je te tiens au courant.