トップページphp
1001コメント358KB

△▲ WebProg 初心者の質問 Part13 ▼▽

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/09(木) 16:05:29ID:???
2ちゃんねるは初めて。 WebProg 板は初めて。
質問したいけど、どうしたら良いか分からない。

そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。

質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
 後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。

2ch 総合ガイド
http://www.2ch.net/guide/

お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。

関連情報は
>>2-3
0781nobodyさん2006/05/27(土) 01:21:51ID:???
>>780
クライアントでプログラムを実行するなら、Webサーバの種類は関係ないだろ。
それに、どういうことをやりたいのか教えてくれないと、何とも言えん。
FLASHやAjaxで出来るならこれらが楽だろうし、
音声通信とかなるとActiveXでも使わないと無理だと思う。
0782nobodyさん2006/05/27(土) 01:50:20ID:???
普通に GET なり POST で投げればいいだけかと
んで、CGI から帰ってきた内容を処理するだけ

返すデータの書式は好きに決めちゃえばいい
,Net なら XML とか簡単扱えそうだし、楽なら XML でもいいかと思う
0783nobodyさん2006/05/27(土) 09:08:57ID:???
>>780Ajaxまじおすすめ
0784nobodyさん2006/06/01(木) 17:13:35ID:YyUdMfFf
困っていることがあるのでどなたか教えて下さい。

.htaccessや(恐らく)gethostが使えないサーバーを借りています。
ぶっちゃけるとinfo…もごもご…です。
しかし最近変な輩が現れ、荒らしに近い行為をしています。
荒らす対象のCGIコンテンツはIPで制限できるのですが、すぐにIPを変えられて困っています。
そいつのホストの後半部分は、いつも同じなので同一人物です。
ocnなので串はさしてないはずです。

長くなりましたが、そいつに対して完全にアクセス制限を加えるにはどうしたら良いでしょうか。
ホストで制限するCGI(.htaccessを除く)があればベストなのですが…。
ちなみにPHPは使えません。
0785nobodyさん2006/06/01(木) 17:22:05ID:???
>>764
纏めとしては、この辺かな?
http://pc8.2ch.net/test/read.cgi/php/1078991985/555
0786nobodyさん2006/06/01(木) 17:23:26ID:???
785
× 764
○ 784
間違えてスマソ
0787nobodyさん2006/06/01(木) 17:46:00ID:???
>>784
掲示板改造支援サイト
ttp://swanbay-web.hp.infoseek.co.jp/
0788nobodyさん2006/06/01(木) 18:05:15ID:???
>>787
宣伝乙
流石はネ申KENT様にお仕えする僕だけだけあるな
787の使う板を脳内ハックしてKENT物と判断して布教するあたり凄すぎ!
この改造物を布教する信者さんが妙に多いが
尚、俺から言わせて貰えば、こんな無駄に過剰な屑を使う必要は無いし人に聞くレベルの奴に勧める物でもない
また、787は何かしらのスクリプトでのipを弾く事を聞きたいらしいのにこの回答って
0789nobodyさん2006/06/01(木) 18:08:33ID:???
リンク以外は787→784の間違いだな
07907842006/06/01(木) 18:26:20ID:???
>>785
ありがとうございます。
簡易プロキシーチェックは特定のホストを通すように作られていますが、
これを特定のホストからのアクセスをはじくように設定したいんです。
お手数ですがもう一度ご教授願えないでしょうか。
0791nobodyさん2006/06/01(木) 18:47:26ID:???
まずIPを10進数に変換する
荒らしのIPが111.222.333.444の場合
(111*256*256*256)+(222*256*256)+(333*256*256)+444=10進数にされたIP
(ちょっとズレがあるかもしれないけど、ブロードキャスト、ネットワークを考えると問題ないかな?)
該当するIPのホスト名をnslookupで引き、ホスト名を調べる
ひたすらnslookupしてIPの範囲を得る
得たIPも10進数にする
あとは荒らしのIPが範囲内にあるかどうかで、そいつかどうかあるていどは判別できる

うちは同じ方法で岐阜OCNを排除してます
0792nobodyさん2006/06/01(木) 19:07:34ID:???
>>791
正しい範囲のIPアドレスを例に挙げようぜ。
07937872006/06/01(木) 19:07:39ID:???
>>787
>>788
頭大丈夫か?
ぐぐっただけでそのサイトをよく見ないでリンクをはっただけが
お前の腐った脳内の変換も恐ろしいものがあるな

