【PHP】質問スレッドpart25【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/22 17:25:42ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0685nobodyさん
04/12/10 00:27:22ID:???んー、というかローカル変数全部表示してくれるオプションが有ったと思ったが。
あとは、TruStdioとか、PHPEclipsとかかぁ?
0686nobodyさん
04/12/10 04:51:13ID:dLo8c777共通の基本設定ファイルを読み込ませて値を定義したいのですが、
PHPにそのような関数ってありましたでしょうか?
なにか見掛けたような気がするのですがみつかりません。
もしかしたらあったのは他の言語かもしれません。
共通設定ファイルは
# comment
name = value;
のような感じの書式です。
0687nobodyさん
04/12/10 08:48:26ID:???これか?
ttp://jp.php.net/manual/ja/function.parse-ini-file.php
0688nobodyさん
04/12/10 09:23:08ID:???これですこれです。ありがとうございました。
しかしJavaScriptのコードと設定ファイルを共用するのは
少々トリッキーかもですね。
0689nobodyさん
04/12/10 11:04:56ID:vrayh+vx1つのディレクトリにファイルがたくさんあるのとないのとで読み込み速度は変わってくるのでしょうか?
例えば $lines = file("aaa.txt"); などする場合
ディレクトリに100ファイルある中から aaa.txt を読み込むのと
100000ファイルある中から aaa.txt を読み込むのとでは結構速度に差が出ますか?
2000ファイルくらいでやってみたところ差がわかりませんでした。
0690nobodyさん
04/12/10 13:52:35ID:???fopenなりを使って、自前でパーサー(もどき)組んじゃえば?
好きなフォーマットのiniファイルを使えるよ。
0692nobodyさん
04/12/10 14:55:48ID:???aaa.txtにダイレクトにアクセスしてる以上速度に差が出る分けない、って解答が正しいのでは?
0693nobodyさん
04/12/10 15:00:44ID:???読み出すファイルが確定していての話なら、影響は無し。
対象となるディレクトリの中身の状況によって、読み出すファイルを可変にするとかなら、
ファイル数が多ければ処理件数が増えるから速度は低下。
(OSのファイルシステムによる制限は考慮してないよ。)
0694nobodyさん
04/12/10 15:57:28ID:???ディレクトリ内にファイル数が多過ぎる場合だと
読みだすファイルが確定してる場合でもパフォーマンスに影響して来るよ。
PostgreSQLでテーブルを無闇に作成したりするのと同じ。
0695nobodyさん
04/12/10 19:11:51ID:???0696nobodyさん
04/12/10 19:56:24ID:sgrN7tSf大体似たような投稿内容なんですが、同じ文面でも違ったIP残していくもので
手動で.htaccessに追加するという対応では追いつきません
1分間に同じIPで$s回ロードされたら警告を表示→そのまま続けてもう1回ロードされたら拒否IPとして.htaccessに追加する
というのをphpではどうやればいいんでしょうか
.htaccessには他の処理も書いているので、
order allow,deny
allow from all
という箇所を見つけて、
deny from
deny from
deny from
deny from
↓
と追加していく形で
普段、.htaccessのパーミッションは604なので
chmod ("/somedir/.htaccess", 0606);
として処理を実行。その後に
chmod ("/somedir/.htaccess", 0604);
とかもできれば。
使ってるブログがphpで作られているので、index.phpにincludeして使えるようにしたいのですが・・・
えっと、phpのバージョンは4.3.8でセーフモードです
どうかお助けを
0698nobodyさん
04/12/10 22:57:08ID:???まさか一から教えてくれって言っているのか?
それともそのままコピペしたら動くようなのを求めてるのか?
ここはそういう場所じゃないよ、有料サービスでも探してみなさい。
それか本でも買って勉強したあと、どこかでつまづいたら質問したらいいと思うよ。
「・・・・とやってみたけどうまくいきません。助言お願いします。」とかいう感じで。
0699nobodyさん
04/12/10 22:59:43ID:???登録画面→dataディレクトリにユーザーID.csvを生成
CSVは、id,url,メアド,inカウント,outカウント,日付
という感じです。
どうにかカウントの処理まではできました。
dataディレクトリからreaddirで取得した配列をinカウントでソートしたいのですが、色々試しましたが方法が思いつきません。
どなたか教えていただけないでしょうか。
0700nobodyさん
04/12/10 23:01:16ID:???エラーです。エラーです。エラーです。
うぇっうぇうぇうぇっっうぇっっっうぇw
0701nobodyさん
04/12/10 23:33:07ID:???0703nobodyさん
04/12/11 03:32:21ID:???.htaccessファイルだけでやろうとせずに、IP記録&チェック用ファイルでも用意してさ、
最終的に.htaccessファイルを作成すれば良い
0704nobodyさん
04/12/11 05:53:31ID:???usort()
0705nobodyさん
04/12/11 11:31:10ID:d4nLr2Jv0706nobodyさん
04/12/11 12:06:04ID:MOGS9JxO管理画面で記事を編集する処理をしようとしてるんですが
改行コードを<br>に置き換える処理がうまくいきません。
どこが悪いのでしょうか?
$lock = LockFile( ITEM_LOCK_FILE_PATH );
$ItemList = GetCategoryItemList( $_REQUEST[ "CAT" ] );
for ( $i = 0; $i < sizeof( $ItemList ); $i++ ) {
if ( $ItemList[ $i ][ ITEM_COL_ID ] == $_REQUEST[ "ITEM" ] ) {
$ItemList[ $i ][ ITEM_COL_NAME ]
= $g_FORM["VALUE_NAME"]["VALUE"];
$ItemList[ $i ][ ITEM_COL_DETAIL ] = str_replace( "\n", "<BR>", $g_FORM["VALUE_DETAIL"]["VALUE"]);
break;
}
}
0707nobodyさん
04/12/11 12:14:05ID:???$ItemList[ $i ][ ITEM_COL_DETAIL ] = preg_replace("/\n\r|\r\n/", '<br>', $g_FORM["VALUE_DETAIL"]["VALUE"]);
0708nobodyさん
04/12/11 12:36:43ID:uBGzFGkuPHPってなんの略ですか?
0709nobodyさん
04/12/11 13:39:09ID:???Peaceand Happiness through Prosperity
あれ、Personal Handy Phoneだっけ?
0710nobodyさん
04/12/11 13:40:27ID:???0711nobodyさん
04/12/11 13:42:12ID:???ttp://php.planetmirror.com/manual/ja/history.php
0712nobodyさん
04/12/11 14:51:46ID:???つ【nl2br()】
0713nobodyさん
04/12/11 15:01:16ID:755OaB72違うなら違うといってください。
0714nobodyさん
04/12/11 17:04:06ID:???0715nobodyさん
04/12/11 17:20:37ID:MVGeL0Shheader(Location 〜 でやってたら
フレーム内のページの場合、親フレームに指定できず
フレーム内にログインページがでてきてしまうのですが
何かいい方法はありませんでしょうか?
0716nobodyさん
04/12/11 17:27:36ID:???0717nobodyさん
04/12/11 17:27:54ID:???WEBサーバーもインストールしていないと使えないのでしょうか?
ちなみにOSはWin2kです。
0718nobodyさん
04/12/11 17:30:45ID:???JavaScriptとMETA refreshでいいじゃない
<script type="text/javascript">if(top != self){ top.location.href = self.location.href; }</script>
0719nobodyさん
04/12/11 17:31:45ID:755OaB72文脈から、ウェブサーバをインストールした方がいいと感じました。
0721717
04/12/11 17:35:04ID:???サービスが起動しているかどうかまでは・・・
0722nobodyさん
04/12/11 18:07:56ID:???0723nobodyさん
04/12/11 18:36:48ID:MOGS9JxOしかし残念ながらまだ正常に処理できないです。
もともと新規記事登録画面や編集画面で改行入ってても改行できないプログラムを
改造してるんですが、まず
新規記事登録画面からcsvへの書き込み時は
$lock = LockFile( ITEM_LOCK_FILE_PATH );
$ItemList = GetCategoryItemList( $_REQUEST[ "CAT" ] );
$NewItemNumber = GetNewItemNumber( $ItemList );
$ItemRecord[ITEM_COL_ID ] = $NewItemNumber;
$ItemRecord[ITEM_COL_NAME ] = $g_FORM["VALUE_NAME"]["VALUE"];
$ItemRecord[ITEM_COL_REGIST] = date("YmdHis");
$ItemRecord[ITEM_COL_DETAIL] = str_replace( "\n", "<BR>", $g_FORM["VALUE_DETAIL"]["VALUE"]);
array_push( $ItemList, $ItemRecord );
$ItemFilePath = ITEM_DATA;
$number = sprintf( "%04d", $_REQUEST[ "CAT" ] );
$ItemFilePath = str_replace( "#NUMBER#", $number, $ItemFilePath );
WriteCsvToFile( $ItemFilePath, $ItemList );
UnLockFile( $lock );
でうまく処理できました
0724706,723
04/12/11 18:39:59ID:MOGS9JxO編集画面で開く時に
ClearFormValue();
$ItemInfo = GetItemRecord( $_REQUEST[ "CAT" ], $_REQUEST[ "ITEM" ] );
$g_FORM[ "VALUE_NAME" ][ "VALUE" ] = $ItemInfo[ ITEM_COL_NAME ];
$g_FORM[ "VALUE_DETAIL" ][ "VALUE" ] = str_replace( "<BR>", "\n", $ItemInfo[ ITEM_COL_DETAIL ]);
としてまた<br>を改行に戻してます。
こんな改造自体がおかしいのでしょうか?
0725706,723
04/12/11 18:47:52ID:MOGS9JxO<HTML><HEAD><TITLE>記事管理メニュー</TITLE></HEAD><BODY>
<H2>管理メニュー</H2><H2>記事の編集</H2>
<FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>" METHOD="POST">
題名:<INPUT TYPE="TEXT" NAME="VALUE_NAME" SIZE="40" VALUE="<?php
HESC( $g_FORM[ "VALUE_NAME" ][ "VALUE" ] );
?>"><FONT COLOR="RED"><?php
if ( $g_FORM[ "VALUE_NAME" ][ "ERROR" ] == true ) {
HESC( "■ " . $g_FORM[ "VALUE_NAME" ][ "MESSAGE" ] . " ■" );
}
?></FONT><br>
本文:<TEXTAREA NAME="VALUE_DETAIL" COLS="50" ROWS="10"><?php
echo( $g_FORM[ "VALUE_DETAIL" ][ "VALUE" ] );
?></TEXTAREA><FONT COLOR="RED"><?php
if ( $g_FORM[ "VALUE_DETAIL" ][ "ERROR" ] == true ) {
HESC( "■ " . $g_FORM[ "VALUE_DETAIL" ][ "MESSAGE" ] . " ■" );
}
?></FONT><br><BR>
<INPUT TYPE="HIDDEN" NAME="CAT" VALUE="<?php
HESC( $_REQUEST[ "CAT" ] );
?>">
<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 追 加 ">
<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE=" クリア ">
</FORM><BR><BR>
<A HREF="./admin_item_index.php">記事編集のトップへ</A><BR><BR>
<A HREF="./admin_index.php">管理メニューのトップへ</A></BODY></HTML>
0726715
04/12/11 20:22:30ID:MVGeL0Shできました。ありがとうございました。
0727nobodyさん
04/12/11 21:15:13ID:jtmXZY//感じとしては、クライアントがサーバの1000番ポート(例)に接続してきて、
送ってきたクエリに対する結果を返したいのですが……。
0728nobodyさん
04/12/11 21:28:10ID:???実現したいことを提供する仕組みがPHPにあるかどうか調べる。
この場合だとデーモンを作成できるかどうか調べりゃいいわけだな。
で、その機能が提供されているとしたら、どんな関数を使えばいいか
芋づる式に分かるわな。
0729nobodyさん
04/12/11 22:03:54ID:st9UV/hbhttp://example.com/hoge/ を $base_url って名前につけたとするじゃん、
そんとき /hoge/ の部分はなんて名前にすればいいと思う?
0730nobodyさん
04/12/11 22:10:27ID:???"scheme", "host", "port", "user", "pass", "path", "query", "fragment"
ってのがあるから、 path でええんでないの?
0732nobodyさん
04/12/11 22:18:50ID:???0733nobodyさん
04/12/11 22:24:07ID:???0734nobodyさん
04/12/11 22:24:22ID:???0735nobodyさん
04/12/12 00:22:45ID:???↓できいてみたら?
【プログラム板】
クラス名・変数名に迷ったら書き込むスレ。Part3
http://pc5.2ch.net/test/read.cgi/tech/1087209526/
0737nobodyさん
04/12/12 11:29:49ID:Wwc4JdWx呼ぶ方法を知りたいのですが、知っている方おりますか?
0738699
04/12/12 13:41:09ID:6JzXtPshファイル名からinカウントを表示する関数を作って、usortで、数えるって感じですか?
そんな感じで色々やってみたんですが、うまくいきませんでした。
0739nobodyさん
04/12/12 13:53:30ID:0qNzuUWM0740nobodyさん
04/12/12 14:18:00ID:???PHP5からmysqli拡張でサポート
http://jp.php.net/manual/ja/function.mysqli-prepare.php
0741nobodyさん
04/12/12 15:17:15ID:/72kiXrOdb接続をポインタで渡したいのですが、
以下では出来ませんでした。
エラーメッセージでコンフィグが云々〜というのが出たのですが、
鯖の設定で出来たり出来なかったりするんでしょうか?
function f_name($pt_db, $int_id) {
$res_db = pg_query($pt_db, "SELECT name FROM table WHERE id=" . $int_id . ");
$arr_db = pg_fetch_array($res_db);
return $arr_db[name];
}
呼び出し時
echo f_name(&$作成したdb接続, $int_aa);
0742nobodyさん
04/12/12 15:21:26ID:???a<>b
c<>d
e<>f
と配列$log[]に格納されている配列を
$nlog[b] = a
$nlog[d] = c
$nlog[f] = e
としたいのですが以下のようにすると多次元配列になってしまうんで一次元配列
にしたいんです。どうじたらいいでしょうか。
for($i=0;$i<=count($log);$i++){
list($from, $key) = explode("<>", $lines[$i], 2);
$nlog[] = array("$key"=>"$from");
}
0743nobodyさん
04/12/12 15:24:59ID:???function f_name(&$pt_db, $int_id) {
...
}
echo f_name($作成したdb接続, $int_aa);
>>742
for($i=0;$i<=count($log);$i++){
list($from, $key) = explode("<>", $lines[$i], 2);
$nlog[$key] = $from;
}
0745699
04/12/12 15:41:31ID:6JzXtPshfunction iicount($x){
$usrid = $x;
$usrfile = "./data/$usrid.dat";
$fp = fopen($usrfile,"r");
$fg = fgets($fp);
$fpp = explode(',',$fg);
list($usrid,$sitename,$siteurl,$comment,$mailad,$passwd,$outcount,$incount) = $fpp;
fclose($fp);
return $incount;
}
をユーザ定義関数として
dataフォルダから取得したファイル名一覧(=usrid名一覧)の配列を
usort($datfile_array,$iicount); //inカウントでdatafile_arrayをソート
という使い方をしてうまく行きませんでした。使い方、全然検討はずれでしょうか。。
0746nobodyさん
04/12/12 15:54:28ID:???フォームでひらがな以外はエラーとなるようにしたいです。
送られてくる変数が$varとして
if(preg_match("/[^ぁ-ん]/",$var)){exit ("ひらがな以外はダメ");}
ではうまくいかんとです。どうすればよいですか?ページの文字コードはシフトJISです。
0747nobodyさん
04/12/12 16:16:22ID:???マルチバイト関数を使うべし。
0749nobodyさん
04/12/12 17:00:42ID:???情報が足りないからよく分からんがこれでいいのかい?
usortの使い方はマニュアル見たの?
function cmp($a, $b){
if ($a[7] == $b[7]) return 0;
return ($a[7] < $b[7]) ? -1 : 1;
}
$dir = opendir('data/');
while (($file = readdir($dir)) !== false) {
if(substr($file, -4) == '.dat'){
$data = file('data/'.$file);
$datfile_array[] = explode(',', $data[0]);
}
}
closedir($dir);
usort($datfile_array, 'cmp');
print_r($datfile_array);
0750nobodyさん
04/12/12 17:05:49ID:yU1MgCLaCみたいに変数宣言をする方法は無いですか?
クラス変数はvarで宣言できるけど、宣言して無い変数も
いくらでも追加できるみたいなのでバグの温床になりやすいです。
0751nobodyさん
04/12/12 17:27:34ID:???嫌ならCdeCGIでもやってろ
0753nobodyさん
04/12/12 17:53:38ID:???目を凝らしてコピペ連続だな。
0755nobodyさん
04/12/12 18:25:08ID:???0756nobodyさん
04/12/12 18:27:42ID:???/etc/php.iniなどで
error_reporting = E_ALL
の設定をするべし
error_reporting = E_ALL & ~E_NOTICE
だとその警告は出ない。
0757699
04/12/12 18:58:10ID:???どうもありがとうございます。
usortって好きな関数で出た値で比較とかかと思ってました・・
その他の部分も色々勉強になりました、ありがとうございます。
0759nobodyさん
04/12/12 20:28:57ID:???確かに標準で「未宣言変数だけ」っうのはないが、
ユーザ定義のハンドラで処理すれば、その辺の細かい制御は可能だし。
http://jp.php.net/manual/ja/ref.errorfunc.php
0760759
04/12/12 20:30:49ID:???0761nobodyさん
04/12/12 21:55:39ID:???べつにphp.iniを書き換えなくとも
error_reporting();をソースに追加すれば変更できるぞ
例
error_reporting(E_ALL); //All ERROR
error_reporting(E_NOTICE); //NOTICE ERROR
0763nobodyさん
04/12/12 22:09:48ID:???0764nobodyさん
04/12/12 23:20:54ID:???むほっ、>>746の式を
if(mb_ereg_match("/[^ぁ-ん]/",$var)){exit ("ひらがな以外はダメ");}
としてもうまくいかないのです。やろうとしていることが無理なのかなぁ。
0765nobodyさん
04/12/13 00:08:34ID:???mb_ereg_match() はパターンを / で囲むと別の意味になる。
あと、内部エンコーディングに SJIS を指定していない場合は、
mb_regex_encoding('SJIS') を先に実行しておく必要がある。
内部エンコーディングに SJIS を指定するには国際化版 PHP か
--enable-zend-multibyte をオプションに含めてコンパイルする
必要があるけど。
0766nobodyさん
04/12/13 04:23:36ID:???copy使ってもmove_uploaded_file使っても
アップできるjpgファイルとアップできないjpgファイルがあります。
ちょっとサイズが大きめのjpgファイルがあっぷできないようなのです。
解決策はあるのでしょうか?
0767nobodyさん
04/12/13 04:47:03ID:???http://www.php.net/manual/ja/features.file-upload.php
0769nobodyさん
04/12/13 11:40:55ID:???型宣言や、Perl で言うところの use strict; ほしいね。
完全じゃないけど、とりあえず
error_reporting(E_ALL);
とか。
0770nobodyさん
04/12/13 13:17:33ID:???0771nobodyさん
04/12/13 13:22:41ID:???自サイトのPHP⇒他のページクリックさせた後に自分のサイト(とあるコンテンツ)
ググッてみてもわからず。本を見てもわからず。
だれか知識ある人教えてください。。
0772nobodyさん
04/12/13 13:29:50ID:???0773nobodyさん
04/12/13 13:42:01ID:???私も最初、そんなことできないと思っていました。
でも、とあるサイトで使われてるんすよね(汗
他のページに移動された時に表示されていたアドレスは
http://hoge.com/script.php?%FE%17%FD95&8D%8CE%EF%870%・・と30文字くらい
socket使って読み込ませてなんかしてるのかな?と思いますが
なにがなんだかわかりません。
下手な説明ですみません。。だれかわかる人ヒントでもいいから下さい。
0774nobodyさん
04/12/13 13:43:18ID:???0775nobodyさん
04/12/13 13:56:06ID:???> 自サイトのPHP⇒他のページクリックさせた後に自分のサイト(とあるコンテンツ)
たった1行だけかよ。
手を抜かずにしっかり書け。
0776nobodyさん
04/12/13 14:00:04ID:???0777nobodyさん
04/12/13 14:01:46ID:???PHPは動作してるのは鯖だからブラウザの制御とかむりっぽ
JavaScript、VBScript、Spy-ware
のほうが怪しいと思う
0778nobodyさん
04/12/13 14:05:19ID:???0779766
04/12/13 14:08:26ID:???レスありがとうございました。
ファイルサイズが取得できないのが原因でした。。
$_FILES['userfile']['size']これでサイズ取得できないのはなぜでしょうか?
$_FILES['userfile']['name']これでファイル名は取得できてます。
0780nobodyさん
04/12/13 14:12:05ID:???なにがどう行われているかわからず説明もうまくできませぬ。。
自サイト(http://hoge.com)
自サイト内のリンクをクリック!
↓
サイトAが表示される(サイトAは自サイトとは無関係)
サイトAが表示された時のアドレスは
http://hoge.com/script.php?%FE%17%FD95&8D%8CE%EF%870%・・
↓
サイトA内にあるフォームクリックする。
↓
自サイトのとあるコンテンツを表示
0781nobodyさん
04/12/13 14:14:18ID:???いやそこ携帯サイトなんすよ
めるらんにそのサイトのアドレス入れときます。
エロサイトで携帯からしかみれません。。orz
0783766
04/12/13 14:25:36ID:???また迷惑なエロサイトが増えると思うと教える気が・・・
0784軟式PHP
04/12/13 14:29:29ID:???<input type="hidden" name="MAX_FILE_SIZE" value="数字">
の数字以上のファイルをアップロードしようとしてるからじゃないのかね。
■ このスレッドは過去ログ倉庫に格納されています