2

実行前にフックしたい/または標準のコア機能を置き換えたい。たとえば、スクリプトへのアクセスとアクセスの両方を防止しますincluderequire余分な .dll なしで作成する方法はありますか? または、余分なクラスや関数の作成を避けるためis_array($myarr);に、フックする別のケースarray($myarr) === $myarr;(より高速に見える) があります。

Ps ともう 1 つの質問: しばらくしてからすべての php の実行を防ぐにはどうすればよいですか? php パーツを含む html テンプレートがあり<?=$myvar?>ます。スクリプトの終了時に短いシンタックスと実行をまったく防止したいのですが、何を試さなければなりませんか?

4

2 に答える 2

2

標準関数へのフックについて: 外部モジュールなしでそれを行う方法はありません。APD PECL モジュール がその役割を果たします。

rename_function('require', 'internal_require'); // saving reference to original function
override_function('require', '$filename', 
                  'print "require called"; internal_require($filename);');

2番目の質問はあまり明確ではありません。is_array標準関数、array()レキシカル コンストラクトまたは(array)型キャストにフックしますか?

PHP 解釈の停止について: __halt_compiler関数を参照してください。ただし、php の後続のブロックは HTML に埋め込まれているだけであることに注意してください (したがって、誰にでも表示されます)。

于 2012-07-29T14:57:18.047 に答える
0

機能を無効にする場合は、セーフ モードを使用できますが、非推奨であり、推奨されません。マッドフレンドが言うように、__halt_compiler はその下のすべてをテキストとして送信します。最も外側のスコープからのみ呼び出すことができることに注意してください。つまり、中括弧内 (if、ループ、関数など) ではありません。

于 2012-07-29T16:31:57.923 に答える