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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0175nobodyさん2013/06/06(木) 23:25:37.41ID:OEW8nkki
リンクをクリックしたらメールが飛ぶPHPを作ってますが、
これって巡回ロボットがリンクを踏んでもメールが飛ぶのでは?
防ぐにはどうしたらいいですか?
0176nobodyさん2013/06/06(木) 23:27:28.92ID:???
>>175
あなたは人間ですか? はい  いいえ
ボタンを作る
0177nobodyさん2013/06/06(木) 23:48:00.87ID:???
マジレスするとロボットはjavascript実行しないからjs経由させる
01781752013/06/07(金) 00:12:48.29ID:lPCuSr64
>>177
ありがとう
0179nobodyさん2013/06/07(金) 11:05:55.93ID:???
>>175-178 これって、ここで質問することか?
0180nobodyさん2013/06/07(金) 11:06:56.32ID:???
>>179
質問はID出して。
ここは  下らない質問 をするスレです。
0181nobodyさん2013/06/07(金) 13:53:32.79ID:???
おれも>>175みたいにPHPを作ってみたい
0182nobodyさん2013/06/07(金) 14:21:13.97ID:D2Zw9Gnr
MySQLでかなり重いクエリを発行すると、
Out of memory (allocated 1835008) (tried to allocate 2928480 bytes)
と出ました
php.iniでmemory_limitをかなり大きくしましたが、
エラーは変わらず、allocatedの数字も変わりません。
echo ini_get("memory_limit");
で確認すると、memory_limitの数値自体は変わっているのにです。
これはどういうことでしょうか?
0183nobodyさん2013/06/07(金) 15:36:06.40ID:D2Zw9Gnr
わざとout of memory起こして調べてみたところ
memory limitを一定数以上にすると、逆に513Mくらいにされてしまうようです
その一定数は、1500Mあたりのようです(1600M以上にすると減った)
この限界は、変えられないのでしょうか?
使っているPHPは、windowsのCLI版です
0184nobodyさん2013/06/07(金) 15:53:50.36ID:???
よくわかんないんだけど、
> Out of memory (allocated 1835008) (tried to allocate 2928480 bytes)
このエラーメッセージって、1,835,008バイト(1.8MB)allocate済みで、2,928,480バイトアロケートしようとしたら
エラーになったっていう意味じゃないの?

なんで、1,5GBとかそんなでかい話になってるの?
0185nobodyさん2013/06/07(金) 16:02:25.49ID:???
問題の原因を探ってmemory_limitの設定を変えているうちにそうなりましたw
そしてやっぱりmysqlにクエリ発行すると、数値は変わらずでしたorz
mysqlに割り当てている何かが少ないのか、あるいはmysql側の問題なのか・・・
0186nobodyさん2013/06/07(金) 17:35:16.63ID:???
もしすべてfetchしたらGBクラスになるクエリだったので、
それが悪かったようです
テンポラリテーブルに結果を入れるようなクエリにしたら、エラーがなくなりました
fetchする前からPHPが、
よく分からない値でout of memoryになる理由は分かりませんが
イレギュラーなクエリだからイレギュラーなエラーが出たのかも
0187nobodyさん2013/06/07(金) 17:57:25.60ID:???
重いってデータ量が多いって意味だったのか
0188nobodyさん2013/06/07(金) 19:10:18.42ID:???
重いデータとは言う
0189nobodyさん2013/06/07(金) 20:08:14.47ID:rbm1q+gx
PEARのRequest2ってPOSTデータ初期化できないの?教えて
0190nobodyさん2013/06/07(金) 22:20:00.64ID:???
>>184
なんで一括でアロケートするのが前提になってるの?
PHPにおいて、連続領域を確保することのメリットはそこまで大きくないと思うんだけど
0191nobodyさん2013/06/07(金) 23:59:41.64ID:E7ICkWcF
てす豚テストtest
0192nobodyさん2013/06/09(日) 11:00:21.98ID:???
カーソル使うかLIMIT,OFFSETで絞るか
0193nobodyさん2013/06/11(火) 17:22:09.11ID:qhZ2PQ58
strtrによるテーブルを使った置換をマルチバイトでやる時はどうすればいいですか?
0194nobodyさん2013/06/11(火) 20:38:32.92ID:???
>テーブルを使った置換
なにこれ?
0195nobodyさん2013/06/11(火) 20:59:52.06ID:o3YW+0BJ
staticクラスの変数値は、
サイトにアクセスする全ユーザー間で共有されているのでしょうか?
0196nobodyさん2013/06/11(火) 21:15:25.07ID:???
>>195
staticクラスなんてあったっけ?
01971952013/06/11(火) 21:23:09.89ID:o3YW+0BJ
ありますよ。

