Я бы хотел использовать переменную типа $ GET [name], которая всегда выводит безопасную для MySQL версию $ _GET [name], даже если значение $ GET [name] изменяется где-то в скрипте.
Итак:
$_GET[name] = "Timmy O'Toole";
echo $GET[name]; // Timmy O\'Toole
$_GET[name] = "Tommy O'Toole";
echo $GET[name]; // Tommy O\'Toole
Это выполнимо?Если нет, можете ли вы придумать какой-нибудь другой способ, который может работать, который не включает фактический вызов функции?(Я хотел бы иметь возможность использовать переменные внутри строк и автоматически оценивать их, а не выполнять много конкатенации.)
Обновление:
Я использовал версию решения Марио, и она, кажется, работает:
// Assume $_REQUEST['name'] = "Timmy O'Toole";
class request_safe_vars IMPLEMENTS ArrayAccess {
var $array = array();
function offsetGet($varname) {
return mysql_real_escape_string($_REQUEST[$varname]);
}
function offsetSet($name, $value) { }
function offsetUnset($name) { }
function offsetExists($name) { }
}
$REQUEST = new request_safe_vars();
$_REQUEST['name'] = $_REQUEST['name'].' MODIFIED';
$query = "SELECT id FROM user WHERE name = '{$REQUEST['name']}'";
// Query output:
// SELECT id FROM user WHERE name = 'Timmy O\'Toole MODIFIED'