1--TEST--
2Test output_add_rewrite_var() function basic feature
3--SKIPIF--
4<?php if (!extension_loaded("session")) die("skip session support is not available"); ?>
5--INI--
6session.trans_sid_tags="a=href,area=href,frame=src,form="
7url_rewriter.tags="a=href,area=href,frame=src,form="
8--FILE--
9<?php
10	ob_start();
11// Common setting
12ini_set('url_rewriter.hosts', 'php.net,www.php.net');
13ini_set('session.trans_sid_hosts', 'php.net,www.php.net');
14ini_set('session.use_only_cookies', 0);
15ini_set('session.use_cookies', 0);
16ini_set('session.use_strict_mode', 0);
17session_id('testid');
18
19output_add_rewrite_var('<name>', '<value>');
20?>
21Without session
22<a href=""> </a>
23<a href="./foo.php"> </a>
24<a href="//php.net/foo.php"> </a>
25<a href="http://php.net/foo.php"> </a>
26<a href="bad://php.net/foo.php"> </a>
27<a href="//www.php.net/foo.php"> </a>
28
29<form method="get"> </form>
30<form action="./foo.php" method="get">
31<form action="//php.net/bar.php" method="get">
32<form action="http://php.net/bar.php" method="get">
33<form action="bad://php.net/bar.php" method="get">
34<form action="//www.php.net/bar.php" method="get">
35
36<?php
37ini_set('session.use_trans_sid', 0);
38session_start();
39output_add_rewrite_var('<name>', '<value>');
40?>
41Test use_trans_sid=0
42<a href=""> </a>
43<a href="./foo.php"> </a>
44<a href="//php.net/foo.php"> </a>
45<a href="http://php.net/foo.php"> </a>
46<a href="bad://php.net/foo.php"> </a>
47<a href="//www.php.net/foo.php"> </a>
48
49<form method="get"> </form>
50<form action="./foo.php" method="get"> </form>
51<form action="//php.net/bar.php" method="get"> </form>
52<form action="http://php.net/bar.php" method="get"> </form>
53<form action="bad://php.net/bar.php" method="get"> </form>
54<form action="//www.php.net/bar.php" method="get"> </form>
55
56<?php
57session_commit();
58ini_set('session.use_trans_sid', 1);
59output_reset_rewrite_vars();
60session_start();
61output_add_rewrite_var('<NAME>', '<VALUE>');
62?>
63Test use_trans_sid=1
64<a href=""> </a>
65<a href="./foo.php"> </a>
66<a href="//php.net/foo.php"> </a>
67<a href="http://php.net/foo.php"> </a>
68<a href="bad://php.net/foo.php"> </a>
69<a href="//www.php.net/foo.php"> </a>
70
71<form method="get"> </form>
72<form action="./foo.php" method="get"> </form>
73<form action="//php.net/bar.php" method="get"> </form>
74<form action="http://php.net/bar.php" method="get"> </form>
75<form action="bad://php.net/bar.php" method="get"> </form>
76<form action="//www.php.net/bar.php" method="get"> </form>
77--EXPECT--
78Without session
79<a href="?%3CNAME%3E=%3CVALUE%3E"> </a>
80<a href="./foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
81<a href="//php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
82<a href="http://php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
83<a href="bad://php.net/foo.php"> </a>
84<a href="//www.php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
85
86<form method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
87<form action="./foo.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" />
88<form action="//php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" />
89<form action="http://php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" />
90<form action="bad://php.net/bar.php" method="get">
91<form action="//www.php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" />
92
93Test use_trans_sid=0
94<a href="?%3CNAME%3E=%3CVALUE%3E"> </a>
95<a href="./foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
96<a href="//php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
97<a href="http://php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
98<a href="bad://php.net/foo.php"> </a>
99<a href="//www.php.net/foo.php?%3CNAME%3E=%3CVALUE%3E"> </a>
100
101<form method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
102<form action="./foo.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
103<form action="//php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
104<form action="http://php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
105<form action="bad://php.net/bar.php" method="get"> </form>
106<form action="//www.php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /> </form>
107
108Test use_trans_sid=1
109<a href="?PHPSESSID=testid&%3CNAME%3E=%3CVALUE%3E"> </a>
110<a href="./foo.php?PHPSESSID=testid&%3CNAME%3E=%3CVALUE%3E"> </a>
111<a href="//php.net/foo.php?PHPSESSID=testid&%3CNAME%3E=%3CVALUE%3E"> </a>
112<a href="http://php.net/foo.php?PHPSESSID=testid&%3CNAME%3E=%3CVALUE%3E"> </a>
113<a href="bad://php.net/foo.php"> </a>
114<a href="//www.php.net/foo.php?PHPSESSID=testid&%3CNAME%3E=%3CVALUE%3E"> </a>
115
116<form method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /><input type="hidden" name="PHPSESSID" value="testid" /> </form>
117<form action="./foo.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /><input type="hidden" name="PHPSESSID" value="testid" /> </form>
118<form action="//php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /><input type="hidden" name="PHPSESSID" value="testid" /> </form>
119<form action="http://php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /><input type="hidden" name="PHPSESSID" value="testid" /> </form>
120<form action="bad://php.net/bar.php" method="get"> </form>
121<form action="//www.php.net/bar.php" method="get"><input type="hidden" name="&lt;NAME&gt;" value="&lt;VALUE&gt;" /><input type="hidden" name="PHPSESSID" value="testid" /> </form>
122