用Perl创建会话并用PHP读取会话变量



我有一个Perl脚本,它试图向PHP服务器发出post请求。将LWP::UserAgent用于后请求,将CGI::Session用于处理会话。

现在,文章中没有什么大问题,但在Perl中设置了会话变量username之后,我无法从$_SESSION['username']中获得值。尝试使用PHP::Session,也没有运气。

Perl:

use strict;
use warnings;
use CGI;
use CGI::Session;
use LWP::UserAgent;
my $cgi = CGI->new();
my $session = CGI::Session->new( 'serializer:php' );
$session->param('username', 'dev');
print "::Perl session id::" . $session->id() . "::n";
my $browser = LWP::UserAgent->new;
my $url = 'http://localhost/test.php';
my $response = $browser->post( $url,
  [ 
    'date' => '2015-02-25'
  ]
);
die "$url error: ", $response->status_line
 unless $response->is_success;
my $file_data = $response->content();
print $file_data;

Php:

<?php
session_start();
echo "::PHP session id::" . session_id() . "::n";
echo "::" . $_POST['date'] . "::n";
echo "::" . $_SESSION['username'] . "::n";    
?>

通过执行Perl脚本,我得到了输出:

::Perl session id::737ba07ad1a2ced0be07cd303cf08afe::
::PHP session id::ri60ivtb32lglcrqv4ug1sb2i5::
::2015-02-25::
::::

$_SESSION['username']检索不正确。会话ID不同。

我没有为Perl找到一个理想的模块来处理windows上的SFTP/FTP。相反,请使用Win32::OLE->new('WinSCP.Session')。

用法:http://winscp.net/eng/docs/library_perl

最新更新