From fa36e5264c28077f3f7c6ea30f5edbd323401a72 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Mon, 14 Nov 2005 23:24:12 +0000 Subject: [PATCH] use sesion_write_close before redirects ... should solve some login problems user experience when load is high on webserver. see http://fr2.php.net/manual/en/function.session-write-close.php git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@154 839d8a87-29fc-0310-9880-83ba4fa771e5 --- ChangeLog | 3 +++ htdocs.net/admin.php | 2 +- htdocs.net/fiche.php | 2 +- htdocs.net/groupe/alias-admin.php | 4 ++-- htdocs.net/groupe/alias-create.php | 2 +- htdocs.net/groupe/asso.php | 2 +- htdocs.net/groupe/edit.php | 2 +- htdocs.net/groupe/evt-admin.php | 31 +++++++++++++++++-------------- htdocs.net/groupe/evt-detail.php | 12 +++++++----- htdocs.net/groupe/listes-admin.php | 2 +- htdocs.net/groupe/listes-archives.php | 2 +- htdocs.net/groupe/listes-check.php | 2 +- htdocs.net/groupe/listes-create.php | 2 +- htdocs.net/groupe/listes-delete.php | 2 +- htdocs.net/groupe/listes-members.php | 2 +- htdocs.net/groupe/listes-moderate.php | 4 ++-- htdocs.net/groupe/listes-options.php | 2 +- htdocs.net/groupe/listes-soptions.php | 2 +- htdocs.net/groupe/listes-sync.php | 2 +- htdocs.net/groupe/listes.php | 4 ++-- htdocs.net/groupe/membres-edit.php | 15 +++++++-------- htdocs.net/groupes.php | 2 +- htdocs.net/login.php | 2 +- htdocs/admin/newsletter.php | 2 +- htdocs/admin/newsletter_edit.php | 4 ++-- htdocs/admin/utilisateurs.php | 6 +++--- htdocs/auth-groupex.php | 6 ++---- htdocs/auth-redirect.php | 6 +----- htdocs/carnet/panel.php | 2 +- htdocs/clear_all_cache.php | 2 +- htdocs/exit.php | 4 ++-- htdocs/index.php | 2 +- htdocs/inscription/step4.php | 2 +- htdocs/listes/admin.php | 6 +++--- htdocs/listes/archives.php | 2 +- htdocs/listes/check.php | 2 +- htdocs/listes/delete.php | 2 +- htdocs/listes/index.php | 4 ++-- htdocs/listes/members.php | 6 +++--- htdocs/listes/moderate.php | 6 +++--- htdocs/listes/options.php | 4 ++-- htdocs/listes/soptions.php | 2 +- htdocs/listes/trombi.php | 6 +++--- htdocs/preferences.php | 4 ++-- htdocs/register/end.php | 2 +- htdocs/skins.php | 2 +- include/banana.inc.php | 2 +- include/xnet/session.inc.php | 2 +- include/xorg.inc.php | 12 ++++++++++++ scripts/webredirect.php | 4 ++-- 50 files changed, 111 insertions(+), 98 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6fbff4d..109a44d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ VERSION 0.9.9 ?? Oct 2005 New : + * Core : + - HTTP redirection safe wrt Session (should solve login problems). -MC + * Documentation : - Documentation now use Wiki -Car diff --git a/htdocs.net/admin.php b/htdocs.net/admin.php index f8a928e..8d7c59d 100644 --- a/htdocs.net/admin.php +++ b/htdocs.net/admin.php @@ -39,7 +39,7 @@ if (Post::has('diminutif')) { $globals->xdb->query('INSERT INTO groupex.asso (id,diminutif) VALUES(NULL,{?})', Post::get('diminutif')); - header('Location: '.Post::get('diminutif').'/edit.php'); + redirect(Post::get('diminutif').'/edit.php'); } $res = $globals->xdb->query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM'); diff --git a/htdocs.net/fiche.php b/htdocs.net/fiche.php index b4ea8c8..426a7fa 100644 --- a/htdocs.net/fiche.php +++ b/htdocs.net/fiche.php @@ -1,3 +1,3 @@ diff --git a/htdocs.net/groupe/alias-admin.php b/htdocs.net/groupe/alias-admin.php index 26dcab5..3891fe5 100644 --- a/htdocs.net/groupe/alias-admin.php +++ b/htdocs.net/groupe/alias-admin.php @@ -4,7 +4,7 @@ require 'xnet.inc.php'; new_groupadmin_page('xnet/groupe/alias-admin.tpl'); if (!Get::has('liste')) { - header("Location: listes.php"); + redirect("listes.php"); } $lfull = strtolower(Get::get('liste')); @@ -50,7 +50,7 @@ if (Env::has('del_member')) { USING x4dat.virtual_redirect INNER JOIN x4dat.virtual USING(vid) WHERE redirect={?} AND alias={?}", Env::get('del_member'), $lfull); - header("Location: ?liste=$lfull"); + redirect("?liste=$lfull"); } $res = $globals->xdb->iterator( diff --git a/htdocs.net/groupe/alias-create.php b/htdocs.net/groupe/alias-create.php index b41d86d..a72b2d9 100644 --- a/htdocs.net/groupe/alias-create.php +++ b/htdocs.net/groupe/alias-create.php @@ -20,7 +20,7 @@ if(Post::has('submit')) { } $globals->xdb->query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new); - header("Location: alias-admin.php?liste=$new"); + redirect("alias-admin.php?liste=$new"); } $page->run(); diff --git a/htdocs.net/groupe/asso.php b/htdocs.net/groupe/asso.php index c18f483..39be21f 100644 --- a/htdocs.net/groupe/asso.php +++ b/htdocs.net/groupe/asso.php @@ -10,7 +10,7 @@ $page->assign('logged', logged()); $page->assign('asso', $globals->asso()); if (!$globals->asso('id')) { - header("Location: ../"); + redirect("../"); } $page->run(); diff --git a/htdocs.net/groupe/edit.php b/htdocs.net/groupe/edit.php index 2532521..140def7 100644 --- a/htdocs.net/groupe/edit.php +++ b/htdocs.net/groupe/edit.php @@ -34,7 +34,7 @@ $globals->xdb->execute('UPDATE groupex.asso SET logo={?}, logo_mime={?} WHERE id={?}', $logo, $mime, $globals->asso('id')); } - header('Location: ../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit.php'); + redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit.php'); } if (has_perms()) { diff --git a/htdocs.net/groupe/evt-admin.php b/htdocs.net/groupe/evt-admin.php index ed42b49..3894e40 100644 --- a/htdocs.net/groupe/evt-admin.php +++ b/htdocs.net/groupe/evt-admin.php @@ -8,26 +8,28 @@ require_once('xnet/evenements.php'); $evt = get_event_detail(Env::get('eid'), Env::get('item_id')); // the event doesn't exist or doesn't belong to this assoif (!$evt) -if (!$evt) - header("Location: evenements.php"); +if (!$evt) { + redirect("evenements.php"); +} -if ($evt['show_participants']) - new_group_page('xnet/groupe/evt-admin.tpl'); -else - new_groupadmin_page('xnet/groupe/evt-admin.tpl'); +if ($evt['show_participants']) { + new_group_page('xnet/groupe/evt-admin.tpl'); +} else { + new_groupadmin_page('xnet/groupe/evt-admin.tpl'); +} $admin = may_update(); // select a member from his mail if ($admin && Env::get('adm') && Env::get('mail')) { - if (strpos(Env::get('mail'), '@') === false) - $res = $globals->xdb->query( - "SELECT m.uid - FROM groupex.membres AS m - INNER JOIN aliases AS a ON (a.id = m.uid) - WHERE a.alias = {?}", - Env::get('mail')); - else + if (strpos(Env::get('mail'), '@') === false) { + $res = $globals->xdb->query( + "SELECT m.uid + FROM groupex.membres AS m + INNER JOIN aliases AS a ON (a.id = m.uid) + WHERE a.alias = {?}", + Env::get('mail')); + } else { $res = $globals->xdb->query( "SELECT m.uid FROM groupex.membres AS m @@ -35,6 +37,7 @@ if ($admin && Env::get('adm') && Env::get('mail')) { Env::get('mail'), $globals->asso('id')); $member = $res->fetchOneCell(); if (!$member) $page->trig("Membre introuvable"); + } } // change the price paid by a participant diff --git a/htdocs.net/groupe/evt-detail.php b/htdocs.net/groupe/evt-detail.php index eeabdeb..f36c702 100644 --- a/htdocs.net/groupe/evt-detail.php +++ b/htdocs.net/groupe/evt-detail.php @@ -4,8 +4,9 @@ require_once 'xnet.inc.php'; new_group_page('xnet/groupe/evt-detail.tpl'); -if (!Env::get("eid")) - header("Location: evenements.php"); +if (!Env::get("eid")) { + redirect("evenements.php"); +} $may_participate = !$members_only || is_member() || may_update(); $page->assign('may_participate', $may_participate); @@ -48,12 +49,13 @@ if (Env::get('ins')) { require_once('xnet/evenements.php'); $evt = get_event_detail(Env::get('eid')); -if (!$evt) - header("Location: evenements.php"); +if (!$evt) { + redirect("evenements.php"); +} if (Env::has('ins')) { subscribe_lists_event($participate, Session::get("uid"), $evt['participant_list'], $evt['absent_list']); - header("Location: evenements.php?backfrom=".Env::get('eid')); + redirect("evenements.php?backfrom=".Env::get('eid')); } $page->assign('participate', $participate); diff --git a/htdocs.net/groupe/listes-admin.php b/htdocs.net/groupe/listes-admin.php index 86478bd..8c988bb 100644 --- a/htdocs.net/groupe/listes-admin.php +++ b/htdocs.net/groupe/listes-admin.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->asso('mail_domain'); diff --git a/htdocs.net/groupe/listes-archives.php b/htdocs.net/groupe/listes-archives.php index e7fab8f..714ff48 100644 --- a/htdocs.net/groupe/listes-archives.php +++ b/htdocs.net/groupe/listes-archives.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->asso('mail_domain'); diff --git a/htdocs.net/groupe/listes-check.php b/htdocs.net/groupe/listes-check.php index e44827c..a741113 100644 --- a/htdocs.net/groupe/listes-check.php +++ b/htdocs.net/groupe/listes-check.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: index.php'); +if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_groupadmin_page('listes/check.tpl'); diff --git a/htdocs.net/groupe/listes-create.php b/htdocs.net/groupe/listes-create.php index 7bb3af8..7934c0b 100644 --- a/htdocs.net/groupe/listes-create.php +++ b/htdocs.net/groupe/listes-create.php @@ -43,7 +43,7 @@ if (Post::has('submit')) { $globals->xdb->execute('INSERT INTO x4dat.virtual_redirect (vid,redirect) VALUES ({?}, {?})', mysql_insert_id(), "$red+admin@listes.polytechnique.org"); $globals->xdb->execute('INSERT INTO x4dat.virtual (alias,type) VALUES({?},{?})', $liste.'-bounces@'.$dom, 'list'); $globals->xdb->execute('INSERT INTO x4dat.virtual_redirect (vid,redirect) VALUES ({?}, {?})', mysql_insert_id(), "$red+bounces@listes.polytechnique.org"); - header("Location: listes-admin.php?liste=$liste"); + redirect("listes-admin.php?liste=$liste"); } else { $page->kill("Un problème est survenu, contacter support@m4x.org"); } diff --git a/htdocs.net/groupe/listes-delete.php b/htdocs.net/groupe/listes-delete.php index aed95c7..77e45ee 100644 --- a/htdocs.net/groupe/listes-delete.php +++ b/htdocs.net/groupe/listes-delete.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); new_group_page('listes/delete.tpl'); diff --git a/htdocs.net/groupe/listes-members.php b/htdocs.net/groupe/listes-members.php index 562ca36..4946487 100644 --- a/htdocs.net/groupe/listes-members.php +++ b/htdocs.net/groupe/listes-members.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); new_group_page('listes/members.tpl'); diff --git a/htdocs.net/groupe/listes-moderate.php b/htdocs.net/groupe/listes-moderate.php index a5b2ff3..09fd775 100644 --- a/htdocs.net/groupe/listes-moderate.php +++ b/htdocs.net/groupe/listes-moderate.php @@ -20,12 +20,12 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->asso('mail_domain'); if (preg_match("!(?:[a-z0-9]+\\.)?{".$globals->asso('mail_domain')."}_(.*)!", $liste, $matches)) { - header("Location: {$_SERVER['PHP_SELF']}?liste={$matches[1]}"); + redirect("{$_SERVER['PHP_SELF']}?liste={$matches[1]}"); } new_group_page('listes/moderate.tpl'); diff --git a/htdocs.net/groupe/listes-options.php b/htdocs.net/groupe/listes-options.php index 5214f69..9888708 100644 --- a/htdocs.net/groupe/listes-options.php +++ b/htdocs.net/groupe/listes-options.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); new_group_page('listes/options.tpl'); diff --git a/htdocs.net/groupe/listes-soptions.php b/htdocs.net/groupe/listes-soptions.php index cb150b9..64f2f58 100644 --- a/htdocs.net/groupe/listes-soptions.php +++ b/htdocs.net/groupe/listes-soptions.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once 'xnet.inc.php'; -if (!Env::has('liste')) header('Location: listes.php'); +if (!Env::has('liste')) redirect('listes.php'); $liste = strtolower(Env::get('liste')); new_groupadmin_page('listes/soptions.tpl'); diff --git a/htdocs.net/groupe/listes-sync.php b/htdocs.net/groupe/listes-sync.php index 1862a7e..64fe068 100644 --- a/htdocs.net/groupe/listes-sync.php +++ b/htdocs.net/groupe/listes-sync.php @@ -5,7 +5,7 @@ require_once 'lists.inc.php'; require_once 'xnet/mail.inc.php'; if (!Env::has('liste')) { - header('Location: annuaire-admin.php'); + redirect('annuaire-admin.php'); } $liste = Env::get('liste'); diff --git a/htdocs.net/groupe/listes.php b/htdocs.net/groupe/listes.php index b8c65c0..9c61c83 100644 --- a/htdocs.net/groupe/listes.php +++ b/htdocs.net/groupe/listes.php @@ -10,11 +10,11 @@ $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $globa if(Get::has('del')) { $client->unsubscribe(Get::get('del')); - header('Location: listes.php'); + redirect('listes.php'); } if(Get::has('add')) { $client->subscribe(Get::get('add')); - header('Location: listes.php'); + redirect('listes.php'); } if(Post::has('promo_add')) { $promo = Post::getInt('promo_add'); diff --git a/htdocs.net/groupe/membres-edit.php b/htdocs.net/groupe/membres-edit.php index fa13502..a57ea61 100644 --- a/htdocs.net/groupe/membres-edit.php +++ b/htdocs.net/groupe/membres-edit.php @@ -59,7 +59,7 @@ FROM auth_user_md5 AS u INNER JOIN aliases AS a ON (u.user_id = a.id) WHERE a.alias={?}', $globals->asso('id'), $forlife); - header('Location: ?edit='.$email); + redirect('?edit='.$email); } else { $page->trig($email." n'est pas un alias polytechnique.org valide"); } @@ -69,7 +69,7 @@ $uid = max(intval($res->fetchOneCell()), 50001); $globals->xdb->execute('INSERT INTO groupex.membres (uid,asso_id,origine,email) VALUES({?},{?},"ext",{?})', $uid, $globals->asso('id'), $email); - header('Location: ?edit='.$email); + redirect('?edit='.$email); } else { $page->trig("« $email » n'est pas une adresse mail valide"); } @@ -81,7 +81,7 @@ new_groupadmin_page('xnet/groupe/membres-edit.tpl'); $user = get_infos(Env::get('edit')); - if (empty($user)) { header("Location: annuaire.php"); } + if (empty($user)) { redirect("annuaire.php"); } require 'lists.inc.php'; $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $globals->asso('mail_domain')); @@ -136,7 +136,7 @@ $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml"); } } - header("Location: annuaire.php"); + redirect("annuaire.php"); } $page->assign('user', $user); @@ -154,7 +154,7 @@ { new_groupadmin_page('xnet/groupe/membres-del.tpl'); $user = get_infos(Env::get('del')); - if (empty($user)) { header("Location: annuaire.php"); } + if (empty($user)) { redirect("annuaire.php"); } $page->assign('user', $user); if (Post::has('confirm')) { @@ -189,9 +189,8 @@ $page->trig("{$user['prenom']} {$user['nom']} a été retiré du groupe !"); } } - else - { - header("Location: annuaire.php"); + else { + redirect("annuaire.php"); } $page->run(); diff --git a/htdocs.net/groupes.php b/htdocs.net/groupes.php index 0f06e2d..f083b95 100644 --- a/htdocs.net/groupes.php +++ b/htdocs.net/groupes.php @@ -2,7 +2,7 @@ require 'xnet.inc.php'; if (!($cat = Get::get('cat'))) { - header("Location:index.php"); + redirect("index.php"); exit; } diff --git a/htdocs.net/login.php b/htdocs.net/login.php index 9d6034f..adad92b 100644 --- a/htdocs.net/login.php +++ b/htdocs.net/login.php @@ -2,7 +2,7 @@ require 'xnet.inc.php'; if (logged()) { - header("Location: index.php"); + redirect("index.php"); } new_page('index.tpl', AUTH_MDP); diff --git a/htdocs/admin/newsletter.php b/htdocs/admin/newsletter.php index 95a0289..a9cb2de 100644 --- a/htdocs/admin/newsletter.php +++ b/htdocs/admin/newsletter.php @@ -26,7 +26,7 @@ require_once("newsletter.inc.php"); if(Get::has('new')) { insert_new_nl(); - header("Location: newsletter.php"); + redirect("newsletter.php"); } $page->assign_by_ref('nl_list', get_nl_slist()); diff --git a/htdocs/admin/newsletter_edit.php b/htdocs/admin/newsletter_edit.php index f0b4130..41f1b5c 100644 --- a/htdocs/admin/newsletter_edit.php +++ b/htdocs/admin/newsletter_edit.php @@ -29,7 +29,7 @@ $nl = new NewsLetter($nid); if(Get::has('del_aid')) { $nl->delArticle(Get::get('del_aid')); - header("Location: {$_SERVER['PHP_SELF']}?nid=$nid"); + redirect("{$_SERVER['PHP_SELF']}?nid=$nid"); } if(Post::get('update')) { @@ -43,7 +43,7 @@ if(Post::get('save')) { $art = new NLArticle(Post::get('title'), Post::get('body'), Post::get('append'), Get::get('edit_aid'), Post::get('cid'), Post::get('pos')); $nl->saveArticle($art); - header("Location: {$_SERVER['PHP_SELF']}?nid=$nid"); + redirect("{$_SERVER['PHP_SELF']}?nid=$nid"); } if(Get::has('edit_aid')) { diff --git a/htdocs/admin/utilisateurs.php b/htdocs/admin/utilisateurs.php index 6be4219..5fc1bfb 100644 --- a/htdocs/admin/utilisateurs.php +++ b/htdocs/admin/utilisateurs.php @@ -38,11 +38,11 @@ if (Env::has('user_id')) { } if(Env::has('logs_button') && $login) { - header("Location: logger.php?loguser=$login&year=".date('Y')."&month=".date('m')); + redirect("logger.php?loguser=$login&year=".date('Y')."&month=".date('m')); } if (Env::has('ax_button') && $login) { - header("Location: synchro_ax.php?user=$login"); + redirect("synchro_ax.php?user=$login"); } if(Env::has('suid_button') && $login) { @@ -51,7 +51,7 @@ if(Env::has('suid_button') && $login) { $r = $globals->xdb->query("SELECT id FROM aliases WHERE alias={?}", $login); if($uid = $r->fetchOneCell()) { start_connexion($uid,true); - header("Location: ../"); + redirect("../"); } } diff --git a/htdocs/auth-groupex.php b/htdocs/auth-groupex.php index 09ec9d4..1967d02 100644 --- a/htdocs/auth-groupex.php +++ b/htdocs/auth-groupex.php @@ -84,13 +84,11 @@ $res = $globals->xdb->iterRow('select privkey,name,datafields from groupesx_auth while (list($privkey,$name,$datafields) = $res->next()) { if (md5($gpex_challenge.$privkey) == $gpex_pass) { $returl = $gpex_url.gpex_make_params($gpex_challenge,$privkey,$datafields); - header("Location:$returl"); - exit(0); + redirect($returl); } } /* si on n'a pas trouvé, on renvoit sur x.org */ -header("Location:https://www.polytechnique.org/"); -exit(0); +redirect('https://www.polytechnique.org/'); ?> diff --git a/htdocs/auth-redirect.php b/htdocs/auth-redirect.php index 715606c..71f4b6d 100644 --- a/htdocs/auth-redirect.php +++ b/htdocs/auth-redirect.php @@ -22,9 +22,5 @@ require_once("xorg.inc.php"); new_skinned_page('index.tpl',AUTH_COOKIE); -//adresse de redirection par defaut -if (isset($_REQUEST['dest'])) $redirect=$_REQUEST['dest']; -else $redirect="/"; - -header("Location: ".$redirect); +redirect(Env::get('dest', '/')); ?> diff --git a/htdocs/carnet/panel.php b/htdocs/carnet/panel.php index 922c5dd..642c8a7 100644 --- a/htdocs/carnet/panel.php +++ b/htdocs/carnet/panel.php @@ -25,7 +25,7 @@ require_once('notifs.inc.php'); if(Get::has('read')) { $_SESSION['watch_last'] = Get::get('read'); - header("Location: panel.php"); + redirect("panel.php"); } $page->assign('now',date('YmdHis')); diff --git a/htdocs/clear_all_cache.php b/htdocs/clear_all_cache.php index 6a01b7f..ad70051 100644 --- a/htdocs/clear_all_cache.php +++ b/htdocs/clear_all_cache.php @@ -23,6 +23,6 @@ require_once("xorg.inc.php"); new_skinned_page('index.tpl', AUTH_COOKIE); $page->clear_compiled_tpl(); -header("Location: " . (empty($_SERVER['HTTP_REFERER']) ? 'index.php' : $_SERVER['HTTP_REFERER'])); +redirect(empty($_SERVER['HTTP_REFERER']) ? 'index.php' : $_SERVER['HTTP_REFERER']); ?> diff --git a/htdocs/exit.php b/htdocs/exit.php index a7adc4c..7c88b19 100644 --- a/htdocs/exit.php +++ b/htdocs/exit.php @@ -29,9 +29,9 @@ if (Session::has('suid')) { $log->log("suid_stop", Session::get('forlife') . " by " . $suid['forlife']); $_SESSION = $suid; Session::kill('suid'); - header('Location: '.$globals->baseurl.'/admin/utilisateurs.php?login='.$a4l); + redirect($globals->baseurl.'/admin/utilisateurs.php?login='.$a4l); } else { - header("Location: login.php"); + redirect("login.php"); } ?> diff --git a/htdocs/index.php b/htdocs/index.php index 82e9a41..4855883 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -22,7 +22,7 @@ require_once("xorg.inc.php"); new_skinned_page('index.tpl', AUTH_PUBLIC); if (logged()) { - header("Location: login.php"); + redirect("login.php"); } $page->run(); ?> diff --git a/htdocs/inscription/step4.php b/htdocs/inscription/step4.php index e205030..2209b15 100644 --- a/htdocs/inscription/step4.php +++ b/htdocs/inscription/step4.php @@ -20,6 +20,6 @@ ***************************************************************************/ require_once('xorg.inc.php'); -header('Location: ../register/end.php?hash='.Env::get('ref')); +redirect('../register/end.php?hash='.Env::get('ref')); ?> diff --git a/htdocs/listes/admin.php b/htdocs/listes/admin.php index 150068d..d14340c 100644 --- a/htdocs/listes/admin.php +++ b/htdocs/listes/admin.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->mail->domain; @@ -55,7 +55,7 @@ if (Env::has('del_member')) { } else { $client->mass_unsubscribe($liste, Array(Env::get('del_member'))); } - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if (Env::has('add_owner')) { @@ -80,7 +80,7 @@ if (Env::has('del_owner')) { } else { $client->del_owner($liste, Env::get('del_owner')); } - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if(list($det,$mem,$own) = $client->get_members($liste)) { diff --git a/htdocs/listes/archives.php b/htdocs/listes/archives.php index 68169ed..1117778 100644 --- a/htdocs/listes/archives.php +++ b/htdocs/listes/archives.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->mail->domain; diff --git a/htdocs/listes/check.php b/htdocs/listes/check.php index 4cd27ba..a4fd619 100644 --- a/htdocs/listes/check.php +++ b/htdocs/listes/check.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_admin_page('listes/check.tpl'); diff --git a/htdocs/listes/delete.php b/htdocs/listes/delete.php index 1b280ed..1f49536 100644 --- a/htdocs/listes/delete.php +++ b/htdocs/listes/delete.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_skinned_page('listes/delete.tpl', AUTH_MDP); diff --git a/htdocs/listes/index.php b/htdocs/listes/index.php index dee288d..13bf1b1 100644 --- a/htdocs/listes/index.php +++ b/htdocs/listes/index.php @@ -28,11 +28,11 @@ $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password')); if(Get::has('del')) { $client->unsubscribe(Get::get('del')); - header('Location: index.php'); + redirect('index.php'); } if(Get::has('add')) { $client->subscribe(Get::get('add')); - header('Location: index.php'); + redirect('index.php'); } if(Post::has('promo_add')) { $promo = Post::getInt('promo_add'); diff --git a/htdocs/listes/members.php b/htdocs/listes/members.php index 0d51416..87acec3 100644 --- a/htdocs/listes/members.php +++ b/htdocs/listes/members.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_skinned_page('listes/members.tpl', AUTH_COOKIE); @@ -32,11 +32,11 @@ if (!$page) { if(Get::has('del')) { $client->unsubscribe($liste); - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if(Get::has('add')) { $client->subscribe($liste); - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } $members = $client->get_members($liste); diff --git a/htdocs/listes/moderate.php b/htdocs/listes/moderate.php index cda7d4f..6d86659 100644 --- a/htdocs/listes/moderate.php +++ b/htdocs/listes/moderate.php @@ -21,12 +21,12 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); $domain = $globals->mail->domain; if (preg_match("!(?:[a-z0-9]+\\.)?{$domain}_(.*)!", $liste, $matches)) { - header("Location: {$_SERVER['PHP_SELF']}?liste={$matches[1]}"); + redirect("{$_SERVER['PHP_SELF']}?liste={$matches[1]}"); } new_skinned_page('listes/moderate.tpl', AUTH_MDP); @@ -39,7 +39,7 @@ $page->register_modifier('qpd','quoted_printable_decode'); if(Env::has('sadd')) { $client->handle_request($liste,Env::get('sadd'),4,''); /* 4 = SUBSCRIBE */ - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if(Post::has('sdel')) { diff --git a/htdocs/listes/options.php b/htdocs/listes/options.php index efdd7e9..06e4445 100644 --- a/htdocs/listes/options.php +++ b/htdocs/listes/options.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_skinned_page('listes/options.tpl', AUTH_MDP); @@ -59,7 +59,7 @@ if (Post::has('submit')) { $client->add_to_wl($liste, Post::get('atn_add')); } elseif (Get::has('atn_del')) { $client->del_from_wl($liste, Get::get('atn_del')); - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if(list($details,$options) = $client->get_owner_options($liste)) { diff --git a/htdocs/listes/soptions.php b/htdocs/listes/soptions.php index 5952da7..ca722b0 100644 --- a/htdocs/listes/soptions.php +++ b/htdocs/listes/soptions.php @@ -21,7 +21,7 @@ if (!$page) { require_once("xorg.inc.php"); - if (!Env::has('liste')) header('Location: index.php'); + if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_admin_page('listes/soptions.tpl'); diff --git a/htdocs/listes/trombi.php b/htdocs/listes/trombi.php index 8021c65..c7b3a66 100644 --- a/htdocs/listes/trombi.php +++ b/htdocs/listes/trombi.php @@ -20,7 +20,7 @@ ***************************************************************************/ require_once("xorg.inc.php"); -if (!Env::has('liste')) header('Location: index.php'); +if (!Env::has('liste')) redirect('index.php'); $liste = strtolower(Env::get('liste')); new_skinned_page('listes/trombi.tpl', AUTH_COOKIE); @@ -31,11 +31,11 @@ $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password')); if(Get::has('del')) { $client->unsubscribe($liste); - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } if(Get::has('add')) { $client->subscribe($liste); - header("Location: {$_SERVER['PHP_SELF']}?liste=$liste"); + redirect("{$_SERVER['PHP_SELF']}?liste=$liste"); } function getList($offset,$limit) diff --git a/htdocs/preferences.php b/htdocs/preferences.php index 51bb3f4..a3ca5d3 100644 --- a/htdocs/preferences.php +++ b/htdocs/preferences.php @@ -30,7 +30,7 @@ if (Env::has('mail_fmt')) { SET core_mail_fmt = '$fmt' WHERE user_id = {?}", Session::getInt('uid')); $_SESSION['mail_fmt'] = $fmt; - header('Location: preferences.php'); + redirect('preferences.php'); } if (Env::has('rss')) { @@ -42,7 +42,7 @@ if (Env::has('rss')) { $globals->xdb->execute('UPDATE auth_user_quick SET core_rss_hash="" WHERE user_id={?}', Session::getInt('uid')); Session::kill('core_rss_hash'); } - header('Location: preferences.php'); + redirect('preferences.php'); } $page->assign('prefs', $globals->hook->prefs()); diff --git a/htdocs/register/end.php b/htdocs/register/end.php index 32c3683..a1be4a8 100644 --- a/htdocs/register/end.php +++ b/htdocs/register/end.php @@ -116,7 +116,7 @@ while (list($salias, $snom, $sprenom) = $res->next()) { $globals->xdb->execute("DELETE FROM register_marketing WHERE uid = {?}", $uid); -header('Location: success.php'); +redirect('success.php'); $page->assign('uid', $uid); $page->run(); diff --git a/htdocs/skins.php b/htdocs/skins.php index 651e9e9..9dc00b8 100644 --- a/htdocs/skins.php +++ b/htdocs/skins.php @@ -21,7 +21,7 @@ require_once('xorg.inc.php'); if (!$globals->skin->enable) { - header('Location: index.php'); + redirect('index.php'); } new_skinned_page('skins.tpl', AUTH_COOKIE); $page->assign('xorg_title','Polytechnique.org - Skins'); diff --git a/include/banana.inc.php b/include/banana.inc.php index 30b8077..1387ccb 100644 --- a/include/banana.inc.php +++ b/include/banana.inc.php @@ -93,7 +93,7 @@ class PlatalBanana extends Banana if (Get::get('banana') == 'updateall') { $globals->xdb->execute('UPDATE auth_user_quick SET banana_last={?} WHERE user_id={?}', gmdate('YmdHis'), Session::getInt('uid')); $_SESSION['banana_last'] = time(); - header('Location: ?'); + redirect($_SERVER['PHP_SELF']); } return Banana::run('PlatalBanana'); } diff --git a/include/xnet/session.inc.php b/include/xnet/session.inc.php index e894f9b..00f513f 100644 --- a/include/xnet/session.inc.php +++ b/include/xnet/session.inc.php @@ -118,7 +118,7 @@ class XnetSession extends DiogenesCoreSession foreach($_GET as $key=>$val) { $args[] = urlencode($key).'='.urlencode($val); } - header('Location: '.$_SERVER['PHP_SELF'] . '?' . join('&', $args)); + redirect($_SERVER['PHP_SELF'] . '?' . join('&', $args)); } // }}} diff --git a/include/xorg.inc.php b/include/xorg.inc.php index 95a7bb9..45dccf9 100644 --- a/include/xorg.inc.php +++ b/include/xorg.inc.php @@ -100,6 +100,18 @@ function new_admin_table_editor($table, $idfield, $idedit=false) } // }}} +// {{{ function redirect + +function redirect($page) +{ + if (count($_SESSION)) { + session_write_close(); + } + header("Location: $page"); + exit; +} + +// }}} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker: ?> diff --git a/scripts/webredirect.php b/scripts/webredirect.php index 6c1c2c6..1db58e4 100644 --- a/scripts/webredirect.php +++ b/scripts/webredirect.php @@ -35,9 +35,9 @@ $res = $globals->xdb->query( if ($url = $res->fetchOneCell()) { $url = preg_replace('@/+$@', '', $url); if($path) { - header("Location: http://$url/$path"); + redirect("http://$url/$path"); } else { - header("Location: http://$url"); + redirect("http://$url"); } exit(); } -- 2.1.4