人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のperlで書かれたコードをPHPで書き換えるにはどのようにしたらよいでしょうか

open(FP, "exec ./authcheck at=11000 cp=00120 sc=40001 tu=http://xxxxxxxx/xxtest1/cgi-bin/membertop.cgi
nu=http://xxxxxxxx/xxtest1/entrace.html lt=300 |");
$input=<FP>;
if( (index $input, "Location:") == 0 ) {
close(FP);
print "$input?n";
exit;
} elsif( (index $input, "uid" ) == 0 ) {
close(FP);
$param = $ENV{'QUERY_STRING'};
@input = split(/&/, $input);
foreach $i (0 .. $#input) {
$input[$i] =~ s/?+/ /g;
$input[$i] =~ s/%(..)/pack("c", hex($1))/ge;
($key1, $value1) = split(/=/, $input[$i], 2);
$input{$key1} = $value1;
}
$uid = $input{'uid'};
$isp = $input{'isp'};
$asts = $input{'asts'};
print "Content-type: text/html;charset=Shift_JIS?n?n";
print "<html>?n";
print "<head><meta http-equiv=Cache-Control content=no-cache />?n";
print "<title>会員認証</title></head>?n";
print "<body bgcolor=ffffff link=ff0000 alink=00ff00 vlink=0000ff>?n";
print "認証種別:11000<br>?n";
print "端末: 対応端末 <br>?n";
print "認証パターン:会員認証<br>?n";
print "退会時処理:提供不可<br>?n";
print "課金ログ:なし<br>?n";
print "告知画面:なし<br>?n";
print "<a href=http://xxxxxxxx/xxtest1/cgi-bin/member01.cgi?$param>次へ?n";
print "</body>?n";
print "</html>?n";
exit;
}
print


一番参考になる回答をいただけた方に200ポイント差し上げます

●質問者: jayz
●カテゴリ:ウェブ制作
✍キーワード:AT CP EXIT FP GE
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●200ポイント

動作未確認のものですが、よろしければ・・・

if (FALSE === $last_line = system("./authcheck at=11000 cp=00120 sc=40001 
 tu=http://xxxxxxxx/xxtest1/cgi-bin/membertop.cgi 
 nu=http://xxxxxxxx/xxtest1/entrace.html lt=300", $input)){
 echo "Error!!  外部プログラムから値が返ってこない。
 または、外部プログラムの呼び出し失敗。<br />\n";
}else{
 if(strpos($input,"Location:") == 0){
 echo "$input\n";
 exit; 
 }elseif(strpos($input,"uid") == 0){
 $param = $_SERVER["QUERY_STRING"];
 $input_array = explode("&", $input);
 $param_array = array();
 $c = count($_array) - 1;
 foreach $i (0 .. $c) {
 list($key,$value) = explode('=',$input_array[$i],2);
 }elseif($key=="uid"){ $uid = urldecode($value);
 }elseif($key=="isp"){ $isp = urldecode($value);
 }elseif($key=="asts"){ $asts = urldecode($value);
 }
 }
 echo "Content-type: text/html;charset=Shift_JIS\n\n";
 echo "<html>\n";
 echo "<head><meta http-equiv=Cache-Control content=no-cache />\n";
 echo "<title>会員認証</title></head>\n";
 echo "<body bgcolor=ffffff link=ff0000 alink=00ff00 vlink=0000ff>\n";
 echo "認証種別:11000<br>\n";
 echo "端末: 対応端末 <br>\n";
 echo "認証パターン:会員認証<br>\n";
 echo "退会時処理:提供不可<br>\n";
 echo "課金ログ:なし<br>\n";
 echo "告知画面:なし<br>\n";
 echo "<a href=http://xxxxxxxx/xxtest1/cgi-bin/member01.cgi?$param>次へ\n";
 echo "</body>\n";
 echo "</html>\n";
 exit;
 }
}
◎質問者からの返答

ご回答ありがとうございます

ご指示通り訂正した上で動かしてみましたが

15行目の"foreach $i (0 .. $c) {

"の部分は何をしようとしているのでしょうか

私の中ではforeachは配列をまとめて処理するときに使う程度の認識しかないのですが、何やらこの部分でエラーが起きているみたいです

あっ・・・こういうことですか?↓

foreach ($c as $key => $value) {

これでとりあえず・・・大丈夫かな・・・

すみません・・・もう限界なので寝ま。。。ZZZ


2 ● yosuke_ss
●0ポイント

たった200pか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