2014-07-12 26 views
0

我想给一个变量添加到URL作为 www.example.com/index.cgi?username=demo修改URL与可变

我有一个index.html的形式,它具有动作=登录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以及从变量$用户名

www.example.com/index.cgi?username=demo 
+0

你究竟在遇到什么麻烦? – friedo

+0

如何修改网址?一旦在index.html中传递了表单的值,并且用户名是demo,则index.cgi的url将作为index.cgi?usename = demo – user3784040

+0

您是否在问如何附加到字符串?尝试[点运算符](http://perldoc.perl.org/perlop.html#Additive-Operators) – friedo

回答

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;