使用变量修改URL

时间:2014-07-12 23:35:28

标签: perl cgi

我想将一个变量添加到URL中 www.example.com/index.cgi?username=demo

我在index.html中有一个表单,其中包含action = login.cgi

在login.cgi中

if (($cgi->param('username') eq 'demo') && ($cgi->param('password') eq 'demo')) {
my cookie= CGI::Cookie->new(-name=>'username', -value=>$cgi->param('username'));
print $cgi->redirect(-uri => 'index.cgi', -cookie => $cookie);
}
else {
print $cgi->redirect(-uri => 'index.html');
}

在index.cgi中

my $username = $cookies{username}->value;

所以我想修改index.cgi的URL,这样它就可以从变量$ username

添加用户名。
www.example.com/index.cgi?username=demo

1 个答案:

答案 0 :(得分:0)

您可以使用点运算符或双引号组合字符串。

使用点运算符:my $url = 'www.example.com/index.cgi?username=' . $username;

使用双引号:my $url = "www.example.com/index.cgi?username=$username";

您可以组合多个字符串:

my $base_url = 'www.example.com/index.cgi';
my $key = 'username';
my $value = $username;
my $url = "$base_url?$key=$value";

不要忘记在字符串中转义特殊字符(例如&或%):

use URI::Escape;
$username = uri_escape $username;

如果你有一个键和值的哈希值,你可以使用它:

use URI::Escape;
my %h = (username => 'demo', password => 'demo', topic => 'perl');
my $url = 'www.example.com/index.cgi';
$url .= '?' . join '&', map {uri_escape "$_=$h{$_}"} keys %h;