【PHP】下らねぇ質問はID出して書き込みやがれ 76
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/13(木) 04:15:32ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2008/11/13(木) 04:16:37ID:???【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
http://pc11.2ch.net/test/read.cgi/php/1218855685/
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
【PHP】下らねぇ質問はここに書き込みやがれ 66
http://pc11.2ch.net/test/read.cgi/php/1205655807/
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
0003nobodyさん
2008/11/13(木) 04:17:28ID:???■本家マニュアル 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/
0004nobodyさん
2008/11/13(木) 04:18:00ID:???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プログラムとして実行された結果になる。
0005nobodyさん
2008/11/13(木) 04:18:32ID:???→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
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.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0006nobodyさん
2008/11/13(木) 04:22:52ID:???$str = '<?php return ';
$str .= arrayOut_($array);
$str .= '?>';
if($fileName) {
$fp = fopen($fileName, 'w');
fwrite($fp, $str);
fclose($fp);
}
return $str;
}
function arrayOut_(&$array, $tab=0) {
$tabs = str_repeat("\t", $tab);
$tabs_ = $tabs ."\t";
$str = 'array(
';
foreach($array as $key => $val) {
$key = is_int($key) ? $key : "'". $key ."'";
$str .= $tabs_ . $key .' => ';
if(is_array($val)) {
$str .= arrayOut_($val, $tab + 1);
}
else {
$val = is_int($val) ? $val : "'". $val ."'";
$str .= $val;
}
$str .= ',
';
}
return $str . $tabs .')';
}
00076
2008/11/13(木) 04:24:01ID:???$array = array(
2, 4, 8, 8 => 4, 10 => 'afe',
'test' => 'poen',
'kami' => 'ahonishi',
array(
5 => 5,
'test' => 'aafafa',
'array' => array(
4,5,6,7,
),
),
array(
array(
array(
array(
'gogogogo' => 'nyaaaa',
),
),
),
),
);
echo arrayOut($array, 'array.txt');
0008nobodyさん
2008/11/13(木) 08:06:46ID:???0010nobodyさん
2008/11/13(木) 11:43:32ID:???よく頑張ったよ
0011nobodyさん
2008/11/13(木) 11:55:37ID:???人間はそうやって成長していくんだよ
0012nobodyさん
2008/11/13(木) 12:12:24ID:???0013nobodyさん
2008/11/13(木) 13:49:08ID:???PHPの質問ではありませんが、どなたか教えてください。
画面遷移の管理(というかセッションの管理)で、
ttp://www.j-tokkyo.com/2001/G06F/JP2001-160033.shtml
のような特許が開示されているのですが、みなさん気にされていますか?
自分の場合、他サイト間連携の画面遷移なんかで以前から使いまくってたりするのですが、
コンプラ強化の流れで制限されそうになってますです。。
はて困った。。
0014nobodyさん
2008/11/13(木) 14:07:26ID:bw3b61Qhアパッチのモジュールモードで動かしているときは、
関係ないしろものなの?
0015nobodyさん
2008/11/13(木) 14:21:37ID:???0016nobodyさん
2008/11/13(木) 16:01:38ID:bw3b61Qh「suEXECが入っていない場合」、というのを
見て参考にすればいいの?
0017nobodyさん
2008/11/13(木) 16:06:10ID:???apacheが動作しているユーザーが読めればいいだけ。
0018nobodyさん
2008/11/13(木) 16:07:54ID:???読み書きする外部ファイルの扱いはcgiと同じ。
0019nobodyさん
2008/11/13(木) 16:14:35ID:???>レンタルサーバではグループの権限はゼロに設定すべきです。
>レンタルサーバではCGIは705、データファイルは606にすべきです。
>レンタルサーバでtelnetを開放している場合、他の住人のディレク
>トリーにも自由に入れます。CGIのパーミッションが755なら、telnet
>経由で他のユーザーはあなたのCGIのソースファイルを見ることが
>できます。CGI ファイルの中にパスワードが書いてあれば、パスワ
>ードも漏れます。データファイルのパーミッションが666ならtelnet経
>由でデータファイルを見るだけでなく、書き換え・削除できます。
↑ここのサイトに、こんなこと書いてあった。
こんな重要なことなのに、はっきり書いてある
サイトが少なくって。怖いなぁ。
0020nobodyさん
2008/11/13(木) 16:15:35ID:???CGIモードでなくて、アパッチの
モジュールモードで動くときに、
パーミッションの設定をどうしたらいいのか、
ちゃんと解説してあるサイトが少なくて
見つけられないんだよね。
0021nobodyさん
2008/11/13(木) 16:16:47ID:???0022nobodyさん
2008/11/13(木) 16:20:27ID:bw3b61Qhって書いてあるから、「suEXECが入っている場合」、の
説明をマネすればいい感じかな?
0023nobodyさん
2008/11/13(木) 16:20:59ID:bw3b61Qhそのサーバーでtelnetが有効であれば
入れる、と書いてあります。
0024nobodyさん
2008/11/13(木) 16:24:07ID:???でも、SuExecでグループ読み込みありだと、その他人のCGIから中見覗けます。
SuExecは、グループ書き込みできるファイルは実行できないようにしてるけどね。
基本的にどんな場合でもグループは0にすべき。
(専用鯖で多人数で作業してるとこは除く)
0025nobodyさん
2008/11/13(木) 16:30:58ID:???0026nobodyさん
2008/11/13(木) 16:44:48ID:K5TW61gCメール本文にhttp://.../nantoka.php?a=123&b=456
ってな感じで書いてんだけど
&が?になっちゃう
どないしてΣ('0'*)?
0027nobodyさん
2008/11/13(木) 16:45:42ID:TS7LMUyhポストで取得した文字列を、mecabというソフトにパイプで渡して
その結果を得たいのですがproc_open()ではどうもうまくいきません。
windowsでPHPなのでmecabのPHPモジュールも使えないのです。
$mecab='C:\Program…'
proc_open($mecab,…)というようにパスを入れるのでは
ソフトを起動させられないのでしょうか?
PHPマニュアルには
proc_open('PHP',…)として、プログラムの名前が書かれています。
でもproc_open('mecab',…)では無理でした。
とりあえず外部プログラムを動かし値を得る方法を教えてください。
0028nobodyさん
2008/11/13(木) 16:48:29ID:bw3b61Qhってサイトに書いてあるんですが、そうなの?
0030nobodyさん
2008/11/13(木) 17:12:56ID:mUWlC/Ng例えばこれを $txt を10個設定してから、
10個並べて出力させたとして、全部違う結果を表示させたいんですが
どう記述を加えればいいでしょうか
よろしくお願いします
<?php
$txt[0] = '0';
$txt[1] = '1';
$length = count($txt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$txt[$num]");
?>
0032nobodyさん
2008/11/13(木) 17:28:24ID:mUWlC/Ng<?php
srand((float) microtime() * 10000000);
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
これの事ですか?
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
から1つづつ抽出してくれるという事ですか?
0033nobodyさん
2008/11/13(木) 17:47:11ID:mUWlC/Ngttp://okwave.jp/qa4419102.html
array_rand で検索してみたところ、
上記の記事でうまいこと出来そうです。
ありがとうございました。
0034nobodyさん
2008/11/13(木) 17:51:59ID:???長年やってるプロでも
こんなバカなミスやるんだな。
0035nobodyさん
2008/11/13(木) 17:55:33ID:???0036nobodyさん
2008/11/13(木) 18:46:21ID:???本では結構かっこいいこといっていたし、
近藤さん好きだったんだけどな。
残念です。
0037nobodyさん
2008/11/13(木) 19:27:04ID:???パーミッションの設定について
教えないせい
0038nobodyさん
2008/11/13(木) 20:15:10ID:3XeZmcyKどうも文字コードの自動判別がうまく働かないようで、
UTF-8で作成したページがシフトJISと解釈されているようです。
頻出の問題らしいので関連サイト見て対処したのですが、未だに直りません。
下記の対処法以外に何かやるべきことがあるでしょうか?
■PHPでやった対策
・ソースコードのファイルはUTF-8で保存
・PHPコードの先頭付近で「header('Content-Type: text/html; charset=utf-8');」を記述
・PHP.iniのdefault_charsetはコメントアウトされた状態
■HTMLでやった対策
・ファイルの<head>タグ内に「<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />」と指定
・<title>タグは、上記のcharsetよりも後に記述
・ファイルはUTF-8で保存
さらに面倒なことに、自宅のPCでは問題なく表示されるのです。
なぜか自分以外のPCで見ると、IE7のみ真っ白になるらしいです。
(数人から連絡を受けたので、どうも見えるほうが少数派のようです)
なにかいい対策方法は無いでしょうか?
0039nobodyさん
2008/11/13(木) 20:31:50ID:???ソースは取得できてるの?その文字コードは?
PHPの内部エンコーディングは設定してないの?
エラーコードは?(さらに言えばHTTPレスポンスは?)
PC環境で明らかに違う点は?
0040たまちゃん ◆Emjcf.lfLU
2008/11/13(木) 20:34:49ID:rj1jn7suhttp://3gp.fm/Mob.aspx
これは、ASPを使ってる見たいですが、PHPで作ろうと思いました。
私なりに構造を考えてみたのですが、どのような仕組みだと思いますか?
Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。
この浅はかな考えではうまく作れませんでした。どのようにしたらよいのでしょうか?
0041nobodyさん
2008/11/13(木) 20:35:25ID:???0042nobodyさん
2008/11/13(木) 20:36:24ID:???>Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。
ぶw これはねーわw
0043たまちゃん ◆Emjcf.lfLU
2008/11/13(木) 20:38:33ID:rj1jn7su詳しくお願いします。
文字列関数…
ただ、拡張子だけでなく、ヘッダーもかえたいです。
.mp3が.3gpになっただけでは、携帯からは音楽が聞けません…
0044たまちゃん ◆Emjcf.lfLU
2008/11/13(木) 20:39:25ID:rj1jn7suこれ以外、どうやってると思いますか?
0045nobodyさん
2008/11/13(木) 20:43:16ID:???0046たまちゃん
2008/11/13(木) 20:47:04ID:rj1jn7su外部アプリ…
ってことは、aspxや、PHPだけではこのツールを作成することは不可能なのですか?
そのアプリは、どんなアプリでしょうか?
Windowsアプリケーションexeは、携帯には対応してません。
0047nobodyさん
2008/11/13(木) 20:49:23ID:???あとWindowsアプリケーションexeが携帯に対応してないってのが良く分からないけど
004838
2008/11/13(木) 21:16:44ID:???ソースは取得できており、IEの画面を右クリック→ソースを表示 で表示できます。
UTF-8のページを開く際に、IEの文字コード設定でシフトJISを手動選択すると真っ白になるので、
おそらくIEが勝手にシフトJISだと勘違いしているのだと思います。
PC環境についてですが、複数の人から「真っ白だ」と言われているため、
明らかに違う点が分からない状況です。(OSもXPとVistaが混在です)
あと、PHPのコードにはmb_internal_encoding("utf8");と記述しています。
レスポンスヘッダは以下です。
HTTP/1.1 200 OK
Date: Thu, 13 Nov 2008 12:14:09 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
何か分かるようでしたらお願いします。
0049たま
2008/11/13(木) 21:17:51ID:rj1jn7suどのようなプログラムを書けばよいか、大まかにでも教えてください。
0050nobodyさん
2008/11/13(木) 21:21:00ID:KF88aCBc0051nobodyさん
2008/11/13(木) 21:57:04ID:???>>47じゃないが>>47がいいたいのは
サーバ側で別のアプリケーションを起動させて変換して返すってもの
wavをmp3に変換するツールとかあるでしょ?
そういうのでコマンドラインから実行できるようなものを
リクエストがあったらコマンドラインから該当ファイルを変換して返すような仕組み
ようするに処理自体はPHPでやってるわけじゃないってこと
0052nobodyさん
2008/11/13(木) 22:02:04ID:???そうそう。君はそうやって人の言うことを聞いとくべきだよ。
六年生とは思えないほど稚拙な文章だったけど、面白かったよ。
005327
2008/11/13(木) 22:14:36ID:TS7LMUyhCGIならmecabを動かせるし。
でもCGIやった事無いから分からないけど
一つのファイル内でCGIとPHPを混在させる事できる?
PHPで文字列受け取ってCGIで処理してPHPで表示したい。
または例えばPHPファイル内で処理するスクリプト中に
CGIファイルをインクルードして結果の配列をPHPに再び渡すってできない?
0055nobodyさん
2008/11/13(木) 23:42:29ID:rLX4EmuOググって調べると、携帯サイトではGETでURLにsession_idを
付与するようですが、別サイトにリファラが残る場合があり、
セッションハイジャックの危険性があります。
他のプログラム(OpenPNEやMT)などをみると、
セッションをDBに保存して、毎回照合しているみたいです。
そこで質問ですが、どちらの方法の方がより安全で有効なのでしょうか?
前者であれば手間もかからず、負荷も少ないと思いますし、
後者であればセッション発行時のIPアドレスやUSER AGENTを保存すれば
セッションハイジャックやなりすましは防止出来るのではないかと思っています。
005627
2008/11/13(木) 23:43:40ID:TS7LMUyh確かにそうでした。ありがとうございます。
pewershellではC:\Pro*s\mecab\bin\mecab.exeとしたらちゃんとmecab.exeが機能しました。
(それまではProgram filesでもいけると思ってました。)
しかしやはりproc_open()の方では無理です。
ソースはこんな感じ。
$mecab = 'C:\Pro*s\mecab\bin\mecab.exe';
$descriptorspec = array(0=>array("pipe","r"),1=>array("pipe","w"));
$process = proc_open($mecab,$descriptorspec,$pipes);
でこの後に
print is_resource($process);
としてみたのですが1(FALSE)しか返ってきません。
やっぱりうまくいかないようです。
0058nobodyさん
2008/11/14(金) 06:44:08ID:LBY0wniiアパッチの場合と、nobodyの場合と、yamadaの場合と、
3種類あるようなんだが、これってどこで決まってるの?
0060nobodyさん
2008/11/14(金) 09:07:18ID:???print is_resource($process);
こんな事するより
var_dump($process);か
echo var_export($process,true);
0061nobodyさん
2008/11/14(金) 12:43:13ID:???PHPのスクリプトでtouch()とかで作られたファイルはアパッチになるよ。
nobodyやyamadaは知らん。俺yamadaになんてなった事ないから。
0062nobodyさん
2008/11/14(金) 15:00:32ID:???Apacheの実効ユーザで作成されてるってこと、PHPがApacheモジュールで動いてるからな
suExec環境ならスクリプトの所有者で生成される、それがyamadaなんじゃね?
0063nobodyさん
2008/11/15(土) 06:36:19ID:oW2TcjIKここの、
input.htmlと、output.phpの2つのファイルをドコのフォルダに置けば入力した名前が表示されるのでしょうか?
input.htmlファイルをクリックしてinput.htmlを表示させ、「太郎」と入力まではうまく行くのですが、
クリックして、output.phpを表示させると、ソースコードが表示されます。 いったいどうしたらいいのでしょうか?
0064nobodyさん
2008/11/15(土) 06:39:47ID:oW2TcjIK【OS名】winXP
【PHPのバージョン】php5.26
です。
0065nobodyさん
2008/11/15(土) 06:54:07ID:oW2TcjIK<form action="output.php" method="post">
この部分を、
<form action="http://localhost/php/output.php" method="post">
にしたらうまくいきました。
これは正しいやり方だったのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています