| 
<?php/**
 *          USER ENTERED  U R L  IS  R E Q U E S T
 * J:\awww\www\fwphp\glomodul\z_examples\03_test_parse_url.php
 * http://dev1:8083/fwphp/glomodul/z_examples/03_test_parse_url.php?i/SOME_METHOD/param1/PARAM1VALUE
 * U R L is page webadress,  i/SOME_METHOD/param1/PARAM1VAL are page parameters
 * in form key/keyvalue
 *
 * Routing is extract key and keyvalue pairs from  U R L (behind "?")
 * Dispatching is call SOME_METHOD in some Home_ctr of some module,
 * or if PATH/SOME_METHOD.PHP include this script
 *
 *   http://php.net/manual/en/ref.array.php
 */
 define('QS', '?'); //to avoid web server url rewritting  if (!defined('QS')) define( 'QS', '?' );
 define('DS', DIRECTORY_SEPARATOR);
 /**
 *           A D R E S S E S
 */
 $module_towsroot = '../../../' ; //eg to wsroot ='J:/awww/www/'
 // J:/awww/www/ :
 $wsroot_path = str_replace('\\','/', realpath($module_towsroot) .'/') ;
 $wsroot_url =  // http://dev1:8083/    //=URL_PROTOCOL or :
 ( (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://' )
 . filter_var( $_SERVER['HTTP_HOST'] //URL_DOM AIN  .$_SERVER['REQUEST_URI']
 .'/', FILTER_SANITIZE_URL ) ;
 
 // J:/awww/www/fwphp/glomodul/z_examples/ :
 $module_path = str_replace('\\','/', __DIR__.'/') ;
 // fwphp/glomodul/z_examples :
 $module_relpath = rtrim(str_replace($wsroot_path,'', $module_path),'/') ;
 //rtrim(ltrim($module_path, $wsroot_path),'/') ;
 
 // R E Q U E S T :
 // /fwphp/glomodul/z_examples/03_test_parse_url.php?i/SOME_METHOD/param1/PARAM1VALUE :
 //error on Linux : $REQUEST_URI = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING);
 //Error on win: $REQUEST_URI = filter_input($_SERVER['REQUEST_URI'], FILTER_SANITIZE_STRING);
 $REQUEST_URI = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL) ;
 
 $REQUEST_URI_arr = explode(QS, $REQUEST_URI) ;
 $module_relpath_requested = rtrim(ltrim(dirname($REQUEST_URI_arr[0]),'/'),'/');
 
 $REQUEST_URI_qrystring_arr = [] ;
 if (isset($REQUEST_URI_arr[1])) { //there is some key-value pairs  behind "?" char :
 // $REQUEST_URI_arr[1] is uri_qrystring
 $REQUEST_URI_qrystring_arr = explode('/', $REQUEST_URI_arr[1]) ;
 }
 
 
 $urlarr['module_towsroot'] = $module_towsroot ; //eg '../../../'
 
 $urlarr['_____wsroot_path_label']='str_replace(\'\\\',\'/\', realpath($module_towsroot) .\'/\') ' ;
 $urlarr['wsroot_path']     = $wsroot_path ;
 
 $urlarr['_____wsroot_url_label'] = 'From HTTPS, HTTP_HOST' ;
 $urlarr['wsroot_url']      = $wsroot_url ;
 
 $urlarr['_____module_path_label'] = 'str_replace(\'\\\',\'/\', __DIR__.\'/\')' ;
 $urlarr['module_path']     = $module_path ;
 
 $urlarr['_____module_relpath_label']  = 'rtrim(str_replace($wsroot_path,\'\', $module_path,\'/\')' ;
 $urlarr['module_relpath'] = $module_relpath ;
 
 $urlarr['_____module_url_label'] =  '$wsroot_url.$module_relpath.\'/\'' ;
 $urlarr['module_url']       =  $wsroot_url.$module_relpath.'/' ;
 // R E Q U E S T :
 $urlarr['_____module_relpath_requested_label'] = 'rtrim(ltrim($REQUEST_URI_arr[0],\'/\'),\'/\')' ;
 $urlarr['module_relpath_requested']  = $module_relpath_requested ;
 
 
 // REQUEST_URI_qrystring_arr=[key1,val1, key2,val2...]
 // transform to $uriq=[key1=>val1,...] pairs :
 //Next statement means url is module's url and we call home() method in Home_ctr :
 $uriq = ['i' => 'home'] ; //$uriq = [] ;
 
 for ( $ii = 0 ; //expr1 executed once unconditionally at loop begin. Or: ,$x=1,...
 $ii < count($REQUEST_URI_qrystring_arr) ; //expr2 is evaluated at iteration begin
 $ii++ ) : //expr3 is evaluated at iteration end
 {
 if (isset($REQUEST_URI_qrystring_arr[$ii + 1])) {
 $uriq[$REQUEST_URI_qrystring_arr[$ii]] = $REQUEST_URI_qrystring_arr[++$ii] ;
 }
 } endfor;
 ?>
 
 
 
 <!DOCTYPE HTML>
 <html lang="hr-HR"><head><title>EXAMPLES</title><meta charset="utf-8">
 <link rel="shortcut icon" href="/zinc/img/favicon.ico">
 <!--link type="text/css" rel="stylesheet" media="all" href="/zinc/themes/simplest.css" /-->
 <style></style><!--script src="utl_inc.js"></script-->
 </head>
 
 <body>  <b>Tests parse URLqueryString (in URL after "?")</b>
 
 <!--              2. izbornik 2.redak (Banner)                -->
 <div id="hMenu">
 
 <a href="?i/SOME_METHOD/param1/PARAM1VALUE"
 title=''>
 <?php
 if ($uriq['i'] == 'home') {
 echo 'ctr, akc, one akcparam are in URL';
 } else { echo '<b>ctr, akc, one akcparam are in URL--- THIS LINK WAS CLICKED</b>'; } ?>
 </a>
 <br />http://dev1:8083/fwphp/glomodul/z_examples/03_test_parse_url.php?QRY
 <br />B12phpfw QRY  =i/SOME_METHOD/param1/PARAM1VALUE
     <b>i means "include script or call Home_ctr method"</b>
 <br />Orher fw-s QRY=ctrclassname/actmethodname/param1value/
 
       <br /><br />
 <a href="?"
 title=''>
 <?php
 if ($uriq['i'] == 'home') {
 echo '<b>No ctr, akc, akcparams in URL --- THIS LINK WAS CLICKED</b>';
 } else { echo 'No ctr, akc, akcparams in URL'; } ?>
 </a>
 
 
 
 <h3>REQUEST (U R L) query string IS NOT  ctr, akc, firstakcparamValue...</h3>
 <pre>
 1. $REQUEST_URI = <?php print_r($REQUEST_URI); ?><br />
 =filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL)
 
 2. $urlarr = <?php print_r($urlarr); ?>
 
 3. $REQUEST_URI_qrystring_arr = <?php print_r($REQUEST_URI_qrystring_arr); ?>
 
 4. Transformed REQUEST_URI_qrystring_arr is $uriq = <?php print_r($uriq); ?>
 
 </pre>
 
 
 <h3>We call Home_ctr method in $uriq['i']</h3>
 IF NEXT TWO RELPATHS ARE NOT EQUAL then called method is in some other module Home_ctr (in some other dir) :
 <pre>
 $urlarr['module_relpath']           =<?php print_r($urlarr['module_relpath']); ?>
 <br />
 $urlarr['module_relpath_requested'] =<?php print_r($urlarr['module_relpath_requested']);?>
 <!-- /*parse_url($uri)=Array
 (
 [scheme] => http
 [host] => dev1
 [port] => 8083
 [path] => /
 ) */ -->
 </pre>
 
 
 
 <pre>
 ERROR :
 http://phporacle.eu5.net/fwphp/glomodul/z_examples/03_test_parse_url.php?i/SOME_METHOD/param1/PARAM1VALUE
 
 
 1. $REQUEST_URI =
 2. $urlarr = Array
 (
 [module_towsroot] => ../../../
 [_____wsroot_path_label] => str_replace('\','/', realpath($module_towsroot) .'/')
 [wsroot_path] => /srv/disk16/3266814/www/phporacle.eu5.net/
 [_____wsroot_url_label] => From HTTPS, HTTP_HOST
 [wsroot_url] => http://phporacle.eu5.net/
 [_____module_path_label] => str_replace('\','/', __DIR__.'/')
 [module_path] => /srv/disk16/3266814/www/phporacle.eu5.net/fwphp/glomodul/z_examples/
 [_____module_relpath_label] => rtrim(str_replace($wsroot_path,'', $module_path,'/')
 [module_relpath] => fwphp/glomodul/z_examples
 [_____module_url_label] => $wsroot_url.$module_relpath.'/'
 [module_url] => http://phporacle.eu5.net/fwphp/glomodul/z_examples/
 [_____module_relpath_requested_label] => rtrim(ltrim($REQUEST_URI_arr[0],'/'),'/')
 [module_relpath_requested] =>
 )
 
 3. $REQUEST_URI_qrystring_arr = Array
 (
 )
 
 4. Transformed REQUEST_URI_qrystring_arr is $uriq = Array
 (
 [i] => home
 )
 
 
 
 We call Home_ctr method in $uriq['i']
 IF NEXT TWO RELPATHS ARE NOT EQUAL then called method is in some other module Home_ctr (in some other dir) :
 
 $urlarr['module_relpath']           =fwphp/glomodul/z_examples
 
 $urlarr['module_relpath_requested'] =
 
 
 
 
 
 </pre>
 
 
 
 
 </div>
 
 
 
 
 
 <?php
 echo '<br /><br /><hr />'; include(dirname(dirname(dirname(__DIR__))) .'/zinc/showsource.php');
 |