【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0115nobodyさん
2007/04/03(火) 09:56:40ID:L8WULHx8mb_ereg("^[^!-~]|[^0-9]", $hoge)
じゃなくて
mb_ereg("^[^\!-~]", $hoge)
でしょ。
0116111
2007/04/03(火) 10:42:38ID:/c/AyO3Fどっちにしても良く分からないんだけど
mb_ereg_match ("[a-z]+", "asZ")
がtrueを返すのは何ででしょうか?
pregは思ったとおりの挙動をするんだけどなあ
なんか勘違いしてますか?
0118nobodyさん
2007/04/03(火) 11:08:46ID:???カタギのjoomlaか?ヤクザなdrupalか?
でも良く考えたよなぁー オープンソースを占有するなんてさー
タダで日本支部になって価値がが上がれば高く売る。
drupalは成長株だから浸透すればスゴイ価値が付くとおもうよー
GPLだと占有しても刑事事件にならないからねっ
0119nobodyさん
2007/04/03(火) 11:28:18ID:/TnKR6mx$_SERVERのどの変数で判定すればいいのでしょうか?
Proxyについての知識は全くないので仕様とかさっぱりなのですが、
最近掲示板(PHPでできたもの)がProxy経由で荒らされてるので、
Proxy判定するプログラムを組み入れたいと思っています。
0120nobodyさん
2007/04/03(火) 11:50:16ID:???0121nobodyさん
2007/04/03(火) 12:07:54ID:???getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR']
これが真になれば逆引きできねーってことになって判定するとか。
0122119
2007/04/03(火) 13:25:08ID:FtC4cK4Mありがとうございます。
教えていただいたものを使ってみたところ、
診断くんで?判定になるProxyでも見事Proxy判定にすることができました。
こんな簡単なスクリプトだとは思っておりませんでした。
まだ取りこぼしているものもあるようなので、
他の方法を探して、それと組み合わせて使うことにします。
0123nobodyさん
2007/04/03(火) 14:11:47ID:???例えば、会員情報の変更phpで、
WHERE句を忘れていて、謝って全会員の情報を変更してしまう、
といったポカミスが発生しやすいあふぉな俺なんですが、
MySQLレベルでこれを防ぐ方法ってないでしょうか。
0124nobodyさん
2007/04/03(火) 14:16:04ID:???勉強ならいいが、公開する気なら・・
0126nobodyさん
2007/04/03(火) 14:34:41ID:???変更する前には必ず
BEGIN;
で、「あっー」ってときは
ROLLBACK;
でいいんじゃね?
0128nobodyさん
2007/04/03(火) 15:18:52ID:???0129nobodyさん
2007/04/03(火) 15:20:50ID:pT0TAH0Vecho $row["comment"];
のような形では出力できないんでしょうか?
0130129
2007/04/03(火) 15:33:12ID:???0132虚弱PHP
2007/04/03(火) 16:15:10ID:???常にスクリプトを通してDBいじるしかないんじゃ。
スクリプトではWHERE句が付いてなかったらNGとか。
UPDATEには必ずLIMIT句つけるとか。
でも、これだと逆に問題の発覚が遅れる恐れ有り。
0133nobodyさん
2007/04/03(火) 16:26:24ID:???0135nobodyさん
2007/04/03(火) 16:38:45ID:???例えば複数のデータをinsertする場合、全件のデータをDAOに渡してDAOの中でループさせてクエリを発行しますか?
もしくはロジック側でループさせて最小単位まで分割し、1行ごとにDAOを実行しますか?
またDAOのメソッドは一つの機能に特化して実装すべきですか?それとも汎用性を持たせるべきですか?
where句やorder句などをDAOメソッド内で記述してその条件のみ取得させるか、
ロジックからDAOへ引数としてそれらを渡す形にして他の場所でも使えるようにするかで迷っています。
0137nobodyさん
2007/04/03(火) 16:51:20ID:???おれはデバックはprintにしてメインはecho
0138nobodyさん
2007/04/03(火) 16:52:11ID:UEWlkpj30141nobodyさん
2007/04/03(火) 17:49:25ID:???DAOのベースになるクラスで汎用的なメソッドを実装して
各モデル毎のDAOで必要になる固有のメソッドを
ベースクラスの汎用的なメソッドを使いつつ実装していけばいいんじゃない?
機能に特化したメソッドにするかしないかは
機能次第で使いまわすケースが多ければ
引数である程度自由度を持たせるとか
その例だと複数のデータをinsertする箇所がたくさんあるなら
それのためだけのメソッドを用意して、そうでなければ
ビジネスロジック側でループさせてもいいんじゃない?
0144nobodyさん
2007/04/03(火) 19:11:46ID:UEWlkpj3Flex
0146nobodyさん
2007/04/03(火) 19:18:30ID:???0148nobodyさん
2007/04/03(火) 20:14:32ID:???ハゲてるだろ?
上記ログが連なったログの一行を削除して
再度番号を振り、配列しなおす場合具体的にどのような
プログラムになるのでしょうか?
0153nobodyさん
2007/04/03(火) 20:36:43ID:???echoに括弧を付けてはいけない。
echo $hoge,$hoge * 1000,number_format($hoge);
ドット演算子だと
echo $hoge.($hoge * 1000).number_format($hoge);
こうしないといけないし内部的に結合してやる必要性はないと思う。
0154nobodyさん
2007/04/03(火) 21:05:30ID:???デバックのときくらいしか使わないかな〜
0155111
2007/04/03(火) 21:08:25ID:3FiNTxl4>>117
レスサンクス
var_dump ( mb_ereg ( $pattern, $hoge ,$c ) ) ;
var_dump ( $c ) ;
ってやったら、なんでtrueが帰るのか解りました。
"^[^!-`].*}$"
こんな感じかな?
自分のかきこ良く見ると英数記号とあるけど、半角記号と数字以外の間違いでした。
だから、範囲の指定もこんな感じかな。
>>115
ちなみに[]の中はエスケープ不要みたいですよ。
0156nobodyさん
2007/04/03(火) 21:09:39ID:???俺様に恥をかかせるのか!
0158nobodyさん
2007/04/03(火) 21:20:05ID:???これを使うために、いちいちすべてのファイルでrequire_onceするのが面倒なんですが、
何かいい方法はありませんか?
0160nobodyさん
2007/04/03(火) 21:28:58ID:???└─┘
おらっしゃあぁぁ!!!
∩∧ ∧
ヽ( ゚Д゚)
\⊂\
O-、 )〜
∪
0161nobodyさん
2007/04/03(火) 21:33:47ID:???意味不明なんだが・・・
0162nobodyさん
2007/04/03(火) 21:40:10ID:???php.ini auto_prepend_file
・PHPで書く
・問答無用で一番最初に読み込まれる
php extensionとしてphpの関数に含める
・Cで書く
0164nobodyさん
2007/04/03(火) 21:46:37ID:???0165nobodyさん
2007/04/03(火) 21:49:35ID:y3kK4c5q$pattern = '/two (.+)\,/';
preg_match($pattern, $subject, $matches);
print_r($matches);
/* 出力結果:
Array
(
[0] => two potatoes, three carrots,
[1] => potatoes, three carrots
)
*/
正規表現で "potatoes" をマッチさせたいのですが、$matches[1]を見ると
コンマの後ろの文字列までマッチしてしまいます。
どうしてでしょうか?
0167nobodyさん
2007/04/03(火) 21:56:57ID:y3kK4c5q"potatoes"がマッチするにはどう表現すればいいのでしょうか?
0168nobodyさん
2007/04/03(火) 21:58:31ID:???正規表現は原則として、最長最左一致をします。
これはどういうものかというと、可能な限り長めにマッチするということです。
その正規表現の例で言うと"two "のあとに1文字以上の任意の文字が来て、
その後にカンマがついていればいいことになります。
そしてその最長のパターンはというと、あとは考えてみてくださいw
0170nobodyさん
2007/04/03(火) 22:02:20ID:???$pattern = '/two ([[:alpha:]]+),/';
というか妙な正規表現の使い方だな。
上記ナンバー+1 名前 内容 日付 パスワード
上記ナンバー+1 名前 内容 日付 パスワード
このようにログが並んでいるのですが
例えば上から二行目のログのみを
削除する場合具体的にどのような関数を私用すればいいのでしょうか?
その際削除した行以降のナンバーを再度正しく振り直したいのです。
0173nobodyさん
2007/04/03(火) 22:07:30ID:???$pattern = '/two (.+?),/';
$pattern = '/two ([^,]+)/';
0175nobodyさん
2007/04/03(火) 22:13:04ID:y3kK4c5q0178nobodyさん
2007/04/03(火) 22:25:27ID:???<?php
ログを配列に読み込む処理
配列の上から2件を削除する処理
配列をログに書き込む処理
?>
こんな感じでいかがか?
すいません、関数自体あまり把握できてなくて
ちょっとつまづいております、
ありがとうございます。
>>176
関数の意味を調べてみます、
お手数おかけします。
>>177
このログにフォームのラジオボタンつけて出力する時に
利用するからだったと思います。
自分で作っといてあれですが目の前の事で手一杯で。
>>178
十分です、
本当にすいません。
0182nobodyさん
2007/04/03(火) 22:43:07ID:/5XcJrtX必要な部分をeucのページに表示させたいと思っています
echo mb_convert_encoding($str_utf8, "EUC-JP", "UTF-8");
としてみたのですが、丸数字(@A…)が半角の“?”になってしまいます
ご教示いただけませんでしょうか
http://www.pachiweb.com/updir/data/card.jpg
データベース機能とゲストブック機能を合わせた
phpを作りたいと思い先程書き込ませていただきました。
ログに番号ふっているのはログを出力する際、
フォームのラジオボタンのvalueに代入して
削除に利用するためです。
現在、書き込みの際に情報かコメントか分けて保存し
最新の情報書き込み5行、
コメント書き込み5行を表示するところまでは
完成しました。
0187182
2007/04/03(火) 23:11:04ID:???検索などをしてみてはいたのですが、php.iniの文字コード設定を、
というのが多くていろいろ試行錯誤してみてはいるのですが・・・
再度見直してみたいと思います
>>185
mb_convert_encodingの引数ですよね?今検索して初めて知りました
こちらも試してみたいと思います
おふた方どうもありがとうございました
0189nobodyさん
2007/04/03(火) 23:19:03ID:???1. A君がフォームを表示。
2. B君がフォームを表示。
3. A君が番号2のログを削除。
4. B君が番号3のログを削除。
5. (ノ∀`) アチャー
現在のプログラム自体アウトですかね?
一応、
現在作成中のものはバリューに入れる番号をコメントは1,2
情報はa1,a2になるようにしようと思うのですが。
そういう問題ではなくて?
0191182
2007/04/03(火) 23:39:28ID:???ほんと、おっしゃる通りだと思います・・・
>>190
横からなんなんですが、削除が起こってもそこを埋めない(書き込み)通番を
持っておくべきだと思います
表示上番号が飛ぶのが気持ち悪いのでしたら行番号を表示されればいいのでは
ないでしょうか
おっしゃるとおりですね、
行番号をvalueに挿入するようにします。
これがかなりネックになってましたので。
0193155
2007/04/04(水) 00:03:54ID:jkYA50BDそんなつもりはなかったんだ。
「ちなみに」っていうのはまずかったね。
すまん。
ところで>>155のレスでもまたASCIIコード見間違えてて微妙に間違ってたOTZ
いないとは思うけど、ここ見てあれ使う人がいたら悪いので一応報告しとく
最初の文字が数字と記号と制御文字以外の文字列にマッチする正規表現は
'^[^\W0-90-9].*$'
こんな感じでどう?
なんか微妙に板違いだけど・・・
0195nobodyさん
2007/04/04(水) 00:14:16ID:???ログを全て表示した時にも
ラジオボタン削除利用したいので
フォームへのvalue値の自動挿入はしときたいのですが
無謀ですかね。
0198nobodyさん
2007/04/04(水) 00:30:35ID:???0199nobodyさん
2007/04/04(水) 00:35:05ID:???番号抜けアリのラジオボタンを並べりゃ「ラジオボタン削除が利用できる」けど
富豪的に>>178でやればいいよ。配列に何MB食わせるのか知らないけど。
削除用のラジオボタンとやらをログのナンバーと無関係に連番振って吐いてるのかな。
0200nobodyさん
2007/04/04(水) 00:42:47ID:???っつーか何がしたくて今何が問題なのかがよくわかんないんだけど.。
ログを全て表示した時にラジオボタン削除(って何なのか知らんけど)をするために
フォームへのvalue値の自動挿入(hiddenのことか?)することは
別に無謀でも何でもないからさっさと作ればいいと思うけど
0201nobodyさん
2007/04/04(水) 01:01:03ID:???そろえたものをログに書き込むのは必要ないし効率が悪いからやめたまえ。
ログを配列に読み込んで、その配列を連番でvalueに利用すればおまえのやりたいことはできる。
つべこべいわずだまってマニュアルみろ。
16歳、工業高。
0202nobodyさん
2007/04/04(水) 01:02:13ID:???氏ね
countでカウントしたものを
ラジオ削除のナンバーに置き換えて処理するようにして
それで手におえないようなら
番号抜け削除を次候補という事で考えてみます。
本来ならあぼーんが掲示板の性質上いいのでしょうが
今回は比較的単純なスクリプトで後に大量設置する可能性があるもので
文字数省略できるところはしとこうかと。
>>199
削除用番号はログのナンバーを引用してます。
>>200
すいません、
html部分に先にvalue手打ちで書き込んどけということかと思ったもので
ログ利用では駄目なのかなと。
0204nobodyさん
2007/04/04(水) 01:02:42ID:???0206nobodyさん
2007/04/04(水) 01:03:41ID:???0207nobodyさん
2007/04/04(水) 01:04:17ID:???0208nobodyさん
2007/04/04(水) 01:08:09ID:???そもそも「行の順番」て何だ? DBでそんな概念あるか?
0210nobodyさん
2007/04/04(水) 01:12:03ID:???0211nobodyさん
2007/04/04(水) 01:23:36ID:???1年ぐらい前にその関数使ってゴニョゴニョしたら5〜6分かかってたバッチ
処理が2秒で終わったことがあった。
ちゃんとテストして処理に抜けとか問題は無かったけどあまりにも早すぎて
怖くなってから元に戻しておいた。
0212nobodyさん
2007/04/04(水) 01:27:53ID:???■ このスレッドは過去ログ倉庫に格納されています