Rev Author Line No. Line
250 kaklik 1 <?php
2 /* $Id: sqlvalidator.lib.php,v 2.3 2005/10/08 15:17:42 nijel Exp $ */
3 // vim: expandtab sw=4 ts=4 sts=4:
4  
5  
6 /**
7 * SQL Validator interface for phpMyAdmin
8 *
9 * Copyright 2002 Robin Johnson <robbat2@users.sourceforge.net>
10 * http://www.orbis-terrarum.net/?l=people.robbat2
11 *
12 * This function uses the Mimer SQL Validator service
13 * <http://developer.mimer.com/validator/index.htm> from phpMyAdmin
14 *
15 * Copyright for Server side validator systems:
16 * "All SQL statements are stored anonymously for statistical purposes.
17 * Mimer SQL Validator, Copyright 2002 Upright Database Technology.
18 * All rights reserved."
19 *
20 * All data is transported over HTTP-SOAP
21 * And uses the PEAR SOAP Module
22 *
23 * Install instructions for PEAR SOAP
24 * Make sure you have a really recent PHP with PEAR support
25 * run this: "pear install Mail_Mime Net_DIME SOAP"
26 *
27 * Enable the SQL Validator options in the configuration file
28 * $cfg['SQLQuery']['Validate'] = TRUE;
29 * $cfg['SQLValidator']['use'] = FALSE;
30 *
31 * Also set a username and password if you have a private one
32 */
33  
34  
35 // We need the PEAR libraries, so do a minimum version check first
36 // I'm not sure if PEAR was available before this point
37 // For now we actually use a configuration flag
38 if ($cfg['SQLValidator']['use'] == TRUE) {
39 require_once('./libraries/sqlvalidator.class.php');
40 } // if ($cfg['SQLValidator']['use'] == TRUE)
41  
42  
43 /**
44 * This function utilizes the Mimer SQL Validator service
45 * to validate an SQL query
46 *
47 * <http://developer.mimer.com/validator/index.htm>
48 *
49 * @param string SQL query to validate
50 *
51 * @return string Validator result string
52 *
53 * @global array The PMA configuration array
54 */
55 function PMA_validateSQL($sql)
56 {
57 global $cfg;
58  
59 $str = '';
60  
61 if ($cfg['SQLValidator']['use']) {
62 if (isset($GLOBALS['sqlvalidator_error'])
63 && $GLOBALS['sqlvalidator_error']) {
64 $str = sprintf($GLOBALS['strValidatorError'], '<a href="./Documentation.html#faqsqlvalidator" target="documentation">', '</a>');
65 } else {
66 // create new class instance
67 $srv = new PMA_SQLValidator();
68  
69 // Checks for username settings
70 // The class defaults to anonymous with an empty password
71 // automatically
72 if ($cfg['SQLValidator']['username'] != '') {
73 $srv->setCredentials($cfg['SQLValidator']['username'], $cfg['SQLValidator']['password']);
74 }
75  
76 // Identify ourselves to the server properly...
77 $srv->appendCallingProgram('phpMyAdmin', PMA_VERSION);
78  
79 // ... and specify what database system we are using
80 $srv->setTargetDbms('MySQL', PMA_MYSQL_STR_VERSION);
81  
82 // Log on to service
83 $srv->start();
84  
85 // Do service validation
86 $str = $srv->validationString($sql);
87 }
88  
89 } // end if
90  
91 // Gives string back to caller
92 return $str;
93 } // end of the "PMA_validateSQL()" function
94  
95 ?>