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

【PHP】下らねぇ質問はここに書き込みやがれ 43

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/01(日) 04:21:50ID:VGqlLhlD
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0556nobodyさん2007/04/07(土) 23:20:53ID:???
>>552
単純にeofに達する判断が読み出した後だからとしか
期待する動作を望むならfgetsの戻り値でやるとか

$fp = fopen(filename, "r");
while($str = fgets($fp))
{
$str = rtrim($str);
echo "$str<br>";
}
fclose($fp);
0557nobodyさん2007/04/08(日) 03:33:53ID:evw5P74I
ファイルの改行の数数えるのってこれでいい?
substr_count ( file_get_contents($file), "\n" );

今までは
count(file($path));
でやってたけど上のほうが1.5倍速かった
ファイルはShift_JISで日本語入ってるけど平気かな
0558nobodyさん2007/04/08(日) 04:30:38ID:???
>>557
sjisの下位バイトは制御コード使ってないので大丈夫。
間違ってるのは後者。改行コードが0個でも1と返る。
0559nobodyさん2007/04/08(日) 09:24:41ID:iJakkiFr
質問です。
たとえば、ライブハウスのライブ情報を登録する機能があるとして、
各日にちごとに出演者情報を登録する際に、出演者数が毎日マチマチで
ある場合、SQLに送信する出演者IDの数もマチマチになるわけですけど、
そうすると、単純に考えたら保存するフィールドが複数必要になります。
でも、そんな不安定なことするわけにいかないので、特定のフィールド”players”に
カンマ区切りで追加上書きしていくのが正解なのかなぁと思ったんですが、
こういう発想でいいんでしょうか?
なんだかphpの質問かSQLの質問かわからないですが、アプリ制作の
いろはとして質問させてもらいました。OKですか?
0560nobodyさん2007/04/08(日) 09:40:33ID:???
>>559
DBの正規化の考え方からすれば、その「不安定なこと」も「特定フィールド
カンマ区切り」もいずれも外れてる。
ライブイベント情報に即して、出演者「行」を増やしていく(第一正規化)。
ライブイベント情報をキーにして出演者 tableを別途作り、またIDキーなどで
整序していく(第二正規化以降)のが普通。
0561nobodyさん2007/04/08(日) 10:06:38ID:???
>>560
なるほどー、ありがとうございます
正規化について調べてみます!
0562nobodyさん2007/04/08(日) 10:48:24ID:evw5P74I
>>558
さんくす
問題ないのね というか後者は間違ってたのか 助かりました
0563nobodyさん2007/04/08(日) 11:42:42ID:???
複数のデータをどう入れるかって問題はDB初心者のころは誰しも通る道だよね
大抵カラムをその数だけ増やすかカンマ区切りで入れちゃうんだけど
0564nobodyさん2007/04/08(日) 11:44:15ID:???
んでカンマ区切りにLIKE検索かけたりね
0565nobodyさん2007/04/08(日) 11:49:33ID:???
まあベタな補助情報ならそれでいいんだけど(たとえばドリンク付きカラムのコーラ、ジュース、ビール
みたいなもん)、出演者情報は、どう考えてもライブ情報なら最初から正規化対象だろうから
いい勉強の機会ということで。
0566nobodyさん2007/04/08(日) 12:48:00ID:+aqEfY9a
環境: Windows XP, Apache 2.2.4, PHP 4.4.6

$path = '/diary/2007/';
$dir = opendir($_SERVER['DOCUMENT_ROOT'].$path);

while($file = readdir($dir)) {
  if(ereg(".php$", $file)) {
    $file = ereg_replace('.php', '', $file);
    echo('<a href="/diary/2007/'.$file.'">'.$file.'</a>'."\n");
  }
}
closedir($dir);

