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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0002nobodyさん2008/03/16(日) 17:23:57ID:???
【簡易FAQ】 (1/3)
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
0003nobodyさん2008/03/16(日) 17:24:08ID:???
【簡易FAQ】 (2/3)
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
0004nobodyさん2008/03/16(日) 17:24:20ID:???
【簡易FAQ】 (3/3)
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0005nobodyさん2008/03/16(日) 17:24:55ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0006nobodyさん2008/03/16(日) 17:25:21ID:???
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
【PHP】下らねぇ質問はここに書き込みやがれ 64
http://pc11.2ch.net/test/read.cgi/php/1202536271/
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/
【PHP】下らねぇ質問はここに書き込みやがれ 62
http://pc11.2ch.net/test/read.cgi/php/1199956159/
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1198002831/
【PHP】下らねぇ質問はここに書き込みやがれ 60
http://pc11.2ch.net/test/read.cgi/php/1196511516/
【PHP】下らねぇ質問はここに書き込みやがれ 59
http://pc11.2ch.net/test/read.cgi/php/1195204145/
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
【PHP】下らねぇ質問はここに書き込みやがれ 56
http://pc11.2ch.net/test/read.cgi/php/1192092941/
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
0007nobodyさん2008/03/16(日) 17:31:12ID:???
■関連スレ
くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/
PHP関連の書籍 第5版
http://pc11.2ch.net/test/read.cgi/php/1203696253/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】 Smarty 隔離スレ 【テンプレート】
http://pc11.2ch.net/test/read.cgi/php/1201879269/
PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/
【PHP】フレームワークについて語るスレ10【総合】
http://pc11.2ch.net/test/read.cgi/php/1202521438/
【PHP】Ethna part.2【国産フレームワーク】
http://pc11.2ch.net/test/read.cgi/php/1186096518/
ZendFramework Part2
http://pc11.2ch.net/test/read.cgi/php/1204726884/
フランチョスとsymfony
http://pc11.2ch.net/test/read.cgi/php/1201177567/
最強のPHPエディタはなに?
http://pc11.2ch.net/test/read.cgi/php/1133785416/
0008nobodyさん2008/03/16(日) 17:49:38ID:???
【PHP】PEAR Part3
http://pc11.2ch.net/test/read.cgi/php/1188789351/
【PHP】フレームワーク Akelos
http://pc11.2ch.net/test/read.cgi/php/1187333485/
正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
正規表現 part4
http://pc11.2ch.net/test/read.cgi/tech/1186030400/
MySQL 総合 Part13
http://pc11.2ch.net/test/read.cgi/db/1201632550/
Oracle 総合 Session6
http://pc11.2ch.net/test/read.cgi/db/1162215948/
SQLite 6
http://pc11.2ch.net/test/read.cgi/db/1193118037/
Microsoft SQL Server 総合スレ 5
http://pc11.2ch.net/test/read.cgi/db/1175091880/
PostgreSQL Part.5
http://pc11.2ch.net/test/read.cgi/db/1196512717/
データベース
http://pc11.2ch.net/db/
0009nobodyさん2008/03/16(日) 21:29:23ID:???
お約束ってことで。>>1shine

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0010nobodyさん2008/03/17(月) 00:31:39ID:???
                 , .-==== - 、
                  ∠   `^`^~^`ヽ、 \
              ,∠ -‐……‐- 、    \ \
             / .::.::.::.::.:..;.:.:.:..:.:..`ト、    \ \
            / . .::/.:/::.::.:/.::.::.:://.:l.:|:ヽ     i  \
              / . ::./::/:.:::.:/.::.:::,.イ/.:::l.:|.::..ヽ    i    \
           i.:i.:.:l.l.::l「.`メ.:.:///∠ l.:|.::i.::.ヽ  i   , ィ´
           |::|.::|:l:::lレく:/ // /⌒i.:ト、l.::.:::.〉 i / /
           |::|.::|:l:::l1 トミ   ,ィr==ト、l:.::.:/  レ'´ .:/
          lハ:::ト、::l」_リ    i l.:.:.:. リ l/:/ ,f.: .: .:.:i   下らねぇ質問は
               l/ ヽ' ' ' '     ┴ー'//  ,f: : : : :.:|   ここに書き込みやがれ
           rソ   ハ、   「`7  ' '∠ イ  ,f: : : : : : :|   チビ人間
           rソ  ノ.:i:.:.> ‐一 ´_⊥:{  {.: : : : : : .:|
            rソ  ノr'77´ 二`ニ´  ̄`{  { : : : : : : |
         rソ   ノr'77 /^フ介ト、     {  { : : : : : :.|
        ,f  ノ.:r'77\ //j,。l l〉〉   ,r.{  ト、 : : i : |
0011nobodyさん2008/03/17(月) 04:09:43ID:???
php.iniのmbstringのセクションを以下のようにしました。
かえた方がいいところがあれば教えて下さい

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding =UTF-8
mbstring.http_input = auto
mbstring.http_output =UTF-8
mbstring.encoding_translation = Off
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_encoding = Off
0012nobodyさん2008/03/17(月) 05:17:29ID:???
いつになったら元のテンプレにかわるんだか
0013nobodyさん2008/03/17(月) 05:52:26ID:l3H5wOjF
外部から受け取った値$_POST['hoge']を、
<a href〜>でリンクさせた文字列に変換して返す関数があるのですが、
XSS対策にエスケープするのは、関数内でやるか、echoしたときにやるか、
どちら側でやったほうがいいのでしょうか?

function hoge($str) {
  return "<a href=\"$str\">$str</a>\n";
}

echo hoge($_POST['hoge']);

上記がXSSなので、

function hoge($str) {
  $escape = htmlspecialchars($str);
  return "<a href=\"$escape\">$escape</a>\n";
}

と関数内でエスケープ済みのを返すか、

echo htmlspecialchars(hoge($_POST['hoge']);

とechoの時点でエスケープするか。

どっちがいいのでしょう?よろしくお願いします。
0014132008/03/17(月) 05:55:25ID:???
よくよく考えてみたら、echoのときにだすと、<>もエスケープされてしまいますね。
関数内で処理してそれを普通にechoするしかなさそうですね。
自己解決しました。どうもスレ汚しすみません・・・
0015nobodyさん2008/03/17(月) 06:03:38ID:???
>>11

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding =UTF-8
mbstring.http_input = pass
mbstring.http_output =pass
mbstring.encoding_translation = Off
mbstring.substitute_character = long
mbstring.func_overload = 0
mbstring.strict_encoding = On
0016nobodyさん2008/03/17(月) 07:26:35ID:???
>>15
ありがとうございました
mbstring.strict_encodingとは何ですか?
ググってもそれが何かがはっきり書いているページが見つかりません
0017nobodyさん2008/03/17(月) 07:46:48ID:Qd55gHoh
PHPを勉強しようと思っているのですが
本を買うお金もないのでネットで勉強しようかと思います。

俺はここを参考にしてた!とかお勧めのPHP講座サイトはあるでしょうか。
当方プログラミングの経験は無く、0からはじめることになりまず
0018nobodyさん2008/03/17(月) 07:47:01ID:???
php.ini-recommendedに、以下の説明があります
; enable strict encoding detection.
;mbstring.strict_encoding = Off

一方、phpinfoは以下のようになっています
mbstring.script_encoding no value no value
mbstring.strict_detection Off Off

なんか、php.ini-recommendedの記述って
script_encodingとstrict_detectionがごっちゃになってないですか?
つまり、mbstring.strict_encodingという属性は、実際にはないのでは
ないでしょうか?
0019nobodyさん2008/03/17(月) 08:10:14ID:???
やはりmbstring.strict_encodingは
php.ini-recommendedの中だけに記述されてある
幻の属性のようですね
ジャップにしか関係ないことなので手抜きされているのでしょうか。

mbstring.internal_encodingとmbstring.script_encodingって
どういう違いがあるのでしょうか?
0020nobodyさん2008/03/17(月) 08:36:06ID:???
>>17
>>1もよめないのか
このスレで推薦するサイトはただ1つ公式マニュアルのみ
0021nobodyさん2008/03/17(月) 13:27:38ID:???
>>17
その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw

http://www.phppro.jp/school/phpschool/

初心者には普通にオススメ
あと何か作ってみたいものを見つけるのが良いんじゃないかな?
0022nobodyさん2008/03/17(月) 13:46:19ID:Qd55gHoh
>>20
すいません。
テンプレのものは少し敷居が高かったみたいでした。

>>21
ありがとうございます!
参考にします!
0023nobodyさん2008/03/17(月) 15:05:48ID:???
なんという自演宣伝
0024222008/03/17(月) 16:28:07ID:Qd55gHoh
すいません。さっそく躓いてしまいました。
http://www.phppro.jp/school/phpschool/vol1/4

http://localhost/hello.phpにブラウザで見てみると
Object not found! と表示されてしまいます。

htdocsに入れたので間違いないと思います。
ちなみにXAMPPコントロールパネルは
Apacheがチェックなしで起動になっている状態
MySqlがチェックありで起動になっている状態です。

どういった原因が考えられるでしょうか
0025nobodyさん2008/03/17(月) 16:34:32ID:???
>>24
まさか、拡張子非表示じゃないよね?
そのファイルを右クリックしてプロパティでファイル名を確認してみろ
0026222008/03/17(月) 16:43:35ID:Qd55gHoh
>>25
ありがとうございました。
ご指摘の通りでした。

こんな単純なミスをして申し訳ないです。
0027nobodyさん2008/03/17(月) 20:09:06ID:???
>>22
くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

こっちのスレのがオススメ
同じぐらいの人がちらほら居る
0028nobodyさん2008/03/17(月) 23:57:52ID:d6AL+8ck
$last_record = array();
foreach($data as $record) {
$last_record = array_diff($record,array());
print_r($record, true);
print_r($last_record, true);
}

上記、1つめのprint_rには配列が表示されますが、
2つめの出力は空の配列になってしまいます。

通常の代入で上手くいかなかったため
array_diff をかましてみましたがそれでも現象は変わりません。

配列と参照渡しに関する挙動を疑って調べてみましたが、
関係ありそうな文献は見つかりませんでした。
原因が分かるようでしたら助言お願いいたします。
0029nobodyさん2008/03/18(火) 00:22:25ID:???
PHPでデータベースに接続するコードを書いたのですが
これはどこにアップすればいいのでしょうか?
public_html 外のディレクトリにアップしたらいいのでしょうか?
セキュリティが心配です><
0030nobodyさん2008/03/18(火) 00:27:46ID:???
ドキュメントルート配下にhtmlで書けばok
0031292008/03/18(火) 00:48:08ID:XUFQaeko
.htaccess で拡張子をPHPじゃなくHTMLにすれば大丈夫ってことですね?
0032nobodyさん2008/03/18(火) 01:09:45ID:???
ゴメン嘘
0033nobodyさん2008/03/18(火) 01:10:52ID:???
>>28
print_rは配列ポインタが終端まで行くのでresetしましょう
つーかdebugで表示させるならprint_rじゃなくvar_dump使え

あと通常の代入で上手くいかなかったって
どう上手くいかないの?

本来やりたい事は$last_recordに何か追加でを代入したいって事だよね?
0034nobodyさん2008/03/18(火) 01:13:47ID:???
>>29
/public_html/
        index.php

/lib/
         db.inc.php

こんな感じで
index.phpからdb.inc.php呼ぶとかで良いんでない?
本当ならlibと同階層アプリケーションディレクトリ作って
そこにあるindex.phpのシンボルをpublic_htmlに貼るのが良いけど
0035nobodyさん2008/03/18(火) 01:18:56ID:???
996 :nobodyさん :sage :2008/03/18(火) 00:13:59 ID:???
前々からphpとperlとcでどれだけのパフォーマンスが違うのか、
よく分からなかったので、メジャーな処理20パターンで試してみた。
が、絶句した。なんで、ファイル処理がこんな実装になっているのかと・・・

前スレのこの乞食は反省しろ
0036nobodyさん2008/03/18(火) 01:43:20ID:???
cとphpを比べてる時点で・・・
phpはcで作られてるんだからcより遅くて当たり前
0037nobodyさん2008/03/18(火) 02:07:53ID:???
RubyはRubyで作られています
0038nobodyさん2008/03/18(火) 02:08:01ID:Hp4TM78s
PHP+SQLiteの構成なのですが

「データを削除→登録→削除→登録」してるとSQLiteのrowidがぐちゃぐちゃになるので整理
したいのですがいい方法はありませんでしょうか?

もしくは上から〜行から〜行までというように指定する方法はありませんでしょうか?

なにとぞよろしくお願いします
0039nobodyさん2008/03/18(火) 02:10:29ID:???
削除しない
0040nobodyさん2008/03/18(火) 02:18:07ID:???
>>33
レスありがとうございます。

>print_rは配列ポインタが終端まで行くのでresetしましょう
>つーかdebugで表示させるならprint_rじゃなくvar_dump使え

了解です。実際はlogファイルに吐いてます。

>あと通常の代入で上手くいかなかったって
>どう上手くいかないの?

現状と同様に [ array() ] だけの出力になってしまいます。

>本来やりたい事は$last_recordに何か追加でを代入したいって事だよね?

やりたいことは、配列 $record の値を $last_record に保持しておき、
ループの次周でその値の中のいくつかを使用することです。
■ このスレッドは過去ログ倉庫に格納されています