Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

help sur du cgi perl !!!

4 réponses
Avatar
gribouille
Bonjour,

premier post car je me lance dans le cgi ...

j'ai passé toute la journée sur le code suivant, j'aimerai que lorsque
le login et password sont validés (par fichier texte) le programme
m'affiche une page blanche et non plus le tableau de login. j' en peu
plus ... fatigué

Merci Lolo

#!/usr/bin/perl -w

use CGI qw/:all/;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

$logUser = param('login');

$pass = param('password');
$file = "./users/$logUser";
print(
header,
start_html(-bgcolor=>'white',-title=>'murray.com.au'),
"<center>\n",
h1("Bidulle.com"),
);

# login form

if($login eq ''){
print(
table({-border=>'0', align=>'center', bgcolor=>'#FFFF0F'}),
td({-width=>'100',-align=>'center'}),
start_form({-type=>'hidden', -value=>'initial', -name=>'screen',
-width=>"10"}),
"Enter your name ", textfield({-name=>'login', -type=>'text'}),p,
"Password ", password_field({-type=>'password', -name=>'password'}),p,
TR,

td({align=>'center'}),p,
submit("login"),p
submit("Create a new account"),

end_form,
);

if($logUser ne ''){
if(-e $file){
open (FILE, $file);
while ($dataUser = <FILE>){
if ($dataUser =~ /([^:]+)=(.*)/) {
$logUser{$1}= ("$2");
}
}
close (FILE);

if ($pass eq $logUser{'password'}){
$login = IDok;
}
else{
print("Wrong password ", $logUser)
}
}
else{
print "user ", $logUser, " not found"
}
}
}
if($login eq 'IDok')

{
print "ma nouvelle page"

}

4 réponses

Avatar
Rue des Prairies
Bonjour,

Voir dans le texte.


gribouille a écrit :
Bonjour,

premier post car je me lance dans le cgi ...

j'ai passé toute la journée sur le code suivant, j'aimerai que lorsque
le login et password sont validés (par fichier texte) le programme
m'affiche une page blanche et non plus le tableau de login. j' en peu
plus ... fatigué

Merci Lolo

#!/usr/bin/perl -w


Tu peux avantageusement utiliser use warnings; à la place de -w
Il est fortement recommandé d'utiliser également use strict; ça évite de
gros soucis.


use CGI qw/:all/;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

$logUser = param('login');

$pass = param('password');
$file = "./users/$logUser";
print(
header,
start_html(-bgcolor=>'white',-title=>'murray.com.au'),
"<center>n",
h1("Bidulle.com"),
);

# login form

if($login eq ''){



Là ce ne serait pas plutôt $logUser ?


print(
table({-border=>'0', align=>'center', bgcolor=>'#FFFF0F'}),
td({-width=>'100',-align=>'center'}),
start_form({-type=>'hidden', -value=>'initial', -name=>'screen',
-width=>"10"}),
"Enter your name ", textfield({-name=>'login', -type=>'text'}),p,
"Password ", password_field({-type=>'password', -name=>'password'}),p,
TR,

td({align=>'center'}),p,
submit("login"),p
submit("Create a new account"),

end_form,
);

if($logUser ne ''){
if(-e $file){
open (FILE, $file);
while ($dataUser = <FILE>){
if ($dataUser =~ /([^:]+)=(.*)/) {
$logUser{$1}= ("$2");
}
}
close (FILE);


Il est préférable d'écrire :
open($fh,"<",$file) or die "Problème d'ouverture de $file : $!";
while(<$fh>) {
$logUser{$1}=$2 if(/([^:]+)=(.*)/);
}
}
close($fh);

Peux-tu préciser ce que contient le fichier ?
J'ai des doutes sur la validité de ton expression rationnelle, un split
me semble plus adapté.
my ($x,$y) = split(/=/,$_);
$logUser{$x}=$y;



if ($pass eq $logUser{'password'}){
$login = IDok;



Je pense que tu voulais dire $login='IDok';

}
else{
print("Wrong password ", $logUser)
}
}
else{
print "user ", $logUser, " not found"
}
}
}
if($login eq 'IDok')

{
print "ma nouvelle page"

}



D'une manière générale, essaie d'indenter correctement, c'est beaucoup
plus lisible.

En espérant que ça aide.
Olivier.
Avatar
gribouille
Rue des Prairies a écrit :
Bonjour,

Voir dans le texte.


gribouille a écrit :
Bonjour,

premier post car je me lance dans le cgi ...

j'ai passé toute la journée sur le code suivant, j'aimerai que lorsque
le login et password sont validés (par fichier texte) le programme
m'affiche une page blanche et non plus le tableau de login. j' en peu
plus ... fatigué

