【PHP】下らねぇ質問はここに書き込みやがれ [転載禁止]©2ch.net

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/
2デフォルトの名無しさん:2014/12/16(火) 23:57:45.49 ID:if+akcCT
Webprogにスレあるのに重複か





















重複の糞スレ終了
3デフォルトの名無しさん:2014/12/17(水) 00:23:17.60 ID:oDlbLDL6
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
4デフォルトの名無しさん:2014/12/17(水) 02:44:27.36 ID:XucQiojd
おつ
5デフォルトの名無しさん:2014/12/17(水) 08:01:24.21 ID:Q55Z/XYm
>>1
糞スレ立てるなウジ虫
6デフォルトの名無しさん:2014/12/17(水) 08:33:48.37 ID:2HMoZql1
cliスレだろ?
7デフォルトの名無しさん:2014/12/17(水) 09:24:51.54 ID:92SEZchH
あのレスの内容の90%はまったくPHPと関係のないスレのことか
8デフォルトの名無しさん:2014/12/17(水) 09:29:24.82 ID:9gD1VcMA
IDなしだと荒らされるので避難してきました
9デフォルトの名無しさん:2014/12/17(水) 09:36:52.98 ID:92SEZchH
数カ月前にこの人が無断で画像使ってるから修正したけど無視されてるし
http://qiita.com/mpyw/items/1cb6fc8170b6a8c8eb04
こんなんばっかりだろPHPerってさ
一応http://www.japrpo.or.jp/には通報済みだけど削除されないものだな
10デフォルトの名無しさん:2014/12/17(水) 09:55:03.92 ID:VoUyzdqa
お前のことなんて興味ないし
質問スレでオナニー披露しないでいいから
11デフォルトの名無しさん:2014/12/17(水) 10:24:51.50 ID:nSozQxMf
20代前半から中盤に限ってこういう権利関係に疎い奴がいるもんだ
12デフォルトの名無しさん:2014/12/17(水) 11:20:05.35 ID:uBob9+nL
IDが出ると見やすくていいね
13デフォルトの名無しさん:2014/12/17(水) 11:22:53.68 ID:YTfSGPhx
荒らす奴もNGしやすいし、何より質問者の成りすましが出来なくなるからね。良かったw
14デフォルトの名無しさん:2014/12/17(水) 11:47:06.25 ID:VoUyzdqa
荒らしは頑張って書き込むたびにID変えてね!
15デフォルトの名無しさん:2014/12/17(水) 12:16:50.99 ID:eyin5x5c
巣に帰れよ
16デフォルトの名無しさん:2014/12/17(水) 21:34:22.64 ID:XucQiojd
>>9
前もその人のURL貼られてたな。宣伝か何か?
17デフォルトの名無しさん:2014/12/19(金) 10:29:57.08 ID:WohFU2Cv
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。

第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。


食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
18デフォルトの名無しさん:2014/12/19(金) 11:04:24.93 ID:CgQyWAAG
いつものキチガイキタ━━━━(゚∀゚)━━━━!!
19デフォルトの名無しさん:2014/12/19(金) 13:56:22.75 ID:5dTMV7SU
昔話おじさんキター
20デフォルトの名無しさん:2014/12/20(土) 23:34:22.47 ID:wxqr2k4c
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。

第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。


食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
21デフォルトの名無しさん:2014/12/21(日) 01:02:58.17 ID:1EJiFivb
天丼キター!でもその天丼腐ってる!!
22デフォルトの名無しさん:2014/12/21(日) 01:39:44.90 ID:t1x8P14S
おいどうしたキチガイ?
WebProgみたいに恥ずかしい連投しろよ?
23デフォルトの名無しさん:2014/12/21(日) 10:29:32.06 ID:a7slx30o
コメントについて、# 記号があまり使われていないのは
何か理由があるのですか?
24デフォルトの名無しさん:2014/12/21(日) 12:46:31.09 ID:oet6k+Aq
テンプレにも当てはまらないZenCartに関する質問なんですが、完全に手詰まりになってしまったため、恥を忍んでここに質問させていただきます。

長くなりますが、最後まで読んでいただき、解決策を教えていただければと思います。

スレ違いかもしれないのも、厚かましいお願いであることも重々承知してますが、何卒みなさまのお力をお借りできればと思います。
スレ違いの場合は誘導していただけると助かります。

同じ質問をZenCart本家のBBS、そして日本のBBSにも投稿しました。
ただ日本のBBSは過疎ってますし、本家の方でも3年たっても解決されてません。

PHPが読める人にはなんてことない質問だと思うんですが、私にはどうやっても解決できませんでした。

私が日本の質問BBSにした質問は→です。 http://zen-cart.jp/bbs/viewtopic.php?f=11&t=6174
本家アメリカで解決されてない質問は→です。 http://www.zen-cart.com/showthread.php?167463-Multiple-Shipping-Zones-Rate-Module-Shipping-Method-Choosing&p=955645#post955645

ZenCartをご存知であれば上に書いた質問内容でわかっていただけけると思うのですが、私なりの説明というか、解説をかかせていただきます。
25デフォルトの名無しさん:2014/12/21(日) 12:47:09.85 ID:oet6k+Aq
(続きです)ZenCartは、カートに商品を入れる→配送方法を選択して送料を決める→カートの商品と送料を合計するという流れです。
送料はshippingモジュールというPHPファイルで決定していて、プラグインを適用すると、デフォルトで入っているzone_rates.phpのクローンを作ることができます。
zone_ratesとは国別送料のことなんですが、クローンをつくることで、デフォルトの状態では1つしか設定できなかった国別送料の選択肢を増やせるのです。
ちなみにオリジナルの「zone_rates.php」に加え「zone_rates_1.php」から「zone_rates_4.php」というかたちで4つ追加できます。
私の意図としてはEMS、書留、普通から選んでもらおうとしたのです。

ここまでは何てことない作業でした。吐き出す文字や、それぞれの送料の設定も何の問題もなくできました。

問題はこのあとで、いざカートで送料を適用しようとすると、クローンで作成した送料が合計金額に反映されません。
クローンで作成したどれを選択しても、オリジナルであるzone_rates.phpで決定した金額が合計されてしまうのです。
試しに送料の選択肢にデフォルトで入っている固定送料を選んでみたのですが、この場合はうまく反映されます。
つまり、
「デフォルトで入っている他の送料のPHPファイル」+「オリジナルのzone_rates.php」の組み合わせ→○問題なし。どちらを選んでもきちんと合計に反映される。
「オリジナルのzone_rates.php」+「クローンであるzone_rates_#.php」→×クローンのどれを選択しても「オリジナルのzone_rates.php」での送料が合計に反映される。
「デフォルトで入っている他の送料のPHPファイル」+「オリジナルのzone_rates.php」+「クローンであるzone_rates_#.php」→×デフォルト分とオリジナルは反映されるけど、クローン分は選択できても反映されない。

ここからは推測です。
26デフォルトの名無しさん:2014/12/21(日) 12:47:46.71 ID:oet6k+Aq
(続きです)「選択はできる」ので、送料自体は問題なく決定されているのだと思います。ということは、次の「合計する」というステップへ情報が伝わっていないのだろうと推測しました。

ZenCartにはorder_totalというモジュールがあります。ということは、この中のot_sub_total.phpやot_total.phpへ送料が伝わっていないのだと思います。
デフォルトで入っているものだとOKということは、合計へ引き渡す範囲が決まっていて、クローンはその範囲から漏れているのでは?という予想です。
が、私はPHPファイルが読めないので、ここで手詰まりになってしまいました。

以上です。


よろしくお願いします。
27デフォルトの名無しさん:2014/12/21(日) 13:08:19.95 ID:FEt3ctqx
一部動いてるんだから、設定は間違ってないはずだと思い込んでいるように推測します。
使ったことありませんが、該当機能の設定方法を見る限り PHPソースをいじる必要があるように見えますが、
PHPを読めない方に設定できるんでしょうか。
28デフォルトの名無しさん:2014/12/21(日) 13:49:14.71 ID:Mymy/rEu
ZenCartのフォーラムへの投稿が「2014年12月21日(日) 7:00am」 だから
レスつくまで少しは待つべき。

関連あるかわからないが、この作業はしたのかな。
http://zen-cart.jp/faq/v130x/02.html

モジュールの設定について
デフォルトではZONES SHIPPING MODULESは1つしか入りません。
この制限はincludes/ modules/ shipping/ zones.phpを設定することにより
簡単に変更することが出来ます。地域を決める $this->num_zones.を修正して下さい。
29デフォルトの名無しさん:2014/12/21(日) 14:20:54.74 ID:KalIwj+0
山田祥寛(よしひろ)、翔泳社
10日でおぼえる PHP 入門教室、第4版、2012

この本に、PHPの文法の解説が、70ページある。
プログラム経験があるなら、10日で一通りできる

プログラム経験がないなら、アンクの絵本シリーズのような、
もっと簡単そうな本を探して読む
30デフォルトの名無しさん:2014/12/21(日) 14:30:54.67 ID:1u8zO5/f
JavascriptとPHPだとPHPが熱いか?
31デフォルトの名無しさん:2014/12/21(日) 14:53:11.45 ID:1u8zO5/f
まあ、そもそも両者は目的が違うから対等に比較されるものじゃないな
自分で言っといてすまんがw
32デフォルトの名無しさん:2014/12/21(日) 15:26:44.50 ID:AhclniWF
webではphpがダントツ
ブラヴではjavascripしかないからな
33デフォルトの名無しさん:2014/12/21(日) 16:31:45.88 ID:1EJiFivb
>>23
単にC系のほうに馴染みがある人が多かっただけじゃないかな。
34デフォルトの名無しさん:2014/12/21(日) 16:34:59.00 ID:KalIwj+0
zone_rates_1〜4.php のソースコードを見て、
送料を表す変数を探す
たぶん、最後の方にあるはず

PHPでは、$変数名で、変数を表す。
送料は、delivery fee,Shipping charges などだから、
$delFee,$sCharg などの送料を表す、それっぽい変数を探す

print('aho ' . $delFee);
そして、print文で表示する

'aho 'はシングルクォーテーションで囲むことで、
'aho 'という文字列を表す
.(ドット)は前後の文字列を連結する(幾つでも連結できる)

例えば、$delFeeに500が入っているなら、
'aho 500'と表示される
(ahoは目印のために入れただけで、意味はない)

ソースコードにはコメント部以外は、半角記号英数字だけを使う
コメントは、1行・複数行コメントの2種類ある
//行末までコメント
/*
複数行コメント
*/

とにかく、あちこちにprint文を入れて、様々な変数を表示してみる
(ただし、ファイルのバックアップを取っておくこと!)
または、debuggerでデバッグして、変数をwatchしたらいい
35デフォルトの名無しさん:2014/12/21(日) 19:08:30.21 ID:oet6k+Aq
24です。
ボロカスに叩かれるのを覚悟していたんですが、いろいろな方法を指示していただき本当にありがとうございます。
土曜の朝からこのスレ書いた時まで完徹してまして、スレ投稿のあと寝てました。
ご指示いただいた方法を今から全て試してみます。必ず報告しに戻ってきます。
とりあえずお礼まで。
本当にありがとうございました。
36デフォルトの名無しさん:2014/12/21(日) 21:23:51.25 ID:sVW6DMzp
>>33
ありがとうございます。納得できました。
たしかにC言語のコメントには、# 記号はないみたいですね。
逆に、bashとかは、# 記号がコメントなのですね。
37デフォルトの名無しさん:2014/12/21(日) 22:43:35.23 ID:1u8zO5/f
#はCではプリプロセッサ指令だね
38デフォルトの名無しさん:2014/12/22(月) 00:18:59.08 ID:sKZl+BZG
>>36
bashもそうだし、cgiってことでperlの顔色を伺ったのかもしんない
39デフォルトの名無しさん:2014/12/22(月) 00:39:06.18 ID:WMfywHK2
>>38
最初のPHPはPerlのラッパー
その名残
40デフォルトの名無しさん:2014/12/22(月) 02:03:44.65 ID:sKZl+BZG
あ、そうなんだ。
まだPersonal Home Pageだったころ?
41デフォルトの名無しさん:2014/12/22(月) 12:00:56.95 ID:ecTC67Vf
>>1 乱立すんなカス
42デフォルトの名無しさん:2014/12/22(月) 12:13:10.07 ID:+SA86za8
乱立って、初のまともなスレじゃん。
Rubyに言えよ。
43デフォルトの名無しさん:2014/12/22(月) 13:02:54.64 ID:yqQU7aar
なんか、たとえば$aという変数を表示するコードを書くときに

<?php
$a = 10;
print "a = $a";
?>

でいいとか本に書いてあるけど、これ嘘だよね?
少なくとも自分の環境では普通に
a = $a
って表示されるだけなんだがw

<?php
$a = 10;
print "a = " . $a;
?>

が正解だよね?
それとも環境依存??
44デフォルトの名無しさん:2014/12/22(月) 13:07:04.68 ID:+SA86za8
a = $aって表示されるとしたらそれがおかしい。
シングルコーテーションで囲ってるんじゃねーの?
45デフォルトの名無しさん:2014/12/22(月) 13:13:15.85 ID:MqOxtloe
シングルじゃなくダブルなら表示されるはず
. でもいいし "${a}" でもいい
46デフォルトの名無しさん:2014/12/22(月) 13:17:51.92 ID:yqQU7aar
>>44
>>45
ご推察のとおり、シングルになっておりましたw
>>43に書いたとおりソースをダブルで書きなおしたらちゃんとドットで連結した時と同じ結果が得られました
おさわがせしました。。
そして、自分が打ち間違ってるだけなくせに嘘つきとか言っちゃったことを謝ります
47デフォルトの名無しさん:2014/12/22(月) 23:26:25.24 ID:kacc1ndz
リモートサーバの関数を実行できるようにしたいんだけどどうにかしてできない?
48デフォルトの名無しさん:2014/12/23(火) 02:42:54.75 ID:ddGJ/f4O
if (function_exists($_GET['cmd'])) {
echo $_GET['cmd']();
}

的なバックドア仕掛けるんじゃだめなんか
49デフォルトの名無しさん:2014/12/23(火) 10:11:21.41 ID:BQHHJ9UZ
>>48
$_GET['cmd']()
ってなに?関数?
50デフォルトの名無しさん:2014/12/23(火) 10:20:04.07 ID:0dSPy4ke
>>49
http://php.net/manual/ja/functions.variable-functions.php


xxxx.php?cmd=phpinfo ってアクセスすると phpinfo()の結果が丸見えになるわけ。
51デフォルトの名無しさん:2014/12/23(火) 10:22:44.86 ID:F5SlaueO
>>47
file_get_contents でファイルを取得
preg_match で関数部分を抜き出し
eval で実行