もうちょっと調べたのですが、
コンパイル言語と違ってインタプリタ言語なので
ソースを毎回読んでる→毎回リセットされるのでユーザー間で共有されない
という認識であってますか?
0198nobodyさん2013/06/11(火) 21:25:07.84ID:???
>>197
PHPのstaticクラスについてkwsk
もしくはマニュアルの該当ページ
01991972013/06/11(火) 21:37:42.46ID:o3YW+0BJ
ごめん、staticクラスじゃなくてstaticプロパティとメソッドでした
0200nobodyさん2013/06/11(火) 21:51:48.69ID:sCzvZ2sj
PHPを勉強しはじめた初心者です。質問させていただきます。

現在、ログイン機能を有するサイトをPHPとMySQLを使用して作成しています。
仕組みとしては、ログイン時にセッションIDとともにDBにユーザーIDと関連付けて保存するという形式をとっているのですが、
全てのページにおいてログインの状態を判別するために、ログイン判別処理用の関数を全てのページ内に含めています。
しかし、この様に全てのページにログイン判別の関数を含めると、phpの内部コードが非常に長くなり、見づらくなってしまいます。

このようなサイトの場合、include関数やrequire関数を用いて上記のような関数をライブラリ化をするのが一般的なのでしょうか?
それとも、全てのphpファイルにログイン判別用の関数を書くのが一般的なのでしょうか?
ログイン判別用のライブラリをそのまま公開ディレクトリに置いておくのはあまりにも危ないような気がして・・・。
他にもっと効率的な方法などがあれば、是非とも教えていただきたいです。

よろしくお願いいたします。
0201nobodyさん2013/06/11(火) 21:52:25.43ID:???
アプリケーションスコープならphp7.xから実装予定
0202nobodyさん2013/06/11(火) 22:19:37.12ID:???
>>200
みんな同じようなことで悩んで、
そういった共通処理を枠組みとして提供するのがフレームワーク
PHPならCakePHP2、Symphony2、ZendFramework2、Yii、FuelPHP、
とか有名どころがたくさんある。
いい機会だと思うので是非どれか試してみて下さい。
02032002013/06/11(火) 23:03:58.32ID:sCzvZ2sj
>>202
なるほど、PHPにも色々と便利なフレームワークがあるのですね。
ただ、今回はフレームワークは使用せず、自作の関数を使ってプログラムを組んでいきたいと考えています。
いずれはフレームワークの勉強もして、組み合わせていきたいですけどね。

ご教示いただき、ありがとうございました。
0204nobodyさん2013/06/11(火) 23:28:41.88ID:???
>>200
一般的にはどちらもせずにフレームワークを使う。
どちらが良いかってことになると普通は一ヶ所にまとめるだろjk
0205nobodyさん2013/06/12(水) 10:23:36.00ID:???
>>204
横だけど、初心者からすると、そのjkとなる理由が知りたい…
普通はっていう、その根拠となっている理由をおしえてください
0206nobodyさん2013/06/12(水) 10:30:37.81ID:???
メンドクサイことをしないのは普通でしょう。
0207nobodyさん2013/06/12(水) 11:05:02.21ID:???
>>205
もしもあなたが作ったプログラムが完璧で全く修正の余地がないのなら、
多少の記憶領域のコストと引き替えにしてでも、すべてのファイルに
同じソースを貼り付けて動作するようにすればいいでしょう。
なぜならファイルI/Oコストと演算コストを最小化できるからです。

しかしあなたが完璧なものを作ることが出来ない場合、
いつの日かプログラムの修正を余儀なくされるでしょう。
そしてあなたは完璧なものを作ることは恐らく出来ません。
それは歴史が証明しています。
きっとあなたが今完璧なものを作ったと信じている素晴らしいソフトウェアも、
第一線で活躍し続ける限り必ず修正を余儀なくされます。

プログラムの修正を迫る圧力は主にセキュリティ上の脅威の問題です。
そして、恐らくもっとも単純な例としてプログラム上のバグがあります。

さて未来のあなたに、今日完成したと信じて疑わないプログラムを修正する日がやってきます。
きっとそのときあなたは今の自分を恨むことでしょう。

「なんでこんなにあちこちに同じコードを張り付けてるんだ!」

と。

