====== ADOdb Proxy Server ====== This functionality is deprecated as of ADOdb 5.21.0 and will be removed in 5.22.0. It could be reinstated, if the community contributes with necessary security enhancements, [[https://github.com/ADOdb/ADOdb/pull/444|as discussed on Github]]. ===== Introduction ===== The ADOdb Proxy server provides a simple method of extending a database connection to provide a simple REST server via http. It provides a limited number of ADOdb commands that can be executed across an http channel against any supported database. **Security warning - use with extreme caution !** Depending on how it is setup, this feature can potentially expose the database to attacks, particularly if used with a privileged user account. ===== Server Side Usage ===== * The machine that acts as a database server must have a PHP configuration installed that allows it to serve PHP connections to the necessary database. * The http server must have a CGI configuration defined that allows it to serve PHP requests. * A single program is provided that acts as a server side dispatcher, **//server.php//**. Up to ADOdb version 5.21, this program cannot be moved from the /adodb directory. This program must be modified in-situ to provide the database connection necessary. Modify the server.php as required to provide a database connection /* * Define the IP address you want to accept requests from * as a security measure. If blank we accept anyone */ $ACCEPTIP = '192.168.0.65'; /* * Connection parameters */ $driver = 'mysqli'; $host = 'localhost'; $uid = 'proxy'; $pwd = 'proxy'; $database = 'employees'; ===== Client Side Usage ===== Configuration of the client side differs only slightly from the normal ADOdb configuration. For information about the client side driver, see [[v5:database:proxy|Proxy Client]] include '../adodb-master/adodb.inc.php'; /* * We must manually include the driver that is used on the server side. This is * so that database specific objects can be correctly interpreted on the client * side */ include '../adodb-master/drivers/adodb-mysqli.inc.php'; $db = ADOnewConnection('proxy'); /* * Connection honors $ADODB_FETCH_MODE, but not $db->setFetchMode(); */ $ADODB_FETCH_MODE = ADODB_FETCH_NUM; /* * define a connection directly to the server program */ $url = 'http://192.168.1.109/adodb-master/server.php'; /* * Create a connection */ $db->connect($url); /* * Create an SQL command */ $sql = "SELECT * FROM employees"; /* * Execute and treat exactly the same as a normal ADOdb result set */ $result = $db->selectLimit($sql,1,10); while ($r = $result->fetchRow()) print_r($r); ===== Limitations ===== * Access currently limited to http protocol * No access to meta functions * No rollback or transactional control * No parameter binding allowed * server.php must be modified in-situ