というかocnって正規表現で弾けばいいだけの話じゃないのか?
marunouchi.tokyo.ocn.ne.jp みたいの弾くだけだろ?
07947842006/06/01(木) 19:17:41ID:???
えっとですね、hodogaya.kanagawa.ocn.ne.jpを弾ければ良いのですが、
サーバーのせいか、IPでは弾けてホストでは弾けないんです。
それを踏まえて>>791さんは説明してくれたんだと思います。
でも、(333*256*256)は(333*256)のような気が…。

ググりましたがnslookupというのがよく分かりません。
ホスト⇔IPはどこか(場所忘れました)でDLしたホスト変換ソフトでできます。
IPの範囲を調べるにはどうすれば良いのでしょうか。
0795nobodyさん2006/06/01(木) 19:26:36ID:???
>794
あっ、指摘どうもwww

nslookupで
p*-ipad12hodogaya.kanagawa.ocn.ne.jp の IP を引く
たとえば 219.160.95.1xx が出てきたら 219.160.95.1 とか 219.160.94.1 とかして
nslookupで引いてhodogaya.kanagawa.ocn.ne.jpが出てこなくなる境界を探す
こうやってIPの下限と上限を調べたのが

hodogaya.kanagawa.ocn.ne.jp
219.160.89.0-219.160.96.255

です。
0796nobodyさん2006/06/01(木) 19:28:28ID:???
>>794
nslookupはDOSコマンドだということは
わかってるんだよね?
0797nobodyさん2006/06/01(木) 19:30:08ID:???
巨大ISPはIPの範囲がでかい上にIPの範囲とかISPの公開してないから面倒臭いですね。
どこかに対応表とか無いのかしらん?
0798nobodyさん2006/06/01(木) 19:36:13ID:???
gethostbyaddr()で引いて /\.hodogaya\.kanagawa\.ocn\.ne\.jp$/ でポン、
ではダメなの?
07997842006/06/01(木) 19:38:45ID:???
>>795
なるほど、少し変えていけば良かったんですね。
こんな簡単なことも分からないとはorz
ちなみに60.33.***.***なんてIPでもあったので…莫大な量になっちゃいそうですね。

>>796
すみません、それはググって分かったのですが、DOSコマンドが何かということまでは…。


参考までに使っているCGIのアクセス制限を行っている部分です。
infoseekではgethostが使えないと聞いたことがありますが、そのせいでしょうか。
もしホストでも制限できればそれが一番早いので…。

$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if($host eq "" || $host eq "$addr"){
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
if($host eq ""){ $host = $addr; }
}
if($host eq ""){ &error("ホストが取得できませんでした"); }
foreach(@badhost){
if($_ && $host =~ /$_$/i){ &error("$host アクセス禁止!"); }
}
0800nobodyさん2006/06/01(木) 19:54:48ID:???
配列に
219.160.89.0-219.160.96.255
0.33.xxx.xxx-0.3x.xxx.xxx
を入れてぶん回せばOKやよ
08017842006/06/01(木) 20:07:03ID:???
自分でプログラム組めるほど知識はないですが、
なんとか頑張ってみようと思います。
皆さん、初心者にあれこれと教えていただき有難うございましたm( _ _ )m
0802nobodyさん2006/06/01(木) 20:17:06ID:???
>>784
@badhostに'219\.160\.(89|9[0-6])\.[0-9]+'を入れてみれ。

あと、host引くところはこんな感じがいい。
$host = $ENV{REMOTE_HOST} ||
gethostbyaddr(pack('C4', split(/\./, $ENV{REMOTE_ADDR})), 2) ||
$ENV{REMOTE_ADDR};
0803nobodyさん2006/06/01(木) 20:54:50ID:???
[0-9]+

0..xx
って書いておいたほうが書式は楽かも
正規表現を知ってるなら[0-9]+でもいいですが
0804nobodyさん2006/06/01(木) 21:00:43ID:???
>>802
その代入だと0か1しかはいらんだろ。

$host = $ENV{'REMOTE_HOST'} ? $ENV{'REMOTE_HOST'} : (($tmp = gethostbyaddr(pack('C4', split(/\./, $ENV{'REMOTE_ADDR'})), 2)) == $ENV{'REMOTE_ADDR'}) : $tmp);