このように、同じコードをあちこちに貼り付けて作成したプログラムはかえって高く付くのです。


==================
という翻訳調の記事を一度ぐらい読んだことないか?
これは俺が適当に書いたやつだがw
0208nobodyさん2013/06/12(水) 21:35:16.31ID:DIs4JrHl
最近のPHPは無名関数や[]表記が出来るようになっていますが、
PHP5.2以下ってもうほとんどのサーバで使われてないんですか?
0209nobodyさん2013/06/12(水) 21:46:45.66ID:???
いや、そんなことはない。
バージョンアップしてないところは多いと思う。
格安にかぎらずな。
0210nobodyさん2013/06/12(水) 23:57:16.27ID:???
つかってるサーバーでは、あげたら動かなくなると困るので、
しかたなく現状のままなのですよ。
02112052013/06/13(木) 00:22:58.95ID:???
>>207
オライリーの本で見かけたような気がしますw
0212nobodyさん2013/06/13(木) 03:12:40.67ID:???
>>208
5.2というよりPHP自体が使われなくなってきてる
レン鯖でもPHPをインストールしないポリシーのところが増えてきている
0213nobodyさん2013/06/13(木) 06:00:37.94ID:YfwFYZMU
mysql_real_escape_stringが非推奨ってどういうことですか!?
5.5で非推奨ってあるのですが、これがないとMySQLで特殊文字がエスケープされなくて安心して眠れないよるが続きそうなんですが
0214nobodyさん2013/06/13(木) 09:36:09.38ID:???
>>212
まじ!?何を使うの
0215nobodyさん2013/06/13(木) 09:46:15.45ID:???
>>212
それは信じられない。
例えば?
0216nobodyさん2013/06/13(木) 09:52:19.35ID:???
オールインワンのPHPは最高なのに・・
Rubyとか言うほど綺麗でもないし、PHPでオブジェクティブに実装した方がマシ
0217nobodyさん2013/06/13(木) 10:37:06.38ID:???
>>213
mysqli使えって書いてんだろちゃんと読め
0218nobodyさん2013/06/13(木) 11:27:50.70ID:???
レン鯖()笑
0219nobodyさん2013/06/13(木) 11:59:31.97ID:d6F8arzZ
一昨日から PHP の学習を始めました
ものすごく下らない質問ですが、PHPを使ったWEBサイトを作るとき
そのサイトの全ての拡張子をPHP化しておいた方がよいでしょうか?
現在は一部だけしかプログラムが必要なページはありません。
html と PHPの拡張子が混在したサイトで構わないのでしょうか。
0220nobodyさん2013/06/13(木) 12:01:11.77ID:???
構わない。むしろ推奨。
0221nobodyさん2013/06/13(木) 12:03:55.80ID:d6F8arzZ
>>220
素早い回答ありがとうございます。
くだらないことだと思うのですがものすごく悩んでたので大感謝です!
また、くだらない質問するかもしれませんがよろしくお願いします。
0222nobodyさん2013/06/13(木) 15:21:20.98ID:3J7ktNc/
嘘を嘘と見抜けない間抜けが掲示板を有効に使うのは難しいて昔唇お化けが言ってたよな
0223nobodyさん2013/06/13(木) 17:10:01.51ID:???
見抜いた!>>222が嘘ですね
0224nobodyさん2013/06/13(木) 17:47:46.82ID:FfDvZGBp
クロージャの中から外のスコープを見るにはどうすればいいですか?
0225nobodyさん2013/06/13(木) 18:15:42.06ID:???
use
0226nobodyさん2013/06/13(木) 18:23:54.50ID:???
use 普通に書くと、定義時の値だから、参照を渡して擬似的に見るようにするしかないかな。
0227nobodyさん2013/06/13(木) 18:29:08.38ID:???
ですね。
0228nobodyさん2013/06/14(金) 03:38:51.82ID:QtFKp6t4
foreach内で内部カウンターの値を参照する方法はありますか?
0229nobodyさん2013/06/14(金) 03:58:37.06ID:???
単純な配列ならインデックスが使えるけれど、そうじゃないなら無いです。
自分で数えてください
0230nobodyさん2013/06/14(金) 13:18:20.63ID:???
ありがとうございました
0231nobodyさん2013/06/14(金) 13:58:52.56ID:???
phpファイルにて
$email = htmlspecialchrs($_REQEST{'my_name'] , ENT_QUOTES) ;
を先にやっておくと、あとからhtmlspecialchrsを何回も書かないでいいみたいですが

同じページの

