Skip to content
Extraits de code Groupes Projets
Valider 2de0535b rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"redirige_par_entete permet des redirection 301

et permet de signaler apache par un define si l'hebergeur a change l'entete envoyee par le serveur (#828)"
parent 50804778
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -17,8 +17,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -17,8 +17,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// en evitant les attaques par la redirection (souvent indique par 1 $_GET) // en evitant les attaques par la redirection (souvent indique par 1 $_GET)
// http://doc.spip.org/@redirige_par_entete // http://doc.spip.org/@redirige_par_entete
function redirige_par_entete($url, $equiv='') { function redirige_par_entete($url, $equiv='', $status = 302) {
if (!in_array($status,array(301,302)))
$status = 302;
$url = strtr($url, "\n\r", " "); $url = strtr($url, "\n\r", " ");
# en theorie on devrait faire ca tout le temps, mais quand la chaine # en theorie on devrait faire ca tout le temps, mais quand la chaine
# commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne # commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne
...@@ -29,7 +31,7 @@ function redirige_par_entete($url, $equiv='') { ...@@ -29,7 +31,7 @@ function redirige_par_entete($url, $equiv='') {
$url = parametre_url($url, 'transformer_xml', $x, '&'); $url = parametre_url($url, 'transformer_xml', $x, '&');
// Il n'y a que sous Apache que setcookie puis redirection fonctionne // Il n'y a que sous Apache que setcookie puis redirection fonctionne
if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0)) { if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0) OR defined('_SERVER_APACHE')) {
@header("Location: " . $url); @header("Location: " . $url);
$equiv=""; $equiv="";
} else { } else {
...@@ -37,21 +39,23 @@ function redirige_par_entete($url, $equiv='') { ...@@ -37,21 +39,23 @@ function redirige_par_entete($url, $equiv='') {
$equiv = "<meta http-equiv='Refresh' content='0; url=$url'>"; $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
} }
include_spip('inc/lang'); include_spip('inc/lang');
if ($status!=302)
http_status($status);
echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">',"\n", echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">',"\n",
html_lang_attributes(),' html_lang_attributes(),'
<head>', <head>',
$equiv,' $equiv,'
<title>HTTP 302</title> <title>HTTP '.$status.'</title>
</head> </head>
<body> <body>
<h1>HTTP 302</h1> <h1>HTTP '.$status.'</h1>
<a href="', <a href="',
quote_amp($url), quote_amp($url),
'">', '">',
_T('navigateur_pas_redirige'), _T('navigateur_pas_redirige'),
'</a></body></html>'; '</a></body></html>';
spip_log("redirige: $url"); spip_log("redirige $status: $url");
exit; exit;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter