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

【PHP】下らねぇ質問はID出して書き込みやがれ 127

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/03/19(火) 22:13:49.76ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 126
http://kohada.2ch.net/test/read.cgi/php/1359808868/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0482nobodyさん2013/04/11(木) 17:01:59.31ID:???
さすがに id 出してくれないとw
0483nobodyさん2013/04/11(木) 17:04:10.44ID:HixpqTLW
すみません、なんのことかわかっていませんでした
sageを削除するんですね
0484nobodyさん2013/04/11(木) 17:09:45.63ID:itiKrwCW
つい最近、PHPではうるう秒が使えず、libcなんかと互換性が無いみたいな話を見かけたような気がするがきのせいか?
0485nobodyさん2013/04/11(木) 17:10:02.05ID:0KD/BzYB
IDが出ないこの板が悪い
0486nobodyさん2013/04/11(木) 17:11:56.71ID:???
うるう秒って会議で決めるもんなんだから無理に決まってんだろがクズがよー
0487nobodyさん2013/04/11(木) 17:16:41.35ID:HixpqTLW
簡単にはできないということですか?
0488nobodyさん2013/04/11(木) 17:18:44.27ID:???
お前が毎日ニュースサイトで閏秒の決定がないか監視する必要がある
0489nobodyさん2013/04/11(木) 17:28:50.22ID:???
>>483
echo date("Y/m/d (D) H:i:s", 365541705);
echo strftime("%Y/%m/%d (%a) %H:%M:%S", 365541705);

ロケールとか影響しないフォーマットにしてみたけど
この数字だと 1981/08/01 (Sat) 19:21:45 になるから元が違う?
0490nobodyさん2013/04/11(木) 17:29:36.79ID:???
まあ 60 秒が存在できるかどうか、というのもあるしなあ
0491nobodyさん2013/04/11(木) 17:36:59.62ID:???
>>489
え!元が違うことはないかと
メール送信時に同時に書き込まれてます
0492nobodyさん2013/04/11(木) 17:37:33.71ID:HixpqTLW
すみません
またsage削除を忘れました
0493nobodyさん2013/04/11(木) 17:43:40.31ID:???
元が(エポックタイムとは)違う何かなのでは。
0494nobodyさん2013/04/11(木) 17:44:58.45ID:???
>>491
頭の1抜けてるっしょ、1365541705 だろう
0495nobodyさん2013/04/11(木) 17:45:18.61ID:???
じゃなくて、単に一番上の「1」が抜けてるんだな
1365541705
0496nobodyさん2013/04/11(木) 17:45:50.66ID:???
ああかぶりました。495=493
0497nobodyさん2013/04/11(木) 17:48:38.28ID:itiKrwCW
ちょっと手元で試してみた。

test.c
--
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = 915148821;
struct tm *tm = localtime(&t);
printf("%s\n", asctime(tm));
return 0;
}
--

test.php
--
<?php
echo date("Y/m/d (D) H:i:s", 915148821) . PHP_EOL;
--

うるう秒を考慮するzoneinfoを使うと…
$ TZ=/usr/share/zoneinfo/right/Japan ./test
Fri Jan 1 08:59:60 1999

$ TZ=/usr/share/zoneinfo/right/Japan php test.php
1999/01/01 (Fri) 09:00:21

うーむ…。
0498nobodyさん2013/04/11(木) 18:18:16.16ID:???
解釈の違いによって20秒くらいの誤差が出てもかまわないという考え方もある。
0499nobodyさん2013/04/11(木) 18:23:57.62ID:HixpqTLW
メールを見直しましたが頭に1はついてないみたいです

365541705は
date( substr(time(), -9) );

2013/04/10 (Wed) 06:08:25は
date( "Y/m/d (D) H:i:s", time() );

という関数で吐き出されています
0500nobodyさん2013/04/11(木) 18:42:20.92ID:???
>>499
なんでわざわざ substr で 後ろから9文字取り出してるの?
10桁あるんだから 1が落ちて当然だよね?
0501nobodyさん2013/04/11(木) 18:44:53.19ID:???
>>500
ワロタw
時刻が関係する場所だから-9がずーっと時差関係の数字に見えてたww
0502nobodyさん2013/04/11(木) 18:48:26.96ID:???
GMT+9だもんな日本時間
0503nobodyさん2013/04/11(木) 18:54:33.33ID:HixpqTLW
>>500
あれの意味はうしろから9桁なんですね
どうしてそうしたのか尋ねてみます
明日以降になると思います
0504nobodyさん2013/04/11(木) 20:01:05.11ID:???
>>500
10桁になる前に書かれたロジックとか。
0505nobodyさん2013/04/11(木) 21:13:22.64ID:???
それはすごい
0506nobodyさん2013/04/11(木) 22:45:58.95ID:yLGwf0zn
>>471
> ちなみに、IPアドレスから国を判断するというのであれば、自分で調べれば自前で実装できる。

IPアドレスの国への割り振りって動的に変動しているけどそれはそういうのに追従できる方法?
0507nobodyさん2013/04/11(木) 22:53:54.56ID:???
15桁の数字の真ん中の5桁を抜き出すの1行で書けます?
123456789123456の真ん中の67991
0508nobodyさん2013/04/11(木) 22:54:36.57ID:???
>>507
>>1
0509nobodyさん2013/04/11(木) 22:55:56.12ID:???
文字列変換とsubstr
0510nobodyさん2013/04/11(木) 22:58:49.26ID:???
文字列に変換?
0511nobodyさん2013/04/11(木) 22:59:58.02ID:???
そもそもストリップをどうするのか解らなくて 汗
0512nobodyさん2013/04/11(木) 23:13:28.27ID:???
var [ alias, dom ] = ate.split("@");
0513nobodyさん2013/04/11(木) 23:30:57.18ID:???
>>506
馬鹿は黙っててね
0514nobodyさん2013/04/12(金) 04:09:06.68ID:???
10万でわって10万で割ったときのあまり
0515nobodyさん2013/04/12(金) 18:15:51.75ID:???
>10万でわって10万で割った

最初は全部ひらがなで「わって」って書いてるのに、次は「割って」って書いてる。
この一貫性のなさは絶対アスペだろ。
そこを変えるなら全部変えるべき。
最初は「100,000でわって」にして、
次は「10万で割って」にするとか。
これだったら「最初と次を変える」という一貫性が窺えるから気持ち悪さはない。
中途半端に変えるってのは精神的に安定してない証拠。
こいつ絶対にアスペ。
普段のコミュニケーションにも支障をきたしてそう。
気持ち悪い。
0516nobodyさん2013/04/12(金) 18:34:27.03ID:???
一貫性の無さは、むしろアホなんじゃ……
アスペの統一性の高さはちょっと異常レベルだし
0517nobodyさん2013/04/12(金) 19:11:33.43ID:???
そういうくだらない部分の指摘しかできないのもアスペルガーか何かじゃないの?
0518nobodyさん2013/04/12(金) 19:34:25.22ID:???
>>515
技術的なツッコミができないからそういう感じになっちゃうのか
何でここにいるの?
0519nobodyさん2013/04/12(金) 20:19:06.70ID:???
>>509
もう少しヒントをお願いします
0520nobodyさん2013/04/12(金) 21:30:09.59ID:???
>>519
文字列変換は暗黙の型キャストを嫌う場合の処理。
substr はヒントも何もそれが答えだよ。
自分で調べてないのが丸わかりだ。
0521nobodyさん2013/04/12(金) 21:32:18.65ID:???
あとたぶん8を9に置換する処理が必要だな
0522nobodyさん2013/04/12(金) 21:38:55.90ID:???
>>519
>>508
0523nobodyさん2013/04/12(金) 21:44:33.51ID:???
>>520
質問者?
0524nobodyさん2013/04/13(土) 00:43:50.64ID:???
>>519
質問者でもないゴミが書き込むな
0525nobodyさん2013/04/14(日) 04:05:20.50ID:???
>>515
これマジで書いてるよな
こういうキモイの初めて見た
世の中キチガイってマジでいんだな
0526nobodyさん2013/04/14(日) 04:09:13.76ID:???
>>525って自分がキチガイでリアルでもキモがられてるのに気付いてなさそうw
0527nobodyさん2013/04/14(日) 13:16:41.05ID:GUqrSjpz
$a[0]から$a[200]の数値が入った配列の操作について聞きたいです。
配列の範囲を指定して、その合計値を出す方法が知りたいです。

