こんにちは。
フォームのテキストボックスで半角カナを入力して送信すると、文字が化けることがあります。
どうにか回避できないでしょうか、、、^^;

「半角カナを入力するな!」という常識的な回答(笑)はナシでお願いします。^^;
ちなみに、ソースは以下です。
最初submitのところのname属性を書いていなかった時はすべて文字化けを起こしていたのですが、name属性を追加したら最初の入力だけ化けることがある、という現象が置きました。
ちょっとはまってます、、、><

<?
header( 'Content-Type: text/html;charset=Shift_JIS' );

echo( "<html>\n" );
echo( "<head>\n" );
echo( "<title>文字送信テスト</title>\n" );
echo( "</head>\n") ;
echo( "<body>\n" );

if(isset($mode) == FALSE || $mode == ""){

echo( "<form action=\"test.php\" method=\"post\">\n" );
echo( "<input type=\"hidden\" name=\"mode\" value=\"1\">\n");

echo( "<input type=\"text\" name=\"KANA\" istyle=\"1\"><br>\n" );
echo( "<input type=\"submit\" name=\"\" value=\"送信\">\n" );
echo( "<input type=\"reset\" value=\"クリア\">\n" );
echo( "</form>\n" );

}else{

echo("KANA=$KANA<br>\n");

}

echo("</body>\n");
echo("</html>\n");

?>

このQ&Aに関連する最新のQ&A

A 回答 (5件)

PHPメーリングリストの過去ログで、こんなの見つけました



「[PHP-users 3054] Re: SJIS->EUC bug ?」より抜粋
-------------------------------------------------
PHP4.0.3pl1+jstring moduleとPHP4.0.6 with mbstringでは、文字コード判定
ルーチンに変更があり、挙動が変わっているため、同じスクリプトでも
文字化けが発生する可能性がある。
文字コード判定ミスに関してはPHP4.0.3pl1+jstring moduleでも起こりうるので
文字コード判定を助けるため<FORM ~>と</FORM>の間に、たとえば
<input type="hidden" value="日本語判定用文字列">等を埋め込むとよい。
文字列は、判定を助けるために十分な長さの物を指定した方がよいようだ。
-------------------------------------------------

やっぱり、おまじないは必要なんですね。
    • good
    • 0
この回答へのお礼

おおお!なんてグッドな回答!!(≧▽≦)b
本当にそういう解決法でよかったんですね~^^

