Page 1 sur 1

Vérifier le début et la fin d'une chaîne

Posté : 10 août 2005, 13:25
par flo86
Bonjour, j'aimerais savoir comment vérifier à l'issu de la soumission d'un formulaire, l'extansion de l'url rentrée soit .gif, .jpg, .png ou .bmp ... Par exemple : http://www.monsite.com/image.gif doit être accepté ; et http://www.monsite.com/machin.php ne soit pas accepté. (en gros, c'est pour éviter d'avoir des images dynamiques, ce qui pourrait représenter une faille de sécurité). Quelle fonction utiliser ?
J'aimerais également vérifier que la chaîne commence par http://. Là encore, quelle fonction utiliser ?
Merci pour votre aide :)

Posté : 10 août 2005, 15:48
par flo86
cela n'est-il pas possible ?

Posté : 10 août 2005, 15:55
par Cyrano
Tu veux vérifier l'extension d'url inscrite par qui au juste et comment ?

Posté : 10 août 2005, 17:14
par flo86
Ben en fait, voilà la mise en situation :
j'ai une page, où le visiteur peut entrer l'URL d'une image (son avatar) dans un formulaire.
Alors une fois le formulaire envoyé, j'aimerais vérifier que le visiteur n'entre pas n'importe quoi, il faudrait donc que l'adresse commence par http://www (ou www) ; et qu'elle se termine soit par .gif, soit par .jpg, soit par .png, soit .bmp ... Voilà, comme ça je suis suis sûr que c'est bien une image simple.

Merci pour votre aide.

Posté : 10 août 2005, 18:06
par flo86
Cela est il possible en PHP ?

Posté : 10 août 2005, 18:13
par Cyrano
OUi, absolument, les fonctions de manipulation de chaînes font ça très bien. Pour l'extension par exemple, il faut repérer ce qui est après le derner point : TU pourrais par exemple récupérer juste cette partie là en faisant :
$elements = explode(".", $chaine);
$dernier = count($elements) - 1;
$ext = $elements[$dernier];
/* Et là tu fais la comparaison pour vérifier si c'est .gif, .jpg ou autre chose */
Sinon, si c'est un fichier uploadé par l'internaute, vérifie $_FILES['nom_champ_formulaire']['type'];

Posté : 10 août 2005, 19:29
par flo86
Merci pour ton aide Cyrano :), je vais essayer de faire avec ta solution

Posté : 10 août 2005, 20:55
par flo86
Effectivement, cela fonctionne bien, mais comment faire pour vérifier que la chaine commence bien par http:// ou www.

Merci encore pour ton aide

Posté : 10 août 2005, 20:59
par Cyrano
Avec une expression régulière par exemple:
<?php
$masque = "^((http://)|(w){3}|(http://w{3})).*"")$";
if(ereg($masque, $chaine))
{
    echo("<p>Début url ok</p>\n");
}
else
{
    echo("<p>Début url invalide</p>\n");
}
?>

Posté : 10 août 2005, 21:40
par flo86
Voilà, j'ai un peu modifié ton code, et ça fonctionne :) :)
Merci bcp Cyrano.
<?
$masque = "^((http://|http://www).*)$";
$masque2 = "^(www.*)$";
if(ereg($masque, $chaine))
	{
	echo "".$chaine."";
	}
elseif(ereg($masque2, $chaine))
	{
    echo "http://".$chaine."";
	}
else
	{
	echo "Pas bon";
	}
?>

Posté : 11 août 2005, 12:59
par graal
Les expressions régulières cay bien, mais avec les fonctions pcre hein :p

Posté : 11 août 2005, 13:14
par Cyrano
Les expressions régulières cay bien, mais avec les fonctions pcre hein :p
Tu voudrais nous faire part de ta pensée ? Il y a un truc qui m'a peut-être échappé ? :-k

Posté : 11 août 2005, 19:40
par graal
posix = gourmand, bouffe ressource, lent
pcre = rapide, performant

Bref utiliser ereg[i|_]? cay pas bien [=

Posté : 11 août 2005, 20:39
par Cyrano
Au lieu de critiquer après coup graal, fais donc les réponses à ce moment là et argumentes les intelligemment !