未確認
0805nobodyさん2006/06/01(木) 21:08:08ID:???
>804
gethostby〜が使えないかもってことなので、それじゃぁだめでしょ
08068022006/06/01(木) 21:12:31ID:???
>>804
がんばってPerlを勉強しようね。
ファイト!
0807nobodyさん2006/06/01(木) 21:23:33ID:???
>>805
確認してなかったから>>804は文法的にも違ってたな。

$host = $ENV{'REMOTE_HOST'} && $ENV{'REMOTE_HOST'} ne $ENV{'REMOTE_ADDR'} ? $ENV{'REMOTE_HOST'} : ((($tmp = gethostbyaddr(pack('C4', split(/\./, $ENV{'REMOTE_ADDR'})), 2)) ne $ENV{'REMOTE_ADDR'}) ? $tmp : $ENV{'REMOTE_ADDR'});
これは検証済み。

>>806
お生憎様、俺はPHPをメインに使ってる
0808nobodyさん2006/06/01(木) 21:28:30ID:???
詰めが甘いな自分。
? $tmpの前に$tmp入れないとgethostby関数が使えないときの判定が出来てないじゃないか。
0809nobodyさん2006/06/01(木) 21:29:07ID:???
無理して1行に収めなくてもいいジャマイカ
可視性に劣る
0810nobodyさん2006/06/01(木) 21:30:16ID:???
>>809
尤もだ
08118022006/06/01(木) 21:43:17ID:???
>>807
Perlの質問なんだが。

たとえば、
print(0 || 100);
というコードは
Perlでは100がプリントされる。
PHPは1だがな。

> その代入だと0か1しかはいらんだろ。
Perlの知らないのなら回答するなよ。
0812nobodyさん2006/06/01(木) 21:44:19ID:???
ASP.NET による開発で、イントラアプリでブラウザは IE と決まっているとしたら
クライアントサイドのコードを VBScript で書くか JavaScript で書くかは
何を基準に決めますか?
0813nobodyさん2006/06/01(木) 21:44:48ID:???
>>811
解説トン。あとすまんかった。

一応俺の回答もPerlなんだけどな。
0814nobodyさん2006/06/01(木) 21:46:24ID:???
好み
0815nobodyさん2006/06/01(木) 22:10:34ID:w2vlV0pQ
linux+PHP5+ポスグレの簡単なシステムなんですが、
enterキー押すとフォームボタンの「次へ」押したのと同じ効果になって、
次ページに進んでしまいますが、これを回避(enter押しても何もおこらない)
する方法はないんでしょうか?
0816nobodyさん2006/06/01(木) 22:13:51ID:???
それはブラウザの問題かと
0817nobodyさん2006/06/01(木) 22:16:53ID:???
>815
つ【JavaScript】
0818nobodyさん2006/06/01(木) 22:18:28ID:???
ホスト名取得 - 一時変数使わないバージョン
$host = !$ENV{'REMOTE_HOST'}||$ENV{'REMOTE_HOST'}eq$ENV{'REMOTE_ADDR'}?gethostbyaddr(pack('C4',split(/\./,$ENV{'REMOTE_ADDR'})),2)||$ENV{'REMOTE_ADDR'}:$ENV{'REMOTE_HOST'};
0819nobodyさん2006/06/01(木) 22:30:29ID:???
粘着しつこい
0820nobodyさん2006/06/01(木) 22:44:12ID:???
俺じゃねぇ
08218152006/06/01(木) 22:44:22ID:???
微妙に自己解決しましたすんまそん
0822nobodyさん2006/06/02(金) 01:10:45ID:eQAHAE10
http://www.kumagaya.or.jp/~chichibu/cgi1.html?のサイトでPERLを勉強していたんですが
あまりにもプログラムが雑なんで
こういうプログラムを詳しく説明しているサイトはないでしょうか??
0823nobodyさん2006/06/02(金) 14:02:06ID:7RcXeZ7K
php可の無料レンタルサーバでphpスクリプトのblogを置こうとしてます。
セットアップの段階でつまづいてるんですが、そのスクリプトのフォーラムで調べていたら
同じような報告があってその方達は「php-mysqlパッケージを入れたら大丈夫だった」とありました。
この「php-mysql」というのは、サーバ管理側が入れるべきブツなんでしょうか?
お手柔らかにおねがいします。。
08247872006/06/02(金) 15:22:58ID:???
>>823
レンタルサーバで普通そんなもの入れられない
別の問題だろ
ぐぐれ
0825nobodyさん2006/06/02(金) 15:36:48ID:???
php-mysqlを使って解決した人たちは、恐らく無料じゃないサーバーかと思われ
0826nobodyさん2006/06/02(金) 17:28:43ID:7RcXeZ7K
>>825
その通り、自家鯖の人たちでした。

>>824
へぇ、がんばります・・・
0827nobodyさん2006/06/04(日) 18:38:33ID:yRKGv8r9
全くの初心者です。
「ブログランキング」を作りたいのですが、
どんな本を読んで勉強すればよいのでしょうか?

0828nobodyさん2006/06/04(日) 18:50:19ID:???
http://www.amazon.co.jp/exec/obidos/ASIN/4797336021/
0829nobodyさん2006/06/05(月) 23:53:21ID:LC+WF7z4
以下のhtmlでファイルを選択しサブミットした場合の
HTTPリクエストの内容はどのようになりますか?
どなたか教えてください。

<html>
<body>
<form enctype="multipart/form-data" action="○○" method="POST">
<input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>
0830nobodyさん2006/06/06(火) 00:00:27ID:???
>>829
tp://ftp.isi.edu/in-notes/rfc1867.txt
ttp://www.bekkoame.ne.jp/~poetlabo/WWW/rfc1867J.html
0831nobodyさん2006/06/06(火) 03:47:47ID:Qw8MDfhy
http://tinymce.moxiecode.com/
tinyMCEの機能を最低限にした感じのwysiwygのエディタを作ろうと思っています。
textareaの中に色々なフォントサイズ、色の文章を入れたいのですが、
調べてみた限り、textarea内全ての文字を同じ色、同じ文字サイズにすることは
できても、tinyMCEのように一部だけ、というのは見つかりませんでした。
これはどのようにすればできるんでしょうか?
よろしくお願いいたします。
0832nobodyさん2006/06/06(火) 07:06:51ID:???
>>831
ここのソースが参考になるんじゃないかな
0833nobodyさん2006/06/06(火) 09:07:19ID:???
ヒント:選択範囲のスタート位置と長さ
08348312006/06/06(火) 10:39:08ID:Qw8MDfhy
>>832
すみません、ここ、ってのはこのスレッドでしょうか?

>>833
もう少しヒントお願いします…
0835nobodyさん2006/06/06(火) 10:45:31ID:???
>>834
>>832じゃないけど、これとかは?
ttp://www.andows.com/php/spaw/
0836nobodyさん2006/06/06(火) 19:45:23ID:???
>834
>831が言いたいのは、
「ソースが見れる形で配布されてるんだから、それを見ればいいんじゃね?」
ってことかと思われ
0837nobodyさん2006/06/07(水) 18:51:01ID:???
変数が$だったりコメントが//や#だったりする場合が多いのは、
むかーしむかし誰かが決めたことなんですか?
0838nobodyさん2006/06/07(水) 19:59:33ID:???
それは環境によって違うことだが、それらのルールは作った人、作ったコミュによって決められる
大概は先に発表されてる言語が参考にされるので、今後発表される言語で変数が&aとか)aとかになることは無いでしょう
あったらすげぇけど
0839nobodyさん2006/06/07(水) 20:57:06ID:???
<?php
$data[1]="でーた1";
$data[5]="でーた3";
$data[3]="でーた2";

if ($_SERVER["REQUEST_METHOD"]=="POST"){
$sel=$_POST['sel'];
if (isset($_POST['submit'])){
switch($sel){
case "1"://キーで数値昇順ソート
ksort($data,SORT_NUMERIC);
break;
case "2"://値で文字列昇順ソート
asort($data,SORT_STRING);
break;
case "3"://デフォルト
sort($data,SORT_REGULAR);
break;
default:
sort($data,SORT_REGULAR);
break;
}
}
}
?>

HTMLにあるボタンで「デフォルト」を選択しても初期表示に戻りません。
今日配列並び替えを始めたばかりのトーシロですが、よろしくお願いします。
0840nobodyさん2006/06/07(水) 22:20:54ID:???
http://pc8.2ch.net/test/read.cgi/php/1003655679/から誘導されてきました。

以下質問です。

環境など
・Mac osX 10.3
・MAMP
・スキルは辛うじてphpで掲示板を作れる程度の初心者
・データベースについては全くの無知
・参考図書「PHP5であなたもウェブアプリが作れる!」