こういう問題って検索するの、大変ですよね!(なんてキーワード打ってよいやら^^;
スバリな回答見つけてくださって、どうもありがとうございました~!!m(_ _)m

お礼日時:2001/11/27 23:53

おお、ようやくご存じの方の回答が付きましたね。

(^_^)
ところで、

>質問締め切りの際は、ぜひポイントをもらってくださいね^^

ということですが、そのお気持ちだけ有り難く頂いておきます。
それよりも、NIGHT2000さんのお役に立った方に差し上げてください。
心のこもったお礼だけで充分です。(ポイントよりも嬉しいです)
納得のいく回答が頂けると良いですね。(^_^)
    • good
    • 0
この回答へのお礼

たびたびどうもありがとうです!^^
おかげさまでよい回答を得ることが出来ました。

不可思議な現象にハマってちょっと放置気味(汗)だったので、naturalさんの回答で再度いろいろと試す気力がわき、とても助かりました!^^
捨てずに質問してみてよかったです~(*^-^*)

本当にどうもありがとうございました!m(_ _)m

お礼日時:2001/11/27 23:52

「その解決方法に異議あり!」というわけではありませんが、


私の環境で正常に動作するプログラムを紹介します。
IE version5.0
PHP version4.0.6(Miracle Linux Ver.2.0)

確かにNIGHT2000さんのプログラムは文字化けすることを
確認しました。
でも、それをほとんど修正していない私のプログラムは
正常に動作するのです。なぜでしょうか?

「hiddenで全角文字をダミー送信」のおまじないをして
いるPHP3のプログラムを見たことがあります。
でも、4.0.6ではそんなことを意識しなくてもよいと
思っていたのですが間違いなのでしょうか?
詳しい人教えてください。

<?
header( 'Content-Type: text/html;charset=Shift_JIS' );
echo( "<html>\n" );
echo( "<head>\n" );
echo( "<title>文字送信テスト</title>\n" );
echo( "</head>\n") ;
echo( "<body>\n" );

if(empty($sub)){
echo( "<form action=\"test3.php\" method=\"post\">\n" );
echo( "<input type=\"text\" name=\"KANA\" istyle=\"1\"><br>\n" );
echo( "<input type=\"submit\" name=\"sub\" value=\"送信\">\n" );
echo( "<input type=\"reset\" value=\"クリア\">\n" );
echo( "</form>\n" );
}else{
$str = mb_convert_kana($KANA, "KV");
echo("KANA=$str<br>\n");
}
echo("</body>\n");
echo("</html>\n");
?>
    • good
    • 0
この回答へのお礼

うーん、私もこれ(mb_convert_kana)はやってみたのですが、ダメな時がたまにあって、、、^^;
どうしてなんでしょう、、、
ダメな時、というのは最初から(受け取ったときに)化けている場合、のようです^^;

>「hiddenで全角文字をダミー送信」のおまじないをして
>いるPHP3のプログラムを見たことがあります。
>でも、4.0.6ではそんなことを意識しなくてもよいと
>思っていたのですが間違いなのでしょうか?

おおお!?やはり既存の方法だったのですね~^^;
不具合はないのかちょっと心配です、、、(今のところ大丈夫そうですが)

どなたか詳しい方~~!ぜひご教授ください~!m(_ _)m

tomomo0325さん、回答くださってありがとう!^^

お礼日時:2001/11/27 19:19

お礼&補足有り難うございます。



>「ページを読み込んで最初の送信で文字化けし、戻って再送信すると直る」という現象が起きています。><

なるほど、不可思議ですね~。(^_^;
これに関してはPHPをご存じの方でないと解らないと思いますので、他の方の回答に期待しましょう。

さて、的外れかもしれませんが、もう2,3心当たりを挙げてみたいと思います。

>ちなみに実際は、受け取った後、半角だったら全角に変換して使用する、というソースにしています。

ということですが、一度test.phpの最初に変数KANAに対して無条件で変換関数を使用してみて頂けますか?
h2zの場合、半角カナ以外の部分には全く影響を及ぼさないのでこのような使い方をしても問題ないのですが、そうでない場合は結構です。

もう一点です。
h2z_xxxは実際にはh2z_sjisやh2z_jis、h2z_eucといった形で使用されます。
もしもPHPの関数にも文字コードによる使い分けがあれば、他のコードで一度お試し下さい。

何れも的外れの場合はご容赦を。(^_^;

#「補足入力のみだと回答を強要しているようで」→大丈夫、そんなことはありませんよ。(^_^)
    • good
    • 0
この回答へのお礼

再度回答ありがとうございます!!^^

>一度test.phpの最初に変数KANAに対して無条件で変換関数を使用してみて頂けますか

やってみたのですが、やはり最初から化けている(しかも漢字になっている)ため変換もうまく行きませんでした。
でもいろいろ考えてくださってどうもありがとうございます^^

実は!ある方法で解決いたしました!^^;
半角カナをinputタグで送るとき、一緒にhiddenででも全角文字をダミー送信するだけで、文字化けが回避できました!(なぜに!?^^;

というわけで、その解決方法に異議あり!という方のために、もう少し回答受付中に(しつこい^^;)しておきます。

>#「補足入力のみだと回答を強要しているようで」→大丈夫、そんなことはありませんよ。(^_^)

重ね重ねどうもありがとうです(*^^*)
質問締め切りの際は、ぜひポイントをもらってくださいね^^

お礼日時:2001/11/27 17:10

私はPerlでCGIを作成していますので、この場合の具体的な解決方法は提示出来ませんがご容赦下さい。


Perlの場合も先頭からの半角カナは文字化けを起こします。
半角カナを送る限り回避のしようがありません。
ですので、Perlの関数を用いてテキスト中の半角カナのみを全て全角カナに変換します。
こうすれば勿論文字化けは防げますよね。
問題はPHPにPerlでいうところのh2z_xxx(半角カナ→全角カナに変換する関数。xxxは文字コードを指定。)があるかどうかです。
これに該当する機能があるのであれば、全角カナに変換する方法が確実だと思います。

#念のため、h2z_xxxはjcode.plという日本語ライブラリに用意されている関数です。

この回答への補足

アドバイスありがとうございます。^^

>先頭からの半角カナは文字化け

説明が不十分ですみません^^;
「ページを読み込んで最初の送信で文字化けし、戻って再送信すると直る」という現象が起きています。><

>Perlの関数を用いてテキスト中の半角カナのみを全て全角カナに変換

はい^^
PHPにもその関数が存在します。
ちなみに実際は、受け取った後、半角だったら全角に変換して使用する、というソースにしています。
しかし、今の現象では次のページで受け取ったときにすでに化けていてどうしようもないんです~><
たとえば、「カン」と半角カナで入力すると、次のページでは「菌」になって入ってきます^^;

やはり、半角カナは使うな~!で終わらせるしかないのでしょうか、、、^^;

とりあえず今の私の環境は以下です。
IE version4.72
Netscape(R) Communicator 4.73
PHP version4.06

補足日時:2001/11/27 13:53
    • good
    • 0
この回答へのお礼

補足入力のみだと回答を強要しているようでなんなので、完結的にお礼を、、、^^;

この問題についてはまだしばらく受け付け中にしていますが、私のほうでもいろいろまた試してみます。

お答え頂きありがとうございました^^

お礼日時:2001/11/27 14:25

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSJISで取得した半角カナをUTF-8に変換する方法

現在、画面がSJISで作成されており、スクリプトはUTF-8で作成されています。
画面から来るデータを全て自動的にUTF-8に変換し、スクリプト上で処理し、
最後に自動的にSJISに変換し直して画面へ出力しています。

しかし、半角カナだけの文字列が画面から渡ってきた場合、
文字エンコーディングした瞬間、化けます。
全角文字を含んでいれば問題ないのですが・・・。
化けてしまう為、スクリプト内で既に支障を来たしてしまいます。

これをどうにか解消させる方法はありませんでしょうか?
以下、決定事項の為、変更する事は出来ません。
 ・画面はSJISで出力、テンプレートファイルもSJISで記述
 ・スクリプトはUTF-8で記述
 ・根本的なエンコーディング処理
  (受け取った値に対して、以下の処理を走らす。
  mb_language("japanese");
  mb_convert_encoding("UTF-8", "auto");
  画面へ出力する際に、以下の処理を走らす。
  mb_language("japanese");
  mb_convert_encoding("SJIS", "auto");としている)
 ・画面から受け取る文字列は何でも受け取る

どなたかご教示下さい。

現在、画面がSJISで作成されており、スクリプトはUTF-8で作成されています。
画面から来るデータを全て自動的にUTF-8に変換し、スクリプト上で処理し、
最後に自動的にSJISに変換し直して画面へ出力しています。

しかし、半角カナだけの文字列が画面から渡ってきた場合、
文字エンコーディングした瞬間、化けます。
全角文字を含んでいれば問題ないのですが・・・。
化けてしまう為、スクリプト内で既に支障を来たしてしまいます。

これをどうにか解消させる方法はありませんでしょうか?
以下、決定...続きを読む

Aベストアンサー

sjisの半角カナをautoで判定しているためEUC-JPと誤判定されているのでしょう
自動判定は使わないほうがいいです
mb_convert_encoding($str, "UTF-8", "sjis-win");
でいいのでは

QPOSTしたデータの文字コードがutf-8になる

ヘッダーで文字コードをSJISになるように

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

と設定し、ボディ側のformで

<form method="post" action="xxxxx">
<input type="text" name="n" value="">
<INPUT type="submit" value="実行"><br />
</form>

とすると、サーバ側で受け取ったname="n"がutf-8になっています。
PHPですが、受け取った文字を
echo mb_convert_encoding($_POST["n"],"SJIS","utf-8"):
とSJISに変換し、表示すると、文字化けなく表示可能なのですが、そのままでは文字化けてしまいます。(表示側のHTMLも文字コードは上記と同様にヘッダーで文字コードを指定しSJISにしています。)

何が悪いのでしょうか?(特殊な環境としてはchrome+jquery mobileを使用しています。)
よろしくお願いします。

ヘッダーで文字コードをSJISになるように

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

と設定し、ボディ側のformで

<form method="post" action="xxxxx">
<input type="text" name="n" value="">
<INPUT type="submit" value="実行"><br />
</form>

とすると、サーバ側で受け取ったname="n"がutf-8になっています。
PHPですが、受け取った文字を
echo mb_convert_encoding($_POST["n"],"SJIS","utf-8"):
とSJISに変換し、表示すると、文字化けなく表示可能なのですが、そのま...続きを読む

Aベストアンサー

HTML本体の文字コード・・と言うのは遠い昔の--20年位前(^^)のお話で、HTML4.01(1999年)以降は
<form action="[URI]" method="post|get" accept-charset="文字符号化方法のリスト">
→accept-charset ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#adef-accept-charset )

ですから、本文の記述に関わらず、エンコードは指定できます。

accept-charset="UTF-8"
accept-charset="iso-2022-jp,UTF-8,EUC-JP,Shift_JIS"
とブラウザが可能なエンコードを順次テストできるようリストを書いておくことも行われます。

 しかし、現実にはブラウザは様々で、携帯電話などは指定に関わらずShift_JISで送信したり、本文の文字コードに従うブラウザも実在しますから、データを受け取ったサーバー側で文字コードを判別して適切にエンコードする必要があります。
 PerlにしろPHPにしろ、文字コード判別のモジュールは利用できますから、問題ないでしょう。

ASCII JIS > UTF-8 > EUC-JP > SJIS ( http://www-ise3.ist.osaka-u.ac.jp/miura/?PHP%20GET%2FPOST%A5%E1%A5%BD%A5%C3%A5%C9%A4%C7%A4%CE%C6%FC%CB%DC%B8%EC%A4%CE%CA%B8%BB%FA%B2%BD%A4%B1%CB%C9%BB%DF )
ページの文字コードとは違う任意の文字コードをformから送信する方法|web bibo ( http://www.webbibo.com/blog/htmlcss/accept-charset.html )
とか・・
 

HTML本体の文字コード・・と言うのは遠い昔の--20年位前(^^)のお話で、HTML4.01(1999年)以降は
<form action="[URI]" method="post|get" accept-charset="文字符号化方法のリスト">
→accept-charset ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#adef-accept-charset )

ですから、本文の記述に関わらず、エンコードは指定できます。

accept-charset="UTF-8"
accept-charset="iso-2022-jp,UTF-8,EUC-JP,Shift_JIS"
とブラウザが可能なエンコードを順次テストできるようリストを書...続きを読む

Qで文字を右揃えにしたいのですが...(^-^;

こんばんは。私は今HPを作っています。
それで質問なんですけど、
HTMLで<SPAN>ってタグありますよね?
それにCSSを使って(? <SPAN>で囲まれた場所を
文字を右揃えに表示させたいのですが、何故かうまくいきません。
<SPAN style="text-align: right">○○</SPAN>
このようなタグで使いました(上)
何故なのでしょう、教えてください。
よろしくお願いします。

ちなみに、このようなものをつくりたいのです。(下)
リンク集なんですけど;

HPタイトル   管理者名
―――――――――――――――
バナー
―――――――――――――――
このHPの説明

これの管理者名のところを右揃えに表示したいのだが、
うまくいかないのです;<DIV>だと改行されてしまうし...

Aベストアンサー

span要素に対しては、text-alignの指定は有効にならないと思います。 こういった場合、positionプロパティを指定してポジショニングするか、floatプロパティで回り込みをさせるのが良いと思います。
CSSに頼らない方法をとっても良いなら、テーブルでレイアウトするのも手でしょう。

スタイルシートで処理する場合のソースの書き方ですが、以下のようにしてみてはいかがでしょうか。

<div>
<span style="float: right;">管理者名</span>HPタイトル
<hr style="clear: right;">
<img src="*" alt="バナー">
<hr>
<p>このHPの説明</p>
</div>

こうすると、お望みどおりになるのではないかと思います。 なお、「<span style="float: right;">管理者名</span>」これは、回り込みさせるテキストの前、この場合はHPタイトルの前に入れてください。 HPタイトルの後ろに入れてしまうと、管理者名が一段下にずれて表示されると思います。

参考になれば幸いです。

span要素に対しては、text-alignの指定は有効にならないと思います。 こういった場合、positionプロパティを指定してポジショニングするか、floatプロパティで回り込みをさせるのが良いと思います。
CSSに頼らない方法をとっても良いなら、テーブルでレイアウトするのも手でしょう。

スタイルシートで処理する場合のソースの書き方ですが、以下のようにしてみてはいかがでしょうか。

<div>
<span style="float: right;">管理者名</span>HPタイトル
<hr style="clear: right;">
<img src="*" alt="バナー...続きを読む

Qページ移動した場合の、フォームデータの保持

PHP初心者です。

私が作っているPHPのシステムで、ユーザーがフォームデータ入力途中に、他のページに移動すると、「戻る」ボタンなどですぐに戻ってきても、入力したフォームデータが消えてしまいます。

例えば、この「教えてgoo」の「新しい質問をする」のフォームはPHPで生成されていますが、

http://oshiete1.goo.ne.jp/oshiete_new.php3?c=256

途中でちょっと他のページに行っても、(すぐ戻れば?)入力したデータは保持されますよね。

こんなふうにしたいのですが、どうすればよいでしょうか?
「戻る」ボタンで戻ったときに、サーバーから毎回新しいXHTMLをロードしてくるので、入力データがクリアされてしまうのでしょうか?

フォーム入力⇒確認画面⇒「戻る」ボタンで戻るとフォームデータが保持されないということではなく、あくまでフォーム入力中に、ちょっと他のページに行って戻ってくるという設定です。

よろしくお願いします。

Aベストアンサー

原因はセッション関連にありそうですね。
session_cache_limiter()
というのは指定されていますか?
恐らく現状はnocache(ページ内容をキャッシュしない状態)になっているのだと思います。

もし
session_cache_limiter('nocache');
となっていれば、publicもしくはprivateへ変更してみて下さい。
ないようでしたら、session_start()の前に
session_cache_limiter('public');
session_cache_limiter('private');
のどちらかを記述してみて下さい。
publicだと、クライアントマシン、プロキシのどちらもキャッシュを保持しますが、
privateだとクライアントマシンのみキャッシュを保持します。
どちらが良いのかは使い方によると思いますし、
nocacheでないと困る時もありますから。

session_startを削除してしまって良いかどうかは、
他の部分の処理との関連が分からないので何とも言えないです。

一度試してみて下さい。

参考URL:http://jp.php.net/session_cache_limiter

原因はセッション関連にありそうですね。
session_cache_limiter()
というのは指定されていますか?
恐らく現状はnocache(ページ内容をキャッシュしない状態)になっているのだと思います。

もし
session_cache_limiter('nocache');
となっていれば、publicもしくはprivateへ変更してみて下さい。
ないようでしたら、session_start()の前に
session_cache_limiter('public');
session_cache_limiter('private');
のどちらかを記述してみて下さい。
publicだと、クライアントマシン、プロキシのどち...続きを読む

Qfunctionから別のfunctionを実行したい

よろしくお願いします

今JavaScriptで
function a(){
処理A
}
function b(){
処理B
}
function c(){
処理C
処理Aをして終わり
}
と言うことをしたいのですが

function a と同じコードをcに書くのが大変なので
function cからaを呼び出して実行することができないかと考えています

検索も色々してみたのですが
これと言った答えがなかったので質問しました
よろしくお願いします。

Aベストアンサー

他の箇所から、function a()をコールするときと同様に、function c()内でfunction a()をコールすることができます。

function c()
{
処理C
a();
}

Q外部ファイルにしたら文字化けしてしまいました

FC2ブログで下記【1】を

<script type="text/javascript">
<!--
【1】
// -->
</script>

で囲んで直接プラグインに書き込んだら
文字化けせずに表示されたのですが、

外部ファイルにして

<script type="text/javascript" src="【1】のJSファイルのパス"></script>

をプラグインに書き込んだら、
画像リンクはうまく表示されたのですが、
文字化けしてしまいました。

文字化けしない方法はないでしょうか?


【1】
// ランダムに画像を表示する
jmp = new Array();
img = new Array();
// ジャンプ先のアドレス(数字は画像と対応)
jmp[0] = "http://~";
jmp[1] = "http://~";
jmp[2] = "http://~";
jmp[3] = "http://~";
jmp[4] = "http://~";
// 画像のアドレス(数字はジャンプ先のアドレスと対応)
img[0] = "img/img1.jpg";
img[1] = "img/img2.jpg";
img[2] = "img/img3.jpg";
img[3] = "img/img4.jpg";
img[4] = "img/img5.jpg";
n = Math.floor(Math.random()*jmp.length);
document.write("<a href='"+jmp[n]+"' target='_blank'>");
document.write("<img src='"+img[n]+"' border='0'>");
document.write("</a>");

FC2ブログで下記【1】を

<script type="text/javascript">
<!--
【1】
// -->
</script>

で囲んで直接プラグインに書き込んだら
文字化けせずに表示されたのですが、

外部ファイルにして

<script type="text/javascript" src="【1】のJSファイルのパス"></script>

をプラグインに書き込んだら、
画像リンクはうまく表示されたのですが、
文字化けしてしまいました。

文字化けしない方法はないでしょうか?


【1】
// ランダムに画像を表示する
jmp = new Array();
img = new Array();
// ジャンプ先...続きを読む

Aベストアンサー

自分は5歳児だろうが主婦だろうが手は抜きません。


とりあえず試しに、

<script type="text/javascript" src="JSファイルへのパス" charset="Shift-JIS"></script>

~と言う風にしてみて下さい( charset="Shift-JIS" というのを付け足す)。それで文字化けが直るようなら、貴方のJSファイルの文字コードは「Shift-JIS」と言う事になります。FC2のBlogサービスですか?それでHPやBlogを作っているのなら、基本的には文字コードはサーバ側、つまりこの場合は「EUC-JP」に統一するべき~という事になります。

一般的に、Windowsの標準の環境だと。前段で述べた様な、様々な種類の文字コードを扱う事が出来ないので。事実上、作業は「Shift-JIS」1択と言う事になります。また『メモ帳(notepad.exe)』では「改行コード」を編集出来ないので、HTMLやJavaScript(JSファイル)を編集するには力不足です。何か特別なソフトとかを使わずに、Windows標準の『メモ帳(notepad.exe)』でJSファイルを編集したのであれば、十中八九、文字コードは「Shift-JIS」になっているはずです。


>文字コード
「文字コード」とは、コンピュータ上でテキストファイル(*.txt)をやり取りする時の方式の事で、現在では100種類近くの文字コードがあります。インターネット上でよく使われる文字コードは、「UTF-8」、「Shift-JIS」、「EUC-JP」~の3種類で、基本的にはこれだけ押さえておけばOKです。

考え方としては、日本語や英語のように。同じ意味を持つ文書でも色んな国の言葉で書く事が出来る様に。コンピュータ上での文書の表し方にも方言というか、色んな国の言葉がある様な物だと思ってて下さい。先に述べた「改行コード」や「BOM無し」とかは忘れて下さい。

で、初心者はコレだけ覚えて置いて欲しいのですが…

・半角英数文字だけなら文字化けは起きない

~と(実際は違いますが、話がややこしくなるので簡単にします)。半角英数文字ってのは「abc,?!#123456+-=」みたいな文字の事です。全角文字とは違うので注意して下さい(全角文字 → abc,?!#123456+-=)。従って逆説的に言えば「日本語を使う時は常に文字コードの影響を受ける」と言う事です。

自分は5歳児だろうが主婦だろうが手は抜きません。


とりあえず試しに、

<script type="text/javascript" src="JSファイルへのパス" charset="Shift-JIS"></script>

~と言う風にしてみて下さい( charset="Shift-JIS" というのを付け足す)。それで文字化けが直るようなら、貴方のJSファイルの文字コードは「Shift-JIS」と言う事になります。FC2のBlogサービスですか?それでHPやBlogを作っているのなら、基本的には文字コードはサーバ側、つまりこの場合は「EUC-JP」に統一するべき~という事になります。

...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

QCSSでreadonlyの機能はありますか?

ASPにてCSSを使用しています。
inputタグを読取専用(readonly)にしたいのですが、
スタイルシートでの指定の仕方がわかりません。
よろしくお願いします。

Aベストアンサー

> スタイルシートでも「IME-mode」の設定等、入力に関する制御も可能でしたので

それは某ブラウザが勝手に CSS を拡張して付けた機能で、本来の CSS ではそのようなことはできません。
CSS はあくまでも見た目つまりスタイルをデザインするためのものだと考えるべきです。

QCSSの部分リセットについて

サイト全体に影響するCSSでtableのボーダーを非表示に指定しています。
ところが、一部分のみCSS無指定状態のtableを表示する必要が出てしまいました。

該当するtableに別クラスを割り当てて、その部分だけを個別に指定しようと思いましたが、実際見てみると、CSS無指定状態とは微妙に見た目が異なってしまいます。


====CSS内容====
table {
border: 0px none;
}
td {
border: 0px none;
border-collapse: collapse;
}

/*普通にtableを書くとボーダーが消えてしまうので個別に指定*/
.reset table{
border: 3px ridge;
}
.reset td{
border: medium ridge;
border-collapse: collapse;
}

====HTML====
<div class="reset">
<table>
<tr>
<td>ああああああ</td>
<td>ああああああ</td>
</tr>
<tr>
<td>いいいいいい</td>
<td>いいいいいい</td>
</tr>
</table>
</div>


元のtableの指定はサイト全体に影響が出てしまうため、修正することができません。
いまさらながらものすごく後悔していますが・・・。

また、今後の使いまわしを考えると、IDの指定もできません。
無理矢理何とかできないかと思い、上記の方法を取りましたが、やはりうまくいきません。

理想としては、指定した箇所のみCSSの影響がなくなるということですが、いろいろ調べても見つかりませんでした。
根本的に作り直しした方がいいのは理解していますが、何か方法があればと思い質問させていただきました。

どなたか良い案がありましたらお助けください。

サイト全体に影響するCSSでtableのボーダーを非表示に指定しています。
ところが、一部分のみCSS無指定状態のtableを表示する必要が出てしまいました。

該当するtableに別クラスを割り当てて、その部分だけを個別に指定しようと思いましたが、実際見てみると、CSS無指定状態とは微妙に見た目が異なってしまいます。


====CSS内容====
table {
border: 0px none;
}
td {
border: 0px none;
border-collapse: collapse;
}

/*普通にtableを書くとボーダーが消えてしまうので個別に指定*...続きを読む

Aベストアンサー

多分色を完全に CSS 未指定状態と同一にすることは不可能でしょう。
ただ、未指定状態へと可能な限り近づけることならば可能です。

.reset table,td{
border: 3px outset;
}
.reset td{
border:1px inset;
border-collapse: collapse;
}

上記の CSS を指定されたテーブルは、下の HTML に似た表示状態になりました。
(上の CSS を下のテーブルに指定するという意味ではないので注意)
Gecko エンジンを使用したブラウザでは枠線の色が若干違うものとなりましたが、
IE と Opera では未指定状態と同じスタイルで表示されることを確認しました。

<table border="3">
<tr>
<td>ああああああ</td>
<td>ああああああ</td>
</tr>
<tr>
<td>いいいいいい</td>
<td>いいいいいい</td>
</tr>
</table>


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング