web-dev-qa-db-fra.com

Qu'est-ce que le PHP la fonction "test_input ()" faire?

Je sais que je serai rejeté, mais je dois demander. Que signifie le code ci-dessous? Plus précisément, je suis confus par 

if (empty($_POST["comment"])) { $comment = ""; 

Cela signifie-t-il que si l'utilisateur n'a pas inséré ses commentaires, le champ pour lequel la valeur est "$ comment" sera vide? Et si l'utilisateur a inséré un commentaire, la valeur "$ comment" sera transmise à la fonction test_input? J'ai consulté le site Web de w3schools mais je ne suis pas le plus sage. Il est incroyable qu'aucun site Web ne décrive même ce que test_input fait, et croyez-moi, j'ai consulté des dizaines de sites Web. En fait, je ne suis pas le seul SO utilisateur à penser que test_input est une fonction mystérieuse.

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    echo 'posted';
    if (empty($_POST["comment"])) {
        $comment = "";
    } else {
        $comment = test_input($_POST["comment"]);
    }
6
user3972671

test_input est une fonction définie par l'utilisateur et non une fonction intégrée à PHP. En regardant le code, cela signifie en effet que si aucun commentaire n'a été inséré, il sera vide. Toutefois, s'il n'est pas vide, exécutez le commentaire via la fonction test_input.

Sur cette page http://www.w3schools.com/php/php_form_validation.asp nous pouvons voir où ils ont déclaré la fonction test_input, plus précisément cette partie de la page

<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Disons par exemple que chaque commentaire que vous avez fait que vous vouliez mettre une date et un horodatage à la fin, le code suivant permettrait d'atteindre cet objectif.

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
     echo 'posted';

     if (empty($_POST["comment"]))
     {
         $comment = "";
     }
     else
     {
        $comment = add_date($_POST["comment"]);
     }
 }

 function add_date($comment)
 {
      return $comment . date('d-m-Y G:i:s');
 }

Donc, si l'utilisateur a entré Hello this is a comment, $comment serait maintenant Hello this is a comment 28-11-2014 16:00:00

Donc pour finaliser, test_input est simplement un nom de fonction créé par w3schools et ils l’utilisent chaque fois que la page fait référence à un type quelconque de validation d’entrée, etc. 

9
The Humble Rat

test_input() est une fonction définie par l'utilisateur utilisée par w3schools :

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

Par exemple:

<?php
  // define variables and set to empty values
  $name = $email = $gender = $comment = $website = "";

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = test_input($_POST["name"]);
    $email = test_input($_POST["email"]);
    $website = test_input($_POST["website"]);
    $comment = test_input($_POST["comment"]);
    $gender = test_input($_POST["gender"]);
  }

  function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
  }
?>
  • trim($data) supprimera les caractères inutiles (espace supplémentaire, tabulation, nouvelle ligne) des données d'entrée de l'utilisateur (avec la fonction PHP trim ()).
  • stripslashes($data) supprimera les barres obliques inverses () des données d'entrée de l'utilisateur (avec la fonction PHP stripslashes ()).
  • htmlspecialchars($data) convertit les caractères spéciaux en entités HTML .
    • (Si l'utilisateur entre < et >, htmlspecialchars () le traduira en &lt; et &gt;).
7
Lloyd Dominic

test_input() n'est pas une fonction php standard, mais vous savez que vous pouvez créer vos propres fonctions comme ceci:

function test_input($input){
   $output = $input." Oh, I'm updated."; // Whatever process you want to make
   return $output;
}

Ensuite, vous pouvez appeler test_input() dans votre script php.

Donc, fondamentalement, vous devriez demander à l'auteur ce que cela fait ou simplement chercher la définition de test_input().

Si vous utilisez des frameworks, des bibliothèques ou des plugins, de nombreuses fonctions non standard sont définies et vous pouvez vérifier le document (api) ou lire le code source pour trouver la réponse.

Peut-être que vous pouvez poster le script en entier, peut-être que nous pourrons savoir où se trouve test_input().

2
kyo

Il n’existe pas de fonction PHP similaire à celle de test_input ().

Ce peut être la fonction définie par l'utilisateur sur le site Web w3schools. Allez simplement sur le site Web que vous avez mentionné et exécutez l'exemple de code. Dans l'éditeur tryit, vérifiez le code source une fois, vous pouvez y accéder.

Parfois, les sites Web n'affichent pas toutes les fonctions tout en donnant l'explication, il suffit donc de se référer au code source

0
Nitin Pund