$a[50]から$a[70]の数値をすべて合計した値を出すなど
0528nobodyさん2013/04/14(日) 13:43:25.50ID:???
>>527
array_sum(array_slice($array, 50, 21))
0529nobodyさん2013/04/14(日) 15:05:52.19ID:GUqrSjpz
>>528
ありがとうございます
0530nobodyさん2013/04/15(月) 17:12:04.80ID:Zye3ucx/
自分用にゲームの発売日なんかを自動で集めてきて表示するサイトってPHPで作れますか?
0531nobodyさん2013/04/15(月) 17:15:50.60ID:???
>>530
作れる
0532nobodyさん2013/04/15(月) 17:17:26.44ID:Zye3ucx/
>>531
ありがとうございます
ついでといっちゃなんだがなんかヒントくれよな
0533nobodyさん2013/04/15(月) 17:22:34.61ID:???
かき集めてきてHTML出力すればいいんじゃないの
定期的にcronなりタスクスケジューラなんかでかき集めておいて、
生成しておいたプレーンなHTMLにアクセスするほうがいいかもしんない。
0534nobodyさん2013/04/15(月) 17:25:23.97ID:A3jblSzx
すいません、開発環境を構築していたところ、
本番環境ではでなかった
以下のようなエラーが表示されるようになってしまいました。

A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant END_TRANSACTION - assumed 'END_TRANSACTION'
Filename: db/mysql.php
Line Number: 117

【PHPバージョン 5.3】
原因・回避方法わかりましたらご教示ください。。。
0535nobodyさん2013/04/15(月) 17:34:24.67ID:???
>>532
まず手動で集めて表示するサイトを作ってそれを自動化
0536nobodyさん2013/04/15(月) 17:40:51.15ID:???
>>533,535
サンクス!
0537nobodyさん2013/04/15(月) 17:59:13.24ID:???
>>534
ドキュメントルートがおかしいのではないかって海外フォーラムでいわれているよ
開発環境と本番環境それぞれの、そのあたりを注目してみてはどうでしょう
05385342013/04/15(月) 18:10:51.68ID:A3jblSzx
>>537
ありがとうございます。そのあたりを疑ってもう少し頑張ってみます。
0539nobodyさん2013/04/15(月) 18:11:31.29ID:???
>>534
本番環境でEND_TRANSACTIONを定義しているライブラリは、開発環境に入ってる?
入ってるなら、参照できてない(パスの解決ができていない)とかかな。

あるいは、本番環境のエラー出力レベルで~Noticeしてて、本番環境でもそのエラーが
発生してるけど、ログには出てないだけとか。
05405342013/04/15(月) 18:50:39.07ID:A3jblSzx
>>539
本番環境でもNoticeレベルのエラー表示はされるので
そのあたりの設定とは関係ないようです。

アプリケーションは丸ごとコピーしてアップしているのですが、
その中にはEND_TRANSACTIONの定義は見当たらないようなのです。。

ちなみにDB環境は以下のように変わっています。
---------------------------------------
ソフトウェア: MySQL
ソフトウェアバージョン: 5.1.49-log - FreeBSD port: mysql-server-5.1.49
データベースクライアントのバージョン: libmysql - mysqlnd 5.0.10
PHP 拡張: mysqli
---------------------------------------
↓
---------------------------------------
サーバのバージョン: 5.0.95
プロトコルバージョン: 10
MySQL クライアントのバージョン: 5.0.95
PHP 拡張: mysql
---------------------------------------

