【PHP】下らねぇ質問はID出して書き込みやがれ 91
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/12/08(火) 13:53:09ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0711nobodyさん
2009/12/29(火) 23:10:36ID:???0712nobodyさん
2009/12/29(火) 23:24:00ID:pB5Ltbyzini_set('mbstring.internal_encoding', 'UTF-8');
としたのですが、フォーム処理時にEUCでデータが送信されているようで、
文字化けを起こしてしまいました。
ini_setで指定していてもphp.iniに設定されている文字コードの方が優先されるのでしょうか?
0713nobodyさん
2009/12/29(火) 23:38:05ID:???0714nobodyさん
2009/12/29(火) 23:39:37ID:???0715nobodyさん
2009/12/29(火) 23:39:52ID:???0716nobodyさん
2009/12/29(火) 23:45:40ID:+XZPbandエラーメッセージを出せばよいのでは?
>>712
http://www.php.net/manual/ja/mbstring.configuration.php
0717nobodyさん
2009/12/29(火) 23:52:55ID:???0718nobodyさん
2009/12/30(水) 00:09:26ID:skGmLU+Aえーと、質問の仕方が悪かったのかな。
サーバ側でDBにクエリーなげたまま、タイムアウトしないので、
ブラウザがレスポンス待ち状況といった感じです。
一応、my.iniファイルで
innodb_rollback_on_timeout = on
と設定してるのですが、機能してない感じです@@
0719718
2009/12/30(水) 00:10:11ID:skGmLU+Amy.iniで
innodb_lock_wait_timeout = 10
も設定してます。
0720nobodyさん
2009/12/30(水) 00:16:48ID:a1sThYv50721718
2009/12/30(水) 01:17:55ID:skGmLU+AMySQLって、ロックのタイムアウトが設定できないみたいですね。
バカみたいに永遠に待ち続けるみたいです。
だったらinnodb_lock_wait_timeout なんていう紛らわしいオプションは何なんだろ。
フリーだけあって、クソDBだこりゃw
0722nobodyさん
2009/12/30(水) 06:44:24ID:???PHPのタイムアウトが返ってくるでしょ
0723nobodyさん
2009/12/30(水) 08:48:55ID:5adIyASgWeb上のhtmlファイルをfgets()関数を用いて順次行を読み取りたいと思うのですが、
$FileHtml = "○×.html";
for(){
$LineHtml = fgets($FileHtml)
}
とすれば、$FileHtmlが2行目以降のポインタを次々取得し、
2行目以降のソースも取得できるのでしょうか?
0724nobodyさん
2009/12/30(水) 09:56:59ID:???>>723
なにからつっこめば
http://www.php.net/manual/ja/function.fgets.php
0725723
2009/12/30(水) 10:09:12ID:5adIyASg$FileHtml = fopen($AddressHtml);
$LineHtml1 = fgets($FileHtml)
$LineHtml2 = fgets($FileHtml)
ごめんなさい。
htmlも fopen()しないとだめですよね。
for文等は省略していましたが、解りにくいので書き方を変えました。
ファイルの2行目のポインタを得たいのですが、その方法が良くわかりません。
上記構文ではうまくいかないように思うのですが・・・
0726723
2009/12/30(水) 10:13:46ID:5adIyASgfopen(,r)が抜けていましたが。
それを除けば725で正常に取得できると思って良い・・・のかな。
0728nobodyさん
2009/12/30(水) 10:19:58ID:???0729nobodyさん
2009/12/30(水) 11:31:31ID:???0730723
2009/12/30(水) 12:44:43ID:5adIyASg多いものだと2万行くらいのHtmlファイルを読み込む可能性があるため、
fileではメモリが怖いなぁと思って、fgetsを使おうと思ったのですが・・・
しかし、fileだと問題無く動くのですが、思い通り動いていません。
724さんのを参考にというかアドレスをhtmlに書き変えただけでやってみましたが、
String値しか取得できていませんでした。
あと、どこを直せばいいのでしょうか?
<?php
$handle = @fopen("http://○×.html", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>
0731nobodyさん
2009/12/30(水) 13:53:29ID:???全く同じページの出力が出来た。
ちゃんとそのソースは動くと思うけど
0732nobodyさん
2009/12/30(水) 14:12:15ID:nBvXEJIC環境はwindows xp、自宅サーバー(apache Version 2.053)、PHP Version 4.3.11
レッツPHPさんのチャットスクリプト http://php.s3.to/chat/ch.php.txt(ソース)
を自宅サーバーで公開しようとしたところ、下記のようなエラーが出てしまいました。
自宅サーバーを構築する前に、レンタルサーバーでテストした際には問題なく実行してくれました。
Notice: Use of undefined constant n - assumed 'n' in C:\www\saba\cf\chatroom.php on line 13
Notice: Use of undefined constant c - assumed 'c' in C:\www\saba\cf\chatroom.php on line 14
Notice: Use of undefined constant l - assumed 'l' in C:\www\saba\cf\chatroom.php on line 22
.
.
.
なぜ、テストのときはちゃんとできたのに、できなくなったのでしょうか。。
どのような事が考えられますでしょうか・・
よろしくお願い致しますm(_ _)m
0733nobodyさん
2009/12/30(水) 15:14:29ID:???ログイン関係で実は致命的なセキュリティホールがあるなんてざらだし。
Use of undefined constantはクオート付けろってエラー
$_GET[abc] と $_GET['abc'] はほぼ同じ動きをするけど、セキュリティ的に非常に甘い。時に致命的なロジックエラーになる可能性が高い。
自鯖ならphp.iniの中から
error_reporting = どうたらこうたら
って項目を見つけて
error_reporting = E_ALL & ~E_NOTICE
に書換える
0734nobodyさん
2009/12/30(水) 15:15:44ID:???0735nobodyさん
2009/12/30(水) 15:57:39ID:???なぜ?
0736nobodyさん
2009/12/30(水) 16:07:36ID:???$array['abc'] = '123';
echo $array[abc]; // 123
define('abc', 'def');
echo $array[abc]; // NULLなので表示されない
まぁ連想配列でクオートなしってのは推奨されてない書き方なんで止めるべき
0737nobodyさん
2009/12/30(水) 17:06:42ID:???ありがとうございます。
error_reporting = E_ALL & ~E_NOTICEに書き換えようとした所、
もう既にこのような設定になっていました。
>>734さん
おっしゃる通り、クオート付きコードに書き換えようと調べてみましたが、
無知な初心者がすぐにできるような事ではなく、無理でした。
関係ないかもしれませんがphp.iniのmagic_quotes_gpc = On をOffにしてみましたがやっぱりダメでした。
年内にはできるようにしたかったのですが無理そうです。。
ありがとうございました。。
0738nobodyさん
2009/12/30(水) 17:20:03ID:???0740nobodyさん
2009/12/30(水) 18:55:33ID:???0741nobodyさん
2009/12/30(水) 19:57:03ID:???$_GET[n]を$_GET['n']に書き換えましたが以下のようなエラーが出てしまいました。
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\www\saba\cf\chatroom.php on line 52
なので、$_GET[t]や$_GET[ns]などにも''を付けて、みましたが同じエラーが出てしまいます。
なので、元に戻しエラーをよく見てみると、、
例:Notice: Use of undefined constant n - assumed 'n' in C:\www\saba\cf\chatroom.php on line 13
これについて、なんとなく13行目のnに'n'を付けて下さい。と言う意味と捕らえて他の行も同じように書き換えました。
そしたらエラーが大分なくなりました。>>738さんありがとうございました!
しかし、、、
Notice: Undefined index: l in C:\www\saba\cf\chatroom.php on line 22
というエラーが残ってしまいました。
このタイプのエラーについて調べてみると、
htmlspecialchars(@)を使うと消せるとありましたがうまくいきません・・、
※エラー部分の22行目のソースです
$l = ($_GET['l'] == "") ? 10 : $_GET['l'];
このソースをhtmlspecialchars(@)を使って自分なりに
htmlspecialchars(@$l = ($_GET['l'] == "") ? 10 : $_GET['l'];)
としてみましたがエラーとなってしまいました。。
どのようにかけばエラーが消えますでしょうか・・・
すみません。よろしくお願い致しますm(_ _)m
0742nobodyさん
2009/12/30(水) 21:20:42ID:???なんか色々すごいな。
エラーを出なくするには
$l = (isset($_GET['l']) && $_GET['l'] == "") ? 10 : $_GET['l'];
$l = (empty($_GET['l'])) ? 10 : $_GET['l'];
$l = (!empty($_GET['l'])) ? $_GET['l'] : 10;
とか。
~E_NOTICEしてれば出ないはずなんだけどね。
0743nobodyさん
2009/12/30(水) 22:21:02ID:???プログラムの一番最初に
error_reporting(E_ALL ^ E_NOTICE);
を追加するって技もあるんだけど、こういうのだと難しそうだしなぁ。
0744nobodyさん
2009/12/30(水) 22:32:33ID:???0745nobodyさん
2009/12/30(水) 22:41:21ID:+olHzS1B後xamppもphp.iniは一個だけでしょう?
0746nobodyさん
2009/12/30(水) 22:44:54ID:???さらにphp4の下にphp.iniとphp4.iniがあるっていう構造だったり。
でも変更が必要なのはapache/bin/php.iniだという、
初心者は確実に勘違いするような感じだったりする。
0747nobodyさん
2009/12/30(水) 23:27:25ID:AOSiAt9qこれは一体どういうことです?
$a = 3147483647;
echo (int)$a; // -1147483649
0748nobodyさん
2009/12/30(水) 23:40:28ID:???0750nobodyさん
2009/12/31(木) 00:21:31ID:???0751680
2009/12/31(木) 05:48:39ID:a+pevmsQお礼遅くなりましたが有難うございます
うまくできました
感謝です
0752nobodyさん
2009/12/31(木) 10:41:15ID:???正規表現君
OCN君
ちんぴら君
0753nobodyさん
2009/12/31(木) 11:53:17ID:F0ShAh3cお薦めの商品(アマゾンみたいなぁ)を表示させたいのですが
参考になるサイトとかライブラリがあれば教えてください
0755nobodyさん
2009/12/31(木) 12:12:07ID:F0ShAh3c0756nobodyさん
2009/12/31(木) 12:17:38ID:F0ShAh3cレコメンドエンジンっていうんだね
ttp://dameda.org/2009/09/02/post_292.html
0757nobodyさん
2009/12/31(木) 12:28:04ID:???0758nobodyさん
2009/12/31(木) 12:35:37ID:???「PHP CSV」と検索してもファイルから前提のfgetcsvでの利用方法ばかりで
文字列からの読み込みの情報が見あたらないです。
CSVデータはファイルから読み込むのではなくて変数内の文字列から処理させる良い方法は無いでしょうか?
自分で考えた無理やる方法としては
文字列の内容を作業ファイルを作ってファイル書き込みしてそれをfopenでオープンしてfgetcsvで読み込む方法。
ただ関数でも作って何とかなるなら参考になるサイトとか無いですか?もしくは関数を書いてもらえれば助かります。
0759nobodyさん
2009/12/31(木) 12:49:47ID:???0760nobodyさん
2009/12/31(木) 12:52:43ID:???0761nobodyさん
2009/12/31(木) 12:56:37ID:oi0jVub9できません。
0763758
2009/12/31(木) 13:15:50ID:AqAvYeuSごめん。ID出し忘れた。
でファイルに書き込むのではなくてメモリ上に書き込んでの方法を今試しているのですが
$data_array = array("111,222,333,444","あいうえお,かきくけこ,さしすせそ");
$data = join("\n",$data_array);
$fp = fopen('php://memory', 'r+');
fwrite($fp, $data);
rewind($fp);
while ($value = fgetcsv ($fp, 1000, ",")) {
print_r($value);
}
fclose($fp);
こんな感じのサンプルができた。
これよりスマートな実現方法ってあるかな?
0764nobodyさん
2009/12/31(木) 13:22:53ID:???ど偉そうに質問していいスレ池バカ
0765nobodyさん
2009/12/31(木) 13:35:23ID:???◆質問する時の注意
・ 質問者として、態度をわきまえること。
以下誘導
http://pc11.2ch.net/test/read.cgi/php/1158647441/l50
0766nobodyさん
2009/12/31(木) 16:19:53ID:???>>758
http://www.google.com/codesearch/p?hl=ja#c6JkLta30kQ/trunk/qtxtdb.class.php&q=str_getcsv
507-556行
0767758
2009/12/31(木) 17:21:43ID:AqAvYeuS何処に問題ありますか?
>>766
ありがとうございます。
こんなそのままのソースがあるとは思いませんでした。
ただ、一つ気になるのが「License: Unknown」くらいでしょう。
今書いているソース商用にも使うかも知れないので下手(GPL)なライセンスのソースを
組み込むわけにも行かないのでこのソースを読んで自分でアルゴリズム構築し直して
ソースを書き起こしなおした方がいいかも知れませんね。
とりあえず現状ではPHP5.3.0以上ではstr_getcsvで
5.1.0から5.2.xでは自分で書いた>>763の方式で(php://memoryが5.1.0からのサポートなので)
でそれ以前では>>766さんが出してくれたソースをベースにって事になりそうです。
0768nobodyさん
2009/12/31(木) 17:36:24ID:???回答者だからといって調子に乗るな的なことをテンプレいれてもいいのでは。
0770758
2009/12/31(木) 18:35:18ID:AqAvYeuS>>766で書いてくれたURL先のソース使うのと
>>763での方式で「'php://memory」ではなくて実際にファイルに一時的に書き出す方式はどっちがはやいのかな?
検証してみた方がいいかな。
ステップ数だけはファイルに一時的に書き出してfgetcsvで拾ってくる方式なのは確かだけど
0771nobodyさん
2009/12/31(木) 18:47:39ID:Y4/O1MTAだいたいなんでphpとかやっているんだよ。
大晦日に
0772nobodyさん
2009/12/31(木) 21:40:41ID:???態度が悪いのは回答者ではなくて
回答せずにヤジだけ飛ばすバカ。
どうせこういうヤジだけの奴はPHPすらろくにできないのでしょうね。
どうしてそんなPHPできない奴が、このスレにいるのかは疑問だけどね。
0774nobodyさん
2009/12/31(木) 22:31:33ID:???0777nobodyさん
2010/01/01(金) 00:22:34ID:adVuwjbe去年よりもphpができるようになりたいな。
phpの仕事がへりませんように
0778nobodyさん
2010/01/01(金) 00:38:34ID:???サービス残業を
0779nobodyさん
2010/01/01(金) 01:41:30ID:???0780679
2010/01/01(金) 05:42:56ID:Yt86zcJv動画なら抽出出来るのですが、ゲームだと出来ません
あと、抽出した画像のサイズを例えば、300×300以内にサムネイルって出来ますでしょうか?
どうぞよろしくお願いします<m(__)m>
0781nobodyさん
2010/01/01(金) 08:48:49ID:???0782nobodyさん
2010/01/01(金) 10:41:31ID:???動画変換だから無理なんじゃないかなぁ
こっちで聞くといいよ(・ω・)
http://pc11.2ch.net/test/read.cgi/linux/1232095273
0783679
2010/01/01(金) 11:26:51ID:Yt86zcJvありがとう
そっちで聞いてみます
0784nobodyさん
2010/01/01(金) 16:53:29ID:A1Hlzrb8オープンソースある?
0785nobodyさん
2010/01/01(金) 17:18:16ID:???0786nobodyさん
2010/01/01(金) 18:27:57ID:A1Hlzrb8Smarty,MySQL,ZF,CakePHP,wordpressレベルのオープンソース作った日本人いる?
0787nobodyさん
2010/01/01(金) 18:28:42ID:???0788nobodyさん
2010/01/01(金) 18:29:03ID:???0790nobodyさん
2010/01/01(金) 18:51:34ID:???0791nobodyさん
2010/01/01(金) 18:56:53ID:???0792nobodyさん
2010/01/01(金) 19:00:47ID:???0793nobodyさん
2010/01/01(金) 19:11:05ID:???0794nobodyさん
2010/01/01(金) 19:37:23ID:z0QJlOXoPEARとかにありそうなんだけど、みつかりません。探し方が悪い?
function とか class とか $xxx とかコメント(/*〜*/)に自動的に<span style="red">とか付けてくれるライブラリです。
0795nobodyさん
2010/01/01(金) 19:40:00ID:???0796nobodyさん
2010/01/01(金) 19:43:55ID:A1Hlzrb8そいつら書くことは立派だが、なんかなぁ〜
あ、おれはもっとカスだけど
0797nobodyさん
2010/01/01(金) 19:44:10ID:???highlight_string()
もしくは、拡張子をphpsにして表示。
0798nobodyさん
2010/01/01(金) 19:45:36ID:A1Hlzrb80799nobodyさん
2010/01/01(金) 19:47:28ID:???- ファイル名.phps にしてアクセスすると
ソースが色づけされて表示される.
- 方法
httpd.conf に以下を記述
AddType application/x-httpd-php-source .phps
0801nobodyさん
2010/01/01(金) 20:08:16ID:z0QJlOXoあ、JavaScriptだとサーバーに負荷がかかんなくていいですね!
>>797 >>799
なるほど!!そんな方法があったんですね!!
>>798
ありがとうございます!
0802nobodyさん
2010/01/01(金) 21:00:26ID:hR+m4MNrtest.php?hoge=1&test=2にアクセスするとYESと表示されるんですけど
test.php?hoge=1 にアクセスした時に、OKと表示させたいので下記のようなコードを作り
希望通りにはなったのですが・・・・
testは2だけではなく 2,3,4,5,・・・・20まで続いてます。
これをif文でやるとどれだけ手間がかかることやら、、どなたか良い方法教えてください
if($_GET["hoge"] ==1 && $_GET["test"] == 2){
echo "yes";
}elseif($_GET["hoge"] == 1 && $_GET["test"] == ""){
echo "ok";
}
0803nobodyさん
2010/01/01(金) 21:24:41ID:???・XOOPS
海外だとDrupalが人気(Mozillaやホワイトハウスなど有名どころでも採用)
日本ではXOOPSが人気。やっぱり日本人が開発して日本のコミュニティーがしっかりしているから?
日本でDrupalがダメなのは日本Drupal公式さ糸川の管理者がアレだからという説もあるが
・EC-CUBE
ZenCartには機能面はかなわない感じがあるが日本人が開発しただけあって日本人向けの作りになっている。
・Ruby
スクリプト言語としてもう有名ですね。
フレームワークのRuby on Railsの登場で注目も集めましたね。
・PostgreSQL
開発者の一人に石井達夫さんって日本人がいましたよね?
・Namazu
・Hyper Estraier
有名どころの全文検索エンジン
ここら辺がすぐに思いつく物。
後
http://ja.wikipedia.org/wiki/Wiki
これ見ると日本人が開発したwikiって結構あるね。
0805nobodyさん
2010/01/01(金) 21:34:04ID:???俺だったら
switch($_GET["hoge"]){
case 1:
switch($_GET["test"]){
case 2:
echo "yes";
break;
default:
echo "on";
}
break;
}
って書くかな。
そっちの方がこの手の物だソースが読みやすくもなる。
0806nobodyさん
2010/01/01(金) 21:35:43ID:???0807nobodyさん
2010/01/01(金) 21:41:33ID:???ttp://www.geocities.jp/kosako3/oniguruma/index_ja.html
ttp://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/oniguruma/
0808nobodyさん
2010/01/01(金) 21:54:37ID:???>>802
GETが連続して可読性が悪いのが嫌なら判定部分を関数で外部化するとか、
コードが長くなるのが嫌なら配列なりファイルなりに条件と結果を書いておくとか。
例えばこんな感じ:
@
if (func(1, 2)) {
echo "yes";
} else if (func(1, "")) {
echo "ok";
}
function func($hoge, $test) {
return $_GET["hoge"] == $hoge && $_GET["test"] == $test;
}
A
$array = array( 1 => array( 2 => 'yes'), array( "" => 'ok'));
echo array[$_GET['hoge']][$_GET['test']];
B
data.csv
---------------------------------------------
1,2,yes
1,,ok
---------------------------------------------
foreach (file('data.csv') as $line) {
$line = explode(',', $line);
if ($_GET["hoge"] == $line[0] && $_GET["test"] == $line[1] ) {
echo $line[2];
}
0809nobodyさん
2010/01/01(金) 21:56:22ID:???最後抜けてた。試してないからこんな感じということで。
0810nobodyさん
2010/01/01(金) 22:11:37ID:???インデントしっかりやっておけばそうでもないよ。
switch使い慣れてないとbreak;付け忘れる人がいるけど
どっちにしても
>testは2だけではなく 2,3,4,5,・・・・20まで続いてます。
って場合どんどんと比較パターンが多くなってくるとifだけで表現させていくとswitchより読みにくくなる。
■ このスレッドは過去ログ倉庫に格納されています