【PHP】下らねぇ質問はID出して書き込みやがれ 82
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/09(月) 02:14:28ID:HyrthkeE過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0574nobodyさん
2009/03/23(月) 22:33:45ID:???>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。
0575nobodyさん
2009/03/23(月) 22:38:01ID:???保存されてしまうことによって再利用するとき不便になるからだね
0576nobodyさん
2009/03/23(月) 22:58:16ID:???0578nobodyさん
2009/03/23(月) 23:45:08ID:uVBii4+5PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?
0579nobodyさん
2009/03/23(月) 23:53:02ID:???でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?
0580nobodyさん
2009/03/24(火) 00:01:55ID:???100%ってことはないので出口でサニタイズしろってエロい人が言ってた
0581nobodyさん
2009/03/24(火) 00:17:34ID:???0582nobodyさん
2009/03/24(火) 00:41:05ID:???PHPのバージョンは?
DOS窓から、php -mや、php -iって打っても、エラー出る?
5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?
0583nobodyさん
2009/03/24(火) 04:21:02ID:???echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?
0584nobodyさん
2009/03/24(火) 04:25:00ID:???出力だけしてくださいよ
0586nobodyさん
2009/03/24(火) 04:26:30ID:???echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )
0589nobodyさん
2009/03/24(火) 04:30:23ID:???<?php
$a[0] = 'aaa';
$a[0][1] = 'jjjjk';
print_r($a);
Array ( [0] => aja )
0590nobodyさん
2009/03/24(火) 04:32:35ID:???バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。
0594nobodyさん
2009/03/24(火) 04:39:30ID:???0595nobodyさん
2009/03/24(火) 04:42:07ID:???自分初心者だったのでこんなのあったんだとびっくりしました
0597nobodyさん
2009/03/24(火) 04:49:11ID:???そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました
0598nobodyさん
2009/03/24(火) 07:45:46ID:???0599nobodyさん
2009/03/24(火) 07:53:32ID:???単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ
0600586
2009/03/24(火) 08:34:05ID:???初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。
0601nobodyさん
2009/03/24(火) 08:34:37ID:???0602nobodyさん
2009/03/24(火) 08:52:05ID:???バグ
>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345
0604nobodyさん
2009/03/24(火) 08:56:49ID:???0605nobodyさん
2009/03/24(火) 09:01:48ID:???静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている
0606nobodyさん
2009/03/24(火) 09:45:45ID:VfITkfEnversionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました
C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。
C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、
0607586
2009/03/24(火) 19:06:44ID:???$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい
0608nobodyさん
2009/03/24(火) 19:09:04ID:???記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。
以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。
0611nobodyさん
2009/03/24(火) 20:09:50ID:???置き換わる理由は仕様だから。それだけ。
$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";
$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}
echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";
0613nobodyさん
2009/03/24(火) 20:15:53ID:???0614nobodyさん
2009/03/24(火) 20:36:16ID:???phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。
以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。
0615nobodyさん
2009/03/24(火) 20:37:10ID:???0616nobodyさん
2009/03/24(火) 21:07:22ID:/zsLtnA9複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします
0617nobodyさん
2009/03/24(火) 21:09:24ID:???0618nobodyさん
2009/03/24(火) 21:18:30ID:???再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな
0619606
2009/03/25(水) 00:12:15ID:4yhBz/QX>>612
そうなってました
>>614
C:\WINDOWS でした。正しいですよね…
>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな
0620nobodyさん
2009/03/25(水) 00:32:37ID:???ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。
ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。
0621nobodyさん
2009/03/25(水) 01:59:46ID:???環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。
自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。
0622nobodyさん
2009/03/25(水) 11:16:26ID:yQlt60AAそれとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか
0623nobodyさん
2009/03/25(水) 11:18:39ID:???0624nobodyさん
2009/03/25(水) 15:06:05ID:Ijn9qBqlでhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#〜;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?
0625nobodyさん
2009/03/25(水) 15:15:24ID:???0626nobodyさん
2009/03/25(水) 16:45:47ID:???一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?
header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。
0627626
2009/03/25(水) 16:47:05ID:7ip+uIiL0629nobodyさん
2009/03/25(水) 19:52:08ID:Ut4OfJaEシステムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。
スペックはアパッチ、PHP5
0631nobodyさん
2009/03/25(水) 20:38:00ID:???0632nobodyさん
2009/03/25(水) 20:47:09ID:???「リロード対策」というキーワードでググると
情報が出てくる。
だが、自分には複雑すぎて理解できなかったが。
0633nobodyさん
2009/03/25(水) 21:30:14ID:POBIuYeehttp://kokusan.syokuryo.jp/blog_parts.html
このblogパーツですが中身のjs↓
http://kokusan.syokuryo.jp/blogparts/kokusanParts.js
を機能丸ごと再現してみたいのですが(用途は勉強、兼遊びで)
再現するのに
■サーバサイドの技術は何が必要か
■ローカル側は.jsだからとりあえずはコピペで十分?
という所で(入口ですが)詰まってます。
どなたかご助言plz
0634nobodyさん
2009/03/25(水) 21:32:29ID:???0635nobodyさん
2009/03/25(水) 21:50:38ID:???画像データをメモリ上に読み込んだりしない限り
そんな使うことはないだろ
重い処理なんていってもPHPの場合たかがしれてる
0636nobodyさん
2009/03/25(水) 23:08:42ID:???そうですね
そもそも&までエスケープする仕様はやりすぎのような・・
2chでも&はエスケープしてないし。googleも。
0638nobodyさん
2009/03/26(木) 00:04:21ID:???気に食わないなら文句言ってないで自分で実装すりゃいいじゃん。
単純に置換するだけだから、str_replace一発でできるぞ。
俺はやりすぎとは思わないな。入力文字列をそのまま画面に出力したいなら、&の置換もしたほうがいい。
0639nobodyさん
2009/03/26(木) 00:25:15ID:l1PHOXdz何かスマートな方法はありますでしょうか?
(例)
1.0以上1.5未満 => 1.0
1.5以上2.0未満 => 1.5
2.0以上2.5未満 => 2.0
よろしくお願いします。
0642nobodyさん
2009/03/26(木) 00:39:59ID:???安全にこしたことはないですが、今回は実体参照を頃されてしまうのが問題なので・・
それにしても、エンコードを意識せず、単に置換したらいいだけなんですか?
だとしたら、htmlspecialcharsのエンコード指定は何に使われているんだろう
0644nobodyさん
2009/03/26(木) 01:05:32ID:fG8U3yBv$where_ary = array("id"=>"1","name"=>"あああ");
foreach($where_ary as $key=>$value){
$array[] = $key."='".$value."'";
}
$where = join("&",$array);
と言うように連想配列を使って生成しています。
上記のようにすると、変数に値が入っている場合は大丈夫なのですが、
MySQLの関数(NOWやDATE_FORMATなど)を使いたい時、使えません。
かといって値の部分に関数を記述しても文字列となります。
もっと効率よく生成するには、どのようにすれば良いのでしょうか?
0646nobodyさん
2009/03/26(木) 01:23:03ID:???Zend_Dbの実装はこんな感じ
http://framework.zend.com/manual/ja/zend.db.html#zend.db.adapter.quoting
0647nobodyさん
2009/03/26(木) 01:52:56ID:???0648644
2009/03/26(木) 02:06:29ID:???これは非常に参考になります。
実際に自分もSQL文の生成にはクラスを使っているので
Zend Dbを参考に、独自の仕様にしてみます。
0649nobodyさん
2009/03/26(木) 11:39:12ID:p1YkL4wyある程度インラインで入力してからまとめて実行したいのですが、
どうすればできますか?
0651nobodyさん
2009/03/26(木) 18:55:54ID:JIscrcVE0653nobodyさん
2009/03/26(木) 19:02:58ID:???それか、そのファイルに対する最終アクセス時刻を記録しておいて、
「前回のアクセスは3日前だな、、、
だったらよし、今回は3日分の処理を一気にやればいいんだな」
とかってプログラムで判断させて、アクセスするたびに
その処理を実行するとか。
もちろん、この場合、アクセスがなければ処理も実行されない。
0654nobodyさん
2009/03/26(木) 19:03:41ID:???それがUNIXのcronと同じ。
0655nobodyさん
2009/03/26(木) 19:08:12ID:???こういうこと?
ttp://phpspot.org/blog/archives/2005/11/croncronphp_pse.html
0656nobodyさん
2009/03/26(木) 19:31:31ID:???web cron
0657nobodyさん
2009/03/26(木) 20:06:05ID:???0658nobodyさん
2009/03/26(木) 20:59:43ID:JIscrcVE0659nobodyさん
2009/03/26(木) 21:05:33ID:???STDINを使えという話ではなくて?
http://jp.php.net/manual/ja/features.commandline.php
0660nobodyさん
2009/03/26(木) 21:23:14ID:ih4lRG32どうにもうまくヒットさせることができません
/** */ */
の時に長い方がマッチされてしまいます
どう書けばいいですか?
0661nobodyさん
2009/03/26(木) 21:32:53ID:???0663nobodyさん
2009/03/26(木) 23:16:05ID:46RAjvuH0664nobodyさん
2009/03/26(木) 23:23:56ID:???0665nobodyさん
2009/03/27(金) 07:08:11ID:viybN2w6ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした
0666nobodyさん
2009/03/27(金) 08:05:52ID:???既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。
http://jp.php.net/manual/ja/book.tokenizer.php
0667nobodyさん
2009/03/27(金) 09:19:56ID:DtOzsPN+移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?
0668nobodyさん
2009/03/27(金) 09:23:54ID:???0670nobodyさん
2009/03/27(金) 15:35:49ID:LbT/oMC/モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?
0671nobodyさん
2009/03/28(土) 00:29:13ID:???MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。
0672nobodyさん
2009/03/28(土) 00:34:00ID:???0673nobodyさん
2009/03/28(土) 02:42:46ID:???バリデーションがCはありえない
■ このスレッドは過去ログ倉庫に格納されています