このようにファイル名を取得してリストを作っています。
ディレクトリ 2007 の中には 01.php, 02.php, 03.php, 04.php のファイルがあり
また、上記の方法ではこの順に表示されます。
ディレクトリの中の最後のファイル名のみを取得したい場合は
(上記の例では 04.php が "最後のファイル名" に相当します)
どのように書けば良いのでしょうか。よろしくお願いします。
0567nobodyさん2007/04/08(日) 13:13:00ID:???
ループの中を
$aF[] = ereg_replace('.php', '', $file);
として
最後に
$hosii_file_mei = array_pop($aF);
じゃだめなのかい?
0568nobodyさん2007/04/08(日) 13:23:08ID:Q73wCY81
質問です。
PHPでBBSを作りました。
案の定荒らしが書き込まれています。
そこでプロキシ経由での書き込みを禁止したいのですが、その書き込みがプロキシ経由かどうかを知るためにはどうすればよいのでしょうか?
よろしくお願いします。
0569nobodyさん2007/04/08(日) 13:24:18ID:???
>>568
とりあえず>>119以降の関係レスを読め
0570nobodyさん2007/04/08(日) 13:28:26ID:???
>>568
ハッキリ言えば全て防ぐのは無理。


楽な方法としてはBBQつかってみるとか
05715682007/04/08(日) 13:29:08ID:Q73wCY81
>>569
ありがとうございます。
getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] )
で真にならなければプロキシ経由になるんですね。
知りませんでした。さっそく導入してみます。
0572nobodyさん2007/04/08(日) 13:30:42ID:???
ちょっと前までProxyとわかるためにすごく複雑なプログラム組んでたが、
こんなに簡単にわかるのか・・・
05735692007/04/08(日) 13:31:55ID:???
>>571
「経由」かもしれない、っていう程度だし、負荷がかかるし、あんまり自分は好きな方法じゃない。
とりあえずそこらへんからはじめて見たらってな程度。
自分がやるなら>>570の方面でやるだろうな。
0574nobodyさん2007/04/08(日) 13:38:40ID:???
Smartyって何だ?
フレームワーク?
それともソフト?
0575nobodyさん2007/04/08(日) 13:38:59ID:???
>>566
$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php');
とかやってcount()とかarray_pop()とかarray_slice()とかかなぁ。
0576nobodyさん2007/04/08(日) 13:40:19ID:???
>>574
検索もできないの?
05775682007/04/08(日) 13:43:30ID:Q73wCY81
さっそくBBQについて調べてみました。
http://bbq.uso800.net/code.html
に組み込み方法として
sub checkProxyList
{
my $RADDR = $ENV{'REMOTE_ADDR'} ;

$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.niku.2ch.net";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2')
{
DispError("ERROR!","公開PROXYからの投稿は受け付けていません!!(1)");
}
return 0 ;
}

が載っていましたが、これってPHPではないですよね?
PHPでのBBQの導入はどうすればよいのでしょうか?
0578nobodyさん2007/04/08(日) 13:43:56ID:???
>>576
いや、ググって調べたんだが自分の考えが合っているかどうかわかんないので

よく使う関数集みたいな感じで集めたものでいいの?
「アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。」
0579nobodyさん2007/04/08(日) 13:44:54ID:???
>>575
glob関数は、パターンマッチでファイル名を確保するから、
それ使うと、>>566の要件(おそらくファイルシステム上のファイル順での取得)には合わないでしょ。
0580nobodyさん2007/04/08(日) 13:49:52ID:???
>>577
それくらい勉強しなさい。
perl知らなくても、その程度のコード見れば移植は簡単でしょ。
それにもう少しぐぐれば、PHPでのそのBBQ対応スクリプト見つかるし。
脊髄反射で聞くのはやめようぜ。
0581nobodyさん2007/04/08(日) 13:50:49ID:???
>>577
その程度のPerlスクリプトならPHPの知識があれば十分読めるだろ

>>578
テンプレートエンジン
0582nobodyさん2007/04/08(日) 13:51:47ID:???
include()
include_once()
require()
require_once()
この違いがわかんね
0583nobodyさん2007/04/08(日) 13:53:29ID:???
>>579
GLOB_NOSORTフラグを立てれば、というか数字二桁限定では関係ないんでは。
0584nobodyさん2007/04/08(日) 13:54:36ID:???
>>582
マニュアル嫁
0585nobodyさん2007/04/08(日) 13:55:58ID:???
「マニュアル嫁」っていうやつは
どの辺り読むかURL出してやったほうがいいと思うぞ
ただでさえ読みづらいマニュアルなんだ
0586nobodyさん2007/04/08(日) 13:58:58ID:???
いつもの奴かw