作業 SQLiteを使った日記帳を作る(参考図書の5章)
問題 create tableでテーブル作成できない。しかし何故か空ファイルは出来る

質問
MAMPにはSQLiteが入っていますが、
直接命令する際に必要な作業等があるのでしょうか。

よろしくお願いします。
0841nobodyさん2006/06/08(木) 07:19:39ID:???
>>840
あらかじめデータベースファイルを作っておいてパーミッションを666にしておく
0842nobodyさん2006/06/08(木) 10:47:11ID:???
>>837
変数の$はshから、//コメントはC++から広まったものだと思う。
スクリプト言語のコメントで#が多いのについては、想像だけど
shebangが#!だから#をコメントにしておくと都合が良い、と言う理由じゃないかな。

明確なソースがあるわけじゃないんで、あんまり信じないで参考程度に捉えとくれ。
0843nobodyさん2006/06/08(木) 21:18:45ID:iBH9Xn1C
チャットについての質問です。
フレームを使わずにチャットを実現するのは一応可能だとは思いますが、
いわゆるノンフレームの場合はページ全体を再読み込みさせるので重いですよね。
サーバにも負荷がかかりますし。

で、理想としてはページ内の一部だけ自動更新できるといいなと思ったのですが、
現状の技術ではそれが可能な方法はないでしょうか。

言語はperlを少しかじった程度です。
0844nobodyさん2006/06/08(木) 21:27:30ID:???
>>843
Ajax の回し者かお前は
0845nobodyさん2006/06/08(木) 23:08:45ID:???
AjaxかFlashかJavaアプレット。
0846nobodyさん2006/06/08(木) 23:19:30ID:TNHjTFJ5
前までASP+MySQLでサイトを作ってたんですが
ASPはうんこだということに最近気づきました。
PerlかPHPでDBサイトを作りたいんですけど今から新しく始めるには
どちらを勉強したほうがお得でしょうか?
0847nobodyさん2006/06/09(金) 00:12:27ID:tGBUi+7t
>>846
うんこちゃんはうんこでもすって寝ときなさい。
0848nobodyさん2006/06/09(金) 00:55:45ID:???
DBならJavaかPHPをどうぞ
0849nobodyさん2006/06/09(金) 01:16:40ID:???
>>843
iframe
0850nobodyさん2006/06/09(金) 03:58:39ID:???
>>843
iframe
08518432006/06/09(金) 09:45:40ID:E3whWTAs
>>844-845
ajaxですか。ちょっと概要を見てきました。
XMLとjsの知識があればできるとのことですが、HTML4.0strictとcssで作ってるサイト
なのでXMLを勉強しないといけなさそうですね。
非同期というのがミソなようで、面白そうですが、ちょっと時間がかかりそうですね。
習得するまでに。1週間はかかりそうです。
javaaplet,flashもやったことないので結局同じくらいかかりそうですが。

>>849-850
iframeですか。これなら結構すんなりとできそうです。

でも一つ問題があるのですが、縦スクロールが必要なページな場合
iframeだとチャット部分が見えなくなる可能性もありますよね。

訪問者が自分のサイトのどこのページを見てるか追跡して、
読んでるだろう相手にリアルタイムで話かけようと思ってるんです。

そうすると・・・
う〜ん。とりあえずiframeで作り上げておいて、のちのち他のも勉強してみるのがいいのかな。
08528432006/06/09(金) 11:39:13ID:E3whWTAs
toriaezuzasetusimasita orz
0853nobodyさん2006/06/09(金) 14:46:36ID:???
sakuraレンタルサーバでメール送信cgiを使いたいのですがどうしても500エラーが出てしまいます。
ffftpのアスキーモードで送信、パーミッションは755にしてあります。
jcode.plは最新版を同じフォルダに入れてあります。
ご指南お願いいたします。

#!/usr/bin/perl
$mailer = '/usr/sbin/sendmail';
$mlfr = 'id@domain.com';
$mlto = 'id2@domain.com';
$mlsb = 'title';
$mlms = 'てすとメッセージです。';

require "./jcode.pl";
jcode'convert(*mlsb, "jis");
jcode'convert(*mlms, "jis");
$mlhd = "From: $mlfr" . "\n" . "To: $mlto" . "\n" . "Subject: $mlsb" . "\n\n";

open(MAIL, "| $mailer -f $mlfr -t $mlto" )

