▲掲示板に戻る
■ 過去ログ 213 ■new← [300][299][298][297][296][295][294][293][292][291][290][289][288][287][286][285][284][283][282][281][280][279][278][277][276][275][274][273][272][271][270][269][268][267][266][265][264][263][262][261][260][259][258][257][256][255][254][253][252][251][250][249][248][247][246][245][244][243][242][241][240][239][238][237][236][235][234][233][232][231][230][229][228][227][226][225][224][223][222][221][220][219][218][217][216][215][214][ 213 ][212][211][210][209][208][207][206][205][204][203][202][201][200][199][198][197][196][195][194][193][192][191][190][189][188][187][186][185][184][183][182][181][180][179][178][177][176][175][174][173][172][171][170][169][168][167][166][165][164][163][162][161][160][159][158][157][156][155][154][153][152][151][150][149][148][147][146][145][144][143][142][141][140][139][138][137][136][135][134][133][132][131][130][129][128][127][126][125][124][123][122][121][120][119][118][117][116][115][114][113][112][111][110][109][108][107][106][105][104][103][102][101][100][99][98][97][96][95][94][93][92][91][90][89][88][87][86][85][84][83][82][81][80][79][78][77][76][75][74][73][72][71][70][69][68][67][66][65][64][63][62][61][60][59][58][57][56][55][54][53][52][51][50][49][48][47][46][45][44][43][42][41][40][39][38][37][36][35][34][33][32][31][30][29][28][27][26][25][24][23][22][21][20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1] →old
50件ずつ表示
[3279 のレス24] Name:いきのむし Date:2004/05/21(Fri) 22:35
リモートホストが取れちゃいますからね。
gethostbyaddrを通さないようにすれば、IP指定でアクセスをハネられるようになります。ただし、その場合はリモートホスト指定ができません。
スクリプトを、IPとリモートホスト両方でハネるように改造してください。
[3279 のレス23] Name:ahiru Date:2004/05/21(Fri) 22:27
AnHTTPdのほうでアクセス制限かければいいんじゃないかと小一時間(ry
[3279 のレス22] Name:ナミ Date:2004/05/21(Fri) 21:59
echo "host : ".$host."<BR>";
でロダにでてきた文字列を$denylistに入れたらアク禁になりましたが、IPではなりませんでした。
[3279 のレス21] Name:いきのむし Date:2004/05/21(Fri) 21:57
AnHTTPDのことはよく知りませんが、IPやリモートホストがそのログから読み取れるのであれば、それを$denylistに列記すればいいだけなのではないでしょうか?
貴方をアクセス禁止にできるのであれば、他の人もアクセス禁止にできるはずですが。
[3279 のレス20] Name:ナミ Date:2004/05/21(Fri) 21:34
説明の仕方が悪かったようです。
AN HTTPDの機能でログをとれるようにしています。
そのログをみてDLしすぎの人とかをアク禁にしたいのですが。
[3279 のレス19] Name:いきのむし Date:2004/05/21(Fri) 20:53
「知らない人」と言われましてもね。
貴方の知らない人がどんなIPでアクセスしてくるかなんて、
誰にも分からないと思いますが。
貴方が知ってる人が利用しているIPからのみアクセスを受け入れるように改造するか、パスワード認証をアクセス前に設けるくらいしか手段がないと思いますが。
ボクはてっきり、荒らしのIPのみを制限したいのだと思っていました。
[3279 のレス18] Name:APACHE Date:2004/05/21(Fri) 20:52
その人のIPアドレスかIPアドレスの範囲がわからないと
設定のしようがないです。
とりあえずアプロダのログにIPアドレスが記録されるかされないか確認して
されないようなら記録するように改造しましょう。
[3279 のレス17] Name:ナミ Date:2004/05/21(Fri) 20:40
自分をアク禁にする事はできました。
こんどは知らない人をアク禁にしたいのですがどうしたらいいのでしょうか?
[3279 のレス16] Name:いきのむし Date:2004/05/21(Fri) 20:34
じゃーIPは取れてるんですね。
/* アクセス制限 */の直前に
echo "host : ".$host."<BR>";
として、表示された値を$denylistに配列の値として入れてみてください。それでもアクセスできるようであれば、$denylistの指定の仕方間違っているんでしょう。
[3279 のレス15] Name:ナミ Date:2004/05/21(Fri) 20:17
[3279 のレス14] Name:APACHE Date:2004/05/21(Fri) 20:15
echo は文字列出力関数です。(関数ではないと書かれているが)
追加したことでIPアドレスがどこかに表示されてませんか?
#最上部等
[3279 のレス13] Name:ナミ Date:2004/05/21(Fri) 20:11
29行目に$_SERVER['REMOTE_ADDR'];やecho "IP : ". $_SERVER['REMOTE_ADDR'] ."<BR>";などを記述しましたが禁止状態にはなりませんでした。
[3279 のレス12] Name:いきのむし Date:2004/05/21(Fri) 20:04
php.iniは設定ファイルです。
upload.phpの29行目にでも書いて見てください。
何も出ないと困るので、
echo "IP : ". $_SERVER['REMOTE_ADDR'] ."<BR>";
か
echo "IP : ". $HTTP_SERVER_VARS['REMOTE_ADDR'] ."<BR>";
で。
[3279 のレス11] Name:APACHE Date:2004/05/21(Fri) 20:04
これさぁ"スクリプト"が指し示すのが一体何か?ってことだから
日本語の問題だと思うんだ。
知識がない頃でも
普通に理解できた私には理解できない方がわからない…(激悩
[3279 のレス10] Name:ナミ Date:2004/05/21(Fri) 19:57
いきのむしさんそんな事いわずにおねがいしますm( __ __ )m お二方には理解できる事でも知識がない私にとっては理解できないので
[3279 のレス9] Name:いきのむし Date:2004/05/21(Fri) 19:52
APACHEさん、後はよろしく……
ボクはもうイヤになりました……(´ヘ`;)
[3279 のレス8] Name:ナミ Date:2004/05/21(Fri) 19:45
PHP本体の設定を変えるのか
PHPぁぷろだの設定を変えるかで答えてくださいm( __ __ )m
[3279 のレス7] Name:APACHE Date:2004/05/21(Fri) 19:40
いやだから「"PHPスクリプトの序盤あたり"に」だって…
意地悪でも何でもないし
[3279 のレス6] Name:ナミ Date:2004/05/21(Fri) 19:31
[3279 のレス5] Name:APACHE Date:2004/05/21(Fri) 19:30
もうねア(ry
「"スクリプトの序盤あたり"に]」
よく読んで理解しましょう。
[3279 のレス4] Name:ナミ Date:2004/05/21(Fri) 19:22
[3279 のレス3] Name:いきのむし Date:2004/05/21(Fri) 19:20
いや、何行目とかじゃなくて。スクリプトの序盤あたりに入れてみてください。
[3279 のレス2] Name:ナミ Date:2004/05/21(Fri) 19:14
いきのむしさんそれは何行目なのでしょうか?
多すぎてよくわかりませんでした><
[3279 のレス1] Name:いきのむし Date:2004/05/21(Fri) 18:43
まずリモートIP情報が取得できているかを調べられるとよろしいんじゃないかと。
Windows系で使うと$PHP_SELFの中身が空だったりというのを
見たような記憶もあるので。
echo $_SERVER['REMOTE_ADDR'];(4.1.0以降)
とか、
echo $HTTP_SERVER_VARS['REMOTE_ADDR'];(4.0.6以前)
で。
[3279] PHPあぷろだ Name:ナミ Date:2004/05/21(Fri) 18:26
PHPあぷろだでアクセス禁止をしたいのですが、
なんどやってもうまくいきません。
自分のホストやIPを$denylistに入れてもなんにもかわりません。PHPの設定が悪いのでしょうか?
[3278 のレス18] Name:ぜあみ Date:2004/05/25(Tue) 16:31
試してみました。各formの中に
<input type=hidden name=ua value=line>
といれると、希望通りの動きをしてくれました。
「skin_other.html」にも同じようにして終わりです。
ありがとうございました。
[3278 のレス17] Name:ぜあみ Date:2004/05/25(Tue) 15:16
なるほど。やっとスッキリしました。
じゃぁ、手を加えないとswitchの一行レスデザインは使えないのですね。
[hidden]を使って試してみます。
あと、一番最初に書いたレスを数件ずつというのが、
いじる場所はなんとなくわかったのですが、
手に負えそうにないのでしばらく保留します。
[3278 のレス16] Name:いきのむし Date:2004/05/25(Tue) 15:02
うーんと、そもそも <FORM METHOD="GET" 〜 の場合は、ACTIONに値を持たせられないみたいですね。(POSTの場合は可。)
そんな訳でHIDDENを使ってくだちぃ。
[3278 のレス15] Name:いきのむし Date:2004/05/25(Tue) 14:42
> 最初の「$ua」と「$_GET['ua']」の「ua」は、違う変数になるのですか?
別の変数ですね。register_globalsがonの場合には、$uaを参照すると$_GET['ua']の値をとります($_POST['ua']などに値が入っていない場合。ここらへんはphp.iniのvariables_orderの設定次第ですが)。
つまり、1行目でHTTP_USER_AGENTの値を"/"で区切った最初の値が$ua[0]に入る訳ですが、2行目では、もし$_GET['ua']に値が入っていれば$ua[0]には$_GET['ua']の値を上書きするよ、ということです。という訳で、URLの最後に「ua=line」がついていれば、$ua[0]には"line"が入るという訳です。
で、下の方なんですけど、「$self」に入っている値がGETの文字列を含んでいなければ問題はないのですが、含んでいる場合には間違っていますね。action="index.php?a=5?b=4"では正確に値を渡せません。
(ソースを細部まで見てないので、$selfがどういう値を取っているか知らずに書いてます(^^; すいません)
[3278 のレス14] Name:ぜあみ Date:2004/05/25(Tue) 14:11
「セッション」です。すいません。
設定が難しそうな上、本など見るかぎり自サーバーでないといけないような。レンタルサーバーでは出来ないような感じがするので保留にしておきます。
>if ($_GET['ua']) $ua[0] = $_GET['ua'];
>の行がコメントアウトされてなければ、lineのスキンを拾ってくるの
>は不思議じゃないのですが。
コメントアウトはしていないです。
$ua = explode("/", getenv('HTTP_USER_AGENT'));
if ($_GET['ua']) $ua[0] = $_GET['ua'];
となっております。最初の「$ua」と「$_GET['ua']」の「ua」は、違う変数になるのですか?
一行目で、「HTTP_USER_AGENT」を「/」で区切ったものを代入しているのですよね。じゃぁ、二行目では「ua」の値は一行目の値が入っていると思うのですが。
ちなみに二行目は「ua」に値が入っているときという条件ですよね。
つまり、「?ua=line」でアクセスしたときは、if文がtrueになり、「$ua[0]」に「line」が代入されるということですよね?
あと、以下の表記はおかしいのでしょうか?
これができれば、とりあえず問題解決(?)なのですが。
「form」で「action="{$self}"」を「action="{$self}?ua=line"」。
[3278 のレス13] Name:いきのむし Date:2004/05/25(Tue) 12:39
うーんと、
if ($_GET['ua']) $ua[0] = $_GET['ua'];
の行がコメントアウトされてなければ、lineのスキンを拾ってくるのは不思議じゃないのですが。
ちなみに、「セクション」というのはたぶん「セッション」のことですね(^^;
session_register('admin_mode');
とかしてやると、ブラウザ(正しくはセッション)が閉じられるまでサーバー側で値を持ってくれます。php.iniのsession.auto_startがoffの場合はスクリプト側でsession_start();を明示的にコールしてやらなければなりませんが。
セッションを使うと、スキン選択が終わった後にセッション値として管理人モードの値が入っていれば常にlineのスキンを使うようにする、ということは可能ですね。
[3278 のレス12] Name:ぜあみ Date:2004/05/25(Tue) 12:21
試してみました。
結果は、変わりなしでした。
具体的に言いますと、「t=line」でアクセスしたときも、
指定した通りの「skin_main_line.html」です。
「レス」をしたり「全部読む」などを押すと
「skin_other.html」ではなく「i_skin_other.html」になります。
私が調べて分ったことは…説明できないですが、
ただ、「skin_main_line.html」の中のリンク「href={$self}」のあとに「t=line」を付け足さないといけないということでした。
で、試した結果、リンクの「全部読む」などは「skin_other.html」になります。しかし、「form」を使っている「レス」は「i_skin_other.html」になります。
「form」で「action="{$self}"」を「action="{$self}?ua=line"」したのですがこの表記は間違っているのでしょうか?
セクションというのを使えば良いようなことは分ったのですが
これ以上は今の段階では理解出来ませんでした。
しかし、APACHE さんのいう通り$uaのユーザーエージェントの値が代入されているのに「ua=line」で指定した通りの「skin_main_line.html」になるのが不思議です。
[3278 のレス11] Name:APACHE Date:2004/05/25(Tue) 02:18
>何かに代入すればよいということでしょうか?
>$t=$ua;
いや最初からt=lineでアクセスして
$tに格納すればいいかと…
でdefaultの中でIF文を実行するのではなく
if($t=="line"){
"1行レス用スキンをここで定義"
}else{
//$tがlineじゃない場合
"ここにswitch文"
}
ってかんじで良いかと。
[3278 のレス10] Name:ぜあみ Date:2004/05/25(Tue) 01:07
defoultと書いてしまいましたが、defaultですね。
[3278 のレス9] Name:ぜあみ Date:2004/05/25(Tue) 01:06
そうなのですか?じゃぁ、
>register_globals ONの時
だったら、
>$ua = explode("/", getenv('HTTP_USER_AGENT'));
の前に、「$ua」に格納された値を
何かに代入すればよいということでしょうか?
$t=$ua;
としてから、
switch文のdefoultの中で
if文「($t=="line")」で分岐さしてから、
[ibbs.php?ua=line]でリンクすればいいの?
何か間違っています?
…明日もう一度考え直してみます。
PC用のデザインを見るにはPCで、
携帯用のデザインを見るには携帯で、
一行レス用のデザインを見るにはどうしたらいいんですか?
スクリプトをいじらないとダメなのですか?
つまり、現段階では、
switch文の「case 'line':」の箇所は不要ということ?
[3278 のレス8] Name:APACHE Date:2004/05/24(Mon) 20:04
サンプルは当然サンプル用に加工されてる事もあるので
真似してもその通りには動くとは限りません。
なので
>スクリプトのページで[サンプル]のリンクのソースを見たら
>[ibbs.php?ua=line]となっていたので真似しました。
この考えは間違っていますね。
配布スクリプトを上から読んでいくと
uaを拾うようには出来ていません。
※register_globals ONの時は拾われて$uaに格納される
でさらに読み進んでいくと
$ua = explode("/", getenv('HTTP_USER_AGENT'));
で$uaにはユーザーエージェントを展開した配列が放り込まれます。
※この時点でたとえ「register_globals」がONでも$uaは上書きされます。
なので全く持って無意味という事になりますね。
[3278 のレス7] Name:ぜあみ Date:2004/05/24(Mon) 18:32
今一つ、理解不足なので少し調べてみますが、
[ibbs.php?ua=line]は問題なくいっていると思います。
理由は、PCでも、携帯でも「i_skin_main.html」が開き、
[ibbs.php?ua=line]でアクセスしたときだけ、「skin_main_line.html」が開くのです。
この設定というか…switch文はいじっていないです。
正確には、ファイルの指定や、親記事の数の指定は変更しました。
[ibbs.php?ua=line]は、私が考えたわけじゃなく、
スクリプトのページで[サンプル]のリンクのソースを見たら[ibbs.php?ua=line]となっていたので真似しました。
ソース自体改造したわけじゃないので、
サンプルのリンクを真似したのですが、
このこと自体が間違っているのですか?
[3278 のレス6] Name:APACHE Date:2004/05/24(Mon) 15:55
ua=で送ってPHPはちゃんと受け取ってるのか?
何となく受け取れてないように見える。
※それに$ua[0]てことは配列だろうし
switchで処理する前にifで分岐してしまうとか。
$t = $_GET["t"];
if($t=="line"){
skin_other.htmlをここで指定
}else{
switch( $ua[0] ){
(省略
}}
ibbs.php?t=lineでアクセス。
[3278 のレス5] Name:ぜあみ Date:2004/05/24(Mon) 12:43
>case文のdefaultのところにlineの内容を…
これだと、PCの人もみれるのではないのでしょうか?
私がしたいのは、自分用に(管理人以外)、
「一行デザイン[skin_main_line.html][skin_other.html]」にしたいのです。
見る人が、PCでも携帯でも「i_skin_main.html」「i_skin_other.html」としたいのです。
現在、「switch( $ua[0] )」の「case」の指定で
[PDXGW][UP.Browser][J-PHONE][DoCoMo]の時は、「i_skin_main.html」。
[line]で、「skin_main_line.html」。
[default]で、「i_skin_main.html」としています。
[ibbs.php?ua=line]で、リンクしてから、レスをつけたりすると、「case 'line':」で指定した「skin_other.html」ではなく、「i_skin_other.html」になるのです。
「switch( $ua[0] )」に「case 'line':」があるので、何かしらの条件で「一行レスデザイン」が使えるのでは?と思うのですが。間違っているのでしょうか?
[3278 のレス4] Name:いきのむし Date:2004/05/24(Mon) 11:27
いや、だからcase文のdefaultのところにlineの内容を…って。聞いてます?
[3278 のレス2] Name:ぜあみ Date:2004/05/24(Mon) 10:27
返事遅れてすいません。
>>レスを数件ずつ表示(略)
は、今からやってみます。
>>「一行レスデ(略)
>case文のdefaultのところに(略)
設定はしております。
ただ、「一行デザイン」はどうしたら…、
PCでみたら、「PC用のデザイン」。
携帯でみたら、「携帯用のデザイン」。
どうしたら、「一行デザイン」になるのでしょうか?
[3278 のレス1] Name:いきのむし Date:2004/05/21(Fri) 22:50
>レスを数件ずつ表示することはできるのでしょうか?
できると思います。携帯にもPAGEDEFやRESERVERYの設定があるので、あとはスキンファイルで該当する部分をi_skin_*.htmlに書き写せばいいのでは。
>「一行レスデザイン」は、(略)
case文のdefaultのところにlineの内容を書けば、ibbs.phpにアクセスするだけで一行デザインになります。
[3278] PHP-I-BOARD Name:ぜあみ Date:2004/05/21(Fri) 10:16
PHP-I-BOARDをずっと使用させてもらってます。
質問の前に、現在、携帯もPCも同じ表示をさせるため「i_skin_main.html」「i_skin_other.html」を指定しています。
管理人専用として、一行レスデザインを利用し[ibbs.php?ua=line]とリンクをはり、「skin_main_line.html」「skin_other.html」にしています。
質問です。
レスが増えてくると携帯だと「サイズオーバー」となり表示できないです。レスを数件ずつ表示することはできるのでしょうか?
管理人としてログインすると「skin_other.html」ではなく「i_skin_other.html」が表示されます。「一行レスデザイン」は、[ibbs.php?ua=line]でリンクする以外の利用方法はあるのでしょうか?
[3211 のレス9] Name:sato Date:2004/05/25(Tue) 01:38
意味がなんとなくですがわかりました
PHP/CGIは俺にはまだむつかしいな…
[3211 のレス7] Name:APACHE Date:2004/05/23(Sun) 00:53
動作しないときにですね
一番はじめにある<?php(もしくは<?)の次の行に追加する事で
応急処置として使えるって事です。
動いてるときは追加する必要はないと思います。
[3211 のレス6] Name:sato Date:2004/05/22(Sat) 23:44
スマセンPOSTしてから検索したので書いてることがおかしいことに気づいてしまって・・・
ん〜不慣れなPHPはあんまりいじれないです・・・
[3211 のレス5] Name:APACHE Date:2004/05/22(Sat) 23:25
って書いてる最中に修正入ってた…
応急処置的に
extract($_GET);
extract($_POST);
extract($_COOKIE);
extract($_SERVER);
等とスクリプトに追加すると
register_globals有効状態に近くなります。
[3211 のレス4] Name:APACHE Date:2004/05/22(Sat) 23:22
実はこれプラットフォームの問題ではなくPHP側の問題なんです。
昔PHPはregister_globalsが有効で
上のようにしなくても自動的に引数を拾っていました。
しかし勝手に拾っていたらセキュリティー上問題があると言う事で
現在はデフォルトでregister_globalsが無効になっているため
勝手に引数を拾ってくれません。
※当然今でもregister_globalsを有効にすれば勝手に拾うようになります。
これによりregister_globalsがデフォルトで有効だった
時代に作られたPHPがregister_globalsが無効な環境で
動かないといった現象が希に発生します。
これがregister_globals問題です。
[3211 のレス3] Name:sato Date:2004/05/22(Sat) 23:20
上の方を試してみたところいけました
ありがとうございます
register_globalsについて
軽く調べてみたこところphp.iniの設定で有効できるみたいですがセキュリティ上問題があるそうな
[3211 のレス1] Name:APACHE Date:2004/05/22(Sat) 23:10
おそらく引数を拾っていないためだと思われます。
スクリプトの16行目にある
//1ページに表示する画像数の次の行に
$start = $_GET["start"];
#上で駄目な場合は
#$start = $HTTP_GET_VARS["start"];
と追記して引数を拾うようにしてみてください。
これで動作するようになった場合
PHPのregister_globals問題です。
[3211] PHPぁぷろだにて Name:sato Date:2004/05/22(Sat) 22:54 HP
以前はMailBBSでいろいろサポートしていただきありがとうございました。
で今回はPHPぁぷろだの
sam.phpのばぐ?なんですけど
鯖環境はWin2K/04WebSeverで
sam.phpにおいて「次へ>>」をおしても次に行かないのです
なんか引数が無視されてる気もするんですが私には原因がわかりません
もしよければ原因究明おねがいします