http://php.net/manual/ja/function.file-get-contents.php
http://php.net/manual/ja/function.preg-match.php
http://php.net/manual/ja/function.eval.php
52デフォルトの名無しさん:2014/12/23(火) 11:55:22.77 ID:9pGdcD+X
色々とありがとう
だけど少し質問修正させてくれ
サーバにある機能をクライアント側で関数の形で実行っていうのは可能?
クライアント側では関数を組んだりせずに
53デフォルトの名無しさん:2014/12/23(火) 12:11:30.70 ID:LCyd09nO
そういった機能を作るのがプログラム言語でしょ。
意味が分からないけどサーバにある機能って何を指してるの?
54デフォルトの名無しさん:2014/12/23(火) 12:23:25.77 ID:T5aqpKIB
WebServiceとかRestFullとか
55デフォルトの名無しさん:2014/12/23(火) 12:25:15.02 ID:mWVcP1k8
>>52
できるかわからんが、「例3 HTTP経由の include」ってこと?

http://php.net/manual/ja/function.include.php
56デフォルトの名無しさん:2014/12/23(火) 13:02:30.47 ID:9pGdcD+X
>>53
データベースの値を取得したりとか
そういうのをサーバで実行して結果だけクライアントで受け取りたい

>>54
調べてみるよ
ありがとう

>>55
これでHTTP側の関数が実行できれば完璧
57デフォルトの名無しさん:2014/12/23(火) 17:00:44.83 ID:B6GcHRDx
>>56
それって普通のHTTPアクセスでいいんじゃ?
58デフォルトの名無しさん:2014/12/23(火) 19:56:07.22 ID:9pGdcD+X
>>57
例えばサーバにgetData()って関数が有ったとして
クライアントからそのままgetData()で呼び出して返却値もそのまま受け取りたいんだ
HTTPアクセスでできたっけ?
59デフォルトの名無しさん:2014/12/23(火) 20:18:34.57 ID:LCyd09nO
>>58
>>48みたいな感じで仕組みを作ればできる。
当然戻り値をechoとかで出力するとかは作る必要はある。
逆に言うとデフォルトでそんな仕組みはない。
60デフォルトの名無しさん:2014/12/23(火) 20:59:30.45 ID:XRDIMzuH
getData() 関数はサーバーのコマンドじゃなくphpの関数?
クライアントってのがブラウザを指してるの?
61デフォルトの名無しさん:2014/12/23(火) 21:05:36.45 ID:T5aqpKIB
いやだからWebServiceが要求そのままの仕組みなんだってば
周りの細かいことはすでに組み込まれてるから
本当に関数呼ぶ感覚で使えるよ
62デフォルトの名無しさん:2014/12/23(火) 21:28:57.22 ID:9pGdcD+X
>>59
echoで出力じゃなくて例えば関数で配列が返却されるなら配列のまま受け取りたい

>>60
getData()はサーバーのコマンド
ブラウザでgetData()を実行したら、サーバーのgetData()が実行されて、その結果を受け取るっていうのがやりたい

>>61
すまんがWebServiceで検索かけても普通のウェブ上でのサービスばっかり出てきて分からない
OAuthとかSCAとかSOAPとかが載ってるページも出てきたけど、これの事?
63デフォルトの名無しさん:2014/12/23(火) 21:35:00.41 ID:XRDIMzuH
>>62
配列が欲しいならjsonで出力するphpを用意してブラウザからajaxでアクセスすればいい
もちろんjavascriptが必要になる

危険なコマンドが実行されないように注意ね
64デフォルトの名無しさん:2014/12/23(火) 23:59:10.28 ID:ObZUQWf8
>>62
そうかな。
WebServiceで検索した最初のページを貼っておくね。

http://ja.wikipedia.org/wiki/Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9
65デフォルトの名無しさん:2014/12/24(水) 07:59:57.86 ID:B0qw1tPJ
RESTがいいけど、PHP5ならSOAPServerもSOAPClientもあるし、
Serverちゃんと作れば、
Clientはサーバー指定と関数指定の2行で済むから。
66デフォルトの名無しさん:2014/12/24(水) 13:28:51.88 ID:1Yhfz+p2
>>63-65
ありがとう!
まだ簡単なテスト関数だけどおかげさまでなんとかできたよ
長々とすまなかった
67デフォルトの名無しさん:2014/12/29(月) 01:43:32.37 ID:R4vXzYY0
配列から取り出して、1つづつ変数に格納する方法が
わからず困っています。

ID  名前 権限
100  甲   A
101  乙   B
102  丙   C

のようなデータを入力させて、それを配列として格納して
insert文でデータベースに登録したいです。

print文で表示する場合には、単にforeach等で表示させれば
できるのですが、insert文にするために変数化する必要があると
考えているのですが、登録される行数が動的であるため、うまく
できずに困っています。

一般的に上記のような複数行のデータを配列からでーたべーすに
登録する場合、どのように処理するものなのでしょうか。

アドバイスください。
68デフォルトの名無しさん:2014/12/29(月) 02:20:45.64 ID:7wZLdfk+
自分は配列にデータ入れてそれ投げたら自動でinsert文作るような関数作ってる。
配列の内容は

item[0] = [100, "甲", "A"];
2行目以降省略

みたいな。
カラム名に関しては別に引数持たせるか、上の配列内でキーにしてもいい。

行数が可変なだけなら大した手間じゃないよ。
insert文を理解していれば、要素を入れる関数作る程度なら簡単にできる。



> print文で表示する場合には、単にforeach等で表示させれば
確認するだけならprint_rもしくはvar_dumpのほうが楽
69デフォルトの名無しさん:2014/12/29(月) 02:25:03.92 ID:lGwsEYQC
http://www.wash-house.jp/shop/fukuoka/ookawaten.html

このサイトのすべての監視カメラの映像をwebページに出して見たいんだけど、どうしたらいいですか?

何勉強したらできるようになりますか?

お願いします。
70デフォルトの名無しさん:2014/12/29(月) 02:34:03.22 ID:lGwsEYQC
間違えました
71デフォルトの名無しさん:2014/12/29(月) 04:37:02.38 ID:06vbA5h8
>>67
普通はこういう流れ。
prepare
foreach
 bind, execute

>>68
> 自分は配列にデータ入れてそれ投げたら自動でinsert文作るような関数作ってる。
詳細書いてないからわからんが、だめな予感がする。
ちょっとしたアプリだから大丈夫だろ、とか、ちゃんとエスケープしてるから問題ないとか戯言を書かないでくださいね。
72デフォルトの名無しさん:2014/12/29(月) 08:40:39.27 ID:7wZLdfk+
>>71
配列から普通のinsert文が作れるんなら、プリペアステートメント使ったのも少し考えれば作れるだろ。
予感だけでダメとか言われても……。
73デフォルトの名無しさん:2014/12/29(月) 10:36:11.39 ID:jAdn2Fwj
ちゃんとエスケープ+αしてればprepare使わなくても問題ないんじゃないの?
7467:2014/12/29(月) 10:41:06.07 ID:R4vXzYY0
>>68 >>71
回答いただきありがとうございます。質問後、考えて書いていたのですが、

〜DB接続処理※省略〜
$sql='SELECT namae FROM test_tbl Where code=?';
$stmt=$dbh->prepare($sql);
$data[]=$code;
$stmt->execute($data);
$dbh=null;
$record=$stmt->fetch(PDO::FETCH_ASSOC);
if($record==false)
{
print 'データなし<br>';;
}else {
foreach ($record as $key => $value){ ★     
print $key.'=>'.$value.'<br />';      ★
    }
}
?>
この★のところで、取り出したデータをinsert文で使うために
printではなく、foreachで処理して$namae1・・・namae10のように変数にして
利用したいという趣旨でした。(仮に10行だったら)
>>68さんの考え方だと、配列から直接取り出してそれをinsert文の
引数にするのですよね?以下のようなSQLを考えていて
$sql='INSERT INTO test_db2(code,namae,kengen) VALUES(?,?,?)';
$stmt=$dbh->prepare($sql);
$data[]=$code;
$data[]=$namae;
$data[]=$kengen;
その場合、$code等の変数にどうやって配列中の複数行を格納して実行するのかがわかりませんでした。
拙い質問で申し訳ありませんが、引き続きアドバイスお願いします。
75デフォルトの名無しさん:2014/12/29(月) 10:59:22.37 ID:hl22pesi
$stmt->bindParam(1, $code);
$stmt->bindParam(2, $namae);
$stmt->bindParam(3, $kengen);

じゃないのかな
76デフォルトの名無しさん:2014/12/29(月) 11:02:01.89 ID:hl22pesi
って
>配列中の複数行を格納して実行
てのがよくわからんけど、パラメタ変えつつ、同じ$stmt->execute()を複数回実行するんだけど。
ってそういう話でもなく?
77デフォルトの名無しさん:2014/12/29(月) 11:49:22.78 ID:R4vXzYY0
>>76 回答ありがとうございます
ID  名前 権限
100  甲   A
101  乙   B
102  丙   C

をselect文で取り出して配列に入れているので配列の中は、

array[100,甲,A,101,乙,B,102,丙,C]

となっている認識です。
この1つ1つを引数として、それぞれ格納しないと

$data[]=$code;
$data[]=$namae;
$data[]=$kengen;

という処理ができないのかと。whileでひとつづつ
取り出して変数に入れるにはnull値があったら
ズレてしまうしとか悩んでいました。

>てのがよくわからんけど、パラメタ変えつつ、同じ$stmt->execute()を複数回実行
>するんだけど。ってそういう話でもなく?

仰っているとおりだと思います。ただ、配列から取り出した値に処理を施してから
SQLを実行したいので、なんとか変数に一つづつ入れたいと考えています。
78デフォルトの名無しさん:2014/12/29(月) 12:38:30.54 ID:o0PJ9v60
>>77
ざっと読んだけど色々おかしい。
処理をきちんと分けたほうがいい。

・データを取得して配列化する処理
・その配列をforeachで回してinsertする処理

つーか二次元配列を理解できてるのか疑問なんだが。

>をselect文で取り出して配列に入れているので配列の中は、
>array[100,甲,A,101,乙,B,102,丙,C]
>となっている認識です。

これだと一次元配列になっている。こうじゃなくて、
二次元配列にしないとうまくいかないと思う。
二次元配列にしてからforeachで回すようにすればいい。
79デフォルトの名無しさん:2014/12/29(月) 14:32:04.55 ID:06vbA5h8
>>72 >>73
少なくとも今回のような初心者に insert文を組み立てる手法を提示すべきじゃないってだけの話なので。
知らない人こそprepareだよ。
80デフォルトの名無しさん:2014/12/30(火) 00:16:16.88 ID:YKr5cL9m
>>74
そこまで書けるなら考え方は簡単。
insert文はこういう書き方ができる。

values(?,?,?),(?,?,?)

ようするにvalues以降のカッコはカンマで区切ることにより複数行データを入れられる。
自分が作っている関数では、多重配列を使用することにより(?,?,?)に当たる文字列を必要分だけ自動的に生成するようにしている。

ここから蛇足。
bindParamはちょっと扱い方難しいから、まずはbindValue使ってバインドしたほうがいい。
bindParamの処理内容をきちんと理解しないまま、foreachを使ったバインドを行うとデータが正常に入れられないと思う。
81デフォルトの名無しさん:2014/12/30(火) 00:35:49.23 ID:YKr5cL9m
>>77
> array[100,甲,A,101,乙,B,102,丙,C]
意識してやらない限りならない。

まずFETCH_ASSOCは連想配列で帰ってくるので、

$data["ID"] = 100;

みたいな感じでデータが入るから。
仮にnullが入っていたとしても、

$data["名前"] = null;

みたいな形になる(PHPはいい加減だから本当にnullかどうか怪しいけど)
またfetchはselect文で該当する全件のデータが返ってくるわけではない。あくまで一行分が返ってくる。
だから全件分のデータを取得するときはこんな感じにならないとおかしい。

while($record=$stmt->fetch(PDO::FETCH_ASSOC)) {
(print処理)
}

つまり意図的にnullを除外したような処理をしないと、一つずれるようなことはないはず。
82デフォルトの名無しさん:2014/12/30(火) 00:40:11.34 ID:YKr5cL9m
>>79
いやprepareにしろinsert文は組み立てないといけないでしょ。
それを自分の手で書くか自動で生成するかの違いだけ。
83デフォルトの名無しさん:2014/12/30(火) 04:04:00.46 ID:FYXMJs1o
文字列のx番目に新しい文字を加えたいのですが、
現在はこのようにしてます

$str = 'abcdefg';
$char = '&';
preg_replace('/(.{3})(.*)/', '$1'.$char.'$2', $str); //"abc&defg"

