• ベストアンサー

ユーザー認証&リンク先振り分け

下記のようなプログラムにてユーザー認証&リンク先の振り分けを考えているのですが、上手に出来ません。どこか問題がありましたら教えていただけないでしょうか?エラー構文などは出ないのですが、フォーム上からユーザーIDとパスワードを入力してもうまくページが切り替わらず、同じログインフォームのページが開いてしまうのです。 <?php // $data_file = "d_file.dat"; //データファイルの指定 $authlevel = 0; //権限レベル if($action == "post"){ $p_data = file($data_file); $p_flag = 0; for($i=0; $i<count($p_data); $i++){ list($id,$pass,$authlv) = split(",", $p_data[$i]); if($id == $u_id && $pass == $passwd){ $authlevel = $authlv; //権限レベルを読む $p_flag++; } } if($p_flag > 0){ switch (authlevel){ case 1: require ("http://www.dell.com"); break; case 2: require ("http://www.whitehouse.gov"); break; case 3: require ("http://www.yahoo.com"); break; case 4: require ("http://www.google.com"); break; case 5: require ("http://www.yahoo.co.jp"); break; default://上記以外 require ("http://www.kantei.go.jp"); break; //echo "<CENTER><BR><BR><BR><FONT COLOR='blue'>おめでとうございます。あなたは正式に認証されました。<BR><BR>\n"; //echo "ここにお好きなHTML表示を埋め込んで下さい。</FONT>\n"; } } else { echo "<CENTER><BR><BR><BR><FONT COLOR='red'>ユーザーIDとパスワードが間違っています。やり直して下さい。</FONT>\n"; } } ?> ちなみに、パスワードファイル(d_file.dat)には (ユーザーID),(パスワード),(権限レベル), と記述したファイルを用意しました。

  • PHP
  • 回答数8
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.8

拝見しましたが、まだこれは冒頭ではありませんね。header関数の前に画面出力があってはならないんです。これはタグはもちろん、改行であっても同じです。 そもそもリダイレクトする際にはHTMLの出力は一切必要ないのですから、HEADERブロックも不要です。 <html> <head> <title>動作すればいいなぁ</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <style type="text/css"> <!-- .six { font-size: 6pt} .seven { font-size: 7pt} .eight { font-size: 8pt} .nine { font-size: 9pt} .ten { font-size: 10pt} --> </style> </head> このブロックをBODYタグの前に移せば良いでしょう。

naranara
質問者

お礼

思い通りの動作ができました。 これでようやく完成です。 お忙しい中お付き合いいただき本当にありがとうございました。 今まではいただいたソースというものをそのまま使っていただけでしたが、今回、この状況を通して、自分なりに勉強が出来たと思います。 本当にありがとうございました。 感謝してもしきれません…。ありがとうございました。

その他の回答 (7)

回答No.7

確かにこれだとそのエラーが出ますね。 判定をする部分を冒頭に持ってきて、判定にひっかからない場合にフォームが表示されるように直せば良いと思います。このスクリプトだと判定が上手くいってもいかなくてもフォームが表示されてしまいますよね?

naranara
質問者

補足

概略を書くと、アカウントとパスワードを権限が割り振られているものを入力し、フォームから送信すると、フォームは消えるのですが、ページが白い背景になり、その上で、 Warning: Cannot modify header information - headers already sent by (output started at /usr/home/free/home/(省略)/members_login_PC2.php:5) in /usr/home/free/home/(省略)/members_login_PC2.php on line 33 こういったエラーメッセージがやはり表示されてしまいます…

回答No.6

>「Warning: Cannot modify header information - headers already sent by (output started at /usr/home/free/home/(ウェブスペースアカウント名)/public_html/members_login_PC2.php:5) in /usr/home/free/home/(ウェブスペースアカウント名)/public_html/members_login_PC2.php on line 132」と表示されます。 OK、じゃあ認証自体はうまく行ってますね。header関数の前に文字出力が既にされているとこのエラーが出ます。恐らくデバッグ用のprint文を全て外せば解決すると思います。 requireでなくてheader関数(リダイレクトって言います)をお薦めしたのは、技術的な問題よりも、一般的でないような気がするというか、考えようによっては他のサイトの内容を自分のサイトとして表示するような事にならないかな、と思っただけです。requireを使うと、指定したURLをソースの一部として取り込むという意味合いになります。閲覧者から見れば、違うURLを入力しているのに他のサイトの内容が表示されるという事になってしまうので、著作権の問題などが発生する可能性もあるんじゃないかな、といった印象を受けました。