>>583
ああ、そうだね。それだとOKか。
05875682007/04/08(日) 14:01:34ID:Q73wCY81
ありがとうございました。どうやらBBQいけたみたいです。
0588nobodyさん2007/04/08(日) 14:07:27ID:???
>>582
http://jp.php.net/manual/ja/function.include.php
http://jp.php.net/manual/ja/function.require.php
http://jp.php.net/manual/ja/function.include-once.php
http://jp.php.net/manual/ja/function.require-once.php

これでいいのか?
Webなんかで見るから見辛いんだろ?
CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
0589nobodyさん2007/04/08(日) 14:08:22ID:???
>CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
ちょwwww詳しく!!!!
0590nobodyさん2007/04/08(日) 14:08:57ID:???
相手にスンナってのに
0591nobodyさん2007/04/08(日) 14:17:07ID:???
>「マニュアル嫁」っていうやつは 
>どの辺り読むかURL出してやったほうがいいと思うぞ 

関数なんて関数名でぐぐれば出てくるしPHPサイとの検索機能使ってもでてくるし
関数リファレンスって章があるんだし
自分で探せない奴は頭おかしいと思うぞ。
05925662007/04/08(日) 14:21:53ID:+aqEfY9a
>>567, >>575, >>579, >>583
ありがとうございました。最近のファイルを取得したかったので、
>>567 の方法を採らせていただきました。ありがとうございます。
0593nobodyさん2007/04/08(日) 14:25:12ID:???
>>592

>>567だけど、>>579のglob使うほうがスマートだよ。

$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php',GLOB_NOSORT);
echo array_pop($index);
の二行で終わる。
0594nobodyさん2007/04/08(日) 14:27:02ID:???
>ただでさえ読みづらいマニュアルなん

PHPほど親切で分かりやすいマニュアルはないだろマジで・・・
0595nobodyさん2007/04/08(日) 14:29:00ID:???
確かにPHPの関数名でググるとPHPマニュアルが見つかる。
ザクザク見つかる。
というかそれしか出てこない。
PHPマニュアルのミラーがなんであんなにあるのか不思議だ。
置くなとは言わないが、せめて検索エンジンはじいてくれよ。。。
0596nobodyさん2007/04/08(日) 14:29:21ID:???
公式落ちてる時に役立つじゃn
0597nobodyさん2007/04/08(日) 14:41:36ID:???
公式が落ちたときのためのミラーがそんなにいくつも要りますか。
ググった時の上位10件がPHPマニュアルとそのミラーなんて酷すぎるぜ。

あと、PHPマニュアルは階層構造になっているのが逆に使いづらいというか。
目次をクリックしたらまた目次だったときは一瞬迷う。
0598nobodyさん2007/04/08(日) 14:43:03ID:???
だからCHM使えと何度言ったら
0599nobodyさん2007/04/08(日) 14:45:07ID:???
>>597
沢山あって分かりにくいからミラー作らないで下さい/Googleは規制してくださいってか?
情報の選別くらい自分でしようぜ
0600nobodyさん2007/04/08(日) 14:51:11ID:???
いや、でも分かる
俺も検索しててウザーって思う
なんでみんなあんなにミラー作りたがるんだ?
0601nobodyさん2007/04/08(日) 15:20:38ID:???
つーか関数調べるだけならGoogle使うより http://php.net/関数名 の方が断然早いわな
0602nobodyさん2007/04/08(日) 15:25:46ID:???
作りたがるっていうか、apacheの設定で勝手に拾われてるんじゃないの?
0603nobodyさん2007/04/08(日) 15:29:18ID:???
>>601
アドレス欄に php.net/hogehoge でいける
0604nobodyさん2007/04/08(日) 15:40:28ID:???
ブラウザで設定しとけば、もっと早くなりますな
0605nobodyさん2007/04/08(日) 15:43:51ID:???
望んでる動作をする関数を見つけたいときはどうするんだぜ?
06065662007/04/08(日) 15:48:22ID:???
>>593
早速書き換えました。重ね重ねありがとうございます。
0607nobodyさん2007/04/08(日) 15:49:57ID:???
>>605
望んでる動作で検索すれば?
0608nobodyさん2007/04/08(日) 15:50:40ID:???
>>605
・ぐぐる。
・目的別リファレンスがある書籍を買う。
・日頃からマニュアルを眺めて関数の機能を把握しておく。
0609nobodyさん2007/04/08(日) 15:51:17ID:???
文字列関数ならphp.net/string、配列関数ならphp.net/array、よくわからんかったらphp.net/funcrefから探したりとか
06106092007/04/08(日) 15:52:19ID:???
stringじゃなくてstringsだった
0611nobodyさん2007/04/08(日) 16:09:15ID:???
phpマニュアルのミラーに広告載せてるやつは何なの?
0612nobodyさん2007/04/08(日) 16:34:10ID:???
お前みたいなカモを待ってるんだろ。

