Maison  >  Article  >  développement back-end  >  Résumé de plusieurs façons d'implémenter le pseudo-statique en PHP

Résumé de plusieurs façons d'implémenter le pseudo-statique en PHP

伊谢尔伦
伊谢尔伦original
2017-07-17 16:28:446441parcourir

L'utilisation du pseudo-statique en PHP consiste principalement à masquer les noms de paramètres passés. En parlant de l'implémentation du pseudo-statique, répondez-vous volontiers « Simple, configurez la réécriture d'Apache. " Suivez simplement les règles. "

Mais avez-vous déjà remarqué cette situation ? Vous avez récemment développé de nombreuses nouvelles fonctionnalités. Plusieurs nouvelles fonctionnalités sont ajoutées chaque jour. jour. Cela ne fait que deux jours. Les étudiants en opération et maintenance sont toujours prêts à coopérer, mais dans deux jours, les étudiants en opération et maintenance me gronderont. Pourquoi ne fais-tu pas tout d'un coup et ne me déranges-tu pas tous les jours parce que tu es si engourdi et stupide ? Mais, vous êtes sur le point d'aller en ligne, et vous devez demander durement aux camarades de classe d'exploitation et de maintenance, puis dire les mots les plus éhontés du monde des programmeurs : "C'est le dernier changement", et vous devrez ensuite le modifier à nouveau plus tard. , hé, ta personnalité, c'est une table rase. . .

Si vous rencontrez de tels problèmes, veuillez lire l'article suivant pour vous assurer que vous ne demanderez plus jamais d'opération et de maintenance à l'avenir et que vous pourrez faire ce que vous voulez. . .

Combien de façons existe-t-il d'implémenter le pseudo-statique en PHP ? Opinions personnelles et statistiques, il existe quatre méthodes

1. Utilisez les règles de réécriture d'URL d'Apache. Tout le monde le sait. Configurez-le dans Apache. Tous les étudiants ici en ont fait une simple. . Configurez

RewriteEngine On
RewriteRule ^/test.html index.php?controller=index&action=test [L]

2. Avez-vous déjà vu des sites Web jouer avec « www.xxx.com/index.php/c/index/a/test/id/100 » comme ceci. Bien sûr, pour prendre en charge cela, vous devez modifier les paramètres dans « php » ? .ini'

'cgi.fix_pathinfo' est défini sur 1. Prenons 'www.xxx.com/index.php/c/index/a/test/id/100' comme exemple

echo $_SERVER['PATH_INFO'] //output'/; c /index/a/test/id/100'
Vous devez comprendre cela, vous pouvez analyser ce paragraphe et attribuer l'adresse réelle

3. Utilisez le mécanisme 404, en général Le pseudo -Les pages statiques ci-dessous sont toutes des pages qui n'existent pas réellement, vous pouvez donc utiliser la configuration Apache 404, mais il y a quelques problèmes, c'est-à-dire que les requêtes de type 'post' seront abandonnées, vous empêchant d'obtenir '$_POST'. ,

Mais '$_GET' peut toujours être obtenu, en supposant que la page 404 ici est '404page.php', la configuration d'Apache est la suivante :

ErrorDocument 404 /404page.php

Puis 'Le code suivant est intégré dans 404page.php'

header("HTTP/1.1 200 OK"); //这里一定要有,不然状态就是404
$reqUrl = $_SERVER['REQUEST_URI']; // 请求地址
/**
* 从URL中解析参数
*/
function parseUrlParams($queryUrl)
{
$arr = explode('?', $queryUrl);
parse_str($arr[1], $param);
if($param)
{
foreach($param as $key => $value)
{
$_GET[$key] = $value;
}
}
}
parseUrlParams($reqUrl); // url解析参数
//然后你就可以使用 $reqUrl 根据自己的规则匹配不同的实际请求地址
if(preg_match('#^/test.html#is', $reqUrl, $matches))
{
include('index.php');
die();
}

4. Une version améliorée de la méthode 3. La méthode 3 est équivalente à la redirection en interne mécanisme d'Apache, rendant les paramètres transmis par post (get) impossibles à obtenir. L'analyse de ce qui précède montre en fait que les fichiers concernés ne peuvent pas être trouvés. Lorsque le serveur ne trouve pas les fichiers pertinents, nous spécifions un fichier pour celui-ci. Si tout est OK, il n'est pas nécessaire de sauter à ce moment-là. ne sera pas perdu. La configuration d'Apache est la suivante :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule index.php

La signification générale de la configuration ci-dessus est que lorsque le fichier ou le répertoire demandé est introuvable, utilisez plutôt « index.php » dans le répertoire racine. Vous pouvez ensuite obtenir les paramètres pertinents dans « index.php » et analyser. à la demande réelle.

/**
* 获取当前请求的URI地址
*@param void
*@author painsOnline
*@return string URI
*/
function getReqUri()
{
return trim($_SERVER["REQUEST_URI"]);
}
$reqUri = getReqUri();
if(preg_match('/^\/test.html/isU', $reqUri))
{//解析请求地址
include 'test.php';
exit();
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn