私がずっとPerlで書いたという事実のために、私は物事が同様の問題の解決策にどのようにあるかを理解することは素晴らしいと思った。
タスク自体は簡単で、その解決策は簡単です。 特にPHPで。
しかし、私はPHPが好きではありません。 そして、真珠はウェブには決して使われませんでした。
そのため、次のコードが夕方に投げられました。
#!/usr/bin/perl -w # use strict; use warnings; use CGI::WebOut(1); use Mail::Mailer; # my( $topic , $date , $ref , $flag , $tmp ); my( $query , $pair , $name , $value , $input ); my @pairs; my %input; my( $to_address , $subject , $mailer , $body , $from_address ); $date = `/bin/date "+%Y-%m-%d %H:%M"`; # $to_address = 'info@microsoft.com'; # $from_address = 'abuse@microsoft.com'; # $flag = 0; # if( $ENV{'REQUEST_METHOD'} eq 'GET' ){ # $query=$ENV{'QUERY_STRING'}; } elsif( $ENV{'REQUEST_METHOD'} eq 'POST' ){ sysread( STDIN , $query , $ENV{'CONTENT_LENGTH'}); } $ref = $ENV{'HTTP_REFERER'}; # @pairs = split( /&/ , $query ); # foreach $pair ( @pairs ){ ( $name , $value ) = split( /=/ , $pair ); # 1=1 () if( defined( $name )){ # if( !( defined( $value ))){ # next; # } } $value =~ tr/+/ /; # $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex())/eg; # $value =~ s/<!--(.| )*-->//g; # ( ? =) $input{$name} = $value; # if( $name ne 'topic' ){ # Topic? if( $flag == 0){ # 0 ? $flag = 0; # ! } } if( $name eq 'topic' ){ # ! ! $topic = $value; # $body .= "Topic: $topic\n"; # $flag++; # } # , - , # # if( $name eq 'mail' ){ # if( !(length( $value ))){ # $value = 'info@microsoft.com'; # } # } } if( !( defined( $flag ))){ ololo(); } # ( ? ! if( !( defined( $value ))){ ololo(); } # ... if( $flag == 0 ){ ololo(); } # if( defined( $ENV{'REMOTE_ADDR'} )){ $body .= "Remote address: $ENV{'REMOTE_ADDR'}\n"; # ! } else{ $body .= "Remote address is unknown\n"; # ... } if( defined( $ENV{'REMOTE_HOST'} )){ $body .= "Remote host: $ENV{'REMOTE_HOST'}\n"; # } else{ $body .= "Remote host is unknown\n"; # } if( defined( $ref )){ $body .= "Referer: $ref\n"; # ! } else{ $body .= "Referer is unknown\n"; # } $body .= "Date: $date\n"; # $subject = "$topic at $date"; # $mailer = Mail::Mailer->new(); # $mailer->open({ From => $from_address, # To => $to_address, # Subject => $subject, # }) or ololo(); # print "Can't open: $!\n"; # , ... print $mailer $body; # ... $mailer->close(); sub ololo{ # undef @pairs; undef %input; undef $topic; undef $date; undef $ref; undef $flag; undef $tmp; undef $query; undef $pair; undef $name; undef $value; undef $input; undef $to_address; undef $subject; undef $mailer; undef $body; undef $from_address; exit 0; }
.htaccessで、私はこれを書きました:
Options +Includes +ExecCGI
私のLJレコードでは、このようなことを書きます。
<div style="display:none"> <img src="http://myserver.ru/lj.pl?topic=PLAZMOTRON" width=1> </div>
<div style="display:none"> <img src="http://myserver.ru/lj.pl?topic=PLAZMOTRON" width=1> </div>
どこで
- lj.pl-スクリプト名
- topic-LiveJournalのエントリを識別するトピックの名前(この場合はPLAZMOTRON)
与えられるgifダミーを指定する必要があるようですが、私はかなり最新のブラウザ(Firefox 3.6.17)を持っているか、何かを理解していないのでマナが点灯しますが、スクリプトは非常に機能しています。
それのために楽しい、あなたはカウンターまたは他の有用な何かを眩ませることができます。
このスクリプト例は、Perlを使用してWebでの作業を始めたばかりの人にとってはかなり便利です(これは私に関するものです)。
MasonやCGIのようなモジュールのような怪物なしで作業する最も簡単な方法が示されており、500番目のエラーとあらゆる種類の印刷「Text / plain \ n \ n」を回避しています。
ありがとう