#!/usr/bin/perl	print "Content-type: text/html\n\n" ;	#   ----------------------------------------	#	Url du script de gestion des formulaires	#   ----------------------------------------	$formScriptUrl = 'http://www.iounmoutef.com/thotm/formulaires/scripts/formulaire.php3' ;	#   -----------------------------------	#	Lire les arguments passes au script	#   -----------------------------------	%variables = &getVariables() ;	#	---------------------------------------	#	Formulaire a afficher :	#	si cet argument n'existe pas, on arrete	#	---------------------------------------	$formPath = $variables{'formpath'} ;	&quit() if ( $formPath !~ /\w+/ ) ;	#	--------------------------------------	#	baseHref :	#	s'il n'a pas ete passe comme argument,	#	on prend le repertoire du script	#	--------------------------------------	( $baseHref ) = $variables{'basehref'} ? 		( $variables{'baseHref'} ) : 		( $formPath =~ /^(.*\/)[^\/]+$/ ) ;	&quit() if ( $baseHref !~ /\w+/ ) ;	#	--------------------------------------	#	nom de domaine du site	#	--------------------------------------	( $domain ) = ( $formPath =~ /^(http:\/\/[^\/]+)\// ) ;	#	--------------------------------------	#	on enleve du chemin du script 	#	la partie relative au baseHref	#	--------------------------------------	$formPath =~ s/$baseHref//;	#	--------------------------------------	#	back :	#	page de retour (suite de la visite) en	#	cas de referer non valide	#	si elle n'est pas fournie en parametre,	#	on utilise le nom de domaine	#	--------------------------------------	$back = $variables{'back'} ? 		$variables{'back'} : 		$domain ;	#	----------------------------------------	#	recupere l'adresse de la page precedente	#	----------------------------------------	$referer = $ENV{'HTTP_REFERER'} ;	#	--------------------------------------	#	regarde si l'utilisateur a suivi un lien du site	#	si ce n'est pas le cas, on oublie HTTP_REFERER	#	on renverra a la page de retour par defaut	#	--------------------------------------	$referer = $back if $referer !~ /^$domain/ ;	#	--------------------------------------	#	on construit l'url definitive a afficher:	#	url du script de traitement des formulaires	#	auquel on passe les parametres adequats	#	( formulaire a afficher, basehref, referer)	#	--------------------------------------	$completeScriptUrl = $formScriptUrl . "?" ;	$completeScriptUrl .= "referer=" . $referer ;	$completeScriptUrl .= "&" . "basehref=" . $baseHref ;	$completeScriptUrl .= "&" . "formpath=" . $formPath ;	&displayHtml($completeUrl) ;sub getVariables {	my $variable, $variables, $varName, $varValue, $varReadValue ;	my @variables ;	my %variables ;	$variables = $ENV{'QUERY_STRING'};	return %variables if ! $variables ;	if ( $variables =~ /^http:\/\/[a-zA-Z0-9-_\.\/]+$/ ) {		$variables{'formpath'} = $variables ;		return %variables ;	}	@variables = split(/&/,$variables);	VAR: foreach $variable (@variables) {		($varName,$varValue) = split (/=/,$variable) ;		next VAR if $varName =~ /[^a-zA-Z]/ ;		next VAR if $varValue !~ /^(http:\/\/)*[a-zA-Z0-9-_\.\/]+$/ ;		$varName =~ tr/A-Z/a-z/ ;		$varReadValue{$nom_var} = $varValue ;		$varValue =~ s/\+/ /g;		$varValue =~ s/%(..)/pack("c",hex($1))/ge;		$variables{$varName} = $varValue;	}	return %variables ;}sub quit {	print <<'ABANDON';<html>	<body>	</body></html>ABANDON	exit ; }sub displayHtml {	my $completeUrl = shift ;	print(<<'PART1',$completeScriptUrl,<<'PART2') ;<html><head>   <title>Formulaire</title></head><frameset rows="100%,0" border=0>	<noframes>		<body bgcolor="#000000">			   <p>Cette page est con&ccedil;ue pour visualisation dans un navigateur qui g&egrave;re les cadres (frames ).</p>		</body>	</noframes>	<frame src="PART1" name="formulaire">	<frame src="navigation.htm" name="formulaire"></frameset></body></html>PART2}