2012-02-03 6 views
4

J'ai construit un script PHP pour afficher les données affichées dans un formulaire, mais j'ai rencontré un problème. Le serveur sur lequel le site va tourner fonctionne sous PHP 5.1.6. Cette version de PHP ne supporte pas filter_var.PHP - Filter_var alternative?

J'ai besoin de connaître une alternative à court terme (de préférence hier), et ne peux pas trouver quelque chose directement sur Google ou Stack Overflow.

Peut-être que quelqu'un ici a rencontré le même problème par le passé et a une solution miracle pour moi?

Ce code:

$email= filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
$answer= filter_var($_POST['answer'], FILTER_SANITIZE_STRING); 

doit être compatible avec PHP 5.1.6, de sorte que l'adresse e-mail est cochée sur genuinity, et qu'aucun code malveillant est utilisé soit dans les champs. Des conseils?

Merci beaucoup!

+3

utiliser des expressions régulières au lieu de filter_var est la seule option. –

+0

regex est un peu lourd pour le remplacement de texte simple. Considérez les fonctions définies à cet effet: mysql_real_escape_string(), htmlentities(), addslashes(), .... – EGOrecords

Répondre

4

pour e-mails vous pouvez utiliser une expression rationnelle: (par exemple: http://www.totallyphp.co.uk/validate-an-email-address-using-regular-expressions)

pour les chaînes que vous pouvez aussi faire regex, mais est un peu trop lourd, alors peut-être une combinaison de mysql_real_escape_string() si vous l'envoyez à un DB, et html, vous devez utiliser htmlentities():

http://de.php.net/manual/en/function.mysql-real-escape-string.php

http://www.php.net/manual/en/function.htmlentities.php

Je ne pense pas que la fonction ne filter_var bien différente de celle que l'utilisation de ces méthodes

+0

Merci, EGOrecords. Je vais utiliser votre exemple donné pour les e-mails, et htmlentities pour les chaînes. Si quelqu'un d'autre a le même problème à l'avenir, voici un bon début pour vous aider avec les htmlentities: http://codeassembly.com/How-to-sanitize-your-php-input/ – WebGremlin

+0

... cela devrait vraiment ' On a donné la coche =) – Toby

2

Vous pouvez installer l'extension via PECL PHP 5.1: http://pecl.php.net/package/filter

+0

S'il ne peut pas mettre à jour une version PHP plus récente, il ne peut pas installer une extension PHP (parce que vous avez toujours besoin d'un accès plus profond à le serveur ...) – EGOrecords

+0

Il n'a pas dit cela;) – DerVO

+0

Franchement, EGOrecords a raison. Néanmoins, merci pour l'entrée. :) – WebGremlin

2

i utiliserais généralement une expression régulière. il vous offre le plus de flexibilité. sur Internet sont de nombreuses ressources utiles à ce sujet. jetez un oeil here ou here

-1

En utilisant les informations que je fournis dans les réponses précédentes, voici comment je fixe mon problème:

<?PHP // Retreive POST data and sanitize it: trim string, no HTML, plain text 
$variable1=htmlentities(trim($_POST['input1']), ENT_NOQUOTES); 
$variable2=htmlentities(trim($_POST['input2']), ENT_NOQUOTES); 
$emailaddress=$_POST['email']; // sanitizing email address happens below 

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $emailadres)){ // check email address and if legit, do this: 
     echo '<p>The e-mail address given is valid.</p>' 

} else{ // if email is not legit, do this: 
     echo '<p>The e-mail address given is not valid.</p>'; 
} 
?> 

J'espère que cela aide quelqu'un :)

Questions connexes