Flucht-Variablen in ein array und zuweisen entgangen Werte zu den ursprünglichen Variablen Wert dynamisch

Ich normalerweise nur verwenden mysql_real_escape_string auf alle Variablen vor dem einsetzen meiner Datenbank, so zum Beispiel:

    $first_name = mysql_real_escape_string($first_name); //Bill
    $last_name  = mysql_real_escape_string($last_name);  //O'Rielly
    $email      = mysql_real_escape_string($email);      //[email protected]

    $insert = mysql_query("
                  INSERT INTO `users` (first_name, last_name, email)
                  VALUES ('$first_name', '$last_name', '$email')
              ") or die(mysql_error());

Aber auf einige Formen, die ich konnte haben vielleicht 20 verschiedene Variablen, die ich will, zu entkommen, so hoffte ich, es war ein Weg, ich könnte ein array verwenden, führen Sie es durch eine Funktion zu entfliehen jeder. Dann stellen Sie die ursprünglichen Variablen ($first_name, $last_name, $email) haben den Wert der Escape-string aus dem array. Ich kam mit der folgenden, aber das ist so weit wie ich bekommen haben.

    $form_array = array($first_name, $last_name, $email);

    print_r($form_array);
    echo("<br />".$last_name."<br />");

    function cleanInput($array) {
        return array_map('mysql_real_escape_string', $array);
    }

    $clean_array = cleanInput($form_array); 

    print_r($clean_array);
    echo("<br />".$clean_array[1]."<br />");

Welche Ausgänge die folgende:

    Array ( [0] => Bill [1] => O'Rielly [2] => [email protected] ) 
    O'Rielly
    Array ( [0] => Bill [1] => O\'Rielly [2] => name@domain.com ) 
    O\'Rielly

So, wir können sehen, dass es die Flucht richtig, aber da bin ich überfragt mit der ganzen macht $first_name haben den Wert $clean_array[0], $last_name haben den Wert $clean_array[1] etc.

Ich weiß, natürlich könnte ich einfach schreiben:

    $first_name = $clean_array[0];
    $last_name = $clean_array[1];

Aber irgendwie macht es sinnlos, mit diesem array/Funktion dort überhaupt, da könnte ich genauso gut entkommen jede variable/string getrennt wie ich es immer getan habe. Ich hatte gehofft, es war ein Weg, ich könnte eine Art Schleife in die Funktion zu tun, diese dynamisch, je nach dem, was in dem array.

Weil dann, wenn es darum geht zu tun, Validierung in der Zukunft kann ich nur

  • Weisen alle $_POST Daten an Variablen
  • Setzen Sie Variablen in ein array
  • Führen Sie das array über die Funktion und alle original $_POST-Variablen haben nun den entgangenen Wert aus der Funktion
  • Verwenden Sie die insert-Methode am Anfang erwähnt mit dem ursprünglichen Namen der Variablen $first_name, $last_name etc.

Dann eher:

    $insert = mysql_query("
                  INSERT INTO `users` (first_name, last_name, email)
                  VALUES ('$clean_array[0]', '$clean_array[1]', '$clean_array[2]')
              ") or die(mysql_error());

Ist das möglich?

Update

Von hakre die post über die compact und extract Funktionen, ich habe mir jetzt kommen mit dem folgenden:

    $array = compact(array("first_name", "last_name", "email"));
    echo("<strong>Before:</strong><br />First Name: ".$first_name."<br />Last Name: ".$last_name."<br />Email: ".$email."<br /><br />");

    extract(array_map('mysql_real_escape_string', $array), EXTR_OVERWRITE);
    echo("<strong>After:</strong><br />First Name: ".$first_name."<br />Last Name: ".$last_name."<br />Email: ".$email."");

Welche Ausgänge die folgenden Angaben, wie ich es gerne hätte:

Vor:

Vorname: Bill

Nachname: O'Rielly

E-Mail: [email protected]

Nach:

Vorname: Bill

Nachname: O\'Rielly

E-Mail: [email protected]

Habe ich versucht, indem extract in eine Funktion, aber es funktioniert nicht das gleiche?

    function cleanInput($array) {

        $clean_array = extract(array_map('mysql_real_escape_string', $array), EXTR_OVERWRITE);
        return $clean_array;

    }

    $array = compact(array("first_name", "last_name", "email"));
    echo("<strong>Before:</strong><br />First Name: ".$first_name."<br />Last Name: ".$last_name."<br />Email: ".$email."<br /><br />");

    cleanInput($array);
    echo("<strong>After:</strong><br />First Name: ".$first_name."<br />Last Name: ".$last_name."<br />Email: ".$email."");

Ich bin mir sicher, dass ich zurückkehren muss, die extrahieren-Funktion, aber ich habe versucht ein paar verschiedene Dinge, und es ist entweder nicht zu geben, jede Ausgabe oder $last_name ist nur den Druck des unescaped Wert.

InformationsquelleAutor no. | 2011-11-06
Schreibe einen Kommentar