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

このエントリーをはてなブックマークに追加
1nobodyさん
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
2nobodyさん:2014/01/20(月) 06:23:56.77 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ml.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
3nobodyさん:2014/01/20(月) 06:24:29.22 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
4nobodyさん:2014/01/20(月) 06:25:02.44 ID:???
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に保存?
 → 好きにしてください
5nobodyさん:2014/01/20(月) 10:36:50.40 ID:???
>>1
6nobodyさん:2014/01/20(月) 16:32:43.48 ID:???
ファイル扱う関数以外はほとんどバイナリセーフって認識ぐらいでいいんじゃね?
7nobodyさん:2014/01/20(月) 20:25:13.22 ID:/QxzPvCb
PHP5.4を使っています。

値渡しと参照渡しがいつどのタイミングで発生するかわからないので教えてください。


$arr1 = array('aaa'=>1, 'bbb'=>2, 'ccc'=>3);

$arr2 = $arr1;  // ※1

function hoge($arr3) {}

hoge($arr1);  // ※2


このような時、
※1は値渡しでしょうか?参照渡しでしょうか?
※2は値渡しでしょうか?参照渡しでしょうか?
また、
何か見分けの付きやすいルールがあればそれも教えてください。
8nobodyさん:2014/01/20(月) 21:16:56.92 ID:pZcSGmVQ
馬鹿には無理
9nobodyさん:2014/01/20(月) 22:08:40.13 ID:???
どっかにPHPの参照カウントを図解してるスライドあったよ
10nobodyさん:2014/01/20(月) 22:48:16.64 ID:???
>>7
http://www.php.net/manual/ja/features.gc.refcounting-basics.php

hoge($arr3)は値渡し(コピーオンライト)になります
PHPでは連想配列はオブジェクトではないので

破壊的関数は hoge(&$arr3) と書きます
1110:2014/01/20(月) 22:53:25.36 ID:???
すみません宣言時です
function hoge(& $arr3) {}
12nobodyさん:2014/01/20(月) 22:55:09.61 ID:/QxzPvCb
>>10
ありがとうございます!
13nobodyさん:2014/01/20(月) 23:02:17.58 ID:???
>>7
※1も※2も値渡しだよ。
PHPでは、基本的にみんな値渡しになる。
例外的に、オブジェクトにオブジェクトを代入すると参照渡しになる。

オブジェクト以外で参照渡しにしたい場合には、&amp;を変数等の前につける。
もっとも、通常は参照渡しにする必要はほとんど無いはず。
14nobodyさん:2014/01/21(火) 11:04:34.04 ID:???
これ読むといいよ。

『PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い』
http://tanakahisateru.hatenablog.jp/entry/2013/12/12/012728
15nobodyさん:2014/01/21(火) 22:58:26.87 ID:DnPfDE6k
PHPでGDライブラリを勉強中なのですが、
ピクセルのRGB値を取得する以下のサンプルで、

$im = imagecreatefrompng("php.png");
$rgb = imagecolorat($im, 10, 15);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

var_dump($r, $g, $b);

このようなやり方でRGB値を取得できることはわかったのですが、
このなかの「$r = ($rgb >> 16) & 0xFF;」の部分はどういう処理を
行っているのでしょうか?
「>>」という記号と、「&」の部分がどういう意味なのか教えてください。
どうぞよろしくお願いします。
16nobodyさん:2014/01/21(火) 23:10:12.38 ID:???
>>15
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
演算子の項を参照
17nobodyさん:2014/01/22(水) 00:12:36.65 ID:???
>>15
>>はビットシフト
RGBは24bitなので、右に16bitシフトすればGとBのビットは捨てられてRだけになります
& 0xff はビットマスク
ここでは下位8bitはそのまま、それ以外のビットがあれば0にする意味で使われています
1815:2014/01/22(水) 08:39:19.31 ID:???
>>16
>>17
ありがとうございました!
19nobodyさん:2014/01/22(水) 14:46:32.76 ID:aoIHocMl
組み込み関数の「trim」について質問です。
フォームからの投稿文字列の最後に、「改行」がある場合、削除したいのですが、
うまく効かないです。何が原因でしょうか?

$val = isset($val) ? trim($val) : '';

マニュアルを見ると、改行を除く場合、第二パラメーターは不要とのことです。
http://jp1.php.net/manual/ja/function.trim.php
原因がわからず困ってます。よろしくお願いします。
20nobodyさん:2014/01/22(水) 14:53:14.65 ID:???
$val の内容ダンプしてみては
2119:2014/01/22(水) 14:58:11.25 ID:aoIHocMl
>>20
大変、失礼しました。自己解決です。
trimが効いていないと思ったら、効いていました。
投稿後、セッションの元データをフォームに反映させていたため
効いていないと、勘違いしていたみたいです。
お騒がせして済みませんでした。
22nobodyさん:2014/01/22(水) 18:04:34.87 ID:???
ム板のPerlスレもだいぶPHPの良さが分かってきたみたいだな
23nobodyさん:2014/01/22(水) 19:04:29.09 ID:???
でもまだ抵抗してる馬鹿がいるだろ。
継続的に啓蒙していくことが重要。
24nobodyさん:2014/01/22(水) 22:36:56.70 ID:FG8ViAIJ
一行もPHPのコードが書けないバカはここに来るな
25nobodyさん:2014/01/23(木) 00:06:20.34 ID:???
>>23
啓蒙つーか
perl使ってる奴は底辺だって事実を
認知させるところからだろ
26nobodyさん:2014/01/23(木) 02:52:37.95 ID:df5KuOGo
PHP使ってる奴は底辺だって事実を
認知させるところからだろ
27nobodyさん:2014/01/23(木) 03:35:34.87 ID:???
perlじゃお金にならないよ
28nobodyさん:2014/01/23(木) 03:37:23.28 ID:???
いやいやこいつはどの言語も使えない馬鹿チョンだろ
29nobodyさん:2014/01/23(木) 10:31:13.88 ID:???
スレ違いです
質問書いてください。
30nobodyさん:2014/01/23(木) 10:46:43.24 ID:???
>>27
Perl厨はPerlそのものを使って仕事を見つけるつもりはないと苦しい言い訳をしているよ。
31nobodyさん:2014/01/23(木) 18:25:39.43 ID:???
俺も見かけたときは加勢してやってるんだから
お前らもがんがれ
32nobodyさん:2014/01/23(木) 19:49:26.64 ID:???
33nobodyさん:2014/01/23(木) 20:04:29.62 ID:???
Perlで質問してるところにPHPで解答コード書いてやればいいんじゃね?

そうすればPHPユーザーのスキルレベルとPHPの有用性を同時に示すことができる
34nobodyさん:2014/01/23(木) 21:17:36.49 ID:???
そしてPHPerは空気も読めないのかと言われる
35nobodyさん:2014/01/23(木) 21:47:21.78 ID:df5KuOGo
ぺちぱーにそれが果たしてできるのかな
36nobodyさん:2014/01/23(木) 23:37:54.85 ID:7YymRraU
【OS名】RedHat
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL CodeIgniter
【質問内容】
セッションに大量に突っ込むと中身が消えます。
具体的にはセッションに3000文字とかいれると消えます。
1000文字とかであればちゃんと入っているんですがセッションの容量には上限があるんでしょうか?

以前にちょっとしたファイルをやり取りしたことがあるので3000文字程度では大丈夫と思っていたのですが設定など見ても上限に該当するものがみあたりませんでした。
37nobodyさん:2014/01/24(金) 00:07:02.91 ID:???
保存先がCookieになっていないか確認したか?
38nobodyさん:2014/01/24(金) 00:07:11.60 ID:???
とくに制約を受けるサイズないと思うよ
デバッガで追ってみたら
39nobodyさん:2014/01/24(金) 00:11:01.69 ID:???
中身が消えるっていうのは、Session自体は生きてるけど特定のパラメータだけNULLか何かになるってこと?
その辺どうやって確認してんの
40nobodyさん:2014/01/24(金) 10:09:16.59 ID:d/hHeezf
みなさん回答ありがとうございます。

単純にsessionの関数使っているだけなのでsessionがどこに保存されているのか?
というのを意識していませんでした。
特に何もしていませんがブラウザーのデバッガーで見たらcookieにそれらしき文字列があったのでcookieだと思います。

中身が消えるかどうかの確認は1000文字いれても取り出せるけど
3000文字だとnullになっているという形です。

保存先を変えることができるのであればやってみたいと思います。
41nobodyさん:2014/01/24(金) 14:46:22.36 ID:???
セッションの内容をクッキーに保存したら、それは、クッキーでありセッションではないと思うのだが。
セッションとクッキーを混同してるんじゃないの。
それと、クッキーは、たしか4kbyteとかの上限があるからそれが原因だと思う。
42nobodyさん:2014/01/24(金) 15:15:41.95 ID:UatxQsqL
getで送信とかしてないよね
4340:2014/01/24(金) 15:44:15.53 ID:d/hHeezf
みなさんありがとうございます。
単純にCodeigniterのセッションを使って入れておりました。

$this->session->set_userdata($newdata);

こんな感じです。
44nobodyさん:2014/01/24(金) 16:00:50.28 ID:???
Codeigniterのスレで聞いた方が良いかもしれない。
http://kohada.2ch.net/test/read.cgi/php/1299595202/
45nobodyさん:2014/01/24(金) 16:18:59.36 ID:???
横レスだけどCookieにSessionデータ詰めるなんて話初めて聞いたわ
4640:2014/01/24(金) 16:29:54.30 ID:d/hHeezf
スレを移ったほうがよさそうですね

私もsessionと書いてあったのでてっきり実データはサーバー側とおもっていたのですが
cookieの中になにやらはいっておりました。
文字数からして4kの上限にあたっているようなのでsessionとなっていますが
cookieの中にいれていたということでしょうか。
ちょっとよくわからなくなってきました。
47nobodyさん:2014/01/24(金) 16:42:11.39 ID:???
いずれにしても、セッションのデータがクッキーに入ってしまうのは、
セキュリティ上も良くないと思うよ。
48nobodyさん:2014/01/24(金) 17:25:34.78 ID:???
CIのマニュアルにCookie使うから4kbまでってはっきり書いてあったわ
マニュアルも読まずに質問するとは乳首1000クリックの刑
4940:2014/01/24(金) 17:36:06.47 ID:d/hHeezf
みなさん申し訳ありません。
確かにマニュアルにクッキー使うよと書いてありますね。
sessionってあったからてっきりそうなのかと思ってましたがCIのsessionはcookie保存のようです。

別の手段で回避することにしました。
お騒がせしました。
50nobodyさん:2014/01/24(金) 19:56:24.36 ID:???
>>45
Codeigniterでは、セッション情報を暗号化してクッキーに保存するらしい。
あと、DBにも保存することが可能だとか。普通にファイルとして保存すればいいのに。
http://codeigniter.jp/user_guide_ja/libraries/sessions.html
51nobodyさん:2014/01/25(土) 00:34:33.81 ID:???
そういう発想なかったけど、セッションサーバいらないってのは魅力かもね
Hmac付けてHiddenを引き回してたのに近い感じやな
52nobodyさん:2014/01/25(土) 01:31:58.66 ID:???
最近じゃhtml5のlocal strageが5MBytesある。
http2.0なぞ普及するとサーバ側が非同期にpullするサービスも増えてくるのかしらん。
53nobodyさん:2014/01/25(土) 07:04:11.94 ID:HM5WIj95
ログイン実装をFWに頼らず自力でやろうと思ってます
cookieの存在・仕様については無知なので以下の流れで本当に大丈夫なのか心配です

1.パスワード等でログインが成功したらcookie["token"]にランダム文字列を格納(Aとする)
2.Aをデータベースの個別のUser情報にも記録(Bとする)
3.毎回ユーザーがアクセスする度にA(cookie側)とB(DB側)が一致するかチェック
 一致すればログインされてる 一致しなければ未ログイン
4.もしtokenが作られて24時間経てばtokenを一度破棄してログアウトさせる

これで十分にセキュアなログイン仕様となるでしょうか?
54nobodyさん:2014/01/25(土) 10:14:52.55 ID:???
>>53
>>cookie["token"]にランダム文字列を格納
これがセキュリティ的にまずいかも。
通常は、トークンを自前で作ることはせず、セッションIDの自動発行にまかせる。
また、ログイン機能自体もセッションをメインで作るのが普通だと思うけどね。
そうすれば、DBへの問い合わせとか不要だし。
55nobodyさん:2014/01/25(土) 10:48:20.53 ID:???
セッションにログインフラグ立てればいいんじゃね
56nobodyさん:2014/01/25(土) 11:48:58.68 ID:???
>>53
まずはここの「安全なウェブサイトの作り方」を見る。
http://www.ipa.go.jp/security/vuln/websecurity.html

>>53が書いている処理は、PHP標準のセッション処理を使ったほうが良い。
57nobodyさん:2014/01/25(土) 17:25:45.84 ID:???
>>53
親父がログインしたエロサイト息子が見放題のまき〜
58nobodyさん:2014/01/25(土) 18:06:32.82 ID:???
>>57
それは、クッキーでもセッションでも変わらないんじゃない。
ログアウトの実装次第であって。
59nobodyさん:2014/01/25(土) 18:24:43.55 ID:???
通販サイトの、「チェックした商品の履歴」辺りってヤバイよね?
60nobodyさん:2014/01/26(日) 01:40:38.55 ID:tfpbRtMA
自分もログイン機能を作りたいんですけど
セッションにユーザーid、ユーザー名を保存して
ログインが必要なページではセッションに
ユーザーidがあるか確認するというやり方で実装しました。
これだとセッションが切れると一緒にログインも切れてしまいます。
ブラウザを閉じるまでログインを維持するにはどうしたらいいでしょうか?
61nobodyさん:2014/01/26(日) 04:26:44.36 ID:???
PHPで回答してやろうと思ってチェックしてるけどなんか歌の話しててチャンスがないんだがあいつら馬鹿か
62nobodyさん:2014/01/26(日) 07:45:41.36 ID:???
63nobodyさん:2014/01/26(日) 09:51:54.84 ID:???
>>60
セッションが切れるとログインも切れるってのは正常な動作なんだが
セッションのタイムアウトを伸ばせばいい
6453:2014/01/26(日) 10:59:50.06 ID:LLTt79Q+
皆さんありがとうございます
いまいちセッションが何なのかよくわかっていませんでした(cookieの別名ぐらいの認識)

よくサンプルコードでsession["user_id"] = hogehoge みたいなのを見かけて、
これだとクッキーにuser_idが書き込まれちゃうからありえない実装だ!と勘違いしてました
この場合["user_id"] = hogehogeはPHPのsession内部で管理していいて、
ユーザー側のcookieにはsession_idしか残らないんですね
一瞬で理解が深まりました本当にありがとうございます
65nobodyさん:2014/01/26(日) 11:51:46.45 ID:???
>>60
デフォルトでは、1/100の確率で、24分より古いセッションファイルが消える。
設定を変更するには、gc_maxlifetime の設定値を伸ばせばいいよ。
たとえば、こんな感じだと3時間はセッションが切れない。

ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
ini_set('session.gc_maxlifetime', 3 * 60 * 60);

session_start();

>>ブラウザを閉じるまでログインを維持するにはどうしたらいいでしょうか?
これは、わからない。
ただ、あまり長い時間セッションを有効にするとセキュリティ上まずいと思う。
6660:2014/01/26(日) 13:15:54.64 ID:tfpbRtMA
>>63 >>65
ありがとうございます。
>>65のやり方でやってみようと思います。
67nobodyさん:2014/01/26(日) 13:36:49.78 ID:???
>>80
http://www.tohoho-web.com/wwwcook.htm
Cookieの書き込みのパラメータのところ参照
http://ja.wikipedia.org/wiki/HTTP_cookie
クッキーの適用範囲と有効期限参照
6867:2014/01/26(日) 13:37:35.48 ID:???
>>80じゃなくて>>60
69nobodyさん:2014/01/26(日) 15:52:13.03 ID:???
延々とセッションの話してるこっちも似たようなもんでしょ。
70nobodyさん:2014/01/26(日) 20:16:47.31 ID:???
>>61
引き続き監視頼む。
71nobodyさん:2014/01/26(日) 20:34:26.69 ID:???
>>70
自演ウザい
72nobodyさん:2014/01/26(日) 22:49:38.34 ID:???
妄想で書き込んでる>>71がちょっとかわいそう
脳の病気かな、それとも心の病気かな
73nobodyさん:2014/01/26(日) 22:55:32.47 ID:???
3Dの話出てるぞ。
74nobodyさん:2014/01/26(日) 22:56:21.12 ID:???
監視スレでも立てて向うでやってれば?
75nobodyさん:2014/01/26(日) 23:02:50.28 ID:???
>>71
妄想の垂れ流しは他所でどうぞ。
76nobodyさん:2014/01/26(日) 23:11:10.98 ID:???
3DグラフィックはPHPの専門外だろw
行ける猛者は行ってこいw
77nobodyさん:2014/01/27(月) 03:04:42.97 ID:???
漠然と3Dって言われてもな
DirectXの3Dモデルに独自フォーマットのXファイルってやつがあって
Xファイルにはバイナリとテキストと2種類あるが
テキストのほうならPHPでも出力できる
テンプレートと頂点情報を文字列として出力するだけだからな
そういう話?
78nobodyさん:2014/01/27(月) 16:05:44.71 ID:YzEqdDGf
PHPで作成したWEBアプリの決済システムについて質問です。
無料サービスに、特典を上乗せした有料会員を募集しようと思っています。
そこで、PHPと連携できる決済システムなどはありますでしょうか?

たとえば、決済が済むと、無料会員から有料会員へ自動で変更できるような
APIを提供している決済システムなどです。
現在、paypalなどを考えているのですが、こうしたAPIが無いようでいまだ検討中です。
よろしくお願いします。
79nobodyさん:2014/01/27(月) 18:11:35.27 ID:???
>>78
PHPと連携できる決済システムならググれば見つかる。
会員のグレードは決済システムとは無関係のビジネスロジックなのだから、自動で連携できる決済システムはないんじゃないかな。
80nobodyさん:2014/01/27(月) 19:57:51.65 ID:bUMgBNWh
perlなら宮川達彦が何か作ってただろうな
8178:2014/01/27(月) 20:26:35.59 ID:VwC5UIRJ
>>79
実は、検索はしたのですが、これといったものが見つからなかったのです。
そこでPHP使いの皆さんはどうしているのかと思い質問させて頂きました。
決済システムの利用は、個人だとハードルが高いのかもしれませんね。
それか調べ方が悪かったのかな。もう少し調べてみます。
ありがとうございました。
82nobodyさん:2014/01/27(月) 20:37:46.66 ID:???
>>79も言ってるけど会員のグレードを自動で移行できるロジックは自作するしかないよ
決済システム自体は別に個人でも普通に導入できる
8378:2014/01/27(月) 21:15:11.18 ID:VwC5UIRJ
>>82
レスありがとうございます。
「決済システムの導入」と「会員のグレードの変更」は別物と考えた方がいいのですね。

そうであるなら、まずは、「決済システムの導入」に注力したいと思います。
結構、難しそうですが、PayPalを候補に考えてます。
それで上手くいったら、次に、「会員のグレードの変更」にもチャレンジしたいと思います。

この2つを一度で済ませられると考えたのが良くなかったみたいですね。
ありがとうございました。
84nobodyさん:2014/01/30(木) 06:30:49.21 ID:M3G3bQxX
HTTPレスポンスヘッダーを明示的に記述したい場合に
@ini_set('default_charset', 'UTF-8');
Aheader("Content-type: text/html; charset=utf-8");
はどう違うのですか?

@はスクリプト終了時に元の値に戻されるとのことですが……
使い分けの方法などあれば教えていただきたいです。
85nobodyさん:2014/01/30(木) 10:23:27.80 ID:???
default_charset は
Content-Type: text/html; charset=UTF-8 の後半部分だけ
86nobodyさん:2014/01/30(木) 12:37:38.81 ID:M3G3bQxX
@ini_set('default_charset', 'UTF-8'); ini_set('default_mimetype', 'text/html');
Aheader("Content-type: text/html; charset=utf-8");
の違いはないという認識でいいんですかね?
header()はLocationとかヘッダーのiniでいじれない部分を変更できるということですかね
87nobodyさん:2014/01/30(木) 12:41:30.94 ID:???
マニュアル読め
88nobodyさん:2014/01/30(木) 21:56:15.59 ID:???
>>84
ini_setで指定しているのはあくまでデフォルトの設定。
headerのほうを指定するとそれが上書きされる。
89nobodyさん:2014/02/02(日) 00:03:04.56 ID:6TG0eOwN
ActiveRecordを継承するModelモデルがあったとして
テーブルにinsertするaddメソッドを作るとき
staticメソッドにすべきかどうかを教えていただきたいです。
以下の2つで迷ってるんですが正解ってあるんでしょうか。

public function add($hoge) {
 $this->hoge = $hoge;
 return $this->save();
}

$model = new Model;
$model->add($hoge);

----------

public static function add($hoge) {
 $model = new static;
 $model->hoge = $hoge;
 return $model->save();
}

Model::add($hoge);
90nobodyさん:2014/02/02(日) 02:48:14.87 ID:???
議論のあるところですが、Frameworkの流儀に倣うのがよいでしょうね
元々はテーブルがクラスでインスタンスが行になる感じですね
クラスの得意メソッドが、PHPだとStaticという表現になります
91nobodyさん:2014/02/02(日) 03:55:43.87 ID:???
>>89
ARでは、クラス -> テーブル、インスタンス -> 行、プロパティ -> カラム、という表現
insertはテーブルに対する操作なので、インスタンスではなくクラスに対するメッセージ==クラスメソッドで表す
RailsのARだとまさにClassMethodsつー思い切ったモジュールがあって、このcreate()がinsertに対応しているので
お宅の求めているものにかなり近いだろう
https://github.com/rails/rails/blob/40e7fe3451df8e5b454f7d0472396d2429edc0e5/activerecord/lib/active_record/persistence.rb
92nobodyさん:2014/02/02(日) 07:28:04.31 ID:???
出番だぞ

724:デフォルトの名無しさん :2014/02/02(日) 04:29:49.87 [sage]
1000日後の日付をYYYY-MM-DD形式で取得するのに簡単な方法はありますか?
前提条件はできるだけ少ないほうがうれしいです
93nobodyさん:2014/02/02(日) 09:49:34.74 ID:???
いつから1000日後よ
94nobodyさん:2014/02/02(日) 12:30:52.38 ID:???
DateTimeクラスのaddメソッド
95nobodyさん:2014/02/02(日) 12:44:47.02 ID:XaYZuhBO
function view() {
extract([ "v1" = > "aaa" ]);
require("test.php");
}


test.php
<?
function func() {
echo $v1; // ここで$v1を表示するにはどうしたらいいですか
}

global $v1 と $GLOBALS['v1'] でも表示されません
96nobodyさん:2014/02/02(日) 14:59:01.63 ID:???
requireの場所違くね
97nobodyさん:2014/02/02(日) 15:25:36.73 ID:???
func(extract([ "v1" = > "aaa" ]))じゃダメなの?
98nobodyさん:2014/02/02(日) 15:26:50.98 ID:???
突っ込みどころが多すぎる
99nobodyさん:2014/02/02(日) 15:34:01.86 ID:???
一番手っ取り早い方法

function〜 {と } の行を全てコメントアウト
= > を => に
<? を <?php に
view()のあるファイルの先頭に <?php 追加

これでいけると思うが
100nobodyさん:2014/02/02(日) 16:00:51.61 ID:???
>>97は無視してくれ extractという関数を理解していなかった
extractってのはシンボルテーブルに変数をインポートする関数なんだが
別のphpファイルだとシンボルテーブルを共有してないっぽい
101nobodyさん:2014/02/02(日) 16:07:28.45 ID:???
関数ごとにシンボルテーブル違うっぽいな
10295:2014/02/02(日) 16:13:00.92 ID:???
無理ぽいのでとりあえず引数で渡すことにします。
皆さんありがとうこざいました。
103nobodyさん:2014/02/02(日) 16:13:21.82 ID:???
質問者は関数定義だけしてその関数を呼んでない、というのもあるw
10495:2014/02/02(日) 16:13:50.74 ID:XaYZuhBO
ID出し忘れました
105nobodyさん:2014/02/02(日) 16:20:08.31 ID:???
1 <?
2 $a = "aaaaaaaaaaaaaaaaaaaaa";
3 echo "in global\n";
4 print_r(get_defined_vars());
5 function bbb(){
6 $b = array("bbbbbbbbb" => "bbbbbbbbbbbbbbbbbb");
7 extract($b);
8 echo "in function\n";
9 print_r(get_defined_vars());
10 }
11 bbb();
12 echo "in global\n";
13 print_r(get_defined_vars());
106nobodyさん:2014/02/02(日) 16:20:50.71 ID:???
test.phpの実行結果

in global
//大量に変数が表示される
[a] => aaaaaaaaaaaaaaaaaaaaa
in function
Array
(
[b] => Array
(
[bbbbbbbbb] => bbbbbbbbbbbbbbbbbb
)

[bbbbbbbbb] => bbbbbbbbbbbbbbbbbb
)
in global
//大量に変数が表示される
[a] => aaaaaaaaaaaaaaaaaaaaa

どうやらextract($b)によって変化するのはbbb()のシンボルテーブルのみ
107nobodyさん:2014/02/02(日) 16:28:01.37 ID:???
あと面倒くさいから確かめてないけど
func()でglobalをつかってもtest.phpのシンボルテーブルが参照されるだけで
requireされた場所(views)のシンボルテーブルが参照されるわけではないんじゃないの
108nobodyさん:2014/02/02(日) 16:39:41.69 ID:???
<?

$v1 = '';
function view() {
global $v1;
extract(array( "v1" => "aaa" ));
require("test.php");
}
view();
testfunc();
--------------------

<?
function testfunc() {
global $v1;
echo $v1; // ここで$v1を表示するにはどうしたらいいですか
}
--------------------
109nobodyさん:2014/02/02(日) 16:44:10.62 ID:???
test.php
<?
require('test2.php');
function view(){
extract(array("v1"=>"aaa"));;
func(get_defined_vars());
}
view();

test2.php<?
function func($hoge){
echo $hoge["v1"];
}

これじゃダメ?
110108:2014/02/02(日) 16:46:04.11 ID:???
上が適当なファイルで下がtest.php
extract(array( "v1" => "aaa" ));
は動かしたphpのバージョンが古いので変更している。

requireはあくまでファイルを読み込むためのもの。例え関数内で読まれたとしてもその意味は変わらない。
view関数の中でrequireしても、view関数内の変数がglobalの対象にならないよってことで。
111nobodyさん:2014/02/02(日) 16:47:28.98 ID:???
個人的に関数を呼び出すごとにrequireっておぞましいんだが普通なんか?
112nobodyさん:2014/02/02(日) 16:56:25.03 ID:???
>>111
あまりrequireすることがなくてサイズが大きいやつだとオーバーヘッドになるから、その関数内でやる場合もあるかも。
ただ効果があるかどうかは知らない。
113nobodyさん:2014/02/02(日) 17:16:05.52 ID:???
自分は主な関数ごとにファイルを作成しているから、使う関数の数だけrequireするよ。
たいていは、多くても10ファイル前後におさまる。
速度も別に遅くならないし、気にならない。
まあ、auto_loadが関数の読み込みにも使えたら便利なんだけど。
114nobodyさん:2014/02/02(日) 17:38:45.22 ID:UuBd4EHo
質問と言って良いかわからんが

curl_multi_exec を使うと「エラー時のエラー番号が0」になる人いない?
バージョンは最新のどれでも。

curl_exec だとしっかりエラー番号も取れるんだけどねー。
115nobodyさん:2014/02/02(日) 17:42:38.20 ID:???
仕様見てみりゃわかる。
multi は個別にエラーチェックしないと
11689:2014/02/02(日) 17:53:21.79 ID:6TG0eOwN
>>91
ありがとうございます。クラスメソッドにすることにしました。
クラスメソッドの使いどころについてもうちょっとお聞きしたいです。
オブジェクト指向の勉強にとデザインパターンの入門サイトを見ていたのですが
factoryメソッドの紹介でこんなコードが載ってました。
http://codepad.org/KLCiPfDa
このReaderFacotoryクラスのメソッド2つをクラスメソッドにしない理由がよくわかりません。

$factory = new ReaderFactory(); // このnewが無駄に見えて仕方ないです
$data = $factory->create($filename);

単に $data = ReaderFactory::createReader($filename);
とせずインスタンスを作る利点は何なのでしょう?
117nobodyさん:2014/02/02(日) 18:13:08.61 ID:???
>>116
載ってるコードだけで完結させるならどっちでもいい。public staticにする必要はあるけど。
addとかdeleteとかメソッド作ったりしてクラスを改造していくならインスタンス作るほうが便利。
118nobodyさん:2014/02/02(日) 19:09:25.78 ID:???
95 はテンプレートエンジンじゃないの
119114:2014/02/02(日) 19:34:26.88 ID:???
>115
>multi は個別にエラーチェックしないと

エラーメッセージは正確に出るのに
番号は出ない仕様なの?

よければ、マニュアルに書いてあったら教えてください。
120nobodyさん:2014/02/02(日) 21:36:29.16 ID:???
>>166
create
121nobodyさん:2014/02/02(日) 21:37:01.14 ID:???
ぉん?
122nobodyさん:2014/02/02(日) 23:19:31.40 ID:???
>>166
依存性を小さくできる、パターンに従っていれば伝わりやすい、OO的に自然で理解に手間がかからない

