Alexandre FLAMENT
Mon wiki
Contributions
- Ebauche de l'action Calendrier reprise par
GoubS
- Gallerie d'images :
WikiAlbum? dans
ContributionsAvancees
Ma "Réécriture" d'URL chez Free
Free n'autorisant pas la réécriture d'URL, je simule cette réécriture avec un
.htaccess sur mon wiki :
- http://a.flament.free.fr/wiki/Liens déclanche une erreur 404 (page non trouvée)
- le .htaccess contient ErrorDocument? 404 /wiki/index.php qui redirige l'erreur sur index.php
- index.php (anciennement wakka.php) s'occupe d'afficher la page :
- Au lieu de lire la page wiki demandé avec le paramètre GET wiki, la variable $_SERVER['REDIRECT_URL'] est utilisée (contient /wiki/Liens pour liens donné au dessus). Les paramètres GET sont récupérables grace à la variable $_SERVER['REDIRECT_QUERY_STRING'] (cf la fonction PHP parser_str) :
- parse_str($_SERVER['REDIRECT_QUERY_STRING'], $query);
- foreach($query as $key => $value) {
- $_REQUEST[$key] = $value;
- }
- La lecture du wiki fonctionne à partir de la, mais pas les modifications : en effet lorsqu'une erreur 404 est déclanchée, le serveur web (en tout cas Apache), ne fournis pas les paramètres POST à la page d'erreur, hors la méthode /edit utilise des paramètres POST. J'ai donc modifier la méthode FormOpen? de wakka.php/index.php pour qu'un formulaire POST soit transformé en formulaire GET :
function FormOpen($method = "", $tag = "", $formMethod = "post")
{
$realFormMethod = $formMethod;
$formMethod="get";
$result = "<form action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
if (!$this->config["rewrite_mode"]) $result .= "<input type=\"hidden\" name=\"wiki\" value=\"".$this->MiniHref($method, $tag)."\" />\n";
""if (strcasecmp($realFormMethod,"post") == 0)"" $result .="<input type=\"hidden\" name=\"LongPost\" value=\"1\" >\n";
return $result;
}
- Le code de WikiNi s'attend a trouver la variable $_POST mise à jour, il faut donc le faire pour les formulaires POST transformés (à placer juste après le session_start() ) :
if ($query['LongPost'] == 1) {
reset($query);
if(get_magic_quotes_gpc()) {
foreach($query as $key => $value) {
$_POST[$key] = stripslashes($value);
}
} else {
foreach($query as $key => $value) {
$_POST[$key] = $value;
}
}
}
Avec toutes ces modifications, cela devrait fonctionner :
- L'avantage : les URL sont beaucoup plus simple
- Les inconvénients :
- Les pages sont limitées en taille (les paramètres GET ne peuvent pas dépasser 4Ko il me semble)
- Non référencé par les moteurs de recherche puisque chaque page est une erreur de page non trouvée (pas important pour moi)
Donc c'est plus une monstrueuse bidouille qu'autre chose...