Salut, tout le monde
alors voila j'ai comme qui dirait un petit problème.
Pour faire bref : J'ai une page internet internet qui contient un formulaire qui envoie les infos saisies à un script Perl.
HTML :
1 2 3 4 5 6 7
| <form action="http://10.67.92.110:8080/xwiki/cgi-bin/script.pl" method="get" id="newdoc">
<input type="hidden" name="parent" value="${doc.fullName}" />
<input type="hidden" name="template" value="XWiki.DefinitionClassTemplate" />
<input type="hidden" name="webname" value="Lexique" size="8" />
Titre : <input type="text" name="name" value="Nom à définir (sans caractère spéciaux ni espace)" size="50" />
<input type="button" value="Ajouter" onclick='if (updateName(this.form.name)) {this.form.action="../../inline/" + this.form.webname.value + "/" + this.form.name.value; this.form.submit(); }'>
</form> |
Script Perl :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| use warnings;
use strict;
use CGI::Carp qw (fatalsToBrowser);
use Encode::Encoder qw(encoder);
open OUT,"> list_mots.csv" or die "Le fichier ne peut être édité !\n";
my $donnees = $ENV{'QUERY_STRING'};
my @champs_formulaire = split(/&/, $donnees);
my ($champ, $nom, $valeur);
my %formulaire;
foreach $champ (@champs_formulaire) {
(my $nom, my $valeur) = split(/=/, $champ);
$valeur =~ tr/+/ /;
$valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$valeur =~ s/</</g;
$valeur =~ s/>/>/g;
$formulaire{$nom} = $valeur;
}
if($formulaire{name} =~ /^[a-z](.*)/){
my $var_aux = substr($formulaire{name},0,1);
$var_aux =~ tr/a-z/A-Z/;
$formulaire{name} = $var_aux.$1;
}
print OUT $formulaire{name};
do "megascript.pl";
close OUT;
my $name = Encode::encode("utf8", $formulaire{name});
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Redirection</title>\n";
print "<meta http-equiv=\"refresh\" content=\"0; URL=http://localhost:8080/xwiki/bin/inline/Lexique/$name?parent=$formulaire{parent}&template=$formulaire{template}&webname=$formulaire{webname}&name=$name\"\n";
print "</head>\n";
print "</body></html>\n"; |
Le script appelé par ce dernier (megascript.pl) tente entre autre d'accéder une base de données MySQL et la problème ça marche pas =( alors que si je lance le megascript manuellement ça marche. J'ai fait quelque test et il se trouve que c'est la connexion à la base qui échoue.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| use warnings;
use strict;
use Carp;
use DBI;
use CGI;
use Encode::Encoder qw(encoder);
sub imp_lex{
open OUT,"> lex_aux.csv" or die "Le fichier lex_aux.csv ne peut être édité !\n";
my $co = new CGI;
print $co->header;
my $database="wikidb";
my $hostname="localhost";
my $login = "wikiUser";
my $mdp = "****";
my $dsn = "DBI:mysqlPP:database=$database;host=$hostname;port=3308";
my $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec connexion";
my $query = "SELECT XWD_CONTENT FROM xwikidoc x where XWD_FULLNAME = \"Lexique.WebHome\"";
my $sth = $dbh->prepare($query);
$sth ->execute();
while(my @data = $sth->fetchrow_array()){
print OUT $data[0];
}
$sth -> finish;
} |
L'erreur est à la ligne 19 :
my $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec connexion";
Je sais pas d'où ça peut venir si quelqu'un à une idée, je suis preneur.
Partager