PHP 高速 URL 書き換え更新版 [PHP 5.30 以降が必要]_PHP チュートリアル
Apache の rewrite モジュールを開いて設定することは、この記事の主題ではありません。詳細な説明については、他の記事を参照してください。
このクラスは、以前のバージョン (別のクラス) から高速リダイレクトの特性を継承しています。 、すべて静的 Call を使用します)、他の URL のモジュールを呼び出すことができる非常に重要な関数と属性を追加します。これにより、モジュールとモジュール間、またはページ間での関数の共有が簡素化されます。
RewriteEngine on
RewriteRule !。 (js|ico |gif|jpg|png|css|swf|htm|txt)$index.php
php_flag magic_quotes_gpc オフ
php_flag register_globals オフ
#------------- .htaccess end - --- -----------
書き換え:: __config(
$config['path'],/*'http:///xxxxx/mysite/'URL ベースの場所*/
$config['md_path'],/*'c:/phpsite/www/mysite/modules /'モジュールファイルの物理ディレクトリ*/
array(
'phpinfo'
)
);
Rewrite::__parse();
//.....
testPk.php
class Rw_testPk extends Rewrite {
//これは、testpk ページにアクセスしている限り、主要な関数です。このページ内の関数のアクセス許可、またはこのページのグローバル変数を制御するために使用できます
public static function init() {
//if (!define('SITE_PASS')){
echo self::$ linktag.'
';//self::$linktag はページ解析の場所のパス値で、よく使用されます
//}
}
//「http://」にアクセスするときに実行されます。 localhost/testpk/"
public static functionindex(){
echo 'test';
}
//アクセスすると、「http://localhost/testpk/blank」が実行されるか、「http://localhost/」として書き込まれますtestpk/index/blank" 通常「index/」は省略可能
public static functionblank(){}
}
?>
class Rewrite{
public static $debug = false;//デバッグを有効にするかどうか
public static $time_pass = 0;//モジュールファイルの全体的な実行時間を取得する
public static $version = 2.2;
public static $pretag = 'Rw_';//モジュールファイルクラスの名前プレフィックス
public static $linktag = 'index';//ページリンクタグは、どのリンクが解析されるかをマークするために使用され、さまざまなメニュー効果とリンク アクセスの制御に使用されます 権限
protected static $time_start = 0;
protected static $physical_path = '';// モジュール ファイルの物理パス
protected static $website_path = '';//モジュール ファイルのサイト パス。http://localhost/site/mysite
protected static $ob_contents = ''; protected static $uid = 0;//http://localhost/423/ などの個人ホームページのアクセス方法に従って、http://localhost/profile?uid=423 にアクセスします
//許可されたシステム関数が$allow_sys_fun=array('phpinfo') の場合、http://localhost/phpinfo または http://localhost/..../phpinfo が phpinfo を直接実行すると、システムはリンクから phpinfo コンテンツへのアクセスを許可します。関数、phpinfo.php モジュール ファイルは必要ありません
private static $allow_sys_fun = array();
private static function __get_microtime(){
list($usec, $sec) =explode(" ",microtime()); ((float)$usec + (float)$sec);
}
//デバッグを設定する Rewrite:: __debug(true);
static::$debug = $ d;
}
//設定パスと許可される関数
public static function __config($website_path = '',$physical_path = '',$allow_sys_fun = array()){
self::$physical_path = $physical_path; ::$website_path = $website_path;
self::$allow_sys_fun = $allow_sys_fun;
//デバッグ関数
public static function __msg($str){
if(static::$debug){
echo "nn".print_r($str,true)."nn";
}
}
//開始時刻の解析
public static function __start(){
self::$time_start = self:: __get_microtime();
}
//終了時刻を解析する
public static function __end($re = false){
self::$time_end = self::__get_microtime(); :$time_end - self::$time_start),6) * 1000;
if($re){
return self::$time_pass;
}else{
self::__msg('PASS_TIME: '.self::$ time_pass.' ms');
}
}
//test1 のように、文 Rwrite::__parseurl('/test2/show') が実行されると、 test2.php モジュール ページの show メソッド (Rw_test2 クラスのメソッド) が呼び出されます。
public static function __parseurl($url = '' ,$fun = '',$data = NULL){
if(!empty ($url)&&!empty($fun)){
$p = static::$physical_path;
if(file_exists($p.$ url) || file_exists($p.$url.'.php') ) {
$part = strto lower(basename( $p.$url , '.php' ));
static::$linktag = $part.$fun;
$fname = static::$pretag.$部分;
if(class_exists($fname, false)){
if(method_exists($fname,$fun)){
return $fname: :$fun($data)
}
}else{
include( $ p.$url );
if( class_exists($fname, false) && Method_exists($fname,$fun)){
return $fname: :$fun($data);
}
}
}
}
//コア リンク解析関数 Rwrite::__parse(); は、トップレベルの書き換えコア方向ターゲット Index.php で実行されます。これは、Rwrite の定義書き換えが有効であることを意味します
public static function __parse($Url = '' ){
$p = static::$physical_path;
$req_execute = false ; $_SERVER[' REQUEST_URI'] : $Url;
$local = parse_url($url_p);
$req_path = preg_req('| [^w/.\]|','',$req ['パス']);
$req_para = empty($Url) ? strstr($_SERVER['SERVER_NAME'],'.',true) : 'www'; _SERVER['SERVER_NAME'],'.') == 2 && $req_para != 'www'){
self::__goto($req_para,preg_replace( '|^'.$local['path'].'| ',"",$req_path));
return ;
}else{
$req_path_arr = empty($req_path)?array():preg_split("| [/\]+|",preg_replace('|^'. $local['path'].'|',"",$req_path));
$req_fun = array_pop($req_path_arr)
if(substr( $req_fun,0,2)=='__'); $req_fun = substr($req_fun,2);
$req_path_rearr = array_filter($req_path_arr);
$ req_temp = implode('/',$req_path_rearr); = $req_temp.'/'.$req_fun;
if(!empty($req_fun)&&in_array($req_fun,static::$allow_sys_fun)){
$ req_fun()
}else{
if(!empty($ req_fun)&&file_exists($p.$fname.'.php') ){
include( $p.$fname.'.php' );
}else {
$fname = empty($req_temp) : $req_temp;
if(file_exists($p.$fname.'.php') ){
include( $p.$fname.'.php' ) ;
$fname = $req_temp.'/index ';
if(file_exists($p.$fname.'.php')){
include( $p.$fname.'.php' );else{
//この場所は、「個人ホームページ」への特別なリンクを「profile/」に誘導します。自分で変更できます
//例: www.xxx.com/12/ は、www.xxx.com/ profile を意味します/?uid=12 または www.xxx.com/profile?uid=12
$uid = is_numeric($req_temp) ? $req_temp : strstr($req_temp, '/', true); ) ? 'インデックス' : strstr($req_temp, '/');
if(is_numeric($uid)){
if(!isset($_GET['uid']) ) $_GET['uid'] = $uid;
$fname = 'profile/'.$ufun
if(file_exists($p.$fname.'.php')){
include( $p.$ fname .'.php' );
}else{
header("location:".$w);
}
}else if(file_exists($p.'index.php')){
$ fname = 'index';
}else("location:".$w);
}
}
}
$ ev_fname = strrpos($fname,'/')===false ? $fname : substr($fname,strrpos($fname,'/')+1);
$ev_fname = static::$pretag.$ev_fname ;
if( class_exists($ev_fname, false) && method_exists($ev_fname,$req_fun)){
static::$linktag = $req_fun=='index' $fname.'/' : $fname.'/' . $req_fun;
if($req_fun != 'init' && method_exists($ev_fname,'init')){
$ev_fname::init();
$ev_fname::$req_fun(); ( class_exists($ev_fname, false) && Method_exists($ev_fname,'index') ){
static::$linktag = $fname.'/'
if(method_exists($ev_fname,'init')){
$ ev_fname::init();
}
$ev_fname::index();
}else if( $fname != 'index' && class_exists(static::$pretag.'index', false) && method_exists(static : :$pretag.'index','index') ){
$ev_fname = static::$pretag.'index';
static::$linktag = 'index/'
if(method_exists($ev_fname,' init) ')){
$ev_fname::init();
$ev_fname::index();
}else{
}
}
}
self ::__end();
}
//ここでは、xiaoming.baidu.com などのユーザー定義リンク (データベースに保存された解析値) を解析します
//データベース内の xiaoming タグは、 www.baidu.com/blog?uid=12 または www.baidu.com/blog?uname=xiaoming (これはデータベースの設計方法によって異なります)
public static function __goto($para = ' ',$path = ' '){
$w = static::$website_path;
if(empty($para)){
exit('不明なリンク、解析に失敗しました、アクセスできません')
}
if( class_exists('Parseurl')) {
$prs = Parseurl::selectone(array('tag','=',$para))
if(!empty($prs); )){
$parastr = $prs['tag'];
$output = array();
$_GET[$prs['idtag']] = $prs['id']; 'parastr'], $output );
$_GET = array_merge($_GET,$output);
$path = $prs['type'].'/'.preg_replace('|^/'.$prs[' type'].'|' ,'',$path);
self::__msg($path);
header('location:'.$w.$path.'?'.http_build_query($_GET));
exit();
header("location:".$w);
}else{
exit(); }
}
}
?
http://www.bkjia.com/PHPjc/321736.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321736.html
技術記事
Apache の書き換えモジュールを開いて設定することは、この記事の主題ではありません。詳細な説明については、他の記事を参照してください。このクラスは、PHP 5.30 以降のバージョンでのみ使用でき、以前のバージョンの高速リダイレクトを継承しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Dreamweaver Mac版
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