naranara
質問者

補足

実はすでにprint文は全てはずしてあります。 フォームとかもechoを使って書いていないからページ自体が切り替わらないのでしょうか。 次に考えられるのはどの箇所なのでしょうか…。 もう自分はちんぷんかんぷんの状態です。 header関数についてもphpのサイトでちょっと見てみましたが、とりわけ誤っているようには思えませんでした。(初心者の見たまんまでしたが…)

回答No.5

本来、このタグ <input type="HIDDEN" name="action" value="post"> この値を見ているのだと思いますが、この上の行に</form>があるので、このactionの値はフォームの値として送られていません。なので、</form>の上にこの行を移すか、あるいはif($action == "post"){の分岐自体を省いてしまうかでこのセクションは解決すると思います。

naranara
質問者

補足

お付き合い、本当にありがとうございます。 いろいろ編集してがんばっているのですが、 パスワードファイルにないユーザーIDとパスワードを入力した場合、 「echo "<CENTER><BR><BR><BR><FONT COLOR='red'>ユーザーIDとパスワードが間違っています。やり直して下さい。</FONT>\n";」 の構文で表示されるはずの、 「ユーザーIDとパスワードが間違っています。やり直して下さい。」(赤い文字) ↑の表示が出来るようにはなりました。 しかし、正しいIDとパスワードを入力しても振り分けのリンクが出来ず、パスワードが間違っていれば赤い字で表示される部分に、たとえば、権限1の人のユーザーIDとパスワードを入れた場合、 「Warning: Cannot modify header information - headers already sent by (output started at /usr/home/free/home/(ウェブスペースアカウント名)/public_html/members_login_PC2.php:5) in /usr/home/free/home/(ウェブスペースアカウント名)/public_html/members_login_PC2.php on line 132」と表示されます。 ちなみにphpファイルの131行目~134行目は case "1": header ("location: http://www.dell.com"); exit(); break; となっています。 ページをリンクさせる構文が違うという意味なのでしょうか。

回答No.4

動きませんか。でもこれ以降もやる事は一緒です。原因と思われる事を推測して、一つ一つ変数の中身を確認していくだけです。実際今回のテストで、フォームからの値が正常に受け渡されている事がわかりました。原因が一つ潰れたわけです。これは一歩前進です。これを繰り返していくだけです。 if($action == "post"){ $p_data = file($data_file); $p_flag = 0; for($i=0; $i<count($p_data); $i++){ list($id,$pass,$authlv) = split(",", $p_data[$i]); if($id == $u_id && $pass == $passwd){ $authlevel = $authlv; //ここで権限レベルも読み込みます $p_flag++; } } このパートの$actionって何の変数ですか?フォームから$actionっていう変数で何か値を渡しているんですか?そしてそれは"post"という文字列で間違いはないですか?だとしたら前回と同じように print "action=".$action."<br>\n"; として、"post"が入ってるか確認して下さい。 同じように変数の中身が疑わしい部分を表示させて、期待通りの値になっているかどうか確認して下さい。

naranara
質問者

補足

お世話になっております。 今回もご指摘のとおり、print文にて $actionの変数の動作について確認をしてみました…が、 今度はフォーム上でIDとパスワードを入力しても何も表示されませんでした。 これが、何をしようとしている変数なのか、ということは、正直わかりません(・・;) というのも、このオリジナルソースももはや連絡が取れないある方に作ってもらったものなので、 自分で何を意図して一つ一つの構文を打っているかは全くわからずにそのままコピペしていったのです。

回答No.3

No1です。初心者という事で、恐らくうまく動かないことばっかりだと思うんですね。で、動かない時にいちいち聞いていては恐らく全然進まないと思うんですよ。ですから、動かない時にどうするか、どういう考え方をするのか、という視点で書いたつもりだったんですが、ダメでしたか(^^;。 ベテランでも書いたスクリプトが一発で動くことなんて少ないんです。一発で動かなくて、一つ一つ現象を調べながら動くようにしていくんです。ですから、どんなスクリプトでも動かなくて当然、それを動くようにする事が一番大事な作業だって考えて下さいね。 さて、取り急ぎやって頂きたい事はまず switch (authlevel){ ここですね。質問を書き込む時の単なるミスタイプだと思って触れなかったんですが、switch($authlevel){としないと$authlevelの内容を見ている事にはなりません。そこを修正してエラーが出たという事ですが、何かミスタイプなどをしているのだと思います。よく見直して下さい。このエラーの原因は「文法違反」です。カッコの数が合わない、"や'の対応がおかしい、などなどのミスタイプが原因です。 次に一番最初でいいですから、 print "u_id=".$u_id."<br>\n"; print "passwd=".$passwd."<br>\n"; の2行を入れて下さい。$u_id,$passwdという2つの変数は、ログインフォームから受け渡される変数ですよね?この2つの値が正常に受け渡されているかどうかを調べて下さい。正常に受け渡しができていれば、内容が表示されます。もし何も表示されなければ、フォームからのデータがスクリプトに届いていません。 僕の推測では恐らくここが空なのではないかな、と思っています。その場合、No2さんのご指摘のimport_request_variablesでとりあえず対処しておきましょう。 import_request_variables ("gp",""); の1行を一番頭におまじないだと思って入れて下さい。 これで動いたらバンザイですね。もし動いたら、参考URLのNo5の回答を読んでみて下さい。

参考URL:
http://okweb.jp/kotaeru.php3?q=1462496
naranara
質問者

補足

お答えありがとうございます。しかし出来ませんでした。 下記のとおりプログラムを直してみました。 <?php // import_request_variables ("gp",""); $data_file = "(d_file.datのある場所をフルパスで)"; //データファイルの指定 $authlevel = 0; //権限レベル設定 if($action == "post"){ $p_data = file($data_file); $p_flag = 0; for($i=0; $i<count($p_data); $i++){ list($id,$pass,$authlv) = split(",", $p_data[$i]); if($id == $u_id && $pass == $passwd){ $authlevel = $authlv; //ここで権限レベルも読み込みます $p_flag++; } } if($p_flag > 0){ switch($authlevel){ case 1: header ("location: http://www.dell.com"); exit(); break; case 2: header ("location: http://www.whitehouse.gov"); exit(); break; case 3: header ("location: http://www.waseda.jp"); exit(); break; case 4: header ("location: http://www.google.com"); exit(); break; case 5: header ("location: http://www.yahoo.co.jp"); exit(); break; default://ない筈だけど万が一を考えて・・ header ("http://www.kantei.go.jp"); exit(); break; //echo "<CENTER><BR><BR><BR><FONT COLOR='blue'>おめでとうございます。あなたは正式に認証されました。<BR><BR>\n"; //echo "ここにお好きなHTML表示を埋め込んで下さい。</FONT>\n"; } } else { echo "<CENTER><BR><BR><BR><FONT COLOR='red'>ユーザーIDとパスワードが間違っています。やり直して下さい。</FONT>\n"; } } ?> 教えていただいたように、 print "u_id=".$u_id."<br>\n"; print "passwd=".$passwd."<br>\n"; を入力すると、ブラウザでphpファイルを開けば、u_id=、 passwd=、 というものが表示され、IDとパスワードを入力してから送信ボタンをクリックすると、フォームに入力したIDとパスワードが表示されるようになりますが、やはり依然としてページは切り替わらず、同じフォームが表示されてしまいます。

回答No.2

switch (authlevel){ の部分は$authlevelでは? フォームのu_id やpasswdは取得できていますか? 確認の為にechoで表示してみては? もしできていないようであれば、 import_request_variables("p", ""); を記述してみてはいかがでしょうか。

naranara
質問者

補足

お答えありがとうございます。 冒頭のご指摘の部分を書き換えましたところ、 Parse error: parse error, unexpected T_CASE in /usr/home/~/public_html/(ファイル名).php on line 130 という風に出てしまい、書き換えたところのParse errorとなってしまいました。 また、echoでフォーム部分を書くのは難しいと思い、普通のWEB制作ソフトで作ったhtmlに提示したプログラムを貼り付け、拡張子をphpに変えただけです。 import_request_variables("p", ""); を記述する方法もわかりません。ネットで調べてみたのですが、やはり具体的なサンプルがないので…。 import_request_variables("p", ""); ↑をどこに付け足せばいいのでしょうか?

回答No.1

スクリプトがうまく動かない場合は、論理的に考える事と、それぞれの変数が期待通りになっているかを一つ一つ確認してく事で原因がわかります。 同じログインフォームが表示されるという事は if($p_flag > 0){ ここでelseになってるという事ですよね。恐らく$p_flagが0のままなのでしょう。 ではなぜ$p_flagが0のままなのかと言うと if($id == $u_id && $pass == $passwd){ この行が一向にtrueにならないから、と予測されます。 ここまで考えたら、後は$id,$u_id,$pass,$passwdをprint文などで表示させてみましょう。 恐らく原因は$u_idと$passwdが空なのではないかな、と推測します。もし空になっていましたら、$u_idと$passwdを$_GET["u_id"]$_GET["passwd"]または$_POST["u_id"]$_POST["passwd"]と書き換えてみて下さい。 なお質問のテーマではありませんが、他のサイトに飛ばす場合 header ("location: URL"); exit(); とする方が適切だと思います。まあ、サンプルなのでこう書いているだけだとは思いますが。

naranara
質問者

補足

ご回答ありがとうございます。 全くの初心者で難しいことをしようとしているので、見当違いの事を聞いてしまうかもしれないのですが、 ご指摘の箇所を改善するのにどのようにすればいいか、正直なところわかりません。 他のサイトに飛ばす部分の header ("location: URL"); exit(); これについては、 switch (authlevel){ case 1: header ("location: http://www.dell.com"); exit(); break; ということなのでしょうか? このレベルのことからわからない状態です。

関連するQ&A

  • parse_errorについて

    お世話になっております。 下記は、認証phpのプログラムになるのですが、  $p_data = file($data_file); の部分にてparse_errorになってしまいます。 どの部分がおかしいのかご教授願えないでしょうか? また皆様がparse_errorの部分を特定する手法として用いている方法をご教授頂けたらと思います。 よろしくお願いします。 <?php $data_file = "./d_file.dat"; //データファイルの指定 if ($action == "post") {  $p_data = file($data_file);  $p_flag = 0;  for($i=0; $i<count($p_data); $i++){   list($id,$pass) = split(",", $p_data[$i]);   if($id == $u_id && $pass == $passwd){    $p_flag++;   }  }  if($p_flag > 0){   echo "<FONT COLOR='red'>おめでとうございます。あなたは正式に認証されました。</FONT>\n" ;  } else {   echo "<FONT COLOR='red'>ユーザーIDとパスワードが間違っています。やり直して下さい。</FO NT>\n";  } } ?> d_file.dat の中身 komochan,777, komo,888, micchan,999,

    • ベストアンサー
    • PHP
  • .htaccessによるユーザー認証

    FC2の無料ホームページで .htaccess のユーザー認証を試みてますが、上手くいきません。 .htaccessの内容は以下の通りで、  passというフォルダを作って、パスワードファイルを格納しています。 AuthType Basic AuthName "Input your ID and Password." AuthUserFile /pass/passwd.dat require valid-user 状況としては、エラー表示もせず何度もパスワードをきいてきます。 どなたか、お助け下さい!

  • BASIC認証のユーザー名をPHPで取得したい

    とあるレンタルサーバで、 BASIC認証のホームページを作成しております。 BASIC認証は「.htaccess」で AuthType Basic AuthName "メンバー専用ページ" AuthUserFile "ファイルパス" require valid-user ログイン後のページにアクセス解析機能をつけたいと思っていますが、BASICで入力したログインのユーザ名が取得できなくて困っております。 echo "test1:" . $_REQUEST['PHP_AUTH_USER']. "<br />\n"; echo "test2:" . $_SERVER['PHP_AUTH_USER']. "<br />\n"; echo "test3:" . $PHP_AUTH_USER . "<br />\n"; と書いて画面に出力してみましたが、正しくログインしていても 空又はNULLの状態です。 Apacheの設定?phpの設定?ソースコードの間違え? などわからない状態になっています。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPファイルとテンプレートファイルの書き方

    <?php // ファイル名 $fname = "test.csv"; // ファイルを開く $file = fopen($fname, "r"); // 全データを出力する while (list($id, $name, $add) = fgetcsv($file, 1000, ",")) { echo "<hr>"; echo "<br>ID:".$id; echo "<br>名前:".$name; echo "<br>住所:".$add; } // ファイルを閉じる fclose($file); ?> <質問> 上の内容をSmartyを使ってPHPファイルとテンプレートファイルに分離したい。 テーブルにCSVファイルのデータが入るようにしたい。 PHPファイルとテンプレートファイルの書き方を教えてください。

    • 締切済み
    • PHP
  • PEARでのAuth認証について

    ただいまPEAR入門を参考に勉強しているのですが 認証部分でつまずいてしまっています。 どなたか御教授いただけませんでしょうか。 簡単なログイン認証をするためにサンプル通りのコードを 作って表示テストを行うものなのですが 認証できたら「認証済みです」 できていなければ「ID/パスワードが違います」 と表示されるようなものです。 IDもパスワードもきちんと入れているのですが認証できないため 悩んでいます。 以下そのコードを書きますので助言いただけるとありがたいです。 *contents.php* <?php require_once("Auth.php"); function loginFunction($usr, $status){ require_once("loginForm.php"); } $params = array( "dsn" => "mysqli://pear:pass@localhost/pear", "table" => "auth", "usernamecol" => "username", "passwordcol" => "password"); $myAuth = new Auth("DB", $params, "loginFunction"); $myAuth -> start(); if($myAuth -> getAuth()){ print("認証済です。"); } ?> *loginForm.php* <?php switch($status){ case AUTH_IDLED : case AUTH_EXPIRED : $err = "ログイン期限が切れています。再ログインしてください。"; break; case AUTH_WRONG_LOGIN : $err = "ユーザID/パスワードが間違っています。"; break; } ?> <html> <head> <title>ログインページ</title> </head> <body> <form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?>"> <table border="0"> <tr> <th align="right">ユーザID:</th> <td><input type="text" name="username" size="15" maxlength="20"></td> </tr> <tr> <th align="right">パスワード:</th> <td><input type="password" name="password" size="15" maxlength="20"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="ログイン"> </td> </tr> </table> <font color="red"><?php print($err); ?></font> </form> </body> </html>

    • ベストアンサー
    • PHP
  • CGI Perlでの認証について

    CGIにてログイン認証の処理を使用してみたく勉強がてら Perlにて作成しているのですが、どうもうまくいかない ので質問させてもらいます。 ID・パスワード保存用ファイルfile.datにあらかじめ 100<>p34z7 500<>332bdz といった感じで入力してまして、 ログインボタンを押したときに &login_chk($post{'id'},$post{'pwd'}); (URIデコード処理して$post{'id'},$post{'pwd'}を取得します) を実行して下記サブルーチンを呼び出します。 sub login_chk { my ($in_id, $in_pass) = @_; my ($id, $pass); my $data; if (!open (IN, "./file.dat")) { &Error("ファイルが開けません"); } while ($data = <IN>) { ($id, $pass) = split(/<>/, $data); if ($in_id eq $id){ last; } } close(IN); unless ($in_pass eq $pass) { &Error("正しいID・パスワードを入力してください"); } } ※現状ファイルロックの処理はしてません。  パスワードの暗号化もしてません。 で、IDに100、パスワードにp34z7と入力してログインしようとするのですが 「正しいID・パスワードを入力してください」とエラーが出てきます。 当然500のときも同じくエラーでした。 どこが問題なのでしょうか?昨日から考えてずっとわからないのでご回答よろしくお願いします。

    • ベストアンサー
    • Perl
  • AUTHのフォーム認証で認証されない原因がわかりません

    AUTHを使いフォーム認証を試みていますが、 AUTH_WRONG_LOGINが返ってきます。 なぜ、認証されないのか原因が全くわかりません。 (単純入力ミス、パスワードのmd5による暗証値等の登録ミスではありません。) 以下がコードですが、コードに不適当な個所があればご指摘いただければと思います。 また、コードに問題がないようであれば、原因として何が考えられるか助言 をいただければと思っています。 (1)認証フォーム <html> <head> <title>ログインページ</title> </head> <body> <form method="POST" action="<?php> print($_SERVER['PHP_SELF']) ?>"> <table border="0"> <tr> <th align="right">ユーザID:</th> <td><input type="text" name="username" size="15" maxlength="20" /></td> </tr> <tr> <th align="right">パスワード:</th> <td><input type="password" name="password" size="15" maxlength="20" /></td> </tr> <tr> <td colspan="2"> <input type="submit" value="ログイン" /> </td> </tr> </table> <font color="red"><?php print($err); ?></font> </form> </body> </html> (2)認証コード <?php function loginFunction($usr,$status){  switch($status){   case AUTH_IDLED :   case AUTH_EXPIRED :    $err='ログイン期限が切れています。再ログインしてください';break;   case AUTH_WRONG_LOGIN :    $err='ユーザID/パスワードが間違っています。';break;   case AUTH_METHOD_NOT_SUPPORTED :    $err='認証方法が未サポート';break;   }   require_once('loginForm.php');   }   $params=array(    'dsn'=>'uri:file://XXXXX\XXXX.dsn',    'table'=>'login', 'usernamecol'=>'username', 'passwordcol'=>'password', 'db_fields'=>'*'); $myAuth=new Auth('DB', $params, 'loginFunction'); $myAuth->start(); if(!$myAuth->getAuth()){ exit(); } ?> .htaccessを使用し、認証コードが逐次実行されるようにしています。 [PHP使用環境] PHP=5.1.6 OS=Windows2000 PRO webserver=apatch2.0 [DB環境(リモートサーバ)] DB=MS SQL Server2000 OS=Windows2003 server R2 説明不足等がありましたら、ご指摘ください。

    • ベストアンサー
    • PHP
  • ファイル書き込みが重複する

    こんばんわです。 以下のスクリプトで 投稿データを時系列に新しい書込み順に表示させようとしているのですが、一度実行させると同じ投稿がいくつも表示されてしまうのです。ご回答お願いいたします。一部省略しています。 <?php if($name== "" or $body == ""){ echo '<font color = "#FF000">必須項目入力エラー</font><br>'; echo 'お名前と本文は必ず入力してください<br>'; echo '<a href = "javascript:history.back()">戻る</a>'; } $body = substr($body, 0, 1000); $body = str_replace("\r\n", "<br>", $body); $dt = date("y/m/d H:i:s"); $data = file("data.txt"); $file = fopen("data.txt", "w"); fwrite($file, "$name\t$mail\t$body\t$dt\n"); $i = 1; foreach ($data as $value) { if($i < 30) { fwrite($file, "$value"); $i++; } } fclose($file); } echo ' subject03-BBS <h1>subject-BBS</h1> <form method="post" action="subject03.php" > お名前 <input type="text" size="20" maxlength="40" name="NAME"> メール <input type="text" size="30" maxlength="60" name="MAIL"> <p>本文<br></p> <textarea rows="20" cols="80" wrap="soft" name="BODY"></textarea> <p><input type="submit" name="SUBMIT" value="送信"><p/> </form> '; $data = file("data.txt"); foreach($data as $value){ $view = explode("\t",$value); if($mail== ""){ echo "お名前:$name$view[3]<br>"; } else{ echo "お名前:<a href=\"mailto:$mail\">$name</a>$view[3]<br>";} echo "本文:$body<br>"; } ?>

    • ベストアンサー
    • PHP
  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • GOMplayerのユーザー認証について

    GOMplayerをインストールしたのですが、ユーザー認証があってIDとパスワードを登録するところがあります。これはしなくてはいけないのですか? また、雑誌で読んだんですがこのGMplayerには破損されたムービーファイルの修復機能があるようです。どうしたら使えるのでしょうか。 お手数ですがアドバイスお願いします。

専門家に質問してみよう