上のファクトリは単純にStaticにしても動かない
ファクトリはサブクラスにオブジェクト生成の詳細を任せるパターンだから、createReaderはオーバーライド前提になっている
ReaderFactory::create()からサブクラスのcreateReader()を呼ぶのは、親にとって未知の子孫固有のメソッドを呼ぶこと
そのためget_called_class()なり遅延束縛なりして実行時にstaticメソッドのバインド先を決定してやる必要があるという
謎設計に帰結する。遅延束縛がなかったころはさらに不自然だった。

OOPではクラスメソッドは(各インスタンスではなく)クラス自身の振る舞いを記述するものだと言っていいだろう
コード上でメッセージをやりとりしてシステムを形成しているオブジェクト==インスタンスだとすれば、クラス自身は何か?
この設定いかんによって、クラス固有のメソッドとして自然なものと不恰好なものを区別できる

static張りまくって関数ポインタのかたまりを作る人もいし、それがよいケースもある
しかし手続きからOOに入ってやりがちな、よくないstaticについてはstatic evilとかでぐぐれば情報はある
123122:2014/02/02(日) 23:24:15.85 ID:???
つられたw
>>122>>116
124nobodyさん:2014/02/03(月) 03:26:24.18 ID:???
遅延束縛なかったら静的メソッドのユニットテスト糞になるからな
125nobodyさん:2014/02/09(日) 11:25:27.29 ID:???
php関数名って一貫性なさすぎだろ
一旦全部エイリアスにして新しいの付けるべき
126nobodyさん:2014/02/10(月) 01:52:41.55 ID:???
isset は is_set で有るべきだと思うんだ
127nobodyさん:2014/02/10(月) 03:44:49.98 ID:???
alias.phpでも作ってろ
128nobodyさん:2014/02/10(月) 09:41:58.22 ID:???
>>125
正しい名前でラップするには都合がいいだろう?
129nobodyさん:2014/02/11(火) 22:13:31.86 ID:ak6dJouy
OS XP
php ver 4

適切なスレが見つからなかったのですが、
phpでmysqlのテーブルから文字列を取ってきて表示させようとしたのですが、
半角パーセント記号を含む文字列において、パーセント記号が消え、次の文字が変な記号になってしまいます。
文字列中の%を\%などとしてみてもダメでした。
解決法を教えてください。
130「ガスライティング 集団ストーカー カルト」で検索を!:2014/02/11(火) 23:02:18.69 ID:lii3ZN0H
★マインドコントロールの手法★

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法


↑マスコミや、カルトのネット工作員がやっていること

TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。

リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
,.,.,,
131nobodyさん:2014/02/12(水) 09:15:48.34 ID:???
>>129
php4か…
新規で学習中なら現在主流のphp5をおすすめします。
(できればOSも来年度以降サポートがあるものが(winでもLinでも)望ましい)
mysqlではパーセント記号がワイルドカードとして扱われるからそれが影響してるのかも。
phpmyadminとかで取り出す前のデータが化けてないか確認してみるといいかも。
化けてるならinsertに問題あり。
化けてないならselectに問題あり。
132nobodyさん:2014/02/12(水) 10:53:26.54 ID:???
>>129
表示はどうやってるの?
printf 使ってるなら、1番目は%sにして文字列は2番目で
133nobodyさん:2014/02/12(水) 11:57:19.74 ID:???
>>129
どの文字がどう変わるのか、もう少し具体的に言った方がアドバイスを
貰いやすいよ。
134nobodyさん:2014/02/12(水) 13:37:43.31 ID:???
>>129
base64というものがありまして。
抽出、表示を一気にやる前に、抽出したものをそのままログファイルなどに出力して確認してはどうだろう。
135nobodyさん:2014/02/12(水) 19:37:08.84 ID:???
ceil(7000*1.08)が7561になるのは仕様?
どうすれば7560って出せるの?
切り上げでね。
136nobodyさん:2014/02/12(水) 19:55:29.57 ID:???
137nobodyさん:2014/02/12(水) 21:41:24.51 ID:???
>>135
PHPのせいといいたいかもしれないけれど、小数がどう扱われるかを勉強したほうがいい。
何かと付きまとう問題なので。
138nobodyさん:2014/02/12(水) 21:51:04.93 ID:???
>>135
仕様

ceil(7000*108/100)とすればよい
消費税だろうけど、浮動小数点数型の丸め誤差は勉強した方がよいと思うよ
139nobodyさん:2014/02/12(水) 21:53:28.41 ID:rdsqA60A
この程度で丸め誤差とか致命的に腐ってるだろ
140nobodyさん:2014/02/12(水) 22:24:47.86 ID:???
>>139
腐ってない言語ってなにかあるのか?
141129:2014/02/12(水) 22:44:26.79 ID:J2CtCpwd
具体的には下の通りです。
ちなみに出力はflashでしています。
(flashが原因でないことは確認しています)

【テーブルの文字列】
フィールドdata2 「ダメージを50%カット。」

【php】
if(!$mysql->query("SELECT * from table")){
}else{
while($row=$mysql->fetch()){ $data=$data.$row["data1"].",".$row["data2"].",";
}
echo "data=".$data;

【出力結果】
ダメージを50?≪ット。
142nobodyさん:2014/02/12(水) 22:46:17.19 ID:???
すみません。phpの方コピペミスで"}"足りないです。
143nobodyさん:2014/02/12(水) 22:47:07.64 ID:???
>>139
Perl、Python、Ruby すべて 7561 になる。
これは1.08が2進数では循環小数になることが影響している。
144nobodyさん:2014/02/12(水) 22:54:42.67 ID:???
>>139はCOBOL以外は全部腐ってるって言いたいんだろ。
145nobodyさん:2014/02/12(水) 22:59:09.78 ID:???
>>129
insert時にミスってるように見える。
コマンドラインのmysqlで直接データ見たほうが良いと思う。
146nobodyさん:2014/02/12(水) 23:02:39.00 ID:???
Pythonならdecimal、RubyならBigDecimalがあるけど、PHPの場合は…gmp_*ぐらいしかないか
147nobodyさん:2014/02/12(水) 23:06:27.54 ID:???
>>145
テーブルの文字列は、phpmyadmin上で直接手打ちしました。
phpmyadmin上では正常に入力されているように見えます。
148nobodyさん:2014/02/12(水) 23:12:22.34 ID:???
>>146
文字列を使って小数点を扱うクラスとしてはdecimal便利だよね

PHPは利用用途が多くないから実装されてないな
149nobodyさん:2014/02/12(水) 23:41:18.22 ID:???
>>139
レス乞食おつ。
150nobodyさん:2014/02/12(水) 23:45:37.82 ID:???
>>141
化けるのと同じくらい深刻なトラブルがあるんだけど、
data= が出力されてないよ。大丈夫なのかな。心配だよ。
151nobodyさん:2014/02/12(水) 23:59:12.57 ID:???
>>141
すみません。一応通常の動作は確認済みです。
ここに要点だけ書くためにいじったら変になってしまい。。

解決策が無いようであればおとなしく全角%にします。。。
152nobodyさん:2014/02/13(木) 00:47:36.04 ID:???
%がおかしなるのはエスケープ周りじゃないかなあ
文字コードも分からんし
153nobodyさん:2014/02/13(木) 00:57:57.07 ID:???
要点だけ書くなら検証方法も要点にまとめてほしいもんだわ。
154nobodyさん:2014/02/13(木) 11:55:43.40 ID:???
>>129
"?&amp;lt;&amp;lt;" この文字を "%" に再変換してから出力すればいいじゃない。
最終手段だけど。

まあ、文字エンコードの設定のどこかに不統一があるのが有力な原因だと思う。
それか、環境のせいかな。
とりあえず、文字エンコードを設定できるすべての箇所できちんと統一すればいいよ。

あと、htmlspecialcharsを通してるなら文字コードの指定もした方がいい。
155nobodyさん:2014/02/13(木) 11:58:17.76 ID:???
訂正
"?<<" この文字を "%" に再変換・・・。
156nobodyさん:2014/02/13(木) 14:12:35.39 ID:???
原因箇所を特定しろ
mysqlに入ってるデータがすでに?&lt;&lt;になってるのか?
それならinsertするとこに問題があるから見なおせ
157nobodyさん:2014/02/13(木) 14:13:29.51 ID:???
ってinsert時は正常って書いてた
文字コードがおかしいだけだな
158nobodyさん:2014/02/13(木) 16:11:59.04 ID:???
MDB2を使って欲しいけどphp4だしな…
159nobodyさん:2014/02/13(木) 16:33:14.84 ID:???
SET NAMES utf8みたいなやつとか
照合順序をutf8_general_ciみたいなやつが怪しい?
160129:2014/02/13(木) 19:59:48.42 ID:???
文字コードは、mysql(DB、照合順序)、phpファイル共にutf8に統一しています。
mysql_query("set names utf8");
も記述していましたが、消しても変わりませんでした。
本件については全角%でしのごうと思います。
なにかわかりましたらここに戻ってきます。
ありがとうございました。
161nobodyさん:2014/02/14(金) 00:12:14.57 ID:FqeyPeT2
環境変数らんぐは?
162nobodyさん:2014/02/14(金) 14:51:37.85 ID:???
【OS名】IIS7 【PHPのバージョン】5.4
PHPの文字コード「JIS」についてコードマップが
記載されている資料ってどこかにありませんか?
せめてJIS1990相当だ、とか1997だとかだけでも判るといいんですが…
163162:2014/02/14(金) 14:53:21.20 ID:48zvG1O+
あ、チェック外して忘れてsageてもうた
164nobodyさん:2014/02/14(金) 15:05:05.67 ID:???
大体は
http://www.php.net/manual/ja/mbstring.encodings.php
ここで解決するんだが、JISだけ抜けてるな
165nobodyさん:2014/02/14(金) 15:35:44.61 ID:???
>>164
ISO-2022-JP
166nobodyさん:2014/02/14(金) 16:32:20.97 ID:???
>>165
JISとISO-2022-JPは別だよ
167nobodyさん:2014/02/14(金) 16:34:11.85 ID:???
isoってカナ入って無くないっけ
168nobodyさん:2014/02/14(金) 18:00:58.26 ID:???
>>166
PHPのmdstringのソースコードのREADME_PHP3-i18n-jaに
- JIS
standard: JIS
alias: N/A
mime: ISO-2022-JP
ってあるから、PHPでJISといえばISO-2022-JP
NEWSに、ISO-2022-JP-2004対応って書いてあったので
そこまで対応してるんだと思ってました。
すみません。
169nobodyさん:2014/02/14(金) 21:34:24.52 ID:???
>>160
釣りはもう沢山。解決に導くためのレスだけスルーするとかわかりやすすぎんよ
170nobodyさん:2014/02/15(土) 17:21:47.48 ID:NpO2DRH6
最強のフロントエンドエンジニアsasaplus1様だ!
171nobodyさん:2014/02/15(土) 18:02:22.51 ID:jT0c7PHQ
質問です。

echo や var_dump() などをしても出力をさせない方法はありますか?
172nobodyさん:2014/02/15(土) 18:44:55.60 ID:???
全てを出力させないのであればob_end_cleanを使用する。
特定の関数だけ出力させないのであれば自作する。
173nobodyさん:2014/02/15(土) 23:02:38.49 ID:???
標準出力を閉じるかlinuxなら/dev/nullにリダイレクトする
174nobodyさん:2014/02/16(日) 00:50:01.37 ID:???
PHP厨の存在価値なんて釣られてなんぼだろw
PHP厨の分際で調子に乗るなよw
175nobodyさん:2014/02/16(日) 01:04:25.49 ID:/GeetU5z
【OS名】win7 32bit
【PHPのバージョン】5.3.5
【連携ソフトウェア】xampp 1.7.4
【質問内容】
セッションを開始して値が入っているかのチェックを
session_start();
if(isset($_SESSION['sample'])&amp;&amp;($_SESSION['sample'] !=null);){
//処理
}
としているのですが、これでよろしいでしょうか?
一般的な書き方があれば教えていただきたいです。
176nobodyさん:2014/02/16(日) 03:22:18.42 ID:???
値が入っている、の定義によるんじゃない
それ0とか空の文字列や配列はnullでスキップされるよ
一段目はissetだけにして、値のチェックなりフィルタなりは別にやったほうがいいんじゃない
177nobodyさん:2014/02/16(日) 04:01:37.18 ID:???
俺なら && empty() 使う
178nobodyさん:2014/02/16(日) 06:18:12.75 ID:???
入れ子が嫌いだから俺も&&だな
一般的な書き方は知らない
179nobodyさん:2014/02/16(日) 09:56:04.22 ID:???
アンドは && を使うけど、オアは or を使ってしまうのはオレだけか?
どうも || が馴染めないんだよね。USキーボードで打てないてのもあるけど。
180nobodyさん:2014/02/16(日) 14:51:20.17 ID:f2HQdmKQ
>>172-173
ありがとうございます、やってみます
181nobodyさん:2014/02/16(日) 14:53:34.56 ID:???
俺なら
if(!empty($_SESSION['sample'])){
  //処理
}

>>175で、最初にissetを使うのは、noticeエラーを出さないためのはず。
そのためだけなら、!emptyで代用できる。
また、0,"",false,null等もまとめて除外できる。

まあ、要件次第だけど。
182nobodyさん:2014/02/16(日) 19:56:37.15 ID:???
>>179

shift + backslash で出るでしょ普通に。
てか、パイプ使えないとすべてにおいて不便だと思うんだけど
183nobodyさん:2014/02/16(日) 21:31:55.04 ID:???
VB6.0やっててPHPを勉強しだしたらそんな感じに見えるかもしれない>or
184nobodyさん:2014/02/16(日) 21:57:44.32 ID:???
>182
USキーボードを日本語配列で使ってるから出ないんだわ。
同じようにアンダーバーも出ない。
185nobodyさん:2014/02/16(日) 21:58:31.84 ID:???
英字キーボード使ってるアピールするならちゃんと使えるようになってからにしてね
186nobodyさん:2014/02/16(日) 22:32:26.11 ID:???
>>184
使えねぇのはキーボードじゃなくてまぬけなおまえな
187nobodyさん:2014/02/16(日) 22:39:23.74 ID:???
USキーボード使う意味がわかりません
貧乏人かな?
188nobodyさん:2014/02/16(日) 22:43:16.45 ID:???
馬鹿相手にしてもしょうがないぞ
人と変わったことしてる俺ってカッコイイとか思ってるあほだから
189nobodyさん:2014/02/16(日) 22:50:02.42 ID:???
USキーボードは普通だろ?
日本語配列のまま使うのが変態なだけで
190nobodyさん:2014/02/16(日) 23:00:40.47 ID:???
そうだよ
191nobodyさん:2014/02/16(日) 23:23:08.42 ID:???
日本語キーボードに対応してないアプリケーションとかもあるからなあ
192nobodyさん:2014/02/17(月) 00:46:38.11 ID:???
>>191
聞いたこと無いなぁ
俺はUSだけど
193nobodyさん:2014/02/17(月) 00:48:34.47 ID:???
日本語キーボードをUS配列で使う(使わざるを得ない)人はいるけど、
わざわざUSキーボードをなんで日本語配列で使うんだろ?
壊れた配列並に頭も壊れてるんかな?
194nobodyさん:2014/02/17(月) 01:52:46.37 ID:???
これがまともな人間の思考回路



222:デフォルトの名無しさん :2014/02/17(月) 01:44:26.48 [sage]
PHP使うくらいならPerl4を使うけどな、このスレ的にも
195nobodyさん:2014/02/17(月) 02:18:16.39 ID:???
キーボードの話題はそこまでだ
実にくだらない
196nobodyさん:2014/02/17(月) 03:21:24.50 ID:???
>>193
日本語の配列に対応してないキーボードとかあるだろ
エキセントリックなキーボードだとよくある
197182:2014/02/17(月) 04:46:23.32 ID:???
久しぶりに絶句した。
198nobodyさん:2014/02/17(月) 09:54:11.25 ID:???
久しぶりに息絶えた
199nobodyさん:2014/02/17(月) 13:00:53.38 ID:5TF8zSur
ブラウザ無しでPHPから
<SCRIPT LANGUAGE="JavaScript">
<!--

// -->
</SCRIPT>
この中を実行とか出来ますかね?
200nobodyさん:2014/02/17(月) 13:04:33.39 ID:???
ちょっと何言ってるかわからないですね
201nobodyさん:2014/02/17(月) 13:07:00.95 ID:???
>>200
ブラウザで>>199のページを見たら<script></script>の中が実行されますよね?
それをPHPのみで実行したいという事です。出来ますかね?
202nobodyさん:2014/02/17(月) 13:14:53.53 ID:???
一体何がしたいんだ
つかクライアントプログラムと
サーバープログラムの違い判ってるか?
203nobodyさん:2014/02/17(月) 13:17:34.35 ID:???
何がしたいかはすぐわかるだろ。
出来ない。
204nobodyさん:2014/02/17(月) 13:23:45.85 ID:???
>>201
<script></script>をPHPに書きなおせばおk
205nobodyさん:2014/02/17(月) 14:00:25.40 ID:???
Javascriptはクライアントサイドのスクリプトだから、クライアント(Webブラウザ)がないと実行されないよ。
206nobodyさん:2014/02/17(月) 15:06:18.25 ID:???
phpでjsのコード出力すればブラウザでそのページ表示した時にそのjsコードが実行されるかってこと?
それなら実行される
207nobodyさん:2014/02/17(月) 15:12:08.69 ID:???
「PHPのみ」ってのが意味不明
208nobodyさん:2014/02/17(月) 15:13:14.41 ID:???
php -f index.html
でjsコードを実行したいってこと?
無理
馬鹿なのかな
209nobodyさん:2014/02/17(月) 15:15:54.11 ID:???
きっとコンソールでjavascriptが実行したいってことだろ
phpと全く関係ないな
210nobodyさん:2014/02/17(月) 15:19:31.75 ID:S7yDbQ6X
ボタンを押したときにファイルを書き込むときの、htmlとphpを知りたいです。

<form name="message" method="post">
<textarea name="sendMessage" cols="70" rows="4">
</textarea>
<input type="submit" name="submit" id="submit" value="送信" />
</form>

これで、message.txtを作るには、

<?php
$filename = "message.txt";
$string = ???(ここ不明)
file_put_contents($filename, $string, LOCK_EX | FILE_APPEND);
?>

とするとして、それをsubmitに割り当てる方法を教えてください。
211nobodyさん:2014/02/17(月) 15:24:20.08 ID:???
212nobodyさん:2014/02/17(月) 15:25:05.67 ID:???
なんか…頭痛いな…
$string = $_POST["sendMessage"]; だけじゃねーの?
あと、textarea〆タグ改行すると余計な改行入るで
213nobodyさん:2014/02/17(月) 20:15:12.48 ID:Vu1akjEB
鯖と蔵の区別がつかないのがぺちぱーの既定値だからな
214nobodyさん:2014/02/17(月) 23:33:27.91 ID:???
なに作るか知らんけど掲示板とかそういうのだったらセキュリティに気をつけて。
215nobodyさん:2014/02/18(火) 00:50:23.89 ID:???
別に俺に迷惑がかかるわけじゃないから何を作られても困らん
216nobodyさん:2014/02/18(火) 02:30:03.17 ID:j8Kv6pSE
HTMLで使う記号をエスケープするのではなくて
本当に素のまま表示しているphpがあったんですがどうやってるんでしょう?
header()で何か指定するとかですか?

&lt;br&gt;

ではなくて

<br>

と ソースコードもブラウザでの表示もされてるんですが。
217nobodyさん:2014/02/18(火) 02:43:16.18 ID:???
ん?
218nobodyさん:2014/02/18(火) 02:44:01.81 ID:???
ただ単にサーバの設定でPHPをhtmlで処理しないようにしているだけなんでしょうか。
219nobodyさん:2014/02/18(火) 03:06:06.27 ID:???
ヒアドキュメントのことか?
220nobodyさん:2014/02/18(火) 03:14:11.61 ID:???
>>219
いやヒアドキュメントではなくて
例えばmoji.txtに色々タグ書いてアップしても
サーバの設定でhtml処理されないようにしてたら
普通にテキストが表示されますよね?
PHPでもそういうのがあったので何かPHPから処理出来るのかなって。
でも単純にサーバの設定でPHPが動作しないようになってるだけなのかも。
PHPというよりも特定のファイルだけとかかも。
221nobodyさん:2014/02/18(火) 04:34:21.44 ID:???
PHPともお前の人生とも関係ない
222nobodyさん:2014/02/18(火) 05:19:14.56 ID:???
>>220
…単にエスケープして表示してるだけじゃないか?
223nobodyさん:2014/02/18(火) 05:24:46.23 ID:???
>>>222
いやそれならソース表示したら
<>タグとかがエスケープの記号になってるはずだけどなってない。
更に調べてみたけどやっぱしPHPファイルでPHPの処理をした後に
なんらかの形でエスケープしてない<>素のタグの文字列とかを出力してるみたい。
どうやってるんだろうなぁ。
224nobodyさん:2014/02/18(火) 05:27:40.99 ID:???
>>223
んじゃあMIMEタイプが text/plain になってんじゃないの?
レスポンスヘッダみてみ
225nobodyさん:2014/02/18(火) 05:42:21.95 ID:???
>>224
同じようにするには
こっちのスクリプトにも
header()で設定すればいいのかな?
226nobodyさん:2014/02/18(火) 05:48:48.40 ID:???
…レスポンスヘッダみてみ。
227nobodyさん:2014/02/18(火) 05:59:47.51 ID:???
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Mon, 17 Feb 2014 20:57:26 GMT
Content-Type: application/x-javascript
Connection: close
Vary: Accept-Encoding

こうなってました。
JavaScriptのコードを吐いてるみたいですね。
同じようにブラウザから見てもただのテキストにするには
application/x-javascript にしとけば大丈夫でしょうかね?
228nobodyさん:2014/02/18(火) 06:02:33.72 ID:???
やっぱし application/x-javascript にしたらイケました!
PHPから文字列出力しても全部普通のテキストとして解釈されます。
ちなみに、text/plain ではダメでした。

レスくれた方、ありがとうございました。
229nobodyさん:2014/02/18(火) 06:06:26.84 ID:???
>>227
実際に返却しているものがJavaScriptのコードかどうかはそれからじゃわからないけれど。

> application/x-javascript にしとけば大丈夫でしょうかね?
JavaScriptのコードを出力したいのなら。
230nobodyさん:2014/02/18(火) 06:08:01.30 ID:???
>>228
だからIEは使うなという話だ。
231nobodyさん:2014/02/18(火) 06:09:43.88 ID:???
>>229
出力されているのはJavaScriptのコードでした。
自分がやりたいのもJavaScriptのコードの出力です。
<script src="test.php"></script>
でtest.phpから素のJavaScriptのコードを出力したら
PHPの処理とJavaScriptの処理が一緒に出来てたページがあったので
それと同じような事をしたかったんです。
232nobodyさん:2014/02/18(火) 06:11:34.46 ID:???
>>230
IEじゃなくてChromeなんですが
text/plainだとタグとかが処理されちゃってますね。

みなさんありがとうございました。
233nobodyさん:2014/02/18(火) 11:42:23.50 ID:???
なんか意味不明なんだが。
エスケープせず、そのままタグを出力すればいいんじゃないの。
234nobodyさん:2014/02/18(火) 11:57:38.48 ID:???
Content-type:text/html

<?php
echo '<script>alert("hello");</script>';
235nobodyさん:2014/02/18(火) 12:11:53.93 ID:???
type="text/javascript" つけてないからだろう
236nobodyさん:2014/02/18(火) 12:13:46.25 ID:???
>>234 が正解だと思う。
headerがどうとか、Content-Typeがどうとか難しく考えすぎ。
つーか基礎の基礎がわかってないっぽい。
237nobodyさん:2014/02/18(火) 12:22:33.68 ID:???
そんな事は分かってないとあの質問はできんよ。
238nobodyさん:2014/02/18(火) 12:51:34.41 ID:???
>>232
余談だけれど、text/plainをつかいたければ、レスポンスヘッダで X-Content-Type-Options: nosniff を送信する。
ブラウザが勝手にファイル形式を判断して適当に処理しちゃうのを防ぐ。
239nobodyさん:2014/02/18(火) 13:40:21.96 ID:???
>>236 だけど、基礎がわかってないのは自分の方でした。
JSからPHPを呼び出して、JSとして実行できるんだね。
知らなかった。
www.phppro.jp/phptips/archives/vol5/2

質問者の疑問点の解決策はここの注意書きにあった。
www.res-system.com/weblog/item/383

PHPから動的にJSを出力できると確かに便利だね。
240nobodyさん:2014/02/18(火) 14:35:23.52 ID:???
プロトコル抜く意味がわからんわ
hだけ抜くのも意味あんのかよって思うけど、全部抜いて何がしたいの
241nobodyさん:2014/02/18(火) 14:54:37.95 ID:???
242nobodyさん:2014/02/18(火) 15:36:08.70 ID:???
>>239
わかってないと思ったのなら黙っておくのがよい。
243nobodyさん:2014/02/18(火) 15:48:32.35 ID:???
>>242
つ鏡
244nobodyさん:2014/02/18(火) 15:59:04.49 ID:???
>>241
いやそんなんわかってるけど
今回必要か?って話
245nobodyさん:2014/02/18(火) 15:59:19.55 ID:???
レベル低くてhttp入れると書けない人もいる
246nobodyさん:2014/02/18(火) 17:13:02.89 ID:???
>>244
必要かどうかという話なら、どんなときでも必要無い。
247nobodyさん:2014/02/18(火) 18:03:13.75 ID:???
>>244
半年ROMってろ
248nobodyさん:2014/02/19(水) 13:03:15.14 ID:uro2XKIN
210です。
みなさん、ありがとうございます。
249nobodyさん:2014/02/19(水) 18:33:16.42 ID:WOyb+TV3
配列を正規表現で確認する方法ってないでしょうか?

$array = array('test');
preg_match('/(test)/', $array);
として、これならエラーになりますが、

preg_match('/(test)/', $array[0]);
これだとtrueになります。

foreachで$arrayを一件ずつ調べる方法とかではなく、
配列自体を正規表現にかけて、指定の文字列が含まれているか
判別する方法があれば教えて下さい。
250nobodyさん:2014/02/19(水) 18:42:44.31 ID:???
>>249
PHP 配列 正規表現 でそのものズバリでるやん
251nobodyさん:2014/02/19(水) 19:08:39.63 ID:???
>>249
あのさ、そもそも、例に上げてる
$array と $array[0] が、
別のものを指してるって気が付かんの?
252nobodyさん:2014/02/19(水) 19:09:33.44 ID:???
正規表現とかじゃなくても、普通の比較でもその両者は違うだろ
253nobodyさん:2014/02/19(水) 22:37:30.43 ID:???
>>249
preg_grep
254nobodyさん:2014/02/20(木) 11:11:47.59 ID:FjcGtyDL
メモリエラー(memory_limitがオーバー)した場合、
メールで警告文を送りたいのですが、
try catchみたいなので、実行できないですかね?

メモリエラーするとPHPの実行自体が止まってしまい、
メール送信できないのですが、良い方法があれば教えてください
255nobodyさん:2014/02/20(木) 11:50:59.43 ID:???
register_shutdown_function あたりに仕込めば取れるっしょ
256254:2014/02/20(木) 11:58:18.75 ID:???
>>255
出来ました!クラス内でも使えるし、こんな便利な関数があったんですね!
関数実行した後に画面をリロードすれば、エラーメッセージも表示しないし、
求めていた対策が出来そうです。ありがとうございました。
257nobodyさん:2014/02/20(木) 16:11:55.37 ID:???
メモリエラーで例外に飛ばないのは良くないよな
https://php.net/manual/ja/spl.exceptions.php
ありそうでない
258nobodyさん:2014/02/20(木) 16:26:17.05 ID:5OYsJS7P
phpのソースコードの出てるサイト知らない?
例えば、htmlspecialcharsがどのようにCで書かれてるか、とか
内部関数がどういう風に書かれているか調べたい
259nobodyさん:2014/02/20(木) 16:45:59.01 ID:???
PHP.net
260nobodyさん:2014/02/20(木) 16:52:41.58 ID:5OYsJS7P
マジで?
htmlspecialcharsで検索してみたけど、いつものマニュアルページに飛ばされた
ざっと見直してみたけどどこに書かれてる?
もしよければurl教えて欲しいんだけど
261nobodyさん:2014/02/20(木) 16:54:13.99 ID:???
262nobodyさん:2014/02/20(木) 17:01:20.30 ID:5OYsJS7P
なるほど、ハックせぇってことね
Webサイト上で見れれば楽だったんだけどなぁ
263nobodyさん:2014/02/20(木) 17:17:43.87 ID:???
264nobodyさん:2014/02/20(木) 17:40:11.78 ID:???
助かる
携帯からだとソースコード見れないから
ありがと
265nobodyさん:2014/02/20(木) 19:05:37.47 ID:???
>>262
> なるほど、ハックせぇってことね
ソースコード見たい→ソースコードの取得方法へのリンクに対する反応にしちゃおかしいね。

> Webサイト上で見れれば楽だったんだけどなぁ
リンク先にgithubへのアンカーがあるんだけど。
266nobodyさん:2014/02/22(土) 21:56:16.36 ID:vuNRI6C8
質問です
例えばこのスレはURLが
http://kohada.2ch.net/test/read.cgi/php/1390166591/
となっていますが、
http://kohada.2ch.net/index.php?mode=cgi&ita=php&dat=1390166591
のようにしないほうがいいのでしょうか?

後者はGETで通じると思いますが、前者みたいな情報の渡し方は何と呼んでいるのでしょう?
この2つはどのように使い分ければいいのでしょうか?
267nobodyさん:2014/02/22(土) 23:36:20.30 ID:???
両方ともGET。
とりあえずスレ違いだから細かいことはサーバ関係のところで聞くと良い。
268nobodyさん:2014/02/22(土) 23:41:52.03 ID:vuNRI6C8
すれ違いすいませんでした
269nobodyさん:2014/02/23(日) 10:55:19.64 ID:???
まあ PATH_INFO で
270nobodyさん:2014/02/25(火) 15:39:10.19 ID:WY/QKLno
【OS名】CentOS
【PHPのバージョン】5.3.3
【質問内容】
rdfファイルに書かれているRSS2.0で書かれたコードをHTML化したいです。
titleとlinkをHTMLでAタグ化したいのですが、フリーのPHPでお勧めのコードを配布していたら教えてください。
コードを書いていただいてもよいです。

<channel>
<item>
<title>さいたまー</title>
<link>http://example.com/saitama/</link>
<description>
さいたま川口秩父熊谷
</description>
</item>
<item>
<title>ぐんまー</title>
<link>http://example.com/gunma/</link>
<description>
前橋高崎藤岡沼田
</description>
</item>
</channel>

↓↓↓↓↓↓↓↓↓↓
HTML化
<a href="http://example.com/saitama/">さいたまー</a>
<a href="http://example.com/gunma/">ぐんまー</a>
271nobodyさん:2014/02/25(火) 15:46:29.76 ID:???
>>270
$data = simplexml_load_file(file_name or url);
foreach($data->item as $item){
print '<a href="'.$item->link.'">'.$item->title.'</a>' . PHP_EOL;
}
272266:2014/02/26(水) 02:34:55.65 ID:yQIC0gZ6
ごめんなさい。何日か調べてみたのですが、どこで聞いていいのか分かりませんでした。
できましたら誘導お願いします。
273nobodyさん:2014/02/26(水) 02:55:01.99 ID:???
274nobodyさん:2014/02/26(水) 02:55:49.21 ID:???
>>272
mod_rewriteによるリダイレクト処理
メリットとしてはURLが静的に見えることによって
独立したページとして検索エンジンで効果を発揮する
275266:2014/02/26(水) 03:07:45.29 ID:yQIC0gZ6
>>273-274
ありがとうございます。
教えていただいた語句を元に勉強してきます
276nobodyさん:2014/02/26(水) 03:32:28.30 ID:???
>>275
使い分けだけど、前者はURLに見える。後者はURL+GETパラメータに見える。
この違いによってサーチエンジンの解釈と挙動が変わる。
あとは適当に調べて。
277nobodyさん:2014/02/26(水) 11:48:21.86 ID:???
mod_rewriteは相対リンクが上手く動かなくなるからあまり使いたくないな。
でも便利なので使っちゃう・・・と。
278nobodyさん:2014/02/26(水) 11:58:19.66 ID:???
>>277
それは使い方が悪い。
公式マニュアルをよく読んでから使おう
279nobodyさん:2014/02/26(水) 14:03:02.67 ID:???
PHP関係ないし
280nobodyさん:2014/02/26(水) 17:15:37.34 ID:izW9LgAW
Mainというフォルダにindex.phpというスクリプトとa,bという2つのフォルダがあります。
Main/index.phpからフォルダaの中のinc1.phpを相対パスで呼び出し(include 'a/inc1.php';)、
またそのinc1.phpからフォルダbの中のinc2.phpを呼び出したいです。
この時に、include 'b/inc2.php';のようなindex.phpからの相対パスではなく、
include '../b/inc2.php';のようにinc1.phpからの相対パスで呼び出したいです。
どうすれば良いのでしょうか?
281nobodyさん:2014/02/26(水) 17:21:13.58 ID:???
include( dirname(__FILE__).'../b/inc2.php' );
282nobodyさん:2014/02/26(水) 17:28:49.95 ID:???
「../」じゃなくて「/../」じゃないとダメじゃない?
283nobodyさん:2014/02/26(水) 17:44:16.36 ID:???
そだね。
あと、今なら dirname(__FILE__) は __DIR__ ですかね
284nobodyさん:2014/02/26(水) 18:00:33.28 ID:???
あ、なんか俺癖のようにいつも__FILE__使ってたけど__DIR__もあるのか
今試せないから信頼できる値が得られるのか気になる
285nobodyさん:2014/02/26(水) 18:02:29.27 ID:???
autoloadで楽になろう
286nobodyさん:2014/02/26(水) 19:56:42.04 ID:izW9LgAW
>>281-285
ありがとうございます!早速使ってみます
287nobodyさん:2014/02/27(木) 07:37:55.75 ID:???
phpでsqliteを使っています。
select文でソートして取り出す時、DESCを指定しているのですが空のカラムが先頭に出てきます。
この空を0より後に出したいのですが、色々検索して調べてみたら以下でできるような記述がありました。

ORDER BY timestamp IS NULL DESC, timestamp DESC

しかしこの指定では出力結果は変わりませんでした。
他に何か方法などありませんでしょうか?
288nobodyさん:2014/02/27(木) 07:40:21.94 ID:???
>>1
289287:2014/02/27(木) 07:48:14.44 ID:PIInT38U
>>288
すいませんでした。

【OS名】FreeBSD
【PHPのバージョン】5.2.17
【連携ソフトウェア】sqlite
【質問内容】
phpでsqliteを使っています。
select文でソートして取り出す時、DESCを指定しているのですが空のカラムが先頭に出てきます。
この空を0より後に出したいのですが、色々検索して調べてみたら以下でできるような記述がありました。

ORDER BY timestamp IS NULL DESC, timestamp DESC

しかしこの指定では出力結果は変わりませんでした。
他に何か方法などありませんでしょうか?
290nobodyさん:2014/02/27(木) 08:01:07.30 ID:???
php使ってるだけでsqlの問題じゃねーの
だから>>1
まぁIDも出してなかったけど

データの中身がどんなもので
どういう結果が欲しいのか
最低でもそれ書かないと言葉だけじゃ意味わからんで
291287:2014/02/27(木) 08:10:17.63 ID:???
>>290
sqliteで調べたんですが、IS NULLを使えばできると書いてあってその通りにやったんですができませんでした。
DBMSによるという記述があったのでPHPが関係しているのかと…

データの中身は数字なんですが、DESCを指定すると以下のように出てきます。
空を最後にしたいです。


10
9
8
1
0
292nobodyさん:2014/02/27(木) 09:00:03.86 ID:???
先頭の要素を消して最後に付け加える
293nobodyさん:2014/02/27(木) 09:04:59.92 ID:???
http://www.dbonline.jp/sqlite/select/index7.html
ここ見るとis nullではなくてis not nullってあるな
294287:2014/02/27(木) 09:05:29.91 ID:???
>>292
すいませんが、291は簡単にしただけで実際は30000件ほどのデータなのでできるだけシンプルな方法にしたいです。
sqliteスレで聞いた方がよさそうですかね?
お騒がせしました。
295nobodyさん:2014/02/27(木) 09:14:05.27 ID:???
クエリーだけで期待する結果を出したいのなら
sqliteスレで聞いた方がいいよ
296287:2014/02/27(木) 09:14:48.74 ID:???
>>293
is nullもis not nullもどちらもあります。

http://yukiten.com/blog/info-tec/sql-order-by-null/
ここを見ると
order by num is null asc
order by num is null desc
で空が上に来たり下に来たりするように書かれてますが、
どちらを指定しても空が先頭に来てしまい、
何も効き目がないみたいです。
297287:2014/02/27(木) 09:15:29.60 ID:???
>>295
はい、そうしてみます。
みなさんすいませんでした。
298nobodyさん:2014/02/27(木) 09:21:22.34 ID:???
>>293の説明をみると
select * from data where data is null;
でdataカラムの値がnullであるものを取得しているそうだが
>>289だけのクエリー文だと
「where」と「どのフィールドに対して」という指定が足りないようにみえる
299nobodyさん:2014/02/27(木) 09:24:51.41 ID:???
あ 言い方おかしかったな
select * from doclist where title is not null;
このクエリーで
doclistテーブルのtitleフィールドがnullではないものをすべて引っ張ってくる
って意味だと思うんだが
このクエリーで言うところのwhere,titleがないのでは?
300nobodyさん:2014/02/27(木) 09:31:05.83 ID:???
質問を取り間違えていた 失礼
>>296のやり方でできないのなら
空かそうでないかソートしてからそれらを連結とかなのかな?
とりあえず自分は分からないので頑張ってください
301287:2014/02/27(木) 09:31:44.41 ID:???
>>299
where句の代わりにorder by句を使ってるって感じだと思うんですよね。
296にあるように
order by num is null asc
でnumフィールドがnullであるものをascで並べるって感じで
order by num is null asc

order by num asc
を両方やるのが
order by num is null asc, num asc
って感じではないかと思うのですが…
302287:2014/02/27(木) 09:33:33.69 ID:???
>>300
あ、いえ親切にありがとうございます。
やっぱり空のものは別に処理するしかないですかね…
処理量が倍になるのでできれば避けたいですがしょうがなさそうです。
303nobodyさん:2014/02/27(木) 09:44:27.16 ID:???
ORDER BY timestamp IS NULL ASC, timestamp DESC
とか?
304287:2014/02/27(木) 09:58:13.29 ID:???
>>303
それもやってみたんですが、296同様に並びが変わりませんでした。

すいません、原因がなんとなく分かってきたんですが、そもそも
SELECT * FROM comiclist where timestamp IS NULL
とかの文でtimestampが空のデータが引っ掛かりませんでした…
空なのにNULLではないなんてことあるんですかね?
sqliteのバージョンが2.8.17みたいなんですが、
そもそもこのバージョンではIS NULLに対応してないのかな…
305nobodyさん:2014/02/27(木) 10:00:08.67 ID:???
もう完全にsqlの話じゃねーか
306nobodyさん:2014/02/27(木) 12:04:56.79 ID:???
そりゃ空ってnullじゃなくて空文字いれたんでしょ
そんなのにnull云々って話はないわ
307nobodyさん:2014/02/27(木) 12:06:24.25 ID:???
まずは空文字のとこをnullにupdateするんだな
それと今後挿入するsqlもnull挿入するように書き変えとけ
308nobodyさん:2014/02/27(木) 12:08:19.30 ID:???
NULLと空文字ってsqlでは別の意味なんじゃなかったっけ?
309nobodyさん:2014/02/27(木) 14:43:53.79 ID:B/xz5nFA
スーパーグローバル変数「$_REQUEST」の安全性について質問です。
$_REQUESTを使うことの危険性・脆弱性は何でしょうか?

$_REQUESTは、セキュリティの点で使用すべきではないとの記述を、
以前、書籍等で読んだ記憶があります。
ただ、$_REQUESTを使うべきではない理由についての根拠があいまいで、
$_GET、$_POSTそして$_COOKIEを使えるならそれを使えという主旨でした。
この主旨はわかるのですが、具体的にどう危険なのかをご教示して頂きたいです。

今回、$_GETと$_POSTデータの確認処理を共通化するにあたり、
$_REQUESTを使えたら便利と思い質問させて頂きました。
よろしくお願いします。

http://www.php.net/manual/ja/reserved.variables.request.php
310nobodyさん:2014/02/27(木) 17:24:51.52 ID:???
>>309
$_REQUESTはダメ
本の通り$_GETなど使うように
簡単なとこでは、同名のキーがあった場合、どうやって判断するんだ?
どっから送信されたか曖昧だと思わないか?

>>上
なんかスレが進んでると思ったら....
サッサとSQLスレ逝け
311nobodyさん:2014/02/27(木) 17:59:19.62 ID:???
同名のキーって普通にコードの設計ミスじゃない?
312nobodyさん:2014/02/27(木) 18:14:59.68 ID:???
$_REQUEST使うなは、昔の話っぽいな。
今は request_orderにC入れないし、
予期してないキーの値受け取るなんて論外だし
予定してる値がgetで来ようがpostで来ようが問題ないつくりは可能だし、優先度は決められる。
request使うと問題起こす人がrequestつかなければ問題起こさない根拠はないよね。

と思ってたが、ちがってるなら訂正お願いします。
313nobodyさん:2014/02/27(木) 18:24:52.06 ID:???
いちおう、PHP絡めてたから、答えるけど
SELECT * from test ORDER BY IF(id is NULL,NULL,id) DESC;

かなり自信なし。
314nobodyさん:2014/02/27(木) 18:31:07.64 ID:???
自信ないなら試せばいいじゃん
バカなの?
315nobodyさん:2014/02/27(木) 18:34:10.06 ID:???
sqliteでif使えたっけ?
つーか、使えても その式なんも変わらんのとちがうか?
というか、そんなIF文、excelの式ぐらいでしか見たことねー

ifnull( id , '')とかか?
316nobodyさん:2014/02/27(木) 19:22:40.29 ID:???
SQLiteスレいけ
バカ共が
317nobodyさん:2014/02/27(木) 19:35:37.24 ID:???
>>312
postを想定してるとこにgetできたら弾くのが当たり前だ
2chの書き込みをgetでできたらurlクリックしただけでできてしまうだろ
318309:2014/02/27(木) 20:00:08.65 ID:ElZBAvnn
レスありがとうございます。とても参考になりました。
$_REQUESTだと >>317 さんの言うとおり、リンクだけで投稿できる可能性があるのですね。

$_REQUESTで横着せず、きちんと、$_GETと$_POSTで処理を分けたいと思います。
ありがとうございました。
319nobodyさん:2014/02/27(木) 21:18:04.10 ID:???
>>317
クリックしただけでPOSTできるだろ。
というか、それぐらいの意味しかない。
まさかそれをセキュリティと言うのではあるまいな。
320nobodyさん:2014/02/27(木) 21:28:27.13 ID:???
>>319
誰もセキュリティとは言ってない
単に使い分け。無駄に突っ掛かるな
321nobodyさん:2014/02/27(木) 21:35:14.53 ID:???
>>317
post制限ならそんな止め方じゃなくセッション使ったりとかもう少し複雑なことするでしょ
利点は大いに使わなきゃ
322nobodyさん:2014/02/27(木) 22:34:51.83 ID:???
間違いなくテストしにくくなる
request_methodで切り分けるか全部POST対応しとけばシステム的には大丈夫かもしらんが
あと_requestって変数名はおかしいよな
323nobodyさん:2014/02/27(木) 23:18:08.62 ID:???
なんかそのサイト使いにくそう
324>>323=ゴミクズ:2014/02/28(金) 05:58:09.43 ID:???
知能の低いゴミクズのお前にとって使いにくかろうがどうでもいいんだよ
ぐたらない感想垂れ流してるゴミクズは早く消えれば?
325nobodyさん:2014/02/28(金) 07:55:47.39 ID:???
ぶち切れ方が異常だな
同僚や客にも同じこと言われて溜まってるんだろうな
326nobodyさん:2014/02/28(金) 08:42:59.93 ID:???
少なくとも、大した理由を上げられてないのは そこらのサイトと変わらんな。
指摘したら逆切れしてる始末だし。
327nobodyさん:2014/02/28(金) 10:07:34.00 ID:???
2chのbbs.cgiでいうとメェルアドレェスにGETでNULL送るとキャップ出ちゃうバグ数年は放置されてたな
ケツの穴大きすぎとか言われてた
328nobodyさん:2014/02/28(金) 10:11:47.89 ID:???
それがPOSTに限定することで回避できちゃうと考えるあたりがマヌケ臭いな
POST投げられたら同じじゃん
329nobodyさん:2014/02/28(金) 10:27:02.12 ID:???
投げられたらってフォームのデフォがPOSTだと知らんのかなw
330nobodyさん:2014/02/28(金) 10:36:17.95 ID:???
あるページに対するGETやPOSTは、送信する側からすればどうとでもできる。

フォームのデフォの意味はさっぱりわかんないけど、
methodのデフォルトは getだ。

requestで受け取ると問題が出ることはない。
ルールとして決めてるならともかく、
考えたり調べずにどっかに書いてあったら使うなといってるような人の方がなにかやらかすことが多いのではないか。
331nobodyさん:2014/02/28(金) 10:38:06.30 ID:???
>>329
は?
なんだよこのあたりの常識も知らない超初心者かよ
332nobodyさん:2014/02/28(金) 10:46:27.09 ID:???
ちなみにbbs.cgiの話もGETじゃなくてPOSTが正解ね
いや低レベルなメソッドの違いと、話題の違いどっちに食いつくのかなと思って
333nobodyさん:2014/02/28(金) 10:49:11.03 ID:???
知らなくてもPHPだとプログラム組めるからね
334nobodyさん:2014/02/28(金) 10:53:47.67 ID:???
だから尚更危険なんだよな。
経験と共に身に付く安全設計の常識がないから。
えらそうに持論ぶちまける素人ほど会話が噛み合わなくて疲れる奴はいない。
335nobodyさん:2014/02/28(金) 11:05:53.65 ID:???
でも見えない敵とだけかみ合ってる人は本当に疲れないのかという疑問は残ったね。
336nobodyさん:2014/02/28(金) 15:42:19.89 ID:???
だからさGET POST両方に対応することは簡単なんだけど
自分のサイトにPOSTフォームしかないのにGETを受け入れるのは意味不明なんだってw
337nobodyさん:2014/02/28(金) 15:53:36.04 ID:???
そらそーだ。どっちでも良いように作る理由はあんまりないし、
POSTだけを予期したプログラムでgetでも受ける理由は何にもない。
それ自体は誰も異を唱えてはいないだろ。
338nobodyさん:2014/02/28(金) 16:03:28.53 ID:???
>>336
意味不明はおまえの頭だよ。
なんで必要性の話にねじ曲げてるの?
339nobodyさん:2014/02/28(金) 17:10:58.68 ID:???
>>338
どんな必要性があるの?
テストしやすいから? 本番で禁止するならいいけどw
340nobodyさん:2014/02/28(金) 18:19:54.75 ID:???
何で使っちゃいけないの?
→ 必要性ないじゃん
誰も必要性なんて話 してないだろ
→どんな必要性があるの?


これが話が通じない人の思考回路か。
341nobodyさん:2014/02/28(金) 18:58:00.13 ID:???
>>339
危険性の話をしてたんだろ
なんで必要性の話を突然始めてんだよっての
342nobodyさん:2014/03/01(土) 01:43:22.31 ID:???
>>341
危険だから>>336のレスしたんだけど?
誰が必要性の話なんてしてるの
343nobodyさん:2014/03/01(土) 07:17:22.50 ID:???
自身の無知を素直に認められない奴が一番仕事のできない奴
こいつは常日頃から同僚に強いストレスを与えてるんだろうな
344nobodyさん:2014/03/01(土) 09:57:35.41 ID:???
仕事の話はじめたぞwww
345nobodyさん:2014/03/01(土) 10:59:19.46 ID:???
$_REQUEST「やめて! 私のために争わないで!!」
346nobodyさん:2014/03/01(土) 11:20:18.02 ID:???
$_REQUESTは、PHP公式マニュアルだと、非推奨じゃないから、
適切に使うなら、使っても問題ないという解釈もできる。
347nobodyさん:2014/03/01(土) 11:33:21.65 ID:???
普段使わないグローバル変数のことで言い合いするなよ
348nobodyさん:2014/03/01(土) 11:34:06.00 ID:???
$_REQUEST = $_POST + $_GET; # request_order, variables_order に依存
という事を理解しているのなら好きに使おう

〜おわり〜
349nobodyさん:2014/03/01(土) 13:03:08.00 ID:???
>>347
いや使うだろう。
>>348を理解してれば。
350nobodyさん:2014/03/01(土) 15:05:25.13 ID:???
使ったことないけどGETで送ってもPOSTで送っても拾えるってこと?
351nobodyさん:2014/03/01(土) 15:36:36.68 ID:n8n41uDi
$_POST['youso1']がnull、もしくは空文字だった場合、"abc"という文字列を入れたいと思いました。
そこで以下の様な関数を作ってみたのですが、
Undefined index: youso1 in <b>C:\xampp\htdocs\friday\chara.php</b> on line <b>69</b><br />
と言われます。
$_POST['youso1']=nullを引数として渡してしまったという原因は分かるのですが、こういう場合どのように作ればよいでしょうか?
if(!isset){...}で一個一個見ていくしか無いでしょうか
yousoは30〜50個ぐらいになる予定です(自作ブラウザゲームのキャラクターの登録に使用します)

function nosettonullstring($a) {
if (!isset($a) | $a=="") {
return "abc";
} else {
return $a;
}
}
$_POST['youso1'] = nosettonullstring($_POST['youso1']);

$query = "INSERT INTO ・・・
$st = $pdo->prepare($query);
$st->bindValue(1, $_POST['youso1'], PDO::PARAM_STR);
352nobodyさん:2014/03/01(土) 16:18:56.00 ID:???
POSTする際にHTMLのほうのnameをyouso[1]にすれば、PHP側では$_POST['youso'][1]、つまりyousoの配列が作れる。
そうすればあとはforeachとかで処理すればいい。
ちなみにyouso[]にすると0から配列を作ることができ。youso[]が複数あると自動的にpushされる。
353nobodyさん:2014/03/01(土) 17:12:03.95 ID:n8n41uDi
>>352
なるほど、ありがとうございました
354nobodyさん:2014/03/01(土) 17:16:35.08 ID:???
$_POST['youso1'] = @nosettonullstring($_POST['youso1']);
355nobodyさん:2014/03/01(土) 17:21:14.37 ID:???
postでもgetでもなんて中途半端すぎ
356nobodyさん:2014/03/01(土) 17:22:44.69 ID:???
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/11
357nobodyさん:2014/03/01(土) 20:32:13.22 ID:???
>>355
もういいよお前
358nobodyさん:2014/03/01(土) 23:03:13.34 ID:???
( ´,_ゝ`)プッ
359nobodyさん:2014/03/01(土) 23:52:15.10 ID:???
狂ってるわけだ
360nobodyさん:2014/03/02(日) 08:59:50.21 ID:0yNkJzDo
【OS名】win7 32bit
【PHPのバージョン】5.3.5
【連携ソフトウェア】xampp 1.7.4
【質問内容】
$date_beforeにmysqlのtimestampが入っており、
最新の順に並び替えるのを次のようにしてますが、
これが最良の方法でしょうか?
もっと他に何か良い方法がありますでしょうか?
$t=0;
foreach ($date_before as $key => $val) {
$index[$t]=$key;
$date_after[$t]=$val;
$t=$t+1;
}
361nobodyさん:2014/03/02(日) 09:46:27.53 ID:???
>>360
もっと良い方法というとSQLにORDER BY句を埋め込むのがよさそうだけど、それだとスレ違いになるからここじゃ答えられない
362nobodyさん:2014/03/02(日) 09:51:04.60 ID:???
>>360
肝心のソートが無いように見えるけど
363nobodyさん:2014/03/02(日) 12:15:02.96 ID:???
>>361
そうですか。
>>362
for($i=0;$i<5000;$i++){
$image[index[$t]];
}
のように使っているので、
最新:index[0]、古:index[4999]
最新の日付の順に最新の画像を順に画面に出してます。
これで最新の日付順に画像がソートされたことになります。
364nobodyさん:2014/03/02(日) 12:28:02.10 ID:???
>>363
361が最良だよ。データ取得時にソートもしておくのが定石。
SELECT something FROM sometable ORDER BY date_column DESC
PHPでやりたければ、>>363 でもいいけど無駄に近い。
365nobodyさん:2014/03/02(日) 14:27:16.68 ID:???
>>363
$date_beforeの順序と、$indexと$date_afterの順序が同じように見えるんだけど
$date_beforeにはどういう順序で入ってるの?
366nobodyさん:2014/03/03(月) 00:12:30.98 ID:???
>>360
よく分からんが、そのコードを改良するなら
$index = array_keys($date_before);
$date_after = array_values($date_before);
とするかな。

内部的に2回ループが動くじゃん?という懸念があるかもしれないので、計測したほうがいいかも。
もしくはこう
foreach ($date_before as $key => $val) {
$index[]=$key;
$date_after[]=$val;
}
367nobodyさん:2014/03/03(月) 11:17:39.06 ID:???
$imageのインデクスは結局$date_beforeのインデクスをコピーしただけだから、
これで降順になるならもともと$date_beforeはソート済み

$imageは未ソートっぽいので、これを日付順にせよというのがクライアントの要求だったようだ
368nobodyさん:2014/03/03(月) 12:40:12.05 ID:???
>>364
エスパーなのか自演なのか判断に苦しむ
369nobodyさん:2014/03/03(月) 13:34:05.65 ID:???
DBを普段使ってる人とそうでない人との感覚の違いだな
370nobodyさん:2014/03/03(月) 14:39:44.54 ID:???
>>368
え?
371nobodyさん:2014/03/03(月) 17:53:33.06 ID:e1uclpbn
数値の桁数を調べたいのですが、
int(553)は3桁、int(057)は2桁、
float(96.15257)は7桁というように、
桁数というより小数点を抜いた文字数を調べたいのです。
どうすれば良いでしょうか?よろしくお願いします。
372nobodyさん:2014/03/03(月) 18:16:33.60 ID:???
echo preg_match_all('/[0-9]/',555);
echo preg_match_all('/[0-9]/',057);
echo preg_match_all('/[0-9]/',96.15257);
373nobodyさん:2014/03/03(月) 18:56:15.04 ID:e1uclpbn
>>372
ありがとうございます!
これはなんで057が3桁ではなく2桁になるのでしょうか?
374nobodyさん:2014/03/03(月) 19:07:22.07 ID:???
0.01234 とかはどうなるのが正解?
375nobodyさん:2014/03/03(月) 19:12:55.97 ID:???
>>371
桁数なら分からんでもないが文字数調べてどうすんの?
ソッチのほうが興味あるわ
376nobodyさん:2014/03/03(月) 19:15:02.63 ID:???
いや、371の言うのはいわゆる桁数だろう
377nobodyさん:2014/03/03(月) 19:21:11.31 ID:???
057がもじれつに変換されるときに0が取れてるから
0で始まるリテラルは8進数なので、5*8^1 + 4*8^0 = 47のふたけた
基数10と8で桁数がずれるときは問題になるだろう
本当に8進数の桁が欲しいのかわからんけど
378nobodyさん:2014/03/03(月) 19:23:05.40 ID:???
式typoしたけど察して
379nobodyさん:2014/03/03(月) 19:29:09.12 ID:???
>>377
057を文字列に変換?したら、当然 '057' だろ?
380nobodyさん:2014/03/03(月) 19:32:48.16 ID:???
>>376
浮動小数点っていうか、実数の桁?
意味あるの?
381nobodyさん:2014/03/03(月) 19:36:07.65 ID:???
382360:2014/03/03(月) 19:43:39.29 ID:???
すいません。
派遣先切られて落ち込んでました。
説明不足でした。

for($t=0;$t<10;$t+=1){
echo("日付: $date_before[$t]");
echo("画像: $file_name[$t]<br/>\n");
}

//カウンターのアルファベットは$tとする
@arsort($date_before);//日付最新を上に並び替え
$t=0;
foreach ($date_before as $key => $val) {
$index[$t]=$key;
$date_after[$t]=$val;
echo("$index[$t]<br/>\n");
echo("$date_after[$t]<br/>\n");
$t=$t+1;
}

for($t=0;$t<10;$t+=1){
echo("日付: $date_after[$t]");
$a=$index[$t];
echo("画像: $file_name[$a]<br/>\n");
}
383360:2014/03/03(月) 19:45:20.72 ID:pVEl0/Ty
この結果が

日付: 2014-03-02 10:04:09画像: 2014030210040966219.png
日付: 2014-03-02 09:43:17画像: 2014030209431718080.jpg
日付: 2014-03-02 09:43:48画像: 2014030209434853288.jpg
日付: 2014-03-02 09:43:49画像: 2014030209434924738.png
日付: 2014-03-02 09:43:50画像: 2014030209435021928.png
日付: 2014-03-02 09:43:51画像: 2014030209435140509.png
日付: 2014-03-02 09:43:52画像: 2014030209435233766.jpg
日付: 2014-03-02 09:43:53画像: 2014030209435317388.jpg
日付: 2014-03-02 10:04:06画像: 2014030210040694987.jpg
日付: 2014-03-02 10:04:07画像: 2014030210040727698.jpg
0
2014-03-02 10:04:09
9
2014-03-02 10:04:07
8
2014-03-02 10:04:06
7
2014-03-02 09:43:53
6
2014-03-02 09:43:52
5
2014-03-02 09:43:51
4
2014-03-02 09:43:50
3
2014-03-02 09:43:49
2
2014-03-02 09:43:48
1
384360:2014/03/03(月) 19:46:14.31 ID:pVEl0/Ty
続き
2014-03-02 09:43:17
日付: 2014-03-02 10:04:09画像: 2014030210040966219.png
日付: 2014-03-02 10:04:07画像: 2014030210040727698.jpg
日付: 2014-03-02 10:04:06画像: 2014030210040694987.jpg
日付: 2014-03-02 09:43:53画像: 2014030209435317388.jpg
日付: 2014-03-02 09:43:52画像: 2014030209435233766.jpg
日付: 2014-03-02 09:43:51画像: 2014030209435140509.png
日付: 2014-03-02 09:43:50画像: 2014030209435021928.png
日付: 2014-03-02 09:43:49画像: 2014030209434924738.png
日付: 2014-03-02 09:43:48画像: 2014030209434853288.jpg
日付: 2014-03-02 09:43:17画像: 2014030209431718080.jpg
385360:2014/03/03(月) 19:51:48.48 ID:pVEl0/Ty
このように、一番上に最新の日付とその日付にアップロードされた
画像がくるように並び替えています。
このほかカラムには、ナンバーがありこのナンバーは
1→2〜10→1とループしていきます。
386nobodyさん:2014/03/03(月) 19:58:36.45 ID:???
>>382
結局arsortしてんじゃんw
387nobodyさん:2014/03/03(月) 20:02:57.05 ID:e1uclpbn
>>375
外部サービスのAPIを使うときに、整数でも小数でも8桁までの数字を入れるというルールがあり、
ちゃんと8桁に収まっているかをしらべたかったのです。

ありがとうございました!
388nobodyさん:2014/03/04(火) 04:16:39.45 ID:???
>>370
> PHPでやりたければ、>>363 でもいいけど無駄に近い。
>>363でソートされるの?
389nobodyさん:2014/03/04(火) 04:49:41.72 ID:PNP6rdg1
ダブルコーテーションの中でも変数が有効になることを今知ったのですが、
こういう仕様に名前は付いているのでしょうか?
また、他にこういう仕様の言語ってあるのでしょうか?
趣味でプログラムやって来ましたが、10年間気付きませんでした…

$a = "abc";
echo "$a"; //abcが出力される
390nobodyさん:2014/03/04(火) 07:48:19.56 ID:???
そんなん初歩だろ
最初に書いてるわ
ていうかそれ推奨されてないから忘れたほうがいい
>>3の5に書いてる通り{}で囲むならOK
391nobodyさん:2014/03/04(火) 07:48:20.45 ID:???
392nobodyさん:2014/03/04(火) 07:48:46.98 ID:???
>>389
その例は変数展開してないだろw
393nobodyさん:2014/03/04(火) 07:49:08.98 ID:???
あごめん、してたか
394nobodyさん:2014/03/04(火) 10:14:06.26 ID:jWPe5MHZ
ダブルクオート内の変数展開が非推奨だとか初めて聞きました。
非推奨である根拠、又は、ソースがあったら教えてください。

PHPマニュアルにもそんなこと書いてないし疑問です。
http://www.php.net/manual/ja/language.types.string.php#language.types.string
395nobodyさん:2014/03/04(火) 10:18:21.27 ID:???
{}抜きはやめとけって話じゃないか?
これが非推奨だったらPHPのメリットかなり落ちる
396nobodyさん:2014/03/04(火) 10:19:55.91 ID:PNP6rdg1
>>390>>391
ありがとうございます。
397394:2014/03/04(火) 10:29:58.04 ID:jWPe5MHZ
>>395
{}で囲むならOKという話だったのですね。
ダブルクオート内の変数展開自体が非推奨と早とちりしてしまいました。
有難うございました。
398nobodyさん:2014/03/04(火) 10:35:21.43 ID:0dtpeKMr
PHPで文字列を分割する方法について質問です
例えば「"赤 青" 黄色」という文字列があるとして「赤 青」と「黄色」に分割したいです
いい方法はあるでしょうか
399nobodyさん:2014/03/04(火) 10:46:11.71 ID:???
ルールがいまいちわからん
半角スペースで分割したいがダブルクオーテーションがついてたら分割しないってことか?
400nobodyさん:2014/03/04(火) 10:46:29.10 ID:???
>>398
何に注目して分割するかに依るけどその情報がないぞ
先頭のクオーテーション内とその後ってことなのか
クオーテーション外の空白で分割なのか
それとも単に2〜4文字と8〜9文字なのか
1番目なら
$str = '"赤 青" 黄色';
if(preg_match("/^\"(.+?)\"\s*(.+)$/",$str,$mt)){
print_r($mt);
}
401nobodyさん:2014/03/04(火) 11:04:18.97 ID:0dtpeKMr
情報不足ですみません
基本的に半角スペースで分割したいのですが、
ダブルクォーテーションに囲まれている文字列はひとつの塊として分割したいです

>>400を参考に考えてみました
$str = '"赤 青" "黄色" 白 黒';
if(preg_match_all("/\"(.+?)\"|([^ ]+)/u",$str,$mt)){
$arr = array_merge($mt[1],$mt[2]);
$arr = array_filter($arr);
print_r($arr);
}
これでいけそうです ありがとうございました
402nobodyさん:2014/03/04(火) 11:33:21.05 ID:???
var_dump(str_getcsv('"赤 青" "黄色" 白 黒',' '));

CSVの' '版でしょ?
403nobodyさん:2014/03/04(火) 11:55:05.63 ID:???
株系のサービスを作りませんか
404nobodyさん:2014/03/04(火) 11:56:16.72 ID:0dtpeKMr
>>402
最近CSVを使っていなかったのですっかり忘れていました
シンプルでいいですね
405nobodyさん:2014/03/04(火) 11:56:25.76 ID:???
スレ間違えたさーせん
406nobodyさん:2014/03/04(火) 11:59:04.65 ID:???
なるほどなー
407nobodyさん:2014/03/04(火) 11:59:52.91 ID:???
>>403
株価のAPIをphpで使いやすい形式で提供している証券会社とかないじゃない。
あったら作ってみたいけどね。
408nobodyさん:2014/03/04(火) 12:05:49.75 ID:???
Webサービスで提供されてたらphpでも一発で取得できるべ
409nobodyさん:2014/03/04(火) 14:36:52.95 ID:???
【ビットコイン】マウントゴックスをハッキングしたスーパーハカー「nanashi_」がソースと顧客情報を晒す
http://hayabusa3.2ch.net/test/read.cgi/news/1393898696/

このソースは叩かれてるけど高度な技術ですよね?
興味あれば見ていただきたいです
410nobodyさん:2014/03/04(火) 15:41:49.08 ID:???
staticだらけやな
411nobodyさん:2014/03/04(火) 15:53:49.87 ID:???
高度かどうかは知らないけど使い始めて1年2年といったところか
staticは別に構わないがコメントの不親切さとエラーチェックの甘さ、リテラルの書き方、
どれだけ長くても関数を改行しない点等が少しイラッとする程度
412nobodyさん:2014/03/04(火) 15:59:43.24 ID:???
getTablesStruct()ってSQLの構造を書いてるようだけど何のためにこんなことしてんだろう
こんなDBの構造示すようなものコードに書かないほうがいいんじゃ
ER図とか別途作成しておくならともかく
413nobodyさん:2014/03/04(火) 16:03:57.10 ID:???
>>412
Bind用かテーブルの構築用じゃない?
414nobodyさん:2014/03/04(火) 16:47:36.13 ID:???
むしろソースコードが漏れた原因が気になる。
415nobodyさん:2014/03/04(火) 17:03:04.90 ID:???
データも取られてるし
単にサーバに入られただけだろ
416nobodyさん:2014/03/04(火) 20:09:05.68 ID:???
mt.goxのはどう質が悪いのかも書いてくれたら教材に使えたのにな
DBクラスのほうを見てみたいわ
417nobodyさん:2014/03/04(火) 21:33:12.72 ID:???
戦争に同盟参戦したときって、「盟主が自国のために和平可能」のチェック入れてる?
418nobodyさん:2014/03/04(火) 21:33:26.79 ID:???
すまん誤爆
419nobodyさん:2014/03/05(水) 00:58:11.03 ID:tWUcD/Vu
PHPのmcrypt使って暗号化した文字列を別の言語で復号化しようとしています。
その際に問題になってるのが、暗号化モードがtripledesで24byteの文字列を使わなきゃいけないのに
既存の実装が24byteじゃない文字列をキーにしてました。

mcrypt-generic-initの第二引数のところです。
http://jp2.php.net/manual/ja/function.mcrypt-generic-init.php

> キーの最大長は、mcrypt_enc_get_key_size() を コールした際に得られるキー長であり、
> この値より小さな値は全て有効です。
この2行目、小さな値が有効って具体的にどんな処理になっているのでしょう?
パディング処理とかが走っているんでしょうか?
mcryptのソースを見てもC言語なのでよく分からず…。
memmove関数ってところでパディングのようなことをやってるようにも見えるのですが…。
420nobodyさん:2014/03/05(水) 01:57:17.53 ID:???
>>419
http://jp.php.net/manual/ja/function.mcrypt-encrypt.php
これの第二引数(key)を見る限り、キー長に満たない場合は\0が埋められるみたいだけど。
421nobodyさん:2014/03/05(水) 02:05:12.64 ID:???
>>420
ありがとうございます。客先で試してみます。
422nobodyさん:2014/03/05(水) 15:09:55.01 ID:???
1ヶ月前からHTMLプログラム始めました。
そろそろ他のプログラムもやってみたいです。
パイパンとかルーピーみたいな名前のをすすめられたのですが、
ピーエイチピーをやりたいと思います。
皆さんよろしくお願いします。
423nobodyさん:2014/03/05(水) 15:45:17.15 ID:DePJJDbI
掲示板のように
ユーザの入力値をデータベースに格納して読み出してhtmlとして表示する場合
sqlインジェクションとxssの対策はどういう順番で行うべきですか?
424nobodyさん:2014/03/05(水) 15:56:25.01 ID:???
>>423
まずプログラムでやらなきゃいけない事を、端的に書き並べてみな
どこでチェックしなきゃいけないかが見えてくるだろ
425nobodyさん:2014/03/05(水) 16:26:41.01 ID:???
>>423
a) sqlインジェクション対策・・・入力値をDBに格納する前(直前)
b) xssの対策・・・htmlとして表示する前(直前)

順番は問わない。設計による。
通常は、DB処理を先にして、その後、表示処理をするから、
その場合には、a.b.の順番になる。
426nobodyさん:2014/03/05(水) 16:55:56.66 ID:TcsDhfPg
foreach ($value1 as $key2 => $value2) {
print "{$key2}:{$value2}";
}


この$key2と$value2をprintではなく
二次元配列として1つの変数に収納していくにはどのようにすればよいですか?
427nobodyさん:2014/03/05(水) 17:03:41.82 ID:???
$arr[$key2][$value2] = "{$key2}:{$value2}";
てこと?
428nobodyさん:2014/03/05(水) 17:04:59.23 ID:???
$a[$key2]=$val2 ?
429nobodyさん:2014/03/05(水) 17:07:50.37 ID:???
今ひとつどういう形にしたいのかわからないな
430nobodyさん:2014/03/05(水) 17:09:28.90 ID:???
$hoge[] = "{$key2}:{$value2}";  とか?
431nobodyさん:2014/03/05(水) 17:18:19.49 ID:???
$hitotunohensuu[] = [$key2 => [$value2]];
432nobodyさん:2014/03/05(水) 17:20:33.53 ID:???
$ret[] = array( $key2 , $value2);
かもしれない
433nobodyさん:2014/03/05(水) 17:20:43.00 ID:TcsDhfPg
>>430
これでいけました!
配列を理解しきれてないので、うまく説明できずにすいませんでした。
ありがとうございました。
434nobodyさん:2014/03/05(水) 17:25:11.60 ID:???
それ1次元や!と突っ込みかけたけど、Cを少しだけ勉強したことのある初心者なのかもと思った。
435nobodyさん:2014/03/05(水) 17:25:56.83 ID:???
それ、2次元とは言わない
436nobodyさん:2014/03/05(水) 17:26:08.56 ID:???
二次元配列じゃねえ
437nobodyさん:2014/03/05(水) 17:27:12.18 ID:???
自分で書いておいて何だけど1次元やな…
438nobodyさん:2014/03/05(水) 17:30:42.51 ID:???
ま、まあ文字列は配列風にアクセスできるから・・・
439nobodyさん:2014/03/05(水) 17:30:43.11 ID:TcsDhfPg
>>434-437
確かに…混乱して勘違いしてました。

実際には>>432がしたかったことです…。
440nobodyさん:2014/03/05(水) 17:57:01.00 ID:???
小数点第2位で四捨五入して、常に小数点第一位まで表示したいのですが、
下記だと1000単位の「,」が入ってしまいます。
replaceなりすれば出来るのは判るんですが、流石にアホらしい方法だと思うので
何かいい方法ありませんか?


$X = 123456.789;
echo( number_format(round( $X * 10)/10 ,1 ) )."%";

結果:123,465.8
441nobodyさん:2014/03/05(水) 18:08:13.70 ID:???
$X = 123456.789;
echo number_format($X,1,'.','' );

四捨五入してくれるよ
442nobodyさん:2014/03/05(水) 20:55:59.38 ID:???
$X = 123456.789;
printf("%.1f", $X);
443nobodyさん:2014/03/06(木) 01:32:34.76 ID:???
なんでそんな無駄なことしてんの?

$X = 123456.789;
echo round($X, 1);
444nobodyさん:2014/03/06(木) 05:54:36.01 ID:???
無駄なことしてんの?(キリッ
445nobodyさん:2014/03/06(木) 08:32:33.98 ID:???
namespace Moneyってww
こんな汎用的なのつけるならないほうがマシwww
マウントゴックス!
446nobodyさん:2014/03/06(木) 08:46:08.07 ID:???
>>444
図星で反論できなかったんだね、まぁ元気出せw
447nobodyさん:2014/03/06(木) 08:56:29.57 ID:???
>>445
namespaceは後付け臭いんだよなぁ
448nobodyさん:2014/03/06(木) 09:00:15.91 ID:???
roundの精度に問題があるからだろ
*10/10はどうかと思うが
449nobodyさん:2014/03/06(木) 09:02:14.32 ID:???
ってバージョン書いてなかったな
最近のroundはだいぶいいらしい
450nobodyさん:2014/03/06(木) 09:19:18.11 ID:???
http://w3techs.com/technologies/details/pl-php/5/all
配布物は5.2で書くべきか
451nobodyさん:2014/03/06(木) 09:23:13.18 ID:???
array() これはもうやだ
452nobodyさん:2014/03/06(木) 09:28:31.05 ID:???
いや、number_formatが切り捨てしちゃうのしらなくて、
roundに桁数指定がない みたいな
どっかのサイト見ちゃったんだろう。

http://masago.kir.jp/php20030828.php とか
453nobodyさん:2014/03/06(木) 09:31:54.91 ID:???
うわ随分懐かしいサイトだな
まだあったのか
454nobodyさん:2014/03/06(木) 09:32:49.80 ID:???
>>452
昔、そこ見て書いたソースがどっかにあるわ…
455nobodyさん:2014/03/06(木) 09:33:09.20 ID:???
切捨てじゃなかった、四捨五入ね・・・
456nobodyさん:2014/03/06(木) 10:38:49.09 ID:???
>>450
wordpress層を除くとガラッと変わりそうだけど

会社は5.5、外部に出すものは5.4にしてるよ
457nobodyさん:2014/03/06(木) 13:20:34.69 ID:???
あのグラフはサーバに入ってるPHPじゃなくて
どのバージョンを意識して作ったものかっていう統計?
serverじゃなくてwebsitesって書いてるよなあ
でもそんなの調べようがないし謎だわ
websitesってのはサーバのことなんだろうか
458nobodyさん:2014/03/06(木) 13:27:47.99 ID:???
会社が新しいものより安定志向なんで5.3でまったりしてるけど
5.7とか大きく変わった点とかあるの?
459nobodyさん:2014/03/06(木) 13:46:18.53 ID:???
5.7とかまだ出てなくね?
5.6はたいした変更点もないような
なんかperlっぽくなってる気がする
5.4の配列ショートカット[]と5.5のfinallyサポートはいいな
トレイトとかジェネレータとかわからんw
460nobodyさん:2014/03/06(木) 14:16:48.86 ID:???
>>459
サンクス、[]は見慣れるまでがキモイかも、無理して使わなくても良いだろうし使い所だね
トレイトは見てみたらこれは結構便利くさい、多重継承が欲しいこと稀にあるから
finallyもあればあったで便利だな
ちょっと5.5試してみる
461nobodyさん:2014/03/06(木) 14:58:07.17 ID:???
>>460
トレイトの有無は設計から大きく変えるから
5.4以上に行ってしまうと戻れないな
462nobodyさん:2014/03/06(木) 16:19:31.40 ID:???
>>443
とりあえず、要件を満たさないコードに変わったタイミングは>>443だ。
463nobodyさん:2014/03/06(木) 16:30:58.37 ID:???
>>458
5.6でRubyのスプラット演算子やオプショナル引数の配列化みたいな事ができるよ
じゃあ名前付き引数も?ないよそんなもの

function f($a, $b = null, ...$c) { return $c; }

# わかる
assert(f(1) === []); # pass
assert(f(1, 2, 3, 4, 5) === [3, 4, 5]); # pass
assert(f(1, 2, ...[3, 4, 5]) === [3, 4, 5]); # pass
assert(f(...[1, 2], ...[3, 4, 5]) === [3, 4, 5]); # pass

# まぁわかる
assert(f(1, 2, ...[123 => 'v']) === ['v']); # pass

# arrayは順序付き連想配列だもんな、OKOK
assert(f(1, 2, ...[1 => 'a', 0 => 'b']) === ['a', 'b']); # pass

# クソァ!
assert(f(1, 2, ...['k' => 'v']) === ['v']); # Catchable fatal error: Cannot unpack array with string keys
464nobodyさん:2014/03/07(金) 04:59:26.60 ID:???
>>462
四捨五入の話だろが、アスペw
465nobodyさん:2014/03/07(金) 13:13:14.20 ID:???
>>464
だけじゃないよ。
そうやっていつも必要な機能を落として怒られてるの?
466nobodyさん:2014/03/07(金) 14:48:54.18 ID:???
>>464
常に小数点以下一位を表示できるか
数値を変えて試してみるといいよ
467nobodyさん:2014/03/07(金) 15:21:44.37 ID:???
0.05 -0.00が出てきたらアウトだしな
468nobodyさん:2014/03/07(金) 18:23:42.03 ID:Y3p7/jDT
$str = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"".TARGET."\">\\1\\2</a>",$str);
上記の処理でコメントされた文字列の中のURLを自動リンクしようとしています。

コメントはimgタグのみ許可しているので、

@http://aaaa.com
A<img src="http://aaaa.com">

@のような場合は自動リンクしたいのですが
Aの場合は自動リンクしたくないです。


この場合どのように条件式を書けばいいですか?
469nobodyさん:2014/03/07(金) 18:25:10.67 ID:Y3p7/jDT
すいません、AはA<img src="http://aaaa.com/1.png">等を想定してください。
Bhttp://aaaa.com/1.pngという文字列が単体であった場合は自動リンクしたいので
拡張子検索以外でお願いします。
470nobodyさん:2014/03/07(金) 18:40:22.88 ID:???
$str = preg_replace("{(?<!src=\")(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)}","<a href=\"$1$2\"target=\"".TARGET."\">$1$2</a>",$str);

src="に続く場合は除けばいいんだろ?
eregはやめようよ。
471nobodyさん:2014/03/08(土) 09:27:18.48 ID:wySctgna
池田小学校の児童八人を殺害した宅間守
宅間守の社会に対する被害者意識は
子供の頃に体験した招集ストーカーによって培われた

当時宅間守の親は近所の創価学会に批判的な人物を
子供を襲う危険な性犯罪者とし
宅間守とその友人に危険人物の顔をお覚えされるなどとして
再三に渡って招集ストーカーを行っていた

宅間守は遊び半分で嫌がらせを楽しみながらも
親からは「お前はいつ襲われるか分からない被害者なんだ」と言われる
こうして犯罪を繰り返しながらも被害者面する生き方を教え込まれた
472nobodyさん:2014/03/08(土) 10:07:07.19 ID:vNXlneYe
利用規約の同意→問い合わせフォームという形にしたいのですが、
フォームへの直アクセスを防ぎたい場合、
if (strstr('利用規約のURL', $_SERVER['HTTP_REFERER']) == false) {
// エラーメッセージ
}

とする書き方でも問題無いですよね?
出来ればセッション無しでシンプルにやりたいと思っています。
473nobodyさん:2014/03/08(土) 10:11:37.36 ID:???
業務用の作ってるっぽいけど
リファラーとか無意味なのはプロなら分かるはずだぜ?
474nobodyさん:2014/03/08(土) 10:17:10.55 ID:???
技術的には穴があるけど、むしろ法的に抜け道を通ってきた相手に規約への同意が拘束力あるかが問題になる気もする
抜け穴を通ることで明確な利益を得られるわけじゃないだろうし
リファを弄ってきた相手に対する規約の拘束力があるかはさすがにしらん
475472:2014/03/08(土) 10:20:26.60 ID:???
>>473-474
リファラスパム(偽装)とか考えられますが、
フォームの入力チェックはしているので、
そこまで強固なチェックは必要ないと考えています。

ですので、単純に>>472の書き方で最低限(非技術者)に対する
チェックは出来ているのか否かをアドバイスいただければ幸いです。
476nobodyさん:2014/03/08(土) 10:27:10.85 ID:???
私見だけど
 ・サービスレベルの制限ではない(有料コンテンツ等)
 ・リファラの偽装自体、基本的に悪意がない限りは行わない(XSRFとかで飛ばされる可能性はあるけど)
ってあたりでコンシューマ向けの制限としては問題ないんじゃないかと思う
477nobodyさん:2014/03/08(土) 10:34:32.73 ID:wySctgna
池田小学校の児童八人を殺害した宅間守
宅間守の社会に対する被害者意識は
子供の頃に体験した招集ストーカーによって培われた

当時宅間守の親は近所の創価学会に批判的な人物を
子供を襲う危険な性犯罪者とし
宅間守とその友人に危険人物の顔をお覚えされるなどとして
再三に渡って招集ストーカーを行っていた

宅間守は遊び半分で嫌がらせを楽しみながらも
親からは「お前はいつ襲われるか分からない被害者なんだ」と言われる
こうして犯罪を繰り返しながらも被害者面する生き方を教え込まれた
478nobodyさん:2014/03/08(土) 10:35:30.93 ID:???
>>475
利用規約ページからのリファラーが条件なら、strstrの処理はいらないんじゃない?
単純に、これでよさそう(より制限的になる)。
if ('利用規約のURL' !== $_SERVER['HTTP_REFERER'])) {
// エラーメッセージ
}

あとは、利用規約への同意を、チェックボックスにチェックしてもらって、
それを確認している作りならば問題なさそう。多分。
できれば、ワンタイムトークンとか組み入れた方が良いけど。
479nobodyさん:2014/03/08(土) 10:38:33.31 ID:???
リファラを送らない設定をしてる人は問い合わせできないとか。
480472:2014/03/08(土) 10:40:16.40 ID:???
>>476,478
利用規約同意のチェックはしています。
ワンタイムトークンはセッション無しで出来ますかね?
調べてみます。皆さま、アドバイスありがとうございました。
481nobodyさん:2014/03/08(土) 10:41:41.97 ID:???
POSTフォームでhiddenでキーを設定すればいいんじゃないの
482nobodyさん:2014/03/08(土) 10:46:00.11 ID:???
リファラ挟むのはいらないんじゃね
なんでセッションを使うのを拒否するのか・・・
数行のコード入れて変数を作るだけなのに難しいものでもないでしょう
483nobodyさん:2014/03/08(土) 11:26:55.79 ID:???
問い合わせに利用規約の同意が必要なの自体がどうかとも思う
484nobodyさん:2014/03/08(土) 11:35:13.55 ID:???
>利用規約の同意→問い合わせフォームという形にしたいのですが、
>フォームへの直アクセスを防ぎたい場合、

この間がPOST処理なら、 POSTメソッドを確認すれば、直アクセスは防げる。
485nobodyさん:2014/03/08(土) 11:36:28.95 ID:???
なんか必要があったとしても
フォームの送信ボタンで兼ねちゃっても構わないと思いますがね。
問い合わせフォームに規約に同意しないと見られては困るものがあるんですかね。
486nobodyさん:2014/03/08(土) 11:40:35.08 ID:???
487nobodyさん:2014/03/08(土) 11:50:06.06 ID:???
>>484だけど訂正
POSTメソッドを確認しても、直アクセスは防げないね。ゴメン。
488nobodyさん:2014/03/08(土) 12:09:08.81 ID:???
>>480
>ワンタイムトークンはセッション無しで出来ますかね?
アクセスごとにランダムでキーを生成できて、そのアクセスだけと紐付けした上でフォームへキーを渡す方法があるならいけるよ
489nobodyさん:2014/03/08(土) 13:26:06.26 ID:???
自前でセッション実装してるようなもんだな
490nobodyさん:2014/03/10(月) 00:50:12.28 ID:???
レッツPHP由来のコードが事件を起こしてるみたい。
あれほど馬鹿はPHPを使うなといわれていたのに。
http://maguro.2ch.net/test/read.cgi/poverty/1394376340/
491nobodyさん:2014/03/10(月) 01:49:20.59 ID:???
レッツはPHP4時代の古いコードだからな
492nobodyさん:2014/03/10(月) 05:57:53.18 ID:???
PHP厨はム板に来ないでくれ
迷惑だから
493nobodyさん:2014/03/10(月) 09:22:15.43 ID:???
逆もまた然り
494nobodyさん:2014/03/10(月) 09:26:40.86 ID:???
加齢臭がするから華麗にスルー
495nobodyさん:2014/03/10(月) 10:11:39.87 ID:doEo9Ey2
md5関数によるパスワードの暗号化について質問です。
パスワードにsaltを付加し、md5で暗号化した場合、
復元される可能性はどれくらいあるでしょうか?

atwikiでパスワードの漏出・復元が問題となっているようで、
とても気になります。
(こちらはsaltの付加がなかった為、復元されてしまったようです。)
496nobodyさん:2014/03/10(月) 10:33:05.79 ID:???
そりゃブルートフォースアタックの確率みたいなもんじゃね
短ければ即復元できるし
ながければそれにかけるリソースがもったいないと攻撃者が感じるだろう
497nobodyさん:2014/03/10(月) 10:55:06.64 ID:???
>>495
saltが無かったとしても、復元できるのは辞書攻撃とかに弱いパスワードもしくは短いパスワードだったんじゃないのかな。
saltがあった場合、saltが判明していれば、saltが無いのと同じ。判明してなければ判明するまで基本的に無理。
498495:2014/03/10(月) 12:07:37.27 ID:Z0OipPDv
>>496-497
ありがとうございます。
自サイトで、長めのsaltの付加をしておいて良かったです。
ただ、md5ではなく、sha1とかにしておけば良かったと少し後悔。

saltまで流出すると、復元されてしまうのは怖いですが、
レンタルサーバー自体に脆弱性が有る場合には、対策が難しいですよね。
499nobodyさん:2014/03/10(月) 12:12:52.98 ID:???
>>498
だからパスワードは長くしろといわれるんだよ。
文字の種類も混ぜろといわれるでしょ。
安易なパスワード設定は、キャッシュカードの暗証番号に誕生日設定するのと同じような愚かさだから、
設定したユーザにもある程度の責任があるとも考えられる。
500nobodyさん:2014/03/10(月) 12:36:50.61 ID:???
昔はパスワードをメモすると笑われたけど
メモしないと覚えられないくらいに複雑じゃないと安心できんな
501nobodyさん:2014/03/10(月) 13:02:03.69 ID:???
そういう俺は1234だけどなw
502nobodyさん:2014/03/10(月) 14:22:36.78 ID:???
前任者から引き継いだ関数をまとめたファイルが100kbyteほどあります。
これをユーザーサイトでinclude_onceしているのですが100kbyteというのは普通なんでしょうか?
読み込むには大きいと感じますし、ユーザーがアクセスするごとに読み込んでいるとなると結構な負担になるのではと思っています。
503nobodyさん:2014/03/10(月) 14:50:04.58 ID:???
504nobodyさん:2014/03/10(月) 14:53:10.37 ID:6p2nG/Rd
このサイトに表示されるマップを最大サイズで表示するにはどうすればいいでしょうか?

http://jp.xivdb.com/?maps/30/s1f1-00/La-Noscea/Middle-La-Noscea
505nobodyさん:2014/03/10(月) 14:56:44.24 ID:???
>>504
php関係あんの?
506nobodyさん:2014/03/10(月) 15:05:08.74 ID:4kaXJqs7
それすらわからないからぺちぱーなんだよ
507nobodyさん:2014/03/10(月) 15:12:22.67 ID:???
>>502
キャッシュ
508nobodyさん:2014/03/10(月) 15:48:34.73 ID:???
>>497
>saltが判明していれば、saltが無いのと同じ。
間違ってるぞ
509nobodyさん:2014/03/10(月) 16:25:56.64 ID:???
>>508
どの段階での違いの話をしているのか分からん。
質問者が求めてるであろうブルートフォースアタックに対しては
saltが無い場合とsaltが判明している場合に差はないよ。
510nobodyさん:2014/03/10(月) 16:38:21.67 ID:???
salt判明したら意味ないだろ
511nobodyさん:2014/03/10(月) 16:42:46.40 ID:???
そらそうだw
512nobodyさん:2014/03/10(月) 16:46:20.36 ID:???
>>509
>>495
>atwikiでパスワードの漏出・復元が問題
この段階での話
質問者が求めてるのは正しい暗号化の方法じゃないのか
長いsaltつけました、一回ハッシャ化しました、だけじゃ不十分だよっていうのが言いたかった
言葉足らずだったかもしれない、ごめんなさい

ちなみに、5.6から実装されたpassword_hash()とかsalt付きハッシュ返ってくるぞ
わざわざ分けて保存するのか?
513nobodyさん:2014/03/10(月) 16:47:01.13 ID:???
ハッシャ化ってなんだ、ハッシュ化だ
514512:2014/03/10(月) 16:48:13.96 ID:???
>5.6から実装されたpassword_hash()
今調べたら、5.5からでした
ごめんなさい
515nobodyさん:2014/03/10(月) 17:01:46.40 ID:???
>>512
正しい暗号化の方法を知りたいのか、
>>495がすでに実装している暗号化手法がどれくらい安全かの確認をしたかったかは不明。
個人的には後者だと予想しているけれど。

で、そもそも疑問文はこれですよ。
> パスワードにsaltを付加し、md5で暗号化した場合、
> 復元される可能性はどれくらいあるでしょうか?

>>497でsalt無しの場合について書いたのは、saltが無ければいくらでも復元できると思っているフシがあったから。
> (こちらはsaltの付加がなかった為、復元されてしまったようです。)

>>512の、わざわざ分けて保存するのか?についてはもう何が言いたいのか全然わからないです。
516nobodyさん:2014/03/10(月) 17:07:30.76 ID:???
連レスごめん。

> 質問者が求めてるのは正しい暗号化の方法じゃないのか
> 長いsaltつけました、一回ハッシャ化しました、だけじゃ不十分だよっていうのが言いたかった
> 言葉足らずだったかもしれない、ごめんなさい
これに関しては同意です。
517512:2014/03/10(月) 17:10:46.06 ID:???
>>515
>個人的には後者だと予想
それを理解してる人は>>495みたいな質問しないだろ

>そもそも疑問文はこれですよ。
その質問が>>495の意図とは限らない。正しいというか安全な暗号化方法をしりたがっているのかもしれない

>>510
これよ
意味あるんだよ。意味ないのは安全な暗号化されてない場合

>わざわざ分けて保存するのか?についてはもう何が言いたいのか全然わからないです。
わけてかくね
518512:2014/03/10(月) 17:15:50.31 ID:???
わけてかくねってレスを分けるっていうことだから、紛らわしくてごめん

php使う人5.5の実行環境ない人多そうだから例書いておく

password_hash ― パスワードハッシュを作る
http://jp1.php.net/manual/ja/function.password-hash.php

コード:
$options = [
'salt' => 'abcdefghijklmnopqrstuv'
];
echo $options["salt"]."\n";
echo password_hash("rasmuslerdorg", PASSWORD_BCRYPT, $options);

結果:
abcdefghijklmnopqrstuv
$2y$10$abcdefghijklmnopqrstuuAEy05HGRP6l80a9Rvt.ZZouqyKwOhX.
     ↑このソルトを分けて保存するのか?
っていう意味
519nobodyさん:2014/03/10(月) 17:19:39.85 ID:???
>>518
おkわかった。
その理解度なら、もう一回勉強しなおしてからレスをしてくれ。
そして脆弱なシステムが生まれないようにするためにも人に教えるのをやめるべきだ。

> 警告
> この関数で使うソルトを自前で設定するのはお勧めしません。 ソルトを省略すれば、安全なソルトをこの関数が自動的に作ってくれます。
最低限この警告がどういう理由で書かれているのかを理解するまでね。
520512:2014/03/10(月) 17:25:59.66 ID:???
じゃあ、こっちなら納得してくれるんか
$options = [
'salt' => base64_encode(file_get_contents("/dev/urandom", false, null, 0, 22))
];
echo $options["salt"]."\n";
echo password_hash("rasmuslerdorg", PASSWORD_BCRYPT, $options);
521nobodyさん:2014/03/10(月) 17:33:45.72 ID:???
>>520
結果は?何を分けるの?
522nobodyさん:2014/03/10(月) 17:35:46.06 ID:???
それぞれ前提条件が違う気がする
523nobodyさん:2014/03/10(月) 17:56:45.51 ID:???
saltなんて久々検索してみて、何か記憶があるなと思ったら、
昔俺が質問したやつだったw
4年前か...
懐かしいな
今ではPHPも殆ど使っていないが、俺この4年間何してたんだろ...orz
524512:2014/03/10(月) 18:46:35.86 ID:???
password_hash()は記号入るとぱっと見わからんようになるのな
>>520無視してくれていいや

>>522
俺もそんな気がする。見返したら>>516で全部終わってたわ

暗号化の回数によってはsaltつけただけじゃ不十分であるっていうのと、
saltは秘密であることに意味があるんじゃないよっていうのがいいたかった
525495:2014/03/10(月) 19:57:44.63 ID:yFyJBN/9
質問が曖昧で大変失礼しました。
自分が実装した暗号化ですが、これは安全でしょうか?

<?php

//saltのあるファイルの読込
require_once '../init.php';

$pass_by_md5 = md5($password . $salt . $password);

?>

ユーザーからのパスワードでsaltを挟んでからmd5にかけています。
$pass_by_md5の文字列とsaltが同時に流出した場合、
元の$passwordはどの位の確率で解析されるでしょうか?

また、saltの流出が無い場合は、安全と考えて良いでしょうか?
526nobodyさん:2014/03/10(月) 20:00:26.14 ID:???
暗号が破られるかどうかってPHPと関係ないだろ。
527nobodyさん:2014/03/10(月) 20:02:26.30 ID:???
もうこの際sugerしとけ
そっちの方が安全だ
528nobodyさん:2014/03/10(月) 20:06:35.52 ID:???
MD5って、一対一対応がないから、衝突はありえるだろ。
Wikipediaだと、元データは復元困難らしいが。



MD5 - Wikipedia
ハッシュの衝突耐性について
MD5のハッシュ値については、パソコンレベルで、数10分程度で、同一ハッシュ値の非ユニークなデータ列を生成できる実装が広まっている。
すなわち、強衝突耐性は容易に突破されうる状態にある。
ただし、任意に与えられたハッシュ値に対して、(何らかの別の)データを生成する実装が広まっているわけではないので、弱衝突耐性が容易に突破されうる訳ではない。
また、任意に与えられたハッシュ値に対して、改竄者の意図どおりのデータ列を容易に生成できる訳でもない(もしそうならば、それは既に暗号ではない)。
強衝突耐性の突破とは例えば、同一のハッシュ値を持つ非ユニークな2つのデータ列D1とD2のペアを1つ発見できた、ということである。
なお、この場合D1やD2が意味を持つデータであるかどうかは問われない。
529nobodyさん:2014/03/10(月) 20:11:07.70 ID:???
MD5を使用していることがバレたとしても、データ復元は困難で
そもそもどういうハッシュ使ってるか分かってない以上、まともには復元できないだろ。
別の予想もつかないような脆弱性を慎重に確認したほうが安全度が高いんじゃないか。
530nobodyさん:2014/03/10(月) 20:14:14.82 ID:???
>>525
パスワードに数字1桁のものしか設定できないシステムがあるとするじゃん?
どんなに強固な暗号化方式を用いたとしても、10回の試行でパスワードは判明するよね。
これをあなたのいう「解析」に含めるなら、時間を無視すれば100%判明することはわかる?

だから上でも書かれてるように、パスワードの強度次第ということになるんだよ。

atwikiでパスワードがもれてるのは、パスワードの強度が低いものから順にもれてるの。
531nobodyさん:2014/03/10(月) 20:24:05.61 ID:???
総当りだったらすでに暗号理論や暗号強度は関係ないな
532nobodyさん:2014/03/10(月) 20:36:28.76 ID:???
>>525
そういうのは暗号化とは言わないよ

パスワードを保存するならば、素直にpassword_*を利用すれば?
5.5未満ならば
https://github.com/ircmaxell/password_compat
を利用すれば良いと思うよ

saltを指定しないでpassword_hashを利用するようにな
533495:2014/03/10(月) 20:52:48.68 ID:yFyJBN/9
>>529
セキュリティ関連について再確認したいと思います。

>>530
ユーザーに対して、強度のパスを登録するよう注意喚起したいと思います。

>>532
password_hashについて調べてみます。

いろいろお教えくださり有難うございました。
本当に感謝です。
534nobodyさん:2014/03/10(月) 20:53:56.83 ID:???
>>523
ピアノマンかな?
535nobodyさん:2014/03/10(月) 20:58:45.73 ID:???
なんかPHPとjavascript勉強すると、言語仕様ごっちゃにならね?
Cやってた身としては、Cに似てるのはありがたいのだが…。
536nobodyさん:2014/03/10(月) 21:03:57.45 ID:???
それは分かる
C、C++、PHP、Python、JavaScript、シェルスクリプト、あとちょっとだけJava使う俺は、暫く間隔開くとストレス感じることある
$付け忘れたり 
varを宣言したりしなかったり
537nobodyさん:2014/03/10(月) 21:28:51.97 ID:???
PHPとJavascriptはごっちゃにならないなー。
まあjQuery使ってるからってのが大いにあるけど。
538nobodyさん:2014/03/10(月) 22:09:50.34 ID:???
それじゃ話が違うだろ、ハゲ
539nobodyさん:2014/03/10(月) 23:58:18.62 ID:???
【OS名】WindowsXP
【PHPのバージョン】5.2
【連携ソフトウェア】Apache
【質問内容】
<?php echo $_SERVER['REMOTE_ADDR'] ?>を仮にファイル名 a.php にして
ApacheとPHP入れた自分のパソコンのWebブラウザから http://127.0.01/a.php にアクセスすると
「127.0.0.1」と表示されると思うんだけど、ネット接続状態の自分のプロバイダIPを表示させる方法ってないかな?
自分のプロバイダがKDDIならKDDIのIP、SoftBankならSoftBankのIPが表示できるようにしたいんだけど。
外部のサーバにa.phpを置いてそれにアクセスすればいいんだけど、自分のパソコンの中だけで完結させたいんだ。
なんかいい方法ありませんか?「
540nobodyさん:2014/03/11(火) 00:01:32.02 ID:???
541nobodyさん:2014/03/11(火) 00:02:22.53 ID:???
>>539
わからないけどシステムコマンドに頼るしかないんじゃなかろうか
それに複数のネットワークに接続してたりルータ経由だったり
考える点はいろいろある
542nobodyさん:2014/03/11(火) 00:02:37.88 ID:???
ヘアピンNATルーター使うとか
今の環境じゃ無理じゃないかね
543nobodyさん:2014/03/11(火) 00:04:59.13 ID:???
>>540
それフリーサービス?
544nobodyさん:2014/03/11(火) 00:05:06.58 ID:???
>>536
連結演算子なんかは間違うな
PHPだと.だけどJSだと+だとか
大量に書いてから気付いた時には少し凹む
545nobodyさん:2014/03/11(火) 00:08:10.18 ID:???
>>543

http://www.telize.com/

>There is no rate limit of any sort at the moment, and the service is free for everyone to use.

商用までいいかとかはわからん。
546nobodyさん:2014/03/11(火) 00:20:10.57 ID:???
色々レスサンクスです。

>>541-542
難しそうですかー。
>>540のサイトみたいに外部のサーバにa.phpを置いて、自分のパソコンのPHPから file_get_contents で取り込んで、
IP部分を抽出するしかないのかな
547nobodyさん:2014/03/11(火) 00:22:28.98 ID:F4Q5KCKh
この板sageだとID出ないのか(汗

>>539 = >>546です。ご回答ありがとうございました
548nobodyさん:2014/03/11(火) 13:00:36.41 ID:knsPq3qu
【OS名】Redhat
【PHPのバージョン】6.4
【連携ソフトウェア】MySQL
【質問内容】
XSS対策について質問なのですが
現在は出力時にhtmlspecialcharsでエスケープしていますが、データベースに入れる際にhtmlspecialcharsするべきと他の人から言われています。
データベースに入れる際はmysql_real_escape_stringしているのですが、入れる前にhtmlspecialcharsするべきなんでしょうか?
549nobodyさん:2014/03/11(火) 13:16:05.93 ID:???
自分で確認した方がいい。
ちゃんと復元できてるのかと、脆弱性を。
BASE64なら完全な文字のテキスト。
550nobodyさん:2014/03/11(火) 13:24:19.49 ID:???
>>548
htmlspecialchars二回するの?
普通は、出力時のみだと思うよ
551nobodyさん:2014/03/11(火) 13:40:36.87 ID:???
エンコードに使えそうな関数

addslashes
urlencode
rawurlencode
base64_encode
convert_uuencode
htmlspecialchars
htmlentities($str,ENT_QUOTES,'SJIS-win',false)
mb_convert_encoding( $str, 'HTML-ENTITIES', 'SJIS-win')
552548:2014/03/11(火) 13:44:14.46 ID:knsPq3qu
私も出力時のみと思っていたのですが入れる前にするのが常識みたいに言ってきたもので、私のほうがおかしいのかと思ってしまっておりました。

エスケープする場所を移動させるだけと思っているようで、事前にエスケープすると入れる情報の長さもかわることになるので
設計部分から見直す必要性があることもわかっていないようで困っておりました。
553nobodyさん:2014/03/11(火) 13:51:15.27 ID:???
>>552
そいつがプロなら殴っとけ
554nobodyさん:2014/03/11(火) 13:55:46.79 ID:???
使う用途次第で、HTMLをHTMLエンティティに変換して出力する用途が決まっていれば
データベースを別のコードでも使うときなどのために変換済みをいれておいたほうがいいことがある。
555nobodyさん:2014/03/11(火) 14:04:17.06 ID:???
>データベースに入れる際にhtmlspecialcharsするべきと

むしろ、こっちの理由を聞いてみたい。
その他人とやらにおいて、何か合理的な理由があるのだろうか。
556nobodyさん:2014/03/11(火) 14:07:00.88 ID:???
取り出したデータが無加工でそのまま使えることを保証するためだろ。
557nobodyさん:2014/03/11(火) 14:10:44.28 ID:???
>>556
そんな保証が必要なの?
出力先がHTMLに確実に限られていればわからなくはないが
558nobodyさん:2014/03/11(火) 14:15:02.96 ID:???
つねに、出力でhtmlspecialcharsをやるなら、ほぼHTMLだろう。
バイナリデータなどでやったらデータが破壊される。
559nobodyさん:2014/03/11(火) 14:18:17.78 ID:???
>>558
「つねに」やるってどこか書いてる?
560nobodyさん:2014/03/11(火) 14:19:24.04 ID:???
> 現在は出力時にhtmlspecialcharsでエスケープしていますが、データベースに入れる際にhtmlspecialcharsするべきと他の人から言われています。
561nobodyさん:2014/03/11(火) 14:20:25.47 ID:???
保存時はなるべく生データの方が融通聞いていいと思うけどね
562nobodyさん:2014/03/11(火) 14:20:56.79 ID:???
DBに保存されるのは無加工の生のデータであるべきである
なぜならhttp経由のみで使うとは限らないからである
htmlspecialcharsを入れとけばエスケープ忘れがあっても安全という主張があるが
html出力時にDBから取り出したデータにhtmlspecialcharsを挟むという
PHPのデファクトスタンダードが通用せず第三者からみたらとても不思議で一見まずいコードに見える
このような不思議な仕様にすべきでない
563nobodyさん:2014/03/11(火) 14:24:37.63 ID:???
HTML以外が入るときのために、変換済みのほうがいいだろ。
バイナリデータに対して出力で変換したら壊れる。
564nobodyさん:2014/03/11(火) 14:27:32.76 ID:???
>>563
アホなこといってんじゃないよ
バイナリデータにhtmlspecialcharsなんて使うわけないだろ
つうか画像ならGDとかに突っ込んだり
そのまま出力するにしてもヘッダで指定すんだろ
プレーンテキストとは扱いが違う
565nobodyさん:2014/03/11(火) 14:33:13.69 ID:???
DBに入れる際にhtmlspecialcharsすると、出力時にもhtmlspecialcharsをして、
二重にエスケープされる可能性があるから、まずいんだよね。

たとえば、'&' (アンパサンド) は '&amp;' に変換される。
これをもう一度エスケープすると、 '&amp;amp;'になって、
'amp;'という不要な文字がブラウザに表示されてしまう。
566nobodyさん:2014/03/11(火) 14:34:37.26 ID:???
出力先にあわせて、適切な処理を行うという常識を無視し
XSS等がおきた時の責任逃れをしたいっていう感覚をヒシヒシと感じる
567nobodyさん:2014/03/11(火) 14:34:57.80 ID:???
htmlならバイナリデータなんてDBに突っ込まないで
場所だけを記しておくよな
568nobodyさん:2014/03/11(火) 14:40:07.10 ID:???
htmlspecialcharsは不可逆変換だしね。

< と &lt; は、 double_encodeの設定で  &lt; &lt; もしくは &lt; &amp;lt; のどちらかになるにせよ
htmlspecialchars_decode すると < と < になってしまう。
569nobodyさん:2014/03/11(火) 14:53:05.09 ID:???
>>548
sanitized_text ってカラム名にしてそこに「も」入れるのが、その、他の人との折衷案になるんでない?
「も」としたのは生データは重要だから失うわけにはいかないという理由。
570nobodyさん:2014/03/11(火) 18:15:58.54 ID:???
何この流れw
馬鹿だなぁw

DB格納時やらバイナリデータにh()を適用ってw
特にバイナリデータにはウケたw
571nobodyさん:2014/03/11(火) 20:48:31.32 ID:???
DBいれる前に不可逆変換すると仕様変更や拡張、
リニューアルの時とかネックになりがちだしなー。
基本は、あくまで「渡す時に適切な処理を」だろ。
あくまで基本だけど。

ところで、なんでhtml文章を格納するのに話題で
バイナリにhtmlspecialcharsとか言い出してる馬鹿がいるの?
572nobodyさん:2014/03/11(火) 20:50:47.99 ID:???
データベースにHTMLとバイナリが混合していて、
それを見分ける方法などを付けていなければ
バイナリに対して加工してしまう可能性がある。
573nobodyさん:2014/03/11(火) 20:53:31.02 ID:???
>>572
バイナリをHTML自体、またはその一部として出力するの??
574nobodyさん:2014/03/11(火) 20:55:11.10 ID:???
>>572
DBとSQLは1対1で作るんじゃないの?
どこに何が入ってるか分からないものと戦うの?
575nobodyさん:2014/03/11(火) 21:12:59.37 ID:???
>>572
見分ける方法が無いまま混在させる状況がよく分からん。
よしんば入れるとして、バイナリが入る可能性があるのなら一律エスケープしないだろ。
576nobodyさん:2014/03/11(火) 21:30:10.60 ID:???
自分で設計しといてimage BLOBとtext CHARの区別もつかない開発者とかねーわwww
577nobodyさん:2014/03/11(火) 21:31:59.48 ID:???
>>576
×区別もつかない
○区別をつけない
578nobodyさん:2014/03/11(火) 21:34:42.14 ID:???
>>577
自レス?
579nobodyさん:2014/03/11(火) 21:48:20.79 ID:???
俺なら出力するときだけだな。DBに入れるのは生データのほうが何かと融通が利く。
580nobodyさん:2014/03/11(火) 22:09:58.62 ID:???
他人が設計して共同開発するようなものても
取得するデータがどのようなものかはあらかじめ把握しているのが普通
じゃなきゃアプリケーションなんて作れません
581nobodyさん:2014/03/11(火) 22:13:56.35 ID:???
      r ‐、
      | ○ |         r‐‐、
     _,;ト - イ、      ∧l☆│∧  良い子の諸君!
    (⌒`    ⌒ヽ   /,、,,ト.-イ/,、 l  入力と検証と保存と出力の話が混ぜこぜになっているが
    |ヽ  ~~⌒γ⌒) r'⌒ `!´ `⌒)  回答する側も初心者だ
   │ ヽー―'^ー-' ( ⌒γ⌒~~ /|  騙されるな。
   │  〉    |│  |`ー^ー― r' |
   │ /───| |  |/ |  l  ト、 |
   |  irー-、 ー ,} |    /     i
   | /   `X´ ヽ    /   入  |
582nobodyさん:2014/03/11(火) 22:15:16.23 ID:???
話がうつってるだけなのについてこれないからってクソみたいなAA貼るなカス
583nobodyさん:2014/03/11(火) 22:21:21.67 ID:???
まあ、DBへの入力時にhtmlspecialcharsするくらいなら、
投稿入力文字列をチェックして、タグ'<>'の投稿を禁止するとか、
入力値チェックの段階で対応する方がよさそう。
584nobodyさん:2014/03/12(水) 10:33:14.69 ID:???
>>572
> ところで、なんでhtml文章を格納するのに話題で
> バイナリにhtmlspecialcharsとか言い出してる馬鹿がいるの?

>>583
それも手の一つであるけど、仕様決めのときの
ポリシーの問題であってレイヤーが違いすぎるだろ。
それ言い出すと、WAFいれたらとかそういう話も出てくる。
そも、XSS対策を意図した場合、PHPレベルで解決不可能じゃないだけに
そっちを先に論ずるのも妙だと思われる。
585nobodyさん:2014/03/13(木) 05:39:10.94 ID:???
ム板にID入って荒らせなくなったぺちぱー涙目
586nobodyさん:2014/03/13(木) 06:13:09.69 ID:???
おおお、ID出るようになったのか。久々にム板いこっと
587nobodyさん:2014/03/13(木) 07:53:48.71 ID:???
誰にも相手にされない煽り()
588nobodyさん:2014/03/13(木) 13:11:40.14 ID:???
ぎいやぁぁぁぁぁぁぁぁぁぁぁ!
しまった!
大変な失敗をしてしまった!!
もう俺の人生終わりだァァァ!!
589nobodyさん:2014/03/13(木) 13:12:23.06 ID:???
始まってすらない
590nobodyさん:2014/03/13(木) 13:17:37.89 ID:???
こっちもID出てくれたらな
591nobodyさん:2014/03/13(木) 13:21:29.15 ID:???
お疲れ様でした。次の周では頑張ってください
592nobodyさん:2014/03/13(木) 14:47:34.75 ID:???
>>589
お前は始まることすらないがなw
593nobodyさん:2014/03/13(木) 19:11:56.06 ID:QK76W5wi
ぺちぱーには無理
594nobodyさん:2014/03/13(木) 21:48:52.35 ID:???
>>585
どこが荒らされてたの?みてみたい
595nobodyさん:2014/03/13(木) 21:55:50.20 ID:???
被害妄想こじらせて見えない敵と戦ってるんだからそうっとしといてやれ
596nobodyさん:2014/03/13(木) 23:42:40.32 ID:???
PHPユーザが荒らしてることにしないと困る人キテター
597nobodyさん:2014/03/13(木) 23:53:19.72 ID:???
PHP「すら」使えんアフォ荒しは消えればいいのにな
598nobodyさん:2014/03/14(金) 06:41:17.54 ID:???
PHPは誰でも使えるくらい簡単だが
作るシステムの適正に合ったコードが書ける人間は意外と多くない
599nobodyさん:2014/03/15(土) 09:39:37.71 ID:B7D/HL0C
すいません、教えてください。

GDを使ってpng画像を作成するプログラムを作っています。
画像を作成して表示することはできたのですが、
右クリックして「画像を保存」しようとすると、うまく保存してくれません。
保存できるようにする方法はありますでしょうか?
600nobodyさん:2014/03/15(土) 10:00:00.04 ID:???
表示出来たらそれ以降はブラウザの問題でしょ
拡張子によって保存出来ないとか?拡張子.pngにしてみたら
601nobodyさん:2014/03/15(土) 10:18:54.27 ID:B7D/HL0C
保存しようとすると、拡張子が*.phpになり、うまく保存できませんでした。

ただ、ご指摘いただいた点にヒントを得て、いろいろためしてみたところ、うまくいく場合といかない場合がありました。
IEの場合、デフォルトでpng保存となり、保存した画像を開いたところちゃんと表示されました。
chromeの場合、デフォルトではphp保存となっており、拡張子をpngに変えればうまく保存できました。
ただ、phpのまま保存すると、うまくいきませんでした。
これをpng形式で保存するように事前に指定できればいいのですが・・・
そう考えると、たしかにブラウザの問題となりますね。
602nobodyさん:2014/03/15(土) 11:06:02.04 ID:???
>>601
>ただ、phpのまま保存すると、うまくいきませんでした。
拡張子がphpになっているだけで、pngとして保存できているはずだよ

鯖側では、Content-Dispositionを使ってfilenameをつけるのがベターかと
603nobodyさん:2014/03/15(土) 11:11:55.23 ID:???
>>601
下の手法を応用して、拡張子pngに適用するのはどうかな。

PHP拡張子としてHTML型を使用する
# 全てのPHPコードをHTMLのように作成する
AddType application/x-httpd-php .htm .html

http://www.php.net/manual/ja/security.hiding.php
604nobodyさん:2014/03/15(土) 12:50:50.87 ID:/0KFEDAU
<?=$hoge ?>で$hogeの内容を出力すると思われる
ソースがあるんですがこれを有効にする方法が分かりません。
「php はてなイコール」「php クエスチョンイコール」
でググってもダメでした。

教えて下さい><
605nobodyさん:2014/03/15(土) 12:53:04.27 ID:???
いや、デフォルトで有効だし・・・むしろ無効にする方法を知らないわ
606nobodyさん:2014/03/15(土) 12:59:11.19 ID:???
「php ショートタグ」
607nobodyさん:2014/03/15(土) 14:28:12.69 ID:???
>>605
有効にしてんのかよw
608nobodyさん:2014/03/15(土) 15:01:32.67 ID:???
>>604
5.4以降使いな、いつでも有効だよ
609nobodyさん:2014/03/15(土) 15:32:56.48 ID:???
ショートタグは、コーディング規約で非推奨なことが多いから
使わないほうがいいよ。
610nobodyさん:2014/03/15(土) 16:55:36.75 ID:???
ローカルな掲示板の保守頼まれてスクリプト組んだんだけど画像認証がうまく突破できない
4桁の数字だから総当りでもいいんだけど、効率が悪い;
phpってまではわかったんだが、どうやってPOSTすれば認識されるんだろう?
SPAMの書き込みがあるから何とかなりそうなんだ
お前ら力を貸してくれ、ください
611nobodyさん:2014/03/15(土) 16:59:32.65 ID:???
その掲示板に保守用のバックドアを作ってもらうぐらいしかない
画像認証の突破方法なんてSPAM屋さんを利するだけだから誰も教えてくれないよ
612nobodyさん:2014/03/15(土) 17:02:47.17 ID:???
なぜ保守に画像認証突破が関係あるのか
613nobodyさん:2014/03/15(土) 17:16:54.30 ID:???
というか何のスクリプト?
なんとなく、「それはそういうやり方でやるもんじゃない」という答えで終わりそうな話だけど
614nobodyさん:2014/03/15(土) 18:26:26.69 ID:???
プログラム板の質問スレにも書いてなかった?君
やりたい事がまったくわからん
615nobodyさん:2014/03/15(土) 22:10:33.52 ID:???
スパム投稿で保守するってことだろ
616nobodyさん:2014/03/15(土) 22:19:25.58 ID:???
保守ってスレの保守かよ
こっち関係の板じゃ別の意味に取られるぞ
617nobodyさん:2014/03/16(日) 00:22:45.22 ID:???
ああー、そういうことなのか。
なんで自動ポストって言葉を使わないかなぁ。
618nobodyさん:2014/03/16(日) 05:58:04.91 ID:???
htmlプロトコルやheader()周りって、どんなのを、どの程度抑えたらいいですか?
619nobodyさん:2014/03/16(日) 12:23:22.71 ID:???
>>618
>htmlプロトコル
httpな
httpは↓
https://www.ietf.org/rfc/rfc2616.txt
header関数は↓
http://www.php.net/manual/ja/function.header.php
抑えておいたらはずれは無いんじゃないかな
620nobodyさん:2014/03/16(日) 13:55:18.87 ID:/7LU/Oeu
html://
621nobodyさん:2014/03/16(日) 19:05:47.95 ID:???
あ、素で間違えた...。
Content-Disposition:、Cache-Control:
辺りの頻出するもの教えて欲しいなって
この辺って、どの程まで理解してPHPはじめたらいいのか助言欲しいのん
ApacheのディレクトティブやPosgreSQLの設定までキリがないお
622nobodyさん:2014/03/16(日) 19:17:58.72 ID:l1xluNFW
複数のファイルを1つにするアーカイブ処理を行いたいのですが、
通常アーカイブ処理は元よりファイルサイズが小さくなる(圧縮される)と思いますが、
PHPで用意されてる関数群は何かしら設定が必要なようなので、
http://www.php.net/manual/ja/refs.compression.php
デフォルトで使える方法でアーカイブする方法を模索しています。
今考えてるのは、
file_get_contentsで読み込んでbase64_encodeしたものを、
その他情報とともに(ファイル名、親フォルダなど)テキストファイルに記述していく方法ですが、
この方法だと元のファイルより当然サイズが肥大化します。
アーカイブするのが主目的なので肥大化しても構わないと言ったら構わないのですが、
何か他にこの手の処理にデフォルトで使える有効そうな関数はありませんか?
zipアルゴリズムを実装するとか、フリーのそういう類のスクリプトを拾ってくるってのはなしでお願いします。
623nobodyさん:2014/03/16(日) 19:33:47.17 ID:???
なんでデフォルトしかだめなの?
624nobodyさん:2014/03/16(日) 19:37:10.45 ID:l1xluNFW
>>623
理由は特にありません
625nobodyさん:2014/03/16(日) 19:55:28.56 ID:???
ないよ
626601:2014/03/16(日) 20:45:09.55 ID:WUHmbqmd
>>602
ありがとうございます。
遅ればせながら、お礼です。
Content-Disposition: inline; filename=
で問題解決しました。
627nobodyさん:2014/03/17(月) 09:22:00.38 ID:???
>>622
exec で zip なり makecab 
628nobodyさん:2014/03/18(火) 12:27:27.37 ID:???
亀レスだが、hhvmは言うほど早くない。
php 5.5 + 10%だな。
自分の環境のテストではそんな感じだった。
629628:2014/03/18(火) 12:31:38.79 ID:???
628ですが、亀レスの意味をわからず使ってしまいました。
申し訳ないです。
630nobodyさん:2014/03/18(火) 12:34:47.69 ID:???
>>626
ついでにheader()しても先にレスポンスヘッダーにtext/html仕込まれたりするから、
ini_setでdefault_mimetypeを指定しておくと吉。
631nobodyさん:2014/03/18(火) 13:02:21.50 ID:RFZn4Uk4
PHPによるオブジェクト指向プログラミングの学習法について質問です。
実践的なOOPを学習するにはどうしたらよいですか?
おすすめの学習法がありましたら教えて欲しいです。

PHPの入門書などを読むと、クラスの書き方には言及していますが、
実際にオブジェクトを使って何か成果物を作るようなものが少ないです。
文法的なことではなく、実践的なOOPを身に付けたいです。

クラスの書き方はある程度覚えたので、例えば、グローバルスコープで、
どうオブジェクトを扱うか等の知識を得たいです。
よろしくお願いします。
632nobodyさん:2014/03/18(火) 13:55:07.26 ID:???
そりゃPHPで勉強するってのが無茶あるわ
633nobodyさん:2014/03/18(火) 14:50:00.57 ID:ql50fOB4
データベースの検索結果をyieldで一件ずつ返すのは有りですか
634nobodyさん:2014/03/18(火) 15:06:37.74 ID:???
>>631
そこの部分の一般例を覚えたいってこと?
それならば、クラス設計を突き詰めて学んだほうがいい気がする。
どうオブジェクトを扱うかは、結局クラス設計に依存するし、それ次第で変わるから。
そのあたりについて色々書いている人多いから、玉石混交だけど
色々読んでみるといいと思う。

で、課題作って実践する。

>>633
それ「自体」は無しじゃない。
635nobodyさん:2014/03/18(火) 15:37:26.95 ID:???
>>633
カーソルをちゃんと使えな
636631:2014/03/18(火) 15:51:26.19 ID:RyBw1YMD
>>634
具体的には、掲示板でもブログでもアンケートでもいいのですが、
OOPに基づいて、WEBアプリを構築してみたいというものです。

書籍「パーフェクトPHP」で学習したところ、OOPでフレームワークの構築をするとか
敷居がかなり高かったので、入門的に、掲示板などをOOPで作る定番な手法を学習したいのです。

端的には、「クラスを書いたら、後はどうしたらいいの?」という疑問です。
auto_loadして、クラスを読み込んで、オブジェクトを作り、プロパティを設定、
そして、メソッドを実行という流れだと想像するのですが、
全体としては、どのようにコーディングするのか、お手本がなくよくわからないのです。
637nobodyさん:2014/03/18(火) 16:24:02.08 ID:???
class 2chLikeBBS {
 private $db;
 function __construct() { $this->db = DB::instance()->get(); }
 function makeThread($_title, $_name, $_mail, $_body) {
  //transaction
  //INSERT INTO thread_tbl (title) VALUES ($_title)
  //INSERT INTO res_tbl (thread_id, name, mail, body) VALUES ($lastInsertId, $_name, $_mail, $_body)
  //commit
 }
 function getThreadTitle() {
 }
 function readThread($_threadId) {
 }
 function deleteThread($_threadId) }
 }
 function postResponse($_threadId, $_name, $_mail, $_body) {
 }
 function deleteResponse($_threadId, $_resId) {
  //UPDATE res_tbl SET name = 'あぼーん', mail = 'あぼーん', body = 'あぼーん' WHERE thread_id = $_threadId AND res_id = $_redId
 }
}

ど、どう?
638631:2014/03/18(火) 16:52:00.21 ID:RyBw1YMD
>>637
コードを示して頂きありがとうございます。
とても分かりやすいコードです。

このクラスを実際に利用するには、どうしたらよいのでしょうか?
グローバルスコープに次のようにすればよいのでしょうか?

<?php

require_once('DB.php');
require_once('2chLikeBBS.php');

$obj = new 2chLikeBBS();

//スレッド作成の場合
$obj->makeThread($_title, $_name, $_mail, $_body);

?>
639nobodyさん:2014/03/18(火) 16:59:31.16 ID:???
requireしまくってもいいけどこっちが一般的
http://www.php.net/manual/ja/function.spl-autoload-register.php
640nobodyさん:2014/03/18(火) 17:08:45.44 ID:???
俺は昔なにかあってautoloadやめて明示的にロードするようになった
まぁ勝手にロードとか型なしとかメリットでありデメリットでもあるからね
他人がコード読む際の可読性とか
641nobodyさん:2014/03/18(火) 17:19:26.69 ID:???
>>633
使い勝手のためならお好きにどうぞ
メモリの使用量を抑えるためだったら
クライアントライブラリ側で結果セットをバッファリングしてないかも調べとこう
642nobodyさん:2014/03/18(火) 17:27:33.26 ID:???
http://qiita.com/misogi@github/items/8d02f2eac9a91b4e6215
下のほうは実装例だから参考にしなくていいけど
上のほうにオートローダーの趣旨が書いてるから
>>639の説明がよくわからなかったら読んでみるといいかもしれぬ
643631:2014/03/18(火) 17:29:03.73 ID:RyBw1YMD
>>639
ありがとうございます。

このようにクラスを作成した場合、各メソッドごとに処理を記述します。
しかし、グローバルスコープでは、それらの一部のメソッドを使用するだけです。
この場合、使用しないメソッドも、全部を読み込んでいることになります。

クラスに10のメソッドが有る場合に、グローバルスコープで1つしかメソッドを
使わない場合には、効率が悪いように思えるのですが、
OOPでは普通のことなのでしょうか?
644nobodyさん:2014/03/18(火) 17:34:00.07 ID:???
>>638
MVCを調べるといいかも
645nobodyさん:2014/03/18(火) 17:40:10.21 ID:???
>>643
>>637はモデル
>>638はコントローラ
>>638でのコードはもっと多岐に渡るはずだぜ
作ったり消したり読み込んでビューを呼んで表示したり
646nobodyさん:2014/03/18(火) 17:47:58.92 ID:???
>クラスに10のメソッドが有る場合に、グローバルスコープで1つしかメソッドを
>使わない場合には、効率が悪いように思えるのですが、
>OOPでは普通のことなのでしょうか?

クラスに属する振る舞い(メソッド)を定義してるだけ≒関数定義してるだけで
全く気にする必要はないですね
例えばmysqli apiで実際に使うメソッドなんてこの中の2割程度なのでは?
http://www.php.net/manual/ja/class.mysqli.php
647631:2014/03/18(火) 18:18:38.57 ID:RyBw1YMD
>>646
ありがとうございます。目から鱗です。
メソッドを定義しても実行しなければ、パフォーマンスに影響しないのですね。

これまで、PHPの入門書に従って、使う関数のみを読み込み、
その都度、関数を実行していました。
そのため、関数をそれぞれ別ファイルに保存する方法をとっていました。
OOPだと、その関数を一つのファイル(クラス)にまとめられるのですね。

>>644-645
OOPとMVC、そしてフレームワークは深い関係があるようなので、
もう一度、OOPでフレームワークの学習に挑戦してみます。
ありがとうございました。
648634:2014/03/18(火) 18:54:20.68 ID:???
PHPのモジュール化されているクラスや関数と
ユーザの作成するものじゃパフォーマンスに与える影響は一応違う。
モジュール化されたものは、シンタックスチェックとか入らないから。
ただまぁ、それだけぶっこんどいても実用上そこまで気にならないレベル。

MVCで、躓くところって大体決まってるのでその時はMVACも参考にしてみると面白いかも。

クラスに複数メソッドが〜の部分は、メソッドの書き方に強く依存するけど、
それらを効率的に書こうとすると結構privateメソッドが増えてくることに気付けると思う。
649631:2014/03/18(火) 19:39:11.61 ID:Dg0Vus48
>>648
ありがとうございます。
参考にさせて頂きます。
650質問です。:2014/03/18(火) 23:41:47.91 ID:pDJRMjYx
次の方法でファイルを取ってきた時の
「接続先IPアドレス」と「HTTPリクエストヘッダ」を知る方法を教えてください。

$content = file_get_contents('http://example.com/hoge/fuga.html');

HTTPレスポンスヘッダなら $http_response_header で扱えますが、
その逆の、PHP側がリクエスト時に発行したリクエストヘッダを知りたいのです。
「GET /hoge/fuga.html HTTP/1.1」みたいなやつです。

また、この方法だと、DNSラウンドロビンで複数のサーバが立っていたら、
どのホストに接続したのかわからないと思います。
接続した先のIPアドレスを知る方法はあるでしょうか?

いちいちリクエストする前にURLを分解して
dns_get_record()でAレコードかAAAAレコードを記録してから
fsockopen()するしかないのでしょうか。

何か良い方法があれば教えてください(´・ω・`)
651nobodyさん:2014/03/19(水) 00:26:23.47 ID:???
curl関数じゃいかんの?
http://www.php.net/manual/ja/ref.curl.php
652nobodyさん:2014/03/19(水) 02:31:42.34 ID:???
ホスト名だけじゃ接続先のIPはHTTPじゃわからないんじゃない?

>いちいちリクエストする前にURLを分解して
>dns_get_record()でAレコードかAAAAレコードを記録してから
>fsockopen()するしかないのでしょうか。
接続先のIPを知る必要があるならやっぱ明示的に指定しないとだめだと思う
653nobodyさん:2014/03/19(水) 10:24:38.28 ID:iTMSstnB
【OS名】CentOS
【PHPのバージョン】6.3
【連携ソフトウェア】MySQL
【質問内容】
PDOでのエスケープについてご教授いただければと思います。
PDOを使えば自動的にエスケープなどがされると見かけますがこれはbindParamなどをしたときにエスケープされるということでしょうか?
それとも普通にexecuteされると自動的にされているということでしょうか?

$stmt = $conn_search->prepare("SELECT * FROM user WHERE id=?");
$stmt->execute(array($id));

この場合はエスケープされていないという判断でよいのでしょうか?
654nobodyさん:2014/03/19(水) 11:02:34.17 ID:???
>>653
どっちでもなります
655nobodyさん:2014/03/19(水) 11:46:52.59 ID:???
>>650
file_get_contentsを使う限りそのリクエストヘッダを知る方法はなかったはず?
ただfsockopenが許されるなら、つまりリクエストヘッダを定義することはOKってことですよね。
微妙な路線なんだけど、file_get_contentsの第三引数でがっちり定義でなんとかなりまへんか?

何か特殊なhttp経由のサービス使いたくてそれ用にきっちりやりたいなら、fsockopenでカチっと書いたほうがいいと思うけども。
httpのプロトコル理解できてるなら、2,3時間のことだし。
656nobodyさん:2014/03/19(水) 13:02:20.25 ID:???
>>650
DNSでもIPでもないHTTPだけじゃ無理だ
fsockopen()つかうぐらいなら、あらかじめ名前解決だけしておいて、curl使った方が楽だろ
657nobodyさん:2014/03/19(水) 15:23:11.73 ID:???
phpmyadminインストールしたんですけど、
ログインしても画面が真っ白で何も表示されません。
ググったんですが解決法が見つからず困っています。
アパッチログにはエラーらしきものは出てません
658nobodyさん:2014/03/19(水) 15:27:24.82 ID:???
知らんがな
659nobodyさん:2014/03/19(水) 15:29:42.86 ID:???
解決したんでもういっっす
660nobodyさん:2014/03/19(水) 15:57:05.57 ID:???
例えば、phpmyadminを避ける
661nobodyさん:2014/03/19(水) 15:58:21.86 ID:???
ケンカすんなって
662650:2014/03/21(金) 23:28:58.52 ID:omHYYgA0
>>651-652 >>655-656
返信ありがとうございます。
HTTPリクエストヘッダを簡単に取得する方法に淡い期待をしていましたが、
どうやら無いようですので、あきらめがつきました。

結局、parse_url()でパーツに分けてHTTPリクエストヘッダを用意して、
名前解決したIPアドレスへfsockopen()で接続してから、
fwrite()でHTTPリクエストヘッダを送信し、
fread()でレスポンスを繰り返し受信して、
preg_split()でHTTPリクエストヘッダとメッセージボディに分けました。

file_get_contents()なら1行で済むんですが、
細かいカスタマイズをしたければ、
やはり自分で書くしかないですよね(´・ω・`)
663nobodyさん:2014/03/21(金) 23:49:59.09 ID:???
>>662
特定IPアドレスへのアクセスをする際の
HTTPリクエストヘッダの簡単に取得する方法だよね?

HTTPリクエストヘッダの簡単に取得する方法だけなら
>>651が答えている通り
Curlで済むんで。
664nobodyさん:2014/03/22(土) 00:17:21.35 ID:YY11zoAH
【質問内容】
配信サイトのコメントビュアをつくろうと考えています。
ツイキャスで投稿されたコメントはAPIがあるので取得できたのですが、FC2Liveで投稿されたコメントはAPIが無いので取得することができませんでした。
APIの用意されてないウェブサービスにおいて、コンテンツをphpで取得するにはどうしたらいいですか?
初心者ですいません。これらに関するキーワードだけでも教えてもらえないでしょうか?
665nobodyさん:2014/03/22(土) 00:40:39.13 ID:???
見た感じツイキャスは単なるポーリングでfc2liveはRTMPでプッシュっぽい
結論から言うと無理じゃね
変態なら作れるかもしれないけど
666nobodyさん:2014/03/22(土) 03:28:03.58 ID:???
>>663
彼はRR相手のことを考えてたんだろうけど、それにしたところでcurlですむので、いいと思う。
667663:2014/03/22(土) 09:21:01.58 ID:???
>>666
そっか。>>656で書いてたね
IPでつないでHostヘッダ送れば良いだけだもんね
668nobodyさん:2014/03/22(土) 09:36:35.14 ID:???
つーかツイキャスもfc2liveも勝手にコメント取得しちゃいかんだろ
著作権で逮捕されてもしらんぞ
669nobodyさん:2014/03/22(土) 09:49:52.36 ID:???
>>665
そういうのってどうやって分かるんですか?
パケットキャプチャですか?
670nobodyさん:2014/03/22(土) 12:59:18.63 ID:???
WiresharkとかMS Network Monitorとかのほうがより詳細な情報は得られるだろうけど
ぱっとみたいだけならFirefoxアドオンのLiveHttpHeadersとか
Chromeは使ってないけど他のブラウザでも似たようなのはあるはず
671650:2014/03/22(土) 14:52:37.40 ID:ktRnIyxM
>>651>>656
PHPのマニュアルでcURLをパッ見た時は内容が多過ぎてよくわからなかったのですが、
他の方のブログ記事などを読んで理解できました。

下のようにしろとおっしゃっているんですね。
この方法は知らなかったので、勉強になりました。ありがとうございます。

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt( $ch, CURLINFO_HEADER_OUT, TRUE );
curl_setopt( $ch, CURLOPT_HEADER, TRUE );

$response = curl_exec( $ch );
$request = curl_getinfo( $ch, CURLINFO_HEADER_OUT );
curl_close( $ch );

ただ、この方法だと、IPアドレスでURLを開いた場合、
リクエストするHost:を変えられない気がしますので、
当面は >>662 の方法で様子を見てみたいと思います。

ありがとうございました。
672nobodyさん:2014/03/22(土) 15:24:19.74 ID:???
>>671
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: localhost"));
673nobodyさん:2014/03/22(土) 16:27:57.78 ID:???
せっかちな人だなぁ。マニュアルはきちんと読みましょう。
674nobodyさん:2014/03/22(土) 16:44:11.97 ID:???
>>670
あざっす クロームのnetwork recordだけだとうまく行かなったので
それつかってみようと思います
675650:2014/03/23(日) 17:53:41.96 ID:1kWfhJwo
>>672>>673
うう、ありがとうございます。
>>662 の方法は1行のバイト数に上限があって
ちょっと気持ち悪いので、さっそくcurlに書き換えたいと思います。

2ちゃんねるも、まだまだ捨てたもんじゃないですね(;´д⊂ヽ
676nobodyさん:2014/03/24(月) 18:50:35.74 ID:???
>>675
いいから二度と来るな
677nobodyさん:2014/03/24(月) 20:33:17.30 ID:x7Llo+Ch
【OS名】CentOS
【PHPのバージョン】6.3
【連携ソフトウェア】MySQL CakePHP
【質問内容】
PHP側からサーバーの転送量などは取得できますか?
サーバー監視などがあれば取得出来ることは知っておりますが
クライアントからroot権限などがない状態で転送量を測ってくれといわれまして
PHPだけで転送量を見ることは可能ですか?
678nobodyさん:2014/03/24(月) 20:35:31.33 ID:???
PHPにそんな機能はついてないから、PC、サーバーの機能にアクセスするか、定期的にログを書き出してもらって読みに行く。
679nobodyさん:2014/03/24(月) 21:21:05.93 ID:???
>>677
snmpじゃだめなの。
680nobodyさん:2014/03/24(月) 21:54:48.46 ID:???
/proc/net/dev
をfile_get_contentsか何かで読み込む
681nobodyさん:2014/03/24(月) 22:09:48.15 ID:viK+nXYj
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
682nobodyさん:2014/03/25(火) 00:31:40.37 ID:???
PHP+MySQLでアンテナサイトを作っています。
24時間、週間、月間で記事のクリックランキングを作りたいのですが、どうすればいいのでしょうか?

アンテナ自体はすでに完成していて、挙動としては、
Cronで一定時間ごとにRSS取得→データベースに登録→CSVに吐き出す→CSVを整形して出力
という流れになっています。
ここに上記の記事ランキングを付け加えたいのですが、どういうことをすればいいのか全然わかりません・・・。
683682:2014/03/25(火) 00:32:26.92 ID:/ohf3xE7
ID出し忘れました。
宜しくお願いします。
684nobodyさん:2014/03/25(火) 00:48:59.93 ID:???
>>682
リンクにクリックをトラックするJSを仕込んで(探せば出来合いのものが見つかる)
クリックカウントをファイルでもDBでも好きなところに保存。
DBならSQLでソートして出来上がり。
ファイルならPHP適当に処理して出来上がり。
出来上がったものをランキングの表示箇所に適当な手段で表示して完成
685682:2014/03/25(火) 01:20:44.79 ID:/ohf3xE7
>>684
ありがとうございます!
JSだけ探せれば意外と簡単そうですね。
やってみます!
686nobodyさん:2014/03/25(火) 07:09:23.96 ID:???
>>682
リンクをそのサイトへの直リンクではなく、自分のアプリケーションを経由するリダイレクトにする。
自分のアプリケーションの中でカウンタをインクリメントさせる。

こんなやり方もある。
687nobodyさん:2014/03/26(水) 05:56:20.37 ID:WEvnT6th
1.jpgと2.jpgを一緒に消したいのですが
どう指定したらいいでしょうか?
これではだめでした
unlink("1.jpg","2.jpg");

よろしくおねがいしますm(_ _)m
688nobodyさん:2014/03/26(水) 05:58:49.75 ID:???
勝手に関数作るなよ
689nobodyさん:2014/03/26(水) 06:13:09.03 ID:???
1つずつ消す
心配ならis_writableしてからやればいいんじゃね
あとはrenameしてtmpフォルダに移動するとか
690nobodyさん:2014/03/26(水) 06:36:41.28 ID:???
無理ですか・・・ありがとうございました
691nobodyさん:2014/03/26(水) 08:03:55.75 ID:???
>>687
仮に2つ以上同時に消せたとしても、内部的にやってることはforeachとかで回してまとめて消されてるだけの話

$files = array("a.jpg", "b.jpg");
function unlink_multiple($files){
//ファイルが必ず存在していると仮定して未チェック。必要に応じてfileがexistsか、is writableかチェックすること
foreach($files as $file){
unlink($file) or echo "{$file}が削除できませんでした。\n";
}
}
692nobodyさん:2014/03/26(水) 09:02:08.55 ID:???
array_map("unlink" ,["a.jpg", "b.jpg"] );
ま、意味はないね。
693nobodyさん:2014/03/26(水) 16:54:48.67 ID:n03wQtbD
【OS名】TurboLinux8
【PHPのバージョン】4.2.3
【連携ソフトウェア】apache 1.3
【質問内容】
テキストファイルのダウンロードをしたいです。chrome firefoxでは
動作しましたがIEはver11,ver8で試しましたが動作しません。
IEの場合、画面に表示されてしまいます。
<?php
$filename = "test.txt";
header('Content-Type: application/octet-stream; name=' . $filename);
header('Content-Disposition: attachement; filename=' . $filename);
print "ABCD\nEFGI\n";
?>
logを見てもphpのエラーはないようです。何か解決の方法、ヒントをいただけないでしょうか。
よろしくお願いいたします。
694nobodyさん:2014/03/26(水) 17:21:31.90 ID:???
>>693
ちなみに、何でそんな古い環境でつかってんの?
>【OS名】TurboLinux8
→サポート提供期間を2008年1月までに延長
(http://www.turbolinux.com/products/server/tl8s.html)

>【PHPのバージョン】4.2.3
Support for PHP 4 has been discontinued since 2007-12-31. Please consider upgrading to PHP 5.
(http://jp1.php.net/releases/)

>【連携ソフトウェア】apache 1.3
1.3.42 of the Apache HTTP Server was last 1.3 bug and security fix release. Please upgrade to the latest stable release to continue to receive bug and security fixes.
(http://httpd.apache.org/security/vulnerabilities_13.html)
695nobodyさん:2014/03/26(水) 17:22:42.39 ID:???
header('Content-Disposition: attachment; filename=' . $filename);

IE11で確認しました。
696693:2014/03/26(水) 18:23:32.41 ID:n03wQtbD
>>694
テレビ録画に使っていて、新たにごにょごにょするのが面倒だからです。
>>695
すみません、その1行の部分が私と違っているので動作しないということでしょうか。違いが見つけられずにいます。
$filenameとあるので他行を削除というわけではないと思うのですが・・・。
それとも同じで動作確認ができたということでしょうか。だとするとphp.iniの設定でしょうか。
697693:2014/03/26(水) 18:26:54.94 ID:???
>>695
文字だけだとなんだか詰問口調のようですね。
そんなつもりはないので気分を害したらごめんなさい。
698nobodyさん:2014/03/26(水) 18:27:56.44 ID:???
phpあんま関係無いが、、他の環境で試せない?
699nobodyさん:2014/03/26(水) 18:42:36.92 ID:???
>>696
1文字違うから良く見てw
これ直したら動いたから。
700nobodyさん:2014/03/26(水) 19:00:42.66 ID:???
アタッチェメントになってるな
701693:2014/03/27(木) 12:11:26.36 ID:oazb6RzA
>>699 >>700
動作しました。こういうところは厳格なのねIE。
アタッチとアパッチのスペルが違うことを学びました。
ありがとうございました。
702nobodyさん:2014/03/27(木) 12:22:09.49 ID:???
というか、発音、音節からして違うだよ。
703nobodyさん:2014/03/27(木) 12:37:41.56 ID:???
IEが厳格だというより
attachment指定がないときのデフォルト動作が違うだけやな
704nobodyさん:2014/03/27(木) 13:05:22.02 ID:???
そりゃ「○んこ」だって○一文字違うだけで大違いだもの
705nobodyさん:2014/03/27(木) 15:58:03.05 ID:???
>>704
preg_match("^[あいうきちはまわ]んこ$", $word);
706nobodyさん:2014/03/27(木) 15:58:34.54 ID:???
デリミタ忘れたわ
707nobodyさん:2014/03/27(木) 16:00:17.37 ID:???
708nobodyさん:2014/03/27(木) 16:04:49.92 ID:???
がてしぱ

$word = preg_replace("/.(んこ)/","ま$1",$word);
709nobodyさん:2014/03/27(木) 16:05:00.43 ID:???


710nobodyさん:2014/03/31(月) 01:09:38.88 ID:???




711nobodyさん:2014/03/31(月) 22:34:02.22 ID:MfJjHQrV
数字をアルファベットに(26進数で)置き換える方法を探しています。
具体的には、

1をaに
2をbに

27はaa
28はab


というような感じです。
$arr=array(1=>'a',1=>'b',1=>'b');
のように配列で置き換えるのは有限なので、
簡単、確実に置き換える方法を教えてください、お願いします。
712nobodyさん:2014/03/31(月) 22:39:12.67 ID:???
>>711
26で割った商と余りを出して組み立てる



base_convertを使う
713nobodyさん:2014/03/31(月) 22:39:27.64 ID:???
進数かえるのがあったはず。
714nobodyさん:2014/03/31(月) 22:51:26.49 ID:MfJjHQrV
>>712>>713
ありがとうございました。
とりあえず、base_convertを使い、その返り値を
pをzに、oをyに…というように置き換えるやり方でやってみます。
715nobodyさん:2014/03/31(月) 23:12:29.82 ID:???
http://www.nicovideo.jp/watch/sm23207869
http://www.xvideos.com/video7591103/positive_hame_dick_cunt_dick_cunt_dick_cunt_dick_cunt_
http://youtu.be/2FvsBTNwUaY
ちんこまんこ   /⌒\  /⌒\  ちんこまんこ
ちんこまんこ♪((    ; 三    ,,))ちんこまんこ♪
\  (σ) /  ヽ   (  /    ミ  \ (σ)   /
   / 人\    キ   .メ   ./    / 人\
 / /  \\   乂      ノ   / /  \\
(  (*^○^* ) )   (*^○^*)  (((  ( *^○^*) )
 \ \  //)))    )   (⌒)))  \ \  //
   )  Y (      ((__)⌒ ̄   ((()  Y (
  (__Y http://i.imgur.com/3UUUdIg.png Y_)
716nobodyさん:2014/04/01(火) 08:38:44.58 ID:???
>>711
$b = "a";
$n = 27;
for(;--$n>0;$b++);
print $b;
717nobodyさん:2014/04/01(火) 15:25:13.07 ID:???
>>711
integerをアルファベットのみの26進で表現すればいいってこと?
bcmathで26進計算して、
出た数値を桁ごとに36進上でa加算でダメかね。

ただ、昔
"0123456789"を"abcdefghij"の二つの文字列を放り込んで
対象とする文字列位置で変換する関数をどっかで見た気がする。

どちらにせよ、一旦ふつうの26進経由になるけど。
718717:2014/04/01(火) 15:32:11.97 ID:???
>>711
http://jp.php.net/manual/ja/function.strtr.php

あった、たぶんこれだ。
26進にbcmathあたりで落とし込んで、これで置き換えるよろしね。
仕事中でマニュアルよく読んでないから間違ってたらごめん。
719nobodyさん:2014/04/01(火) 16:02:54.18 ID:XHKBRGjO
複数のPHPスクリプトをrequireしてそれぞれ呼び出すようなものを作成しています。

呼び出し元と呼び出し先のそれぞれで必要とされるコマンドラインオプションが異なるのですが、それぞれにPEAR Console_CommandLineが無関係なオプションに対して例外を発行し、とまってしまいます。

例外を発生させず、すべてのオプションをすべてのソースに記述することなく、関係のないコマンドラインオプションを指定できるようにするにはどうしたらよいのでしょうか?

ご教示のほどよろしくお願いします。
720nobodyさん:2014/04/01(火) 16:08:35.01 ID:???
コマンドラインオプション?
721nobodyさん:2014/04/01(火) 16:16:32.28 ID:???
>>719
読み込むPHPスクリプトは、スタンドアロンで動くように作られていて、
それらをつなげて、cliで実行しようとしてるってことですかね。

それだけだとそれぞれのスクリプトが何をどう要求するかとか関係性もなんともなんで、
もう一レイヤー上にかぶせて一個ずつ値返してもらいながら実行したほうがいいんじゃん と…。
か、目的に沿って読み込むPHPスクリプトを書き換えるか、パイプでつなげてそれぞれ実行。
722nobodyさん:2014/04/01(火) 16:26:34.81 ID:XHKBRGjO
>>721
ありがとうございます。
2つの単体で動くスクリプトを無理矢理つなげてる感じです。

元コードの書き換えを最小限かつ一回のプロセスで実行というのが目的です。
723nobodyさん:2014/04/01(火) 17:06:24.29 ID:???
複数プロセスがダメならスレッド立ち上げればいいじゃない(マリー
724nobodyさん:2014/04/01(火) 18:07:02.12 ID:lqO10EeA
php.netがハックされてませんか?
どのページも数秒ごとにグルグル回転するんですけど
725nobodyさん:2014/04/01(火) 18:13:17.82 ID:???
2人で開発するならわざわざフレームワークって要らないかな?
726nobodyさん:2014/04/01(火) 18:13:31.81 ID:???
>>724
4/1とか。
727nobodyさん:2014/04/01(火) 18:28:25.63 ID:???
>>724
is_april_fool(date()); //true
728nobodyさん:2014/04/01(火) 18:29:15.80 ID:???
回転って DO_A_BARREL_ROLLするのかと思ったけどいつまで待っても回らない
729nobodyさん:2014/04/02(水) 00:57:50.01 ID:???
うちも回らないなぁ
730nobodyさん:2014/04/02(水) 14:49:00.93 ID:cY4xaY21
$db_pic = "c_pic";
$a_id = 1;

$sql = 'select * from ? where test3 = ? limit 4';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1,$db_pic, PDO::PARAM_STR);
$stmt->bindParam(2,$a_id, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($row);

こんな感じでPDOを書いてるのですが、
$rowが取得できません。
原因は、$stmt->bindParam(1,$a_id, PDO::PARAM_STR);のようで、
from c_pic where〜と直接$sqlに書いた時には正常に取得できます。
何が悪いのでしょうか?
731nobodyさん:2014/04/02(水) 14:59:19.45 ID:???
型が文字列ならクオートが入るからテーブル名の指定には使えないだろう。
クオート外す手もあるけど、それじゃprepareの意味が無くなるから
名前のチェックしたうえで、文字列の連結で対応するのがいいと思う
732nobodyさん:2014/04/02(水) 15:50:36.37 ID:???
>>725
フレームワークは、人数に限った話じゃないよ。
わざわざスクリプト書く前にあれこれ考えなくていいから楽。
ということであったほうがベターに一票。
無くても考えることがないというのなら、もはや言うことはない感じ。

特殊用途、例えばテンプレートとコントローラしか持たず、
外部のバッグエンドをモデルとして使うとかなら話は別だけど。
それでも大概はルーティングがなーとかアクションのかき分けがなー
ということで、既成のフレームワークに頼るけど。
733730:2014/04/02(水) 16:22:26.78 ID:cY4xaY21
>>731
お答ありがとうございます。
しかしすみません、いまいちわからないのですが、具体的にどういうことでしょうか?
734nobodyさん:2014/04/02(水) 17:16:38.19 ID:???
>>733
bindで文字列を指定すると 'str' となる
テーブル名のとこはクオート付けちゃダメ

てなわけでチェックした後 form ' . $db_pic . ' where にするしかない
735nobodyさん:2014/04/02(水) 17:28:02.49 ID:???
PHPの開発ってIDEでプロジェクトファイルで管理した方がいいですか?
エディタとデバッガとテストツールと用意してゴリゴリファイルを編集した方がいいですか?
メリットデメリット教えてください
736nobodyさん:2014/04/02(水) 17:31:43.53 ID:???
>>733
>>734も具体的じゃないからわかりやすく言うと、テーブル名はパラメータ化できない。そういうもの。
737nobodyさん:2014/04/02(水) 18:19:47.97 ID:???
>>733
テーブル名はホワイトリスト形式を取れないのであれば
ちゃんとエスケープするようにね
738nobodyさん:2014/04/02(水) 18:55:59.95 ID:???
>>735
最近は、project管理もそこそこしっかりしたsublime text editorみたいな
エディタもあるので、とてもなんとも言えない。
ただ、仕事でやるなら場所によってIDEが強制されたりすることもあるから
Eclipseとかも使っておけって感じ。

あとは正直、好み
739nobodyさん:2014/04/02(水) 19:11:13.09 ID:???
>>735
IDEを使うかエディタを使うかは、環境云々だけど
デバッガとテストツールはどっちでも使うかと
740nobodyさん:2014/04/02(水) 19:44:36.57 ID:???
データベースと連携させてのテストはIDEじゃないと無理?
741nobodyさん:2014/04/02(水) 20:46:59.35 ID:???
そんなことない。
というか、IDEをつかうか、IDEに搭載されている各機能を個別に用意するかの違いでしかないじゃん。
前者は、ワンセットになってるのがメリット。
後者は、個別に好みのツールを選択できるのがメリット。
デメリットは楽か面倒か。
742nobodyさん:2014/04/02(水) 20:49:18.63 ID:???
ローカルにMySQLなりポスグレなり入れるだけでしょ?
何この質問
743nobodyさん:2014/04/02(水) 20:54:30.01 ID:???
>>742
え?ローカル?
大規模開発したことない人?
744nobodyさん:2014/04/02(水) 21:09:08.18 ID:???
PHPみたいな低速ごみ言語で大規模開発したことあったらそれこそただの馬鹿じゃん
そんな奴は回答者の資格なし
745nobodyさん:2014/04/02(水) 21:15:22.26 ID:???
phpって低速だったんだ。何と比べて?
746nobodyさん:2014/04/02(水) 21:18:20.15 ID:???
747nobodyさん:2014/04/02(水) 21:19:21.84 ID:???
virtualboxのWeb版ってPHPで開発されてんだけど
748nobodyさん:2014/04/02(水) 22:52:41.48 ID:???
自分でコードを創作できないコピペ野郎が
必死にスパゲティ書いて遅いつってるだけだな
749nobodyさん:2014/04/02(水) 22:56:23.41 ID:???
750nobodyさん:2014/04/03(木) 03:05:46.41 ID:???
>>742
テストを行うに当たってローカルであるかどうかは関係ない。
>>743
そして規模も関係ない。
>>744
勘弁してください。
751nobodyさん:2014/04/03(木) 03:42:08.83 ID:/dGmV7H3
ぺちぱーに常識求めた君の負けさー
752730:2014/04/03(木) 08:57:30.07 ID:2ZP0tz+B
>>734
>>736
>>737
みなさんありがとうございます。
理解しました。
要はテーブル名に対してbindParamが使えないということなんですね。
自分でエスケープした後に直接ぶち込むと。
ありがとうございました!
753nobodyさん:2014/04/03(木) 09:06:54.48 ID:???
速度は静的言語に勝てないよな。そんなもんだ。常識ですよ
webに限れば動的言語の中では上位だけども。常識ですよ
754nobodyさん:2014/04/03(木) 10:04:45.87 ID:???
>>748
というか、最適化が多層に抽象化レイヤー挟んでもまともに動くように色々気を利かせすぎてるから、
逆にcとか比較的高級言語の中でも低級な言語を学ぶと、マジでくそ言語に見えるのは仕方がない。
755nobodyさん:2014/04/03(木) 12:42:52.52 ID:???








756nobodyさん:2014/04/03(木) 12:55:57.53 ID:???
PHP使う人間は、こういうことをしないという事実だけでいろいろお察し。
757nobodyさん:2014/04/03(木) 13:23:45.83 ID:???
fbはphpで作られたからなぁ
fb程アクセスが無けりゃCに変える必要もないし
758nobodyさん:2014/04/03(木) 15:13:27.33 ID:???
煽りももはや無効なほど2chがはやってない()
759nobodyさん:2014/04/03(木) 20:52:53.39 ID:FO6wfUPW
外部から自サーバのフォルダ一覧を参照されたくないのですが、
htaccessで「deny from all 」と書く以外で方法は無いでしょうか?
760nobodyさん:2014/04/03(木) 20:57:13.42 ID:???
スレチだけど、Indexesオプションで制御する。
てか、denyしたらコンテンツにアクセスできなくなるでしょ。
761759:2014/04/03(木) 21:16:55.52 ID:???
>>760
そうなんです。deny from allにすると、画像が表示されません。
Indexesを使っても表示されません。
なので、file.php?f=ファイルのURL
みたいにして表示させるようにしているのですが、
こういう方法以外に手軽に出来る方法が無いかと思い、質問しました。
762nobodyさん:2014/04/03(木) 21:27:38.55 ID:???
一番簡単なのは、空のindex.htmlをおくこと
763759:2014/04/03(木) 21:33:48.09 ID:???
>>762
やはりそれが無難ですね。そうします。ありがとうございました
764nobodyさん:2014/04/03(木) 21:57:50.67 ID:???
>>763
いいから二度と来ないでね
765nobodyさん:2014/04/04(金) 00:22:38.23 ID:???
>>759-763
ルールも守れないゴミクズは来なくていいよ。
お前ら生きてるだけど迷惑だけど自覚はないんだろうな。
766nobodyさん:2014/04/04(金) 02:27:32.33 ID:???
>>761
deny from all と Indexesを同時に設定したんじゃないかって思うんだけど。

>>765
なんでageたの?
767nobodyさん:2014/04/04(金) 09:00:58.92 ID:nLQnUNGh
PHPでスレッドフロート型の掲示板サービスを作っているのですが、
ユーザー情報、スレッド情報、書き込み情報、
これらはそれぞれどのようなかたち(datファイル、MySqlなど)で読み書きするべきでしょうか?
処理が速いのが最大条件で、できればmysqlの使用は最低限にしたいです。
768nobodyさん:2014/04/04(金) 09:28:18.96 ID:???
769nobodyさん:2014/04/04(金) 09:51:11.02 ID:???
回答はしないけど、DBでやってる内容を理解してれば、こんな考え持たないよな。
770nobodyさん:2014/04/04(金) 09:54:34.22 ID:nLQnUNGh
無知な質問すいませんでした。
>>768
>>769
771nobodyさん:2014/04/04(金) 10:04:40.84 ID:wlhCw4pF
会員制サイトの「パスワード忘れ」対応機能について質問です。
この機能の制作にあたりユーザーに入力してもらうべきデータは
何でしょうか?

他のサイトを調べると、メールアドレスの他に、ユーザーIDや
誕生日など、メアド以外のデータを求めるものもあります。

一見、多くの情報を入力させれば、より安全なように思えますが、
メアドは本人しか利用できない以上、他は気休めな気がします。

現在、自分が制作しているものは、次のようにしています。
「1.登録メールアドレス入力」→「2.メール送信(認証キー付)」→
「3.認証用リンククリック」→「4.認証キー及び新パスワードの入力」

これだけで大丈夫でしょうか?ユーザーIDなども求めた方がいいですか?
よろしくお願いします。
772nobodyさん:2014/04/04(金) 10:06:07.92 ID:???
PHP関係ないやん・・・
773nobodyさん:2014/04/04(金) 10:11:12.62 ID:???
何か「PHPでこうやって見たんだけど上手く出来ない」って話ですら無いのが多いな
774nobodyさん:2014/04/04(金) 10:43:18.32 ID:???
>>767
>>771

どちらも設計レベルな話なのでPHP関係ありません。

ただ>>767はギリギリPHP言っているので少しマジレスすると
それPHP関係ない。アーキテクチャの話だろ。スレチだ。
どうDBを使うかとかの話まで進められたらDB板いけ。
775nobodyさん:2014/04/04(金) 12:10:00.14 ID:TGYzsB6s
a();

function a() {
$ary = [ 1, 2, 3 ];

$func = function ($n) {
 var_dump($ary); // null
 return in_array($n, $ary);
};

$func(5);
}

globalがあっても同じです。
$aryはグローバルにできません。
この場合 $func で $aryを参照するにはどうしたらいいですか?
776nobodyさん:2014/04/04(金) 12:12:05.71 ID:???
え?
777nobodyさん:2014/04/04(金) 12:20:43.34 ID:???
778nobodyさん:2014/04/04(金) 12:26:25.51 ID:TGYzsB6s
>>777
use ありがとうございます
779nobodyさん:2014/04/04(金) 12:33:37.73 ID:???
>>777
function ($quantity, $product) use ($tax, &$total)
{
$pricePerItem = constant(__CLASS__ . "::PRICE_" .
strtoupper($product));

この書式初めて見た
何やってんのこれ?
780nobodyさん:2014/04/04(金) 13:08:38.78 ID:???
どの部分のこと?
781nobodyさん:2014/04/04(金) 14:16:55.48 ID:???
書いてあるじゃん
>クロージャは、変数を親のスコープから引き継ぐことができます。
> 引き継ぐ変数は、use で渡さなければなりません。
書式は見た感じクロージャー作成のfunction()のあとの{が来る前にuse (使用したい変数を羅列)すればいいだけじゃね
globalに似た概念じゃね
他にもuse演算子とかあるみたいだがこれはたぶん別物
http://www.php.net/manual/ja/language.namespaces.importing.php
782nobodyさん:2014/04/04(金) 15:00:03.52 ID:???
PHPってevalみたいな感じで定数呼べるんだ?
783nobodyさん:2014/04/04(金) 15:17:07.96 ID:2qJouDRV
php5.5でpowの結果がfloatのmaxを超えるような場合正常に出ないのですがdoubleで返してくれるpowのようなものはありませんか?
ない場合どうしたらfloatを超えるような累乗の計算ができますか?
784nobodyさん:2014/04/04(金) 15:39:26.30 ID:???
>>783
http://www.php.net/manual/ja/language.types.float.php
ここの精度を読んだ上で必要ならリンク先を使うと良いよ

doubleはphpの場合だとfloatと一緒だよ
785nobodyさん:2014/04/04(金) 16:23:36.62 ID:???
>>783
一度別に流していいならgmp
786nobodyさん:2014/04/04(金) 16:55:59.36 ID:???
サイト上の画像を範囲指定して保存するライブラリとかないですよね?
787nobodyさん:2014/04/04(金) 17:07:05.60 ID:???
>>786
何をしたいのか知らないけど、その言葉から思いつく範囲のことはできる。
けどそれを1行でやりたいという気持ちでライブラリという言葉を出しているのならない。
788nobodyさん:2014/04/04(金) 17:42:11.89 ID:???
>>761
ディレクトリとらばーゆできそうな感じだけど大丈夫?
file.php?f=/etc/passwdみたいなやつ
789nobodyさん:2014/04/04(金) 17:47:14.45 ID:???
image関数?とやらでできそうなのでいっぺんやってみますうう
790nobodyさん:2014/04/04(金) 19:09:27.77 ID:Qlf2ysY+
ディレクトリとらばーゆってなんですか?
791nobodyさん:2014/04/04(金) 19:18:40.41 ID:???
ディレクトリが転職すんだろ
792nobodyさん:2014/04/04(金) 19:35:26.28 ID:2qJouDRV
>>784-785
ありがとうございます
全く少数を使わない場合でもgmpのほうがいいのでしょうか?
他の言語との互換がある方がいいのですが
793nobodyさん:2014/04/04(金) 21:02:03.88 ID:???
>>792
PHPの関数って64bit環境で実行してても一部32bitしか内部的に通さないのとかあるから、それに引っかかってできなさそうなとき、かつ32bitを超える幅が欲しい場合には、任意精度関数に頼っちゃうのが楽ってだけでして。
powがどうだったか覚えてないけど、powダメなら、自分で書くか、既存のものに頼るならgmpあたりかってだけです。
なお、小数のtypoと予測してレスすると、別段精度があがったからといって、小数点下だけが伸びるってわけじゃない。
他の言語と互換性云々言うなら、互換性持たせたい言語のマニュアルでgmpがどう実装されているか等調べてくればいいじゃまいか。
794nobodyさん:2014/04/05(土) 00:58:52.81 ID:6eD+hcIm
>>793
ありがとうございます
どちらも同じ値だったのでそのままpowにします
ありがとうございました
795nobodyさん:2014/04/05(土) 01:30:01.21 ID:???
>>791
ありがとうございます。世の中不思議なこともあるもんですね。
796nobodyさん:2014/04/05(土) 14:17:11.03 ID:2SiAoHBr
ずっとローカルにディレクトリ作成→ファイル保存してたんですが、
NAS保存する事になったんで、同じようにmkdirしようとしたんですが、
mkdirで「No such file or directory」になってしまいます。
IP指定だといけるようなんですが、ドライブレターの書き換えだけで
すまないんでしょうか?

元々
define('NAS_ROOT' , 'D:/hoge/share');
@mkdir(NAS_ROOT, 0777, true);


変更(エラー)
define('NAS_ROOT' , 'Z:/hoge/share');
@mkdir(NAS_ROOT, 0777, true);

変更2(いける)
define('NAS_ROOT' , '\\\\192.168.0.100\\\\hoge\\share');
@mkdir(NAS_ROOT, 0777, true);
797nobodyさん:2014/04/05(土) 14:50:56.72 ID:???
qiitaで他人の記事のコメントに自分の記事に誘導する人ってなんなの
そこまでして売名したいのかと
qiitaのphpタグの記事は不快
798nobodyさん:2014/04/05(土) 14:57:19.59 ID:???
誤爆
799nobodyさん:2014/04/05(土) 15:00:02.80 ID:???
>>796
それを動かしているPCはユーザーがログイン状態なの?
800nobodyさん:2014/04/05(土) 15:03:14.94 ID:???
当たり前のことを聞くな
801nobodyさん:2014/04/05(土) 15:17:51.64 ID:???
UNCで出来て、ドライブレターで出来ないのって、
それくらいしか考えられないんだけど
802nobodyさん:2014/04/05(土) 15:24:12.08 ID:???
もしかして:apacheの仕様
httpdのDOCUMENT_ROOTもネットワークドライブが指定できなかった思い出がある
803nobodyさん:2014/04/05(土) 15:29:10.67 ID:???
804nobodyさん:2014/04/05(土) 15:32:43.92 ID:2SiAoHBr
>>799
NAS側はとりあえずEveryoneフルコン
プールのユーザーも実在ユーザーにして、
そのユーザーでZドライブを張ってます。

>>802
ああ、すいません。IIS7、PHP5.3です

セキュリティ設定周りの話なのか
PHPのmkdirの制限なのか情報が見つけられなくて、
どっちの問題なのかなあ…という話です

ローカルドライブ、IP指定、マシン名指定なら行けるのは確認してます
805nobodyさん:2014/04/05(土) 15:55:58.85 ID:???
> PHP で使用されるデフォルトのラッパーは Filesystem で、 これはローカルファイルシステムを表します

見るからに仕様だな
806nobodyさん:2014/04/05(土) 16:35:27.71 ID:???
つかファイルテーブルがローカルにないしそのネットワークを越えるプロトコルも分からんし。
ENOENTはイミフだけど、叩いてるAPIがそう返してるんだろう。
807nobodyさん:2014/04/05(土) 22:37:06.56 ID:???
$ins = new test_ins;

echo <<< EOF
{test::m_aaa()}
{$ins->m_ins()}
EOF;

ヒアドキュメントでスタティックはそのまま出力される
この挙動の違いどうにかなりませんかねー
808nobodyさん:2014/04/05(土) 22:51:07.78 ID:???
自己解決しました。先頭に$がないとダメみたいですね
809nobodyさん:2014/04/06(日) 17:10:33.74 ID:nQEJIdXz
ブラックでも借りられる
http://44.xmbs.jp/cashingnavi0
810nobodyさん:2014/04/07(月) 18:44:56.32 ID:zX0JJVR6
$_GETや$_POSTのキーについて質問です。
これらに、予定しないキーが渡された場合、どう検出するのが最良ですか?

たとえば、$_GET['abc']及び$_GET['def']は受け付けるが、
それ以外はエラーとして検出する方法です。
つまり、$_GET['xyz']や$_GET['イロハ']などの場合には、拒否したいのです。

このためには、一度、array_keysですべてのキーを取得して、
ループで'abc'及び'def'以外のものを探すようにするしかないですか?

<?php

$keys = array_keys($_GET);
foreach($keys => $key) {

  if ($key !== 'abc' &amp;&amp; $key !== 'def') {
    exit('param error.');
  }
}

また、このように不正なキーを拒否することに意味はありますか?
多くの場合、スクリプト内で無視されるので無意味なのでしょうか?
利用法としては、不正なリンクからのアクセスを拒否したいと考えています。
よろしくお願いします。
811nobodyさん:2014/04/07(月) 18:54:36.27 ID:???
やり方はいくらでもあるだろうし、どこまでの要件か知らんけど
countなりしてその2個だけ調べるとか…?

調べるキー増やすこと考えたらarray_searchのがいいんじゃない?
812nobodyさん:2014/04/07(月) 19:00:24.63 ID:???
少なくとも、不正なリンクからのアクセスを拒否という理由に対しては意味がありませんね。
813nobodyさん:2014/04/07(月) 19:02:15.47 ID:???
わざわざ不要なパラメータをつける意味がない
814nobodyさん:2014/04/07(月) 19:06:18.03 ID:???
「不正なリンク」てのがどのレベルの話による
815nobodyさん:2014/04/07(月) 19:08:53.28 ID:???
動作としては
array_diff_keyかarray_diffで比較すればいいけど

意味はないな
816nobodyさん:2014/04/07(月) 19:26:34.90 ID:???
>>810
$strict_keys = array('abc', 'def');
if (count(array_diff(array_keys($_GET), $strict_keys)) != 0 &&
  count(array_diff($strict_keys, array_keys($_GET))) == 0)) {
    exit('param error.');
}

しかし、なんかめんどくさいからこっちのほうがいいかも。

$strict_keys = array('abc', 'def');
$keys = array_keys($_GET);
if (arsort($keys) != arsort($strict_keys)) {
  exit('param error.');
}

意味はあるかというと、あまりない。register globalsがonであるような環境も今はない(と思いたい)し。
817nobodyさん:2014/04/07(月) 19:50:29.30 ID:???
>>816
なぜに2回array_diffするん?
818810:2014/04/07(月) 19:55:00.01 ID:oeJdbJD1
>>811-816
ご回答ありがとうございます。とても参考になりました。
$_GETの入力値チェックをしていたところ、不正なキーを持つリンクでも
通ってしまったので気になって質問しました。

http://exaple.com/abc=2014&amp;def=4&amp;xyz=1111111

こういう場合には、弾いた方がセキュリティ的にいいんじゃないかなと。
register globalsがonでないので大丈夫だとして、
キーにJavaScript等の不正値が仕込まれたらどうなの?と少し不安に感じたのです。
入門書でも、値の検証はしても、キーの検証をしているものはなかったので
疑問に思いました。

でも、この検証にあまり意味がない(必要性がない)ということみたいで良かったです。
>>816 のコードも参考にさせて頂きます。
ありがとうございました。
819nobodyさん:2014/04/07(月) 20:03:23.35 ID:???
>>817
ええと「過不足」がないことを調べるためにはそうしないとだめ。
array_diffは、引いた残りを出すことしかしない。
820nobodyさん:2014/04/07(月) 20:09:45.97 ID:???
って、>>816の最初の例は間違えてた。
どちらも != 0にする。

ちなみに、集合が過不足なく一致しているかの検証という意味ではSQLでも同様のめんどくささ(二回引き算)があって。
幸いPHPは配列の比較ができるので、後者の(しぶしぶソートをした上で)集合そのものを比較するコードを書いた。
821nobodyさん:2014/04/07(月) 20:13:52.25 ID:???
>>819
不足の話は書いてないけど
そういうことなら演算子が間違ってるだけか

過不足までやるなら
array_intersectで、元のarrayと一致するかで実装しそうだ
822nobodyさん:2014/04/07(月) 20:14:31.65 ID:???
すまん、修正入ってた
823nobodyさん:2014/04/07(月) 20:22:20.03 ID:???
>>821
array_intersectを使う場合でも結局ソートは必要で、こんな感じになる。
arsort(array_intersect($strict_keys, array_keys($_GET))) == arsort($strict_keys)

で、そうするくらいなら、intersectなんてやらずにこれで十分ということに。
arsort(array_keys($_GET)) == arsort($strict_keys)

集合比較はもっと楽であってほしいよね。
824nobodyさん:2014/04/07(月) 20:56:05.96 ID:???
array_intersect($strict_keys, array_keys($_GET)) == $strict_keys
キーと値が維持されるから大丈夫だと思う

>>816は&&を変えないとダメだね
825nobodyさん:2014/04/07(月) 21:09:14.05 ID:???
ヘッポコデスマヌ。
826nobodyさん:2014/04/08(火) 21:16:44.40 ID:???
このスレって馬鹿しかいないの?
827nobodyさん:2014/04/08(火) 21:46:58.86 ID:???
俺もお前もみんな馬鹿
828nobodyさん:2014/04/09(水) 13:03:06.80 ID:Q3D5DjV1
PHP最近勉強し始めたんだけどHTMLコードって<?PHP?>の外に書くべきか中に書くべきか迷う
視認しやすさは絶対外に書いたほうだと思うんだけどいろんなプログラムのソース見てると
$header = <<< HTML 〜みたいなことして最期にechoしてるのが結構あったので気になった
実際どっちがいいの?
829nobodyさん:2014/04/09(水) 13:13:31.56 ID:???
フレームワークとかMVCとかあまり理解できてないけどそういうのを真似してる
静的部分をtemplate.htmlとかで保存して、動的な部分だけ[::dynamic_contents::]みたいにして、
$output = str_replace('[::dynamic_contents::]', $dynamic_contents, $source);
$output = str_replace('[::page_title::]', $page_title, $output);
$output = str_replace('[::hoge::]', $hoge, $output);
みたいに置換で埋め込んでいく感じ
830nobodyさん:2014/04/09(水) 13:16:00.10 ID:???
>>828
それはやってるうちに覚えていくから今は好きなようにやりなさい
最終的にはテンプレート使った感じになるだろう
831nobodyさん:2014/04/09(水) 13:17:36.38 ID:???
>>829
え?無駄に重くないそれ??
832nobodyさん:2014/04/09(水) 13:18:29.92 ID:Q3D5DjV1
テンプレートか、その発想はなかったです
ちょっと調べて実装してみる、どうもありがとう
833nobodyさん:2014/04/09(水) 13:21:38.17 ID:???
ヒアドキュメントで書かれたテンプレートファイルに、分けたPHPファイルで作った変数を{$hoge}で埋め込んで行けば良くね?
834nobodyさん:2014/04/09(水) 15:34:40.84 ID:???
>>829
なんか一周しちゃった感じだね。
HTMLをHTMLとして完全に独立させたかったのかなぁとは思うけど、そこまでする価値はないかな。

ということで、<?= $dynamic_contents ?>どぞ。
835nobodyさん:2014/04/09(水) 20:08:39.87 ID:???
>>834
その記法はサーバによっては動かないからダメだろ
836nobodyさん:2014/04/09(水) 20:23:09.80 ID:???
記法にいちいち突っ込まないでechoに脳内変換しろよ
837nobodyさん:2014/04/09(水) 20:31:02.50 ID:???
もうすぐ、5.3終わるしな
838nobodyさん:2014/04/10(木) 01:04:55.50 ID:???
リポジトリから開発サーバや本番にデプロイするのってどういう手段使ってますか?
839nobodyさん:2014/04/10(木) 01:35:22.34 ID:E19cp2WK
git pull
svn up
cvs up
tar zxf
tar xfj
のどれかだな大体
840nobodyさん:2014/04/10(木) 02:21:03.33 ID:???
tarコマンドはどういうことですか?
841nobodyさん:2014/04/10(木) 02:39:42.51 ID:???
>>838
スレ違い
842nobodyさん:2014/04/10(木) 02:57:39.70 ID:???
cap
vagrant
どっちか
843nobodyさん:2014/04/10(木) 03:38:48.13 ID:???
>>835
サーバによっては動かないからダメ?そんな制限課してコード書くなんてドMだね。
ちなみに普段どの環境をターゲットとしてコードを書いてるの?
844nobodyさん:2014/04/10(木) 09:10:58.62 ID:???
short_open_tag はデフォルトがころころ変わるからだろw
最新は常にOnだが
845nobodyさん:2014/04/10(木) 09:17:48.16 ID:???
5.4以上は常に利用可能になるんだから
使える前提でいいよ
846nobodyさん:2014/04/10(木) 10:17:05.35 ID:???
847nobodyさん:2014/04/10(木) 10:39:30.65 ID:???
最近はショートタグonでもoffでも使えるで
848nobodyさん:2014/04/10(木) 10:43:07.55 ID:???
今のは on/off は <? 〜 ?> の作用だけで
<?= 〜 ?> は常に使えるね。
849nobodyさん:2014/04/10(木) 10:46:34.39 ID:???
最近
<?=$piyo?>が使えたから、通常部で
<?
?>
で書いたら動かなくてハマったことあったわ
850nobodyさん:2014/04/10(木) 16:15:52.18 ID:???
5.6リリースに合わせてFAQも直したいな
というか削除してしまってもいいんじゃないかな?

> 2. このスレに書き込むときに自分のサイト名を晒したくない
>  → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。

こんなのとか

> 3. ブラウザに何も表示されないんだけど・・・
>  → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?

display_errors に触れないとか Apache 限定とか

> 13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
> 17. CSVやTSVのファイルをスマートに扱いたい

質問の意味が曖昧すぎるとか色々
まぁ時代にそぐわない&みょうちくりんな項目多すぎです
851nobodyさん:2014/04/10(木) 18:05:55.00 ID:???
誰も見てないから安心しろ
852nobodyさん:2014/04/10(木) 19:06:18.99 ID:???
じゃあ次スレからFAQは不要という事で
853nobodyさん:2014/04/10(木) 19:09:41.03 ID:???
FAQの質問が来たときの対処よろしく。
854nobodyさん:2014/04/10(木) 19:41:20.11 ID:???
今の2chにわざわざご苦労なテンプレ改変する気合のある人間が残っていない
まぁFAQで説明が足りない質問がきたら答えればいいだけだしあれは飾りみたいなもんだ
855nobodyさん:2014/04/10(木) 19:44:57.13 ID:???
>>1のPHPのバージョンが前スレの5.3からあがってるのに今気づいたぐらいだわw
つうか5.5なんて使ってるやつ少数だし5.3が主流だからあそこの変更は早漏だろ。
まぁテンプレなんて守った質問なんてほとんどないし、
質問する時の注意に、OS名やPHPのバージョンなど環境を書けって書いとけばいいと思うわ。
MySQLやImageMagickなんてのはソース見ればわかるしな。
856nobodyさん:2014/04/10(木) 20:05:07.35 ID:???
メジャーな言語の質問スレでFAQが存在しているのはPHPとSQLぐらい?
ペチパーらしいと言えばペチパーらしい
857nobodyさん:2014/04/10(木) 20:08:19.28 ID:LL77C8YL
php5.5でapcのユーザーキャッシュが使えないのですが
代わりとなる新しいめのライブラリはありますか?

Cache_Liteを試したのですがphp4向けらしくPEAR_ どうたらのエラーが出ます
共有サーバーなのでアップロードのみで動作すると嬉しいです
858nobodyさん:2014/04/10(木) 20:08:54.98 ID:???
JavaScriptもある
Webにほぼ限定されてるから問題になりやすいケースが想定しやすいからだろ
859nobodyさん:2014/04/10(木) 20:49:30.80 ID:E19cp2WK
自分で調べる気のない馬鹿が多いからだよ
860nobodyさん:2014/04/10(木) 21:11:19.14 ID:???
>>857
APCu
861nobodyさん:2014/04/10(木) 21:13:04.28 ID:???
ごめん、APCuはpeclだからレンタルサーバーだと多分無理
862nobodyさん:2014/04/10(木) 21:39:53.99 ID:0YSfcrkY
>>842
くわしく
863nobodyさん:2014/04/10(木) 21:40:21.51 ID:???
>>857
どこでも動かそうとするならファイルで持つのが無難じゃないかな
Doctrine\Common\Cache\FilesystemCache とか
Zend\Cache\Storage\Adapter\Filesystem とか

Zendは依存するライブラリが多いんで用途によっては逆効果かもね
864857:2014/04/11(金) 10:02:16.29 ID:6ERCSgiM
>>860-861 >>863
ありがとうございます
FilesystemCacheを使ってみます!
865nobodyさん:2014/04/11(金) 13:50:47.95 ID:2gWD1WEG
windowsにPHPをインストールしようとしてるとこです。
Apacheやら何やらの関係でVC11のランタイムを入れたので
PHPは5.5系の64bit版が素直な選択肢になると思うんですが
このバージョンはまだ実験的であるとなっています。
説明を読むと64bitならではの部分(一部)のことのようですが
ちょっと気になります。

windows7(64bit) VC11インストール済みの環境で
5.4系(VC9)や32bit版も選択肢になるんでしょうか?
866nobodyさん:2014/04/11(金) 14:00:56.73 ID:???
大人しく32使っとき
867nobodyさん:2014/04/11(金) 17:49:43.55 ID:DmbGkO0r
プログラムというか設計について相談です。

フォームに「住所」という入力項目があって、
郵便番号、都道府県、市区町村などを入力します。
住所が必須でない場合について

A:1箇所でも入力があればエラーチェックをする
B:全て入力してたらエラーチェックをする
 入力していないと、空の値にして入力がないことにする

のどちらが適切でしょうか?
普通はAだと思うのですが、Bの「必須項目でないのに間違った入力」
をどう処理するかで悩んでいます。
868nobodyさん:2014/04/11(金) 17:51:32.95 ID:???
クライアントと決めろ。そしてPHP関係ない
869nobodyさん:2014/04/11(金) 18:01:56.24 ID:DmbGkO0r
いえ、仕事じゃないです。
フォームの作り方によってPHPの書き方も変わってくるので、質問しました。
870nobodyさん:2014/04/11(金) 18:05:02.98 ID:???
なんにせよ仕様策定者が決めること。自分が策定者なら
データの重要度や目的による入力の自由度で決める
871nobodyさん:2014/04/11(金) 18:09:09.79 ID:???
それぞれ「あったら」チェックするか、幾つかのグループにして
チェックするかは好きにすればいいんじゃね?

入力あったもん全部ぶち込んでおきたい派なら
個別にあるものチェックすりゃいいだろうし
郵便、都道府県、市区町村揃ってなきゃ見る価値無いってならスルー
872nobodyさん:2014/04/11(金) 19:05:29.31 ID:???
$x = $a ?: 'default';

こんな書き方始めてしったわ
873nobodyさん:2014/04/11(金) 19:11:47.76 ID:???
え?それおかしくね?真の場合どうなんの?
874nobodyさん:2014/04/11(金) 19:13:58.81 ID:???
エルビスに見える?
875nobodyさん:2014/04/11(金) 19:28:30.22 ID:???
$a
876nobodyさん:2014/04/11(金) 19:55:07.38 ID:???
へー… 空でも入るかと思った
877nobodyさん:2014/04/11(金) 19:57:02.89 ID:???
>>873
var_dumpしろ
878nobodyさん:2014/04/12(土) 00:02:28.14 ID:???
そこそこ最近できた記法だったと思う。
便利だよね
879nobodyさん:2014/04/12(土) 00:13:39.95 ID:???
5.3以降から出来たのか。欲しいなと思いつつ知らんかった
880nobodyさん:2014/04/12(土) 00:18:51.71 ID:???
今レンタルサーバで主流なのは5.2〜5.4が選べる感じか
とはいえ5.2のままのところも以外に多いし
過去のバージョンは使えず5.5のみのところもあるな
881nobodyさん:2014/04/12(土) 00:38:04.86 ID:???
今レンタルサーバではどんどんPHPが外されてるな。
新しくレンタルサーバやるところでPHPを入れてるところはまずない。
今までPHP付きでレンタルしてたところは簡単には外せないから惰性で入れているが、
そういうところでも新サーバを導入するときにはPHPをインストールしないのが常識になりつつある。

完全に未来を閉ざされた言語PHP。
わざわざPHPを覚えるのは時間をドブに捨てるのと同じ。
882nobodyさん:2014/04/12(土) 00:45:51.23 ID:???
例えばどこのサーバーで外されたの?
883nobodyさん:2014/04/12(土) 00:49:12.61 ID:???
スルーしろ
いつもソース出せないたまに現れる基地外だから
884nobodyさん:2014/04/12(土) 04:08:22.23 ID:???
>>878,879
一見これは!と思うでしょ
実際は他の型からbooleanへの変換仕様がアレなせいで
出番はほとんどないという
885nobodyさん:2014/04/12(土) 09:14:34.70 ID:???
booleanの変換仕様ってそんなにおかしかったっけ?
886nobodyさん:2014/04/12(土) 09:16:39.52 ID:???
C#のnull合体演算子みたいに使うのがふつーでしょ。
887nobodyさん:2014/04/12(土) 17:18:21.35 ID:???
>>885
PHPの変態要素の一つとして有名じゃないか

if (!new SimpleXMLElement('<root />')) { echo 'えっ'; }
888nobodyさん:2014/04/12(土) 17:31:38.03 ID:???
<root>
</root>
にすると表示されないな
ていうか改行入れないとだめだな
これはなんで
889amiba:2014/04/12(土) 19:36:36.04 ID:7wXnsHq0
【OS名】Windows7 pro 64bit
【PHPのバージョン】php-5.4.26-Win32-VC9-x64 スレッドセーフ
【連携ソフトウェア】Microsoft SQL Server 2012 Express with Advanced Services 64bit版
【連携ソフトウェア】MApache 2.2.27 win64 binary
【質問内容】
SQLサーバ用のドライバが認識されません。
原因と解決方法をご教授願います。
890amiba:2014/04/12(土) 19:37:43.88 ID:7wXnsHq0
■状況

@ドライバーDLL配置
〜〜\php54\ext の中に以下を配置
php_pdo_sqlsrv_54_ts.dll
php_sqlsrv_54_ts.dll
※Microsoft Drivers 3.0 for PHP for SQL Server からダウンロードしてきたDLL
http://www.microsoft.com/en-us/download/details.aspx?id=20098

Aphp.ini編集
extension_dir = "〜〜\php54\ext"
extension=php_pdo_sqlsrv_54_ts.dll
extension=php_sqlsrv_54_ts.dll

BSQLServer Native Client存在確認
「プログラムのアンインストール」画面に、
以下の文字列があることを確認
Microsoft SQL Server 2012 Native Client
891amiba:2014/04/12(土) 19:38:45.76 ID:7wXnsHq0
Cphp再起動(Apach再起動)

Dphpinfoを確認
項目「PDO drivers」が「no value」となっており、
読み込めていない。
また、タイトル「pdo_sqlsrv」も存在しない。
892nobodyさん:2014/04/12(土) 20:58:21.73 ID:???
>>890
> ※Microsoft Drivers 3.0 for PHP for SQL Server からダウンロードしてきたDLL
> ※http://www.microsoft.com/en-us/download/details.aspx?id=20098

x86用のDLLしか入ってないっぽ
ODBC使ったら?
893nobodyさん:2014/04/12(土) 23:39:38.50 ID:???
>>887
マニュアルに載っている謎仕様ではある
894nobodyさん:2014/04/13(日) 05:02:57.28 ID:???
馬鹿は>>883と一緒にスルーするといいよ

スルーするのは個人の勝手だし、それで確実に泣きを見るのもそいつの勝手
895amiba:2014/04/13(日) 08:22:28.12 ID:Oq6/qLs5
>>892
ありがとうございます。盲点だった
大人しくODBCで接続しました
896nobodyさん:2014/04/13(日) 08:40:40.50 ID:???
>>894
よう基地外
お前ソース出せっていっても俺は困らないし自分で調べろの一点張りだからな
お前みたいな意味のないやつは邪魔なだけだから消えてくれ
スルーするのも泣きをみるのも勝手ってなら最初から黙ってろってのら
897nobodyさん:2014/04/13(日) 16:54:36.78 ID:???
CurlでSSL VersionがNSS/3.12.6.2となっているんですが、
これをOpenSSLに変更したいんですけど、どうすればいいでしょうか?
CentOSなんで、yumコマンドで出来ればいいんですが。
898nobodyさん:2014/04/13(日) 23:06:42.98 ID:???
PHPを使い続けてるのは
知らずにPHPを使い続けることと、知っててわざとスルーして使い続けることの区別もつかない
>>896のような基地外が大半だと言う現実

何も知らない初心者を騙して喜んでる>>896のようなクズしか残っていない
899nobodyさん:2014/04/14(月) 00:58:24.70 ID:???
なんかクズが居着いてるな
900nobodyさん:2014/04/14(月) 01:06:36.53 ID:???
>>899
よせよ、>>898はPHPに親を取られてしまった悲しいやつなんだから放っておいてやれ。
901nobodyさん:2014/04/14(月) 01:10:55.78 ID:???
嗚呼やっぱりいつものやつか
902nobodyさん:2014/04/14(月) 04:56:39.01 ID:???
存在が意味ないから消えなきゃならないということは、
存在が社会にとって害悪でしかない>>896はどうなるんだろうな。
903nobodyさん:2014/04/14(月) 10:59:30.29 ID:???
よほどくやしかったらしい
904nobodyさん:2014/04/14(月) 17:15:55.19 ID:???
>>896はネタだろうに何でムキになってんだ?
905nobodyさん:2014/04/14(月) 17:29:35.92 ID:???
906nobodyさん:2014/04/14(月) 18:13:07.85 ID:???
同じ事連呼してんのか・・・
アルツハイマーみたいだな
907nobodyさん:2014/04/14(月) 18:23:01.71 ID:???
>>903
2chにはちゃんと自己紹介板があるんだから自己紹介は自己紹介板でやれよ
908nobodyさん:2014/04/14(月) 18:26:49.27 ID:???
ざっと見たけど、ようは>>898を言いたいんだろ?
PHPが流行ってるみたいなこといって初心者を騙してるみたいなこと。
>>880はPHPがインストールしてあるレンタルサーバで、
どのバージョンが現在主流なのかっていう話で、
PHPが世の中のレンタルサーバで主流とは一言も言ってないのに。
個々には突っ込まないけど読んでて色々主張もおかしいと思った。
909nobodyさん:2014/04/14(月) 18:46:55.11 ID:???
結局、ロクに反論もできずに吠えるだけの>>896みたいな愚図が住み着いてるせいで、
ただでさえ低く評価されてるPHPユーザーがさらに低く評価されてしまうんだよ。
910nobodyさん:2014/04/14(月) 18:51:30.61 ID:???
>>909
事実でないから、別に困らんのにね。
911nobodyさん:2014/04/14(月) 19:04:56.37 ID:???
結局、悪口悪評書かれて困るんだろ、いやなんだろって言ってるだけのアホなんだよね。
ずっと連呼してればいいよ。こまらねーし。
912nobodyさん:2014/04/14(月) 19:10:47.87 ID:???
必死すぎ
913nobodyさん:2014/04/14(月) 19:23:50.46 ID:???
反論っていうか>>905になるのがわかりきってるから相手にすらされてないという事実

PHPインストールされてないレンタルサーバは増えてます!

耳は聞こえません!

STAP細胞はあります!

だけどまともなソースは出せません!
914nobodyさん:2014/04/14(月) 20:17:53.24 ID:???
伸びてると思ったらこんなんかよ
ループするのわかってんならレス選別するの面倒だからscで続きやってくれ
915nobodyさん:2014/04/14(月) 20:20:32.55 ID:???
>>913
耳が聞こえない証明は難しいな
916nobodyさん:2014/04/14(月) 21:32:37.96 ID:???
sc見てきたけどレスが反映されてなくね
917nobodyさん:2014/04/14(月) 21:45:55.51 ID:???
scのレス反映はひろゆきのサイバー攻撃だったからな
Jimが対策とったのか
918nobodyさん:2014/04/14(月) 22:28:51.82 ID:???
896涙目ワロタ
919nobodyさん:2014/04/14(月) 22:48:37.40 ID:???
>>896は効果抜群すぎたな
相手にするのも面倒なほど効き過ぎちゃったようだ
920nobodyさん:2014/04/14(月) 23:12:29.08 ID:???
俺のPHPスレで暴れるなゴミども
921nobodyさん:2014/04/14(月) 23:44:03.60 ID:???
転載禁止レスで1000まで埋まったりするよね。
ひろゆきがクロールしたときにダミーのdat返すようにしたんじゃない?
キャーJimさんすてき!といいたい
922nobodyさん:2014/04/15(火) 06:24:00.45 ID:???
>>896って自分が池沼の自覚あるのかな?
それともないのかな?
923nobodyさん:2014/04/15(火) 06:52:25.24 ID:???
opensslの対応は出来てるかい?
924nobodyさん:2014/04/15(火) 12:42:32.12 ID:???
どっちにしてもスルーできてないお前らの負け
>>896の計画通り荒れて>>896の大勝利
925nobodyさん:2014/04/15(火) 12:46:48.95 ID:???
負けで良いよ。
926nobodyさん:2014/04/15(火) 13:17:48.34 ID:???
>>896に固執しすぎ
よほど悔しかったんだな
927nobodyさん:2014/04/15(火) 16:09:24.55 ID:yfomWSxe
PHP+MySQLなんですが
UPDATE `table` SET `hoge`=hoge+1 WHERE `koko`;
ってhogeの数値を確かめず+1ってやったとき、そのままhogeの数値を確認する方法ってあります?
それとも一々SELECTで調べなきゃならないんでしょうか?
928nobodyさん:2014/04/15(火) 16:30:58.46 ID:???
PHPの質問をどうぞ
929nobodyさん:2014/04/15(火) 16:58:24.29 ID:???
MySQLにはRETURNING句は無いからな、あきらめろ
930nobodyさん:2014/04/15(火) 16:58:30.95 ID:???
論理も糞もない896が悔しかった認定しかできなくなってて哀れ
こういう他人の同情を買うことしかできない人ってほんと可哀想
931nobodyさん:2014/04/15(火) 17:12:13.59 ID:???
>>896を叩いてるのって>>896の自演じゃね?

叩きレスも>>896と同じで知性のかけらも感じない辺りそうとしか思えないんだが。
932nobodyさん:2014/04/15(火) 17:14:00.08 ID:???
キチガイ言われた>>894以外ムキになって反応する意味がないだろw
自演お疲れ様です
933nobodyさん:2014/04/15(火) 19:29:33.24 ID:???
ID制への移行、やっぱり必要じゃないかなぁ。
934nobodyさん:2014/04/15(火) 19:49:19.57 ID:???
複数人で896を叩いてるように見せかけて実は全部894だからなこれ
特定のレスにいつまでも噛み付くのはこいつの常套手段
何度も繰り返してきて特徴丸出しなのにほんと懲りねえなw
935nobodyさん:2014/04/15(火) 19:55:31.56 ID:???
この流れ1000まで続く上に
次スレでもPHP使い煽りレスを数レス以内にしてきて
雰囲気糞なところからスタート
煽りに反応しちゃったやつと300レスぐらいまで下らねぇ言い合い続くから
賢い奴はさっさとスレ離れた方がいい
936nobodyさん:2014/04/15(火) 20:11:38.72 ID:???
なるほど、それが目的か
937nobodyさん:2014/04/15(火) 20:14:38.48 ID:???
必殺斜め上解釈
ほんと特徴丸出しww
938nobodyさん:2014/04/15(火) 20:16:48.22 ID:???
ちなみに俺のレスは
899 901 905 932 934 935 937ね
939nobodyさん:2014/04/15(火) 20:19:39.23 ID:???
自意識過剰だね。
940nobodyさん:2014/04/15(火) 20:25:15.22 ID:???
どうしても俺を896に仕立てあげたいみたいだから教えてあげただけだよw
あとこれ最後のレスにするから
941nobodyさん:2014/04/15(火) 20:36:46.12 ID:???
SQLインジェクション対策したいんですが、

$test = $_GET['data'];

//エスケープ
$test = mysql_real_escape_string($test);

$result = mysql_query("select * from aaa where name = '{$test}'");


このようにmysql_real_escape_stringでエスケープしてれば、SQLインジェクションって防げますよね?
防げない場合どういうパターンがあるのか教えてください
942nobodyさん:2014/04/15(火) 20:44:40.07 ID:???
マルチだしスレチ
943nobodyさん:2014/04/15(火) 20:46:27.39 ID:???
>>941
防げるよ。
だけど、mysql_系は非推奨で廃止予定だから、mysqli_系かPDOを使うべき。
944nobodyさん:2014/04/15(火) 20:52:56.45 ID:???
そのselect文なら防げるがname=がid=とかintegerの場合
適切に前後にクオートいれてないとインジェクション出来るよ
945941:2014/04/15(火) 21:04:16.57 ID:???
>>943
低レベル回答者様ご回答ありがとうございますm(__)m
946nobodyさん:2014/04/15(火) 21:15:14.53 ID:TDuzbORW
windowsで「php.exe」のあるディレクトリを取得できますか
947nobodyさん:2014/04/15(火) 21:20:15.52 ID:???
cd c:\
dir /s /b php.exe
948nobodyさん:2014/04/15(火) 21:21:22.76 ID:???
>>947
cドライブにない可能性がある
949nobodyさん:2014/04/15(火) 21:23:20.91 ID:???
全部のドライブ調べればいいがな
950nobodyさん:2014/04/15(火) 21:28:30.82 ID:TDuzbORW
サンクス
951nobodyさん:2014/04/15(火) 21:33:43.94 ID:???
>>943-944
>>945は私ではありません。
ありがとうございました!
952nobodyさん:2014/04/15(火) 22:24:09.12 ID:???
>>945は文字セットについての指摘が欲しかったってことか
953nobodyさん:2014/04/16(水) 04:23:23.40 ID:???
大半の人は896が自演で煽りあってるように見せかけてるだけと気付いてる。
phpがどこの鯖にもインスコされなくなりつつあるというのは周知の事実だし。
954nobodyさん:2014/04/16(水) 04:54:01.97 ID:???
つまり>>953=>>896
なるほど
955nobodyさん:2014/04/16(水) 08:29:06.81 ID:???
レンサバ使ってるのって
wordpress層が大半だよな

ビジネス的に見てわかりやすいもんだな
956nobodyさん:2014/04/16(水) 09:06:45.93 ID:???
>>951
prepare使うようにしたほうが色々と楽だよ

亀レスすまんね
957nobodyさん:2014/04/16(水) 09:11:45.88 ID:???
>>955
ああ、そういう勘違いか。
958nobodyさん:2014/04/16(水) 14:49:19.93 ID:???
                  / ̄ ̄ ̄\
                /ノ / ̄ ̄ ̄\
               /ノ / /        ヽ
               | /  | __ /| | |__  |
               | |   LL/ |__LハL |
               \L/ (・ヽ /・) V
               /(リ  ⌒ ●●⌒ )
               | 0|     __   ノ
               |   \   ヽ_ノ /ノ  インスコされなくなりつつあります!
               ノ   /\__ノ |
              ((  / | V Y V| V
               )ノ |  |_θ_| |
                 / ̄ ̄T ̄ ̄\
                |二二二二二二二|
                |        |
パシャ パシャ  パシャ パシャ パシャ  パシャ パシャ パシャ パシャ パシャ
   パシャ パシャ パシャ パシャ パシャ  パシャ パシャ パシャ  パシャ  パシャ
 ∧_∧      ∧_∧     ∧_∧  ∧_∧    ∧_∧     ∧_∧
 (   )】      (   )】    (   )】 【(   )    【(   )    【(   )
 /  /┘ .   /  /┘.    /  /┘ └\ \   └\ \   └\ \
ノ ̄ゝ     ノ ̄ゝ      ノ ̄ゝ     ノ ̄ゝ    ノ ̄ゝ     ノ ̄ゝ
959nobodyさん:2014/04/16(水) 15:08:23.95 ID:r1C0DTd1
普段はxamppで開発して、本番はcentosのサーバを使用しているのですが、
PHPの環境変数か何かで、サーバがxamppか否かを判定する方法ってないでしょうか?
system関数など一部ソースが異なるので、分岐出来たらいいなと思っています。
960nobodyさん:2014/04/16(水) 15:09:48.63 ID:???
>>955
念のため確認したいんだけど、それはレンサバ全体の話?
それとも何かしらの限定されたレンサバ?
961nobodyさん:2014/04/16(水) 15:13:03.25 ID:???
>>959
OSによって分岐させればいいんじゃないの?
962nobodyさん:2014/04/16(水) 15:21:35.27 ID:???
>>961
すみません。たしかにそうですね。
PHP_OS
を使うことにします。ありがとうございました。
963nobodyさん:2014/04/16(水) 15:24:40.97 ID:???
>>959
本番ドメイン(host)とその他で分けるとか
964nobodyさん:2014/04/16(水) 15:57:16.54 ID:???
Winサーバに移植する日が来ないことを祈ろう。
hostnameおすすめ。
965964:2014/04/16(水) 15:58:48.95 ID:???
でもconfigとかじゃなくて、ロジックか。
ごめん。
966nobodyさん:2014/04/17(木) 03:42:20.01 ID:VCB2amMZ
俺ならvcs管理外でファイル一つ用意しておくね
たとえばtestてファイルがあればテスト鯖でなければ本番
967nobodyさん:2014/04/17(木) 03:46:01.51 ID:4T+A9Zxt
ありえない
968nobodyさん:2014/04/17(木) 09:51:13.11 ID:???
動作する環境を2つに限定するとあとで困るぜ。
config 作ればいい話
969nobodyさん:2014/04/17(木) 10:25:55.29 ID:???
まぁ、dropboxいれてCentOS環境作れよって話もあるけど。
大概はさしたる手間でもないし。
970nobodyさん:2014/04/17(木) 11:25:00.57 ID:???
dropboxも仮想環境を始めたの?
できれば詳しく
971nobodyさん:2014/04/17(木) 11:35:40.38 ID:???
すまん。突込みありがとう。virtualboxだ。
972nobodyさん:2014/04/17(木) 11:42:16.91 ID:???
ざんねん……。
973nobodyさん:2014/04/17(木) 18:10:03.61 ID:0kTNtsmJ
ttp://www.cybersyndrome.net/plr.html
ここのページのデータをfile_get_contentsで取得したいんですが
failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
とエラーになります。どうすればデータを取得できるようになりますか?
974nobodyさん:2014/04/17(木) 18:35:02.42 ID:???
VirtualHostでデフォルトが403とか、、、、Host指定してる?
975nobodyさん:2014/04/17(木) 18:35:52.89 ID:???
ブラウザがサーバーに送っているのと同じようにしてやれば取れると思うよ。
分からないのならば、あきらめたほうがいい。
976nobodyさん:2014/04/17(木) 18:42:34.82 ID:???
file_get_contents か、、、
3番目のパラメタでヘッダ指定して Host とかいれてやればいいかもしれない。
977nobodyさん:2014/04/17(木) 22:21:06.15 ID:???
file_get_contentsはUAが空になるからたぶんそれ
978nobodyさん:2014/04/17(木) 23:07:09.55 ID:???
973じゃないけど、手持ちのサーバからtelnetでつないで直接HTTP書いてもダメだったわ。
HostやらUAやらAcceptだとか色々つけてみたんだけど。
979nobodyさん:2014/04/17(木) 23:12:19.64 ID:???
>>968
ついでに、処理についても、抽象クラスかインタフェースを作って、OS/環境毎に具象クラスを分ける感じかな。
980nobodyさん:2014/04/17(木) 23:19:37.76 ID:???
>>978
w3mで普通につなごうとしても403。
何を仕込んであるんだろう?
981nobodyさん:2014/04/17(木) 23:33:10.86 ID:4T+A9Zxt
なんかしらんがwgetなら取れたよ
982nobodyさん:2014/04/18(金) 01:56:54.01 ID:???
>>973みたいに基礎的な知識もないくせにプログラミングに手を出すゴミの掃き溜めそれがPHP
983nobodyさん:2014/04/18(金) 06:09:48.67 ID:???
>>982
素人でもとっつきやすい言語、それがPHP。
そういう点から難癖つけられやすいのもPHP。
984nobodyさん:2014/04/18(金) 09:14:39.02 ID:???
phpとrubyは掃き溜め
とくにcakeとrailsは掃き溜め

土方と素人が集まるところは仕方ない
985nobodyさん:2014/04/18(金) 09:16:49.36 ID:???
IPアドレス直だとブラウザでもwgetでもダメだし、VirtualHostだろ
986nobodyさん:2014/04/18(金) 09:25:46.57 ID:???
IPアドレス直ってなんだよ

Hostなければ普通はじくだろ
987nobodyさん:2014/04/18(金) 09:31:35.52 ID:???
http://111.222.333.444/
だよ
ブラウザで入れたらHost入れるだろこれで
988nobodyさん:2014/04/18(金) 10:10:17.87 ID:???
>>985
VirtualHostの問題なのか切り分けを行っているんだろ。
989nobodyさん:2014/04/18(金) 13:49:21.28 ID:???
>IPアドレス直だとブラウザでもwgetでもダメだし、VirtualHostだろ
それだけの理由で、最初にVirtualHostを疑うこと自体滑稽だわ。
990978:2014/04/18(金) 16:58:52.38 ID:???
>>973
気分転換にリトライしてみたら、host,connectionヘッダー必須ってだけっぽい。
991 忍法帖【Lv=40,xxxPT】(3+0:8) 【Dlivejupiter1387514181219820】 【東電 74.1 %】 【11m】 :2014/04/18(金) 23:44:38.60 ID:g1tDPhPP
IDにPhPキタ━━━━━━(゚∀゚)━━━━━━!!!!!
992nobodyさん:2014/04/19(土) 00:35:14.81 ID:HQIlnmOW
質問失礼いたします。
書き込み初めてなため規則に反していたり、スレ違いでしたらごめんなさい。

「ニューすったー☆」というスクリプトを使って、最新RSSの自動ツイートをロリポップサーバのcronで作りたいと思っています。

「ニューすったー☆」 ttp://www.jeia.co.jp/report/2010/11/05/353/

実際最新RSS自動ツイートすることは出来るようになりました。
ですが、そのツイートの内容を変更(新着記事という文言やURLなどを加えたり)したいと考えています。
その際「ニューすったー☆」の/twitter.class.phpをイジれば良さそうだと考えたのですが、わかりませんでした。
どのようにすればツイートの内容の変更ができるのかどなたかご教授頂きたいです。

もし他の方法で最新RSSの文言を変更した配信が出来るものがあればそれでも構いません。

PHPを独学で学び始め一週間くらいで知識も浅いのですが、検索しながら頑張りますので、
解答よろしくお願い致します。
993973:2014/04/19(土) 05:42:59.07 ID:???
みなさま回答ありがとうございました
>>990
指定したら無事に取得できるようになりました
ありがとうございます!
994nobodyさん:2014/04/19(土) 06:30:53.32 ID:???
>>993
偽物はさっさと消えろ
995nobodyさん:2014/04/19(土) 06:34:06.61 ID:???
>>984
>土方と素人
素人に失礼だろ
素人じゃなくて基地害
996nobodyさん:2014/04/19(土) 06:39:05.15 ID:u2gMQu1K
sqliteを使ってるのですが PDO より SQLite3 が優れている点はありますか?
997nobodyさん:2014/04/19(土) 18:38:38.61 ID:???
いっぱい。
998nobodyさん:2014/04/19(土) 20:15:38.15 ID:???
少なくとも速度はSQLite3のほうが早いだろうな
自分の環境だと10万行INSERTでPDOを100%とした場合SQLite3は95.4%(数値が低いほうが早い)
トランザクションありだと93.2%でさらに差が広がる
多機能なものは基本的にコード量が多くて条件文やループ文も多いからね

次スレめっけた
http://nozomi.2ch.net/test/read.cgi/php/1397862294/
999nobodyさん:2014/04/19(土) 23:04:35.84 ID:???
>>1 乙です
1000nobodyさん:2014/04/19(土) 23:27:36.23 ID:???
1000!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。