海外サイトも調べているのですが、明確な解決法が見当たらず。。。
0541nobodyさん2013/04/15(月) 19:28:33.26ID:???
>>540
何のアプリよ?
0542nobodyさん2013/04/15(月) 19:35:48.72ID:3Mv3hGy+
PHPに書くデータベースの接続パスワードは別ファイルに書くのが慣習だけど
実際にPHPに一緒に書いてて覗き見られることってある?
0543nobodyさん2013/04/15(月) 19:45:48.33ID:???
>>542
そういう設定になっていれば見られる
05445342013/04/15(月) 20:10:52.09ID:A3jblSzx
>>541
解決しました。。。

vogooというリコメンドエンジンAPIです。
ライブラリのコンフィグファイルのDB設定が本番環境のままなのが
原因のようでした。
0545nobodyさん2013/04/16(火) 01:28:10.29ID:ooHoVKGv
値で検索してその配列のキーを取り出したいです。

例えば
$a[0]から$a[100]の配列があるとして
6000と同じ値が入った配列を$aの配列から取得
↓
その配列のキーだけ取り出して変数に入れる
0546nobodyさん2013/04/16(火) 01:43:46.90ID:D4JSFeay
日本語でおk
0547nobodyさん2013/04/16(火) 02:08:35.35ID:ooHoVKGv
聞き方が下手で申し訳ないです

このような配列があった時に
$a[0] =50
$a[1] =51
$a[2] =52
$a[3] =53
$a[4] =54

値から配列の変数を調べる方法が知りたいです
例えば値が54に該当する配列の変数がどれなのかを調べる時に使いたいです
あと配列の変数がわかった後に、そのキーだけほしいです

この例だと
54で調べると
↓
$a[4]が該当して
↓
そのキーの4

となって最終的に4がほしいです。
0548nobodyさん2013/04/16(火) 02:31:37.39ID:???
>>547
$key = array_search(54, $a);
0549nobodyさん2013/04/16(火) 03:20:31.00ID:ooHoVKGv
>>548
ありがとうございます
0550nobodyさん2013/04/16(火) 10:55:46.37ID:???
>>547
配列の場合は、普通は「変数」とは言わずに、「インデックス」とか「添え字」という
0551nobodyさん2013/04/16(火) 11:29:04.50ID:ooHoVKGv
>>550
勉強になります
ありがとうございます
0552nobodyさん2013/04/16(火) 17:01:24.35ID:???
キーでいいじゃんw
0553nobodyさん2013/04/16(火) 17:53:54.39ID:???
ハッシュじゃね?
0554nobodyさん2013/04/17(水) 09:43:19.92ID:???
PHPはその辺あいまいだから・・・
0555nobodyさん2013/04/17(水) 11:16:36.85ID:???
PHPは添え字とハッシュと両方あるんだよな
0556nobodyさん2013/04/17(水) 11:26:21.72ID:???
配列の添字だと思われるのは実は連想配列のキー。
0557nobodyさん2013/04/17(水) 13:02:11.83ID:???
PHPのマニュアル見るとわかるんだが、PHPでは「配列のキー」という言い方は普通に使われる。
0558nobodyさん2013/04/17(水) 13:14:05.13ID:???
PHPでは添え字のことをキーと呼ぶ
0559nobodyさん2013/04/19(金) 01:52:35.21ID:BkSiPRWu
vpsサーバーで下のコードを動かしてるのですが
<?php echo file_get_contents('http://xxx.xxx.xxx/test.cgi');?>

下のエラーが出てしまいます。
failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in xxx
urlに直接ブラウザでアクセスするとtest.cgiがちゃんと表示できます。

