OVH Cloud OVH Cloud

probleme DB_File

2 réponses
Avatar
john.swilting
j ai repris l example du bouquin cgi perl
et j essaye de le faire marcher
je ne comprends pas pourquoi ça marche pas
qand je le lance depuis la ligne de commande la base de donnees n pas creer


#!/usr/bin/perl -w
use CGI qw/:standard escapeHTML/;
use strict;
use Fcntl qw( :DEFAULT :flock );
use DB_File;
my $query = new CGI;
use constant COUNT_FILE => "/usr/local/apache/data/counter/count.dbm";
my %count;
my $url = $ENV{DOCUMENT_URI};
local *DBM;

if ( my $db = tie %count, "DB_File", COUNT_FILE, O_RDWR | O_CREAT ) {
my $fd = $db->fd;
open DBM, "+<&=$fd" or die "Could not dup DBM for lock: $!";
flock DBM, LOCK_EX;
undef $db;
$count{$url} = 0 unless exists $count{$url};
my $num_hits = ++$count{$url};
untie %count;
close DBM;
print p("visiteurs",tt(escapeHTML($num_hits)));
close DBM;
} else {
print p("[Error processing counter data]");
}

2 réponses

Avatar
john.swilting
john.swilting wrote:
ya de close
j en ai enlever un
ça marche toujours pas

au secours
aidez moi je vous en pris
serge
j ai repris l example du bouquin cgi perl
et j essaye de le faire marcher
je ne comprends pas pourquoi ça marche pas
qand je le lance depuis la ligne de commande la base de donnees n pas
creer


#!/usr/bin/perl -w
use CGI qw/:standard escapeHTML/;
use strict;
use Fcntl qw( :DEFAULT :flock );
use DB_File;
my $query = new CGI;
use constant COUNT_FILE => "/usr/local/apache/data/counter/count.dbm";
my %count;
my $url = $ENV{DOCUMENT_URI};
local *DBM;

if ( my $db = tie %count, "DB_File", COUNT_FILE, O_RDWR | O_CREAT ) {
my $fd = $db->fd;
open DBM, "+<&=$fd" or die "Could not dup DBM for lock: $!";
flock DBM, LOCK_EX;
undef $db;
$count{$url} = 0 unless exists $count{$url};
my $num_hits = ++$count{$url};
untie %count;
close DBM;
print p("visiteurs",tt(escapeHTML($num_hits)));
close DBM;
} else {
print p("[Error processing counter data]");
}


Avatar
john.swilting
john.swilting wrote:

merci
j ai compris c des problemes de securite que j ai resolu

john.swilting wrote:
ya de close
j en ai enlever un
ça marche toujours pas

au secours
aidez moi je vous en pris
serge
j ai repris l example du bouquin cgi perl
et j essaye de le faire marcher
je ne comprends pas pourquoi ça marche pas
qand je le lance depuis la ligne de commande la base de donnees n pas
creer


#!/usr/bin/perl -w
use CGI qw/:standard escapeHTML/;
use strict;
use Fcntl qw( :DEFAULT :flock );
use DB_File;
my $query = new CGI;
use constant COUNT_FILE => "/usr/local/apache/data/counter/count.dbm";
my %count;
my $url = $ENV{DOCUMENT_URI};
local *DBM;

if ( my $db = tie %count, "DB_File", COUNT_FILE, O_RDWR | O_CREAT ) {
my $fd = $db->fd;
open DBM, "+<&=$fd" or die "Could not dup DBM for lock: $!";
flock DBM, LOCK_EX;
undef $db;
$count{$url} = 0 unless exists $count{$url};
my $num_hits = ++$count{$url};
untie %count;
close DBM;
print p("visiteurs",tt(escapeHTML($num_hits)));
close DBM;
} else {
print p("[Error processing counter data]");
}