Я вижу функцию GetSQLValueString, и я не знаю, с чем это связано, может кто-нибудь дать мне какую-то идею?
спасибо вам
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; }
Используемая здесь функция:
if (isset($_POST['username'])) { $loginUsername=$_POST['username']; $password=$_POST['password']; $MM_fldUserAuthorization = ""; $MM_redirectLoginSuccess = "main.php"; $MM_redirectLoginFailed = "login_form.php"; $MM_redirecttoReferrer = false; mysql_select_db($database_connection1, $connection1); $LoginRS__query=sprintf("SELECT username, password FROM member WHERE username=%s AND password=%s", GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); ...
Ваша функция ускользает от строки, используя встроенную функцию стирания строки MySQL, а затем, если это нечисловое значение, окружающее его в одинарных кавычках. Эта функция была написана для вставки переменных данных в SQL-запросы.
$sql = "SELECT * FROM users WHERE username = " . GetSQLValueString($_GET['username'], 'text'); $result = mysql_query($sql);
По моему мнению, эта функция, вероятно, позволяет избежать некоторых данных, чтобы передать их MySQL. Функция также обрабатывает нулевые значения и при необходимости помещает некоторые кавычки.
его следует использовать таким образом
GetSQLValueString("a value that I want to escape's", 'text');
см. проблему SQL-инъекции, чтобы понять, почему эта функция существует
Эта функция возвращает конкретную строку данных типа данных. Это используется, чтобы избежать инъекции sql.