Just to clarify...
session.use_trans_sid does NOT need to be enabled in order for output_add_rewrite_var() to work.
output_add_rewrite_var
(PHP 4 >= 4.3.0, PHP 5)
output_add_rewrite_var — Ajoute une règle de réécriture d'URL
Description
$name
, string $value
)Cette fonction ajoute une nouvelle paire nom/valeur au mécanisme de réécriture d'URL. Le nom et la valeur sera ajouté aux URL (en tant que paramètre GET) et aux formulaires (en tant que champs cachés) de la même façon que pour les identifiants de session lorsque la réécriture d'URL est activée avec session.use_trans_sid. Notez que les URL absolues, telles http://example.com/, ne sont pas réécrites.
Ce comportement est contrôlé par l'option url_rewriter.tags du php.ini.
Note: L'appel à cette fonction démarre implicitement la tamporisation de sortie si elle n'est pas déjà activée.
Liste de paramètres
-
name -
Le nom de la variable.
-
value -
La valeur de la variable.
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec output_add_rewrite_var()
<?php
output_add_rewrite_var('var', 'value');
// Quelques liens
echo '<a href="file.php">link</a>
<a href="http://example.com">link2</a>';
// un formulaire
echo '<form action="script.php" method="post">
<input type="text" name="var2" />
</form>';
print_r(ob_list_handlers());
?>
L'exemple ci-dessus va afficher :
<a href="file.php?var=value">link</a>
<a href="http://example.com">link2</a>
<form action="script.php" method="post">
<input type="hidden" name="var" value="value" />
<input type="text" name="var2" />
</form>
Array
(
[0] => URL-Rewriter
)
Voir aussi
- output_reset_rewrite_vars() - Annule la réécriture d'URL
- ob_flush() - Envoie le tampon de sortie
- ob_list_handlers() - Liste les gestionnaires d'affichage utilisés
For a completely valid XHTML document you have to set the arg_separator, use this before you use output-add-rewrite-var:
<?php
ini_set('arg_separator.input', '&');
ini_set('arg_separator.output', '&');
?>
As a small side note, when there are values in the output_add_rewrite_var() function, these values are applied to all dynamic addresses (with in the limits posted above), including addresses that already have that variable set.
Example:
<?
output_add_rewrite_var("page", "admin");
echo '<a href="?a=signup&page=home">Signup</a>';
?>
The above will output the following:
<a href="?a=signup&page=home&page=admin">Signup</a>
However, this is easy to get around, using output buffering inside of output buffering. Because in my case, I couldn't remove the rewrite variable, as I have no idea if the next address would need it or not.
This function also adds a parameter to <input type="image"> fields!
Example:
This code:
<?
output_add_rewrite_var ('var','value');
echo '<form action="" method="post">
<input type="image" src="image.jpg" alt="go">
</form>';
?>
will output something like this:
<form action="" method="post">
<input type="hidden" name="var" value="value">
<input type="image" src="image.jpg?var=value" alt="go">
</form>
