0

Php関数によって呼び出されるPerlスクリプトがあります。

呼び出し中に、ヘッダー、件名、本文を引数として渡す必要があります。

しかし、ご存知のように、 Body には「改行」文字を含めることができます。たとえば、次のようになります。

Hello Mr x,

this is just a test

通常、ここには 2 つの新しい行があります。

したがって、system() 関数を使用してスクリプトを呼び出すと、次のようになります。

system("perl /var/www/cgi-bin/daemon.pl $Header $Subject $body", $Res);

本文の内容は

Hello Mr x,

私が探している結果は、新しい行を perl に渡し、書かれているとおりにメッセージを受け取る可能性があることです。

4

1 に答える 1

0

ご協力ありがとうございました、

私のソリューションでは、PHP ファイルで escapeshellarg() を使用し、perl 側でHTML::Entitiesを見つけました。

これで、同意書をエンコードおよびデコードできます。

これが私のコードです:

PHP ファイル:

$Header = escapeshellarg($Header);
$Subject = escapeshellarg($Subject);
$Body = escapeshellarg($Body);

system("perl /var/www/cgi-bin/daemon.pl $Header $Subject $Body", $Res);

Perl スクリプト :

#!/user/bin/suidperl -U
use HTML::Entities;

# The $Header , $Subject and $Body args are well received
# to pass this args to an other perl script i use encode_entities() function

encode_entities($Header);
encode_entities($Subject);
encode_entities($Body);

HTML::Entitiesは、 PHPのescapeshellarg.phpと同じであると言えます。

于 2012-12-20T09:35:17.180 に答える