print MAIL "$mlhd";
print MAIL "$mlms";
close(MAIL);
print 'メール送信正常に処理しました。';
0854nobodyさん2006/06/09(金) 18:27:46ID:???
ちょっと質問させていただきます。

とあるHPを運営してるのですが、ツールなどによるファイルのぶっこ
抜きというかファイル情報を一括で取得されて一気にDLされるのを
回避したいのですが、それに対応する命令文がわかりません。
どういう命令文をつければいいのでしょうか。
各UPロダや画像掲示板等で使ってるとは思うのですが。

これをコピペすればOKでもいいですし、ココにいけば詳しく乗ってるよ
って言うことでもかまいません。
0855nobodyさん2006/06/09(金) 18:43:17ID:???
セッションを張る
HTML、CGI以外へのアクセスはリファラ必須

でも公開されている以上防げない
やりようによっては可能だが、鯖負担が尋常じゃなくなる
08568542006/06/09(金) 19:51:08ID:???
>>855
ありがとうございます。
少しセッション、リファラ等の単語で調べていたら
.htaccessを使う方法が簡単そうなので、それを使ってみたいと思います。

0857nobodyさん2006/06/09(金) 22:31:50ID:pSLu0Oz7
質問なんだけど、

if ($hoge) { $i == 1 || $i == 3 || $i == 4 || $i == 10 || $i == 15 }

これをもっと整理するような書き方があったら教えてください。

{ $i == 1 || 3 || 4 || 10 || 15 }

これでいいかなぁとやってみたら全然ダメだったので
ポケットリファレンスで当たったんだけど、どうも引き方が良くないせいか見つからず。
よろしくです。
0858nobodyさん2006/06/09(金) 22:41:28ID:???
>>857
そんな記述が出来る言語は知らん
0859nobodyさん2006/06/09(金) 22:44:24ID:pSLu0Oz7
ごめん、なにを勘違いしたのが馬鹿な間違いしちゃった。
正しくは、

if ($hoge && $i == 1 || $i == 3 || $i == 4 || $i == 10 || $i == 15) { $x = 1; }

ということで。
0860nobodyさん2006/06/09(金) 22:45:59ID:???
どの言語か知らんが switch 使えば
0861nobodyさん2006/06/09(金) 23:00:09ID:pSLu0Oz7
perlです。
0862nobodyさん2006/06/09(金) 23:14:31ID:???
>>861
これ↓でどうだろう?

if ($hoge && $i =~ /1|3|4|10|15/ ) { $x = 1; }
0863nobodyさん2006/06/09(金) 23:15:58ID:???
>>862
それだと $i = 1341015; でも通る罠
0864nobodyさん2006/06/09(金) 23:19:54ID:???
>>862
if ($hoge && $i =~ /^(?:1|3|4|10|15)$/ ) { $x = 1; }

だよな?
0865nobodyさん2006/06/09(金) 23:22:49ID:???
確かに正規表現使うと短く書けるけど、効率は数値比較に比べてとても悪いよ。
だから >>859 で良いんじゃないかな。
0866nobodyさん2006/06/09(金) 23:41:24ID:pSLu0Oz7
なるほど、元のままのほうが効率がいいんですね。
お手数をかけさせて申し訳ありませんでした。
ありがとうでした。
0867nobodyさん2006/06/09(金) 23:45:36ID:???
そもそも
>if ($hoge && $i == 1 || $i == 3 || $i == 4 || $i == 10 || $i == 15) { $x = 1; }
こんなのが必要になる時点でなんか間違ってるんじゃね?
機能(エラー処理?)増やすたびに $i == 20 || $i == 30 || ...
になるとしたらダメダメじゃん。
0868nobodyさん2006/06/09(金) 23:46:47ID:???
なんだもう終わってたのか。。。
0869nobodyさん2006/06/09(金) 23:49:24ID:???
>>868
ああ、もう少しばかり早く来るべきだったな。

しかし>>859みたいな条件を使うようなら全部統一の処理(エラー)ナンバーにすればいいよな。
0870nobodyさん2006/06/09(金) 23:59:11ID:???
あとは
if ($hoge && grep $_ == $i, qw(1 3 4 10 15)) { $x = 1; }
とか。
0871nobodyさん2006/06/10(土) 00:10:25ID:???
switch文も使えるけどね。

use Switch;