inputの value="<?php print htmlspecialchars($email, ENT_QUOTES); ?>" />
これもhtmlspecialcharsは書かなくてもいいんでしょうか?
0232nobodyさん2013/06/14(金) 14:03:24.84ID:???
idが出てません
0233nobodyさん2013/06/14(金) 14:16:30.92ID:???
省略しました。
0234nobodyさん2013/06/14(金) 15:01:15.42ID:???
>>231
$emailをprintして従前と変わっているかどうか見て理解して欲しい。
0235nobodyさん2013/06/14(金) 16:12:58.76ID:???
ruby流行らそうと必死なksどもがPHPネガやってんのが痛すぎる
0236nobodyさん2013/06/14(金) 17:23:18.92ID:/kSo8dQA
イテレータってどんなときに使うんですか?
ざっくりした質問ですみません
0237nobodyさん2013/06/14(金) 17:31:23.05ID:???
>>236
イテレータは、簡単に繰り返し処理を行えるようにするもの。
自分でコンテナを実装したときに、Iteratorインタフェースを実装すればforeach()とかが使えるようになる。

例えば、Queueクラスを実装したとき、Iteratorインタフェースを実装しなければforeach()などが使えない。
0238nobodyさん2013/06/14(金) 18:00:07.35ID:???
繰り返しといっても、配列とか要素を順に辿っていくような処理な。
0239nobodyさん2013/06/14(金) 21:35:30.79ID:D2IxfBS6
phpのfor文の中でjavascriptの関数を実行するにはどうしたら良いでしょうか?

イメージとしてはこんな感じです↓

for($j=0; $j<$num; $j++){
$a = $b[$j];

print <<< END_DOC
<script type="text/javascript">
var $c = <?php echo $a ?>;
kansu($c);
</script>

END_DOC;
}

↑上記で試しましたがうまくいきませんでした。
0240nobodyさん2013/06/14(金) 21:36:56.54ID:???
>>239
JavaScriptとPHPごっちゃになってるぞw
0241nobodyさん2013/06/14(金) 21:41:17.01ID:???
マジ意味わかんねえ何がしたいんだよエラー出るに決まってんだろうが!!!!!!!!!!!!!!!!!!!!!!!!!!!ふざけんなよ!!!!!!!!!!!!!!!!
0242nobodyさん2013/06/14(金) 22:36:00.08ID:???
>>239
var c = <?php echo $a ?>;
kansu(c);

こうじゃだめ?
0243nobodyさん2013/06/14(金) 22:49:59.04ID:???
こうじゃね?
var c = $a;
0244nobodyさん2013/06/14(金) 23:00:13.87ID:???
ああ、たしかに。スマヌ
0245nobodyさん2013/06/14(金) 23:30:21.61ID:???
むしろこうじゃね?
kansu($a);
0246nobodyさん2013/06/14(金) 23:31:11.80ID:???
それは省略しただけかもしれないし
0247nobodyさん2013/06/14(金) 23:31:33.06ID:???
確かにw
0248nobodyさん2013/06/14(金) 23:31:55.56ID:???
そうでないかもしれないし
0249nobodyさん2013/06/14(金) 23:43:11.60ID:???
PHPスレが和みムードとか天変地異か
0250nobodyさん2013/06/15(土) 11:23:04.75ID:J8J1CSeU
ini_setの影響範囲ってどこまでなのでしょうか?

1. その実行のみ
 →同時アクセスしている利用者は影響を受けない。
2. PHPサーバー全体
 →他ユーザーは影響を受ける。

教えてください。
0251nobodyさん2013/06/15(土) 13:37:02.62ID:???
>>250
1
02522502013/06/15(土) 18:43:48.47ID:J8J1CSeU
【OS名】Wndows Server 2012
【PHPのバージョン】5.4.16

です。
02532502013/06/15(土) 18:48:43.44ID:J8J1CSeU
なお、いろいろ調べると
「php.iniを書き換えるのと同じ」
という意見が目立ちます。
同時にアクセスしている他ユーザーの影響を受けるということです。

そうした場合、例えば次のような問題が発生します。
致命的な問題のような気がします。

・日付関数を使用するためPHPファイルの頭でini_setでタイムゾーンを指定。
 しかしいざ日付関数を使用する前に、他のユーザーの別アクセスで
 タイムゾーンを書き換えられてしまう。

・Webアプリケーションごとに情報をini_setで設定したいが
 全Webアプリケーションで共有されているため、個別設定できない。