下のコードだとちゃんとyahooのトップが表示できます。
<?php echo file_get_contents('http://yahoo.co.jp/');?>

ローカルのxampp上で同じプログラムを動かした場合もちゃんと表示できます。

原因なんでしょうか??
05605592013/04/19(金) 01:57:02.52ID:BkSiPRWu
以下の環境です

【OS名】CentOS6.2
【PHPのバージョン】5.3.3
0561nobodyさん2013/04/19(金) 03:32:15.65ID:???
そのエラー内容を見てみたらなんか分かるんでないの
05625592013/04/19(金) 08:23:54.41ID:???
ありがとうございます。ログ見たら解決しました。
cgiの方で呼び出しもとのホストを弾く設定になってたみたいでした。
0563nobodyさん2013/04/19(金) 11:04:15.70ID:???
質問する前に、なんで先にログを確認しないのか
0564nobodyさん2013/04/19(金) 13:02:39.65ID:lhK9q9u1
フレームワークに挑戦しようと勉強してるのですが、質問させてください

今までオブジェクト指向で書いたことがなく、ページ遷移の際にセッションに保存してそこからデータを
出し入れしたのですが、フレームワークで書かれたウェブアプリのサンプルソースを
みていると、インスタンスに全部入れ込んでいく方法がとられているのですが、
インスタンスにデータを保存して、そこから読み出し書き出しをして処理しようと思うのですが、
インスタンスに設定情報や取得情報を代入した場合、
ページ遷移した場合は当然保持されないのでしょうか
0565nobodyさん2013/04/19(金) 14:14:51.32ID:???
文章推敲して質問し直して
05665642013/04/19(金) 14:35:58.50ID:lhK9q9u1
はい・・・すみません

フレームワークの場合、クラスファイルをautoloadで読み込んだりするために
クラスファイルのパスやその他各種設定情報をインスタンスに格納していくかとおもいますが、
ページ遷移をまたぐ場合、インスタンスは保持されるのでしょうか
それともセッションなどに一時的に保存する必要があるのでしょうか
0567nobodyさん2013/04/19(金) 14:52:24.01ID:???
フレームワークの場合とか言われても フレームワークで違うし
インスタンスに格納すると決め付けられても。 というか、 インスタンス と言うものを 勘違いしてる?
ページ間のデータのやり取りはフレームワークが勝手にやるのかもしれないし、
オブジェクト指向関係ないし
05685642013/04/19(金) 15:35:16.89ID:lhK9q9u1
わかってない者のわかってない質問になっていると思います、すみません・・・

もう一度整理して・・・
やろうとしてることは、ユーザ登録のページを作成
(入力フォーム→確認画面→送信完了)で、今まで3つのphpファイルでページ遷移をしていました

今度は、index.phpにアクセスしてフォーム等の設定を読み込み→入力フォームを表示、
ユーザが入力をして確認ボタンを押すと、データを受け取るクラスを実行してindex.phpに
リダイレクトし、確認画面を表示させる〜(以降略)
という動きを考えているのですが、フォームボタンを押してページ遷移(リダイレクト)させるという処理が
単純に最初に示したphpファイル毎にページが遷移していくやり方と比較して
フレームワークの場合は一連の動作になるのでしょうか
それとも、一旦セッション等に保存して、index.phpが再度読み込まれた際にセッションから設定を
呼び出して処理をおこなうものなのでしょうか
0569nobodyさん2013/04/19(金) 15:51:05.66ID:???
フレームワークによる

index.phpで受けて index.phpで表示する。
別にセッションで受け渡ししないでも作れるよね。

アクションで、受けるとこ、結果表示するとこ分けて、セッションで受け渡す形で作るのもあるし
0570nobodyさん2013/04/19(金) 16:18:53.21ID:???
>>569
> アクションで、受けるとこ、結果表示するとこ分けて、セッションで受け渡す形で作るのもあるし