このやり方以外にもっと高速で動作する方法はありますか?
84デフォルトの名無しさん:2014/12/30(火) 08:22:23.54 ID:wp2qouYx
普通にsubstrとかで左からx-1文字とx文字目以降の
文字列作って3つを連結するとか
85デフォルトの名無しさん:2014/12/30(火) 17:56:38.58 ID:FYXMJs1o
>>84
ありがとうございます
正規表現は重いと聞いたのでそのやり方にしてみます
86デフォルトの名無しさん:2014/12/30(火) 23:03:06.86 ID:YVsWPPTF
substr_replace($str,$char,3,0);
87デフォルトの名無しさん:2014/12/31(水) 23:22:18.32 ID:tqgvohnx
abしたら25req/s程度しか出なかった
こんなもんなの?
8867:2015/01/01(木) 03:32:54.71 ID:M6g5xnO9
>>78 >>80-81
返信が遅くなりました。
アドバイスありがとうございます。
>>78氏のおっしゃるように配列に対する理解が不足しておりました。
>>80-81氏のアドバイスを受けてここ2日ほど色々試していました。
結果、
while($record=$stmt->fetch(PDO::FETCH_ASSOC))
{ $record2[]=$record;※この処理で、行単位で複数の列情報が格納される
}
⇒ここの処理で、SQL実行結果を連想配列に一旦すべて格納する。
if($record2==false)
{ print 'データなし<br>';;
}else {
for ($i = 0; $i < count($record2); $i++) {
$test[$i] = $record[$i]["code"];
$test[$i] = $record[$i]["namae"];
$test[$i] = $record[$i]["kengen"];
}
⇒for文でiを添え字にすることで、配列から単一の変数として
取り出して、後続処理で利用する。
というやり方にたどりつきました。

ただ、色々考えて自分なりに思ったことなのですが、
@配列の情報をPGMの中ですべて、$xxxのように一意に変数化することはあまり意味がなく
foreachやwhileの中で処理することとなる。
(iの添字を振っても、結局どれが利用したものかは特定できないため。計算処理なら)

A特定の情報を使用したのであれば、SQLの時点で限定するよう実行して扱うべき。

という結論に至りました。
まだ不十分なところもありますが、一旦自分の中で整理しました。
色々とありがとうございました。
89デフォルトの名無しさん:2015/01/01(木) 15:57:08.54 ID:hhR/vAwM
単純なphpページ作って
ab ベンチ取ったら20req/s程度だったんですが
性能稼げるようにするにはどんな工夫がありますか?
静的コンテンツはき出ししかないのかなあ
90デフォルトの名無しさん:2015/01/01(木) 23:02:26.26 ID:S3vOoaTm
91デフォルトの名無しさん:2015/01/02(金) 00:07:50.63 ID:8He3Adur
>>89
APC
92片山博文MZ ◆T6xkBnTXz7B0 :2015/01/03(土) 19:20:41.04 ID:XgnEofgF
システムの更新情報を設定ファイルに埋め込むのをやめた。
いちいち設定ファイルをいじるのは素人のやることだ。全部、データベースに突っ込むぞ。
データベースの問い合わせのWHERE句とVALUES句をハッシュから動的に作成するようにした。
これでシステムの見通しが良くなって来た。うまく行きそうだ。
93デフォルトの名無しさん:2015/01/03(土) 19:23:45.51 ID:XgnEofgF
あげ
94片山博文MZ ◆T6xkBnTXz7B0 :2015/01/03(土) 19:28:12.00 ID:XgnEofgF
SSLをサポートしないとまずい。無料でセキュリティ証明書が取得できないものか?
95デフォルトの名無しさん:2015/01/03(土) 20:52:37.77 ID:UPnIfzlx
4月から Let's Encrypt が始まるっぽいからそれまで待てば
96デフォルトの名無しさん:2015/01/04(日) 11:17:56.12 ID:nCB20Egv
ウェブプロキシリストを作ってそのリストからランダムで特定のサイトにアクセスしていく
スクリプトってどういうふうに掛けばいいんでしょうか。
97デフォルトの名無しさん:2015/01/05(月) 10:19:20.32 ID:PdsKJiUl
PHPUnitでテストを行いたいのですが、テストクラスのファイルは
どこに置くのが適切なのでしょうか?

http://example.com/bbs/
についてテストを書く場合には、
http://example.com/test/
等にクラスファイルを置くのでしょうか?

それとも、非公開領域に任意のtestディレクトリを作成して
設置するのがよいのでしょうか?
あるいは、pearディレクトリ中に置くのでしょうか?
よろしくお願いします。
98デフォルトの名無しさん:2015/01/05(月) 11:02:57.59 ID:qZMdcuuC
早く初心者を抜け出せといわれたんですけど
何が出来れば中級者なんでしょうか?
聞いても「だから初心者なんだよ」とか言われて意味がわかりません。
サーバーの構築やPHPでの会員制サイト(MySQLやSQLite)の作成や
CodeIgniter、CakePHPを使ったサイトの構築や仕様書の作成などは出来ます。
99デフォルトの名無しさん:2015/01/05(月) 11:24:01.27 ID:ghnlxDQD
>>98
こういうのを聞かずに自分で出来ること。
100デフォルトの名無しさん:2015/01/05(月) 11:27:41.86 ID:sELD1jQ+
まあ質問じゃなくて検索で済めば自力かな
101デフォルトの名無しさん:2015/01/05(月) 11:50:02.40 ID:E44mn9F+
>>98
それだけできりゃすでに中級だろ
102デフォルトの名無しさん:2015/01/05(月) 17:39:11.61 ID:9dFgiezF
ググってブログに書かれた設定の切れ端をコピーしまくるだけかも知れない
103デフォルトの名無しさん:2015/01/05(月) 20:58:34.67 ID:KQNQflUf
>>97
なにおめぇ、聞いてるふりしてテストしてんだよ
104デフォルトの名無しさん:2015/01/06(火) 06:12:46.10 ID:cQdQGJ7Z
文字列を10進数の整数として扱いたい場合、
(int)でキャストするのとintval()で変換するのとでは
どちらが高速ですか?

また、文字列が予期せぬ文字列の場合はどちらが安全でしょうか?
105デフォルトの名無しさん:2015/01/06(火) 06:40:07.35 ID:PpNfwllU
>>88
元日からおつかれさん。

その処理ならfetchAllにすればいいし、そのfor分の内容だと、$testにはkengenカラムの内容しか残らないよ。
ただまぁ、今からいろいろ勉強していくんだろうからがんばって。
106デフォルトの名無しさん:2015/01/06(火) 06:42:57.71 ID:7Rp7KoRa
PHPマニュアルの文字列
ttp://php.net/manual/ja/language.types.string.php#language.types.string.conversion

文字列の数値への変換では、
文字列の最初の部分により、値が決まります。
文字列が、有効な数値データから始まる場合、この値が使用されます。
その他の場合、 値は 0 (ゼロ) となります

$foo = 1 + "bob3"; → integer 1
$foo = "10.0 pigs " + 1; → integer 11

これを読むと、文字列から数値への変換は、かなり難しそう
107デフォルトの名無しさん:2015/01/06(火) 06:49:34.27 ID:PpNfwllU
難しいも何も、キャストすればいいだけだよ。
予期せぬ文字列の場合の安全性については、何をもって安全とするのかを定義しないと話ができない。
108デフォルトの名無しさん:2015/01/06(火) 07:53:10.97 ID:7Rp7KoRa
PHPマニュアルには、こう書いてあったから、
$foo = 1 + "-1.3e3"; → float -1299

これでも、数字と見なされるのか?
$foo = 1 + "-1.3e3 pig"; → float -1299

"-1.3e3 pig" こういう文字列は、
数字と解釈されたら、まずいのでは?
109デフォルトの名無しさん:2015/01/06(火) 08:24:58.82 ID:7Rp7KoRa
最初に文字列が整数なら、+- と数字のみで構成されているか、
チェックした方がよいかも

文字列に、数字と解釈できない文字が混じっているのを、
チェックする関数はないの?
110デフォルトの名無しさん:2015/01/06(火) 12:05:44.16 ID:LqETAgVj
ctype_digit : すべての文字が 10 進数字かどうか 、ただし整数値を渡したときの挙動がキモイ

is_numeric : 2,8,16進指数表記を含むとあるけど、 2進は通らないバグ
111デフォルトの名無しさん:2015/01/06(火) 13:55:55.44 ID:JhfgK5cE
正規表現使ったら良いと思う
112デフォルトの名無しさん:2015/01/06(火) 23:45:47.13 ID:E9dfJ9jF
>>111
PHPだとそれが鉄板だよな
113デフォルトの名無しさん:2015/01/07(水) 01:33:34.97 ID:IbCBqkxU
Pythonには、String.isdecimal(),
isdigit(),isnumeric()の3つある

ただし、Unicodeだから、全角の数字も真となる
114デフォルトの名無しさん:2015/01/07(水) 08:36:01.80 ID:9PuBqIXH
>2進は通らないバグ
先頭に0bってちゃんと入れてるの?
115デフォルトの名無しさん:2015/01/07(水) 10:43:59.47 ID:j5H0YWRt
>>114
やってみればわかるよ。
116デフォルトの名無しさん:2015/01/07(水) 11:36:54.91 ID:l7T8BUFQ
マニュアルの例がアホ過ぎるなw
117デフォルトの名無しさん:2015/01/07(水) 13:40:44.07 ID:9tNCaFPd
どちらかというとis_numericの16進文字列サポートをはずす方向らしい。
118デフォルトの名無しさん:2015/01/07(水) 14:40:40.61 ID:j5H0YWRt
対応しないなら、まずマニュアル直せって話だよな
119デフォルトの名無しさん:2015/01/07(水) 15:30:59.22 ID:9tNCaFPd
> 数値形式の文字列は以下の要素から なります。
> (オプションの)符号、任意の数の数字、(オプションの)小数部、 そして(オプションの)指数部。

基数を指定する指示子は許されていないわけだから、
そもそも16進文字列を受け入れていることがおかしいね。
2進が通らないバグではなく、16進が通るバグ。
こういう場合、8進はなんともいえないところ。

マニュアルの例に16進文字列がないのは、アホ過ぎるのではなく、そういうことなんだろう。
120デフォルトの名無しさん:2015/01/07(水) 15:39:28.20 ID:l7T8BUFQ
リテラルの数値を何通りも書くことに何の意味があるんだよ
121デフォルトの名無しさん:2015/01/07(水) 15:46:49.05 ID:j5H0YWRt
リテラルじゃなくて文字列表現の話だろ?
122デフォルトの名無しさん:2015/01/07(水) 16:14:12.14 ID:l7T8BUFQ
だからさ、マニュアルの例のほとんどが文字列になってないじゃない。
123デフォルトの名無しさん:2015/01/07(水) 16:38:34.25 ID:j5H0YWRt
二進表記の件は、
リテラルの説明であって、直前に書いてある数値形式の文字列とは関係ないよってことだよな。
124デフォルトの名無しさん:2015/01/07(水) 17:34:42.22 ID:LGPgLYfD
>>119
> 基数を指定する指示子は許されていないわけだから、
> そもそも16進文字列を受け入れていることがおかしいね。

"0x"付きの16進文字列は普通に使えるみたいだが。
$i = 1;
echo $i + "1337"; => 1338
echo $i + "0x539"; => 1338

だが、8進文字列と2進文字列は扱えないみたいだ。
echo $i + "02471"; => 2472
echo $i + "0b10100111001"; => 1
125デフォルトの名無しさん:2015/01/07(水) 17:38:51.62 ID:LGPgLYfD
てか、マニュアル見たら2進表記も通ってるじゃんか。

0b10100111001 => '1337' is numeric
126デフォルトの名無しさん:2015/01/07(水) 17:52:13.32 ID:j5H0YWRt
それ文字列じゃないんだってば
127デフォルトの名無しさん:2015/01/07(水) 17:55:21.36 ID:LGPgLYfD
ん?
>>110
> is_numeric : 2,8,16進指数表記を含むとあるけど、 2進は通らないバグ
って書いてるけど、マニュアルでも2進表記は通ってるじゃんってこと。

「2進文字列が通らないのがバグ」っていうことだったら、それはバグじゃないね。
128デフォルトの名無しさん:2015/01/07(水) 17:58:48.98 ID:9PuBqIXH
is_numericに渡せるのはmixedだったのか
なるほど
129デフォルトの名無しさん:2015/01/07(水) 18:04:48.59 ID:LGPgLYfD
ちなみにもうちょっとマニュアルを調べたら、文字列から数値への変換はstrtod()を使ってるらしい。
http://php.net/manual/ja/language.types.string.php#language.types.string.conversion
で、strtod()が"0x"付きの16進文字列をサポートしてるから、PHPでも使えると。
130デフォルトの名無しさん:2015/01/07(水) 19:43:53.93 ID:j5H0YWRt
マニュアルページは2進文字列が通るかのように読めて仕方ないけどそうじゃないからバグじゃないってことですよね。
131デフォルトの名無しさん:2015/01/08(木) 03:16:17.12 ID:7zZ3GvhP
>>130
そう。ドキュメントのバグとしてあがってる。
132デフォルトの名無しさん:2015/01/08(木) 03:16:53.96 ID:7zZ3GvhP
言い方を間違えた。最終的にドキュメントのバグということに落ち着いた。
133デフォルトの名無しさん:2015/01/08(木) 10:45:55.67 ID:UT9S8sQY
>>124
>>128
16進数に対応していて8進数には対応していないのは
PHPがCのstrtod()を使っていて、strtod()がそういう挙動だからってことか
勉強になりますわ
134デフォルトの名無しさん:2015/01/08(木) 10:46:23.29 ID:UT9S8sQY
>>128じゃなくて>>129だった
135デフォルトの名無しさん:2015/01/10(土) 11:27:04.88 ID:SgqLRCKh
>>97 についてわかる方がいましたら回答お願いします。
136デフォルトの名無しさん:2015/01/11(日) 01:44:30.10 ID:BkMuWsUG
htdocsの下じゃなきゃどこでもいいよ
>>97の例はhtdocsの下だからダメ
137デフォルトの名無しさん:2015/01/11(日) 10:35:04.35 ID:Mt8O1aM2
>>136
ありがとうございます!
htdocsより上の非公開領域に置くべきなんですね。

サイトのサブディレクトリに置くと一緒にバックアップできて
便利かなとも思いましたがそうではないのですね。
間違えるところでした。
138デフォルトの名無しさん:2015/01/11(日) 18:44:23.86 ID:xhQD8tHl
ファイルをダウンロードさせるスクリプトを書いてるんだけど
flush()とかob_flush()を使わないとどうなるの?
139デフォルトの名無しさん:2015/01/11(日) 20:49:34.10 ID:Ty6hZpJ5
>>137
一緒にバックアップできてかつ非公開であるようなディレクトリに配置すればいいじゃない。
たとえばこう。
project/
test/
conf/
public/ ←ここをdocrootにする
140デフォルトの名無しさん:2015/01/11(日) 20:50:04.75 ID:Ty6hZpJ5
インデント消えて恥ずかしい
141デフォルトの名無しさん:2015/01/11(日) 23:05:38.51 ID:wMEKGL8S
>>139
なるほど!
そのディレクトリ構成を参考にテストを試してみます。
ありがとうございました。
142デフォルトの名無しさん:2015/01/12(月) 00:52:04.22 ID:LRuE9Kur
今フレームワーク勉強してるんだけど
理解できない箇所があるから分かりやすく教えて
http://phpbook.e1blue.net/perfect/index7_Router.html
パ=フェクトPHPって参考書に載ってるソースコード
143デフォルトの名無しさん:2015/01/12(月) 10:18:39.08 ID:kNwzldD6
箇所ってどこ?
ソース無いじゃん
フレームワークごと覚えるしか無いでしょ
144デフォルトの名無しさん:2015/01/12(月) 16:21:48.89 ID:nuR9LKkd
xampp環境で外部PHPをexec()で実行したいのですが、動作しません
実行コマンドをコマンドプロンプトから直接叩くと動作しました
環境変数にPHPのパスは通しています
実行コマンドは↓です

exec( escapeshellcmd('php -q /path/public/index.php aaa bbb') );

pathとaaaとbbbは実際には異なる値です
どうしたら良いですか?
145デフォルトの名無しさん:2015/01/12(月) 16:40:18.19 ID:kNwzldD6
>>144
実行してるけど結果が見えないだけじゃね?
execの戻り値 echo してみて
146デフォルトの名無しさん:2015/01/12(月) 16:48:36.50 ID:nuR9LKkd
>>145
結果は何も出力されませんでした・・・。

実行が成功すると、CLIからの場合にログをとるようにしてるのですが、
そのログがとれてないのでexec()からindex.phpが動作してないように思えます。(コマンドプロンプトからだとログがとれている)

何か間違っているのでしょうか?
147デフォルトの名無しさん:2015/01/12(月) 18:57:55.56 ID:kNwzldD6
コマンドの最後に、 2>&1 つけたら何か変わる?
148144:2015/01/13(火) 00:13:20.45 ID:P334RWtp
144です
2chがダウンしてたようで返事できませんでした

>>147
あれから色々と以降錯誤した結果、
exec()ではなく↓のproc_open()で代用することが出来ました

proc_close(proc_open($cmd, $descriptorspec, $pipes, $cwd));

解答頂きありがとうございましたm(_ _)m
149デフォルトの名無しさん:2015/01/13(火) 08:22:27.18 ID:3BF1nqyk
>>2
あんな過疎板誰も行かないよ
150デフォルトの名無しさん:2015/01/14(水) 00:36:14.01 ID:QB8DK3Xn
>>144
php.iniで禁止してるというオチでは・・・
151デフォルトの名無しさん:2015/01/19(月) 11:05:26.48 ID:zLsmLsTD
PHP4からPHP5への過程で、コンストラクタが変更になった理由をお教えください。

PHP4だとJavaと同様にクラスの名前と同じ関数がコンストラクタになります。
PHP5からは、__construct()に変更されています。
これは、何か他の言語に影響されたとか、単に可読性の向上のためなのでしょうか?
152デフォルトの名無しさん:2015/01/19(月) 11:11:06.18 ID:LEYxxRT/
interfaceとか
153デフォルトの名無しさん:2015/01/19(月) 22:27:29.79 ID:XEb661i4
2015/02/02
⇒OK

cakePHPの正規表現でこの日付型文字列の入力のみOKとするには
どういうコードを書けば良いでしょうか?


2015/2/2
⇒NG

スレ違いで誘導されたのでこのスレで質問し直させて頂きます。
154デフォルトの名無しさん:2015/01/20(火) 00:36:36.39 ID:b0ejj+pJ
>>153
それは正規表現スレで聞くべきじゃないかな?

ただ、"0123/45/67"みたいなありえない日付の考慮や、うるう年とかもあるから
正規表現だけでは正確な検証は難しいと思う。checkdate()とか使って検証するといいよ
155デフォルトの名無しさん:2015/01/20(火) 00:38:27.85 ID:TFaESJ8a
>>154
ありがとうございます。
ベタですがあらゆるパターンを if で作りました。
やっぱり正規表現は万能では無いのですね。
156デフォルトの名無しさん:2015/01/20(火) 00:41:45.83 ID:b0ejj+pJ
>>155
そういうコードはやめておこう
簡易な正規表現でよければ '/[1-9][0-9]{3}\/[01][0-9]\/[0-3][0-9]/' でチェックできると思う(動作未確認)
ただ、さっきも言ったように正確な日付までは検証できないから別途検証処理を設けた方がいいよ
157デフォルトの名無しさん:2015/01/20(火) 00:45:38.27 ID:b0ejj+pJ
あ、先頭の^と末尾の$付け忘れた(けど、わかってくれると思う)
158デフォルトの名無しさん:2015/01/20(火) 04:47:03.26 ID:37je+qde
>>151
経緯はわかんないけど、親クラスのコンストラクタを明示的に記述しないと呼ばないPHPにとっては今のほうが楽だと思う
159デフォルトの名無しさん:2015/01/20(火) 18:59:33.55 ID:WGSJjkIS
変更っていうかそういう書き方も加わっただけなんだけどな
クラス名と同じの使いたきゃPHP5でも使えばいいんだぜ
160デフォルトの名無しさん:2015/01/20(火) 20:32:10.47 ID:RVmU1w+u
>>158
なるほど。
そのようなメリットがあるなら改良されて使いやすくなったんですね。

>>159
そういう考え方もあるのですね。好きな方を選択できる余地があると。
ある意味、便利といえば便利なのかも。

ご回答ありがとうございました。
161デフォルトの名無しさん:2015/01/20(火) 21:56:17.79 ID:m5nn7AIj
数字とピリオドのみOKとする正規表現を教えてください。

35.6 ⇒ OK


35aaa ⇒ NG
162デフォルトの名無しさん:2015/01/21(水) 00:02:46.77 ID:Z9HAEnNm
>>160
Javaでeclipseとかならクラス名変えたらコンストラクタ名も変えてくれるけど
PHPは2箇所変えなくちゃいけなくなるからね
コンストラクタ名はクラス名に依存してないほうがいい
163デフォルトの名無しさん:2015/01/21(水) 00:57:14.15 ID:KTQvxZK8
>>161
>数字とピリオドのみOKとする正規表現

/^[0-9\.]+$/

数字とピリオドだけで作られた文字列ならOKだが、ピリオドだけでもOKになる、それでもいいのか?
164デフォルトの名無しさん:2015/01/21(水) 03:04:39.32 ID:NmlppDOf
>>162
> Javaでeclipseとかならクラス名変えたらコンストラクタ名も変えてくれるけど
> PHPは2箇所変えなくちゃいけなくなるからね
IDEを持ち出すならPHPも1箇所でいいんだけど。

> コンストラクタ名はクラス名に依存してないほうがいい
Javaも多重継承ないんだからクラス名 = コンストラクタ名ってルールなくしてもよかったように思う
165デフォルトの名無しさん:2015/01/21(水) 12:25:07.68 ID:u8urlngR
>>163
サンキュー


数字が入っていなければNG
という判定処理も力付くで入れます。
166デフォルトの名無しさん:2015/01/21(水) 20:17:15.97 ID:KTQvxZK8
>>165
その辺の細かい仕様を最初から書いて欲しいんだよね
そうすれば正規表現一発で解決も出来ると思う
167デフォルトの名無しさん:2015/01/21(水) 20:58:50.40 ID:NmlppDOf
正の小数もしくは整数にマッチさせたいのかなと思わんでもないけど、詳細がわからんからね。
168デフォルトの名無しさん:2015/01/22(木) 00:22:00.66 ID:ILDcB4ZR
>>164
いやぁ、ぎゃくにコンストラクタ名=クラス名じゃだめな理由がわからん
169デフォルトの名無しさん:2015/01/22(木) 16:14:40.25 ID:OOXpmQrC
PHPはその歴史的理由から4→5のオブジェクト指向言語に生まれ変わる際に
コンストラクタを__constructで統一したんだよ
Javaでいうsuper()が存在しないから、子から親のコンストラクタを呼び出す際には親クラスを指定しないといけなかったわけ
170デフォルトの名無しさん:2015/01/22(木) 17:00:37.38 ID:4J0y7c4J
>>168
クラス名を記述する回数は少なければ少ないほどいいから。
171デフォルトの名無しさん:2015/01/23(金) 00:05:40.86 ID:RzdPlRZs
コンストラクタを強制するインターフェースじゃねーの
172デフォルトの名無しさん:2015/01/24(土) 17:03:34.73 ID:W3y8Uzfq
>>168
ファイル名、クラス名、コンストラクタ名の
三箇所も修正することを許容できるやつは
普段から同一ロジックのコピペとかやってそう
173デフォルトの名無しさん:2015/01/24(土) 19:21:07.81 ID:9VP09wad
ご教授ください!!!!!!
http://viper.2ch.net/test/read.cgi/news4vip/1422094784/l50
174デフォルトの名無しさん:2015/01/24(土) 19:28:04.65 ID:9VP09wad
>>173
答えなくてよいですお、失礼
175デフォルトの名無しさん:2015/01/25(日) 00:18:02.84 ID:bEvqkUb8
2chにレスするヒマはあるけど教授するほどヒマじゃない
176デフォルトの名無しさん:2015/01/25(日) 10:36:14.72 ID:HdNUsAFb
>>172
IDEにリファクタリングが無ければ諦める、かなw
177デフォルトの名無しさん:2015/01/25(日) 23:32:57.88 ID:4pKlUm4L
<?= $_POST["text"] ?>
みたいに<?= ?>で囲まれてるのはどういう意味ですか?
なんで=がつくんですか?
178デフォルトの名無しさん:2015/01/26(月) 00:09:14.76 ID:3JOZ16Kc
ほかの言語との兼ね合いで。
179デフォルトの名無しさん:2015/01/26(月) 00:59:23.56 ID:7cV7B6pi
<?= は <?php echo と同じ
180デフォルトの名無しさん:2015/01/26(月) 01:04:23.65 ID:szxGHRn9
>>177
ショート・オープン・タグ

意味的には
<?php echo $_POST["text"] ?>
とするのと同じ

JSPでも似た構文(<%= var %>)有り

環境によっては使えない場合も(php.iniが変更できないとか)
181デフォルトの名無しさん:2015/01/26(月) 11:51:21.98 ID:WkguQBS6
cakePHP Frameworkスレで質問したのですが
分かる人がいないのでこちらで質問させてください。



以下のページを参考に画像のアップロード機能を試しています。
なぜかファイルをアップロードしようとすると「save」ファンクション
が認識されずにエラーになってしまいます。

http://www.tailtension.com/cakephp/1512/

【エラーの出るコントローラの中のコード】
//画像の保存
if($this->Post->save($this->request->data))
⇒ここでエラー

【エラー内容】
Fatal error: Call to a member function save() on a non-object in

【捕捉】
コントローラ名は、 TestController.phpで
定義したアクション名は、 update_image です。
182デフォルトの名無しさん:2015/01/26(月) 14:05:05.07 ID:3JOZ16Kc
質問がおかしい。
saveが認識されないのではなくPostが意図したオブジェクトになっていないのが正しいだろう
183DAEMON:2015/01/26(月) 15:13:15.51 ID:itBI5fDM
>>182
 シ
タッ・・(Φ Φ+)・・・ 何方にレスを 話の経緯が読めません
184デフォルトの名無しさん:2015/01/26(月) 15:44:15.65 ID:o6RBMBnt
$this と $this->Post が有効かチェックしてみて
185デフォルトの名無しさん:2015/01/26(月) 18:21:09.89 ID:PwPotq60
過疎スレで1時間で返答つかなかったからマルチとかたちわるいな
186デフォルトの名無しさん:2015/01/26(月) 20:31:09.60 ID:uo2jLmf1
はじめまして(><)
187デフォルトの名無しさん:2015/01/26(月) 20:33:02.66 ID:uo2jLmf1
>>186です…

php で replace で 「 0 」 を 置換したいのですが、
「100」 や「 10 」の「 0 」は置換したくありません!

何か設定の方法はありますか?(><)
188デフォルトの名無しさん:2015/01/26(月) 20:34:55.49 ID:uo2jLmf1
ついでと言っちゃなんですが、もう一つ質問です!

正規表現の、例えば 「\r\n」 を<br>に置換したいときはどう書けばよいでしょうか?
どなたかご教示くださいm( -ω-)m
189デフォルトの名無しさん:2015/01/26(月) 20:58:23.24 ID:AiXGLgGn
>>187
置換したくない"0"を、何か別の文字列に置き換えておく。
"0"を希望する文字に置換する。
別の文字列に置き換えていたものを、元の"0"に戻す。
190デフォルトの名無しさん:2015/01/26(月) 22:17:47.55 ID:7cV7B6pi
>>187
[^0-9]?0

>>188
nl2br
191デフォルトの名無しさん:2015/01/27(火) 00:34:06.23 ID:YQSfawfj
エスケープ処理は基本中の基本やな
192デフォルトの名無しさん:2015/01/27(火) 02:12:11.07 ID:0NKY9Qid
>>182 184

cakeの機能を使わずに普通に実装しました。
下手にFWの機能を使うよりも普通に実装した方が楽な場合も結構ありますね。
193デフォルトの名無しさん:2015/01/27(火) 03:14:04.78 ID:OmEcIi+U
>>192
FWが何をしているのかを知らないからそうなるんじゃないかな。
スーパーグローバルを直接触らない代わりにどんなメリットが生まれているのか考えてみたらいいよ
194デフォルトの名無しさん:2015/01/27(火) 11:36:19.91 ID:bJwjBTio
>>189
ありがとうございます!!
やはり「 0 」にこだわらない方が効率が良いですよね…

>>190
ありがとうございます!
早速試してみます!
195デフォルトの名無しさん:2015/01/27(火) 11:49:52.97 ID:bJwjBTio
>>191
ありがとうございます!
エスケープ処理…調べてみます!
196質問者:2015/01/28(水) 21:56:45.14 ID:TOZ4mW8s
コンニチハ、
海外のウェブプロキシーリストを作り
そのプロキシをランダムに取得しランダムで特定のサイトにアクセスするいわゆる多段串のようなものを実現させたいのですが
スクリプトの構造的にどのようになるのでしょうか?
197デフォルトの名無しさん:2015/01/28(水) 22:33:03.27 ID:XWi4rAA/
>>196
カスケード接続する
ただ、公開プロキシで多段に対応してるのは希少
目的が何かわからんけど、このレベルの質問するなら諦めろとアドバイスする
198デフォルトの名無しさん:2015/01/30(金) 00:47:53.14 ID:UnBDdYg/
php5.5、5.6はXPでは動かないですよね?
XPで動くようソースからビルドしようとしてるけど既製らビルド品ありますか?
199デフォルトの名無しさん:2015/01/30(金) 00:54:24.97 ID:wLjy5NT6
動かないんですか?
200デフォルトの名無しさん:2015/01/30(金) 00:56:29.14 ID:UnBDdYg/
最近のは知らないけど。PHP5.5以降からはWindows XPには無い命令が使われて動作しないはず。
最新バイナリは試していない。
201デフォルトの名無しさん:2015/01/30(金) 08:25:56.42 ID:0YV6xwSy
>>2
あんな過疎板、もう潰していいだろ。
202デフォルトの名無しさん:2015/01/30(金) 09:38:16.12 ID:mecaVc4e
それはお前の意志で決めることじゃないからな
こっちのスレじゃCLIとかHiphopとかexe compilerの話しとけよ
203デフォルトの名無しさん:2015/01/30(金) 10:43:34.70 ID:xRghob4k
それもお前が決めることじゃないな
204デフォルトの名無しさん:2015/01/30(金) 16:06:33.86 ID:KUR67ecF
eclipseでソースコードを編集しているのですが
段々とコード行数が増えてきて、編集中にもたつきを感じる様になりました。


皆さんはこういう場合、どうしていますか?
205デフォルトの名無しさん:2015/01/30(金) 19:09:17.12 ID:oM+5m4nl
CPUいいのに変えてメモリ増やしてSSD導入する
206デフォルトの名無しさん:2015/01/30(金) 19:15:09.94 ID:J1GZQJkp
コード支援を全部切る?・・・じゃあIDE使う意味ないねw

リファクタリングで抜き出せる部分を別ファイル化?
207デフォルトの名無しさん:2015/01/30(金) 19:18:02.28 ID:BNtp6MqM
一ファイルにむやみにたくさん書き込んでいると見た
208デフォルトの名無しさん:2015/01/30(金) 19:39:56.60 ID:UnBDdYg/
eclipse自体を使わない。
209デフォルトの名無しさん:2015/01/30(金) 20:50:37.25 ID:Y/JFK4Bk
ソフトを起動した時に本来のウィンドウとは別の「なんか今頑張って起動してます」
みたいな表示がでる奴があるじゃないですか。
ああゆうのを作ってみたいんですけど、どんな単語でググればいいんでしょうか?
210デフォルトの名無しさん:2015/01/30(金) 21:08:26.43 ID:J1GZQJkp
スプラッシュスクリーン・・・だけどPHPで?
211デフォルトの名無しさん:2015/01/30(金) 21:16:16.54 ID:Y/JFK4Bk
えっ?PHP…あわわっ只の「くだ質スレ」だと思ってしまいました…ごめんななさい。
それはそうと、ありがとうです>>210
スプラッシュスクリーン、そんな洒落た名前だったんですね。
212デフォルトの名無しさん:2015/01/31(土) 06:31:07.76 ID:9DGlLiRv
>>211は悪くないな
PHPとか糞迷惑なやつらはwebprogへ帰れよ
213デフォルトの名無しさん:2015/01/31(土) 11:14:53.16 ID:uquIaUji
流れ見ないでレスするとこうなる
214デフォルトの名無しさん:2015/01/31(土) 13:03:31.32 ID:BgOpeydW
脳内流れ
215デフォルトの名無しさん:2015/02/01(日) 13:37:48.18 ID:QwbaGHVn
中々見れないんだよな数レス前って
216デフォルトの名無しさん:2015/02/05(木) 12:25:01.79 ID:XfrlZxHD
C言語のmain関数やJavaのmainメソッドのようにプログラムの
自動起点とすることができる関数や方法はPHPにありますか?
あったらその関数や方法を教えて欲しいです。

あるクラスを読み込んだだけで実行できるようにしたいです。
217デフォルトの名無しさん:2015/02/05(木) 12:36:11.52 ID:3aF8D9zw
ない
強いて言うならコンストラクタ
218デフォルトの名無しさん:2015/02/05(木) 14:26:54.20 ID:M8LYrI6I
>>217
ありがとうございます。
やはり、newをして実行しないとダメみたいですね。
マジックメソッドに、__main()とか作ってくれればいいのに。
219デフォルトの名無しさん:2015/02/05(木) 14:53:09.72 ID:Ymh9V5e3
https://php.net/manual/ja/function.main.php
むしろ無くなってるなw
220デフォルトの名無しさん:2015/02/05(木) 15:03:31.89 ID:FwB33VpM
<?php
function main() {
echo "hogehoge.";
}
main();
?>
221デフォルトの名無しさん:2015/02/05(木) 15:28:49.57 ID:/Y0+zaOS
>>216
> あるクラスを読み込んだだけで実行できるようにしたいです。
これを解決したいだけなら、クラスファイルの中に希望する処理を書けばよい
222デフォルトの名無しさん:2015/02/05(木) 15:33:55.77 ID:TvPdQkb9
>>220
> ?>
これ書く奴いなくならないね。
223デフォルトの名無しさん:2015/02/05(木) 17:39:30.82 ID:pZV1a1/q
そりゃこのスレだと下にもレスが続くからなw
224デフォルトの名無しさん:2015/02/05(木) 18:05:27.58 ID:iBBDga7j
HTMLを含まない純粋なPHPプログラムだけのPHPファイルは?>書かない方がいい
225デフォルトの名無しさん:2015/02/07(土) 11:38:02.47 ID:quWAAr+b
いやいや、?>くらいかけよ
226デフォルトの名無しさん:2015/02/07(土) 11:40:33.81 ID:quWAAr+b
これしか見てない奴が多い
http://php.net/manual/ja/language.basic-syntax.phptags.php
227デフォルトの名無しさん:2015/02/07(土) 11:57:20.13 ID:VUqqkf5v
BOMつけなきゃバグらんだろ
228デフォルトの名無しさん:2015/02/07(土) 12:54:39.70 ID:cqUnuN7x
で、 ?>のあとに無駄な空白が入ってるせいで
それincludeしてるプログラムで header関数使うと
headers already sent
229デフォルトの名無しさん:2015/02/07(土) 13:25:44.53 ID:o1zugbsU
>ファイル全体が純粋な PHP コードである場合は、ファイルの最後の終了タグは省略するのがおすすめです。
>終了タグの後に余分な空白や改行があると、予期せぬ挙動を引き起こす場合があるからです。
>余分な空白や改行のせいで PHP が出力バッファリングを開始し、その時点の内容を意図せず出力してしまうことになります。

公式だって推奨してるし、ZendFWだって書いてない
なのに反発してる奴って・・・
230デフォルトの名無しさん:2015/02/07(土) 13:26:44.55 ID:quWAAr+b
>終了タグの後に余分な空白や改行があると
231デフォルトの名無しさん:2015/02/07(土) 13:52:53.88 ID:zjjMk7yP
お前は一体何が言いたいんだ
232デフォルトの名無しさん:2015/02/07(土) 14:10:24.15 ID:quWAAr+b
盲目的に終了タグ書くなってのはちげーだろってこと
233デフォルトの名無しさん:2015/02/07(土) 14:17:10.01 ID:zjjMk7yP
プログラマーなんてものは最善な方法だけ知っておけばよい
234デフォルトの名無しさん:2015/02/07(土) 14:38:03.21 ID:jC1YUVep
お勧めってだけで、書くなとは言ってないな
235デフォルトの名無しさん:2015/02/07(土) 16:47:49.30 ID:Q6/IgrSt
で、なんで終了タグ書きたいの?
>>229の理由よりもまともな理由あるの?
236デフォルトの名無しさん:2015/02/07(土) 17:47:25.34 ID:cSsypbTd
あー>>220 書いたの俺だわ、なんかスマンなw

括弧とか閉じまで先に書くクセがあるんだわw
237デフォルトの名無しさん:2015/02/07(土) 18:08:48.64 ID:JB9TvdV/
>>236
お前だったのか(驚愕)
238デフォルトの名無しさん:2015/02/07(土) 18:30:12.58 ID:cSsypbTd
何い、知っておるのか雷電?
239デフォルトの名無しさん:2015/02/07(土) 18:46:39.71 ID:o1zugbsU
>>232
>ファイル全体が純粋な PHP コードである場合
この状況で終了タグを書く必要性は皆無
よって、盲目的になっても別に良い
反論するなら終了タグが必要な理由を述べて。
240デフォルトの名無しさん:2015/02/07(土) 19:08:03.64 ID:wtoMRbFn
>>232
一番荒れる原因になるのは終了タグ直後のひとつの改行を許すかどうかであるべきだと思ってるんだが、
ここではその話になってないのが実に残念だ。

結局はこういうやり取りがめんどくさくてしょうがないから、各所の規約で書くなと決めてしまっているのが今の状態。
書きたくてしょうがないやつはいないから、いろいろあるなかで一番ましなまとめ方なんよ。
241デフォルトの名無しさん:2015/02/07(土) 19:09:59.07 ID:uAJZ2/Wn
お勧めってだけで、書くなとは言ってないな
242デフォルトの名無しさん:2015/02/07(土) 20:36:17.06 ID:XHUlJuFO
終了タグ ?>
これを書かない場合、ファイルの最終行に、終りを示すコメントとか入れてる?
たとえば、
//EOF
とか。それとも何も書かずに終了する?
243デフォルトの名無しさん:2015/02/07(土) 20:44:00.50 ID:zjjMk7yP
そんな無意味なコメント入れない
244デフォルトの名無しさん:2015/02/07(土) 21:05:56.68 ID:XHUlJuFO
>>243
そうなのか。ありがとう。
245デフォルトの名無しさん:2015/02/07(土) 21:12:28.68 ID:3d6Dulsa
というか、終了タグの後ろに空白や改行が入ったくらいでどうにかなっちゃうPHPをどうにかしたほうがいいんじゃないか?
246デフォルトの名無しさん:2015/02/07(土) 21:24:32.47 ID:uAJZ2/Wn
プログラムは、
意図したとおりに動くんじゃなく、
書いたとおりに動くということで
ご了承ください
247デフォルトの名無しさん:2015/02/07(土) 21:43:09.99 ID:3d6Dulsa
終了タグの後ろに空白入ると出力バッファリングを開始しておもらししちゃうPHP
248デフォルトの名無しさん:2015/02/07(土) 21:43:37.43 ID:wtoMRbFn
>>245
それは的外れだよ。
.phpm みたいな拡張子を用意すべきだったという考えならそれもありかなとは思うけど。
249デフォルトの名無しさん:2015/02/07(土) 21:45:31.92 ID:3d6Dulsa
echoしてないものを出力しちゃうなんて欠陥以外の何物でもなくね?
250デフォルトの名無しさん:2015/02/07(土) 21:46:33.20 ID:wtoMRbFn
HTML文書の中にコードを埋めることができるというのが元の発想だから。
コード以外のものは出力するというのが根本。
251デフォルトの名無しさん:2015/02/07(土) 21:53:53.78 ID:3d6Dulsa
いやそれはわかるが、だったら、空白か改行コードだけブラウザに送れよって思うわ
ブラウザがただの空白、改行に反応すんのが悪い
252デフォルトの名無しさん:2015/02/07(土) 21:56:15.53 ID:wtoMRbFn
空白か改行コードをブラウザに送るためにはレスポンスを開始しないといけないわけだが
253デフォルトの名無しさん:2015/02/07(土) 22:01:21.81 ID:3d6Dulsa
すまん、言ってる意味がよくわからん
254デフォルトの名無しさん:2015/02/07(土) 22:26:51.14 ID:UqSx8T+0
PHPはあくまでテンプレート言語であって、サーバーに寄生してフィルタ的に使われるようになったのは、完全に2次的な話。
だから、レスポンスがどうのこうのは的外れ。
255デフォルトの名無しさん:2015/02/07(土) 22:29:36.38 ID:zjjMk7yP
この一言で片付けられる
「仕様です」
256デフォルトの名無しさん:2015/02/07(土) 22:33:10.00 ID:JB9TvdV/
>>250
ブラウザに送っているから問題なんだわ。
ここに例が詳しく書いている。
http://d.hatena.ne.jp/fbis/20090716/1247714151
257デフォルトの名無しさん:2015/02/07(土) 22:33:44.93 ID:JB9TvdV/
>>251の間違い
258デフォルトの名無しさん:2015/02/07(土) 22:38:00.19 ID:wtoMRbFn
>>253
HTTPのいろはから勉強したほうがいいと思うの。
259デフォルトの名無しさん:2015/02/07(土) 22:55:10.31 ID:y/AEt64y
これは何しているところですか?
http://i.imgur.com/8FRiTmg.jpg
260デフォルトの名無しさん:2015/02/07(土) 23:18:40.96 ID:ch9ozq+p
>>259
グロ
261デフォルトの名無しさん:2015/02/08(日) 06:59:25.15 ID:LYmBvKCw
>>256
そこのページも改行コードが「表示される」とか書いてあるけど
いやいやって感じだな
<br> または <br />って書いてるならまだしも
262デフォルトの名無しさん:2015/02/08(日) 07:23:09.53 ID:oFLWAs+T
>>258
改行コードをブラウザが読み込んだら表示も改行されるの?
おめでたいやつだな
いろはを学んだ方がいいのはお前だろw
263デフォルトの名無しさん:2015/02/08(日) 08:01:00.06 ID:aMsy6Zj7
PHPって<?php?>の外でもファイルの先頭に#って書けないよな?w
264デフォルトの名無しさん:2015/02/08(日) 10:17:23.17 ID:rmuNBtf+
#!/usr/local/bin/php
<?php

とか普通にやりますが何か?
265デフォルトの名無しさん:2015/02/08(日) 10:58:00.60 ID:aMsy6Zj7
>>264
それのために書けないよなw
266デフォルトの名無しさん:2015/02/08(日) 11:32:10.62 ID:p7WE/J50
まあ、こんなに仕様が変わっていった言語もそうないだろ
267デフォルトの名無しさん:2015/02/08(日) 11:44:17.86 ID:e4rj0+Rn
使っているユーザーが多くて、改善要望が多いせいじゃないか?
268デフォルトの名無しさん:2015/02/08(日) 12:06:24.14 ID:/NbqY0E2
>>265
実行権限与えれば動作するが、何が言いたいんだ?
269デフォルトの名無しさん:2015/02/08(日) 12:49:40.73 ID:kikHBD4l
民主党のマニフェスト並みに何でも取り込むからだよ
270デフォルトの名無しさん:2015/02/08(日) 16:08:14.61 ID:57iH9vTa
>>262
HTTPとHTMLの違いを理解したほうがいいと思うの
271デフォルトの名無しさん:2015/02/08(日) 16:13:14.42 ID:57iH9vTa
>>265
はいどうぞ。
http://php.net/manual/ja/features.commandline.usage.php

ちなみに、"それ"とか"ファイルの先頭に#"って書いてるそれはシェバング行と言ったりするよ。
272デフォルトの名無しさん:2015/02/08(日) 16:22:42.72 ID:LYmBvKCw
>>270
( ゚Д゚)ハァ?
273デフォルトの名無しさん:2015/02/08(日) 16:26:01.50 ID:57iH9vTa
>>272
話の流れ的にはそうだろう。
ID:3d6Dulsa の件。
274デフォルトの名無しさん:2015/02/08(日) 19:31:58.60 ID:lw0YQSqg
211 名前:nobodyさん[sage] 投稿日:2015/02/08(日) 19:24:47.78 ID:???
>>204
お前何も知らないだろ

PHPが使われなくなったのはレン鯖からPHP外す流れになったのが原因だよ

213 名前:nobodyさん[sage] 投稿日:2015/02/08(日) 19:29:10.81 ID:???
>>211
逆。
PHPが使われなくなったから外す流れになった。



続きはこっちでどうぞ^^;
275デフォルトの名無しさん:2015/02/09(月) 10:37:57.11 ID:AuqukOe+
データをDBへ登録して、それを表示するページを作っています。
表示するページのURLについて質問ですが、
現在は一意IDとしてDBのAUTOINCREMENTで割り振られた連番を利用しています。

/index.php?page=123
           ~~~~

連番なので、直接URLに数値を打ち込めば総数がバレてしまいますし、
ツールやスクリプトなどによる連続アクセスも容易になってしまいます。

これを防ぐために、YouTubeやAmazonのようなIDにしたいと考えています(例は一部○で伏せています)

/product/B00S6C3○○W/  //Amazon
      ~~~~~~~~~~~~~~~
/watch?v=CHVq1xQ○○nM  //YouTube
       ~~~~~~~~~~~~~~~~~~

このようなIDを生成するにはどうしたらよいでしょうか?
276275:2015/02/09(月) 10:42:11.97 ID:AuqukOe+
補足です。
IDは一意なもので、可能な限り短く、
長さは可変(データ量が振れば文字の桁数が増えていく)を考えています。
277デフォルトの名無しさん:2015/02/09(月) 10:56:02.80 ID:p6Gav+v7
PHP 62進数で検索
278デフォルトの名無しさん:2015/02/09(月) 10:57:05.37 ID:AuqukOe+
>>277
62進数も結局は連番なので、考えているものと違います
279デフォルトの名無しさん:2015/02/09(月) 11:05:04.60 ID:p6Gav+v7
数値なんだから、一回適当な数足すとか引くとか
生成した文字列を規定の方法でシャッフルするとか
ご自分の考えているものでどーぞ
280デフォルトの名無しさん:2015/02/09(月) 11:14:46.67 ID:AuqukOe+
>>279
なるほど、最初に手を加えてから進数変換するわけですね
一先ずそれで試してみようと思います、ありがとうございます。


それと、他の手法も知っておきたいので、
もし他のやり方をご存知の方いらっしゃれば教えてください。
281デフォルトの名無しさん:2015/02/09(月) 11:43:51.56 ID:kQFsD0xw
Ohgakiとかいうおっさん、どうにかならんの?
282デフォルトの名無しさん:2015/02/09(月) 11:46:45.73 ID:/goebppZ
>>280
MD5でいいじゃん
283デフォルトの名無しさん:2015/02/09(月) 11:52:45.89 ID:AuqukOe+
>>282
MD5ではURLに対しては文字数が長すぎます
284デフォルトの名無しさん:2015/02/09(月) 12:17:07.31 ID:/goebppZ
そんな長くもないけどな、でもうちで使ってるのはパスブックのauthコードか、、
あと事前にランダム文字列をテーブルに入れといてidと変換して使ってるけどね
これはURLじゃないけどお客様予約コードとして
285デフォルトの名無しさん:2015/02/09(月) 12:28:44.69 ID:iwYt+9F+
trすれば?w
286デフォルトの名無しさん:2015/02/09(月) 12:29:36.99 ID:AuqukOe+
>>284
>事前にランダム文字列をテーブルに入れといて
これはどのように生成していますか?
生成したら毎回一意かどうかDBを確認してるんでしょうか?
287デフォルトの名無しさん:2015/02/09(月) 12:36:03.28 ID:/goebppZ
一意かどうかはDBにユニーク属性つけときゃかぶらないでしょ
どうやって生成したか忘れた、、10年近く前だったしな、
必要なときに都度作ってかぶったら作り直し、でもいいと思うけどな

ちょっとググったら
http://www.japan9.com/cgi/rand_num.cgi
こんなのあった。
まあライブラリとかでもなんとかなるような
288デフォルトの名無しさん:2015/02/09(月) 12:46:00.61 ID:AuqukOe+
>>287
DBにデータを作成する際に衝突したらもう一度繰り返すんですか?
生成方法にもよりますけど、理論的には無限ループにもなりますよね?(事実上有り得ないけど)
具体的な生成方法を教えて頂けると嬉しいです。

URL先はこれから拝見します。
289デフォルトの名無しさん:2015/02/09(月) 12:52:26.54 ID:AuqukOe+
URL先拝見しました。
見たところ単にランダムなだけであって一意性が保証されてないように見えます。
また、ダウンロードやソースや利用規約なども明記されてないので使いようがないように思えます(探し方がわるく見つけ切れなかっただけならごめんなさい)
290デフォルトの名無しさん:2015/02/09(月) 12:53:10.46 ID:r3iadyqd
>>288
ハッシュ関数で検索する。
桁数が短い場合は重複する値が発生する確率が高まるよ。
291デフォルトの名無しさん:2015/02/09(月) 13:01:09.59 ID:AuqukOe+
>>290
ハッシュ関数は知っています。
ただ、参考にしたいYouTubeやAmazonのIDはハッシュには見えませんが、どうやればいいでしょうか?
292デフォルトの名無しさん:2015/02/09(月) 13:01:36.67 ID:r3iadyqd
>>291
ハッシュに見えないですか。ハッシュですよ。
293デフォルトの名無しさん:2015/02/09(月) 13:03:52.87 ID:r3iadyqd
別案としては、乱数生成して文字列化でもいいと思うよ。
ハッシュアルゴリズムを使用するよりも重複する確率は高くなるので、重複チェック怠らずに。
294デフォルトの名無しさん:2015/02/09(月) 13:04:08.95 ID:AuqukOe+
>>292
数値ではないので厳密な意味でのハッシュ関数ではありませんね。
でもこれは本題ではないのでいいです。
YouTubeやAmazonのように短いIDの生成方法を教えてください。
295デフォルトの名無しさん:2015/02/09(月) 13:06:59.50 ID:AuqukOe+
>>293
膨大なデータが既にある状態だと、何度も何度も重複してやり直す必要が出てくるのって
凄くパフォーマンスが悪い気がしますが、改善策はないのでしょうか?
296デフォルトの名無しさん:2015/02/09(月) 13:27:44.86 ID:r3iadyqd
>>295
データ登録時のコストとデータ参照時のコストは分けて考えるべきだけど、
初期データ登録以外でも前者が多いの?
297デフォルトの名無しさん:2015/02/09(月) 13:37:51.46 ID:AuqukOe+
>>296
最初はデータは少ないです。
ただ、運用していくにあたってデータ量はかなりのものになると予想してます。
298デフォルトの名無しさん:2015/02/09(月) 13:42:17.24 ID:/goebppZ
リンク先でも同じようにやってるけど、ユーザーが誤認しやすい文字をあらかじめ省く、とかもやってんだよね
実行時生成で無限ループが怖かったら先に全部作っときゃいいじゃん、目の前で実行してんだから
ループしたら止めてやり直しゃいいだろう。10年分も作っときゃいい
299デフォルトの名無しさん:2015/02/09(月) 13:51:36.63 ID:AuqukOe+
>>298
無限ループって言葉は悪かったかもしれません。(そもそも、そんな実装をする場合は無限ループしないようになんらかの処理を加えるので)
要は、何度も生成を繰り返す(一定条件で失敗と見なす)やり方はUXにも影響が出てしまいますし、
もっとスマートに出来る手法があるのかを知りたいです。

>先に全部作っときゃいいじゃん
このやり方は一理ありますが、凄く無駄のようにも思えます。
こういうやり方が主流なんでしょうか?
300デフォルトの名無しさん:2015/02/09(月) 15:15:32.48 ID:8DtgTl9e
phpをテンプレートとして使って
モデルとコントローラは別言語で書きたい
301デフォルトの名無しさん:2015/02/09(月) 16:01:53.96 ID:4CCXLzuG
>>299
そのIDってDB上で何桁なの?
302デフォルトの名無しさん:2015/02/09(月) 16:22:57.25 ID:kQFsD0xw
こんなのでいいんじゃないの?
substr(md5(uniqid(rand(), 1)), 0, 10)
303デフォルトの名無しさん:2015/02/09(月) 17:30:08.93 ID:J1Lpqudc
ハッシュをsubstrとか最悪だろ
304デフォルトの名無しさん:2015/02/09(月) 17:32:08.03 ID:/goebppZ
まだバイナリに戻してbase64のが、、w
305デフォルトの名無しさん:2015/02/09(月) 17:37:09.09 ID:p6Gav+v7
base64はURLでエンコ掛かる文字があるからな
306デフォルトの名無しさん:2015/02/09(月) 17:43:54.37 ID:KZXLvyao
普通にランダム文字列生成して、DBで重複チェックすればいいじゃねーか
無限ループする可能性は0じゃないけどほぼ0。
大文字小文字数字で62種類から5桁使うだけで916132832通り。
こんな中から重複する確率心配する必要あるのか?
307デフォルトの名無しさん:2015/02/09(月) 17:44:22.42 ID:8DtgTl9e
substrを嫌って
md5の値をxorで半分に畳んでから64進数にするコードとかは書いた
1/6位に縮む
308デフォルトの名無しさん:2015/02/09(月) 17:46:06.77 ID:8DtgTl9e
同じデータで同じ値が得られるって必要ないなら乱数がいいわな
309デフォルトの名無しさん:2015/02/09(月) 17:50:30.50 ID:8DtgTl9e
乱数の衝突確率と
DB使った衝突チェックコードがバグってデッドロックする確率と
どっちを重要視するかだなー
310デフォルトの名無しさん:2015/02/09(月) 17:53:30.41 ID:kQFsD0xw
>>303
> ハッシュをsubstrとか最悪だろ
そうかな。
10桁のランダム文字列を生成して衝突する確率と、>>302の衝突確率、どっちがどれくらい大きい?
そんな違わんと思うんだが。
311デフォルトの名無しさん:2015/02/09(月) 17:59:54.64 ID:8DtgTl9e
元データがユーザーで指定出来るなら
わざと衝突させることは可能
でも元データが乱数なら特に仕様に問題なさそう?
312デフォルトの名無しさん:2015/02/09(月) 18:31:51.59 ID:kQFsD0xw
まぁ、それなりに短くてユニーク性が担保されてる物を使いたいなら、事前生成してIDプールを作っとくしかないかなぁ。
313デフォルトの名無しさん:2015/02/09(月) 18:32:05.65 ID:gGWdGnGd
youtubeの動画idを作るアルゴリズムは俺も気になる
誰もわかる人いないの?
314デフォルトの名無しさん:2015/02/09(月) 18:37:53.76 ID:TIoddbDq
ざっと見た感じ10桁と11桁があったから固定長ではないということと
0-9a-zA-Z-_の64進数であるということ
別に難しいことやってないだろ衝突のチェックはしてるはずだ
315デフォルトの名無しさん:2015/02/09(月) 19:44:46.65 ID:5MH5oReq
>>307 のコードはこれな
https://ideone.com/KRfKyg
>>314と桁数も同じだし似たような事やってんだろ
316デフォルトの名無しさん:2015/02/09(月) 21:14:55.73 ID:AuqukOe+
解決できました。
ベースとなる62文字を底とした対数を元に数値から各文字列を算出して、
(このままだと予測が付くので)任意のキーをハッシュにしてそれを軸にベース文字列の順番を変更しました。
任意のキーを変えれば違った結果が得られます。
計算はbcmathを使い大きな数でも変換・復元できます。
変換対象の数値はDBのAUTOINCREMENTの値です。なので、衝突の確認は必要ないです。

//一例
123 <=> Cg
124 <=> v2
125 <=> vC

//結果を5桁以上に指定した場合(桁数指定無しだと C22Cg = 568283946)
123 <=> C22Cg

//大きな数値
2147483647 <=> vR7TLC //PHP_INT_MAX
2147483648 <=> vR7TLv //PHP_INT_MAX + 1
18446744073709551616 <=> R0IZeC8dZNK //1.844674407371E+19
18446744073709551617 <=> R0IZeC8dZNZ
999999999999999999999 <=> WlSOLGrH9mCC

十分満足する結果が得られたので、この質問は締め切りたいと思います。
解答してくださったみなさん、ありがとうございました。
317デフォルトの名無しさん:2015/02/10(火) 10:18:17.48 ID:BBYveUv7
>>316
え?そんなので満足なの?
2文字のキーが存在するとわかると、2文字のその他のキーは総当たりでアタックされちゃうし、
vR7TLCとvR7TLvなんて近すぎるよ。下位一桁を変えるだけで別のを参照できちゃうけど?
318デフォルトの名無しさん:2015/02/10(火) 10:24:25.46 ID:4KbenIEn
>ベースとなる62文字を底とした対数を元に数値から各文字列を算出して、

これって分かりやすく言うとどういうことをしているの?
またはコードで書くとどうなるのですか?
62進数とか、>>279の言うことはわかるのですが、対数とかわからなくなる。
319デフォルトの名無しさん:2015/02/10(火) 10:40:39.68 ID:gUpJ+a7f
62を底にしたとき62の対数 1
62を底にしたときの62^2の対数 2

まあ、1,2,3・・・を元に計算しましたってことだよw
320デフォルトの名無しさん:2015/02/10(火) 11:21:41.79 ID:4KbenIEn
>>319
なるほど。少しわかりかけてきたよ。
ありがとう。
321デフォルトの名無しさん:2015/02/10(火) 14:19:58.35 ID:wIt1SCny
>>317
>2文字のキーが存在するとわかると
例に在るとおり、桁数は設定できます

>下位一桁を変えるだけで別のを参照できちゃうけど?
これはわかりやすくした結果の一例なので、正しく使えば出来ませんよ

>>318
>>279とはまた違いますよ

結果はYouTubeのようなIDが生成されます。
ただ、YouTubeは末尾一桁の4byte程を許容しているようなので完全に同じってわけじゃあありません。
多分CheckDigit的な何かだと思うので、これから真似してみます。
322デフォルトの名無しさん:2015/02/10(火) 14:45:10.93 ID:BBYveUv7
>>321
> >下位一桁を変えるだけで別のを参照できちゃうけど?
> これはわかりやすくした結果の一例なので、正しく使えば出来ませんよ
下位一桁を順番にさかのぼれば一個前のキーがわかるのでは?
(一桁だけでさかのぼれなければ二桁さかのぼる)
数値の増加と、生成されたキーの辞書順の順番は同じじゃないの?
元となる値はひとつずつ増え、変換後の1つ前との文字列のΔが小さすぎるんじゃないのってことなんだけど。
323デフォルトの名無しさん:2015/02/10(火) 14:47:33.98 ID:BBYveUv7
「YouTubeのようなID」っていうから、時系列に生成されたキーを並べても辞書順にはならないものを
求めてると思ったんだけど。
324デフォルトの名無しさん:2015/02/10(火) 14:49:02.48 ID:IKKD2i9Y
本人が満足してるならそれでいいだろ
325デフォルトの名無しさん:2015/02/10(火) 15:04:12.81 ID:BBYveUv7
いや、その辺のこと全部わかって満足してるんならいいんだけど、ほんとにわかってんのかなと思って。
326デフォルトの名無しさん:2015/02/10(火) 15:17:07.84 ID:wIt1SCny
>>322
変換テーブルは任意のキーで変更でき、それはいわばランダムにシャッフルされた状態になるので
>下位一桁を順番にさかのぼれば一個前のキーがわかるのでは?
このような心配は必要ないです。
327デフォルトの名無しさん:2015/02/10(火) 15:18:16.00 ID:wIt1SCny
再度言いますが、>>316の一例はわかりやすい結果にした出力です
328デフォルトの名無しさん:2015/02/10(火) 15:23:16.48 ID:PEY4PO1c
>>325
最初のやり取りの時点でわかってるつもりでわかってない人だということがわかってる。
329デフォルトの名無しさん:2015/02/10(火) 15:36:22.03 ID:wIt1SCny
適切に出力しました。
これを見てまだ指摘があるならください。


5桁以上で生成
123 <=> OpkA9
124 <=> O7WjO
125 <=> Or74G
126 <=> OebeG
127 <=> 93AWG
128 <=> 9zAwE
129 <=> EL5m9

同じ条件でKey変更
123 <=> kPQ4Z
124 <=> Z4rdG
125 <=> Zgzxk
126 <=> kA2eZ
127 <=> klB8n
128 <=> Gzj6G
129 <=> ndwJZ
330デフォルトの名無しさん:2015/02/10(火) 15:52:10.98 ID:BBYveUv7
疑問多数なんだけど、もろもろ理解した上での満足なんだなということだけはわかったので、もういい。
331デフォルトの名無しさん:2015/02/11(水) 16:37:52.44 ID:qk9mI8Ky
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。

第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。


食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
332デフォルトの名無しさん:2015/02/11(水) 18:26:22.06 ID:bsa0WqJ9
PHPで外部ディレクトリのファイルを全て取得したいです!
たとえばhttp://peace.2ch.net/test/read.cgi/tech/から1418738547などのスレッドキー(ファイル)を取得したいって
ことです!globなどが良さげなのですが自分のディレクトリ配下のファイルしか出ません><
333デフォルトの名無しさん:2015/02/11(水) 18:31:44.60 ID:sJPqGjE7
それが出来たらやりたい放題だなw
334デフォルトの名無しさん:2015/02/11(水) 18:45:25.70 ID:bsa0WqJ9
335デフォルトの名無しさん:2015/02/11(水) 20:31:02.10 ID:bsa0WqJ9
うそです!
336デフォルトの名無しさん:2015/02/11(水) 20:56:44.79 ID:RxP1DnB1
phpのみで苦しみながらコード書いてるけど
テンプレート言語にしては
ずいぶんプログラミングみたいにこと出来ていいねphp
337デフォルトの名無しさん:2015/02/11(水) 21:08:50.16 ID:Z2laVfQS
>>336
Framework使ってる?
苦しむことすらからも解放されるよ
338デフォルトの名無しさん:2015/02/11(水) 21:16:41.02 ID:RxP1DnB1
php4 dbなしos限定なし設定なし
php拡張ライブラリもwindows apacheデフォルトのみ
そんな環境向けだからWAF使いずらい
339デフォルトの名無しさん:2015/02/17(火) 23:51:28.31 ID:Qrf9op+9
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。

第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。


食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
340デフォルトの名無しさん:2015/02/18(水) 00:05:35.11 ID:lUlCQlA9
Rubyのおかげでハゲが治り、体重も減って恋人も出来ましたw
341デフォルトの名無しさん:2015/02/18(水) 00:25:06.29 ID:deVdAFDE
>>207
その通り!だから左右に画面を分割してコードをいじっているともっさりして大変なのだ
342デフォルトの名無しさん:2015/02/19(木) 01:30:22.68 ID:VWQ00iRn
小規模なスクリプトしか書かないから
railsとか重いWAF覚えるには腰が重い
どうでもいいところでハマるし
343デフォルトの名無しさん:2015/02/19(木) 19:49:34.57 ID:6DAiIyVa
PHPを利用して作成されたサイトを見分ける方法ってありますか?
拡張子が.phpであることやexpose_phpによるヘッダー情報で見分ける以外に
どういった方法があるか知りたいです。
344デフォルトの名無しさん:2015/02/19(木) 20:12:16.08 ID:yeNrSBng
サーバでうまく設定してればわからない
345343:2015/02/19(木) 21:48:47.12 ID:lO9TT2c4
>>344
ありがとうございます。

PHPの隠蔽には
・拡張子を隠蔽するか変更する
・expose_php を off と設定する
この2つをしておけば他は問題ないみたいですね。
http://php.net/manual/ja/security.hiding.php

たまに、良さそうなサイトがどの言語で作成されているか
気になることがあるのですが、対策されてれば知るのは無理そうですね。
346デフォルトの名無しさん:2015/02/19(木) 22:56:56.57 ID:lV3Z3yoq
質問者はまずこれを読み、そこまでしてPHPを使い続ける必要があるか考えること。

インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。

第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。


食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
347デフォルトの名無しさん:2015/02/19(木) 23:36:56.05 ID:oS1fF8P8
2007年の記事を未だにしつこく貼る奴ってなんだろうね
崇拝でもしてるのかな?
あまりしつこいようなら運営に荒らし通報するからな
348デフォルトの名無しさん:2015/02/19(木) 23:37:17.33 ID:ktrT5ybF
ぼっちって、悲しいね
349デフォルトの名無しさん:2015/02/19(木) 23:39:47.72 ID:yeNrSBng
自演がバレちゃうから連続で煽ってこない
効果ありすぎw
350デフォルトの名無しさん:2015/02/23(月) 15:44:13.42 ID:jEdpJRTO
foreach($contents as $line)
{

}


このコードでは改行文字は  \n \r\n どちらで認識されるのでしょうか?
351デフォルトの名無しさん:2015/02/23(月) 22:24:39.65 ID:cWkGfwjm
>>350
試せ
'\r'検索
352デフォルトの名無しさん:2015/02/23(月) 23:44:09.35 ID:ETApao89
>>351
さんきゅー
353デフォルトの名無しさん:2015/02/24(火) 01:43:39.16 ID:hwXyjfLa
あいまいな情報だが、Rubyだと改行は、外部では\r\nでも、
Ruby内では自動的に、\nに変換されていたかな?

外:\r\n → 内:\n → 外:\r\n

PHPはどうなの?
354353:2015/02/24(火) 05:19:14.75 ID:hwXyjfLa
自己レス
ary = []; ary[2] = []

いったん、空配列で初期化した後なら、追加できる
ary[2][3] = []
ary[2][3] << [1, 2]

ary[2][i]で、iが5, 10など突然に、
ランダムなインデックスに、
次々と追加していくには、どうするの?

最初の1回目だけは、空配列で初期化して、
2回目以降は初期化せずに、追加のみしていきたい
355353:2015/02/24(火) 05:22:45.09 ID:hwXyjfLa
354は、誤爆!
356デフォルトの名無しさん:2015/02/24(火) 18:54:05.36 ID:qJzaoY6z
cURLのラッパークラスhttp://qiita.com/mpyw/items/c65fb4ec4cef80909a47

を使ってサイトにログインしてクロールしようと思ってるんだがどうしてもできません。

セキュアなwebサイトではcURLを使ってログインすることができない場合があるんですか?
357デフォルトの名無しさん:2015/02/24(火) 19:37:17.89 ID:yPCiESzG
そのサーバがクライアントに何を求めてるか
求めてるものが足りないからログインできないだけでcURLは関係ないだろ
正常にログイン出来るブラウザを使ってhttpトレースして自分で調べれないならあきらめろん
358デフォルトの名無しさん:2015/02/24(火) 20:51:53.39 ID:qJzaoY6z
>>356
自己解決

httpヘッダーにOrigin: と'Cache-Control:の要素が足りないだけでした
359デフォルトの名無しさん:2015/02/25(水) 11:20:35.02 ID:K9ShYAxG
質問です。お願いします。
抽象クラスの抽象メソッドは、必ず継承されるので、
可視性にprivateをつけるのは有り得ないという理解でいいのでしょうか?
継承先ではprivateにしたいのですが、protectedにするしかないのでしょうか?
360デフォルトの名無しさん:2015/02/25(水) 12:33:38.55 ID:XX47xY3L
必ず継承されるので ではなく、
継承でオーバーライドできないから です
361デフォルトの名無しさん:2015/02/25(水) 12:48:16.50 ID:K9ShYAxG
>>360 ありがとうございます!
>継承でオーバーライドできないから です

つまり、オーバーライドが必須なため必ずprotected以上が要求される
のですね。継承先での実装は強制したいが、その実装の可視性は
privateにするというのは無理そうですね。
ありがとうございました。
362デフォルトの名無しさん:2015/02/25(水) 12:55:47.85 ID:UFHbrp38
ほんとはPHPがやりたいのに、職業訓練校だと全部JAVAばっかり
遠回りになるのかな
363デフォルトの名無しさん:2015/02/25(水) 14:33:33.72 ID:l9sg+6hs
選択の自由が欲しいなら自費で学校池
364デフォルトの名無しさん:2015/02/25(水) 15:12:57.15 ID:GuxC04/B
アホ。お前等なんて誰も雇わねぇよ。レンタルサーバなり、VPSなり借りろ。
講師なんて、プログラマになれなかったような連中がやる仕事だろw
365デフォルトの名無しさん:2015/02/25(水) 15:53:53.56 ID:UFHbrp38
>>364
あったまわりいなおまえ
コンビニバイトでもしてろ
366デフォルトの名無しさん:2015/02/25(水) 16:33:46.08 ID:GuxC04/B
職業訓練校から雇用されると思ってる方が素敵な頭だよね
あれって、講師共に体裁の良い仕事を与えるためだけのものだよ?
知らなかった?
367デフォルトの名無しさん:2015/02/25(水) 16:36:34.83 ID:JFD+ngFs
目の前にある箱使えばドットインストールとか色々あるのに
368デフォルトの名無しさん:2015/02/25(水) 16:49:38.60 ID:JFD+ngFs
ttp://paiza.jp/

こことか学びながら求職もできるぞ?
369デフォルトの名無しさん:2015/02/26(木) 11:10:22.20 ID:5qyZqY5X
PSRを読んでいたらプロパティは特に定めなしってなってるけど普通はどう?
「StudlyCaps」
「camelCase」
「under_score」

クラスはStudlyCaps、メソッドはcamelCaseで決定みたいだから、
そうするとプロパティはunder_scoreがいいの?
370デフォルトの名無しさん:2015/02/26(木) 11:59:10.15 ID:32CLcP5C
有名どころのライブラリに倣えばいいんじゃ?
371デフォルトの名無しさん:2015/02/26(木) 12:24:55.43 ID:2jW4ac6x
>>370
なるほど。ライブラリやFW等を調べてみます。
ありがとうございました。
372デフォルトの名無しさん:2015/02/26(木) 12:29:38.27 ID:32CLcP5C
そういやcakePHPは結構細かく決まってた気がするな

ファイル名とかDBのテーブル名も含めて
373デフォルトの名無しさん:2015/02/27(金) 17:59:36.14 ID:jUJY8z2X
フレームワーク自体そこらへん厳密に決めておかないといけないものだし
374デフォルトの名無しさん:2015/02/27(金) 18:33:58.48 ID:tXb9/4s1
フレームワークだから決めなければならないってことはないよ。
そのあたりの命名に制約を課す代わりにメリットを享受できるフレームワークだってことだね。
375デフォルトの名無しさん:2015/02/27(金) 21:49:08.02 ID:NM1bEzGX
コネクション張りっぱなしの状態でもxhrで非同期通信が出来ますが
この時通信先のスクリプトでsession_start()をしていると
応答がものすごい長くなります(たぶん張りっぱなしのコネクションがタイムアウトしてから応答が来る)
session_start()をしなければ早く応答が来るのですが何が原因でしょうか?
376375:2015/02/27(金) 21:59:03.00 ID:NM1bEzGX
ちなみに張りっぱなしのほうでもsession_start()しています
377デフォルトの名無しさん:2015/03/01(日) 16:03:20.30 ID:NDBOI03r
質問です。
変数をダブルクォート内に書くとき、

echo "$var";
echo "{$var}";
echo "${var}";
;
のように3通りの書き方がありますが、
どれがいいのでしょうか?
使い分け方とかがわかりませんので教えてください。
378デフォルトの名無しさん:2015/03/01(日) 16:33:32.67 ID:u/KO/Jjc
>>377
気が向いたのでこたえる。変数を書くだけなら波括弧はいらない。
配列や可変変数を使いたいときは、どこまでが $ の範囲かを分からせるために波括弧が必要な場合がある。

$array = [1, [2, 3]];
echo "$array[0]\n"; // 一次元なら OK
echo "$array[1][0]\n"; // NG ($array[1] までが $ の範囲と解釈される)
echo "{$array[1][0]}\n"; // OK

$var = 4;
$varName = 'var';
echo ${$varName} . "\n"; // OK (知らなきゃ "PHP 可変変数" でぐぐれ)
echo "${$varName}\n"; // OK

$arrayName = 'array';
echo ${$arrayName}[0] . "\n"; // OK
echo "${$arrayName}[0]\n"; // NG (${$name} までが $ の範囲と解釈される
echo "{${$arrayName}[0]}\n"; // OK

マニュアル嫁
http://php.net/manual/ja/language.types.string.php
http://php.net/manual/ja/language.variables.variable.php (可変変数)

ただ個人的には、もし>>377が職場の後輩だったら、こんな文法を駆使したプログラムなんか読み難くて糞だから厨二で卒業しろ
ちゃんと変数に代入して普通にechoしろって言う
379デフォルトの名無しさん:2015/03/01(日) 16:44:13.52 ID:NDBOI03r
>>378
なるうほど、可変変数や配列を使う以外は使用する必要がないといことですね。
そうでない場合(単に文字列を収めた変数)にも{}を使用している記述を見かけたので質問しましたが、そのサイトが誤ってるということですね。
ありがとうございました。
380デフォルトの名無しさん:2015/03/01(日) 16:50:28.49 ID:W+GQEi2b
>>362
JavaやっときゃPHPは簡単だぞ。逆は難しい
ギターとベースのような関係だ
381デフォルトの名無しさん:2015/03/01(日) 20:26:05.31 ID:/QNvxMin
PHP的には、
echo "{$var}";
の書き方だけやっときゃいいんじゃないの?

echo "${var}";
は、シェルスクリプト由来だと思うけど、例によって「余計なもの」つけちゃった仕様でしょ。
382デフォルトの名無しさん:2015/03/01(日) 21:39:12.47 ID:KsvF2WvU
Javaなんて企業勤めでもないと何の恩恵もないよね
383デフォルトの名無しさん:2015/03/01(日) 23:43:45.26 ID:4t5j5bTH
○○やっておけば楽っていうのならJavaじゃなくてC言語勧めるわ。
384デフォルトの名無しさん:2015/03/02(月) 00:06:58.65 ID:KLUkqw11
そうだなぁ。Cを"ちゃんと"使える人は基礎が出来てるからね。
385デフォルトの名無しさん:2015/03/02(月) 05:59:19.17 ID:rsjtQPNm
気が向いたのでこたえる(キリッ)

意訳
簡単な質問だから答えられる
386デフォルトの名無しさん:2015/03/02(月) 09:36:58.55 ID:u4SyLN4h
可変変数だけじゃなくて、 $var という変数で "$varvar" で困るからだし、
使う使わないはともかく、読める必要はある
387デフォルトの名無しさん:2015/03/02(月) 10:21:16.89 ID:QzRGZF5w
単純に、{ }で囲った方が読みやすいというのもあるな。
388デフォルトの名無しさん:2015/03/03(火) 09:06:42.18 ID:xikuZzZ1
多次元連想配列についての質問です。

$fruits[0]= array("kind_id" => "1", "name" => "ミカン", "from" => "和歌山", "seisan" => "山田" );
$fruits[1]= array("kind_id" => "1", "name" => "ぽんカン", "from" => "愛媛" ,"seisan" => "佐藤" );

という配列を

$fruits[1][ミカン] = array("from" => "和歌山" , "seisan" => "山田" );
$fruits[1][ぽんカン] = array("from" => "愛媛" , "seisan" => "佐藤" );
という形にしたいです。

↑の例はkind_idとnameがキーとなりましたが、このキーの個数も汎用性があるようなプログラムにしたいです
日本語変ですがよろしくお願いします
389デフォルトの名無しさん:2015/03/03(火) 09:29:03.39 ID:PeR2EUn1
foreach($fruits as $v)
$arr[$v['kind_id']][$v['name']] = array('from'=>$v['from'],'seisan'=>$v['seisan']);
390デフォルトの名無しさん:2015/03/03(火) 09:36:05.75 ID:5yCpJehD
>>388

<?php
$fruits = array(
array(
"ミカン" => array("from" => "和歌山", "seisan" => "山田"),
"ポンカン" => array("from" => "愛媛", "seisan" => "佐藤")
)
);

print_r($fruits);
print_r($fruits[0]);
print_r($fruits[0]["ミカン"]);
391デフォルトの名無しさん:2015/03/03(火) 09:50:04.73 ID:xikuZzZ1
>>388です
お二人ともありがとうございます

すみません、言いたいことが伝え切れてなかったのです
結果はお二人ので合ってるのですが
・ループを使いたい
・キーが増えた時に汎用性があるものにしたいのです
イメージ的には>>389のを汎用性があるように改造する感じです

今回の場合だとキーが2つなので
$keys = array("kind_id" ,"name");
というキーを指定する配列があるとします。
$keys = array("kind_id" ,"name","seisan");
のように増えた時にも対応したいのです。
392デフォルトの名無しさん:2015/03/03(火) 10:03:51.53 ID:xikuZzZ1
自分で考えたのは

$keys = array("kind_id" ,"name");の場合

foreach($keys as $k){
ここで
$fruits[kind_id][name] = array();
という連想配列を作る

これに>>389
foreach($fruits as $v){
$arr[$v['kind_id']][$v['name']] = array('from'=>$v['from'],'seisan'=>$v['seisan']);
}
を組み合わせたいです
393デフォルトの名無しさん:2015/03/03(火) 11:17:55.72 ID:PeR2EUn1
$keys = array("kind_id","name","from");
$fruits[0]= array("kind_id" => "1", "name" => "ミカン", "from" => "和歌山", "seisan" => "山田" );
$fruits[1]= array("kind_id" => "1", "name" => "ぽんカン", "from" => "愛媛" ,"seisan" => "佐藤" );

$arr=array();
foreach($fruits as $v){
$r = &$arr;
foreach($keys as $key){
if (!array_key_exists($v[$key],$r)) $r[$v[$key]] = array();
$r = &$r[$v[$key]];
}
$r = array_diff_key($v,array_flip($keys));
}
print_r($arr);
394デフォルトの名無しさん:2015/03/03(火) 13:27:41.76 ID:vf1rXF9z
全然違うよって話になるかもしれないけど、
その変換後のデータ形式を元に表を作りたいという要件なら
変換前のデータ形式のまま、連想配列のキー名を指定すれば表になるようなものを目指したほうがいいと思う。
395デフォルトの名無しさん:2015/03/03(火) 13:49:41.99 ID:J64zrXar
>>388です

>>393
何度もありがとうございます!
明日にならないと確認できないんですが、こんなやり方思いつかなかったので嬉しい

>>394
気にしてくれてありがとうございます
実はこれやりたいことの一部なので…


ちなみにやってることは、
2つのDBの同じデータが入ってるけど、カラム名が違う2つのテーブルのデータがホントに合ってるか比較するプログラムを作ってます
それの一部です

ここで言う$keysが比較するとき同じレコードを引っ張って来るためのユニークなカラム名で、
$fruitsがデータです
396デフォルトの名無しさん:2015/03/03(火) 14:47:30.97 ID:PeR2EUn1
>2つのDBの同じデータが入ってるけど、カラム名が違う2つのテーブルのデータがホントに合ってるか比較する
SQLで出来るんじゃね?
397デフォルトの名無しさん:2015/03/03(火) 15:01:14.05 ID:J64zrXar
>>396
実はおっしゃってる、SQL飛ばすバージョンのプログラムはもう出来てるんです
そっちの方が簡単ですよね

でもレコード数多いテーブルが結構あるらしく、上司に↑とは別に今回のプログラム(SQLは最低限しか投げずデータ取得し、プログラムでどうにかするというもの)を作れと言われ…
研修みたいなものです
398デフォルトの名無しさん:2015/03/03(火) 15:08:58.50 ID:5yCpJehD
力量を試すものなら人に投げちゃダメでしょw
399デフォルトの名無しさん:2015/03/03(火) 15:11:48.82 ID:J64zrXar
>>398
そうなんですけどわからなかったもので…サーセンw
400デフォルトの名無しさん:2015/03/03(火) 15:47:36.14 ID:vf1rXF9z
>>397
・上司案
 データ取得:比較元、比較先の2回クエリ発行
 データ比較:ロジック
 DBサーバとの通信量:多い

・みんなの案
 データ比較結果取得:クエリ1回
 DBサーバとの通信量:少ない
401デフォルトの名無しさん:2015/03/03(火) 22:42:58.09 ID:bhYwIQkT
>>388です

連想配列回すのとSQL飛ばすののサーバへの負荷の差はわからないですが、プログラムで処理しすぎるのも微妙ですよね

〆ます
皆さんありがとうございました!
402デフォルトの名無しさん:2015/03/04(水) 00:33:37.01 ID:aLbHB3FI
比較元のデータ抜いてきて、1件ごとにクエリ投げるようなお馬鹿なことしてなければ。
403デフォルトの名無しさん:2015/03/05(木) 07:56:45.48 ID:42cw4PSJ
mysqlのdbとposgresqlのdbにjoinしたsqlを投げることはできますか?
404デフォルトの名無しさん:2015/03/05(木) 07:58:12.01 ID:Z2cyKMvI
なぜ試してから質問しない
405デフォルトの名無しさん:2015/03/06(金) 10:36:51.69 ID:AIFKHCSQ
>>403
おまえのデバッグの為にここに人間がいるわけじゃない。
試しもせずに質問するような馬鹿は、板に来なくていい。


おまえじゃ、100万年経っても何もできないと言っておく。
406デフォルトの名無しさん:2015/03/06(金) 10:50:47.24 ID:qTEVlted
RDBMSをまたいでJOINしたいんじゃねーのw
407デフォルトの名無しさん:2015/03/06(金) 12:08:50.00 ID:XT9nODwv
アパッチ経由(ブラウザ)だと意図した結果になるんだが
ターミナルで実行するとエラーが出て動かない。
ターミナルPDOでデータベース接続していて、pdo接続時にエラーCatchして”ドライバがない"と表示されるが処理は進み
その後”PDOオブジェクトが生成させれていない”と表示され処理が終了する。
アパッチ経由だと接続して結果もちゃんと表示される。
ただしPDOオブジェクトをprint_r()で確認すると中身空っぽ(生成はされている)

PDOオブジェクトが空でもデータベースは接続されるのか?
それとも他になにか原因があるのか?
408デフォルトの名無しさん:2015/03/06(金) 12:59:15.57 ID:qTMDyHIM
両方で phpinfo()して違いを見れば分かるだろ
それぞれの設定は変えられるんだよ
409デフォルトの名無しさん:2015/03/08(日) 17:16:37.80 ID:90OQJ5F3
質問です。
よろしくお願いいたします。

PHPでの並列処理なんですが、

exec("nohup php -f omoi.php > /dev/null &");
return true;

omoi.phpは1分程度かかる処理なんですが、
期待してるのは、即時trueの返却、別プロセスでomoi.phpの処理なのに、待たされてしまってます。
410デフォルトの名無しさん:2015/03/08(日) 17:32:37.00 ID:psXgySVj
で、プラットフォームは何なの?(´・ω・`)
411デフォルトの名無しさん:2015/03/08(日) 17:48:55.01 ID:q94065c/
execはwindowsでは同期だ。他OSはしらん。
基本非同期で同期にするのが困難なnode.js使えば。
412デフォルトの名無しさん:2015/03/08(日) 18:43:56.83 ID:6V9jwiMr
>>409
stderrに何か出てるというオチはないの
413デフォルトの名無しさん:2015/03/08(日) 22:48:48.97 ID:90OQJ5F3
>>410
プラットフォームですか、、
サーバはhetemlなんですが、、
なんて答えたらいいんでしょう?
php ver5.4.27です。

#下記をphp.phpとしたら
<?php
function init(){
exec("nohup php -f omoi.php > /dev/null &");
return true;
}
init();
?>

php.phpにPOSTがあったら、即trueを返して別プロセスでomoi.phpを動かしたいのです。説明不足ですいません。

>>412
確認してみます。
414デフォルトの名無しさん:2015/03/08(日) 23:21:45.93 ID:4v0KO8Ne
phpって並列処理するならpthreadsでしょ
415デフォルトの名無しさん:2015/03/08(日) 23:31:53.20 ID:90OQJ5F3
>>414
ということはレンサバではキツそうですね。。。
VPSでやってみようと思います。
ありがとうございました!!
416デフォルトの名無しさん:2015/03/09(月) 00:12:07.80 ID:WyTJE+zr
バックグラウンドプロセスで起動するのとスレッド起こすのではずいぶん話が変わるけれど。
とりあえずstderrも捨てるようにして試してみたら?


ちなみに、これの真偽についてはしらないけど、そうなの?
> execはwindowsでは同期だ。
417デフォルトの名無しさん:2015/03/09(月) 00:13:07.76 ID:WyTJE+zr
あああと、通常プラットフォームといえばOSを指すよ
418デフォルトの名無しさん:2015/03/09(月) 00:53:49.45 ID:sOi42beA
>>416
/dev/nullはUNIX系OSのコマンド
Windowsでは認識されないから処理が止まる
解決策はManualに載ってる
419デフォルトの名無しさん:2015/03/09(月) 02:38:09.61 ID:ZguKliEH
コマンドとは言えないが
420デフォルトの名無しさん:2015/03/09(月) 03:19:02.65 ID:I2mO0aB9
超初心者です。お願いします。
mac os x 10.9.5

eclipseの日本語設定の質問です
ネットで見たままのやり方でpleiadesの中身を貼ったりiniで最後に-javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jarを追加しました。
しかし追加する前は起動するのですが、追加後は起動しません。
いくら調べても解決策がわからないので質問させて頂きました。
拙い質問ですが答えて頂けたら大変助かります。
421デフォルトの名無しさん:2015/03/09(月) 03:32:42.16 ID:WyTJE+zr
汎用くだ質じゃないですよ
422デフォルトの名無しさん:2015/03/09(月) 09:22:36.36 ID:qeIeMtGl
>>409
>>416
ありがとうございます。
/dev/null 2>&1
としてみましたが、やはり処理が終わってから trueが返ります。

並列と書いてしまいましたが、確かに並列ではなくバックグラウンドプロセスでした。
その処理の終了を待たずにtrueを返したいということが目的でした。

今更ですが、仕様としてはPOSTにてXMLが送られてきて中身を解析し、大体1000レコードぐらいをDBにインサートします。
構造は1対多になっているので、紐付くhasmany側を入れると1000*〜となります。
重複チェックもあり、クエリ数は相当数となります。

XMLでレスポンスを返すのですが、相手のタイムアウトが30秒で、処理を終わるのを待ってからでは難しいのでできないかな?と思いました。
引き続き悩んでみます。
423デフォルトの名無しさん:2015/03/09(月) 11:07:14.49 ID:dbEYjzPy
2>&1 はstderr出力をstdoutに回す指定だ。 & はそれとは別につける
424デフォルトの名無しさん:2015/03/09(月) 11:09:01.52 ID:dbEYjzPy
でも結局 nohup.out に出るような気が
425デフォルトの名無しさん:2015/03/09(月) 21:57:01.95 ID:qeIeMtGl
>>423

1> /dev/null 2> /dev/null
1> /dev/null 2>&1
とかやってみましたがダメでした。
nohupも取ってみましたがダメでした。

受け取ったXMLをDBなり、テキストなりに保存して、重い処理はCronをとか考えるようになっていますが、レンサバではあまり短い時間でcronを実行できないので、やっぱりVPS?とかいろいろ考えてます。
標準出力のリダイレクトのこと、今回初めて調べたのですが勉強になりました。
今までは「cronでメール送信を止めるもの」な理解でした。
アドバイスくださった方々ありがとうございます。
426デフォルトの名無しさん:2015/03/09(月) 22:54:38.75 ID:qeIeMtGl
できました!!
> /dev/null 2> /dev/null &
としたらできた!
ふとstackoverflowを確認したらこう書いてあって、試したらできました。
この&の意味がよくわからないので、調べてみます!
ありがとうございました!失礼します!
427デフォルトの名無しさん:2015/03/10(火) 00:28:33.54 ID:40zCF9Gm
linuxのお勉強からどうぞ
428デフォルトの名無しさん
>>423 に書いてあるだろ