0254nobodyさん2013/06/15(土) 18:59:20.04ID:KOqiYb3a
>>253
どこを調べたのか教えてください。
02552502013/06/15(土) 19:28:31.38ID:J8J1CSeU
http://books.google.co.jp/books?id=ApnEgHlgb4wC&;pg=PA357#v=onepage&q&f=false

ini_setで設定した値は loca value 扱いになるということがわかりました。
まだきちんと書かれた文章は探せてませんが、
local valueという名前から、スコープは1処理内と思います。

ですが、「ページの処理終了後に元の状態に戻されます」という記述がややこしいです。
元に戻す必要があるということは、
元に戻さなかったら他のユーザーに影響を与え続けるという風にも読み取れてしまいます。
0256nobodyさん2013/06/15(土) 19:31:39.27ID:???
>>255
元に戻す必要があるってどこに書いてあるの?
02572502013/06/15(土) 19:35:17.23ID:J8J1CSeU
なぜini_setの値は処理終了後に元に戻されるのか
 ↓
1. 次に自分(同一セッション)がアクセスしたときに影響を与えないため
2. 次に他人がアクセスしたときに影響を与えないため

1.の意味ならいいのですが、2.の意味だと
ini_setの値がサーバー全体で共有されていると取れる文脈なのです。
02582502013/06/15(土) 19:35:52.98ID:J8J1CSeU
http://www.1x1.jp/blog/2011/05/basic_of_php_phpinfo.html

> 「Local Value」と「Master Value」の2種類が表示されます。
> これらの違いはマニュアルで明記されているわけではないのですが、
> 「Master Value」がphp.iniやhttpd.conf(PHP-FPMなら/etc/php-fpm.d/www.conf)の設定値、
> 「Local Value」が.htaccessやini_set()で設定した設定値となっているようです。p

なぜ明記されていない・・・。
>>253のように超重要な問題だと思うのですが。
0259nobodyさん2013/06/15(土) 19:37:19.03ID:???
php.iniが書き換わるわけねーだろバカかお前
02602592013/06/15(土) 19:40:20.53ID:J8J1CSeU
>>259
ではlocal valueのスコープについてきちんと書かれた文章を
提示していただけませんか?
0261nobodyさん2013/06/15(土) 19:40:37.24ID:???
話聞けよ。勝手にしろボケ。
02622502013/06/15(土) 19:46:19.09ID:J8J1CSeU
名前欄間違えました。

>>261
あなたは(ini_setなどで)php.iniは書き換わらないとは言っていますが、
ini_setの値が他アクセスに影響を与えないことを提示していません。
罵声を浴びせるならしっかりと提示してください。
0263nobodyさん2013/06/15(土) 19:52:32.86ID:???
そんなに心配ならPHPのソース読めアホが
0264nobodyさん2013/06/15(土) 20:27:53.94ID:???
つーかそんなに人の言うこと信じられないなら試せば?
0265nobodyさん2013/06/15(土) 23:15:50.49ID:???
ものすごい基地外が湧いててワロタw
久しぶりに微笑ましいねw
0266nobodyさん2013/06/16(日) 01:30:12.04ID:h8ga9m06
さすがphp板だな初期化の意味もわからない馬鹿しかいない
0267nobodyさん2013/06/16(日) 01:32:43.43ID:???
PHP板じゃないけど
0268nobodyさん2013/06/16(日) 04:08:43.22ID:???
マルチバイト対応のstrtrがないのはなぜでしょうか?
代替の関数は何ですか?
0269nobodyさん2013/06/16(日) 04:09:14.02ID:uMOZ/qgp
id出し忘れました
02702682013/06/16(日) 15:56:04.94ID:???
ID出し忘れてましたが自己解決しました
回答は締め切ります

>>269は誰でしょうか?
たぶん偽物だと思います
0271nobodyさん2013/06/16(日) 16:12:37.27ID:???
>>268にレス書いたけど書き込み前にリロードしたら・・・
自己解決したのかよw
まぁその調子で頑張れ。
0272nobodyさん2013/06/16(日) 16:42:14.77ID:???
いやいや、たぶんなりすましだろw
id出したら質問しなおした方がいいよw
0273nobodyさん2013/06/16(日) 19:14:20.11ID:???
>>262
俺259じゃなくて256なんだけど。
元に戻す必要があるってどこに書いてあるの?
0274nobodyさん2013/06/16(日) 21:37:16.46ID:???
書き込み前のメール欄のチェックすらできないヴァカにはどのみち回答しなくていいと思う
■ このスレッドは過去ログ倉庫に格納されています