トップページ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
0439nobodyさん2007/04/06(金) 05:27:44ID:???
C++
0440nobodyさん2007/04/06(金) 05:45:43ID:???
Perlに気間ってんだろ
0441nobodyさん2007/04/06(金) 05:46:01ID:???
>>438
Perl
0442nobodyさん2007/04/06(金) 06:33:23ID:???
>>439
氏ね
0443nobodyさん2007/04/06(金) 08:46:53ID:???
Perlは人の書いたコードは読めない。
0444nobodyさん2007/04/06(金) 09:59:03ID:???
perl は言語仕様を隅々まで目を通さないと、
他人の書いたコードが読めなくなるからな
0445nobodyさん2007/04/06(金) 10:16:48ID:???
>>442
くたばれ
0446nobodyさん2007/04/06(金) 10:23:16ID:???
>>431
$html = '<FORM>
A
<IMG SRC="./NULLPO.GIF" />
<INPUT
TYPE="CHECKBOX"
CHECKED />
A
</FORM>';
$html = preg_replace_callback('/<[^<>]+>/',create_function('$matches',
'if(strpos($matches[0],\'=\') === false) return strToLower($matches[0]);
$length = strlen($matches[0]);
$quote = false;
for($i = 0; $i < $length; $i++) {
if($matches[0][$i] === \'"\') $quote = !$quote;
elseif(!$quote) $matches[0][$i] = strToLower($matches[0][$i]);
}
return $matches[0];'),$html);
var_dump($html);

string(79) "<form>
A
<img src="./NULLPO.GIF" />
<input
type="CHECKBOX"
checked />
A
</form>"

まぁおおよそ効率の良いやり方じゃないが、な…。
即席なんで不備があるかもしれん。
0447nobodyさん2007/04/06(金) 12:30:19ID:???
pearのAuthを使って認証しようとしてるんですが、 Class 'DB' not found in
というエラーになります; DBクラスが見つからないと言っているんでしょう
けどDB.PHPはちゃんとあるし、何故なんでしょうか?
0448nobodyさん2007/04/06(金) 12:32:35ID:???
>>447

マルチ乙
0449nobodyさん2007/04/06(金) 12:39:44ID:???
>>448
板間違えて書き込んだので直ぐ誤ってますよ。

昨日一日考えてたんですが、今自己解決しました。
pear DBをインストールしたらOKでした。
0450nobodyさん2007/04/06(金) 12:56:23ID:???
配列のキーの値に、文字数制限などあるんでしょうか?
0451nobodyさん2007/04/06(金) 13:06:15ID:???
>>447
まさかとは思うが、pear/DB.php がないってことはないだろうな
0452nobodyさん2007/04/06(金) 13:06:52ID:???
あ、すでに自己解決していたか
04533382007/04/06(金) 14:28:35ID:???

class内でpreg_replace_callbackする際、
あらかじめ配列化された$this->mojiを使用することが出来ません。
こんなときどうすればいいんでしょうか?

#$this->moji= array('001'=>'<font size="1">', '002'=>'<font size="2">'…);
#$str = '!001!';だとした場合

function hoge_ForOutput($str)
{
$hoge = preg_replace_callback(
"/!(\S{4})!/",
array($this, 'conv_func'),
$str
);
return $hoge ;
}
function conv_func($str)
{
if($this->moji[$str['1']]=="")
{
return $str; }
else
{
return $this->moji[$str['1']];
}
}
}
04544532007/04/06(金) 14:30:08ID:2B8Av++o
ID出し忘れました
名前も間違えました。。
すみません
0455nobodyさん2007/04/06(金) 14:56:10ID:???
>>453
\S{4}?\S{3}じゃなくて?
04564532007/04/06(金) 15:05:58ID:2B8Av++o
>>455
ご指摘ありがとうございます。
変数名等、実際のものと少し書き換えたのでミスしてしまいました。
この場合、\S{3}です。

ただ、問題なのは
function conv_func内で$this->mojiがNULLになってしまうことなんです。
0457nobodyさん2007/04/06(金) 15:23:40ID:???
array(&$this, 'conv_func'),
は?
0458nobodyさん2007/04/06(金) 15:27:32ID:???
ごめん、違うわ↑
0459nobodyさん2007/04/06(金) 15:34:16ID:???
>>456
ならないけど…。
実際の物を書いたら?

ちなみに同じくミスっているのかもしれないけど下記はエラーになる。
if($this->moji[$str['1']]=="") // Undefined index
return $str; } // Array to string conversion
04604532007/04/06(金) 15:45:14ID:???
すみません。。
オブジェクト作成時
Hoge::hoge_ForOutput()
にしていたのが原因でした…

お騒がせしました
0461nobodyさん2007/04/06(金) 15:48:24ID:???
ヽ(´ー`)ノ
04624532007/04/06(金) 16:02:55ID:???
m(#_ _)m
0463nobodyさん2007/04/06(金) 20:59:56ID:pizAbRpt
allow_url_fopen = Offにしてあるレンタル鯖なのですが、
どうすれば他鯖のファイルを取得できますか?
申し訳ないですが、ご教授ください
0464nobodyさん2007/04/06(金) 21:04:21ID:sS5tmZeq
クラス内定数をクラスを定義しているファイルの外で定義することは出来ないのでしょうか。
0465nobodyさん2007/04/06(金) 21:11:00ID:???
>>464
まず試してみましたか?ためしてみてできなかったら質問してください
0466nobodyさん2007/04/06(金) 21:14:07ID:???
>>463
pearのhttp_requestとか?
offでできるかは知らね
>>464
それは最早クラス内定数ではないのでは・・・。
継承すればスーパークラスの使えるのかな?
ほか変数なりdefineなりグローバル変数なりを考えてみてはどうでしょう.
0467nobodyさん2007/04/06(金) 21:54:34ID:9fDFot8y
クラスってどんな便利性があるの?
0468nobodyさん2007/04/06(金) 22:06:44ID:???
使いまわしできる
0469nobodyさん2007/04/06(金) 22:08:22ID:???
>>467
オブジェクト指向を実現できる
0470nobodyさん2007/04/06(金) 22:11:53ID:???
Pearのquickformでフォームを
作ってみたんですが、フォームの部品を

[select box] [search box] [bottun]

みたいに並べるのはどうすればいいんでしょうか?
普通にやると
[select box]
[search box]
[bottun]
みたいにレイアウトされてしまいます。
0471nobodyさん2007/04/06(金) 22:15:04ID:???
それはHTMLとCCSの問題だと思う
0472nobodyさん2007/04/06(金) 22:15:33ID:???
間違えたCSSね
0473nobodyさん2007/04/06(金) 22:25:28ID:???
>>470
どういうレンダラーをつかっているのかという問題。
ttp://www.is.titech.ac.jp/~yanagis0/kei/quickform.html
とか
ttp://www.townmedia.org/tips/PEAR/HTML_QuickForm.html
を見ながらどうすべきかを考えるべし。

>>471,472
全然、無関係。
04744702007/04/06(金) 22:31:06ID:???
>>473
リンク先参考になりました。
どうもありがとうございます。
0475nobodyさん2007/04/06(金) 22:39:22ID:9fDFot8y
>>468
じゃあfunctionでよくね?

>>469
とは?
0476nobodyさん2007/04/06(金) 22:42:22ID:???
>>475
とはとは?
0477nobodyさん2007/04/06(金) 22:43:53ID:9fDFot8y
>>476
とはとはとは?
0478nobodyさん2007/04/06(金) 23:05:29ID:???
>>475
関数とは全然違う。クラスは型だ。
0479nobodyさん2007/04/06(金) 23:58:48ID:51+hyhMJ
preg_match('/^(string)?;(string)?;(string)?$/', ';string;', $matches);

でマッチさせると、$matches[1]には空文字列が入ってくれるのに$matches[3]には値がセットされません。
この挙動は変ではありませんか?
0480 ◆SQL.mUThc. 2007/04/07(土) 00:10:22ID:vJbH2RhG
セッションについて質問です
まずwildcard.phpでセッションを開始し、GETのyouridにセッションidを渡します
このような形になります ⇒ hoge.php?yourid=hogehogehoge3333
そしてGETで受け取ったyouridの値を、hoge.php側で確認できる$_SESSIONのセッションidと一致したかどうかでユーザー認証をしています

そこで質問ですが、
このセッションidがリファラーなどで外部に漏れて第三者に渡り、その第三者がこのアドレスにアクセスしたとしても
その第三者がアクセスするときはセッションIDが違うので、認証ができないことを確認したのですが
この方式でユーザーの認証をするのはセキュリティ的にみて問題はありますでしょうか?
セッションを扱うのは今回がはじめてで無知なことは承知しています
詳しい方よろしくお願いします
0481nobodyさん2007/04/07(土) 00:22:19ID:???
>>480
そのセッション情報をどこに保存するかで変わると思う
cockieなら、悪意がある人間がたまたま情報を手に入れる
ことができたのなら、認証を突破できるだろう
0482nobodyさん2007/04/07(土) 00:34:35ID:???
>>480
セッションIDをパラメタに埋め込む必要はあるのかな?
勘違いかも試練がデフォルトクッキーが使えるならクッキー
にセッションIDを持たせるんじゃなかったっけ?

ただ何があろうともSSLは必須
0483 ◆SQL.mUThc. 2007/04/07(土) 00:48:33ID:vJbH2RhG
わかりました
やはり当方セッションについて勉強不足のようです
もう少し勉強しないと危険なスクリプトになりそうです
どうもクッキーがポイントみたいですね 出直してきます
ご意見ありがとうございます
0484nobodyさん2007/04/07(土) 00:50:27ID:???
>>480
ここに書いてあるぐらいの事は最低でも全部やっといたほうが無難。
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session
0485nobodyさん2007/04/07(土) 01:31:50ID:zMY0muXp
掲示板などいろいろ作ってます。
文字コードは今までいろいろ試しました。SJIS,EUC,UTF8
一長一短あると思いますが、何が一番いいでしょうか?
0486nobodyさん2007/04/07(土) 01:38:49ID:???
>>485
まぁ、もうUTF-8だろうな〜
RedHatもデフォルトUTF-8になったbオ。

SJISは論外
0487nobodyさん2007/04/07(土) 01:40:41ID:???
UTF8以外はありえんから
0488nobodyさん2007/04/07(土) 01:41:13ID:???
>>485

クロスブラウザを考慮しつつ、手間がかからない方向で考えると
スキルあるならSJIS。携帯でも見れるし。
スキル無いなら、EUCが無難ってとこじゃね?

古いOSのブラウザをバッサリ捨てるならUTF8。
0489nobodyさん2007/04/07(土) 01:42:55ID:???
あらかじめ言っておくけどBOM調べとけよ
0490nobodyさん2007/04/07(土) 01:53:48ID:???
Web2.0関連(笑)でUTF-8以外使うとトラブルの元。
0491nobodyさん2007/04/07(土) 01:55:00ID:???
無印Win98だってUTF8無問題で読めるのに・・・
0492nobodyさん2007/04/07(土) 01:57:49ID:???
>>491
出版社関係お得意のMac OS9のIEだとUTF8ダメだねw
0493nobodyさん2007/04/07(土) 02:03:31ID:???
それは知ってるけどさー、MACIEに対応するために他の全てを犠牲にするのはナンセンスじゃん
せっかくうざい文字コード問題がUTF8統一で解決しかかってるのに、ノイジーマイノリティのために
全体の足を引っ張るのは論外じゃね? 全体の1%もない連中が騒ぎすぎなんだよ・・・
0494nobodyさん2007/04/07(土) 02:20:39ID:???
>>493
足引っ張るとかじゃないんじゃね?
サイト構築者が、一人でも多くのお客さんに見てもらいたいと
イヤラしく考えるかどうかだけでしょw

俺個人の話をすると、某マイナーゲームのサイトを
立ち上げたんだけど、まぁぶっちゃけ、既に有名サイトがあって
その二番煎じだったんだよね。ただ、その某有名サイトは
UTF8でCMS的な作りだったんだけど、俺はEUCで構築して
携帯用にはSJISで吐き出せるようにした。某雑誌がその
ゲームを取り上げる際に、紹介サイトとして、俺のサイトを
掲載したいとメールを送ってきた。本家的な某大御所サイトが
あるのに、何故俺のサイトなんだろう?と今でも分からないけど
多分、雑誌社の編集部はMac OS9で、俺のサイトをチェック
しやすかったんだろうと、俺は睨んでるw
0495nobodyさん2007/04/07(土) 02:51:44ID:???
どんどん痛々しい展開になってきたのでこの辺で終了。
0496nobodyさん2007/04/07(土) 04:45:19ID:???
みんな知ってるサイト紹介しても意味ないからな
0497nobodyさん2007/04/07(土) 06:09:42ID:???
宣伝乙厨発生警報
0498nobodyさん2007/04/07(土) 07:19:36ID:???
マカーって数は少ないくせに声だけはやたら大きい
0499nobodyさん2007/04/07(土) 10:01:39ID:vZgv1pNd
php5にimapをインストールしたいんですがなかなか出来なくて困ってます
今のところは以下の手順でやってます

cd imap-2006f
make lrh
cp -p c-client/rfc822.h c-client/mail.h c-client/linkage.h /usr/include/
cp -p c-client/c-client.a /usr/lib/
これで
php-5.2.1
./configure --with-imap=/usr/local
とすると
utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen.
ってエラーで止まっちゃって
config.log見ると

configure: failed program was:
#line 45958 "configure"
#include "confdefs.h"

#include <c-client.h>

int main() {

int i = U8T_CANONICAL;

; return 0; }
0500nobodyさん2007/04/07(土) 10:23:25ID:???
>>499
使ってないので良く知らんけど
なんで、聞く前に
U8T_CANONICAL is missing PHP
ぐらでぐぐらないのか?一発で原因がわかるんだけど。
0501nobodyさん2007/04/07(土) 10:43:33ID:???
SNSみたいなソフトを作ろうと思ったら
やっぱり独自にフレームワークを構築するのかな?
どんな感じで作ってるのかすげー気になる。
0502nobodyさん2007/04/07(土) 10:45:39ID:???
SNSなんか簡単に作れる
作る気にはなんねーけど
0503nobodyさん2007/04/07(土) 10:48:05ID:???
>>501
GREEやってることを見ればいいんじゃない?
あそこは本人のEthna発展系でフレームワーク作ってるから。
0504nobodyさん2007/04/07(土) 10:50:04ID:???
SNS作るためにフレームワークが必要,ってなんかおかしくね?
0505nobodyさん2007/04/07(土) 10:55:57ID:???
商売で持続的に展開するには必要でしょ。
SNSそれ自体は結局は単なるブログと掲示板の集積だから「簡単」に作れるにしても、
商売に必要な多機能付加、メンテナンス考えれば、きちっとしたフレームワークがなきゃね。
0506nobodyさん2007/04/07(土) 11:23:40ID:???
メンテナンス性を考えるのならそれを見越した書きかたをすれば良いだけ
SNSなんて既存のフレームワークで充分だろ
0507nobodyさん2007/04/07(土) 11:38:26ID:36/fFnrN
mixiってなんの言語でつくってんの?
0508nobodyさん2007/04/07(土) 11:50:23ID:???
Perlらしい
0509nobodyさん2007/04/07(土) 12:10:36ID:JPCg3GgQ
フレームワークって何?
0510nobodyさん2007/04/07(土) 12:40:12ID:???
開発枠組み
0511nobodyさん2007/04/07(土) 13:09:47ID:JPCg3GgQ
ってことは俺はじゃあ俺はWAMPか
0512nobodyさん2007/04/07(土) 13:18:06ID:???
WAMPとかLAMPとかは、開発(一般)環境だな。
フレームワークって言った場合は、ソフトウエアのためのソフトウエア統合環境のことだ。
0513nobodyさん2007/04/07(土) 13:23:52ID:JPCg3GgQ
WAMP+Dreamweaverで開発している俺は独自環境・・・?
0514nobodyさん2007/04/07(土) 13:24:34ID:???
Dreamweaver(笑)
05154792007/04/07(土) 13:43:50ID:qxhDTSD1
回答がないようですので、PHP-usersのメーリングリストで聞きます。
失礼しました。
0516nobodyさん2007/04/07(土) 13:44:49ID:???
最初からそうすればいい
0517nobodyさん2007/04/07(土) 13:56:34ID:???
マニュアルも読まないで、挙動が変だとか言う奴になにを「回答」しろというのだよ。
0518nobodyさん2007/04/07(土) 14:02:21ID:S7Rnm2Ut
ファイルロックしたまま開放せずにexitしちゃったらどうなるの?
0519nobodyさん2007/04/07(土) 14:03:37ID:???
どうもしないよ
05205012007/04/07(土) 14:07:31ID:???
>>503
thx 参考になります。

SNSというよりWebアプリと言うべきだったorz
最近phpをはじめてCMSなどをいじりはじめたので
>>505さんの言われている様なことが気になっていたんです。

で自分で話し振っといて悪いがフレームワークが何なのかわからなくなったw
しかもなぜ>>501の質問に至ったのかさえ忘れてしまったw
ほんと俺ってバカだなwwwwwwwww
0521nobodyさん2007/04/07(土) 14:09:30ID:???
>>518
まずは、マニュアルを読め

http://jp.php.net/manual/ja/function.flock.php
0522nobodyさん2007/04/07(土) 14:16:46ID:S7Rnm2Ut
>519 >521
さんくす
すまん読んだつもりが見逃してた
0523nobodyさん2007/04/07(土) 14:40:08ID:???
>>520
とりあえずなんでもいいからフレームワークダウンロードして
ちょっと弄ってみたらわかるとおもう

言葉で説明しても分かってる人にしか分からん説明になりそうだ
0524nobodyさん2007/04/07(土) 15:14:17ID:???
>>513
仲間^^
0525nobodyさん2007/04/07(土) 17:02:20ID:???
$hoge[var]と$hoge['var']って違うの?
なんか違う結果が出るんですけど・・・。

あと
$hoge = array( var => 'test' );

$hoge = array( 'var' => 'test' );
って違うんでしょうか?
0526nobodyさん2007/04/07(土) 17:03:41ID:???
     _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      | ( ゚Д゚)  <あのね、先生もそんなにヒマじゃないの。
      |(ノ  |)
      |    |
      ヽ _ノ
       U"U
0527nobodyさん2007/04/07(土) 17:13:48ID:???
せめてマニュアル読んで質問しろよ・・・常識的に考えて・・・
0528nobodyさん2007/04/07(土) 17:33:22ID:???
というか、言ってること不明だなw
0529nobodyさん2007/04/07(土) 17:48:09ID:???
test.phpをincludeのみで使いたいんだが、
直リンクできないようにする方法とかない?
0530nobodyさん2007/04/07(土) 17:52:13ID:???
>>529
__FILE__ と $_SERVER['SCRIPT_FILENAME'] を比較することで
直アクセスか、includeされてるかの判別ができるからそれでどうにかしろ
0531nobodyさん2007/04/07(土) 18:05:51ID:???
>>529

1.普通は、include先ファイルはWebディレクトリ外に置く。これが基本。

2.中に無きゃいけないっていうなら、include元の(たとえば)index.php冒頭に
define('MYFILE',true);
とか書いておいて、includeされるファイル冒頭に
if(!defined("MYFILE") || MYFILE != true) {
  die('');
}
みたいなことやる。

3.2.でアクセスされるのも厭なら、apacheのrewrite_modつかって
RewriteEngine on
RewriteRule (アクセス許可ファイルじゃなきゃ) (アクセス不可)
とかで処理。
0532nobodyさん2007/04/07(土) 18:18:21ID:???
include だけなら拡張子変えれば?
0533nobodyさん2007/04/07(土) 18:21:53ID:???
httpdのmimetype関係ディレクティブを弄らないと普通は
テキストファイルとして見えちゃうことが多いから駄目でしょ。
0534nobodyさん2007/04/07(土) 18:21:54ID:???
webサーバ側で対象のファイルやディレクトリに
アクセスできなくすればいいapacheなら.htaccessとかでdenyに
webからアクセスできなくてもphpからなら権限さえあればincludeできる
0535nobodyさん2007/04/07(土) 18:23:58ID:???
htaccessってあんまりおすすめしたくないな
0536nobodyさん2007/04/07(土) 18:25:35ID:???
webサーバー側設定に依存するのは事故拡散するからね。
>>531あるいは>>531の2のようなこととかをPHP内部でしておくのが大切。
0537nobodyさん2007/04/07(土) 18:26:26ID:???
おっと誤記
×>>531あるいは
>>530あるいは
0538nobodyさん2007/04/07(土) 18:47:11ID:???
俺もLAMP環境を中心に色んな案件やってきたが、>>530-531の方法を推奨する

何か実現したい事があった時に、色んな設定(コーディング)等をする必要があるのは高度だ。
不具合があった時に問題切り分けなど時間かかって経費かかるし、
速度面や再利用性など重視で問題がなければ、言語内で完結したほうがいい。
■ このスレッドは過去ログ倉庫に格納されています