公式ブックマークしとけばそんなサイト気にならないよ。
0613nobodyさん2007/04/08(日) 16:46:06ID:???
自分の鯖にマヌアルうpるやつってなんなの?
自分らしさの表現なの?
どうせなら本家ミラーのjp*.php.netにすればいいのに
0614nobodyさん2007/04/08(日) 16:52:55ID:???
ミラーサイト=SEO
0615nobodyさん2007/04/08(日) 17:05:27ID:???
しかもろくに更新しないから内容の古いことw
0616nobodyさん2007/04/08(日) 17:33:21ID:???
ミラーサイトは公認制にするべき。
ミラーサイト側に苦情を入れようと思ってる。
0617nobodyさん2007/04/08(日) 17:47:25ID:???
本家とかjp.php.netとかPHPユーザ会(これは論外に遅い)の
サーバーの挙動が遅いってのもあるよな。そこらへんは使う気になれない。
0618nobodyさん2007/04/08(日) 17:52:51ID:???

以上、アンチミラーサイト側

それについてミラーサイト作者の反論
0619nobodyさん2007/04/08(日) 18:06:37ID:???
いやなら公式見てればいいじゃないですか
06206172007/04/08(日) 18:13:53ID:???
俺はこっち側
0621nobodyさん2007/04/08(日) 18:18:01ID:???
>>619
マニュアルのミラーが検索結果を汚染しているって話だったのだが
0622nobodyさん2007/04/08(日) 18:33:07ID:???
Webに転がってるミラーうざい⇒自分専用のミラー作っちゃえ
0623nobodyさん2007/04/08(日) 18:34:56ID:???
マニュアルしか出てこないってこたないでしょ
例えばどの関数でぐぐるとそうなる?
0624nobodyさん2007/04/08(日) 19:09:56ID:???
>>623
http://www.google.co.jp/search?q=ob_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_contents&lr=lang_ja

上位にくるミラーうざい
0625nobodyさん2007/04/08(日) 19:11:08ID:???
マニュアルが上位に引っかかって有効な情報がえられない
むしろミラーサイトなんて複数もいらねえよ
0626nobodyさん2007/04/08(日) 19:12:27ID:???
むしろというか、その話をしているんだけどね^^;
0627nobodyさん2007/04/08(日) 20:35:55ID:???
preg_matchで4桁の数値にマッチさせるには
/^\d{4}$/
でいけましたが、
4桁〜8桁の文字にマッチさせるにはどうすれば良いのでしょうか?
/^\d{4-8}$/
にしてみましたがダメでした
0628nobodyさん2007/04/08(日) 20:41:18ID:???
マニュアルをミラーすると:
・ウェブサイトの知名度やページランクが上がる可能性がある。
・広告をつければ何もせずにお金がじゃんじゃか、ああおいしい。
・なんとなくいいことした気分になる。
0629nobodyさん2007/04/08(日) 20:42:42ID:???
>>627
/^\d{4,8}$/

マニュアル読もうな
0630nobodyさん2007/04/08(日) 20:42:48ID:???
>>627

/^\d{4,8}$/
0631nobodyさん2007/04/08(日) 20:44:22ID:???
>>627
http://www.php.net/manual/ja/reference.pcre.pattern.syntax.php
0632nobodyさん2007/04/08(日) 20:50:55ID:???
公式のみ指定でぐぐればいいんじゃ?
0633nobodyさん2007/04/08(日) 20:59:02ID:???
それじゃあ公式しか調べられないじゃん。
0634nobodyさん2007/04/08(日) 20:59:54ID:???
もうどうでもいいから、そろそろやめようか
0635nobodyさん2007/04/08(日) 21:04:49ID:???
関数のTipsとか面白い使い方とかを調べたくてぐぐっても
マニュアルばっかりだとやる気なくすよってことでは?

