Open main menu

Extensión:PHPTemplates

This page is a translated version of the page Extension:PHPTemplates and the translation is 29% complete.

Other languages:
English • ‎español • ‎polski • ‎日本語
MediaWiki extensions manual
OOjs UI icon advanced.svg
PHPTemplates
Release status: experimental
Implementación Tag
Descripción Allows execution of PHP code embedded in pages
Autor(es) Tim.landscheidttalk
Última versión 0.1dev
MediaWiki 1.19svn
PHP 5.2.13
Licencia GNU General Public License 3.0 or later
Descarga
phpcode
Translate the PHPTemplates extension if it is available at translatewiki.net
Verificar uso y versión de la matriz.

¿Qué hace esta extensión?

This extension allows you to embed white-listed PHP code in pages. Why the misnomer "PHPTemplates"? Because ultimately for reviewing code similar to Extension:FlaggedRevs , it would be nice to limit PHPTemplates's scope to templates starting with <?php. However, it is much easier at this time to plug into the MediaWiki parser via the general tag hook.

Uso

<phpcode>$a=$b+$c;echo($a);</phpcode>

That's all at this moment (yes, it will output "0"). The PHP grammar is rather complex, and trimming it down takes time.

Instrucciones de descarga

Please copy and paste the code found at GitHub and place it under $IP/extensions/PHPTemplates/.

$IP son las siglas de Installation Path, es decir, la ruta o directorio donde se ha instalado MediaWiki, el mismo directorio que contiene LocalSettings.php, index.php, etc..

Instalación

To install this extension, add the following to LocalSettings.php :

require_once("$IP/extensions/PHPTemplates/PHPTemplates.php");

Limiting your users' freedom

You can enhance PHPTemplates to somewhat cap the resources used. Duly note that enhancing in this context means amending the grammar and generating a new parser.

Validación

While parsing the source, you can count the number of statements and their levels of nesting and require that certain limits are not exceeded.

Runtime

Instead of just validating the source, you can amend it on the fly and transform for example:

while (true);

to:

while (wfAbortIfResourcesLimitExceeded () && (true));

There will probably be some bombs that cannot be guarded against this way, but it should cover most common mistakes.

Véase también