Merci Lolo

#!/usr/bin/perl -w


Tu peux avantageusement utiliser use warnings; à la place de -w
Il est fortement recommandé d'utiliser également use strict; ça évite de
gros soucis.


use CGI qw/:all/;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

$logUser = param('login');

$pass = param('password');
$file = "./users/$logUser";
print(
header,
start_html(-bgcolor=>'white',-title=>'murray.com.au'),
"<center>n",
h1("Bidulle.com"),
);

# login form

if($login eq ''){



Là ce ne serait pas plutôt $logUser ?


print(
table({-border=>'0', align=>'center', bgcolor=>'#FFFF0F'}),
td({-width=>'100',-align=>'center'}),
start_form({-type=>'hidden', -value=>'initial', -name=>'screen',
-width=>"10"}),
"Enter your name ", textfield({-name=>'login', -type=>'text'}),p,
"Password ", password_field({-type=>'password', -name=>'password'}),p,
TR,

td({align=>'center'}),p,
submit("login"),p
submit("Create a new account"),

end_form,
);

if($logUser ne ''){
if(-e $file){
open (FILE, $file);
while ($dataUser = <FILE>){
if ($dataUser =~ /([^:]+)=(.*)/) {
$logUser{$1}= ("$2");
}
}
close (FILE);


Il est préférable d'écrire :
open($fh,"<",$file) or die "Problème d'ouverture de $file : $!";
while(<$fh>) {
$logUser{$1}=$2 if(/([^:]+)=(.*)/);
}
}
close($fh);

Peux-tu préciser ce que contient le fichier ?
J'ai des doutes sur la validité de ton expression rationnelle, un split
me semble plus adapté.
my ($x,$y) = split(/=/,$_);
$logUser{$x}=$y;


if ($pass eq $logUser{'password'}){
$login = IDok;



Je pense que tu voulais dire $login='IDok';

}
else{
print("Wrong password ", $logUser)
}
}
else{
print "user ", $logUser, " not found"
}
}
}
if($login eq 'IDok')

{
print "ma nouvelle page"

}



D'une manière générale, essaie d'indenter correctement, c'est beaucoup
plus lisible.

En espérant que ça aide.
Olivier.




en fait le fichier est un fichier qui contient les données de l'utilisateurs

email=
city=sydney
password=pipo
street=rue dubidon
name=laurent
postcode 00
state=nsw
username=lolo

mais le fait c'est que la nouvelle page ne s'ouvre pas dans une nouvelle
page, le texte 'ma nouvelle page' s'ouvre dans le tableau de login.

comment faire ?????

merci
Laurent
Avatar
Rue des Prairies
gribouille a écrit :
mais le fait c'est que la nouvelle page ne s'ouvre pas dans une nouvelle
page, le texte 'ma nouvelle page' s'ouvre dans le tableau de login.

comment faire ?????

merci
Laurent



Qu'est-ce que tu entends par "ouvrir dans le tableau de login" ?

Sinon, de ce que je comprends, apporte les modifs suivantes :

- remplacer $login par $logUser dans le test : if($login eq '')
- déplacer la fin de ce bloc avant if($logUser ne ''), qui peut être
remplacé par else,
- ajouter print end_html en fin de script.

soit en résumé :
if($logUser eq '') {
print .......
.........
} else { #à la place de if($logUser ne '')
if(-e $file){
.........
.........
}else{
print "user $logUser not found";
}
}
if($login eq 'IDok) {
print "ma nouvelle page";
}
print end_html;


Olivier.
Avatar
gribouille
Rue des Prairies a écrit :
gribouille a écrit :
mais le fait c'est que la nouvelle page ne s'ouvre pas dans une
nouvelle page, le texte 'ma nouvelle page' s'ouvre dans le tableau de
login.

comment faire ?????

merci
Laurent



Qu'est-ce que tu entends par "ouvrir dans le tableau de login" ?

Sinon, de ce que je comprends, apporte les modifs suivantes :

- remplacer $login par $logUser dans le test : if($login eq '')
- déplacer la fin de ce bloc avant if($logUser ne ''), qui peut être
remplacé par else,
- ajouter print end_html en fin de script.

soit en résumé :
if($logUser eq '') {
print .......
.........
} else { #à la place de if($logUser ne '')
if(-e $file){
.........
.........
}else{
print "user $logUser not found";
}
}
if($login eq 'IDok) {
print "ma nouvelle page";
}
print end_html;


Olivier.


Oui, c'est exactement ca ! j'ai fait les modifs, merci !