【PHP】下らねぇ質問はID出して書き込みやがれ 115
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 114
http://kohada.2ch.net/test/read.cgi/php/1325437405/ ◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易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)、起動&再起動あたり
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に保存?
→ 好きにしてください
>>1 おつ
がっこーからは次スレ立てられなかったスマソ
8 :
nobodyさん :2012/01/20(金) 10:31:56.57 ID:2Tx7MEP0
function frnd() { return rand()/(getrandmax()+0.1); } $in=0;$N=1000; for ($i=0;$i<$N;$i++){ $x=frnd(); $y=frnd(); if ($x*$x+$y*$y<1.0) $in++; } $pai=4*$in/$N; echo "π=".$pai."\n"; phpの本に載ってたモンテカルロ法による円周率の求め方の質問 何故、getrandmax()+0.1としているのですか? rand()/(getrandmax()で0〜1の範囲で乱数を発生させたらいいと 思うのですが、この0.1が加算されているのが分かりません。 C言語でやったときは rand()/RAND_MAXとしました。
乱数を0から1未満とするため x=1のときyに依存しないで円外になるからかな。 どっちもやって誤差がどうなのか見てみれば?
11 :
nobodyさん :2012/01/20(金) 19:26:14.79 ID:yvoFKIu/
質問させてください、拡張モジュールが理解できません。 php.iniでmemcached.soを記述してプログラムを動かしたところ、 PHP Warning: Module 'memcache' already loaded in Unknown on line 0 という警告が出たのですが、 これをどう理解したら良いのかわかりません php.iniの指定以外にもどこかで起動していたということですよね? 自分ではそんなプログラムを書いた覚えないのですが、どんな原因が考えられるでしょうか? サーバのサービスとしてのmemcachedはstatus:running状態だったのですが、 その場合php.iniの拡張モジュールとしての記述は不要ということでしょうか?
ロード処理を2回書いてるとかじゃね
13 :
nobodyさん :2012/01/20(金) 21:04:10.91 ID:ObSPH0mR
質問させてください。 ↓みたいなhtmlエンティティ化された日本語を戻すのはどうしたら良いでしょうか? ????? ちなみにこれは「あいうえお」です。 print html_entity_decode("?????"); としても変化ありませんでした。 よろしくお願いします。
14 :
13 :2012/01/20(金) 21:05:59.96 ID:???
ああ、なんてこと。 ↓これです。&は半角です。 &#12354;&#12356;&#12358;&#12360;&#12362; また化けてたらすいません。
>>14 デコードしてみたけどそんな卑猥な言葉俺の口からはとても言えない
16 :
nobodyさん :2012/01/20(金) 21:19:29.86 ID:x5waH9K4
Tokyo Tyrantを使ってみようと思ったのですが、Kyoto Tycoonとかいう 次期バージョンが出ているようですが、 PHPで使えるのか良くわかりません TTの方はPECLから簡単に導入出来ると思うのですが、 実際使っている方にお聞きしますが、やっぱ今から導入するにはKyotoの方でしょうか? それともPECLにありマニュアルも完備されているTokyoの方がいいのでしょうか?
17 :
nobodyさん :2012/01/20(金) 21:20:31.05 ID:ObSPH0mR
>>15 ただのあいうえおですって。
どうやってデコードするのか教えてください。
mb_convert_encoding($txt,'UTF8','HTML-ENTITIES'); html_entity_decodeはめんどくさい。
20 :
17 :2012/01/20(金) 21:44:38.77 ID:???
>>18 出来ました!
ありがとうございます。
今度奢ります。
>>19 mb_convert_encoding()にそんな引数あったんですね。
知りませんでした。
ありがとうございます。
>>11 php.iniと、php.dの中のどれかまたは.htaccessとかで読んでるとか。
23 :
11 :2012/01/20(金) 23:08:17.49 ID:yvoFKIu/
>>22 ありがとうございました!
/etc/php.dっていうディレクトリの中に***.iniがある場合、それはphp.iniで
拡張モジュール指定しなくても良いんですね。知りませんでした
/etc/php.dはどういうタイミングで作られる&更新されるんでしょうか?
>>12 ありがとうございました
24 :
nobodyさん :2012/01/20(金) 23:31:21.75 ID:x5waH9K4
25 :
nobodyさん :2012/01/20(金) 23:37:39.24 ID:x5waH9K4
ごめんなさい PHPの時はおかしいと思っておりました PECLモジュールをphpizeで入れるときのオプションだとhelpを見て分かりました
26 :
nobodyさん :2012/01/21(土) 00:06:03.40 ID:zlJukRTP
【OS名】 Linux系 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL 【質問内容】 入出力のサニタイズの質問です。 名前とメールアドレスを入力してもらい、次の画面で確認表示して、 確認後にDBに格納します。また、あとでDBから取り出して画面に表示します。 このとき、どのようにバリデートとサニタイズを行うのがいいでしょうか。 次の流れで、(2)と(3)のサニタイズは必要でしょうか。 行わなければ、ぜい弱性になりえますか? 利用者から名前とメールアドレスを受け取る ↓ mysqli_real_escape_stringでサニタイズ(1) ↓ 長さが1以上、かつ、メールアドレスは適切 ↓ (1)をhtmlspecialchars でサニタイズして表示(2) ↓ 利用者が確認 ↓ (1)の結果をDBに格納 あとで、 DBから名前とメールアドレスを取り出す ↓ htmlspecialchars でサニタイズして表示(3)
27 :
nobodyさん :2012/01/21(土) 00:06:54.20 ID:zlJukRTP
こっちの方がいいかな? 利用者から名前とメールアドレスを受け取る(a) ↓ (a)の長さが1以上、かつ、メールアドレスは適切 ↓ (a)をhtmlspecialchars でサニタイズして表示(b) ↓ (b)を利用者が確認 ↓ (a)をmysqli_real_escape_stringでサニタイズ(c) ↓ (c)をDBに格納
確認画面と完了画面での情報の引き渡し方とチェックのタイミングの話かと思ったら ただのエスケープの話だったでござる
29 :
nobodyさん :2012/01/21(土) 00:25:53.11 ID:zlJukRTP
>>28 まだ確認画面を作ってないのですが、
セッション変数で渡してしまおうと思っています。
今の仕様だと確認画面がないので、セッションは不要なんですが。
30 :
nobodyさん :2012/01/21(土) 00:28:45.42 ID:mz2KZcw3
何らかの処理でエラーが発生したとき、その内容をバックグラウンド処理として 管理者にメール送信させたいと思っています。 それで、それに関することを調べていたら「複数のプロセスが発生しないように云々」とありました これについて聞かせてください ・メール送信する処理をこの場合のプロセスとして考える ・同時に複数のプロセスが動くのは望ましくない(サーバの負荷がかかる) ・そうならないための仕組み(排他制御とはこのことですか?)を考えるべき ってことですか? どうやって、現在管理者向けのメールを送るプロセスが起動してるかを判定できるんでしょうか? 簡単な例を教えてもらえると嬉しいです。よろしくお願いします。PHP5.3です。
>>29 (1)と(2)の脆弱性は全く別物なので片方だけやっても意味ないよ
バックグラウンド処理として管理者にメール送信って、 どうやるのを想定していますか? それに関することのソレがわかんないし、貴方の思ってる方法と ソレがあっているか分かんないし、なんで複数のプロセスが発生しちゃだめなのかがつながらない。 答えるとすると、ただの想像になるので、貴方の役に立たないかもしれません。
>>30 同時に複数のプロセスが動くのは普通だよ
リソースを共有してて同時にいじったら問題が発生するときは排他制御かけるけど
34 :
nobodyさん :2012/01/21(土) 00:39:35.47 ID:zlJukRTP
>>31 ありがとうございます。
それぞれ対策することにします。
>>32 言葉足らずで申し訳ありません
イメージとしては exec();を利用してメールを送信するsendmail.phpを実行しようと思っています
排他制御というのを実行して、たとえばユーザA,ユーザB,C,D...が大勢いっぺんにメールを送るようなことに
ならないようにしないとサーバが重くなってしまうのかなぁと思ってましたが、
そんなことないんでしょうか?
よくわからないのですが、sendmail.phpの中で以下のようなことをするのかと自分は思っていましたが…
if(!file_exists('./mailsending')){
//現在メール送信中なのを示すロック用のファイルを作る
mkdir('./mailsending',0777);
//メール送信処理
〜〜
unlink('./mailsending');
}else{
sleep(5);
//このあとこの処理を頭からもう一回実行する
}
>>33 プロセスというのがそもそもよくわからないのですが
mail();の実行でメール送信のプロセスが起動するわけですよね?
それはいくつも同時に動いて問題なくて、一つ動いてそれが送信完了したらそのプロセスは消えるんでしょうか?
36 :
33 :2012/01/21(土) 01:17:13.33 ID:???
>>35 execで外部メールプログラムにパイプで渡すのか
mailでメールサーバに渡すのかどっちなんだ?
どうやろうとしてるのか情報がないので分からないけど普通はメールキューに溜まるんでないの?
sleepだの、排他処理だのしてないで、さっさと投げて処理した方が
>>23 インストーラ(というかMakefileやRPM)がそこに作ったり作らなかったり。
39 :
nobodyさん :2012/01/21(土) 04:59:51.97 ID:eRKOygVB
call_user_func_arrayと $func = function ($a) {}; $func("あ"); で呼び出すのって違いありますか?
そりゃ違う
120行ほどコード書いて実行したらエラーもなく動いた 感動しました!
誰あんた
43 :
nobodyさん :2012/01/21(土) 11:07:42.28 ID:FSMglBTD
phpで使用できるアプリケーションサーバー どのようなものがありますか?
前スレに帰れよもう
45 :
nobodyさん :2012/01/21(土) 16:25:18.51 ID:jFN3iVio
文字コードについて 通常はutf-8で統一するのでしょうか?(php,mysql,xhtml) 携帯の場合はsjisだと思いますが、その場合はsjisで (php,mysql,xhtml)で統一するのでしょうか?
どうしてもってときは出力だけShift_JISにするけど、いまどきUTF-8対応してない携帯って生きてるの
今時携帯でもutf8でいいわな まぁsjisにするにしても内部コードはutf8にするのが鉄則 内部コードがsjisってだけで問題起きるからな
>>46 へえ、携帯向けもUTF-8でいいんですか。
化石のような携帯を使ってる奴らを相手にするつもりはないので。
いわゆるガラケーに対応するなら出力はSJISにすべきだろうね。 スマホ相手だったらUTF-8で問題ないよ。
50 :
nobodyさん :2012/01/21(土) 18:01:38.09 ID:CB8OXbyx
質問させてください ソケット通信のプログラムに興味があって勉強してるのですが、 stream_set_timeoutで設定するタイムアウトは実際にどのようなときに 発生するんでしょうか? 例えば10秒のsleepを設定してある外部のphpプログラム(HTTPアクセス)に、 stream_set_timeoutで5秒を設定したプログラムからアクセスしても タイムアウトが発生せず10秒しっかりと待たされてしまうのですが、 そもそもstream_set_timeoutで設定するタイムアウトの解釈が間違ってますか?
51 :
nobodyさん :2012/01/21(土) 18:07:22.46 ID:mW1ztqvo
配列hを$h=array(2=>0,0,0,0,0,0,0,0,0,0,0);したとき、 foreach ($h as $key => $val) { echo "h[" . $key . "] = " . $val . "<br>"; } で出力すると h[2] = 2 h[3] = 5 h[4] = 14 h[5] = 11 h[6] = 14 h[7] = 17 h[8] = 14 h[9] = 5 h[10] = 8 h[11] = 6 h[12] = 4 となるサンプルが本に載ってましたが、 $h=array(2=>0,0,0,0,0,0,0,0,0,0,0);は $h=array(2=>0,3=>0,4=>0,5=>0,・・・が 略記と考えていいのですか?
52 :
nobodyさん :2012/01/21(土) 18:09:31.65 ID:mW1ztqvo
間違えました、 配列hを$h=array(2=>0,0,0,0,0,0,0,0,0,0,0);したとき、 foreach ($h as $key => $val) { echo "h[" . $key . "] = " . $val . "<br>"; } で 0 0 0 0 0 0 0 0 0 0 0 でした
53 :
nobodyさん :2012/01/21(土) 21:11:00.04 ID:MGOT7geS
いまhtml,cssと終わってjavasprictに入ろうと思ってんだけど phpもやったほうが捗る? 他の言語の方が捗ったりして
54 :
nobodyさん :2012/01/22(日) 00:24:53.85 ID:UXyrzgYX
オブジェクト指向がわかんない。 クラスってどういうときにどんなかんじで使うの? 普通にファンクションじゃダメなの?
>>54 phpのオブジェクト指向は最適化されていないので、
使わなくていいよ。
56 :
nobodyさん :2012/01/22(日) 00:57:25.79 ID:UXyrzgYX
>>55 いや業務で使わないといけないから
月曜までに理解しとかないとまずい
人間ってクラスがあるとする class ningen じつはこれこのままだと動かない、人造人間 なのでスイッチ入れます $hito = new ningen(); この人造人間、ミサイル発射機能が実装されてる $hito->missile(); デフォルトだとミサイル1発に設定されてるけど5発でも出せるよ $hito->setAmmo(5); $hito->missile(); 髪型だって変えられるイカシタやつなんだ $hito->setHair('hage'); こんな感じ classの中にはmissle,setAmmo,setHairってfunctionがある スイッチを入れた$hitoはインスタンスと呼ばれるオブジェクト インスタンスからそのクラスが持ってるメソッドを呼び出したり、インスタンスの髪型変えたり 考えてもあまり意味ないから、簡単なソースを真似て自分で書いてみれ
>>50 sleep→socket通信になってるんでしょう
逆の場合はすでに通信が完了している
60 :
59 :2012/01/22(日) 05:28:11.30 ID:???
ごめんよく読んでなかった スルーしてくれ
61 :
nobodyさん :2012/01/22(日) 08:13:40.99 ID:bGbbffT4
touch()でファイルを作りたいんですがうまくいきません public_htmlの権限を707(または706など)にして書き込み可能にする必要があるんでしょうか? またその場合外から書き込みなることは危険ではないんでしょうか?
62 :
61 :2012/01/22(日) 08:16:15.48 ID:bGbbffT4
>>61 すみません
書き込みなることは〜→書き込み可能になることは
に読み替えてください
モジュール版phpでsafemodeがかかってるなら 出力するファイルの親ディレクトリに書き込み権限を与える必要がある 親ディレクトリがpublic_htmlならpublic_htmlに与える必要があるが public_html/hoge/に出力する場合public_htmlまで遡らず 単にhogeに書き込み権限を与えればよい >またその場合外から書き込みなることは危険ではないんでしょうか? ディレクトリやファイルを操作するスクリプトに脆弱性がある場合は 余計な権限を与えてると問題が起きる可能性はあるが 権限を与えること自体に危険性はない
>>57 クラスの先頭は大文字で書くクセを付けてくれ頼む
>>50 タイムアウトの仕様はWindowsとLinuxで異なるから気をつけよ
>>45 10年前の携帯だけどUTF-8だからSJIS携帯ユーザーを見つけるのが難しい
>>43 PHP5.4から簡易サーバーが組み込まれてる
>>57 ただのモジュールとして使うのか、オブジェクトがわからない時はそういう使い方もありかな。
70 :
nobodyさん :2012/01/22(日) 13:24:42.98 ID:MxVymtCi
PHPの中にHTMLをそのまま書きたいとき、いい方法はありますか? この2つなら思いつきますが、他にオススメがあればお願いします。 1.echoでHTMLを出力する 2.?>でPHPを閉じて、HTMLを書いて<?phpでまたPHPを書く
<<<eof
72 :
nobodyさん :2012/01/22(日) 13:29:50.28 ID:MxVymtCi
>>71 ヒアドキュメントですね。忘れていました。
それをechoで出力すればいいですね。
>>70 echo "
<p>aa</p>
<p>aa</p>
";
echo '
<p>aa</p>
<p>aa</p>
';
74 :
nobodyさん :2012/01/22(日) 14:05:51.50 ID:MxVymtCi
>>73 改行が入ってもクオートは閉じなくていいんでしたか。
ありがとうございます。
75 :
nobodyさん :2012/01/22(日) 14:18:37.17 ID:oj78u6X0
メール送信処理をクラス化して、メールの種類によって文面を変える処理を作っています (警告メール/エラー報告メール/新着情報メールなど) 今までswitch文で一つのファイルにまとめて各パターンの文章を書いてたんですが、 その文面を外部化してテンプレート的に読み込ませた方が良いと思い始めました しかし、そのメールのテンプレートの作り方がわかりません 最低限下記を知りたいです ・テンプレートの拡張子(というかファイルタイプ)はどうすべきか ・そのファイルから文章を読み込ませる方法 ・ユーザ名を自動的に置き換えて送信できるようにする方法 (「こんにちは ****さん」的な…) どうしたらいいんでしょうか 処理の流れとして、上記のメール送信する処理を書いた.phpファイルを mailsend.class.phpとして 以下のようにしてメールの種類と送信先ユーザ名を渡して送信処理することを考えています require(mailsend.class.php); $mail = new mailsend(); $mail->sousin($mailType, $userName);
>>75 もうちょっと初歩的なところからやったほうがいいのでは?
質問の答えとしては
>・テンプレートの拡張子(というかファイルタイプ)はどうすべきか
プレーンテキストだしなんでもいい
>・そのファイルから文章を読み込ませる方法
file_get_contents etc
>・ユーザ名を自動的に置き換えて送信できるようにする方法
そういう情報を集めたデータベースなりが必要でしょう
77 :
nobodyさん :2012/01/22(日) 16:12:54.41 ID:ySnaTQRi
78 :
61, 62 :2012/01/22(日) 16:55:34.47 ID:bGbbffT4
>>63 丁寧に答えて下さりありがとうございます
仰るとおり、調べた結果safemodeでした
ディレクトリを新しく設け、そこに置くファイルは最小限にして実装しました
ありがとう!
79 :
nobodyさん :2012/01/22(日) 17:16:32.51 ID:UXyrzgYX
>>77 エラー時に投げてくる TokyoTyrantException::getCode() と比較する
81 :
nobodyさん :2012/01/22(日) 20:10:43.98 ID:ySnaTQRi
>>80 なるほど、お答えいただきありがとうございます
日本のマニュアルは、英語と比べて遅れている(差がある)ようで、
先ほど初めて知ったのですが、TokyoTyrantExceptionというのがあると知りました
他にもIteratorといったクラスがあるようで・・・
今Windows環境でLinuxが手元にないので試せないのですが、
keyからput、getなどする際は、try~catchのtry内で行えということですね?
>>81 そういう事だね
マニュアルにない事はソースに頼る方が確実
tokyo_tyrant.c
> /* {{{ int TokyoTyrantTable::put(string pk, array row);
> put a row. if pk = null new key is generated
> @throws TokyoTyrantException if not connected to a database
> @throws TokyoTyrantException if get fails
> */
> PHP_METHOD(tokyotyranttable, put)
> {
84 :
nobodyさん :2012/01/22(日) 23:30:07.77 ID:ySnaTQRi
>>82 本当にありがとうございました
しかしPHP・・・だけでなく他言語としてもTokyoTyrantの情報って出てきませんねw
調べてもマニュアルの転用ばかりが出てきます
皆さん何を使ってらっしゃるんですか?
APCやmemcachedがやはり多いんですかね?
それかCassandraとか
それともこういうのは使わずに、DBとかcache機能とかなのですかね
情報が少ないものは使わないってのは普通なことでは それでも使いたいってなら頑張って調べるしかないからね めんどくさいし情報が豊富なmemcachedでいいってなるわ
>>57 で、なんとなくクラスの使い方がわかりました。ありがとうございます。
でも、今自分の作っているもののうち、どういうものをクラスに作ったらいいのか
まだいまいち把握できません。どんなときにクラスにするんですか?
そろそろまとめサイトつくろうぜ
どんなときにクラスとかどういうものをクラスとかいう概念を捨てろ 全部クラスにしないといけないそういう言語もあるんだぞ というわけでオブジェクト指向の概念を勉強したいなら 一度JavaなりC#の初心者向けサイトを訪問してきな
90 :
86 :2012/01/23(月) 15:30:40.66 ID:???
>>89 ひー、ますますわからなくなりました。
オブジェクト指向の概念 がんばって読んできます。
91 :
nobodyさん :2012/01/23(月) 18:09:04.87 ID:NlIjtP0L
【OS名】Windows 7 Home Premium SP1 (64bit) 【PHPのバージョン】5.3.9 【連携ソフトウェア】Apache 2.2.21 (php.ini) mbstring.internal_encoding = UTF-8 mbstring.http_input = UTF-8 mbstring.encoding_translation = On 不正な UTF-8 を出来る限り防ぎたいと思っています htmlspecialchars のように無効な文字を削除する関数で、'<' (小なり) や '>' (大なり) を変換しない関数は無いでしょうか $str = htmlspecialchars_decode(htmlspecialchars($str, ENT_COMPAT, ''), ENT_COMPAT) のように書くのが適切でしょうか
不正な UTF-8 ってなんでしょう・・・ htmlspecialcharsは 無効な文字を削除する関数ではありませんし。
93 :
91 :2012/01/23(月) 18:47:20.79 ID:NlIjtP0L
>>92 すみません
PHP 5.2.12 / 5.3.2 以降の htmlspecialchars で、冗長なUTF-8表現などが含まれると空文字を返す機能のことです
>>91 mb_convert_encoding("\xC0\xBC", 'UTF-8', 'UTF-8')
95 :
nobodyさん :2012/01/23(月) 19:17:30.77 ID:HHu7F5nF
時刻の計算について教えてください 何かを行った際にその時の現在時刻を取得し、DBなどに格納しておいて、 その後に、3日以上経っていたら削除するような事をしたいのですが、 どのように書けばいいのでしょうか? 自分はまず先にdate('Y/m/d H:i:s');でDBに格納 ->次に(3日以上経ったとして)、現在時刻を取得し、DBに格納した値と比較 と考えたのですが、計算方法が分かりません strtotime()とか考えたのですが、解決には至りませんでした
っunixtime
97 :
91 :2012/01/23(月) 19:23:42.04 ID:NlIjtP0L
>>94 ありがとうございます
PHP 5.4 では、5〜6 バイト表現を mbstring 系でブロック出来るようですが
PHP 5.3 では、htmlspecialchars を使うしかないのでしょうか
1、DBには日付型で入れてSQLで三日経過の判別 2、dbにタイムスタンプtime()でいれて、 現在時刻のタイムスタンプから3日前の値より小さかったら消す。 time() - 3 * 24 * 60 *60 な
100 :
91 :2012/01/23(月) 20:12:10.22 ID:NlIjtP0L
>>99 htmlspecialchars と htmlspecialchars_decode を通すことにします
ありがとうございました
101 :
nobodyさん :2012/01/23(月) 21:08:58.00 ID:FIQlOImm
PHPでページの出力するとき、関数やメソッドにechoやプリントを仕込んでおいて それを呼ぶことで出力する方法と、直接埋め込み式で書き連ねていく方法が あると思うのですが、どのようにするのがよいのでしょうか? 内容はfor文やメソッド呼び出しがこまめに使われてて150行ぐらいです インクルードファイルまで見ないといけないということを考えると、 やはり多少複雑になってもそのまま直に書くのが望ましいのでしょうか?
102 :
nobodyさん :2012/01/23(月) 21:16:13.86 ID:HJ0fqWO2
こういう書き方があることを今日知ったんですが、問題ないですよね? <?php $a = 2; if ( $a == 1 ) { ?> hogehoge<br /> <?php } else { die(); } ?>
>>101 スタイルは人それぞれだからなんとも言えない
好きなようにせい
書いてるうちにだんだん変移してそのうち自分にぴったりな方法が見つかるさ
俺も最初はスクリプトに<<<EOF〜EOF;ってかんじに書いてたが
今じゃ全部テンプレートよ
>>103 ありがとうございます何かよい方法を考えてみます
106 :
nobodyさん :2012/01/23(月) 23:02:15.95 ID:HJ0fqWO2
>>104 ありがとうございます。
コードは汚いけど便利です。
HTMLの文法チェックも働くし。
107 :
nobodyさん :2012/01/24(火) 15:34:10.51 ID:ZLZzoB2p
ファイルの更新内容をリアルタイムに監視するにはどうすればいいですか? たとえば、アパッチのログファイルを常に読み込み(監視)して、変更があればクライアントに伝えたいです。
嫌がらせとしか思えないw
環境依存にしたくないのなら、定期的にファイルが更新されていないか見に行く
クライアントにはどうやって伝えるんだ
apacheログの内容をリアルタイムでクライアントに伝えて何がしたいん
112 :
nobodyさん :2012/01/24(火) 19:40:41.93 ID:QFJ8TOos
楽しんご「ああっぁぁあぁぁっっ!!たのチンポおおおぉぉぉおお!!!」
113 :
nobodyさん :2012/01/24(火) 19:40:57.76 ID:QFJ8TOos
間違えました
>>107 監視用のデーモン作れば?
PHPで作るよりベターな方法があるだろうけど
ajaxはありえない
jaxa
はやぶさ
phpからシェルスクリプト叩けばなんとかなるかもよ。
121 :
nobodyさん :2012/01/25(水) 02:14:37.08 ID:ElXWLH0v
$s = 'foo'; で、$s[0]と呼び出すと'f'が返りますが これは比較的新しいバージョンでの対応でしょうか。 以前はこうは書けなかったような記憶もあり・・
122 :
121 :2012/01/25(水) 02:36:53.81 ID:ElXWLH0v
そうすると君の記憶はいったい・・・!?
124 :
nobodyさん :2012/01/25(水) 15:48:03.14 ID:e1p5NWxB
$pid = getmypid(); が1の値になることってありますか? pid1はUNIXでは特別な番号らしいのですがLINUX上のPHPでも getmypid()は1にはならないですか?
1はinit でもそれを聞いてどうすんだ
126 :
nobodyさん :2012/01/25(水) 16:15:08.29 ID:e1p5NWxB
処理前→0 処理後→1 で処理前から処理後までの一時的な番号をpidで付与しようと思ってまして 確認させてもらいました。
127 :
nobodyさん :2012/01/25(水) 17:54:45.67 ID:vhcdno6F
PHPを勉強しようと思い、ApacheとPHPをインストールしようとしている初心者です。 インストールしている途中で問題が発生し、先に進めなくなってしまいました。どなたかアドバイスをお願いいたします。 PHPに関しては、PATHの設定をするところまでは終わっています。 Apacheに関しては、単独で動かせばルートディレクトリが正常に表示される状態です。 ここで、Apacheのhttpd.confにPHPのphp.iniのディレクトリを指定し、 Apacheを起動しようとすると以下のメッセージが表示され、Apacheが起動しません。 Invalid command 'PHPIniDir', perhaps misspelled or defined by a module not included in the server configuration php.iniの記述内容は、php.ini-developmentのデフォルトの内容のままです。 ApacheとPHPそれぞれのインストールしたバージョンは以下の通りです。 Apache 2.2.21 PHP 5.3.9 どうかよろしくお願いいたします。
>>127 とりあえずエラーメッセージを機械翻訳するところから始めようか
> Invalid command 'PHPIniDir', perhaps misspelled or defined by a module not included in the server configuration
ミススペルしてね?もしくはモジュール読み込めてなくね?
129 :
127 :2012/01/25(水) 18:15:05.58 ID:vhcdno6F
>>128 モジュールの追加をしていないことが原因でした。
これからは、エラーメッセージをしっかり読みます。
どうもありがとうございました。
勉強しようと思ってるのに何故エラーメッセージすら読まないのか理解に苦しむ 本に書いてある手順をトレースするのが勉強か?
>>130 初心者は、人が読んでも意味が無い物だと思ったりするもんだよ
そういう事だな 自分で調べて解決でき始めたらもう初心者じゃねぇ
掲示板などで書きこまれたコメントの数を先頭に表示させたいんですが 後ろで宣言した変数を前に表示させることってできますか?
日本語でおk
前もって数えて、先に出力するか あとに出力したいものを、あとで出力するようにするか 出力処理を後半にまとめる <?php いろいろ処理 ?> いろいろ出力 <?php echo $コメントの数 ?> いろいろ出力
たとえば <p>コメント数(<?php echo $x; ?>)</p> <?php // 掲示板のプログラム $x // コメント数の変数 ?> ってのがあったときプログラムの下で宣言している変数を上で使いたい場合ってどうすればいいのかなと htmlのなかにphpを書いてると思ってください
>>135 やっぱりそうするしかないんですかね
コメント数をwhile文のなかに入れて数えているんですが
処理を分けると2回同じ事をしなくてはならないので冗長な感じがします
>>137 whileのなかで数えつつ、カウント以外の出力データを変数にためていけばいいよ。
while
カウント
出力データ作成(追加)
カウント出力
出力データ出力
おめでとう。
とりあえずスレタイは読もうな
142 :
nobodyさん :2012/01/26(木) 03:48:43.25 ID:LhppUY8R
DOMやsimpleXMLElementのオブジェクトの階層が簡単に分かる方法ってないの? var_dumpしたオブジェクトと生xml(html)ソースを見比べて目的の要素までのパスを探してるけど、 めっちゃ面倒くさいわ var_dumpしたときに->もついてればいいのに
あるけど質問者として態度はわきまえような
分かんないならレスしないでくれる?
145 :
nobodyさん :2012/01/26(木) 04:02:43.02 ID:ZvFchlGT
凄い初歩的な質問だと思うのですが、 $string = 'あ'; // utf-8 if ($string == 0xe38182) { } これがtrueにならないのは何故でしょうか?
文字コード値型ではなく文字列型だから
慇懃な質問でもこの程度か
慇懃?どこがだ。最低限だろ。
他人に最低限を求めるならお前の最低限の口のききかたしろよ
php.net繋がる? 今朝から海外(たぶんアメリカ)の鯖に繋がらないんだが・・・
余裕で繋がる
トンクス ということはOCNの経路障害か
>>145 if ($string == "\xe3\x81\x82") {
155 :
nobodyさん :2012/01/26(木) 13:33:32.38 ID:S/vWMEY8
セッションIDが重複する事はあり得るのでしょうか?
mb_convert_kana は他のマルチバイトを扱うもの同様に mbstringが入っていないと使えないということでしょうか?
発行するセッションが0-9の一桁なら11人同時に使ったら重複だな
159 :
nobodyさん :2012/01/26(木) 16:23:22.22 ID:tvfPoK0+
test
apache2.2.21 php ver 5.3.8 os xp 教えてください。 $str には文字列が入っています 下の 'あいうえお' のところに $strの文字列をいれたいのですが どうしたらいいでしょうか? '$str' といれても 文字列ではなく $strが入ってしまいます。 $ex->abc = 'あいうえお';
162 :
nobodyさん :2012/01/26(木) 16:42:52.94 ID:tvfPoK0+
apache2.2.21 php ver 5.3.8 os xp 教えてください。 $str には文字列が入っています 下の 'あいうえお' のところに $strの文字列をいれたいのですが どうしたらいいでしょうか? '$str' といれても 文字列ではなく $strが入ってしまいます。 $ex->abc = 'あいうえお';
変数が文字列中に展開されるためには シングルクオテーションではなくダブルクオーテーションを使わないといけない
165 :
nobodyさん :2012/01/26(木) 17:11:57.96 ID:9mO7LzsI
PHPからデーモンを起動することは出来ますか? コマンドでは php deamon.php となりますが、これをPHPプログラムから起動したいです。 その時にクライアントにデーモンを起動したことを伝えたいので、起動後にPHPプログラムの方は終了させたいです。
166 :
nobodyさん :2012/01/26(木) 17:39:32.93 ID:+EnTjdmH
cURL_multiのマニュアルのコードについて質問させてください $active = null; // ハンドルを実行します do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } 上記のように書かれていますが、挙動が理解できません 何故全く同じdo~whileを2回も行わなければいけないのでしょうか? $mrcをvar_dump()などしてみたのですが、追えませんでした while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { が何をしているのかも分かりませんでした
>>164 単に入れたいだけなら
$ex->abc = $str;
>>165 exec('php daemon.php &')
でもすればいいんじゃない?
>>166 multiの実行完了とサブ接続の実行完了の違いじゃない?
170 :
nobodyさん :2012/01/26(木) 21:05:45.47 ID:KeppCWac
mb_convert_variablesで文字コードを変換できません。 mb_convert_encodingだとなぜかうまくいきます。 この2つの関数って同じ挙動にならないもんなんでしょうか? $s="ああああ"; mb_convert_variables('EUC-JP','UTF-8',$s); print $s; $s="ああああ"; $s=mb_convert_encoding($s, 'EUC-JP','UTF-8'); print $s;
<?php $ip = gethostbyname("ドメイン"); if($fp = @fsockopen($ip, 5121,$un,$sinn,2)) { echo("Map:<font color="#00DD00">online</font>"); fclose($fp); } else { echo("Map:<font color="#DD0000">offline</font>"); } if($fp = @fsockopen($ip, 6121,$un,$sinn,2)) { echo(" Char:<font color="#00DD00">online</font>"); fclose($fp); } else { echo(" Char:<font color="#DD0000">offline</font>"); } if($fp = @fsockopen($ip, 6900,$un,$sinn,2)) { echo(" Login:<font color="#00DD00">online</font>n"); fclose($fp); } else { echo(" Login:<font color="#DD0000">offline</font>n"); } ?> 複数のサーバーのオンライン状況をチェックできる鯖ステを作りたいのですが、このソースじゃダメみたいで エラーが出てしまいます。 Parse error: syntax error, unexpected T_STRING in : eval()’d code on line 5
>>171 鯖ステってなんですか?
MRTGじゃだめなの?
>>171 マジレスわすれてた。
> echo("Map:<font color="#00DD00">online</font>");
エスケープしてないから。
174 :
nobodyさん :2012/01/26(木) 22:10:24.57 ID:Rab6N0OA
どこをどうエスケープすればいいのでしょうか
ガンホーに通報しますた
自分の鯖ならいいけどこれって他所様の鯖でしょ ポートから察するにラグナロクオンラインみたいだけど DOS攻撃もいいところだわ 自分の鯖だったらエミュ鯖だろうからそれはそれで問題だけどな
ゴミクズどもぶっ殺すぞ
181 :
170 :2012/01/26(木) 22:43:39.42 ID:KeppCWac
>>180 まったく変換されてないです。
$s="ああああ";
print $s;
と同じ結果になります。
あ、実際$sの中身はsimplexml_load_file($url)でRSSから持ってきた文字列です。
これ、なんか関係ありますかねぇ?
再現するコードを出せ 嘘書くな
>>181 下のはいいというのはよくわからないけど、RSSの文字だと、そもそも文字コードの変換が
出来ないような文字かもしれないよ。
変換前のとかを、ソースでみてみ。
184 :
170 :2012/01/26(木) 23:04:19.58 ID:KeppCWac
>>184 まず問題を切り分けなよ。
関数の問題なのか、RSSから持ってきた文字列の問題なのか
DOSどうこうというより エミュ鯖は犯罪だから
DOS攻撃も犯罪ですから
通報した
やべーな 今著作権に厳しいからな。
191 :
忍法帖【Lv=5,xxxP】 :2012/01/27(金) 01:00:20.03 ID:nAJWCuso
ネットでphpファイルを書くと文法の間違いとか括弧閉じ忘れとかを指摘してくれるサイト/ツールってないかな
おとなしくIDE使え
はい
なんだかんだROって浸透してるなぁ
@ head 部に記述された jQuery の $(document).ready(function(){ 〜 }); でCSSを弄ってimg要素に加工をするコードと、
と、
A body 部に記述された php のechoで吐かれた <img src='
http://graph.facebook.com/ ".$prof_img_facebook."/picture?type=large' width='".$prof_img_size."'> のコード
(facebook APIを使ってfacebookのプロフ画像ととってくるコード)
ってどっちのが先に実行されますか?
困ってます。。。どなたか詳しい人いましたら教えて下さいm(_ _)m
readyがいつ実行されるのかを調べるが吉
197 :
170 :2012/01/27(金) 05:49:06.74 ID:GnO4EGnm
上で文字列っつってたのも嘘かよ
199 :
nobodyさん :2012/01/27(金) 17:28:49.70 ID:ydVf8Xd1
PHPで登場する「 -> 」とは、どういう意味かネットで検索しようとしたのですが、 「 PHP -> 」のキーワードでは検索プログラムの何かの記号と混同してしまうのか まったく意中の結果を得られませんでした 「 -> 」の意味を教えてください ちなみに、こういった場合どういうキーワードで検索するのが 正解なのか教えて頂けると、とても嬉しいです
アロー演算子です。 マニュアルに一通り目を通すといいよ。
PHPってUnicodeでの正規表現書けますか? preg_match('/[\u4e00-\u9fa5]/', ...) といった記述がしたいのですが、マニュアルに\uのオプションが見つかりませんでした。 もしない場合は、utf-8とかに変換してからチェックするしかないのでしょうか。
>>198 正確にはオブジェクトの中の配列の中の文字列?
文字列と言えば文字列なわけで。普通にprintできるし。
205 :
nobodyさん :2012/01/28(土) 01:26:13.34 ID:GUwt9u3U
$_SERVER['REMOTE_ADDR']を表示したら「::1」となります。 ローカル環境でXAMPP上で開発しているのですが、 どうしたら「127.0.0.1」のように表示できるのでしょうか?
>>205 XAMPP IPv6 でググってみましたか
初心者はXAMPP使うな
>>205 apacheのhttpd.confをテキストエディタで開いて、
「Listen 80」をコメントアウトし、
Listen 0.0.0.0:80を有効にしてください
テスト
複数のURLのソースをいっぺんに取得する方法ってありますか? foreach($RSS_data as $value){ $URL[]=$value->URL; } for ($i = 0, $n = count($URL); $i < $n; $i++) { echo $URL[$i] . "<br />"; } これで欲しいURLの一覧は出せるのですが、それぞれのページのHTMLソースが欲しいです。
file_get_contents()使えよ捗るぞ
>>210 file_get_contents()使えよ捗るぞ
214 :
210 :2012/01/29(日) 14:24:05.99 ID:axP+ilea
>>213 file_get_contentsってループでも使えたんですね
ありがとうございます。
ループで使えない関数とか謎
オープン/クローズが必要なの物をクローズせずにループで使って 痛い目にあったんじゃないかと想像w
fopenを1回だけ、fgetsをループの中でやろうとしたとかそんなんじゃない?
Accept-Encoding defaultにしとかないとバイナリが送られてくるからな最近は gzip対応とか面倒だよな
219 :
nobodyさん :2012/01/29(日) 15:54:40.03 ID:eROgtd9q
分散トランザクション機能つきのアプリケーションサーバーには どのようなものがありますか?
221 :
nobodyさん :2012/01/29(日) 17:56:53.21 ID:eROgtd9q
>>219 分散トランザクション機能を実装したプログラムを置いてやれば
どんなサーバOSでもいいじゃね
話がかみ合ってない、聞くとこ間違えてない?
224 :
nobodyさん :2012/01/29(日) 20:27:41.75 ID:eROgtd9q
>>222 phpの仮想マシーンレベルではサポートされていないのでしょうか?
トランザクションってなんですか?
虎のくしゃみです
たぶんガンダムに出てくるモビルスーツのことだ
マイケルジャクソンみたいなもんだ
phpのバージョンアップってなんで頻繁なんですか?
>>230 おまえも早くバージョンアップしないと世の中についていけないぞ
>>231 バージョンアップすると劇的に変わるもんでしょうか?
生き残ることができるのは変化できる者だけらしいよ 完成は死を意味する
>>230 PHPのバージョンアップは単なるバグフィックスだよ。
人間は死んではじめて完成するんだね
また分散アプリケーションサーバ厨か
238 :
nobodyさん :2012/01/30(月) 00:03:38.66 ID:XqkYh1fq
>>237 phpでFacebookを作る方法を教えて下さい。
>>238 あいつら特許とったからパクらないほうがいいよ
>>239 facebookはphpで作られているのですか?
Facebookは欲望と創造性、人間の夢のようなモノで作られている
>>241 拡張子はphpですが、実際は別の言語で作られているのでしょうか?
245 :
nobodyさん :2012/01/30(月) 07:50:54.83 ID:Tb4TsYt/
PHPでメール送信スクリプトを書いています。 ファイルを添付して送信したいのですが、既存ファイルを指定するのではなく、 動的に生成して添付したいのですが、メモリ上にファイル(に相当するもの?)を作成するには どうすればいいんでしょうか。 一時ファイルを保存=>添付してメール送信=>ファイル削除、の流れも考えられますが ディスクに保存しないやり方があれば知りたいです。
246 :
245 :2012/01/30(月) 08:01:45.99 ID:Tb4TsYt/
247 :
nobodyさん :2012/01/30(月) 08:35:17.19 ID:S8XrH54p
PHP(linux+apache上)でチャットを作ろうと思うのですが、 ブラウザに数秒毎にリフレッシュさせるか、Comet方式で作るか迷っています。 cometは同時接続数が多くなってサーバに繋がらない状況になったりしないか心配してるのですが 不特定多数がチャットを使用するとしか見積もれない場合は数秒毎リフレッシュのほうがいいのでしょうか?
客の要望と、機器スペックとかの話。 PHP関係ないので、自分で決めて。
失礼しました。 他のところで相談してきます。
>>247 まずHTML5のWebSocketsで作る。
PHPのチャットは遅すぎてありえない。
EventSourceでもいいと思うよ
253 :
nobodyさん :2012/01/31(火) 08:06:53.36 ID:dTfxPGSX
Cのstaticと同じように関数で2度目に呼ばれた時に値を保持できる方法ってありませんか? グローバル以外で><
255 :
nobodyさん :2012/01/31(火) 08:13:12.55 ID:dTfxPGSX
257 :
nobodyさん :2012/01/31(火) 08:26:37.17 ID:dTfxPGSX
258 :
nobodyさん :2012/01/31(火) 13:02:51.47 ID:6KRZikfh
ttp://www.vector.co.jp/soft/unix/net/se334908.html ごちゃまぜRSSリーダーforPHP -ver1.3
を、さくらのレンタルサーバーで動かしています。
このごちゃまぜリーダーでは件数指定と日付表示が無かったので
★〜★の欄を追加して日付表示と件数指定をしています
<?php
require_once 'phplib/main.inc';
$rss = sox_fetch_rss();
while ( ★$i <=19 and ★ list($k,$v) = each($rss)) {
$p_title = $v->getMainTitle();
$url = $v->getURL();
$title = $v->getTitle();
★$item = $v->getDate();;
$item = strtotime($item);
$itemday = date('Y-m-d H:i:s',$item); //2009-04-24 22:25:34★
echo "<li><a href=\"$url\"><h1>$title</h1><p>$p_title</p><p>★$itemday★</p></a></li>\n";
★$i++;★
}
?>
この場合、件数指定表示もうまくいき RSSの日付表示も行われるのですが
日付はRSS1.0のものしか表示されず RSS2.0(主にアメブロ)のものは 1970-01-01 等を統一表示されてしまいます。
getDate()が関連してると思い、main.inc内を見てみたところ
function getDate(){
return $this->item['dc']['date'];
}
の部分が関連してるのがわかりました。 dc dateはRSS1.0の場合でRSS2.0はpubdateでないといけないようです。
この場合、RSSの種類によって適切に日付情報をgetするにはどうしたらよいでしょうか?
>pubdateでないといけない PHPと関係ないけどそんなこたぁない pubDateでもいいがdc:dateでもいい $this->item['dc']['date'];が1970-01-01のものに対しては pubdateを取得できるか調べてあれば取得なければ1970-01-01を返す という処理を書けばいいんじゃねえの
260 :
nobodyさん :2012/01/31(火) 15:54:23.45 ID:6KRZikfh
>>239 そのif文の構築方法がわからないんです。
main.incの
function getDate(){
return $this->item['dc']['date'];
}
おそらくここで if 条件文を入れると思うのですが
何を基準に pubdateがあるか・無いかの入れ子を入れるのかがサッパリで
dcdate pubdate 日付 等の単語を入れて構文を一通り見たのですが
ごちゃまぜRSSリーダーに添ったのがなかったのでこちらへ質問投下しました。
一応別の解決策としてRSS2.0のものはRSS1.0で読み込むようにする という手法をとって
2.0を全部排除する事で日付の不正表示は解決しています。
おまえなそれ丸投げじゃないか 改造スレはスレチ
263 :
nobodyさん :2012/01/31(火) 17:08:59.31 ID:jn5j2DcL
JAVAアプレットのようにWEB上で自分のウィンドウを持って、 プログラムを起動して、その中でリアルタイムに他のユーザーやサーバーと メッセージのやりとりや対戦をしたいのですが、どのような言語や仕組みが 最適でしょうか? 一部にFLASHを使うのはありですが、なるべくJAVA系を使う方向が助かります ただし、今回はJAVAアプレットはいまいち古いという理由で使えないです
スレタイ
【】の中は副題みたいで見落としちゃう事はよくある
副題もちゃんと読めよ
>>263 Flashをviewにして内部はJavaでよいのでは?
BlazeDSでFlexとJavaで連携させたら簡単だよ。
てすと
ごめんまちがえたm(_ _)m
>>264-266 すみません、PHPの部分に気づいていませんでした
該当スレのほうに移動します
>>267 ありがとうございます
少し調べてみると、かなりいい感じだったのでよく調べて検討してみようと思います
誰かOSQA使ってまとめサイト作ってくれませんか? 質問も回答もOpenIDで編集できるんで適してると思うんですが
>>273 誰か、じゃなくてお前が作れ。
言い訳はいいから、早く作れ。
作る直前まで言ったんだけどpythonは無理でした
誰か作って
osqaって何?
280 :
nobodyさん :2012/02/01(水) 11:16:30.88 ID:IMdwWgiD
相談させてください $person= array("のび太","ジャイアン","スネ夫"); $music = array("ハーモニカ","太鼓","バイオリン"); $fruits = ("みかん","りんご","メロン"); こういう配列に、「のび太、、バナナ(変更)」とか「しずか、ピアノ、いちご(追加)」 「スネ夫、引越(削除)」というデータを受け取って更新しようと思います。 それで自分の考えた処理の流れは間違っている感じがするのですが、 どうしたらいいのでしょうか。 つづく
281 :
nobodyさん :2012/02/01(水) 11:17:38.56 ID:IMdwWgiD
$shori = ""; $person2 = array(); $music2 = array(); $fruits2 = array(); //初期化 for ( $i = 0; $i < count($person); $i++ ){ if ( $person[$i] === $_POST["person"] ){ // すでに登録があるとき if ( $_POST["hikkoshi"] == 1 ){ // 削除 (配列に入れない) $shori = $person[$i] . "を削除しました"; } else { // 変更 array_push($person2, $person[$i]); array_push($music2, $_POST["music"]); array_push($fruits2, $_POST["fruits"]); $shori = $person[$i] . "を変更しました"; } } else { // 新規 array_push($person2, $_POST["person"]); array_push($music2, $_POST["music"]); array_push($fruits2, $_POST["fruits"]); $shori = $person[$i] . "を追加しました"; } } $person = $person2; $music = $music2; $fruits = $fruits2; echo $shori; つづく
282 :
nobodyさん :2012/02/01(水) 11:19:36.40 ID:IMdwWgiD
※ これだと、「ジャイ子、引越し」が来たとき(配列にない人物登場) エラーをだせない。 ※ そもそもforループを、配列の人数の数で回したら、新規の人(現在の 人数プラス1)のときに、ループを脱出してしまう? 考えているうちにどんどんわからなくなってしまって・・・。よろしくお願いします。
if ( isset( $person[ $_POST["person"] ] ) { //あるとき } else { //ないとき }
284 :
nobodyさん :2012/02/01(水) 11:38:34.36 ID:IMdwWgiD
>>283 ありがとうございます。
でも、if ( isset( $person[ $_POST["person"] ] ) で調べたら、全部
あるとき になりそう。
285 :
nobodyさん :2012/02/01(水) 11:40:42.09 ID:IMdwWgiD
あっ、間違えました。 配列 person の中に、$_POST["person"] があるかどうかを 調べてるんですね。
286 :
nobodyさん :2012/02/01(水) 11:49:25.84 ID:IMdwWgiD
if ( isset( $person[ $_POST["person"] ] ) { if( 引越し ){ 配列に入れない } else { 配列にいれる } } else { if( 引越し ){ エラー } else { 追加 } } こんな感じでいいんでしょうか。
何をしたいのかが正確にはこちらには分からないので まずやってみればいいんじゃないでしょうか。
288 :
nobodyさん :2012/02/01(水) 12:07:53.27 ID:IMdwWgiD
>>287 そうですね。似た処理を繰り返してしまうようですが、やってみます。
ありがとうございました。
290 :
nobodyさん :2012/02/01(水) 14:22:33.02 ID:0PT+5Q34
クラスの書き方について質問です 以下のtest1のようなクラスの書き方を今までしてきたのですが、 偉い人の書いたクラスやここ最近のフレームワークなんかのクラスを 眺めているとtest2のような書き方をよく目にするんですがどう言った ご利益があるんでしょうか? class test1{ function __construct($str="") { self::test1($str); } function test1($str){ echo $str."\n"; } } new test1("hoge"); class test2{ function __construct($str="") { echo $str."\n"; } function gc($str){ return new test2($str); } } test2::gc("hage");
例がおかしいが雰囲気から察するにたぶんシングルトンだろ デザインパターン入門本でもあさるといい
292 :
280 :2012/02/01(水) 15:27:21.00 ID:IMdwWgiD
>>289 array_searchという関数もあるんですね。
もしこれを使うとしたら、こんな感じになるのでしょうか。すごくすっきり!
ありがとうございます。(動くかどうか、これからやってみます。)
293 :
280 :2012/02/01(水) 15:29:02.25 ID:IMdwWgiD
if( 引越し ){ $key = array_search( $_POST["person"] , $person ); if( $key ){ unset ( person[$key] ); unset ( music[$key] ); unset ( fruits[$key] ); $shori = $_POST["person"] . "は、引越ししました"; } else { die( "そんな人はいません" ); } } if ( isset( $person[ $_POST["person"] ] ) { //あるとき $key = array_search( $_POST["person"] , $person ); $music[$key] = $_POST["music"]; $fruits[$key] = $_POST["fruits"]; $shori = $_POST["person"] . "を変更しました"; } else { //ないとき array_push( $person, $_POST["person"] ); array_push( $music, $_POST["music"] ); array_push( $fruits, $_POST["fruits"] ); $shori = $_POST["person"] . "を追加しました"; } echo $shori;
どうせ遅かれ早かれDB使うことになるんだろうし、そっち覚えたほうが早そうだな
295 :
nobodyさん :2012/02/01(水) 15:52:50.73 ID:0PT+5Q34
>291 デザインパターンのシングルトンって言うんですね 調べてみます。ありがとうございました。
296 :
動きました! :2012/02/01(水) 16:08:24.79 ID:IMdwWgiD
if($_POST["hikkoshi"] == 1 ){ $key = array_search( $_POST["person"] , $person ); if( $key ){ unset ( $person[$key] ); unset ( $music[$key] ); unset ( $fruits[$key] ); $shori = $_POST["person"] . "は、引越ししました"; } else { die( "そんな人はいません" ); } } else { if (array_search( $_POST["person"] , $person)) { //あるとき $key = array_search( $_POST["person"] , $person ); if($_POST["music"]) { $music[$key] = $_POST["music"];} if($_POST["fruits"]) { $fruits[$key] = $_POST["fruits"];} $shori = $_POST["person"] . "を変更しました"; } else { //ないとき array_push( $person, $_POST["person"] ); array_push( $music, $_POST["music"] ); array_push( $fruits, $_POST["fruits"] ); $shori = $_POST["person"] . "を追加しました"; } } echo $shori."<hr>"; for ($i=0; $i<count($person);$i++){ echo $person[$i]." は ".$music[$i]." を嗜み ".$fruits[$i]." がスキです<br>"; }
297 :
280 :2012/02/01(水) 16:09:34.76 ID:IMdwWgiD
無事希望通りに動くようになりました。
>>293 ではポロポロミスがあったので、動いたものを貼っておきます。
ありがとうございました。
298 :
ああ、タブが orz 書き直しました :2012/02/01(水) 16:12:44.52 ID:IMdwWgiD
if($_POST["hikkoshi"] == 1 ){ $key = array_search( $_POST["person"] , $person ); if( $key ){ unset ( $person[$key] ); unset ( $music[$key] ); unset ( $fruits[$key] ); $shori = $_POST["person"] . "は、引越ししました"; } else { die( "そんな人はいません" ); } } else { if (array_search( $_POST["person"] , $person)) { //あるとき $key = array_search( $_POST["person"] , $person ); if($_POST["music"]) { $music[$key] = $_POST["music"];} if($_POST["fruits"]) { $fruits[$key] = $_POST["fruits"];} $shori = $_POST["person"] . "を変更しました"; } else { //ないとき array_push( $person, $_POST["person"] ); array_push( $music, $_POST["music"] ); array_push( $fruits, $_POST["fruits"] ); $shori = $_POST["person"] . "を追加しました"; } } echo $shori."<hr>"; for ($i=0; $i<count($person);$i++){ echo $person[$i]." は ".$music[$i]." を嗜み ".$fruits[$i]." がスキです<br>"; }
$name=array("music","fruits","shori"); $key = array_search( $_POST["person"] , $person ); if(引越し){ if($key)foreach($name as $val)unset($$name[$key]) else die("そんな人はいません"); $shori=$_POST["person"]."は、引っ越しました"; } if($key)foreach($name as $val)$$val[$key]=$_POST[$val]; else foreach($name as $val)$$val[]=$_POST[$val]; $shori=$_POST["person"]."を".($key)?"変更":"追加"."しました"; edho $shori; 俺が書くならこんな感じかな 特別に書いたわけじゃなくて普段からこんな感じで
上から4行目はunset($$name[$key]) じゃなくてunset($$val[$key])か
普段からキーを活用しないし、すぐエンバグするのか
シングルトンはphpでは意義は少ないよ。公式サイトにも書いてるやん。今、php向けのデザインパターン本てあるのかな?
意義が少ないからとか多いからという理由でやるやらないを決めるの?
>>299 だけど、じゃぁ誰か書いてみてくれよwwwww
デザインパターンはphpに限定して考えるべき。間違ってもネット上にあふれているJavaの情報に頼らないこと。
参考もだめかな? 理由を教えてくれると嬉しいです。
>>305 要件的に名前がユニークっぽいし、後続のコードもそれが前提みたいだから
$arr['のびた'] = array('music' => '鼻歌', 'fruits' => 'きんつば');
って入れといたほうが楽じゃね?ってことなんだけど。
>>305 ifの括弧省略するなってことなんだけど
スペースがなくて読みづらいところ大杉ってことなんだけど
日本語を変数名に使うなってことなんだけど
コーディング規約も知らんレベルかw
このスレのコーディング規約ってあんの?
なんでもいいし初心者なんだし
初心者なら仕方がない
315 :
nobodyさん :2012/02/01(水) 20:49:20.80 ID:q9L1uqO/
localhost にて「Notice: Undefined index: submit in 〜」だらけで困っています なんとか消えるようにしたいのですが、とりあえず一番最初の部分を挙げると // $csv_dir = './'; $csv_file_name = 'data.csv'; $disp_size = 100; $item_index = 'ID,Name,URL,Data'; $csv_file_name = $csv_dir. $csv_file_name; if ($_REQUEST['submit'] == "add_exec") {$msg = AddNewData($csv_file_name);} elseif ($_REQUEST['submit'] == "edit_exec") {$msg = Editdata($csv_file_name, $item_index);} elseif ($_REQUEST['submit'] == "delete") {$msg = DeleteData($csv_file_name, $item_index);} elseif ($_REQUEST['submit'] == "direct_edit_exec") {$msg = DirectEditdata($csv_file_name);} elseif ($_REQUEST['submit'] == "backup") {$msg = BackupData($csv_file_name, $csv_dir);} $data = file($csv_file_name); $index = 0; $all_size = sizeof($data); if (sizeof($data) > $disp_size) { $index = floor(sizeof($data) / $disp_size); } if ($item_index) { $data = array_reverse($data); array_push($data, $item_index . "\n"); $data = array_reverse($data); } らへんがダメっていってるみたいです よろしくお願いします
>>314 コードが汚い読めないって言うのも初心者だよな
>>315 リクエストパラメータにsubmitってキーがあるかどうか調べてから処理をするようにする。
PHP本体の組み込み関数ですらコーディング規約が守られてないのにw
>>315 error_reporting(0);
を最初につける
320 :
315 :2012/02/01(水) 21:13:18.96 ID:q9L1uqO/
>>317 ありがとうございます
>>319 ありがとうございます
今はこれで十分です
ありがとうございました
今度はエラーも出ずに処理がとまるんです、と嘆くんだな
phpのコードは汚い
俺の気に入らないレスは全部同一人物()
読みやすい読みにくいしか言わずに、質問に回答すらしない態度を非難した。
と思ったけど、回答待ちの質問者かもしれないか
>>308 配列の要素の中にも配列をいれられるの?知らなかったー。
>>308 のきんつばをとりだすときにはどうするの?
$arr['のびた']['fruits']
>>329 もしかして、これが二次元配列?っていうやつ?ちょっとぐぐってくるー。
またドラエもんかよ ったく
きんつばってフルーツなの?和菓子じゃないの?
ついにそのツッコミが
PHPバージョン5.2.17、EasyBotterを使ってbot作成中です 一通りの基礎はできたので時間分けをしようとしたところでハマりました //基本のポスト構造 if(date("i") <= 3){ $response = $eb->postRandom("data.php"); } $response = $eb->reply(8,"reply.php","reply_pattern.php"); の上に、 //昼用ポスト構造 if(date("G") == 12) || (date("G") == 13) || (date("G") == 14) else if(date("i") <= 3){ $response = $eb->postRandom("hiru_data.php"); } $response = $eb->reply(8,"hiru_reply.php","hiru_reply_pattern.php"); を置いてみたんだが、手動で実行すると500エラーが出ます 昼用ポスト構造を削除して、基本ポスト構造のみにすると、手動でもCronからでも動くのですが 他のif構造を作って置いても、やはり置いた時点で駄目 そろそろ心が折れそうですorz 誰か助けて…
335 :
nobodyさん :2012/02/02(木) 14:05:09.37 ID:F8NQ2fKh
失礼、sageにチェックが入ってた
・一通り基礎ができていない ・サポセンじゃないのよ非標準ライブラリは作者にお聞き
if (date("G") == 12 || date("G") == 13 || date("G") == 14)
338 :
nobodyさん :2012/02/02(木) 14:35:54.74 ID:F8NQ2fKh
>>336 すまん、マジモンの初心者なんだ
もう少しここで勉強させて
>>337 コピペで修正してみましたが同じ結果でした
何が原因なんだろう…
>>338 何はともあれエラーが見られるようになってなきゃ話にならん
レンタルサーバーでやってるならエラーログについて問い合わせる
>>339 わかった、ありがとう
サーバーに問い合わせて、もう少しがんばってみるよ
またお世話になるかもしれないので、そのときはよろしくお願いします
341 :
nobodyさん :2012/02/02(木) 15:13:11.77 ID:F8NQ2fKh
だからsageチェックは外せとあれほど… すまんかった
サーバに問い合わせるとか以前に レンサバで開発するなドアホウ
343 :
nobodyさん :2012/02/02(木) 19:25:40.59 ID:ZbQr3Kg2
http://www.ustream.tv/channel/livech2013 このお姉さんかわいい。
ひげのおっさんがphpをdisっている。
でも意味が分からない。
phpのバージョンでエラーがでるなら直せばいいし、
フレームワークも自社で決めればいいのに。
phpはごちゃごちゃしてわからないからrubyでというのはおかしくない?
もっといえばjavaでいいじゃん。と思ってしまうのだが、
たまたまこの人がrubyが好きだからじゃね。と思ってしまうのだが
344 :
nobodyさん :2012/02/02(木) 19:27:17.90 ID:ZbQr3Kg2
偉い人教えて。 僕の考え間違っている?
つうか実況スレじゃないしタイムリーなこと書いてもレスのしようがないわけだが ruby ヒゲ PHPでぃすってる といえばruby開発者の松本か? あいつはスルーしていい
名前空間って利用されてますか? あまり見かけませんが
IDだせって? いやだよ〜〜〜んm9(^Д^)
OSQAのまとめマダー?
時間の無駄 金の無駄
>>343 英語はわかりやすいです
スペイン語はわかりにくいのでダメな言語です
352 :
nobodyさん :2012/02/03(金) 03:55:18.51 ID:JJuGjQNC
児童ポルノ画像集めるためにphpで掲示板作ってた友人が、 受験勉強に集中するって言って掲示板を閉鎖しました。
353 :
nobodyさん :2012/02/03(金) 05:13:17.43 ID:q+s48ZyT
コードの後ろで宣言した変数をコードの前で使うことは可能ですか?
無理
355 :
330 :2012/02/03(金) 11:44:01.78 ID:QL2/ase/
昨日さんざん二次元配列いじってみたよ。便利ですね〜これ。
ついでに報告しますと、
>>298 で、
$key = array_search( $_POST["person"] , $person );
のところ、配列の0番目がPOSTされると、$keyが 0 になって、その次の
if文のelseの方にいっちゃいました (´・ω・`) で if( $key===FALSE ) みたいな
判定をすることにして、無事うまくうごきました。
みなさん、どうもありがとうございました!
356 :
nobodyさん :2012/02/03(金) 18:22:41.42 ID:yTXNQKBG
Macのutf-8って濁音と半濁音の扱いが違いますよね? ディレクトリに存在するファイルを検索している時に、濁音のファイルを探していると一致しません。 これを変換する関数ってありますか? (sjis-winのutf-8-macみたいな) <?php //UTF-8のスクリプト $file_name = ファイル名を取り出す関数(); if( $file_name == 'ダウンロード' ){ // OK }else{ // NG }
phpファイルをHTML文書にincludeするとき頭に変なゴミが付くの何なんだ?
362 :
nobodyさん :2012/02/03(金) 19:59:09.41 ID:yTXNQKBG
>>357 ありがとうございます。pearですか。
自分しか使わない場合はこれでいいんですが、配布のことを考えると微妙ですね。
>>360 ありがとうございます。しかし5.3以上なんですね。
pearでどうやってるか調べてみます。
無理そうなら5.3以上は正しく動作するという方向にします。
macクソだな
あ、ちなみにpeclなら5.2.0から使えるみたいよ
5.3でもデフォルトでオンじゃないし、PEARのファイル同梱しとけば
368 :
nobodyさん :2012/02/03(金) 22:13:55.66 ID:wKNTeG6h
はじめましてphp初心者です。 質問なのですがpostまたはgetでデータを送るときに、 データを送るファイルとデータを処理するファイルを別にすべきか否か悩んでいます。 つまり、 データ送る.html(php) と データ処理する.php か、 データ送る_処理する.php のどちらにすべきか(どちらが普通か)ということです。 宜しくお願いします。
>>368 どちらでも。開発しやすい方やメンテしやすい方を選びなされ。
>>369 やはりそこは好みの問題なんですかね。
私はファイル数が多いと嫌なので1ファイルで処理しようと思います。
ありがとうございます。
好みの問題じゃなくてメリット・デメリットの問題
初心者なんだからなんでもいいだろ はい次
なんでもよくないよ
374 :
nobodyさん :2012/02/04(土) 00:46:21.55 ID:1holxMJc
【OS名】CentOS(ロリポのやつ) 【PHPのバージョン】5.2 【連携ソフトウェア】なし phpで簡単にpost通信がしたくてphp post通信でググって出てきたのの1ページ目のはやったんですがデータが送られませんでした 以前ロリポで出来たので無理ではないと思いますがやり方をわすれてしまいました(たしかfile_get_contentsのだったはず)
375 :
nobodyさん :2012/02/04(土) 00:48:38.20 ID:1holxMJc
PHPって
378 :
nobodyさん :2012/02/04(土) 01:00:29.61 ID:1holxMJc
アスペだなこれは
自分の思考領域と他人の思考領域の区別が付かないんだろうな
くそわろた
383 :
nobodyさん :2012/02/04(土) 02:00:51.15 ID:U1eS11UE
>>363 Mac糞ですよ。
>>364-365 デフォルトONじゃないんならあんまり意味がないですね・・・
やっぱりpearがいいかもしれませんね・・・
>>366 あ、なるほど。確かにそれでもよさそうです。
ありがとうございます。
>>383 デフォルトONじゃないんならあんまり意味がないってなんで?
ruby使いはmac多いよね
アスペだなこれは
質問にならない質問されても答え用がない いくら煽っても答えは返って来ませんよ
PHP 時代遅れの言語
Even obsolete Japanese. so u japanes ban.
394 :
nobodyさん :2012/02/04(土) 21:54:40.60 ID:yD/6arhr
PHPとMySQLで掲示板を作ったのですが、セキュリティ対策で気を付ける事ってありますか? XSSとSQLインジェクションは対策済みです 興味本位でHPを作ってみたものの、ハッキングが怖いです
XSSとインジェクションがどういうものなのか説明してください
398 :
nobodyさん :2012/02/04(土) 22:37:23.06 ID:Eguip8rZ
クリップボードに出力させる方法ってあるのかな
ふと思ったんだがクラックってIDとかパスワードとか盗まないかぎり刑事事件にはならないのかな?
401 :
nobodyさん :2012/02/04(土) 23:43:07.68 ID:K4OjxyJF
>>400 盗んでも内容変えなければ大丈夫じゃない?
某図書館のサイトで蔵書データ調べて逮捕されたヤツいたな 立件されなかったけど1ヶ月くらい拘束されてたと思う
全然かんけいねーw
最近法改正だかなんかされたじゃん 不正アクセス禁止法かなんかで パスワードを入手しようと試みる行為を罰する規定を設けるって もしかしたらまだ立案段階かもしれないけどそんな話があったとだけ
IDパス盗まれるような奴らが国会で審議するのか バカのためにバカがつくるバカ基準の法律 The government of the baka, by the baka, and for the baka
で、お前らプログラミング歴何年なの?
>>402 元ネタ知ってるけど、ここまで話が変異するんだなw
410 :
nobodyさん :2012/02/05(日) 16:22:03.34 ID:i7H07Acw
【OS名】Linux系 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL GD2 【質問内容】 PCとスマホ用のサイトを作りました。 ここまでは全てUTF-8で書いています。 今度はガラケー用のサイトを初めて作ることになって、 Shift JISで入出力するらしいのですが、どのように作ればいいでしょうか。 ぐぐったらsmartyというのでやるのが簡単と書いてあるのがありますが、 経験がありません。他に適当な方法がありますか? 基本的に、全キャリア共通サイトとして書くつもりです。
UTF-8でおk
>>410 mb_convert_encodingかければいいという話ではなく?
>>410 文字コードに自信がない人はUTF-8使って下さい
SJISは潜在的なセキュリティリスクを孕んでるのでよくわからない人が使うのは危険です
ガラケーも今時UTF-8で問題ありません
414 :
nobodyさん :2012/02/05(日) 22:14:06.28 ID:i7H07Acw
>>411-413 ありがとうございます。
ひとまずUTF-8で書いて確認してみることにします。
携帯サイトの開発者さんって3キャリア分の端末と契約持ってるんですか?
ウィルコムとEMnetはどうしたらいいでしょうか。
415 :
nobodyさん :2012/02/05(日) 22:53:19.06 ID:xvPPfzP0
ちょっと古いauがなー
417 :
nobodyさん :2012/02/06(月) 00:37:45.04 ID:O5qz7xhM
419 :
nobodyさん :2012/02/06(月) 01:06:28.25 ID:O5qz7xhM
>>418 ありがとうございます。
よくわかってないんですが、最初からwordpress使えば
スマホ、携帯サイトも簡単にできちゃうんですかねえ?
420 :
nobodyさん :2012/02/06(月) 02:39:19.20 ID:poXN+WMF
PHPを実行しているサーバーがMacか、環境変数などから自動的に判断するいい方法ってありますか? Windowsは分かりやすいんですが、macとlinuxの切り分けが難しい。
422 :
nobodyさん :2012/02/06(月) 22:53:18.01 ID:C3dZcj35
最近PHP始めたんですが、Smartyってフレームワークはマニアックなんでしょうか?
質問にならない質問はご遠慮下さい
>>422 まじめ話アブノーマルだと個人的には思う
デザイナーとの仕事が分担できてない環境下だと
結局プログラマがHTMLに仕込んだりしてただただしんどいだけ
フレームワークじゃないよって突っ込むところじゃないのか?
【OS名】CentOS 【PHPのバージョン】6.0 【連携ソフトウェア】MySQL 【質問内容】 PHPからselect * INTO OUTFILE を行うと文字化けしてしまいます。 DBもスクリプトもUTF8で統一しているのですが、どのあたりから調査すればいいのか検討がつきません。 文字化け解消についてアドバイスいただけないでしょうか。
429 :
nobodyさん :2012/02/07(火) 23:53:37.99 ID:+mH02aFr
>>424 デザイナーさんとの仕事分担ってどんな感じなんですか?
現状、デザイナーさんがデザインして、ファイルをもらい、
自分がそこにPHPのコードを埋め込んでいく感じですが、
普通の現場だとどうしてるんですかね。
ようするにテンプレートが何かという質問だろそれ smartyスレにでもいけよ
スクリプト使えないデザイナーってなに?絵描きさんみたいなもんか
readfile()でダウンロードさせたいんですが うまくダウンロードするウィンドウがでるときと readfile()で読み込んだファイルの内容が出力されるときがあります どうしてこのようになるのかわかりません 説明不足だと思いますがエスパーの方いたらお願いします
gzipだから
>>432 header('Content-Type: application/octet-stream');
435 :
nobodyさん :2012/02/08(水) 10:22:32.40 ID:3EF2N74K
クッキーについてお尋ねします。 setcookie("TestCookie", "something", time()+3600); で、クッキーをセットしているのですが、firefoxのアドオン View Cookies1.10.3 で見ると Expires が Session になっています。ブラウザを閉じると全部消えます。 どんな間違いが考えられますか?
436 :
435 :2012/02/08(水) 10:26:44.75 ID:3EF2N74K
セッションスタートすると、そちらで上書きされてしまうってこともありますか?
437 :
435 :2012/02/08(水) 10:30:54.77 ID:3EF2N74K
すみません、解決しました。 ブラウザの設定の問題でした。
438 :
nobodyさん :2012/02/08(水) 16:44:06.52 ID:vfdEsjRW
Smartyスレが見当たらない(消えた?)のでこちらで・・・ Smartyで外部ファイルを読み込む場合、テンプレートとして読み込む(include等)と 変数割り当て等の解析が必要ない場合でもコンパイルされて、 外部ファイルが(別プログラムによって)変更された場合などには、再コンパイルするコードが必要になってしまいます。 Smarty内でこれを解決する(解析不要でただ読み込む)ことって可能でしょうか。 単純にPHPスクリプトで読み込んで変数に割り当てる方法でも対応できますが、 Smarty内からの関数呼び出しで他のテンプレートと同じように扱えればと思いまして・・
439 :
nobodyさん :2012/02/08(水) 17:59:23.48 ID:2t5iqwD7
マルチタスク(スレッド)の勉強をしているのですが、 curl系の関数を使う方法しかないんですかね? curlだとURL指定で並列実行になりますが、 URLから実行せず、絶対パスで指定できたらと思っています。 curl以外の方法かライブラリがあれば教えてください。
440 :
439 :2012/02/08(水) 18:24:02.84 ID:2t5iqwD7
自己レスです。fsockopen使う方法で出来ました。 簡単なので、こちらの方法で行きます。
PHPでマルチスレッドの話になるとすぐcurlってなってるけど、 平行してWebリソースにアクセスすることとマルチスレッドが同義であるという理解が広まってんのかな
アスペ注意
アスペの意味を分かってないかわいそうな奴
お前のことなんて分かりたくもないよw
450 :
nobodyさん :2012/02/08(水) 22:12:19.41 ID:skUmVjLK
前も誰かが言ってただろ PHPはマルチスレッドに対応していない curlで出来るのはマルチスレッドモドキだって
マルチスレッドキモイに見えた
マルチタスクとマルチスレッドを混同する人、多いね。
多い? 混同してるのは質問者だけじゃん
ググったら混同している人が多いから、=多いという解釈でも良いと思う
>>445 ,450
ん?並列処理を行うことが目的なの?
目的によって手段を変えるのは当たり前なんだから
>>444 は別におかしくないだろ
>>441 が言っている
「並列処理=並列してWebリソースにアクセスすること」
って考えしかないからそうなるのかな。
それが目的ならcurlでいいんじゃね、とは思うけれど。
458 :
438 :2012/02/09(木) 09:29:47.73 ID:vkcl0tGl
>>442 ありがとうございます。万事うまくいきましたー
459 :
nobodyさん :2012/02/09(木) 10:48:15.39 ID:/qdirMi/
PHPerの常識 マルチタスク=マルチスレッド
460 :
nobodyさん :2012/02/09(木) 11:01:18.23 ID:mqFxDq28
【OS名】OS問わず? 【PHPのバージョン】PHP5以降 【質問内容】 変数の未定義を注意されるので、自作のスクリプトで使用している変数・配列を $value = NULL; で全て初期化していますが、関数によっては初期化しても勝手に未定義に戻されてしまうようです。 例えば以下のようなparse_urlがそのひとつなのですが、皆さんはどのように処理してますか?関数から得た値は全部isset等でチェックしています?それともerror_reportingを変えて無視してますでしょうか? 正直なところ、スクリプト内で使用されている関数を通した変数全部チェックするのはとても大変なのでそこまですべきか悩み中です。 php -l phpスクリプト ではチェックしてくれないですよね? parse_urlを使ったスクリプト例 <?php error_reporting(E_ALL); $a = NULL; $a['host'] = NULL; $a = parse_url("www.google.com"); if ($a === false) print "parse_url is false\n"; print $a['host']."\n"; ?> 実行結果 Notice: Undefined index: host in /home/test/test.php on line 12
$a = NULL; $a['host'] = NULL; で、上の行は意味が無いし、 $a = parse_url("www.google.com"); で上の2行が意味なしになるのですが、分かります?
462 :
460 :2012/02/09(木) 11:19:34.68 ID:???
>>461 はい。値が上書きされてしまうので意味なしになるだろうとは思いました。
こういう場合、一般的にどう対応されているのかなー と思いまして。
本当にくだらない質問なんだけど、皆は <?php の次の行はインデントする派? しない派?
465 :
460 :2012/02/09(木) 11:56:22.30 ID:???
>>463 回答ありがとうございます。
やはり、怪しい関数は全て割り出してissetでチェックですかねー。
parse_urlでは'host'を使うなら'host'をissetでチェックして
セットされているか確認する必要がありそうですね。
上記の例では'path'にwww.google.comが入るみたいですね。
466 :
nobodyさん :2012/02/09(木) 12:06:12.88 ID:vkcl0tGl
>>462 頻繁にではないけど、もともとの$aを初期値としてセットしといて
関数の戻り値を$aにマージするようなコードを書くことはあるよ。
$a = array('host'=>null); // 初期値
if (($b = parse_url('...')) !== false) {
$a = $b + $a; // or $a = array_merge($a, $b);
}
467 :
460 :2012/02/09(木) 12:52:42.76 ID:???
>>466 なるほど。そういう方法もあるわけですね。
>>464 俺はしてる。
大した理由なんて無いよ、ただ何となく、見た目の問題。
netbeansをデフォルトの設定で使ってるけどしてないな。
やっぱしないほうが多数なのか。 俺もそうしよう。 回答有難う
>>461 そんなことするなら
if(empty($a) && isset($a['host'])){
echo $a['host']."\n";
}else{
echo "parse_url is false\n";
}
でいいんじゃ?
476 :
nobodyさん :2012/02/10(金) 12:33:14.85 ID:LrusZM1c
バグがでるのは仕方が無いことだと思うのですが、 バグを最小限に押さえるのに良い方法ってありますか。
478 :
nobodyさん :2012/02/10(金) 14:16:48.87 ID:LrusZM1c
>>477 考えて考えて、
とりあえず書いてみて
でも、ゆわれるまで気づきません。
超低レベルの質問で恐縮です。 配列の中身が Array という文字列で出力されてしまうのですが、これはどうしてでしょうか?
中身が配列じゃないの?
>>481 そのとおりでした。
ありがとうございます。
m(__)m
483 :
nobodyさん :2012/02/10(金) 16:29:00.81 ID:LrusZM1c
いえ、キミはプログラマではないのでヤバくないです
485 :
nobodyさん :2012/02/10(金) 18:45:58.39 ID:e8YNZNTF
>>483 プログラマと呼べるレベルじゃないのにほとんど当てはまらなかった
逆に、こういうのを経験してこなかったプログラマ使い物にならん気もするけどな。
>変数名が女の名前 これおまいらもやってるのか?www
489 :
nobodyさん :2012/02/10(金) 21:44:07.87 ID:2T73dJDE
関数がFALSEを返すのFALSEはfalseと定義されてるけど、 FALSEがfalseではなくなるかもしれないから FALSEであることを期待してfalseと比較なんかしちゃってると 痛い目に遭いますよという事で良いですよね?
>>489 falseと比較するときはFALSEを書くべきなんじゃまいか?
492 :
nobodyさん :2012/02/10(金) 22:45:10.70 ID:2T73dJDE
あーわかった。 zend_constants.c上ではTRUE, FALSE, NULLと全部大文字で 定数に登録しようとしてるけど、大文字小文字は無視してるから 小文字に変換されて登録されてて、zend_compile.cで使う時も 小文字に変換し直してハッシュから定数を引っ張り出すだけだったw
FALSEとfalseが違うものだと思ってたの?
ところでFALSE って、なんて読んでる? フォールス?フォルス?フォールズ? うちじゃ、ホルスw って読んでる人が一番多いようなw
フォルス一択
496 :
nobodyさん :2012/02/11(土) 02:22:50.24 ID:nzSgga7d
フォルス
497 :
nobodyさん :2012/02/11(土) 13:25:30.90 ID:dnJZM8FP
すみません、ここが適当でなければ誘導をお願いします。 Mac OS XのXAMPP環境にpeclでmemcacheをインストールしたのですが、有効になりません。 php.iniにはextension="memcache.so"が追加されています。(自動で追加されていた) 試しに、pecl install mongoしてみたら、こちらは問題なく有効になりました。(phpinfo()で確認) 何が原因か分かりますでしょうか?
499 :
nobodyさん :2012/02/11(土) 14:06:29.61 ID:dnJZM8FP
すいません、初心者じゃないんで、XAMPP使います。
じゃ好きにしてくれ
>>497 vimwareでも買ってcentosでも入れて勉強した方が良いと思うな
逆ギレくっど
504 :
nobodyさん :2012/02/11(土) 15:15:21.43 ID:dnJZM8FP
506 :
nobodyさん :2012/02/11(土) 15:55:57.42 ID:dnJZM8FP
あー書き間違いですか。 じゃぁ、CentOSってくだりも書き間違いかな? CentOSはpeclでインストールするよりyumの方がいいから。
有効になっていないことをどう確認したのかと、パスの通ったところにsoがあるのかを確認したらどうか。
超くだ質ですが、英語の変数名・関数名だと長くなる場合、どうしてますk? 「設立日」の値を保存する変数があったとして、 $establishment_day → 英語変換 $est_day → 短縮 $setsuritsu → ローマ字 などに出来ますが、長すぎると読みづらいし、 短縮文字だとわかりづらい場合があります。 (messageをmsgにするなど、一般的な短縮文字ならわかるのですが・・・ みなさんはどうしてますか?
509 :
508 :2012/02/11(土) 18:06:06.37 ID:bam167aq
sageてました・・・
510 :
nobodyさん :2012/02/11(土) 18:11:09.41 ID:dnJZM8FP
>>507 有意義なレスありがとうございます。
phpinfo();とclass_exists('Memcache');で確認しました。
XAMPP for Mac OS X のextensionは、以下のディレクトリに入ります。
/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/
上記に、pecl install memcache した memcache.so がインストールされています。
これが有効にならなくて悩んでいます。
試しに、pecl install mongo した mongo.so (phpinfo()で有効になっている)を
_mongo.so にリネームすると、無効になるので、このパスで合っているはず。
511 :
nobodyさん :2012/02/11(土) 18:15:17.70 ID:dnJZM8FP
>>508 あまり一般的な短縮名でなければ、長いままにしておきます。
一々仕様書やコメントを読まなければいけないのは、他人に不便だと思うので。
長い関数名や変数名はスペルミスや覚えられないという問題もあると思いますが、
入力補完してくれるエディターを使えばいいと思います。
512 :
nobodyさん :2012/02/11(土) 18:35:54.65 ID:dnJZM8FP
あ、わかったかも。 PHPのコンパイルオプションに、--enable-memcacheが付いてないからかな?
513 :
nobodyさん :2012/02/11(土) 19:08:10.33 ID:F655tJI8
514 :
507 :2012/02/11(土) 19:10:56.25 ID:???
>>512 > Newer PHP versions don't have a --enable-memcache options; simply installing the PECL package will be enough... so to be absolutely clear, you WON'T have to recompile PHP to use memcache.
ってのを見たので、configureのオプションにあるならつけないとだめかも
>>513 俺もたぶんそうする。
ちなみに今使ってる変数名
$t_name
$t_t_name
$r_name
入力補完もあるし、他の人が読むことを考えると、
もっとわかりやすい方がいいんだろうけど。
コメントに変数の正式な意味を書いておけばよさそう
517 :
nobodyさん :2012/02/11(土) 20:22:41.21 ID:nzSgga7d
キャメルケースにしないの?
>>518 宗派の違いだな。
俺の宗教には位牌はない、みたいな。
520 :
508 :2012/02/11(土) 22:01:37.87 ID:bam167aq
$e_dayまで短縮するとは思いませんでした。 これだと自分の場合、「終了日」と誤解しそうで。 キャメルケースは関数名に使うことありますが、 変数名はないですね。 コメントとか仕様書に残せばある程度短縮文字でも良いんですかね。 さすがに$establishment_dayは長すぎてパッと見た瞬間分かりづらいし。
>>520 関数名には使うことはあるけど変数名に使わないのはなんで?
522 :
nobodyさん :2012/02/11(土) 23:53:10.01 ID:ec+1ByNd
xdebugを使ってデバックをしたいのですが、失敗続きです。 【サーバ環境】 CentOS6.2 + xdebug 2.1.3 php.iniの設定 [XDebug] extension=xdebug.so xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.remote_port=9001 <- 9000ではNGという海外の書き込みを見て変更 xdebug.remote_handler=dbgp xdebug.remote_host=192.168.0.100 xdebug.remote_mode=req phpinfoでxdebugがenableになってるのを確認 【クライアント環境】 Windows 7 + Eclipse Indigo ネットワーク設定->192.168.0.100/24 固定IP サーバからping確認 ファイアウォール設定->受信規則にポート9001を受け入れるように設定 下に続きます。
523 :
552 :2012/02/11(土) 23:53:35.89 ID:ec+1ByNd
【Eclipse Indigo設定】 [ウィンドウ]-[設定]-[PHP]-[DEBUG] でXdebugを選択、ポートを9001に変更、serverもサーバのIPで設定、他はデフォルト [デバッグの構成] sever debugger->xdebug phpserver -> 上で作成した設定を指定 File->デバックするファイルを指定、他はデフォルト 【症状】 デバックを実行すると、デバッグ用のパースペクティブになるのですが、 ブレークポイントで止まった感じも無く、実効結果がすぐに[内部webブラウザー]と[Debug Output]に表示されます。 どうしたら良いでしょうか・・。
524 :
nobodyさん :2012/02/12(日) 17:42:49.77 ID:T+9lcsG5
filesizeで取得したファイルのサイズを KBに直すには、1024を掛けるのでよろしいでしょうか? 1000を掛けるのでしょうか? $size=@filesize($upload_name)/1024;
>>524 KBにしたいなら1000を掛ける
KiBにしたいなら1024を掛ける
割ってますけど。
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; filesizeで取得したファイルのサイズを ヾ;;;ハ ノ .::!lリ;;r゙ KBに直すには、1024を掛ける・・・・ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました ~''戈ヽ `二´ r'´:::. `!
528 :
nobodyさん :2012/02/12(日) 22:22:13.85 ID:E3xYO+Pk
二重投稿を防ぐスクリプトってcookieを使うって書いてるサイトが多々あるんですけど、 これってcookieを削除したら再投票可能ですか?
ヤフーがそう 私もそう思う 私は思わない ってやつ
>>528 オレならcookie無い場合スクリプト投稿と判断しカウントしない
てゆーか実験してみればいいじゃん
531 :
nobodyさん :2012/02/12(日) 22:45:37.90 ID:E3xYO+Pk
>>530 ありがとうございます!
わざわざ書いて試すのがめんどーだったから尋ねたのですが教えてくれそうにないので試します
>>529 cookie消せば数字増やせるけど、
IPも見てるみたいで一定以上は増えなかった記憶がある。
丸投げ失敗でござる
534 :
nobodyさん :2012/02/12(日) 23:05:15.68 ID:MdyL4A8R
WordPress、OpenPNE、 またsymfonyやCakePHPなどのフレームワークもみんな重いです。 これらの重さはPHPだから仕方がないの問題なのでしょうか?
そういえばWordPressつかいのオネーチャンがバカッターで泣き入れてた php6.0とかになって一斉に動かなくなったらワロリンコ
>>534 基本的にフレームワークはソースを効率化する為に使う物で
その為に余計な処理も入るから重くなるんだよ。
重さを軽減させるために、キャッシュ機能を使うけどね。
開発効率か速度かどちらか重視して使えば良いんじゃないかな。
>>536 重くなるのはPHPのインタープリタの特性と
キャッシュの貧弱さに由来すると思うけど。
PHPでオブジェクト指向のパフォーマンスはほんとにダメ。
そんなこより天皇ヤバくて年号変わりそうだけど 優秀なオマエラならモジュールの結合テストもう済ませてるよな
今上天皇はお前らより長生きするよ
年号が変わるって何言ってんの?
いまどき元号使ってるアホはポンドヤード厨と同レベ
こんなのでオタつくのは、プログラマーじゃねーよ。
昭和→平成の時、公文書の印刷だったから元号全部手直ししたが、 今はどうなんだろうな。
うちは全部西暦だわ。 キリストが再臨すれば困ったことになるな。
545 :
nobodyさん :2012/02/13(月) 18:00:01.82 ID:xFiWWsj/
陛下には申し訳ないが、平成早く終わってほしい。 バブルの崩壊、日本の失われた20年は平成になったあたりから始まった。 年号が、変われば、きっと日本は明るくなる。 次の年号は上世とか、登安とか、上ってく名前がいい。
>>545 でも次の奴だって期待できそうにないyo!
もっと悪くなりそう orz
>>545 次って今の皇太子が天皇になるってことだよな?それは明るい未来なのかい?
549 :
nobodyさん :2012/02/13(月) 21:48:05.71 ID:dtlHANwt
@arsort($date_before); foreach($date_before as $value){ $t=0; $date_after[$t]=$value; echo $date_after[$t].'<br>';//正常に表示 $t=$t+1; //echo $value.'<br>'; } for($t=0;$t<$i;$t++){ echo $date_after[$t].'<br>';//エラーが出る } 何故エラーがでるのでしょう? どうしたらいいのでしょうか?
$iがnullだから
nullじゃねーだろ
じゃ何?
単に定義されてないだけだ。
554 :
nobodyさん :2012/02/13(月) 22:04:01.85 ID:dtlHANwt
$iには50が入ってます。 $iを消して10にしましたが、エラーというか 一番先頭が値がありで、1〜9が値なしです。
foreachの中で毎回 $t=0; をしているのはナゼ? 4行目に毎回 $date_after[0]=$value; をしているわけだが。
558 :
nobodyさん :2012/02/13(月) 23:03:44.80 ID:dtlHANwt
>>556 foreach分の外に出すと、正常に表示されました。
皆様ありがとうございました。
>>558 エラーが出たら、まずその内容を読んでみような
大抵の場合そこに原因や解決策が書いてある
560 :
nobodyさん :2012/02/14(火) 01:51:59.94 ID:PYbwAQUM
echo '<input type="button" value="delete" onclick="blue(''$file_name[$image[$t]]'')"/>' エラーが出ます。onclickで関数を実行でその引数を指定するときは どのようにしたらいいのでしょうか?
htmlの問題だろそれ 吐き出されるソースをよく見てみ
>>561 > blue(''$file
シングルクォートが2個らしいよこれ
なもんで、HTMLエラーじゃないと思う。なもんで
>>559
ほんとだシングルクオート2個だwww よく気づいたな ヒント: エスケープ PHPの文字連結はドット
565 :
nobodyさん :2012/02/14(火) 10:32:18.76 ID:VUGkLJ/d
''を\'でいいんじゃない?
SQLとごっちゃになったのかな。
>>565 それだと変数が展開されないって嘆くことになる
568 :
nobodyさん :2012/02/14(火) 14:54:11.43 ID:Tk30SVBq
>>568 ずっと下の方の
LoadModule php5_module "C:\PHP\php5apache2_2.dll"
AddType application/x-httpd-php .php
この2つがあればそんな風にはならん。
Apache再起動したか?
570 :
nobodyさん :2012/02/14(火) 15:13:14.59 ID:Tk30SVBq
errorlogにphpのバージョン表示出てる?
572 :
nobodyさん :2012/02/14(火) 15:28:56.61 ID:Tk30SVBq
すみません 解決しました Control Apache Server→Restart/start/stop のRestart/Stopが正常に動作していなかったようです 1回Windowsごと再起動してからもう1度起動するとできました お騒がせしました
573 :
nobodyさん :2012/02/14(火) 18:54:42.00 ID:VUGkLJ/d
\''.$〜.'\'
575 :
553 :2012/02/14(火) 20:00:27.18 ID:???
>>555 「結果」は理由じゃないんだよ。
$iが定義されてないから
と
$iが定義されてないからNULLの値を見せる
は別なの
577 :
553 :2012/02/14(火) 21:01:40.14 ID:???
$iが定義されていて、かつNULLってのは考えない訳か
へ?575で両方とも定義されていない場合って書いてるじゃん
>>575 そもそも、$iが定義されてるかどうかが問題ではなかったんだけれど、その辺はどう
580 :
553 :2012/02/14(火) 22:40:54.39 ID:???
>>579 そういう風に詰めていくならもともとの質問は「エラーが出る」しか言ってないんだから、
NULLだという指摘は、<結果的にそれが原因>という可能性の一つになるだけ。
$iが(引用行外で)定義済みなら、NULLが入っているか、型が違ってるか、$iがarrayならそれがNULLではなくて
空か、ということが考えられる。他方$iがどこでも定義されてないなら定義してないからだ(NULLは単なる結果)、
という風になる。
なお578は論外の売り言葉買い言葉にすぎない。
>なお578は論外の売り言葉買い言葉にすぎない。 何言ってんだwごまかしてるだけだろwワロタw
<?php echo '<script type="text/javascript">'; echo 'alert("hello world 2012")'; echo "<\/script>"; ?> エラーになるますどうしたらいいですか?
>>580 もうね、俺は本当にどうだっていいんだけど、これをみて$iにもっていく勇気が俺にはないだけなんよ。
> echo $date_after[$t].'<br>';//エラーが出る
587 :
nobodyさん :2012/02/15(水) 05:27:01.38 ID:x/xi+W4J
<?php //ファイルの取り出し $file_name=$_FILES['filename']['name']; //一時ファイル名の取り出し $temp_name=$_FILES['filename']['tmp_name']; // 保存先のディレクトリ $dir = 'uploads/'; // 保存先のファイル名 $upload_name = $dir.$file_name; // JPEG形式、GIF形式のファイルをアップロードする // アップロード(移動) $result = move_uploaded_file($temp_name, $upload_name);//これがないと失敗 echo ($result)?'アップロード成功':'アップロード失敗'; ?> <img src="<?php echo $upload_name; ?>"> において、全く同じ時間に画像アップロードした場合は どうなるのでしょうか? また、画像のファイル名をdate関数で作成したときなどは どうなるのでしょうか?
ファイル名を作成するロジックなんて見当たらないわけだが ファイル名がかぶる可能性があるなら 連番で振るとか すでに存在していたら画像の後ろに数字をつけるとか いろいろ方法はあるでしょう
589 :
nobodyさん :2012/02/15(水) 05:55:11.81 ID:x/xi+W4J
>>588 わかりました。
今、画像アップローダー作ってるのですが(6割ほど完成)
jpg、pjpeg、gif、png、bmpだけに対応でいいですかね?
仕様なんて好きにすればええ
591 :
nobodyさん :2012/02/15(水) 09:55:27.24 ID:GiPiqyn4
NULLについて質問させて下さい。 定義しない限りNULLは返らないと思っていたのですが 定義しなくてもNULLが返ってくるというのはどういう場合ですか?
明示的に値を返さない関数とか
PHP学習中なのでレベルの低い質問ですいません。 ずっとutf-8を使っていたのですが、 GDでの画像描画がutf-8だとうまくいかなかったので (エラーも何も表示されない) はじめてutf-8nを使ってみました。 •一般的に、PHPは8nで書いたほうが良いのでしょうか? •逆に、8nを使うことで発生するトラブルはあるのでしょうか?
>>593 質問の回答になってないけど、UTF-8でGD2使えたよ。
>>593 質問の回答になってないけど、質問する時はスレのルールを守ったほうがいいと思うよ
596 :
593 :2012/02/15(水) 21:55:40.37 ID:5iudVdKB
sageてた。すいません。
>>594 まじすか。
なんでだろう…
PHP5.3.8でGD2.0.34。
以下のコードをTeraPadのUTF-8で保存するとページ真っ白
UTF-8Nで保存すると意図通りの四角が出ます。
<?php
Header ("Content-type: image/png");
$image = imagecreate(50, 50);
$shikaku = imagecolorallocate($image, 0, 0, 0);
imagepng($image);
imagedestroy($image);
?>
598 :
593 :2012/02/15(水) 22:19:48.19 ID:???
>>593 •
>>596 です。
>>597 レスありがとう。
最初にsage忘れたせいでややこしくて申し訳ないんだけど、
BOMのせいでページが真っ白だった、というのは理解できています。
知りたいのは、
•もうPHP書くときはずっとutf-8n使った方が幸せになれるか
•
>>594 はどうしてutf-8で使えたのか
です。
>>598 質問の回答になってないけど、質問する時はスレのルールを守ったほうがいいと思うよ
600 :
593 :2012/02/15(水) 22:24:04.09 ID:5iudVdKB
>>599 本 当 に 申し訳ありません…
>>593 •
>>596 です。
>>597 レスありがとう。
最初にsage忘れたせいでややこしくて申し訳ないんだけど、
BOMのせいでページが真っ白だった、というのは理解できています。
知りたいのは、
•もうPHP書くときはずっとutf-8n使った方が幸せになれるか
•
>>594 はどうしてutf-8で使えたのか
です。
UTF-8のBOMは非推奨だから、PHPだろうが何だろうが使わない方が良い
>>600 質問の回答になっているけど、UTF-8Nという呼称自体が元々日本独自の呼称で
最近その日本でもほとんど使用されなくなってきていることから
一般的にUTF-8と言った場合はBOM無しを指すという業界の共通認識があるので
>>594 はBOM無しのUTF-8を指していると思うよ。
あと1つ目の質問だけど今時はBOM有りに何らメリットはないのでBOM有りのことは忘れよう。
603 :
593 :2012/02/15(水) 22:42:20.59 ID:5iudVdKB
TeraPadのUTF-8対応ってたしかまだ不完全だろ
UTF-8に完全に対応してるテキストエディタってあるん?
スレチ
不完全ってどういうことなんだろ。よくわからんけどスレチだからいいか
608 :
nobodyさん :2012/02/16(木) 07:48:03.60 ID:UroJIk1P
すいません、質問です。
最近PHPを勉強しはじめたばかりです。ある書籍を使って学んでいます。
ttp://pastebin.com/Y1mU93jq 上記サイトにソースをコピーしました。
DBから商品リストを取得する際に、5カラムごとに表示させるというものですが、
一応問題なく動きます。ですが、index.phpにそのまま入るとエラーで
Notice: Undefined index: page in D:\xampp\htdocs\shop\index.php on line 3
と、出ます。原因は想像がつくのですが対処法がわかりません。書籍のサンプルを実行したところ
同様のエラーがでていまして。。。
お手数ですが、どうのようにすれば良いのでしょうか?
質問お願いします。 フォームから、0216 または 2/16 と入力されるデータを 02/16に統一したいんですが、どんな関数を使ったらいいんでしょうか? str_replace とか preg_match とか、いろいろありすぎてよくわかりません。 springf で %d を使ってみたのですが、スラッシュ以降が捨てられてしまいました。orz 一文字ずつ文字か数字か調べて、二文字目にスラッシュがでてきたら、最初にゼロを加えて・・・ みたいな処理を書いてもいいんですが、PHPなら一発でやってくれる関数がありそうですよね。 どなたかご存知でしたら教えてください。よろしくお願いします。
>>608 $page = '';
if (isset($_REQUEST['page'])) {
$page = $_REQUEST['page'];
}
もしくは
$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : '';
613 :
608 :2012/02/16(木) 08:10:51.64 ID:UroJIk1P
>>610 >>612 返信ありがとうございます。
なるほど・・・。if分と初期化までは浮かんだのですが、$pageじゃなくてpageだしなぁ・・・と考え込んでました。
さっそく試したらばっちりでした。ありがとうございました!。
xamppだめですか; 安全性とかからでしょうか?。。。
xampp使うなって言いたいだけだから放置でおk
Undefined index〜ってエラーは配列のキーの値が見つからなかった時によく見るエラーだから覚えとくといい
Noticeだから人によっちゃエラーリポートをきって無視するって人もいるが
>>610 のissetで最初にチェックする対処法が王道
615 :
609 :2012/02/16(木) 08:25:27.77 ID:Dbcdet1T
あ、すみません、sageてましたね ageます
xamppはセキュリティーの設定がデフォルトで緩いんで公開サーバーとして使ってはいけないってだけで ローカルでテストする分には問題ないよ
>>615 /を除去してsprintf %04dして最後に真ん中に / 付ければいいんじゃない?
もっと簡単な方法があるかは知らんけど
618 :
nobodyさん :2012/02/16(木) 08:34:59.14 ID:+jbHYpFg
>>610 $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : '';
この?と:ってどういう意味ですか?
614は素人だな
620 :
608 :2012/02/16(木) 08:44:05.91 ID:UroJIk1P
おお、たくさんの返信ありがとうございます。 評価の高かった書籍だったので(ほかの書籍は実は途中で挫折)購入してやってみると phpっておもしろいなぁと初めて思えていますw 聞いて良かったです。書籍の答えもエラーなので放置してる人もいそうですが、気持ち悪かったもので; 本当にありがとう。 xamppはローカルのみなので大丈夫かな。ありがとうございました。
>>618 if (A) { B } else { C }
の略
$page = A ? B : C;
622 :
608 :2012/02/16(木) 08:58:51.66 ID:UroJIk1P
あーもしかして、書籍はエラーリポートを切ってるから、何も触れてないのか・・・。 そういえばxampp設定時にiniを触りましたね。。。てことは、デフォルトでは切れてたのか・・・。 なるほど、すごく納得しました。 ありがとう、連投すいません。
昨夜の人と同じ人?
624 :
608 :2012/02/16(木) 09:15:50.47 ID:UroJIk1P
625 :
nobodyさん :2012/02/16(木) 09:20:25.11 ID:Dbcdet1T
>>617 ありがとうございます。それでやってみます!
626 :
625 :2012/02/16(木) 09:22:23.87 ID:Dbcdet1T
あ、だめだ・・・ 最初に スラッシュを取り除くと、 1/27 と 12/7 の区別がつかなくなってしまうんです。 入力する人たちに統一してもらえたらいいんですが・・・。
0127や0101はいるけど127とか11と入力する人はいないの?
628 :
nobodyさん :2012/02/16(木) 09:30:16.32 ID:+jbHYpFg
>>621 へえ、そういう記法があったのですね。ありがとうございます。
三項演算子っていうんだがif文の代わりに使いまくるのはやめましょうね
>>626 スラッシュつきを先にやれば問題ないでしょ。
あと環境かいてないから提供されてる関数については教えられず。
632 :
nobodyさん :2012/02/16(木) 13:33:51.23 ID:RNA+7C4L
csvを配列A、Bにぶち込んで foreachで回して適合したヤツを別の配列Cにぶち込んで 配列Cをcsvで吐き出すかんじか DBつかったほうがサバに優しいと思う
>>633 レスありがとうございます
一度試してみます!
ローカル環境で使用するつもりなのでphpで行いたいと思います
phpでDB使うのが一番。 すぐ慣れるしできることが広がる
636 :
nobodyさん :2012/02/16(木) 14:14:14.01 ID:2CwemWqC
AをDBにいれてやったほうが確実によろしい
637 :
nobodyさん :2012/02/16(木) 14:23:58.88 ID:RNA+7C4L
>>635 >>636 レス有難うございます
当方php初心者な者で・・・
mysql+phpでinsertくらいは出来るのですが
イマイチ今やりたい事がどうやれば出来るのかがわからないです;
DBならtableA、Bをつくって いい感じに結合する 論よりrunっていうじゃん とりあえずコード書いてみて動かなければスレ住人がアドバイスくれると思う 丸投げなら5000円でやってあげなくもない
639 :
nobodyさん :2012/02/16(木) 15:07:23.79 ID:kcwNwXq8
>>631 なるほど。strposでスラッシュを探して、ありやなしやで処理を変えて
strtotimeとdateあたりで、できそうですね。ありがとうございました。
640 :
nobodyさん :2012/02/16(木) 15:08:59.12 ID:kcwNwXq8
ID変わってました、
>>639 = 625です、ありがとうございました。
>>639 いったん全部同じフォーマットにしてしまうという方法もある。
数値型にしてしまうとか、日付型にしてしまうとかね
642 :
nobodyさん :2012/02/16(木) 15:12:07.26 ID:ySUB6ST3
サクラちゃん!オレにエロい幻術をかけてくれってばよ!!
$a = file("a.csv",FILE_IGNORE_NEW_LINES); $b = file("b.csv",FILE_IGNORE_NEW_LINES); $fp = fopen('c.csv', 'w'); foreach(file("a.csv") as $var){ $l=str_getcsv($var); if(in_array($l[0],$b))fputcsv($fp, $l); } fclose($fp);
もれそうです ぶちゅーぶりぶり
645 :
633 :2012/02/16(木) 18:14:40.57 ID:RNA+7C4L
>>643 ありがとうございます;;
助かりました
あそこ直して使ってね・・・
647 :
633 :2012/02/16(木) 18:44:18.58 ID:???
>>646 そのまま使えたのですが
直すところってあるのでしょうか?
$aどこでつかってるのとかw
CSVが1レコード1行と思ってる辺りも使えない
650 :
nobodyさん :2012/02/17(金) 07:27:18.28 ID:uCAZxDKu
おはようございます。昨日、Notice: Undefined index〜 のエラーについて質問したものです。
今回も同じような質問で恐縮なのですが、Notice: Undefined index〜エラーが連発しました。
元ソースです
ttp://pastebin.com/JcAYvrmH エラ− Notice: Undefined index〜 line 36 37 45 46 54 55
そこで、昨日教えて頂いたので、自分なりに追記し、エラーを掃かなくなりました。
4行目と27行目に追加
ttp://pastebin.com/F3xP74Yx この書き方で良いのでしょうか?
少し疑問に思ったのは、今回のような場合の大きいフォームの時に、冒頭に多数の配列のキーを書いていくことになるのでしょうか?
他に方法があるのでは?と、ご教授願いたく質問させて頂きました。
よろしくお願いします。
652 :
650 :2012/02/17(金) 07:34:52.02 ID:uCAZxDKu
>>651 返信ありがとうございます。
マニュアルは、はい、一応見てはいます。見てはいるんですが、なかなか理解が。。。
それで、別のブログ?とかで説明して頂いてるようなサイトも見たり。
理解が乏しくてすいません。
XAMPPで楽に環境作って開発始めるのはいいけど、 それで手を抜いてマニュアル読まないようじゃ、本末転倒だと思うよ
654 :
650 :2012/02/17(金) 08:03:12.13 ID:uCAZxDKu
>>653 返信ありがとうございます。
あの、とても質問しにくいのですが、
マニュアルとはarrayについてなのでしょうか、それとも、追記のそのものが違うということなんでしょうか。
arrayは、キーが整数ならば多少の省略ができるみたいですが、文字列となると単純には難しい感じなのかな。
連想配列のキーが何であっても空を入れるような・・・というより$errorはキーさえも入ってない状況?だから
どうでにもできないのかな?
とマニュアルを見て思いました。
今回の件とXAMPPになんの関係があるんだよw
>>650 $error = array('name' => '', 'email' => '', 'password' => '');
これ入れると22行目で常に空じゃなくっていつまでも確認ページにジャンプされないんじゃない?
俺なら先頭に
$data = array('name' => '', 'email' => '', 'password' => '');
// $_POSTからname email passwordがあれば入れる
foreach (keys($data) as $key) {
if (isset($_POST[$key])) {
$data[$key] = $_POST[$key];
}
}
でそれより下の$_POSTを全部$dataに置き換えする
>>654 PHPの公式マニュアルは難しい参考書や問題集ではなく、入門向けの基礎ドキュメントになってる。
「はじめに〜機能」まではPHP開発者なら当然抑えておくべき知識。上級者でなく初心者のね。
最低限「はじめに〜言語リファレンス」までは理解していないと質問の会話も通じないし既存サンプルコードも理解できない。
読んで基礎を身に着けてから開発したほうがいいよ。
(一通りとかじゃなくて、ちゃんと理解して)
追記 関数リファレンスは、最低限主要な関数くらいは見ておいたほうがいい
てか質問と関係ないこと答えたな フォーム関係だと、値を確認しないと危ないからどうしても長くなるよ
659 :
650 :2012/02/17(金) 08:46:33.43 ID:uCAZxDKu
みなさん、ありがとうございます。
>>655 ご指摘どおり動きませんでした。
エラーが消えて喜んでいたので、このまま参考書通り進めていったら気がつかなかったと思います。
たぶんエラーが消えたので、その箇所が問題だと疑問に思ってなかったと思うのです。
ぜひ参考にさせて頂こうと思います。foreachは浮かんだのに、そこからが出て来ないという。
>>656-658 あー、見てないです・・・知らなかったです。辞書のようなものだと思って
検索エンジンから関数入力して、直接その関数だけのを見てました。
トップページ見たことなかったです。。。
これは、嬉しい。必ず見て理解しながら、今の参考書をやろうと思います。
稚拙な質問ですいませんでした。ほんとにありがとうございました。
>>659 俺は657-658だけど、ぶっちゃけ書籍とかいらない。
情報古いし誤記はあるし公式マニュアルの方が詳しいし。
今回みたいなことが発生する度にここで質問してたら一向に先に進まないから
基礎を身に付けてある程度自分で考えたり調べられるようになったほうがいいよ
Notice: Undefined indexは最初無視していいよ 実際にサイトに設置するスクリプト書いた時直せばいい
662 :
nobodyさん :2012/02/17(金) 16:27:16.33 ID:w/M88VPz
MVCって、view が、コントローラーありきじゃないですか。 となると、デザイナーが、 「ここ2ページふやしたいな」 「ここ、ディレクトリかえたいな」 とかなったらいちいちプログラマーがコントローラを 書き換えないとダメなんですか?
663 :
nobodyさん :2012/02/17(金) 16:51:20.31 ID:UxdMuJ4N
逆 コントローラがViewのインターフェイスに依存してる
664 :
nobodyさん :2012/02/17(金) 19:36:37.46 ID:7dv+Ag3y
PDOのインスタンス「$dbh」のスコープについて質問です。 ファイルの先頭で、PDOインスタンスを生成して、DB操作をしています。 しかし、関数内では、ローカル領域のため、そのまま$dbhを使用したくても無視されます。 関数内で、DB操作するための解決策として、 1.「global $dbh」のようにグローバル宣言をする 2.「$dbh」を関数の引数で渡す のように考えたのですが、どうするのがベストなのでしょうか?
どっちでも
俺なら関数内で $dbh = $GLOBALS["dbh"]; とかかな
667 :
660 :2012/02/17(金) 20:55:35.29 ID:???
656-657だった
668 :
650 :2012/02/17(金) 21:27:24.10 ID:uCAZxDKu
669 :
nobodyさん :2012/02/17(金) 22:58:30.87 ID:MzraE+7u
メール送信について教えて下さい。 機種依存文字とか半角カナに対応する場合、 mb_send_mailよりmail関数で送信する方が良いのでしょうか? また、iso-2022-jpよりUTF-8の方が文字化けリスクは少ないのでしょうか?
どこでそんな情報仕入れてきたんだ
通信中の文字化けを減らす目的だったら再送するなどすれば?
どういった文字化けなのか調べてから質問しろ。 送信関数のバグか、受信側のエンコード認識ミスなのか、回線に比べサイズが大きすぎて送受信にミスるのか。 いちばん手軽に実装できる方法でやってみてそのエラーを書け。
673 :
nobodyさん :2012/02/17(金) 23:49:47.62 ID:MzraE+7u
どう言った文字化けと言いましても・・・「?」と表示されます。
UTF-8のファイルに、mb_send_mailで機種依存文字や半角カナを送り、
outlookやgmailで受信すると文字化けします。
というか
>>669 は間違いなんでしょうか?
ググってもmb_send_mailは文字化けするから使うなってあります。
実際文字化けするので、そうなのかとは思いますが、
単にコードの書き方が悪いのかも?と思い、質問した次第です。
675 :
nobodyさん :2012/02/17(金) 23:54:35.00 ID:MzraE+7u
mb_language('japanese'); mb_send_mail($email, 'テストメール', 'アアア'); UTF-8のファイルに単純に上記を書いてテストしています。 日本語メールをそう指定しているので、iso-2022-jpになるわけですが、 上記のままだと文字化けします。 mb_language('uni');にしてmail関数で送ると文字化けしません。 だからUTF-8にしてmail関数で送るのが正しいのでは?と思い、質問した次第です
languageがuni?
mb_internal_encoding
678 :
nobodyさん :2012/02/18(土) 00:04:31.94 ID:XbBhkQAF
とりあえず今のところ↓の書き方なら文字化けしません。 mb_send_mail使っても文字化けしない方法ってあるんですね。 もう少し調べてみます。 mb_internal_encoding("UTF-8"); mb_language('ja'); $to = "メールアドレス"; $subject = mb_encode_mimeheader('テストメール'); $body = mb_convert_encoding('アイウエオ', 'sjis-win', 'UTF-8'); mail($to,$subject,$body);
エンコードの自動変換をミスっただけだろ。 要するに設定次第で上手くいく。
680 :
nobodyさん :2012/02/18(土) 05:00:23.69 ID:QcioPwmz
<input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" /> これをHTTP_REQUESTでaddPostDataするにはどうしたら良いでしょうか?
>>680 foreach ($_POST['MyArray'] as $v) {
$req->addPostData("MyArray[]", $v);
}
682 :
nobodyさん :2012/02/18(土) 10:29:51.01 ID:10KYAU7Y
ホストのIP変換が遅いのですが、早くする方法を教えてください。 さくらスタンダード、 PHP Ver5.2.17(CGI版)で、 $ipaddr=gethostbyname($domain); の時間を測定すると、通常はマイクロ秒くらいの一瞬で終わるのですが、 ときどき5秒くらいかかることがあります。 同じドメインでも一瞬で終わるときと時間がかかるときがあるようです。
それはPHP関係ないのでは 関数どうこうでなる問題じゃないでしょう
684 :
nobodyさん :2012/02/18(土) 12:10:41.22 ID:10KYAU7Y
>>683 やっぱり無理ですか、残念ですがガマンすることにします。
ありがとうございました。
685 :
nobodyさん :2012/02/18(土) 18:36:17.03 ID:Agr52FPR
URLのHTMLソースをそのまま取得する方法はありますか? file_get_contentsだとタグ等を取得できません。 ソースをそっくりそのまま取得するにはどうしたら良いでしょうか?
686 :
nobodyさん :2012/02/18(土) 18:37:10.00 ID:AZw1wiBM
どうでもいいじゃん、そんなこと
file_get_contentsでタグを取得できない?なにいってんだ?
403でも返ってきてるんだろ
ローカルからやれば取得できるさ
HTMLソースをそのまま取得しない方法を聞いてるんじゃね
691 :
nobodyさん :2012/02/18(土) 18:58:51.71 ID:Agr52FPR
すいません、初心者なので変なこと聞いてしまっているかも知れませんが、
<?php
echo file_get_contents('
http://www.yahoo.co.jp/ ');
?>
これだとソースではなくページを表示しますが、これを下のように
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd ">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、
など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
<title>Yahoo! JAPAN</title>
etc
とソースを表示させたいです、どうすればいいでしょうか?
>>691 htmlspecialcharでもかませ
693 :
nobodyさん :2012/02/18(土) 19:40:17.07 ID:Agr52FPR
694 :
nobodyさん :2012/02/18(土) 20:52:04.00 ID:GMcMwBnH
アップローダー作る場合は何か許可等はほしいのでしょうか? また、利用規約は禁止事項、アダルト禁止や、児童ポルノ画像は 通報する等の警告を書かないとダメだったりしますか?
>>694 アダルトはどこからアウトでどこからセーフかという問題があって難しいですね
少年漫画のパンチラレベルならおkなはずです
アダルト画像判別ライブラリがあるといいのですが
696 :
nobodyさん :2012/02/18(土) 21:15:41.43 ID:AZw1wiBM
CGMはユーザがコンテンツをやり取りする場を提供するもの 他人のコンテンツは勝手にいじれない 規約に同意させて特定のコンテンツについて当事者に加えてもらえば自分のもんだから消し放題になる
698 :
nobodyさん :2012/02/19(日) 02:22:12.54 ID:wQztI7LL
phpでrssリーダーを作りたいんだが、titleを取得してリンクさせるまではできた。 だが、スマートフォンに対応してないニュースサイトがあるため、xmlの中のtitleとbodyを取得して、スマホ向けにデザインを変更したいんだがどうすればいい? 一時的にhtmlを自動生成すればいいの?やり方がわからぬ、、、。
700 :
nobodyさん :2012/02/19(日) 10:43:18.52 ID:DFHu3tLC
fopenのmodeパラメータですが、 書き込み用モードで開くと自動的に排他制御になるのでしょうか? 同じリソースを使って書き込み/読み込みをしようとa+を指定したとき、 読み込みでも排他制御されてるようです。 これは困るのですが読み込みと書き込みは、 別々のリソースで管理しないとだめなのでしょうか?
702 :
nobodyさん :2012/02/19(日) 11:14:52.49 ID:ULtF97rd
for文作ってるのですけど、 for(i=0; i<10; i++){ $data["thanks$i+1"] = $i; } だとうまくいかないっす。 i+1をあそこに書くにはどうしたらいいんでしょうか?
703 :
700 :2012/02/19(日) 11:15:31.80 ID:DFHu3tLC
$t=$i+1; $data["thanks".$t]=$i;
>>704 ありがとう
ちなみに、文の中に数式を埋め込むのは不可なのですか。
関数だったら返り血使って普通にやりますよね?
>>703 排他的ロックってのはロックしてる間読み込みも書き込みもできないようにするロックだよ
>>705 汚いけどできるよ
$data["thanks".($i+1)]=$i;
>>707 できました
あんまり好ましくはないようですね
先に教えてもらった方を使います
どもども
返り血・・・血しぶき ドバーッ て感じだ。
710 :
nobodyさん :2012/02/19(日) 22:01:19.96 ID:0c+jTY14
PHPアプリの二重ログイン防止策は、どうのように実装するのが良いのでしょうか? 有名SNSゲームが二重ログインのバグでサービス停止になったらしく気になります。
ドリランドの件じゃなくて? あれは二重ログインとはまた別の話だよね。 二重ログイン防止はセッションをDBで管理すればいいかな。
713 :
nobodyさん :2012/02/19(日) 23:25:00.75 ID:TyCjVWx4
>>712 ドリランドの件です。
バグの利用だそうですが、「二つの機器のアカウントを同じにする」とあるので、
二重ログインにも関係していると思いました。
トランザクションかけてなかっただけの話ではなく?
715 :
nobodyさん :2012/02/20(月) 00:32:56.31 ID:0kztJ4Qe
変数名に$をつけるとかめんどくせーな
>>715 見れば見るほど関係あるように見えるが。
デュープとトランザクションが関係ないという理由は?
>>715 トランザクションでググればみんなが言ってる事が理解できるよ
あんたもプログラマの端くれなら
憶測で物事を決め付けてかかる癖は直しなさい
デュープとかトランザクションとか横文字に知るからゆとりが混乱するんだろうが 排他制御って書いてやれよ
>>713 基本的にこの手のものは二重ログインは防止するものではないよ。
ユーザーがひどく不便になる。
721 :
nobodyさん :2012/02/20(月) 12:18:04.55 ID:GErhC2S3
cURLのIDNを有効にするにはどうしたらいいんでしょうか "curl idn enable"でggってみてそれらしきページはあったんですが何を言ってるのがサッパリでした OSはwindows vistaでPHPはver.5.3.8、cURLは7.21.7です
>>721 何を言ってるのかサッパリならわからない単語でさらにぐぐらないと。
そうやって技術書をスタックにつんでこそ。
うおー、PHP.netがつながらない。困った。 でも俺だけっぽいな?
ほんとだつながらない
725 :
nobodyさん :2012/02/20(月) 14:19:42.73 ID:7zywTD2d
>>723 俺も繋がらないよ (千葉県でOCN回線)
726 :
723 :2012/02/20(月) 14:23:06.17 ID:???
>>724-725 うちは、都内でflet's + Interlinkだ。
普通にさば落ちかな。
www.php.net→タイムアウト jp.php.net→変なメッセージが出る jp2.php.net→サーバが見つからない
DNS浸透の問題じゃないか? php.net 繋がらないPCだと[64.246.30.37] 繋がるPCだと[69.147.83.197]
ドドランド詳しく
>>716 同感
普段他の言語使ってるから
PHPで依頼されるとき$にイライラする
そしたらvarで変数定義して、あとで変数に$を付けるスクリプト作れ。
$がないPHPもつくれるだろうが人間の利便性より、解析処理速度を優先したんだろ。 内部コードがUTF16のPHPも作れるが、計画して進展しないのはやはりソースの解析速度だろ。
perlの変数に$がついてるからだろ
JavaScriptには付いてないけど。 PHPはperlに元にしてるのか。
文字列中の展開とかあるしな。 使える記号も選べるほどないし
だから、現金で取引されるようなデータには 固有の値をいれとけとあれほd
739 :
721 :2012/02/20(月) 19:29:31.34 ID:???
>>722 ウウッ(´;ω;`)ヒントだけでも頼むよぉ・・・
>>739 英語だけじゃなくて日本語も読めないの?
PHP.net復活したくさ。
>>721 再コンパイルの仕方がわからないならxamppからPHP抜いて試してみるとよかろう
俺の使ってるXAMPP Lite 1.7.3のPHP5.3.4はONになってる
最新バージョンがどうかは知らないが
最新のxampp1.7.7はPHP5.3.8だし試してみる価値はあるだろう
画像アップロードがほぼ完成して、自分が作ったソースファイルを 読んでたのですか、ifとelseを多用して非常に読みにくくなってました。 php歴2年ですが、これって素人がよくやるようなことなのでしょうか? なにか解決策はありますか?
745 :
nobodyさん :2012/02/20(月) 20:43:06.11 ID:NoHq1hRP
正規表現で特定の文字の間の文字を取り出すことはできますか? 例えば、 あいうえおあ という文字列があったら、あとあの間の文字の(いうえお)を表示する。と言うことは可能でしょうか?
可能
>>743 今度からは
>>1 よめ
ifelse多様してるならswitch文が速いらしい
749 :
743 :2012/02/20(月) 21:09:36.19 ID:Hy6/Os+0
すいません、下げてました。
>>748 switch文をを試してみます。
NginXとFastCGIで、
a.phpで
<?php echo file_get_contents("
http://localhost/b.php "); ?>
として、
b.phpで
<?php echo "hello"; ?>
とすると、固まってしまう。
b.phpで、file_put_contentsとかしてみると出力はあるから、アクセスはしてるんだけど、
レスポンスが取得できてないくさい。
fopenやstream_socket_clientもダメだった。
ちなみにa.phpでhtmlやtxtなどの静的コンテンツは取得できた。
a.phpをコマンドラインで実行すると普通にレスポンス返ってきてるんだが・・・
何が原因なのかさっぱりわからん。
>>737 ねえ、そのリンク先のだとトランザクション管理できないって言ってる?
そうじゃないなら何でそれ出したの?
755 :
nobodyさん :2012/02/21(火) 06:54:25.99 ID:6SIN0kwR
WikipediaのSingletonのJavaで書かれた項目をPHPに移植したいのですが、
http://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 1つ目の例の書き方だと問題ないのですが、
2つ目の例の書き方の2行目をPHPで書くのは無理でしょうか?
同期化コストってのはようするにif文を毎回呼ぶのがよくないってことだと思うのですが、
2つ目の例の2行目の書き方がPHPでだめだとして、改善方法はありますか?
final class Singleton {
    private static final $instance = new Singleton();
    private function __construct() {}
    public static function getInstance() {
        return Singleton::$instance;
    }
}
$s = Singleton::getInstance();
$s2 = Singleton::getInstance();
var_dump($s);
var_dump($s2);
Fatal error: Cannot declare property Singleton::$instance final〜
そこで$instanceのfinalを取ると
Parse error: syntax error, unexpected T_NEW in〜
となります。
外からアクセスできるので質が違いますが、
private static finalに近そうなconstも試して見ましたが同様のエラーが出ます。
ああごめん、違うか
final外すとか
760 :
751 :2012/02/21(火) 08:31:30.02 ID:???
自己解決した。単純な話だった
ルール無視したまま退散か、このlocalhost野郎
ルール守った所でお前みたいな無能には一生わからないからな
763 :
755 :2012/02/21(火) 10:19:56.57 ID:???
>>756-759 レスありがとうございます。
>>759 なるほどそういう意味でしたか。
syncronizedがどういうものかはよくわかりませんが、
PHPでは最初の例が常套手段ということは理解しました。
比較対象のため少しJavaの勉強もしてみようと思います。
どうもありがとうございました。
764 :
nobodyさん :2012/02/21(火) 10:24:44.01 ID:otlrgE39
基本的なことかもしれませんが、教えてください。 ftp_get関数を使って、リモートのファイルをローカルに保存したいのですが うまくいきません。 リモートでPHPの動かしていると、オフィシャルマニュアルのいうところの 「ローカル」というのは、動いている場所を指してしまうのですか? 具体的に書くとレンタルサーバー上のtest.phpの中で、ftp_get関数を使うと レンタルサーバーの/home/hoge/に「C:\temp\downloaded.txt」 という名前のファイルが できてしまってローカルには何もダウンロードされないのですが、これは仕様ということですか?
Java知らないのにJavaのコードを移植しようとはこれいかに
んな難しいことじゃないだろ
Javaなんて知らんでも
>>755 程度ならPHPある程度やってるやつなら誰でも移植できる
でもつまづいてるのは、知らないからだというw
>>764 ローカルとは実行してるコンピュータのこと
当然レンタルサーバーでftp_getを使えばftp_getの引数で指定した先からサーバー(ローカル)にダウンロードされ保存される
769 :
nobodyさん :2012/02/21(火) 10:59:15.38 ID:otlrgE39
>>768 やっぱりそうでしたか、目の前の箱だと思っていたのが間違いでしたね。汗
ありがとうございました。べつな方法を考えてみます。
PHPでのチェックボックスでの値の受け取り方や配列の扱い方よくわからないので教えて下さい。htmlの部分で <input type="checkbox" name="checkbox01[]" value="0"> 〜 <input type="checkbox" name="checkbox01[]" value="2"> とチェックボックスをつくりました。そしてPHPの処理部分では // チェックボックスに値があれば if($_GET["checkbox01"]){ foreach($_GET["checkbox01"] as $val){ if($val==0){ $data["A"]='あ'; } elseif($val=1){ $data["B"]='い'; } elseif($val=2){ $data["C"]='う'; } } // $dataがアレばそれぞれ if($data["A"]){ print_r($data["A"]); } if($data["B"]){ print_r($data["B"]); } if($data["C"]){ print_r($data["C"]); } }
としたのですが、チェックすべてに値をつけても 「あい」 までしか表示されません。試しに // チェックボックスに値があれば の前で print_r( $_GET["checkbox01"]); としたら Array ( [0] => 0 [1] => 1 [2] => 2 ) と表示され、// $dataがアレばそれぞれ の前でも print_r($data); としたら Array ( [A] => あ [B] => い ) と表示されたため、foreach文ないがおかしいとはおもうのですが解決方法がわかりません。 どのようにしたらいいのでしょうか? 長くなってしまったので連投してすみません、どなたかお知恵をかしてください。
$val=1 → $val==1 $val=2 → $val==2
これは質問者が間違って書いたから訂正してるのか、 別の人の解答なのかどっち? ID無いからわからんな
774 :
770 :2012/02/21(火) 15:21:10.42 ID:???
>>772 ありがとうございます。こんな凡ミスなんて・・・
あと調べててin_array関数というのもみつけたのですが、foreachで繰り返して探すより
if(in_array("0", $_GET["checkbox01"] ){
}
if(in_array("1", $_GET["checkbox01"] ){
}
といったように内容は同じだとおもうのですがin_arrayで調べたほうがいいのでしょうか?
>>774 全部処理するならforeach使うけどなぁ
in_arrayは検索する時だけ
776 :
770 :2012/02/21(火) 16:07:46.92 ID:???
>>775 ありがとうございます。
結局この場合はどちらがいいのでしょうか?
if($val==0){ $data["A"]='あ'; } elseif($val=1){ $data["B"]='い'; } elseif($val=2){ $data["C"]='う'; } こんなことするなら最初からvalueにあいう入れればいいのに
>>773 質問内容を理解してないから分からないんじゃないのか?
よって君はチェリーボーイ
781 :
770 :2012/02/21(火) 17:08:17.74 ID:???
>>777 ありがとうございます。
そうじゃない場合はどんなときでしょうか?
783 :
nobodyさん :2012/02/21(火) 23:58:50.45 ID:QmooF5El
PHPの遅さを解消する方法はありますか?
あなたの頭の回転の遅さを解消しましょう
786 :
nobodyさん :2012/02/22(水) 01:07:04.45 ID:HjiaSrjv
>>785 CakePHPを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
WordPressを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
OpenPNEを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
symfonyを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
また発作か
788 :
nobodyさん :2012/02/22(水) 01:39:15.45 ID:HjiaSrjv
結局、言語自体が遅い気がします。
今時体感できるほど遅いなら単にサーバがしょぼいだけだろ
790 :
nobodyさん :2012/02/22(水) 01:44:59.53 ID:HjiaSrjv
>>789 他の言語に比較して遅いです。
比較はJavaとPythonです。
791 :
nobodyさん :2012/02/22(水) 01:46:11.48 ID:HjiaSrjv
PHPもページ単位で処理が終わるものなら早いですが、 オブジェクト指向を始めると途端にパフォーマンスが悪くなるようです。
792 :
nobodyさん :2012/02/22(水) 01:48:41.94 ID:HjiaSrjv
>>789 ローカル環境でも遅いのでどうしようもありません。
じゃ窓からPCでも捨てればいいと思うよ
794 :
nobodyさん :2012/02/22(水) 01:57:04.91 ID:HjiaSrjv
PHPでセッションにオブジェクトを格納することは少ないのでしょうか? アプリケーションスコープが無いのはわかっていますが、セッションはありますよね。 WordPressしかり、Cakeしかり、symfonyしかり、オブジェクト格納場所として セッションは考えられていないようです。これが結果としDBへの 余分なアクセスを増大させているようです。
795 :
nobodyさん :2012/02/22(水) 01:58:42.03 ID:HjiaSrjv
>>793 たとえばOpenPNEが稼働しているサイトで機敏に動くところはありますか?
自分が知っている限り無いと思いますが・・・。
OpenPNE使ってるサイトなんて画像が多かったりコード量が多いサイトがほとんどだろ なんでもかんでもPHPのせいにすればいいってもんじゃない
>>789 さすがにそれは無いわ。サーバがしょぼいの敷居がよほど高くなければ。
798 :
nobodyさん :2012/02/22(水) 02:18:21.92 ID:HjiaSrjv
>>796 書いていますが、デフォルトの状態ですでに重いのです。
一切カスタマイズしていない状態です。ちなみに3.6系の最新版です。
デバックモードで起動するとものすごい数のSQLクエリが発行されています。
>>794 についてはどう思われますか?
799 :
nobodyさん :2012/02/22(水) 02:20:08.85 ID:HjiaSrjv
PHPのインタープリタが遅いのは承知していますが、 それ以上にクエリをムダに発行しているように思えるのです。
800 :
797 :2012/02/22(水) 02:20:36.63 ID:???
>>798 PHP部に限って言うならopコードキャッシュ使う。
DBアクセス数が多くて、コネクション生成コスト、クエリコストが原因で遅いのであれば、PHP自体の問題ではなくなる
本当にそれが無駄なのであれば改善すれば世界中の人に喜ばれるよ。
>>794 についてはどう思われますか?
一人だけで使うなら別にいいんじゃね
803 :
nobodyさん :2012/02/22(水) 02:23:07.36 ID:HjiaSrjv
PHPのリソースの捉え方が非常に大雑把で困惑しています。 たとえばJavaであれば 1.アプリケーションスコープ 2.セッションスコープ 3.リクエストスコープ 以上の3スコープに欲するデータが無い場合のみDBへアクセスしますが、 CakeやWordPress、OpenPNEなどの場合はお構いなしに毎回DBへアクセス しているのが不思議です。
>>803 Webサーバを複数使うことを想定してそうなってるわけじゃなくて?
設定とかで変えられないの?ってか、変えられないからそのように断定しているんだろうけれど。
>>803 ちなみに期待するレスポンスはどの程度で、現状はどれくらい?
同時接続クライアント数など、必要なものを列挙してほしい。ベンチの結果でもいい。
それがわからないから管を巻いてんじゃねえかな
807 :
nobodyさん :2012/02/22(水) 02:40:30.48 ID:HjiaSrjv
>>805 >>806 PHPの主要フレームワークやCMSのソースコードリーディングに基づき、
このスレを書き込みしています。実践というわけではありません。
気づいたことはオブジェクトの一時保存場所としてセッションが
使用されていないのが不思議なのです。だからSQL発行が非常に多い。
これはなぜですか?
809 :
nobodyさん :2012/02/22(水) 02:43:20.60 ID:HjiaSrjv
>>808 PHPは分散オブジェクトは対応していないのですか?
>>809 Javaのスコープの話が出てきた時点でこうなりそうな気はしていたが。
今後の話をわかりやすくするために「分散オブジェクトに対応する」というのがどういうことか伝えてもらえるかな。
811 :
nobodyさん :2012/02/22(水) 02:50:27.92 ID:HjiaSrjv
>>810 複数のコンピュータ間で同じオブジェクトを同一マシーン上で処理が済むことと同じようにすることですよね。
812 :
nobodyさん :2012/02/22(水) 02:53:35.00 ID:HjiaSrjv
OpenPNE,WordPress、CakePHPはセッションへオブジェクトを格納する設計になっていないのでしょうか?
815 :
nobodyさん :2012/02/22(水) 02:56:50.78 ID:HjiaSrjv
>>812 なぜ同じクエリを何度も発行しているのでしょうか?
OpenPNE3.6系です。
いらなクエリをコメントアウトすればいいんじゃね?
817 :
nobodyさん :2012/02/22(水) 03:02:33.49 ID:HjiaSrjv
>>816 その論法で行くと全部コメントアウトになりますが・・・。
私の質問はPHPでは答えにくのでしょうか?
そろそろしんどい。
>>815 , 817
繰り返すが、それが本当に無駄なら報告すれば多方面から感謝されるからそうしたらいい。
819 :
nobodyさん :2012/02/22(水) 03:08:04.96 ID:HjiaSrjv
>>818 そんなに大げさなことでしょうか?
OpenPNEを試されたことがありますよね?
デバックモードで起動するとSQL発行数がわかりますが、すごい量です。
これはなぜですか?と言っているだけです。だから遅いんじゃないでしょうかと。
820 :
nobodyさん :2012/02/22(水) 03:09:29.52 ID:HjiaSrjv
セッションにオブジェクトを格納しない理由があるのでしょうか? 昔はシリアライズのバグの話は聞いたことがありますが、さすがに今は解消しているはずです。
>>819 デバッグモードじゃなければ発行されないの?
何のために使われるクエリなのかは調べてないの?
OpenPNEは使ったこと無いよ。使ったこと無いならレスしないでっていうことなら喜んでレスやめる。
セッション切れるまでリソース保持とかどんな罰ゲーム
x86命令セット渡しても文句言いそうだな
どういう学び方をしたらこんなこじらせた頭になるんだ?
825 :
nobodyさん :2012/02/22(水) 03:11:56.60 ID:HjiaSrjv
>>821 デバッグモードで起動するとSQLクエリの発行数がわかります。
826 :
nobodyさん :2012/02/22(水) 03:13:20.43 ID:HjiaSrjv
>>822 それならそれでいいんです。
PHPでは罰ゲームレベルという理解でよろしいのですね。
こんなとこで使ったこと無い人相手にがんばるくらいならコード読み進めてみたら?
828 :
nobodyさん :2012/02/22(水) 03:14:30.57 ID:HjiaSrjv
結局のところ、 PHPではセッションにオブジェクトを格納するのは一般的ではないという結論ですね。
>>826 Javaだと放置セッションのリソースはいつ破棄されるの?
>>826 だから言っただろ
一人だけで使うなら別にいいんじゃね
って
831 :
nobodyさん :2012/02/22(水) 03:15:45.98 ID:HjiaSrjv
よくわかりました。道理でセッションが使用されていないわけだ。
832 :
nobodyさん :2012/02/22(水) 03:16:55.71 ID:HjiaSrjv
>>829 アプリケーションサーバーの設定による。
ただし、プログラムレベルでは細かく殺してリソースのムダ遣いを減らします。
他人のコードを読む時の絶望感といったら言葉にならない らーらーらー ららーらー 言葉になら〜ない
PHPだけの問題じゃないでしょうに Javaだって同じ事
基礎知識が足りなさすぎるだろ もっと幅広く勉強しろよ
837 :
nobodyさん :2012/02/22(水) 03:19:08.08 ID:HjiaSrjv
もう大丈夫です。 PHPではセッションにオブジェクトを格納するのは一般的ではないということが よくわかりました。
どういたしまして。
839 :
nobodyさん :2012/02/22(水) 03:24:16.48 ID:HjiaSrjv
セッションにオブジェクトを格納するのはPHPでは一般的では ないとわかりましたが、それはPHPプログラマにとって尺に触ることでしょうか?
840 :
nobodyさん :2012/02/22(水) 03:27:56.08 ID:HjiaSrjv
尺に触ったのであればすみまんでした。特に悪気はありません。
癪に障るかってどういうことだろ。 たとえば一般的ではないことを強要されたら癪に障るかも知れないけれど。
もしかして煽ろうとしていたのか…?
>>840 キレてないっスよ
ペチパーキレさせたら大したもんスよ
PHPでC言語の実装するとか言ってたのはどうなったんだ?
PHPだからとかJavaだからとか関係ないから。 Webアプリケーションの設計の話でしょ。
>>795 JavaとPythonで比較してるなら、OpenPNEに相当するJavaとPythonで実装されたもので
機敏に動くものを知りたい。
もう大丈夫です。 PHPではセッションにオブジェクトを格納するのは一般的ではないということが よくわかりました。
PHPでなくても一般的ではない
コネクションプーリングってのはそもそもアプリケーション鯖が対応してなければ使えない
>>850 当然。だからphpではコネプール不可。
セッションの話はどうでもいいが、openpneが激重なのは同意。 かなりヤバイレベル。バージョン2の時代はマシだった。
んでコネクションプーリングを実現するのにセッションが必要なんて そんなヴァカな話があるのか
>>853 たしかに、唐突にコネクションプーリングの話は変だとは思った。
その逆も必要ないかと。
話の流れとは関係ないw
856 :
nobodyさん :2012/02/22(水) 11:04:16.02 ID:yvJnpOho
>>783 CGIじゃなくてモジュールで動作させれば早いと書いてあった。
今のところはCGIで動作の仕様になってる。
頭大丈夫 ?
もう手遅れかと
コネクションプーリングは言語レベルのサポートは無い。
Javaのようなオブジェクト指向言語では普通にオブジェクトをセッションへ格納する。
いいえアプリケーションで管理するのが普通です
setcookie();の挙動について悩んでいます a.phpで echo $_COOKIE['testvar1']; var_dump($_COOKIE); --- b.phpで setcookie('testvar1', 'bbb') //a.phpでbbbが出力される --- c.phpで setcookie('testvar1', 'ccc') //a.phpでcccが出力されない setcookie('testvar2', 'xxx') //a.phpでtestvar2自体が確認出来ない と、以上のようにしてる時、b.php → a.php の順番でアクセスするとechoもvar_dumpも正常な結果を返すんですが、その後 c.php → a.php の順番でアクセスするとechoはbbbを返し、var_dumpは追加したtestvar2自体を返さずtestvar1のみbbbとして返します ※c.php自体の中で echo $_COOKIE['testvar1'];すればcccを返します。また、c.phpのsetcookie();の返り値は1です ※また、b.phpの中でクッキーに入れる値を変更した場合はa.phpで変更後の値が確認出来ますが c.phpの中で値を変更しても上書きされません(c.phpの中での確認です) ドメインは全て同じで、原因が全くわかりません 何か考えられる対処法やチェック箇所あるでしょうか? 申し訳ないですが、どなたかご意見お願いします
ブラウザを初期化する
ありがとうございました!
最近は、ID出さなくても答えて貰える様になったのか。 これがゆとりか。
ID指摘したかったら、回答しつつ、ID出すように促せよ。 IDID言うやつ、回答しないんだよな。
昨日のチェリーボーイが居ますね
869 :
862 :2012/02/22(水) 20:41:14.26 ID:culdIBNJ
すみません、今気づきましたID出してなかったです。すみませんでした その後もブラウザ再起動などしてやったんですが やはりc.phpでsetcookie();した値はc.php以外で確認出来ません なんなんでしょうか?
HTTPのヘッダも確認してみれば
fastcgiの動作確認なのですが php-cgi -b 127.0.0.1:9000 & として telnet 127.0.0.1 9000 とかでなんか叩いて動作チェックって出来るものでしょうか?
874 :
862 :2012/02/22(水) 22:42:10.50 ID:culdIBNJ
>>870-872 その後、全てのsetcookie()を setcookie('time', date('Y-m-d H:i:s'), 0, '/', 'example.com');として
有効時間、パス、ドメインを指定したところ解決しました
質問して良かったです、助かりました
本当にありがとうございました
いいってことよ
ほい
877 :
nobodyさん :2012/02/22(水) 23:24:44.58 ID:qmf6D6+H
get_included_files()に含まれてないファイルがrequire_onceで読み込まれないんですが、 原因としては何が考えられますか?
>>877 パス間違ってるとかパーミッションがマズイとか。
ちょっと情報少なすぎ。
warningかnoticeも出てないの?
879 :
553 :2012/02/23(木) 01:24:46.92 ID:???
含まれていないんだから、読み込まれないのは問題無いだろw
CakePHPは重いですね
マシンパワーアップしようぜ i7っでサックサクにしようぜ
スレチ
チッ
886 :
nobodyさん :2012/02/23(木) 11:35:04.06 ID:GMJguUp1
セッションを利用したログイン認証について質問です。 ログインページでは、ID(メアド)とパスワードの一致をもって、認証OKとしています。 その後、各ページでは何をもって認証OKとすれば良いのでしょうか? 入門書では、 1.ログイン時に、各ユーザー情報をセッションに保持し、各ページでは、それがあれば認証OKとする。 2.ログイン時に、暗号化した認証キーを作成してセッションに保持し、各ページで再度、認証キーを作成し、セッションの認証キーと照会する。 3.ログイン時に、セッションID(session_id())をセッションに保持し、各ページでは、そのページでのsession_id()と照会する。 などの方法を確認しました。個人的には、1の方法で足りると思うのですが、2や3の方法のほうがセキュリティーは高まるのでしょうか?
ログインフラグだけで十分
888 :
877 :2012/02/23(木) 13:56:23.63 ID:QQ9YytJp
>>878 パスは間違ってないようです パーミッションもちゃんと644になってます
直接関わるwarning・noticeは出ていないようです
情報が少なすぎるとのことなので問題の背景を説明します
レンタルサーバでXOOPSを使いサイトを運用しています
ある日すべてのページが500 Internal Server Errorになるようになりました
"php_flag magic_quotes_gpc Off"とだけ書かれたXOOPS_ROOT_PATH/.htaccessがあったのでこれを削除したところ、
だいたいのページは元通り見られるようになりました
しかし、管理メニューの互換モジュールで
Fatal error: Class 'Legacy_ActionFrame' not found in XOOPS_ROOT_PATH/modules/legacy/admin/index.php
とエラーが発生します
該当する.phpファイルではそのクラスを定義しているXOOPS_ROOT_PATH/modules/legacy/class/ActionFrame.class.phpをrequire_onceしているようなので、
このファイルにでたらめな文字列を書き足してSyntax errorを期待したのですが結果は変わりませんでした
また、require_onceの下にvar_dump(get_included_files());を書き足しても、このファイルは含まれていませんでした
以上にもかかわらず、require_onceの戻り値は1( != FALSE)でした
どうすればこのファイルはrequire_onceで読み込まれるようになるでしょうか?
よろしくお願いします
>>886 どんな入門書読んだのか知らんが、2と3は明らかにおかしなこと言ってるぞ。
もう一回しっかり読め。
セッションとクッキーは別物だということを頭に置いてな。
890 :
nobodyさん :2012/02/23(木) 15:06:37.39 ID:pOv6kBFH
smp.tsv あああ\\t2012.01.23\\tききき\\n いいい\\t2012.01.23\\tくくく\\n ううう\\t2012.01.23\\tけけけ\\n えええ\\t2012.01.22\\tこここ\\n おおお\\t2012.01.22\\tさささ\\n かかか\\t2012.01.21\\tししし\\n 今日 = 3 昨日 = 2 一昨日 = 1 このような値を取り出したい場合はどのような手順になるのでしょうか? よろしくおねがいします。
891 :
886 :2012/02/23(木) 15:11:52.08 ID:AL17q7mx
>>887 889 レスありがとうございます。
3.のコードです。関数化されてます。
これは間違いなのでしょうか?
<?php
##### セッションの開始
function session_idset() {
session_start();
$_SESSION['auth'] = session_id();
}
##### セッションのチェック
function session_check() {
session_start();
$rtn = TRUE;
if($_SESSION['auth'] != session_id()) {
$rtn = FALSE;
}
return $rtn;
}
?>
892 :
886 :2012/02/23(木) 15:23:33.04 ID:AL17q7mx
2.のコードです。これもおかしいですか? //セッションの開始 $_SESSION['login_id'] = $_POST['login_id'] ; $_SESSION['auth'] = md5($salt . $_POST['login_id']) ; //セッションの確認 function auth() { global $salt; if (md5($salt . $_SESSION['login_id']) == $_SESSION['auth'] ) { return TRUE; } else { return FALSE; } }
1〜3は比較する情報が違うだけでやってること同じじゃん
おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん。 やるんであれば、例えば、ランダム文字列を生成してクッキーに保存 その文字列をハッシュかけてセッションに保存 確認のときはクッキーのデータにハッシュかけたものとセッションのデータが一致するか ってやればセッションハイジャックに対して少しは強くなりそう。
>>891 本当にその入門書がその通りに書いているなら今すぐ燃やして他の本から学ぶべきだな
>>894 効果のないものを初心者に教えるな
>>888 requireでは読み込めるってこと?
897 :
894 :2012/02/23(木) 17:08:07.42 ID:???
>>897 もしかして、セッションファイルを一般ユーザが見られる場所に
保存するシステムを前提に、ローカルユーザからの攻撃対策の話をしてる?
それだと、サーバの設定を見直した方がいいような……
>>897 sidについて触れない時点でハイジャックには何の効果もないんじゃないの?それ
900 :
nobodyさん :2012/02/23(木) 17:31:23.55 ID:sgcZLa3B
>>899 セッション固定攻撃に対しては効果があると思うけど。
何で効果があるのか教えてくれ
>>890 一行読んで、\tで分けて、二つ目の要素の日付調べて、該当する日のカウント増やす
903 :
886 :2012/02/23(木) 17:59:29.91 ID:+MEbH08X
1.のコードです。遅れてすみません。 やはり、このシンプルなコードが妥当なのでしょうか? //$rowにDB取得データ代入済み // ログイン情報を記録 $_SESSION["login"] = array("user_id" => $row["user_id"]," login_time" => time()) // ログインしているかどうか調べる関数 function is_logined() { return isset($_SESSION["login"]); }
>>890 fgetcsv
array_count_values
905 :
894 :2012/02/23(木) 18:21:05.98 ID:???
>>898 仮にセッションIDが漏れた場合とか想定してるんだけど。
セッションIDだけじゃなくて、発行時のクライアントのチェックとして有効じゃない?
886の対案として出してるだけだから、ベストの方法とは思わんけど。
>>899 論点がぜんぜん違う
906 :
nobodyさん :2012/02/23(木) 18:24:58.57 ID:pOv6kBFH
$lines = file($tsv); for($i = 0; $i < count($lines); $i++){ list(,$day,,)=explode("\t",$lines[$i]); $today = date("Y.m.d"); $match_tday = preg_match("/$today/",$day); } 今一歩前へ進めません。次のヒントお願いします。
PHPSESSID決め打ちでそれだけが盗まれたら〜ってこと?
>>900 session_regenerate_id(true)で済む話だろJK…
>>906 $lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$days[],,)=str_getcsv($lines[$i],"\t");
}
print_r(array_count_values($days));
910 :
877 :2012/02/23(木) 20:38:51.67 ID:QQ9YytJp
>>896 試してみました
requireに書き換えると、多少崩れたページが表示され、
Fatal errorではなくなりました
session_registerって使っちゃまずいらしいけど じゃあ代わりに何を使えばいいの?
>>911 非推奨なのを知ってるということは
マニュアルを途中まで読んだな?
もっと下まで読めば書いてあるだろw
最近は、ID出さなくても答えて貰える様になったのか。 これがゆとりか。
回答しない自治気取り君お疲れ様です。 俺、アンタみたいな人嫌いですw
お前が言うな
916 :
nobodyさん :2012/02/23(木) 21:44:28.17 ID:P+2F5uLF
正規表現で既に取得しているものは取らない方法はありますか? <?php $data= ABCDABCD; $match='/A|B/'; preg_match_all($match, $data, $matches[0]); print_r($matches[0]); ?> 結果 Array ( [0] => Array ( [0] => A [1] => B [2] => A [3] => B ) ) これを、AとBをそれぞれ一つだけ取得したいです。 1回取得したものと同一のものは取得しない方法はありませんか? preg_matchを2回使うと一応できるのですが、それだと 結果 Array ( [0] => A ) Array ( [0] => B ) このようにそれぞれ別になってしまいます。 何かやり方はないでしょうか?
print_r(array_keys(array_flip($matches[0][0]))); print_r(array_unique($matches[0][0]));
>>913 主気取り乙。ずっとこんなところにばかりいないで他いくといいとおもう
自己紹介おつ
>>866 です。レスありがとうございました。
>>894 さんの「おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん」
というご指摘で、2.3.のおかしな点がよく理解できました。
ランダム文字列クッキーを認証に利用する方法は、自分も考えたのですが、
XSSでJSによりクッキーを盗まれる場合には、セッションクッキーとともに
そのランダムクッキーも盗まれるので効果が無いと思いました。
また、セッション固定化攻撃には、
>>908 さんのいうsession_regenerate_id(true)が
適切だと考えます。それとともに、php.ini、.htaccessでセッション付きリンクを
使用不可にするのがよいのかなと。
922 :
886 :2012/02/23(木) 23:14:53.15 ID:NC9JkONA
923 :
nobodyさん :2012/02/23(木) 23:58:21.36 ID:P+2F5uLF
ルール厨うぜー
おまえがいうな
守ってるじゃん
>>894 それ意味ないじゃん
ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
あとその処理自体にセッションハイジャックに強くなる要素が見当たらない
サーバ側でセッションハイジャックされないような対策を考える場合XSSだけに気をつければいい
結局ハイジャックされるかどうかはクライアント側の行動次第
リンクにセッション情報を含めないほうがいいのはクライアント側の行動次第では漏れる可能性が高いから
クライアント側がそれなりの知識を持ってるならリンクにセッション情報を含めても問題ない
>>873 自己解決しますた。
telnetじゃムリでした。
<? phpinfo(); ?>がスルーされたのがそもそもの発端だったんだけど、5.3.8と5.2.13ではshort_open_tagが違うんですね。
pukiwikiとかwordpressって律儀に<?php 〜 ?>ってやってるのかな?
930 :
894 :2012/02/24(金) 09:27:38.22 ID:???
>>928 前半の
>>ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
に関しては同意だけど、セッションIDとクライアントの情報を合わせて
盗まれなければ意味があるじゃん。
セッションIDだけ盗まれるってケースは意外とあると思うぞ。
>>920 の言うようにクッキーまるごと盗まれたらしょうがないけど。
後半は同意できない。
実質的にセッションIDが漏れるってことはクッキーが漏れることと同義だろ どこの実装もほぼ100%クッキーでやってるんだから
932 :
nobodyさん :2012/02/24(金) 10:29:02.94 ID:BAbDqRA5
eclipse3.7のphpで開発しているのですが、CVSからファイルを持ってきた時に文字化けをしてしまいます。 その為、使用するファイル(Sfit-JIS)を一つずつ選択し、プロパティーから文字化けしないUTF-8に変換しているのですが、 一括ですべてUTF-8にする方法はあるのでしょうか。 使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても だめでした。
>>930 それ同じこと思った。
なんでクッキーとセッションが別腹的な考え方なんだろ。
素人の俺にはわからん。
TLSかけるなりしてクライアントとPCの通信の盗聴防がなきゃ意味ない気が。
最新式の複雑な鍵を使ったとしても、 鍵盗まれたら困るってことの対策にはならんもんね。
935 :
877 :2012/02/24(金) 12:51:09.28 ID:i01HfJfE
>>877 ,888,910です
解決策ありませんか?
>>935 requireで読めたんならそれでいいだろ
2回以上読み込むファイルをrequire_onceで読み込むのがおかしい
>>932 >使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても
だめでした。
それエクリプスの設定をUTFにしてるだけだし…
PHPでそのPHPファイルをfile_get_contentsで読み込んでエンコード変えて同じファイルに書き出すくらいじゃね?
ほ
>>929 毎回<?php って書いてるよ。
<?= とか便利かもって思ったこともあったけど、それが便利だと思える場面に遭遇しなくなった
コードアシストで解決
$file_name="p/1.html"となってる時、 p/の部分だけを取り除いて、 $file_name2="1.html"とすることはphpでは可能ですか?
943 :
nobodyさん :2012/02/24(金) 23:23:49.74 ID:gMrEIIb2
$file_name="p/1.html"となってる時、 p/の部分だけを取り除いて、 $file_name2="1.html"とすることはphpでは可能ですか? すいません、上げてました。
実際はディレクトリをのぞいてファイル名だけにしたいとかなんだろうけど そんな質問の仕方だと substrで三文字目以降を切り出せとか p/を空文字に置き換えろとかいう答えが返ってくるぞ
946 :
877 :2012/02/24(金) 23:48:54.24 ID:i01HfJfE
>>936 requireで読むとFatal errorはなくなりますが、ページの表示が正常ではありません
2回以上読まれるかどうかは未検証ですが、
require_onceの前後のどちらでも、get_included_files()に該当するファイルが含まれないのは問題だと思います
947 :
nobodyさん :2012/02/24(金) 23:51:09.90 ID:kLSGsgF4
phpから現在動いているmtaが何か取得する方法ってありますか? sendmailか否かさえ分かればいいのですが。
948 :
nobodyさん :2012/02/24(金) 23:54:48.93 ID:gMrEIIb2
>>944 ありがとうございました。
>>945 そうです、ディレクトリ名だけとっぱらいたかったんです。
なんか、適当に作ってたら、mysqlに入れた値が"p/1234.html"
となっていたんです。これはこれで表示されないデータなら
扱いやすいのですが、表示されるデータにディレクトリ名って
欲しいのか?という疑問にぶつかりました。basename()って便利な
関数ですね。
>>946 requireで読めて、require_onceで読めないファイルがあるってことだよね。
それがわかっているなら後は何が原因なのか、どんどんコードを削っていけばたどり着くと思うんだけど
>>947 Linuxなら、exec関数で "ps ax | grep sendmail" を実行して、その出力をチェックする
951 :
nobodyさん :2012/02/25(土) 01:14:42.48 ID:a/GXX7hd
メールを連続で送信する場合、マニュアルには、 >mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。 >この関数は 1 通のメールを送信するたびに SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。 >大量のメールを送信する場合は、 ≫ PEAR::Mail および ≫ PEAR::Mail_Queue パッケージを参照ください。 と記述してありますが、PEARを使いたくない場合、 ソケット関数で自分でSMTP処理を書くしか無いですよね?
実現できる方法でどうぞ。 「しか無い」ってのはよほどのことが無い限り無いと思ったほうが。
PEAR::Mail および PEAR::Mail_Queue で必要な箇所を参考・コピペする。
>>912 session_register()使う代わりに
$_SESSION に値をぶっこむのね
ありがとう!
955 :
nobodyさん :2012/02/25(土) 18:56:47.63 ID:1lZdYX8R
たとえばですが、 wire.jpというサイトがあります。 内容的には好きなんですが、相当重いサイトです。 こういったPHPで作られたサイトのパフォーマンスを 上げるためにはどうしたらよろしいでしょうか?
キャッシュでも作れば?
957 :
nobodyさん :2012/02/25(土) 19:09:58.04 ID:r6BFdbus
RSSからforeachで値を取得したのですが、それをループの外で一つの変数として扱いたいのですが、どうしたらいいでしょうか? <?php $array=array(1,2,3,4,5,); foreach ($array as $value) { $a=$value; } echo $a; ?> 例えばこのようにすると、当たり前ですが結果はループで上書きされて5と表示されます。 foreachで取得したものを一つの変数に入れることは出来ませんか?
>>957 よく分からんけど仮に3つ目の値が取りたいなら
echo $array[2];
>>957 print_r($array);
して表示結果を見てみなはれ
その上で$array[x] ←xのところに対応した数字をいれる。
で出てくる。
$a=$value;を $a[] = $value;
961 :
nobodyさん :2012/02/25(土) 21:26:32.82 ID:r6BFdbus
いいってことよ
ほい
964 :
nobodyさん :2012/02/26(日) 00:52:26.79 ID:nCX4lbdW
>>956 キャッシュとはどのようなキャッシュですか?
965 :
nobodyさん :2012/02/26(日) 01:35:13.43 ID:nCX4lbdW
キャッシュとは言語レベルのサポートですか? wire.jpはWordPressみたいですから WP Super Cacheプラグインみたいなプログラムレベルの キャッシュのことを意味していますか?
( >д<)、;'.・ キャッシュン
967 :
nobodyさん :2012/02/26(日) 01:47:59.96 ID:nCX4lbdW
>>956 例としてあげてwired.jpはW3 Total Cacheが入っているようです。
それでも遅い場合はどうしたらよろしいのでしょうか?
Thank you!
phpでデータベースを扱うには、何かと方法がありますが エクセルのシートで外部参照するみたいに、この列はこっちの データベースから引っ張って、この列はこっちから というように複数のデータベースから情報を引っ張って 統合して表示、または登録変更をするためには、どんな 方法を使うのが最も適しているのでしょうか?
972 :
nobodyさん :2012/02/26(日) 02:16:44.23 ID:oisclph1
質問させてください。 自動返信メールの内容に値を持たせたいんですが 値の入っていないものは表示させないようにしたいです。 <?php $MESSAGE = " 注文がありました。 商品 個数 [[りんご]] [[1]] [[みかん]] [[0]] [[ぶどう]] [[3]] ";?> 実行すると りんご1個 ーー(みかんの注文が0なので表示されず空白だけできてしまう)ーー ぶどう3個 というメールが来てしまうで、みかんの部分を上に詰めさせたいです。 メールが来る仕組みなどは人がしたものなのでよく分かってません。 よろしくお願いします。
>>972 $cart=array("りんご"=>"1","みかん"=>"0","ぶどう"=>"3")
$MESSAGE = "注文がありました。\n\n商品 個数\n"
foreach($cart as $key => $val){
if ($val>0){ //$valが0以下の時は処理しない
$MESSAGE.="[[$key]] [[$val]] \n"
}
}
備考 POST情報はクライアント側で詐称できるので 値段を表示させる場合はPOSTさせないでDBに取りに行ったほうがいいと思うよ
974 :
nobodyさん :2012/02/26(日) 03:34:02.05 ID:oyzRHeH9
俺は自分でも結構オブジェクト指向イケてるんじゃないかと思ってたんだが、 今日クラスを作成していたときにクラス名に悩んで、 候補のものをググってたら、C#の同名のクラスが出てきたんだ。 どんなメソッドがあるのかな?とチラっとみてみたら、 俺がクラスに含める予定だった処理が別クラスで処理されていた。 徹底的に細かくオブジェクトを分けていることに俺はショックを受けて絶望した。 これが本当のオブジェクト指向なのかと。 自信が一気になくなった俺はこれからやっていけるでしょうか?
細かく分けることがオブジェクト指向・・・?
976 :
sage :2012/02/26(日) 09:48:27.16 ID:???
>>974 そもそも論として
phpでオブジェクト指向実装は後付けの中途半端だし、
最適化されていないのでパフォーマンス悪いよ。
それだったらJava、C#みたいな強制的オブジェクト指向言語で
勉強して方がいい。他の言語で役に立つから。
977 :
sage :2012/02/26(日) 09:49:49.71 ID:???
>>975 PHPerから見ると、
オブジェクト指向言語のクラス設計はすべてが細かく見えるかと。
他の言語って、これからいくつ覚えるつもりだよ 一生勉強ってかw
979 :
sage :2012/02/26(日) 10:15:37.18 ID:???
>>978 これからもphpオンリー?
スマホアプリとか大丈夫?
サーバーサイドオンリーの人だとしても、
phpだけだったら守備範囲が狭くならないかい?
たとえばfacebookみたいに
phpで作りました。
↓
でもユーザー増えて負荷に耐えられなくなりました。
↓
基幹をC++やJavaに切り替えました。
というケースは無いの?
一生勉強って当たり前だろ
いや本質だろ。 継承や再利用を考えると重要。 それより次スレ
983 :
sage :2012/02/26(日) 10:38:06.83 ID:???
そもそも論として、 細かく設計するとPHPの場合すぐパフォーマンスが悪くなる。 いずれにしてもPHPのオブジェクト指向は中途半端で使いにくい。
例えばチャットクラスで 書き込みを行うwriteというメソッドがあったとする PHPerの場合 ここに渡す引数はString型の$messageである C#erの場合 ここに渡す引数は別クラスで作成したメッセージオブジェクトである
985 :
nobodyさん :2012/02/26(日) 11:12:49.13 ID:yp5CCX+k
メールアドレスの「@」より前を取得したいんですけど、自分では $tmp = explode('@', $email); $name = $tmp[0]; という書き方しか思い浮かびません。 もっと簡単にできる方法があれば教えて頂きたいです。
echo substr($email, 0, strpos($email, "@")); 複数行になるのが簡単ではないと考えてるなら考えを改めるべし
四年前の爺さんの背広からメガビックボーイが出てきたんだが 一生現役ってことを考えると一生勉強くらい普通だと思った。
preg_replace("/(?=@).*/","",$mail); とか explodeでいいと思うけどな
replaceだと元データのメアド使えなくなるやん
990 :
sage :2012/02/26(日) 11:35:02.59 ID:???
勉強したくないなら なぜ潰しが効かない、汎用性が低いphpなのか不思議。 汎用性が高い言語選べばよかったのに。
どの言語でもできることとできないことがある 1つの言語習得すれば金輪際勉強せずに済む言語なんて皆無
しょうがないから建ててくるか
995 :
nobodyさん :2012/02/26(日) 11:56:49.85 ID:yp5CCX+k
>>986 ありがとうございます。助かりました。
複数行というより、わざわざ配列にするのが気持ち悪くて…。
996 :
sage :2012/02/26(日) 12:01:13.12 ID:???
>>974 phpのオブジェクト指向はなんちゃってレベルだから。
他の言語ではphpの経験は生かせないよ。
そいういうこと書いてるようじゃ 大してオブジェクト指向の考えというのを理解できてないな
>>996 >phpのオブジェクト指向
どれだけあほなこと言ってるかわかるか?もっと勉強しろ。
999 :
sage :2012/02/26(日) 12:24:07.98 ID:???
phpのオブジェクト指向機能の実装
1000 :
sage :2012/02/26(日) 12:25:05.67 ID:???
PHPer、ダメポ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。