-マニュアルとか-manualを付けるって手もあるけど
たまたまそれらの語句を含んでいた有益なページまで除外してしまうかもしれんし
0636nobodyさん2007/04/08(日) 21:10:11ID:???
そこでオントロジ検索ですよ
0637nobodyさん2007/04/08(日) 21:21:57ID:???
公式マニュアルとUser Contributed Notes以外に有益な情報なんてほとんど皆無。
例外的に有益な情報はちゃんと上位に出てくる。
このスレのレベルは公式嫁だからもういいじゃん。
0638nobodyさん2007/04/08(日) 21:23:58ID:???
SELEFT * FROM account
      ↓
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEFT * FROM account' at line 1


これってaccountってテーブルがないってことでいいんだよな?
0639nobodyさん2007/04/08(日) 21:25:42ID:???
なんという構文エラー・・・これは間違いなく(ry
0640nobodyさん2007/04/08(日) 21:26:29ID:???
seleFtになってんぞ。
0641nobodyさん2007/04/08(日) 21:26:32ID:???
これは間違いなくSELEFT構文
0642nobodyさん2007/04/08(日) 21:28:28ID:???
インド人を右に
SEを左に
0643nobodyさん2007/04/08(日) 21:29:09ID:???
糞ワロタwwwwwwwwwwww
0644nobodyさん2007/04/08(日) 22:22:06ID:OS1trKFT
複数のIPから連続して国判別する方法を探しています。
APIやPEAE等ありましたら情報頂けると嬉しいです。


現在は下記PEARで四苦八苦しています。

下記 Net_GeoIP という pearパッケージをインストールしたのですが、エラーが出ます。
ttp://www.go-pear.org/manual/ja/package.networking.net-geoip.php

pearインストールコマンド
pear install -f Net_GeoIP
でbetaのバージョンを入れています。

ttp://www.maxmind.com/app/geoip_country
からBinary Formatの「GeoIP.dat.gz」をダウンロードした物を、解凍して置いてあります。

ttp://www.go-pear.org/manual/ja/package.networking.net-geoip.lookupcountrycode.php
のサンプルソースを実行すると。

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /usr/share/php4-pear/Net/GeoIP.php on line 128
とpear内でのエラーが出ます。

どのように対処したらいいのでしょうか。
0645nobodyさん2007/04/08(日) 22:36:39ID:???
>>644みたいなバカは久しぶりに見た
0646nobodyさん2007/04/08(日) 22:44:17ID:zw0Bo/cU
質問です。>>644の質問はPHPと何の関係があるんですか?
0647釣りかも...2007/04/08(日) 22:45:14ID:???
>>638
> check the manual (マニュアル嫁、バカ)
0648nobodyさん2007/04/08(日) 22:46:15ID:???
>>646
The PHP Extension and Application Repository

プログラミング言語PHP用のライブラリ集。色々な拡張モジュールやアプリケーションがPEARに登録されており、ネットワーク経由で取得・利用することができる。PerlでいうCPANにあたる。

「ぴあー」だと思われていたが最近「ぺあー」だと判明
0649nobodyさん2007/04/08(日) 22:48:29ID:???
PEARって俺パールって読んでたよwwwwwwwwww
0650nobodyさん2007/04/08(日) 22:49:56ID:???
パールはperlだろ
0651nobodyさん2007/04/08(日) 23:05:24ID:???
>>644
とりあえずphpのバージョンを書いて。
大方php5で実行してるから、php4のOO満載のpearがエラー出してるんだと思うけど。
0652nobodyさん2007/04/08(日) 23:09:51ID:OS1trKFT
>>651
PHP Version 4.4.4
です。

php4用に書かれていないんでしょうか・・。
0653nobodyさん2007/04/08(日) 23:24:30ID:???
mysql_query()って成功するとTRUE返すんだっけ?
0654nobodyさん2007/04/09(月) 00:02:37ID:???
パスワードの暗号化って皆何使ってる?
md5でいいの?
0655nobodyさん2007/04/09(月) 00:02:43ID:???
globとopendirって使い分けで何か気をつけることある?
ファイル名を正規表現でいじるならはじめからreaddirのなかでpreg_matchする→opendir
簡単なパターンマッチ→glob
なのかなあと。こんなかんじ?
■ このスレッドは過去ログ倉庫に格納されています