Bonjour à tous,

J'ai un soucis avec les caractères réservés.

Ma page html contient un simple formulaire permettant de saisir des titres de livre.
Les données sont transmises au script perl par la méthode POST.
Les données saisies dans ce formulaire sont récupérées via la méthode param du module CGI. Elles sont ensuite envoyées vers une base de données MySQL.

Lorsque je veux envoyer des données contenant des caractères réservés (par exemple une apostrophe) j'ai un message d'erreur dans mon navigateur.
J'ai bien tenté d'utiliser le module URI:Escape; mais la conversion des caractères réservés semble ne pas fonctionner.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#!C:/wamp/apps/Perl/bin/perl.exe 
use strict;
use warnings;
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use URI::Escape;
 
# connexion à ma base de données mysql minichat 
my $database = "db1";
my $hostname = "localhost";
my $login = "root";
my $pw = "";
my $dsn = "DBI:mysql:database=$database;host=$hostname";
my $dbh = DBI->connect($dsn,$login,$pw) or die "ECHEC connexion";
 
# récupération de la valeurs transmise par le formulaire
my $cgi = CGI->new;
my $TITRE;
$TITRE= $cgi->param('titre');
my $TITRE_SAFE = uri_escape("$TITRE");
 
# insertion dans la base de données
my $query = ("INSERT INTO livres VALUES (DEFAULT, '$TITRE_SAFE')");
my $sth=$dbh->prepare($query);
$sth->execute() or die "Cannot execute sth: $DBI::errstr";
$sth->finish;
$dbh->disconnect;
Pouvez-vous m'aider à identifier mon erreur?
Merci