4 votes

PHP - Fonction GetSQLValueString

Je vois une fonction GetSQLValueString et je ne sais pas de quoi il s'agit, quelqu'un pourrait-il me donner une idée ?
Merci.

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;
}

La fonction utilisée ici :

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")); 
...

6voto

Dan Grossman Points 31514

Votre fonction échappe la chaîne de caractères en utilisant la fonction intégrée d'échappement des chaînes de caractères de MySQL, puis, s'il s'agit d'une valeur non numérique, en l'entourant de guillemets simples. Cette fonction a été écrite pour insérer des données variables dans des requêtes SQL.

$sql = "SELECT * FROM users WHERE username = " . GetSQLValueString($_GET['username'], 'text');
$result = mysql_query($sql);

1voto

RageZ Points 15212

D'après ce que j'ai compris, cette fonction sert probablement à échapper certaines données pour les transmettre à MySQL. La fonction gère également les valeurs nulles et met des guillemets si nécessaire.

il devrait être utilisé de cette façon

GetSQLValueString("a value that I want to escape's", 'text');

voir le Injection SQL problème pour comprendre pourquoi cette fonction existe

1voto

Je suppose que votre problème est lié à la question mysqli_. Vous devez changer tous les mysql_ a mysqli_ et ajoutez la connexion à la base de données comme premier paramètre. Dans mon cas, la connexion à la base de données est $conn_vote . Sachez que j'ai ajouté $conn comme paramètre de la fonction :

 function GetSQLValueString($conn_vote, $theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

      $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($conn_vote, $theValue) : mysqli_escape_string($conn_vote, $theValue);`enter code here`

      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;
    }
    } 

`

0voto

Saleh Abdulaziz Points 1029

Remplacez simplement ces lignes

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($theValue) : mysql_escape_string($theValue);

avec

global $Data;
$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($Data, $theValue) : mysql_escape_string($theValue);

-1voto

Shameer Points 1730

Cette fonction renvoie une chaîne entre guillemets spécifique au type de données. Ceci est utilisé pour éviter l'injection sql.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X