横からだけど、これ具体的にはどのフレームワーク?
05715642013/04/19(金) 16:36:11.06ID:lhK9q9u1
>>569
なるほどです

MVCの解説サイトなどを見ながら勉強してるのですが、
だいたいindex.phpにリクエストがきて、コントローラから、初期化や設定ファイルなどを読み込んで、
Dispatcher.phpで振り分けられて、アクションに応じたクラスが実行されて、
結果をビューに渡して表示させる
・・・という流れで理解をしたのですが、ビューの結果をクライアントにレスポンスとして返されたあとのことに
触れられている説明がなく(読み足りないのかもしれません)、
クライアントがその次にリクエスト(たとえばフォームで入力ボタンを押す)をした際に、
次の振り分けでボタンを押す処理のクラスを実行するに、またindex.phpが呼び出され、
初期化や設定ファイルの読み込み、クラスのautoloadなどを最初からしなければならないのか、
はたまたその辺は保持されているものなのか、セッション等で設定を保存して読み込むようにしてあげる必要があるのか
その辺で疑問に思った次第です
書籍のサンプルでは、最初に読み込まれた際に、設定情報を格納したインスタンスを凍結させ、
それ以降の設定変更ができないようにしているのですが、そのインスタンスをセッションに保存したりするような
記述が見つからなく、混乱している状態です
0572nobodyさん2013/04/19(金) 16:54:57.85ID:???
>>571
なにで引っかかってるのかわかんないから 的外れなのかもしれないけど、

普通は、どんなアクセスも全部 index.phpで受けて 毎回毎回 初期化、設定読込は行われる。
基本的には、リクエスト毎に実行され、処理が終われば消えてなくなり、
各リクエストは関連なく独立しているものです。

アクセスしてる個人単位で連続しているように見せかけるために、
個人だけに関連するデータをセッションで保持したりしますが、

普通はインスタンスごと持ったりみたいなことはしないものです。
0573nobodyさん2013/04/19(金) 17:20:17.98ID:???
>>571
その勉強中のMVCのサイトか、勉強中のフレームワーク名を出すと話が早いかもよ。
0574nobodyさん2013/04/19(金) 21:22:28.01ID:???
毎回最初からだよ。
セッション情報を使うことで続きっぽく扱えるだけで、HTTPはリクエストごとに独立した処理をするのが原則
0575nobodyさん2013/04/20(土) 13:45:38.40ID:???
Merge branch 'PHP-5.4' into PHP-5.5 や
Merge branch 'PHP-5.3' into PHP-5.4 は
先に古いバージョンで修正されたものが
新しいバージョンの方にも適用されたという事でよいのかな?
0576nobodyさん2013/04/20(土) 14:19:52.09ID:???
>>575
>>1
0577nobodyさん2013/04/20(土) 16:45:32.14ID:???
>>575=精神異常
0578nobodyさん2013/04/20(土) 18:05:38.77ID:???
>>577
気づいてないかも知れないけど、君がそうかもよ?
0579nobodyさん2013/04/20(土) 19:36:32.31ID:???
>>578
>>578
0580nobodyさん2013/04/21(日) 04:47:46.16ID:???
>>575
そう。
05815642013/04/21(日) 17:35:31.74ID:QsqTX+06
みなさまレスありがとうございます

なるほど、1回毎に読み込みがおこなわれるわけですね
引っかかってる部分がようやくとけました
どうりで保存したりする処理がないわけですね
となると、リクエストに対して、必要な設定読み込みを考えないとダメですね
何でもかんでも最初に初期化設定読み込みをautoloadなどで一括に処理してしまうものだと思ってました
全体の流れや効率を考えた外枠から考えないとダメですね
0582nobodyさん2013/04/22(月) 06:20:08.99ID:???
質問させてください

YouTubeやニコニコ動画などは再生可能なサムネイルを
出力できますが、
ニコ生放送は再生可能なサムネイルを貼り付けることは出来ますか?
■ このスレッドは過去ログ倉庫に格納されています