switch ($i) {
case [1,3,4,10,15] { $x = 1 if($hoge); }
}
0872nobodyさん2006/06/10(土) 13:24:30ID:???
use Swithなんてもんあったのか
(*´Д`)<ありがとうおともだち
0873nobodyさん2006/06/10(土) 13:48:34ID:AlN5ixSM
リンクの onclick でクッキーをセットしたいのですが、
firefox では上手くいって、IE,Opera ではうまくいかないんですけど
既知の問題なのでしょうか?コードはこんな感じです。
setClientInfo() で、クリック字にクッキーにクライアントの画面解像度が
セットされて、呼び出したCGI(hoge.cgi)でその値が取得できると嬉しいのですが
Firefox 以外では上手くいきません(要リロード)。

--- html ----
<a href = "hogehoge.cgi" onclick="setClientInfo();">link</a>

--- javascript ---
function setCookie (name, value, expires, path, domain, secure) {
var curCookie =
name + "=" + escape(value) +
(expires ? "; expires=" + expires : "") +
(path ? "; path=" + path : "") +
(domain ? "; domain=" + domain : "") +
(secure ? "secure" : "");
document.cookie = curCookie;
}

function setClientInfo()
{
SetCookie( "screen_width" , screen.width );
}
0874nobodyさん2006/06/10(土) 15:29:56ID:+aR8vdDY
htmlとshtmlの違いは何でしょうか?
shtmlにしないとSSIディレクティブはできないんでしょうか??
0875nobodyさん2006/06/10(土) 15:52:39ID:???
>>874
Perlスレからいらっしゃいませ。答えは、「本質的な違いは無い」。
多くの場合shtmlでSSIの処理を行うように設定されていると言うだけ。
Apacheしか知らんが、少なくともApacheはサーバの設定によって変更可能。

そのサーバで、.htaccessでの設定が許可されていれば
AddOutputFilter INCLUDES
の設定によってどんな拡張子でもSSIに出来る。
http://httpd.apache.org/docs/2.0/ja/howto/ssi.html#configuring
しかし書いてあるように.htmlに対してSSIを設定することは、
SSIの処理が不必要なHTMLファイルに対しても行うことになるためお勧めできない。
08768742006/06/10(土) 15:54:14ID:+aR8vdDY
あとSHTMLをプラウザで表示できるんでしょうか??
HTMLのデータに変換する必要はないんでしょうか??
お願いします
08778742006/06/10(土) 15:59:41ID:+aR8vdDY
うおぉかぶってしまってすみません
どうもPerlスレでは失礼しまし
ふむふむ なるほどありがとうございます
0878nobodyさん2006/06/10(土) 16:09:38ID:???
>>876
その質問から察するに君はSSIとは何なのか、を解ってないのではないかな。
SSIはServer Side Includeの略、つまりサーバ側でHTMLの中に何かを埋め込む機能。
ブラウザが受信するときには、既にSSIが変換を終えているわけであって、単なるHTMLになっている。
もっとも、SSIの構文はHTMLのコメントを利用したものだから、
SSIを仕込んだHTMLファイルがHTMLでは無いと言うわけではない。
08798742006/06/10(土) 16:31:35ID:+aR8vdDY
はい
今日SSIとshtmlという存在を知った初心者です
本読んでも分からなかったんでぐぐってみているんですが
いまいち分からないんです
本についているshtmlのファイルはメモ帳で開けるようになっているもんですから
htmlに組み込むかと思っていたら
本ではなぜかhtmlとそのファイルの拡張子が変わっていたり
さっぱりわからなくなっているところでした

ちょっと質問させてください


3−5.shtmlというデータなんですが
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>SSIあくせすかうんたー</title></head>
<body>
<p>あなたは……
<!--#exec cgi="3-5.cgi" -->番目の訪問者です。</p>
</body>
</html>

これが基礎になるページですよね??3-5.cgiを呼び 3-5.cgiのデータを上のshtmlに渡すわけですよね
プラウザに表示されるのは3-5.shtmlなんですよね??でも本から得たデータだとメモ帳のまま
つまりデータとしてなんですが
これがプラウザで表示されるってことですか??>>875さんが言うように
08808742006/06/10(土) 16:34:14ID:+aR8vdDY
つまりSSIとは何も行動をとらなくても
表示される という感じですよね??
アクセスログのような役目をするわけで
でそれを実行させるためには多くはshtmlで
htmlでもできる ってことですよね
サーバーの許可とかもありますけど
こんな感じでしょうか??
■ このスレッドは過去ログ倉庫に格納されています