【PHP】下らねぇ質問はここに書き込みやがれ 50
1 :
nobodyさん :
2007/07/11(水) 17:50:01 ID:fYd+34US まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
2 :
nobodyさん :2007/07/11(水) 17:56:45 ID:fYd+34US
3 :
nobodyさん :2007/07/11(水) 17:57:27 ID:fYd+34US
4 :
nobodyさん :2007/07/11(水) 17:58:11 ID:fYd+34US
【簡易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プログラムとして実行された結果になる。
5 :
nobodyさん :2007/07/11(水) 17:58:52 ID:fYd+34US
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に保存?
→ 好きにしてください
, イr二二ニ、ヽ くイ/彡久ヽ*、\ /*ハ´ > <`fヽY その質問は下らなくねぇですぅ ぐィてl "" △""儿、\ 下らねぇ質問は r‐/ /‐ゝー,-ォイ_入_ > ここに書き込みやがれ 〈 久_,ィ| <_斉_>|_,ィ \| こんちくしょー /∨:.:.:.:.:| 爻 | :.:.:゙┬┘ /.:.:.:.:.:.:.:.:.>イvトイ:.:.:.:.:.:ヽ /.:.:.:.:.:.:.:/〃 ヾ\.:.:.:.:.ヽ_ rー' ̄.:.:.フ 《 》 弋.: ̄.:.:.7 ヽ.:.:._;..-/ ヾ、 〃 ヽ-.;_/
7 :
nobodyさん :2007/07/11(水) 20:08:51 ID:TGVvUtvj
phpでmysqliな話。 prepared statement 実行。 $st->prepare(...) $st->bind_param(...) $st->execute(); $st->store_result; の後で fetch_assocが実行できない。 preparedじゃなくて $st->query() の後なら実行できる。 散々調べたので、 "fetch_assoc()はprepared statementの後では実行できない” 気がする。 それでいいのかな。 もしそうならソース教えて。みつからん。
はぁ?
994 :nobodyさん:2007/07/11(水) 13:32:19 ID:??? 来月、php6.0のβ版がリリースされるとのことですが、 この件について熱く語ってください。 995 :nobodyさん:2007/07/11(水) 13:42:35 ID:??? 6は素数
ついにこのスレも50にまで到達したか
>>9 α版ダウンロードしてテスト環境にいれて使ってみてるけど、
phpにデータ構造を定義してDBの種類を指定すると、
それに対応したSQL文が出力されたりする。
今まで、力技でやっていたことがほぼ自動化されている。
あらゆる高級言語で最高の開発効率じゃないかなぁ。
12 :
nobodyさん :2007/07/12(木) 10:41:33 ID:uQiGe5BL
session_unsetでセッションを破棄した場合 自身のセッションと他にセッションを利用している ユーザーのセッションも破棄されてしまうという事なのでしょうか? マニュアルも読みましたが現在登録されている全ての セッション変数を開放します。 としかなく全てというのが何処まで影響力を持つのかがわかりません
試せば解決
14 :
12 :2007/07/12(木) 10:52:27 ID:uQiGe5BL
>>13 実際に使っているがわからんから聞いているのだけど…
ユーザー認証でセッションを使っていてログウト時に
session_unsetをさせている
だけど最近よくセッションタイムアウトを起こすような
タイミングでもないのにセッションが切れる
複数人(50〜100)が出入りする環境なので試せない
自身ひとりで3〜4台程度のPCだと問題ない
>>14 session_unsetは、全てのセッションファイルを削除する。
そもそもセッションは、セッションファイルをサーバー側に作って、
ファイルによってセッションを管理しているが、session_unsetを実行すると、
セッションファイルを作るフォルダが全て消去される。
つまり、セッションが現在繋がっているユーザーのセッション情報が全て廃棄されるので
普通は使わない。
特定のユーザーだけのセッション情報を破棄したいのなら、
セッション名を指定して廃棄するしかない。
嘘を書くのはやめろ
17 :
12 :2007/07/12(木) 11:26:30 ID:uQiGe5BL
>>15 クッキーからセッションID引っこ抜いて破棄するように
組み替えた
とりあえずこれで症状が出ないかしばらく様子をみます
ありがとう
テスト環境で試せば良いのにねぇ
>>14 ログアウトとかでセッションをリセットする場合って普通は
$_SESSION = array();
ってやんないか?
何か、このスレ嘘回答ばっか…
俺はunsetでやってるけどどうなんだ?
現在のステータス:質問1、糞質問1、嘘回答1、糞回答1
>>21 面倒臭くね?
23 :
12 :2007/07/12(木) 14:15:25 ID:???
>>18-20 鵜呑みにはしていないので…
ちなみにマニュアルに載ってる以下の方法で組みなおしてある
15がヒントになったのは確かので感謝はしてる
// セッション変数を全て解除する
$_SESSION = array();
// セッションを切断するにはセッションクッキーも削除する。
// Note: セッション情報だけでなくセッションを破壊する。
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 最終的に、セッションを破壊する
session_destroy();
>>12 >マニュアルも読みましたが現在登録されている全ての
>セッション変数を開放します。
>としかなく全てというのが何処まで影響力を持つのかがわかりません
まあ、とりあえずマニュアルに付帯しているUser Contributed Notesぐらいは読もうね。
マニュアル嫁っていうやつは、マニュアルのどこを嫁ってのを書いたほうがいいかと思う
>>25 User Contributed Notesって書いてるだろ。それを全部読め
27 :
25 :2007/07/12(木) 14:27:35 ID:???
>>26 いや、俺は質問者じゃない
むしろ俺はセッション破棄にunset使ってるやつだ
いつまでも嘘ばっか言ってんじゃねーぞ!
29 :
nobodyさん :2007/07/12(木) 14:52:58 ID:cyViohry
携帯の通信方式を取得することはできませんか? auの2GだったらCDMAとか・・・。 携帯のキャリア&2Gor3Gを取得したいのですが、何かお勧めの方法などがあれば教えてください。
>>29 キャリアはUAで解ると思う
通信方式はキツイ、別にサーバーまでその方式で通信してきている訳じゃないし、機種から判断するぐらいしか無いんじゃないかな
31 :
nobodyさん :2007/07/12(木) 15:00:53 ID:cyViohry
>>30 なるほど。ありがとうございます。
リモートホストでキャリアを判別して、
UAで機種を振り分けですね。
>>31 や、UAで機種がわかればそっからキャリアも解るでしょ?
確かにリモホでやった方が楽だけど、どの道UAで振り分けるんだからいっぺんにやっちゃった方がリモホ分の労力浮くと思うよ
UserAgent偽装のPCをはじきたいんでしょ
35 :
nobodyさん :2007/07/12(木) 16:00:17 ID:cyViohry
>>33 >>34 さんの仰るとおり、偽装PCを弾きたいのです。
携帯サイトは完全3Gのみ対応のサイトにしたいので、2Gも弾きたいです。
UAで偽装弾きたいっていう人たまに見かけるけど、偽装の件は別にして、 PCでケータイ用の画面見られることに不都合ってあるの? IPの帯域でケータイUAを弾くと、Yahooやgoogleのケータイ用のrobotが偽装するUAも弾くことになるから、 検索エンジン経由でケータイサイトに来る人がいなくなるよ。
自作の着メロ作ってる人はPCで無断コピー・配布されたら困るし、 自作のプログラム配布している人は逆コンパイルされたら困るし、 クライアント様は検索エンジンなんて二の次だし、 そもそも検索の下位のサイトは検索エンジンの価値がないし
>>37 お前馬鹿かと思っていたけど、良いことも言うんだなぁ。
感心感心
763 名前: nobodyさん [sage] 投稿日: 2007/07/12(木) 17:47:34 ID:??? セッション使うより 会員制サイトならユニークIDにしたほうが効率よくない? セッションだと セッション→ID&PASS→DBより一致するデータを取得 ユニークIDだと ユニークID→一致するデータを取得 GETにでも入れておけばいいんじゃね?
(・∀・)
どこがだよ
>>42 どこがじゃねーだろオマエ!!
GETにしたら、そこから他のホームページに跳んだときに、
リファラーで、セッションを簡単に盗まれるだろうww
オマエのHPはそんなアホな設計してんのか?
>>39 その設計だと某アホーの子会社のように
クレジット番号入りの書き込みをされたお問合せ内容
を全部みられてあせらなければならなくなるぞ
>>43 毎回ユニークIDを変えるか、
リンク先とのページの間にime.muみたいにページ挟めばいいだけじゃね?
>>45 とんだ先の人間より
むしろ見ている人間のほうがたち悪い
と思うのだけど…
>>45 >リンク先とのページの間にime.muみたいにページ挟めばいいだけじゃね?
そんなめんどいサイト使いたくないな
>>47 だったらJavaScriptか何かで飛ばせばよくね?
セキュリティ上もそうだけど会員オブジェクトなんかセッションにいれとかないと面倒でしょ 各画面でログインしてる人のニックネームとか表示するときに毎回DBにアクセスするのか?
>>49 何かその設計思想もおかしいようなぁ。
二重ログインした場合のデータの更新衝突とか考慮してないだろ?
>>46 どっちにしろ、会員ページなんて全てのページにDB接続があるようなもんだろ
小手先のオンパレードですね。
小手先じゃなくて小手指だろw
小手指?
56 :
nobodyさん :2007/07/12(木) 19:42:13 ID:lBVkotIg
データベースからの取得や更新について詳しくかいてるサイト教えてください
ここだとわかりにくいんです><
phpじゃなく、SQLが知りたいんだと思う。
61 :
nobodyさん :2007/07/12(木) 21:14:44 ID:xgT4qcJe
>>56 プログラマのためのSQL ジョー セルコ
SQLポケットリファレンス 朝井 淳
自分の使うDBの中級者本
あとphpの環境ぐらい書いとけ
プログラマのためのSQL いきなり読む本じゃない。 もっとマシな紹介しろよ。
>>63 文字数が多いだけで普通に初歩本だと思うけど
つかコレが読めないような方は値段見た時点で買わないと思う
つかそう思うならオススメあげとけよw
65 :
nobodyさん :2007/07/12(木) 23:04:18 ID:v1n4UJF6
PHPでこういう事出来ますかね? あるサイトにアクセスして、一定時間表示されなければ、その処理は中断する。 fopenでURLを開くと同時に開始時間をスタートさせ、 一定時間経っても何らかの情報が取得出来ない場合は、次のURLを読み込む というやり方で出来る気がしますが、まだ空想の段階です。 もし、出来そうならヒントとなる関数や組み立て方を教えて下さい。
>>65 stream_set_timeout
でできるよ。
メールサーバからの大量受信とかもこれでリトライとか、あきらめて次の処理とか出来る。
67 :
65 :2007/07/12(木) 23:10:33 ID:???
>>66 ありがとうございます!早速調べてみます。
>>64 「w」頭悪そうだね。
ま、悪いんだろうけど。
69 :
nobodyさん :2007/07/12(木) 23:58:27 ID:2QVskV9M
バカ皿仕上げ
68 名前:nobodyさん[sage] 投稿日:2007/07/12(木) 23:12:54 ID:???
>>64 「w」頭悪そうだね。
ま、悪いんだろうけど。
70 :
nobodyさん :2007/07/13(金) 00:08:35 ID:r6mqeqmj
さらにバカ皿仕上げ
69 :nobodyさん:2007/07/12(木) 23:58:27 ID:2QVskV9M
バカ皿仕上げ
68 名前:nobodyさん[sage] 投稿日:2007/07/12(木) 23:12:54 ID:???
>>64 「w」頭悪そうだね。
ま、悪いんだろうけど。
forやforeachを使わずに、配列の中身を一気に 出力する方法って無いですかね?print_rやvar_dumpでもなく。
var_export
73 :
nobodyさん :2007/07/13(金) 05:18:35 ID:zCZ7I7UC
2ちゃんねるの投稿規制について教えてください。 書き込むときにクッキーが使えないと書けない仕様ですが、 クッキーを消しても時間規制にひっかかってしまいます。 そこでこのような2ちゃんの使用を勉強したいのですが、 クッキー以外にどこに記録がのこっているのでしょうか?
2chのサーバー上
>>73 180秒規制をなんとかしようとしても無理だよ。
76 :
nobodyさん :2007/07/13(金) 06:57:24 ID:zCZ7I7UC
ありがとうございます。 ということは、サーバに記録をのこしておけばクッキーが消されても規制できるということですね。 セッションを使えば同じことできますか?
セッションなんてクライアント側から切れるだろ 2chみたいな大規模な所は知らないけど、最近投稿したipを記録しておけば十分でしょう
78 :
nobodyさん :2007/07/13(金) 08:20:18 ID:zCZ7I7UC
ありがとうございます。試行錯誤して造ってみます
テンプレートエンジン(Smarty)のスレが見つからないんだけど ここに書いてもいいのかな
>>78 例えば、以下のようなテーブルを作成すればできる
TBL_POST_IP
POST_DATE TIME_STAMP
IP_ADDRESS VARCHAR(15)
PRIMARY KEY をIP_ADDRESSに付ける
接続されたら
SELECT MAX(POST_DATE) MAX_POST_DATE FROM TBL_POST_IP WHERER IP_ADDRESS = '$_SERVER['REMOTE_HOST']'
MAX_POST_DATEが現在日時よりも一定時間経過していなければ
header("Location:
http://www.yahoo.co.jp/ ");
exit;
問題がなければ、
INSERT INTO TBL_POST_IP VALUES(NOW(), '$_SERVER['REMOTE_HOST']');
を実行すればよい。
81 :
80 :2007/07/13(金) 08:51:02 ID:???
あと、このテーブルはアクセスごとにデータがたまっていくから、 cronなどで適時消す必要がある。 例えば、一日ごとに、 DELETE FROM TBL_POST_IP WHERE TO_DAYS(POST_DATE) < TO_DAYS(NOW()) を実行すれば、昨日分のデータを全て消えるし、 毎日のデータ量もそれほど行かないと思う。 又は、このデータは永続的に保存しておきたいのなら、 INSERT INTO BACK_UP_TABLE SELECT * FROM TBL_POST_IP とすればいい。
PKつけてるのにMAX(POST_DATE)って。DELETE→INSERTしないとぶつかるよ しかもIPだと同じ会社で他のやつが書き込みしたら、いきなり書き込み制限されそう
83 :
80 :2007/07/13(金) 08:55:25 ID:???
>>81 の補足で、
最後に書いたBACK_UP_TABLEのデータ構造だけど、
TBL_POST_IPと一緒にしておくことを忘れずに。
あとは、一回毎のアクセスの旅にTABLEにアクセスして
パフォーマンス劣化が心配であれば、
TABLEを作る際に、MOMORYテーブルにすればかなり高速で検索できるよ。
MOMORYテーブルは簡単にいうと、メモリ上に情報を格納するテーブルを作成するオプション。
HDDアクセスと比べてかなり高速。
やり方は簡単で、テーブルをCREATEする際に
最後に
ENGINE = MEMORY;
をつければOK。
84 :
80 :2007/07/13(金) 08:59:49 ID:???
>>82 ごめん、確かにそうだ。
INSERT INTO TBL_POST_IP VALUES(NOW(), '$_SERVER['REMOTE_HOST']');
↓
REPLACE INTO TBL_POST_IP VALUES(NOW(), '$_SERVER['REMOTE_HOST']');
にすればOKだ。
あとは、IPがいやなら、IPアドレスの代わりにMACアドレスをキーにすれば、
PCそのものを特定できる。
PHPでMACアドレスねえ
高付加価値のレスを頂きましてどうもありがとうございました。
88 :
nobodyさん :2007/07/13(金) 11:42:22 ID:HPPLyHwM
フォーム処理などの、よく使う関数を1つのファイルでまとめているのですが、 コンテンツが多くなる毎に、そのファイル無いの桁数も多くなります。 こういう場合、やっぱりコンテンツに応じて使用する関数ファイルを分けた方が 処理も早く、修正しやすいのでしょうか? それとも、用途(フォーム入力時、確認時 など)によって分けた方がいいのでしょうか? 細かい点ですが、気になったので質問しました。
89 :
80 :2007/07/13(金) 11:51:59 ID:???
フォーム処理というのは入力チェックのことでしょうか? 入力チェックは大きく分けて、 存在チェック、 必須チェック、 型チェック、 文字長さチェック、 範囲チェック、 関連性チェックに分けられる。 それぞれごとに関数を定義したら、あとのフォーム毎に変わる部分は引数として指定して、 汎用的な作りにすればいい。 それでもファイル内の関数が大きくなるのなら、 ファイルを分割して__autoを使って動的に呼び出せば、 パフォーマンスは良くなる。
90 :
88 :2007/07/13(金) 12:04:44 ID:???
>ファイルを分割して__autoを使って動的に呼び出せば、 >パフォーマンスは良くなる。 この部分がよくわからないのですが、 フォームを使う部分は、form_func.phpをincludeし、 表示・確認時は、disolay_func.phpをincludeする という考え方ではないのでしょうか?
>>88 パフォーマンスに有意な差は出ないと思うが。
開発・メンテ効率の方を重視して作ればいい。
92 :
80 :2007/07/13(金) 12:16:46 ID:???
>>90 分かりにくくてすみません。
一つずつ説明すると、
存在チェックというのは、
例えば、名前が来るはずなのに$_POST["NAME"]がinnsetがFALSEで帰ってくるかどうかです。
本来フォームで定義しているのに、キーが来ないというのは偽装されている可能性があるため、
即アクセス拒否する必要があります。
次に、型チェックですが、
例えば、名前は全角、郵便番号は数値型、などです。
予め、型が決まっている場合に、入力チェックで弾く場合に使います。
型が違う場合には、通常入浴画面に戻して再入力させます。
次に、文字長さチェックは、
例えば、郵便番号は7桁、年齢は3桁、などのように文字の長さが決まっている場合に使います。
文字長さチェックに引っかかった場合には、型チェックエラーと同じ動作をさせます。
範囲チェックは、
例えば、年齢は0〜120歳とか、生年月日の年が1900年から2007年までというように、
数値の場合に範囲が決まっている場合です。
これも、エラー時の処理は型チェックエラーの場合と同様です。
関連性チェックは、住所で字が入力されいる時に町名が入力されていないなどのように
異なる項目が関連している場合に、その関連性の妥当性をチェックする方法です。
関連性チェックでエラーになった場合には、悪戯で有る可能性があるので、
警告画面を出す必要があります。
長文になりましたが、ざっくり言うとこんなところです。
分かりにくいところがあったら、また投稿して下さい。
93 :
80 :2007/07/13(金) 12:19:15 ID:???
すみません。 必須チェックの説明を忘れていました。 必須チェックというのは、名前や住所など必ず入力しなければいけない項目が 未入力かいなかをチェックする方法です。 存在チェックとちがうのは、必須チェックはクエリーにキーがあるが、値がないかどうかをチェックするのに対して、 存在チェックは、クエリーにキーがあるかどうかをチェックする方法です。
94 :
88 :2007/07/13(金) 12:28:29 ID:???
>>92-93 せっかく書いていただいたのに申し訳ないのですが、
そういう記述を書いている関数のセットがあるわけです。
それを「フォーム処理用」としてまとめています。
それとは別に表示用の関するがありまして、
例えば、$sexが1なら「男」 $sexが2なら「女」という値を返す関数を作っているわけです。
ただそういう処理をひとつのファイル上でまとめていると、
後から確認した時にわかりづらいのではないか?っと思い、
「皆さんはどうしてますか?」っと質問した次第です。
関数必要ないでしょ class Constants{ static $sexArray = array( '1' => '男', '2' => '女' ); } <td>性別</td><td><?=Constants::sexArray[$_POST['sex']]?></td>
>>95 おいおい、今時テンプレートエンジン使わずに、
テンプレートファイルにphpの生書きしているってどうよw
97 :
nobodyさん :2007/07/13(金) 14:54:12 ID:FLkffxf0
session_regenerate_id()を使って、IDの名前を新しくすると、 以前に使っていたIDはどうなるのでしょうか? もしサーバーに残るのでしたら、容量を抑えるために消したいのですが可能でしょうか?
>>96 サバによって生書きするしかない事が山のようにありますが何か?
age
100 :
sage :2007/07/13(金) 16:28:08 ID:???
sage
age
102 :
nobodyさん :2007/07/13(金) 17:00:23 ID:dloI7Add
>>1 ↑みたいに、受け取った文章の特定の文字(一定の規則性を持った文字)
を装飾する(タグを付加して表示する)のってどうやるんでしょうか?
「pregなんかの正規表現で切り取って、タグで囲んでもとの位置に戻す」
という作業だと思うんですが、
一番スマートな方法を教えてください。
できれば具体例を示してもらえるとありがたいです。
preg_replace >>(\d{1,4}) <a href="">\1</a>
104 :
nobodyさん :2007/07/13(金) 17:05:51 ID:7syhWac6
php+mysqlではじめてサイトを作ってるんですが 現状ログインユーザーがページを読み込む毎に クエリが5本走るようになってます。 まだ追加したい機能があるので将来的には7〜8本は クエリが走るようになると思うのですが これって公開した暁にはどの程度の負荷になるのでしょうか? 仮に負荷が大きすぎて実用でないとしたら どうすればよいでしょうか? ストアドプロシージャの使用で負荷軽減になりますか? javascriptのonloadで別に呼ぶのはページ表示を速くする効果がありますか?
やってみて負荷かかるようなら纏めればいいんじゃね?
数百万件のデータのテーブルに対して20本位のSQLを発行している ページがあるけど、0.2秒から0.3秒程度で返却しているよ。 indexをうまく張れば、1000万件超えても余裕だよ。テストデータでのテスト済み。
107 :
nobodyさん :2007/07/13(金) 17:21:38 ID:NLrIBmGt
>>104 >>105 に同意
あとで組み替えられるように粗な作りにしておけばOK、一発目で納得いくものはつくれんよ。
webサービスにやたらβが多いのも、あちこち試行錯誤、段階リリースやってるからだ。
あとは、本当にクエリが5本必要なのか?ってとこか。
108 :
104 :2007/07/13(金) 17:26:34 ID:7syhWac6
>>105-107 レスありがとうございます。
とりあえず完成させて、テスト公開してみたいと思います。
俺はいっつもクエリを1,2本で抑えようとするから 余計時間かかって、苦労するな・・・ テーブルなんて細部に分けた方が扱いやすいんだけどな。 1画面1フォームの場合は、すべて1つのテーブルで済ませようと思ってしまう。
それはそれでいいんじゃないの?その程度の規模のシステムなら。
良いけど悩む。 テーブルを増やすとソースが増える。確認がしづらい。 しかし、テーブルを減らすと汎用性に欠く。 どちらも一長一短だろうけど。
>テーブルを増やすとソースが増える じゃあクエリ送信するときに一度テーブルくっつけちゃえばいいんじゃね?
DBのパフォーマンス気にしているようだけど、 そんなに気にするほどでもないと思うけど。 アクセス数が異常に多いとか、レコード件数が億を超えるような膨大な 金融機関系のシステムなら別だけど。
レコード件数が億超えたら、phpMyAdminで確認するのは無理だなw てか、phpMyAdminの場合、1000件程度でも重いが・・・
115 :
nobodyさん :2007/07/13(金) 18:07:41 ID:3J3Mm2ci
phpspot.netアクセスできなくね?
ページの半分が広告のムカツクあのサイトか 開いた途端に広告しか見えない状態になってから巡回先から外したよ
広告代が儲からなくなったので、閉じたということも考えられる。 見ず知らずの相手に手間と労力掛けて作っても儲からなかったら意味ないしな。
広告なんで気にしません PHPエディタが使えれば
ま、億とか千万単位のレコードをがんがん扱う段階になったら優秀な人引っ張ってくりゃいいんだよ。 mysqlとかpostgresqlつかうよりOracleだろうし、むしろCacheとか使ってみたい気もする。
googleは億単位でmysql使ってますが、それが何か? ○件超えたらoracleって意味不明ですが、それが何か?
>>120 知ってるよ、あくまでも、ソースいじくって独自拡張できるような専門家がいないレベルでの中小企業での話。
ポイントはココにいるレベルなら今は気に病む段間じゃないということ(当然俺も含めて)。
122 :
nobodyさん :2007/07/13(金) 20:51:11 ID:LyxSzMMa
聞きたいんですけど、会員管理サイトをプロの現場で運用する場合、 ID、Passwordはもちろん、名前、住所などもMD5で暗号化するなどして DBに保存するんでしょうか? また、DB専用サーバをwebサーバとは別に?作ったりするものなんですか?
暗号化は必ずするけどMD5とは限らない。 DB別サーバーにするかは、規模に応じて。 あと、Web公開用とは別の用途でDBを使うかどうかも関わってくる。
名前や住所にmd5かけんなよ・・・
md5で暗号 ってただそう言いたかっただけと見た。
MD5ってもう信頼性は無いんじゃないの?
globで返ってくるパスはabc順だけど、 これをファイルの種類順にソートさせたい。 どうすればいいんすかえろいひと。
>>127 拡張子順って事なら
$index = glob('*');
usort($index,create_function('$a,$b','return strcasecmp(pathinfo($a,PATHINFO_EXTENSION),pathinfo($b,PATHINFO_EXTENSION));'));
print_r($index);
こんな感じで。
129 :
nobodyさん :2007/07/13(金) 22:17:15 ID:/IV1BAzj
define("SRC_DIR",'../thread/'); (中略) $SRC=file(SRC_DIR.$delno.".log","r+b"); のソースで以下のようなWarningが出てまともに動作しなくなりました。 Warning: file() expects parameter 2 to be long, string given in PHP4の時は問題なかったのですがPHP5になってエラーが出るように なりました。何か内部変更があったのでしょうか?
130 :
129 :2007/07/13(金) 22:22:57 ID:/IV1BAzj
すみません。自己解決しました。
>>128 なんか強いなそれ。
ありがとうえろいひと
132 :
nobodyさん :2007/07/13(金) 23:47:33 ID:zCZ7I7UC
すみません、「あ」をそれぞれ2進数、10進数、16進数にしたいのですが いきなり「あ」からそれぞれの進数に変換することはできませんよね? そもそも「あ」というのは何進数なんでしょうか?
133 :
nobodyさん :2007/07/14(土) 00:48:20 ID:TLdn55kS
久々に公式見たら気づいたんだけど Support for PHP 4 will be discontinued at 2007-12-31. Please consider upgrading to PHP 5.2. なんて書いてあるじゃない!! バンザーイ!バンザーイ!
134 :
nobodyさん :2007/07/14(土) 01:52:33 ID:YEDQCt26
METAタグのdescriptionで指定している文字列を取得したいと思っています。 preg_match("/<meta name=\"description\" content=\"(.*)<\">/",$meta_desc,$desc); echo $desc[1]; このように書いたのですが、文字列を抽出出来ません。 どうしたらいいのでしょうか?
135 :
134 :2007/07/14(土) 02:52:15 ID:???
さっさと質問にこたえろ!
136 :
nobodyさん :2007/07/14(土) 03:09:34 ID:UxZqEuHT
>>134 preg_match("/<meta name=\"description\" content=\"([^\"]*)\">/",$meta_desc,$desc);
<
どうでもいいけど そういうときはシングルクォートで囲めば? と思うわけだが
>>138 そんなに熱くならずに、自分のおならの臭いを嗅いでエクスタシー感じようよ。
>>139 最近、その言葉よく聴くけどどこかで流行っているの?
若槻千夏が深夜番組で口走ったw
意図しないリクエスト(クエリ)を排除する簡単な方法はないでしょうか ホワイトリストでチェックするには変数が多すぎて面倒なのです
143 :
142 :2007/07/14(土) 10:26:17 ID:???
スレ間違いました・・・誤爆です。
144 :
nobodyさん :2007/07/14(土) 10:48:52 ID:vAbjevhB
フォームでデータを x[〜] の中に組み込みようにしました x[1] x[2] ・ ・ ・ x[15] とx[〜]の中データが入るようにしました それを変数に組み込むために↓のようにしたのですが for($a = 1; $a <= 15; $a++) { $XXX[$a] = "".$_POST["x[$a]"].""; } $XXX[1]などの中にデータが入ってくれません どのように記述したらうまく動くのでしょうか 何卒ご教授よろしくお願いします
>>144 普通に
$XXX = $_POST['x'];
でいいだろう…。
個別に入れる場合は
$XXX[1] = $_POST['x'][1];
>>145 ありがとうございます、それを参考に頑張ります
147 :
nobodyさん :2007/07/14(土) 11:51:58 ID:o7OpzzBd
// ここから aaa bbb // ここまで ↑の改行を含むaaaからbbbまでの変数$stringsを、ファイルの中に一行で書き込みたいのですが そのまま書き込むと、3行でファイルに保存されてしまいます。 そこで改行を<br />に変換するために $strings = nl2br($strings)をして、ファイル書き込むようにしました。 今度は改行の前に<br />が追加されただけで、↓のようになりました aaa <br /> bbb どうしたら$stringsの中身を一行分で書き込めるのでしょうか?
>>147 nl2br()は改行を<br>に変換じゃなくて改行の前に<br>を挿入。
$strings = str_replace(array("\r\n","\r","\n"),'<br>',$strings);
149 :
nobodyさん :2007/07/14(土) 12:29:17 ID:o7OpzzBd
ありがとうございます。解決できました。 ただ、疑問がわくのですが、この書き込んだ文字をhtmlに出力するとき htmlspecialcharsを使って無害化しようと考えているのですが、そうすると<br>もタグの効力が失いますよね。 無害化は書き込む前に行うのがいいのでしょうか? 出力するときに無害化する措置のほうが安全だとは思っているのですが・・・
>>149 > 出力するときに無害化する措置のほうが安全だとは思っているのですが・・・
つ SQLインジェクション
>>149 <br>に変換する前にやることになるね。
出力の時だと出力の度にオーバーヘッドが生じる事にもなるし。
152 :
nobodyさん :2007/07/14(土) 13:26:43 ID:42mprax5
「このスレを見ている人はこんなスレも見ています」 のシステムはPHPでどうやって作るのでしょうか? 考えたけどさっぱりわかりません。 どなたか親切な方おしえてください。
>>152 多分、このスレの中の文字列を形態素解析して、
このスレのテーマと距離的に近いスレを表示しているのではないかと。
自然言語学と統計学的処理をしているので、phpの知識ではどうにもならないと思うけど。
\ ∩─ー、 ==== \/ ● 、_ `ヽ ====== / \( ● ● |つ | X_入__ノ ミ そんなエサで俺様がクマ――!! 、 (_/ ノ /⌒l /\___ノ゙_/ / ===== 〈 __ノ ==== \ \_ \ \___) \ ====== (´⌒ \ ___ \__ (´⌒;;(´⌒;; \___)___)(´;;⌒ (´⌒;; ズザザザ (´⌒; (´⌒;;;
Googleのキャッシュ機能みたいなのを作りたいんですけど、 考え方としては、fopenなどで読み込んだ先のサイト(HTMLソース)を 保存するだけで良いんですかね?
156 :
nobodyさん :2007/07/14(土) 13:50:23 ID:vP7abusR
>>146 改行は改行コードでしまっておいて無害化した後に改行を<br>に置換じゃだめ?
>>152 テレビの視聴率調査と同じ。
調査用の機器にあたるソフトを配って
それを介して2chにアクセスしたデータを統計的に処理してる。
ただ2chの場合テレビと違ってチャンネル数(=スレ)が異常に多くて
サンプル数まだまだなので、現状では余り精度は良くないらしい。
>>155 実装方式としては問題ないけど、日本でそれをやると著作権法違反になる。
合法的にやるなら、googleのキャッシュに表示されているHTMLを
キャッシュする必要がある。
159 :
152 :2007/07/14(土) 13:56:50 ID:42mprax5
>>153 >>157 すいません。ちょっとわかりにくいかも。
cookieを使ってやってると聞いたことがあるのですが。
具体的にgookieを使ってどうやってるのか、わかりますか?
>gookie >gookie >gookie >gookie >gookie
>>159 だから視聴率調査機がフリーソフトであるからそれをインストールして
サーバに視聴情報を送るんだよ。そのソフトの名前がgookie。
>>159 cookieを使おうが使うまいが、それは情報を収集する一手段に過ぎないわけでしょ。
その情報をどう解析しどう集計するかは、自然言語学や統計学(多変量解析など)の知識が必要。
その知識がなけらば誤解析だらけの使い物にならないものが出来上がる。
例えば、phpという言葉だけではphp研究所のphpと言語としてphpの区別が付かない。
どういう文脈でphpが使われているかを調べるのが自然言語処理学であり、
それらの言葉の集合がどのスレの言葉のスレと近いのかを意味的距離を数量的に測るのが統計学。
だから、サーバー側のPG知識だけではどうにもならないよ。
163 :
152 :2007/07/14(土) 14:37:22 ID:42mprax5
>>162 いや、cookieとPHPだけでできると思うんですけど?
>>163 もしそれだけで本当にできるなら画期的な発明だ。
ぜひやり方を教えてほしい。
いやPHPだけでできると思いますけど…
多分、相当安易に考えていると思うなぁ。 最後までイメージしてから作り始めないと、 ある時点で壁にぶちあたるよ。 まぁ、とりあえず、作ってみて、 壁にぶつかったら、またこのスレにおいで。
167 :
152 :2007/07/14(土) 15:09:42 ID:42mprax5
>>166 えらそうなこと言ってるけど
簡易版でいいからどうやって作るのか言ってみてよ
難しく考えすぎ 2chは直前に書き込んだときのホスト名をCookieに保存している。 2chの書き込みシステム(bbsdだっけ?これはPHPではなくC言語)で、書き込みをまとめて管理する。 書き込みをするとき、今のホスト名と、Cookieにあるホスト名が一致するとき(つまりIPアドレスが変更されていないとき)、 この人は前書き込んだスレも見ていたことになる。 あとはbbsdから前に書き込んだスレ名を取得すれば完成。
169 :
155 :2007/07/14(土) 16:49:28 ID:???
>>158 そうなんですか!?
でも、別にサイト情報(URLやサイト名)は、取得しても問題ないですよね?
てか、googleも日本サイトの情報を保存している気が・・。
googleのサーバーは日本には置いてないと思う。
171 :
◆ykYUYrisZU :2007/07/14(土) 18:17:19 ID:2KBXWsYs
配列が格納されている変数$dbからNumberのみを下記の入れ子の連想配列のようなものから取り出し、 1. Number 2. Number 3. Number 4... という風に表示したいと考えています。 いろいろ試したのですが、配列操作が苦手で取り出し方がよくわからず困っています。 わかる方教えていただけると助かります。よろしくお願いします。<(_ _)> こんな感じの配列がひとつの変数$dbに格納されています。Irekoの配列数は固定ではありません、Irekoの数が10や8と多いものもあります。NumberとTitleは必ず用意されています。 array(1) { ["Data"]=> array(3) { ["Number"]=> string(8) "AX14222411" ["Title"]=> string(21) "リンゴ" ["Ireko"]=> array(1) { ["Data"]=> array(3) { ["Number"]=> string(8) "AX2429561" ["Title"]=> string(15) "オレンジ" ["Ireko"]=> array(1) { ["Data"]=> array(2) { ["Number"]=> string(8) "AX221531" ["Title"]=> string(22) "レモン" } } } } } }
173 :
nobodyさん :2007/07/14(土) 19:52:55 ID:IGNHoFx0
>>171 適当に作ったから、見にくくてあんま綺麗じゃないけど勘弁な、
#!/usr/bin/php -q
<?php
$db = array(
"Data" => array("Number"=>"AX14222411","Title"=>"リンゴ","Ireko"=> array(
"Data" =>array("Number"=>"AX2429561","Title"=>"オレンジ","Ireko"=> array(
"Data" =>array("Number"=>"AX221531","Title"=>"レモン",),),),),),);
$ret = array();
get_hoge($db,$ret);
var_dump($ret);
function get_hoge($arr,&$ret){
if(!isset($arr["Data"])) return true;
foreach ($arr["Data"] as $k => $v){
if("Number"==$k){
$ret[]=$v;
}
if("Ireko"==$k){
get_hoge($v,$ret);
}
}
return true;
}
174 :
nobodyさん :2007/07/14(土) 20:05:14 ID:o7OpzzBd
175 :
◆ykYUYrisZU :2007/07/14(土) 20:15:57 ID:2KBXWsYs
>>173 素晴らしいです!!!!
これでやりたかったことができます。
ありがとうございました。
176 :
nobodyさん :2007/07/14(土) 20:34:41 ID:v9du19eY
FLASH(SWF4)からgetURL()+POSTを使ってPHPでランキングを作っています。 しかし、FLASHからPHPのページへgetURL()を使って飛び、更新すると何回も重複してランキングに追加されてしまいます。 原因が分かる方がいましたら、回避する方法をお願いします。
文字列の置き換え(preg_replace)で 特定の規則に挟まれた文字列を変換することは出来ますか? (挟まれた文字列は特定不可) 例えば 177 名前:nobodyさん :2007/07/14(土) 20:57:20 ID:??? ~~~~~~~~~~ ↑の名前部分は、 ・数字、空白、既定文字列「名前」、コロン と ・2007で始まる数字 の間にある、ということ以外は不規則ですが、 このようなものも変換できますか? また可能ならば、具体的なコードを教えてもらえるとありがたいです。 宜しくお願いします。
180 :
nobodyさん :2007/07/14(土) 21:32:13 ID:v9du19eY
>>177 返答ありがとうございます。
それはランキングへ追加したあとheader("Location:
http:// ");で飛ばすということでしょうか?
ですが、違うページへ飛しても再び前のページ(ランキングのPHPが記述された)へ戻り、更新を押すと再びランキングに重複してしまいます。
失礼ですが他の方法は無いでしょうか?
>>178 自分で答えかいてるじゃん、そのまんま正規表現つくってみ。
ついでに答えも書いとくが、文中にこのフォーマットの引用がある場合にも引っかかるだろうから、あとはうまく調整汁
#!/usr/bin/php -q
<?php
$str = '177 名前:nobodyさん :2007/07/14(土) 20:57:20 ID:???';
$nm="ななすさん";
$ret = preg_replace('/^(\d{1,3}\s名前:)(.+)(\s:\d{4}\/\d{2}\/.+)$/',"\\1$nm\\3",$str);
echo $ret;
php -a で出すコマンドライン版PHPのインタラクティブモードで 最初に<?phpを書かずに、起動後すぐに >phpのプロンプトを出すにはどう設定したらよいでしょうか。
>>152 リファラーみればいいだけじゃね?
実際正確かどうかなんて分からないし
直前+現在のスレにお互いカウントアップ。
もしくはセッションにスレUIDを追加していって
読み込んだ時に仮に5つくらいになっていた場合に
それらをカウントアップ&セッションクリア。
184 :
183 :2007/07/14(土) 22:51:03 ID:???
頭が悪いので勘違いしました。忘れてください。
>>182 cmd /k "php -a"
↑をphp.batに保存してphp.batをダブルクリック
>>185 そんな答えを求めていませんけどね^^;
引き続き回答ヨロ
187 :
nobodyさん :2007/07/14(土) 23:45:04 ID:IGNHoFx0
>>186 --with-readline つけてコンパイルした 5.1 以降をつかえばOK
最近のだと初めからなってる気もするが。
あと質問するときsageてると、釣りにみえて返答もらえないかも
188 :
182 :2007/07/15(日) 00:26:17 ID:???
189 :
nobodyさん :2007/07/15(日) 01:18:51 ID:gHFsqArW
>>176 ちょっと、情報がアバウトなんで何とも言えないが、
IEって、swfファイルを一度既に読み込んでいる場合、リロードしたときにキャッシュのswfが優先される現象が確かあった気がする。
んで、リロードしたときに本来期待している初期化処理が走らない。
ちなみにFirefoxでは起こらない。
もし176の言っている現象がFirefoxで起こらないのならばたぶん原因は同じ。
面倒だから、phpでセッションつかって、投票完了時に
$_SESSION["is_vote"] = true; とかつっこんで、
投票処理始める前に
if(isset($_SESSION["is_vote"]) && $_SESSION["is_vote"]) return ;
みたいにして重複カウントアップしないとかやってみれば?
ごめんなさい。誤爆です・・・
192 :
nobodyさん :2007/07/15(日) 03:53:24 ID:X91+gITL
>>189 返答ありがとうございます。
すみません、言い忘れていたのですが実はブラウザは携帯なんです。
ですが更新しても初期化されないことから、IEと変わらないと思いますが…
書いてくださったスクリプトを記述してみましたが、やはりランキングに追加されてしまい出来ませんでした。やはり記述が悪いのでしょうか?
193 :
nobodyさん :2007/07/15(日) 03:54:43 ID:X91+gITL
<table border="1"><tr><th>順位</th><th>お名前</th><th>距離</th></tr> <?php $name = htmlspecialchars($_GET['name']); $meter = htmlspecialchars($_GET['meter']); $rank = file("rank.txt"); if(isset($_SESSION["is_vote"]) && $_SESSION["is_vote"]) return ; if ($meter) { if (!$name) $name = "名無しさん"; for ($i = 0; $i < count($rank) + 1; $i++) { if ($i < count($rank)) { list($n, $m) = split("\t", $rank[$i]); $m = rtrim($m); } else $m = 0; if ($meter > $m) { array_splice($rank, $i, 0, "$name\t$meter\n"); break; }} if (count($rank) > 20) array_pop($rank); $fp = fopen('rank.txt', 'r+'); flock($fp, LOCK_EX); ftruncate($fp, 0); for ($i = 0; $i < count($rank); $i++) fputs($fp, $rank[$i]); fclose($fp); $_SESSION["is_vote"] = true;} for ($i = 0; $i < count($rank); $i++) { list($n, $m) = split("\t", $rank[$i]); $m = rtrim($m); print "<tr><td>" . ($i + 1) . "</td><td>$n</td><td>{$m}m</td></tr>\n"; } ?> </table> 分かる方がいましたら、お願いします。
194 :
nobodyさん :2007/07/15(日) 04:12:30 ID:gHFsqArW
>>192 とりあえずぱっと見session_start();が必要 →生成と破棄の詳細はsession周りのマニュアル参照
ただ、session(クッキー)が使えない機種もあるからなぁ。
(flash使える機種でクッキー使えない機種があるかとかは、ちょっと専門外なんでわからん。スマソ)
あと、ファイル書込よりpdo+sqliteとか使う方が良くない?とかおもった
195 :
194 :2007/07/15(日) 04:33:34 ID:???
>>193 ごめ、見直してみたらこれって$_GETで画面遷移してるんだね。
actionscript側のgetURL();でGETで渡してきて、(sessionの部分取り除いておいて)
リロードしたらそりゃカウントアップされるわな。リロードする度に常にURLに?name=hoge&meter=100 とかついてるんだもん。
196 :
194 :2007/07/15(日) 04:39:11 ID:???
追記 んで、getURL()って第三引数に"POST"、ってやればPOSTで渡せるから、そっちで何とかすれば。 PHPっていうよりASの話だね
197 :
nobodyさん :2007/07/15(日) 10:30:18 ID:X91+gITL
>>194-196 返答ありがとうございます。
session_start();をif(isset($_SESSION〜の前に書いてみましたが、やはり無理でした。
実は先程記述したランキングのPHPスクリプトは、とあるサイトに書いてあったものなんです。
私は一から記述できるようなスキルがないので、調べてみましたがpdo+sqliteは分かりませんでした。
そして言われた、GETをPOST((phpも同様)にし、URLの末尾に付加しないようにしても、更新すると重複してしまいます。
以下はFlash側の記述です。
on(press) {
FSCommand2("Escape",name,"name");
getURL("
http:// 〜.php","_blank",POST);
}
>>176 index.phpの中にFlashをインクルード、セッション発行
↓
カウント用のページにジャンプ
↓
チェック
↓
条件判断→重複ならカウントしない
↓
カウントする
セッションに含める情報「リファラ、ip、ユニークid、日付、2chでいうハナモゲラなどのキーワード」この情報吟味して考えろ
199 :
nobodyさん :2007/07/15(日) 12:45:45 ID:70v71ZEE
αチャネル埋め込んであるpng(gif)をimagerotate()で回転させると黒くなる。 bgd_colorを不透明にしないと黒くなるから、何かしらリソースの背景に問題がありそうなんだが、どこをいじればいいのか見当がつかない。 ignore_transparentはphp4だから確認できない。 これがGDの限界ってやつですか/^0^\フッジッサーン だれかおせーて
200 :
nobodyさん :2007/07/15(日) 12:47:01 ID:RgVfRGye
・ ・ ・ $on_array = explode(",", $string_line1); $off_array = explode(",", $string_line2); $op[$d]= $on_array; $ed[$d]= $off_array; このように配列を配列の一つの要素 つまり 1周目 $op[0]= $on_array; $ed[0]= $off_array; 2周目 $op[1]= $on_array; $ed[1]= $off_array; と各$op[〜]の中に取り込みたいのですがうまくいきません 具体的にどのように記述したら動くのでしょうか 何卒ご教授宜しくお願いします。
>>199 PNGならbgd_colorを0xFF000000にすればいいんでは。
>>200 各ループの$string_line1と$string_line2はどうやって取得するのよ
毎回同じ内容じゃないんだべ?
203 :
nobodyさん :2007/07/15(日) 14:00:02 ID:RgVfRGye
>>202 $fp = fopen("$op", 'r');
$string_line1 = fgets($fp);
$fp = fopen("$en", 'r');
$string_line2 = fgets($fp);
このようになっています
ちなみに今現在、多次元配列を試しています
204 :
nobodyさん :2007/07/15(日) 14:07:11 ID:L0tNCdex
大量のデータを処理するphpのプログラムがありまして、 一回起動をかけますと、終了するまで7時間程度かかります。 しかも、このプログラムが負荷が高いため、実行して20分程度経過しますと、 CPUの温度が75度を超えBIOSから異常を知らせるメッセージが表示されっぱなしになり、 焦げ臭い嫌な臭いが部屋中に立ち込めてしまいます。 仕方なく、1000件数処理するごとにsleepコマンドで60秒自動休止するような やり方にしているのですが、他にいい方法はないでしょうか? スクリプト言語なのでしょうがないかもしれませんが、いいアイデアを頂けると幸いです。 宜しくお願いします。
>>203 うーん。ループさせてる範囲を{ 囲んで }みて。
$fp = fopen("$op", 'r'); $string_line1 = fgets($fp);
$fp = fopen("$en", 'r'); $string_line2 = fgets($fp);
$on_array = explode(",", $string_line1); $off_array = explode(",", $string_line2);
$op[$d]= $on_array; $ed[$d]= $off_array;
>>205 ありがとうございます、それを参考に頑張ります
安価ミス
208 :
nobodyさん :2007/07/15(日) 14:19:18 ID:70v71ZEE
209 :
205 :2007/07/15(日) 14:20:30 ID:???
「どこからどこまでがループなのよ。同じものを explode して $op[$d] に入れてない? ていうか、毎回 fopen してたりもしない?」 というのが知りたくてループ範囲を示して欲しかっただけなんだけど、 頑張るのはいいことだと思います。
>>208 imagesavealpha()は使ってるよね?
>>204 マジレスで、プログラムの組み方に問題が無いのなら
低発熱の速いCPUに換えて冷却をしっかりする。 会社なら空調を何とかする。
CPU使用率100%で20分連続稼働出来ないのは異常
それ原因ってphp側というより
DB側のインデックス不備とか 結合の仕方が悪いSQLとかに原因有るんじゃないか?
phpでぶん回して集計かけるんじゃなくて、ストアドプロシージャ使ったり出来ないの?
後は、
sleep(60) じゃなくて ループ内で usleep(5000) とか、
メモリ使い切ってswapアウトしてしまうのなら、適宜不要になったarrayを明示的にunsetするとか。
とりあえずsarで計測したりしながら何がボトルネックか探ったら?
212 :
nobodyさん :2007/07/15(日) 14:33:33 ID:RgVfRGye
>>209 なんとか多次元配列で解決できましたお騒がせして申し訳ありません
それと、ありがとうございました。
213 :
nobodyさん :2007/07/15(日) 14:40:30 ID:L0tNCdex
>>211 詳しいレスありがとございました。
言われてみると、プログラムというよりハードかもしれませんね。
プログラムは、画像データから特定のパターンを識別するために、
膨大な計算量を必要とするプログラムを組んでいまして、
アルゴリズム的にこれ以上スマートにするのが難しいのが現状です。
CPUが2年前のものなので、買い替えを検討したいと思います。
あと、度々で恐縮なのですがsleepとusleepは引数の単位が違う以外に
内部的な処理で違うものなのでしょうか?マニュアルを見たのですが、
エイリアスでもないようなので、教えていただけたら幸いです。
あと、sarを検索で掛けたのですが、それらしいものが引っかからなかったのですが、
これはベンチマークの計測ソフトとかでしょうか?
C禁止
すいません、ちょっと教えていただきたいですが、 class className{ function fnc(className $var){ $this->var = $var; return $var; } } 上記のとき、fnc(className $var)の箇所の、className $varは何を 意味するのでしょうか? 良かったら教えてください。
引き続き回答お願いいたします
219 :
獅子王 :2007/07/15(日) 17:37:04 ID:EW+ZDItZ
お久しぶりです。実は最近ホームページなどに掲示板を設けたいと思い、 perlをダウンロードしようと思うのですがそのダウンロードサイトでどのようにすれば ダウンロードできるのかわかりません。どなたか教えてはくださいませんでしょうか?
芯でください
221 :
nobodyさん :2007/07/15(日) 17:54:50 ID:EKF0p7g8
50x50から半径20ピクセルの円を書きたいのですが どのような計算式で書けばよいのでしょうか?
まずは試行錯誤しなさい。 クレクレはスレ違い
223 :
獅子王 :2007/07/15(日) 17:57:12 ID:EW+ZDItZ
あ、あの・・・。なんだか知らないけどスイマセンでした。
224 :
nobodyさん :2007/07/15(日) 18:35:26 ID:70v71ZEE
>>210 回転させるリソース(a)と、回転させた後のリソース(a_dash)にも一応使ってる。
bgd_colorの透明度を最大にすると全体が黒くなって、不透明にすると回転縮小した部位の背景が黒くなる
みたかんじ余白はbgd_colorを黒に重ねた色になる。これだと透明にできない
けれど、もとの画像リソース(a)は出力すれば背景はちゃんと透明で黒くない
どうなっているんだろうか
>>221 imageellipse()かimagefilledellipse()あたりでいいんじゃない
225 :
nobodyさん :2007/07/15(日) 20:43:31 ID:EKF0p7g8
>>224 ありがとうございます
ですが、関数を使わずにドット打ちでやりたいのです
226 :
nobodyさん :2007/07/15(日) 23:35:24 ID:y01L4ZmB
pearのauthっていう認証機能は実用に耐えますか? セキュリティの向上を考えるとき、気をつけなきゃいけないこととかありますか?
>>225 sinもつかっちゃだめ?つーか課題くらい自力でやれ
228 :
nobodyさん :2007/07/16(月) 00:47:32 ID:1gpeo49m
>>228 課題じゃないのになんでそんな面倒な事しなきゃいかんのか分かんないけど
25,25を中心として
for($i =0;$i<2*_PAI;$i+=_PAI/50)
ドット描画(floor(25+20*cos($i)),floor(25+20*sin($i)));
なかんじでいいんじゃね?円周率が_PAIだったかどうか怪しいが。
ステップ数は間が空くようなら適当に変えて。
ドットはimagesetpixel()とあるね。 ラジアンはM_PIで得られたと思う
231 :
nobodyさん :2007/07/16(月) 02:15:31 ID:AMhU9hfC
下のようにループの中で2次元配列にデータを格納したいんですが、 2週目に入った時に$code[0]のデータがクリアされてしまいます。 配列の使い方が間違っているのでしょうか? サーバはFreeBSDでPHPは4.4.6です。 for($code=0;$code<3;$code++){ $dat=array($code=>array($d[0],$d[1],$d[2]); }
そりゃあクリアされるだろ。 配列じゃんえんだもん つ$dat[]
ちょっと思い浮かばないのですが、 $array = array("みかん"=>"3","なし"=>"2","さくらんぼ"="5"); だとして、 さくらんぼ:5 みかん:3 なし:2 という表示にしたいと思います。keyの数字を降順にして上の表な表示に することって出来るのでしょうか?出来る場合は、関数などを教えて下さい。
IDだしてから答える
配列の作り方も突っ込み満載だがID出すまで回答保留
236 :
nobodyさん :2007/07/16(月) 06:28:23 ID:eChNNpaq
textareaとinputのtextに文字列を表示する場合、htmlspecialcharsはかまさなくてもXXSの危険性はないと考えてよろしいでしょうか?
237 :
nobodyさん :2007/07/16(月) 07:31:59 ID:OjCJuTb6
質問です php_mbstring.dll が見つからないというエラーが発生して困っています。 php.iniで extension_dir = "C:/php/ext" も確認して、実際のファイル構造と 一致してるようなんですが、、 なにが原因でしょう 教えてください、よろしくおねがいします
phpinfoにmbstringが使えるかどうかみた?
>>231 もうすこしヒントをやる。
あとは書き換えてつかってみれ
for($i=0;$i<3;$i++){
$dat[] = array($i=>array(1,2,3));
}
echo "<pre>";
print_r($dat);
echo "</pre>";
240 :
nobodyさん :2007/07/16(月) 08:14:01 ID:OjCJuTb6
>>238 ありがとうございます
extension=php_mbstring.dll
の部分ですよね コメントアウトも解除してると思うんですが、、なにがおかしいのかなぁ…
いろんなサイトを見るとextension_dir = "C:/php/ext" の"を書いてないのもあったり、
ext/ としてるのもありで、全部試してるんですが、、
バージョンは?
phpinfo();を実行してmbstringが使えるかチェックしたの?
244 :
240 :2007/07/16(月) 08:34:08 ID:OjCJuTb6
ごめんなさい 詳細を書きます。 winXP apache2.0 php5.2 です。 phpinfoによれば以下のようになっています extension_dir C:\php\ext\ mbstring Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On 今、pearのインストールをしてるんですが、cmd でgo-pearを 実行すると「php_mbstring.dll が見つからない」とアラートがでています また、cmd内でも「ext\php_exif.dllがない」とでます。→ちゃんと存在してます
>>244 pearに関してはgo-pear.batでググって最新版を入手
エラー内容ぐらいは書いてください
246 :
240 :2007/07/16(月) 09:18:30 ID:OjCJuTb6
>>245 度々すみません エラーは
「PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_exif.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0」
といった感じです(これのファイル違いがいくつもでてくる)
go-pear.pharの最新版も入手済みです
失礼ですが、確認のため質問させてください go-pear.bat自体を新しくするんですか?
go-pear.pharだけでおk windowsの環境変数でパスを通せ。それでも解決しなかったらまた考えてやる
248 :
240 :2007/07/16(月) 09:52:26 ID:???
すみません 環境変数を理解できてないので質問させてください すでに C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe が 指定されてるんですが(ユーザ変数) C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe;C:\php\go-pear.bat でいいのでしょうか? これで試してみてもうまくいかないですが… 設定後、cmd の set で確認すると、 PATH=;c:\mysql\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\MySQL\M ySQL Server 5.0\bin\mysql.exe;C:\php\go-pear.bat となってました
C:\php\ext\をパスに追加
250 :
240 :2007/07/16(月) 10:33:49 ID:???
>>249 ありがとうございます。言われたとおりにしたところ、相変わらずうまくいかないですが
アラートダイアログのメッセージが変わりました!
(mb_string.dllが見つからない というのが出なくなりました
isqlt09a.dll OCI.dll libcs.dll が見つからない というアラートはでます)
問題が発生したため、CLIを終了します というメッセージが出ました
以下のcmdのエラーメッセージは相変わらず出ます。
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_filepro.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_ifx.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oci8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oracle.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_sybase_ct.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
続行するには何かキーを押してください . . .
------
なんなのかなこりゃ、、もうPHPの新バージョンを再インストールした方がいいんでしょうか?
251 :
240 :2007/07/16(月) 10:35:10 ID:???
ごめんなさい 間違えました
>>250 ×(mb_string.dllが
○(php_mbstring.dllが
ノーマルで入ってないプラグインもみかけるが、プラグイン拡張したの? 全部削除してphp.iniをいじらないで動作チェックしてみな
253 :
231 :2007/07/16(月) 11:21:51 ID:5Cp5+wVz
>>232 うまくいきました。
ありがとうございました。
254 :
240 :2007/07/16(月) 11:26:39 ID:???
>>252 ありがとうございます、プラグインの追加はしてません
今、php5.2.3をダウンロードして、php.iniを現行のものに上書きして、
;extension_ のコメントアウト解除 + extension_dir = "C:\php\ext\" だけ
やってgo-pear実行したんですが、変わらないです
やっぱりphp_mbstring.dllがない というアラートと、例のエラーが出ます
ちなみに
>>251 で書いた.dllのうち、php_filepro.dll以外は"php/ext"に入っています
この構成はDLしたphp5.2.3も変わらないです
まいりました…
上書きじゃなくて新規インストールしないと・・・
256 :
nobodyさん :2007/07/16(月) 11:43:18 ID:qpslan6h
URLエンコード関係で質問なんですが、
$url = "
http://example.com/?下らねぇ質問 ";
echo rawurlencode($url);
UTF-8で保存し実行すると、
http%3A%2F%2Fexample.com%2F%3F%E4%B8%8B%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F
と出てきます。
これをdecodeすると、
$url = "http%3A%2F%2Fexample.com%2F%3F%E4%B8%8B%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F";
echo rawurldecode($url);
http://example.com/?荳九i縺ュ縺 ・ウェ蝠
といった感じに文字化けするのですがどうしてですか?
257 :
256 :2007/07/16(月) 11:45:37 ID:qpslan6h
と書いた直後に解決しました・・・ 文字コード指定してなくてブラウザ側でShift_JISで表示されてました。
258 :
240 :2007/07/16(月) 11:45:55 ID:???
>>255 わかりました
もうphpを入れなおすことにしました
それでもうまくいかなかったらまた質問するかもしれないですが
しつこい質問に付き合ってもらってありがとうございました
259 :
nobodyさん :2007/07/16(月) 12:31:25 ID:FZx8tOaQ
すみません ereg系の関数使うとこういうエラーが出るのですが何ですか? Warning: mb_ereg() [function.mb-ereg]: mbregex compile err: premature end of char-class in /home/htdocs/test/pc/index.php on line 209
261 :
259 :2007/07/16(月) 12:47:49 ID:FZx8tOaQ
申し訳ありませんでした。ソースです。 if( MB_ereg("あいうえ",$name) ){略}
>>261 それ実際のソース?違うよね。
文字クラスが可笑しくてパターンコンパイル出来ないってエラーだから、
マッチパターンをちゃんと書いてくれないとどうしようもないよ。
>>262 あらたなXSSってだいぶ昔の記事だぞ。
ていうかこのスレにいるやつはたいてい知ってるだろ。
265 :
262 :2007/07/16(月) 13:16:01 ID:???
XSS検証 IEのみで確認。operaとfirefoxでは無効。 UTF-8でファイルを作っとくとIEでも無効 EUCとSJISで造ってる人はは対策すべし
266 :
262 :2007/07/16(月) 13:19:00 ID:???
>>262 うちのサイトでも試すんで試験用のコード教えてくれい。
268 :
262 :2007/07/16(月) 15:28:25 ID:???
269 :
nobodyさん :2007/07/16(月) 15:38:06 ID:eChNNpaq
以下の一行に4つの値が5つ分ある配列を ナンバーの若い順にソートしたいのですがうまくいきません。 ID、ナンバー、好きな食べ物、好きな音楽 1,330,apple,pank 2,1024,orange,laten 3,22,budou,heeling 4,35,banana,rock 5,1,kyuui,classic コードはこちらです。 $ary[0] = array("1","330","apple","pank"); $ary[1] = array("2","1024","orange","laten"); $ary[2] = array("3","22","budou","heeling"); $ary[3] = array("4","35","banana","rock"); $ary[4] = array("5","1","kyuui","classic"); array_multisort($ary, SORT_NUMERIC); お手つきでしたらご指摘よろしくお願いいたします。
カルタかよ
>>269 array_multisort()は列方向の配列が必要で面倒だから
usort($ary,create_function('$a,$b','return $a[1] - $b[1];'));
とかでいいんじゃね。
272 :
nobodyさん :2007/07/16(月) 15:55:48 ID:eChNNpaq
>>271 ありがとうございます。思ったとおりの結果になりました。
私にはこのコードがなにをしているのか理解できないのでマニュアル見て勉強してみます。
273 :
nobodyさん :2007/07/16(月) 15:59:58 ID:eChNNpaq
すごい!こんな便利な関数があったんですね。 2つも勉強させていただきました。ありがとうございます。
274 :
259 :2007/07/16(月) 16:10:36 ID:FZx8tOaQ
申し訳ありませんでした。ソースですがあいうえの所にはカタカナ3文字が 入ります。それ以外はソースそのままです。 if( MB_ereg("あいうえ",$name) ){略}
275 :
nobodyさん :2007/07/16(月) 16:22:55 ID:f3MIb3UO
画像アップローダをやってるんですが、ログを見ると ダウンロードツールでjpegファイルを連続でダウンロードされてるみたいです。 回避できる方法はありますか? ご存知でしたらお教えください。 m(__)m
276 :
275 :2007/07/16(月) 16:24:54 ID:f3MIb3UO
書き忘れました。 ずるぽんあぷろだを使っています。
>>274 だからなんでそれを書かないのかと。
SJISでゼとか入ってて[とバイナリが被ってるんじゃない?
mb_regex_encoding()でちゃんと文字コードを指定すること。
278 :
nobodyさん :2007/07/16(月) 16:59:57 ID:eChNNpaq
file関数でファイルの読み込みのみのページを作成し、 0.5秒おきに手動でリロードしているのですが、 CPUの負荷が50%を超えてしまいます。 fileの読み込みはあまりしないようなプログラミングを心がけるべきでしょうか? 何度も恐縮ですがお手つきでしたらアドバイスお願いいたします。
>>278 fileの読み込みに限って言えば、それだけでCPU負荷が高まるようなものではない。
CPU負荷は他の処理が影響していると思う。
無限ループでもしてんじゃね?
>>275 1)
UAとリファラを見るようにして、ツールのライトユーザーを弾く。
→ 弾いた場合はどこかにheader()で飛ばす
2)
閾値以上の連続リクエストにはウェイト(待ち時間)をわざと入れて、リクエストの負荷を減らす。
→
閾値を連続リクエストにはペナルティで 1秒 × 連続リクエスト回数累計の2乗 * 0.2 とか わざとsleep (待ち時間は適当)
とか、
閾値を超えた連続リクエストにはheader('HTTP/1.0 403 Forbidden');とか返すとか
UAもリファラも偽装できるから、スクリプトかかれたら弾けないけどね。
ダウンロードする側も、自作で上手にスクリプト組んだら実質防御出来ない。
IPアドレスかマックアドレスを見て弾けばいい。 後は、nec.co.jpやSOMY.CO.JPなどの大手ホストだけ特別に扱うなどの処理をするとか。
283 :
nobodyさん :2007/07/16(月) 19:19:23 ID:I4aE+UQm
DBのバックアップをするために、毎日指定した時刻にCRONでデータベース単位で圧縮し、GZIP圧縮しmail関数で、ファイルを添付してメールで送っております。 しかしGZIP圧縮した容量が20MB超えたら、PHPでメモリーリミットエラーがおきてしまいました。 現在PHPのメモリーリミットは256MBに設定してあります。 これ以上増やす事も出来ないのですが、何か代替策はないでしょうか? FTP関数は許可していないので使えません。 同じサーバーにバックアップデータを置いておくとクラッシュしたときにバックアップごとふっとんでしまうので、別のサーバーもしくは手元に毎日置いておきたいです。 手動で毎日ダウンロードするって言うのはなしでおねがいします。
>>282 MACアドレスなんてPHPでどう取得するんだ?
>>283 そもそも256に設定しているのに20で落ちるのがおかしいと思うけど。
あとは、毎日ではなく毎時でやるとか。
286 :
282 :2007/07/16(月) 19:29:03 ID:???
普通には取得できない。 PHPからCを呼び出して、Cで取得するしかない。
>>283 scp とか rsyncで 定期的にバックアップを取りに行く →詳細はそっちのスレを参照
>>283 全てをバックアップするんじゃくて、差分でバックアップしてみたら。
>>283 HTTP関数を許可しているのなら、HTTPプロトコルで別サーバーに転送するとか。
>283 まずハードから見直すことを考えましょう。 サーバーで重要なデータを扱う場合には、RAIDを組むのが普通です。 後は、DBのバックアップツールで別のHDDに定期的にコピーするとか
>>283 とりあえず案としてはテーブル単位でやってみたら
問題解決の手順として
本当にメモリーエラーなの? ってのが気になる。
本当なら、まずはどこでメモリーエラーになっているか調べなさいな
とりあえずそっからでしょ
>>288 差分でとるにしても
バックアップのスケジュールのどこかでフルバックアップしないと破綻するから
結局根本解決にはならんのでは ※今回のケースの場合な
>>283 普通はShellを使うんだけどねぇ・・・
PHPしか選択肢は無いの?
こないだもMACアドレスとかいってたやついたな。
これからIPアドレスもIPv4とIPV6と混在してくるから、 MACアドレスが主流になってくるよ。
295 :
283 :2007/07/16(月) 21:03:22 ID:uy8jxOc+
>>285 PHPのMemory_limitは間違いなく256MBです。
出来るなら毎時の方がいいのですが……とりあえず今は毎日でやっています。
>>287 scp、rsyncについて調べてみます。
>>288 差分バックアップは復元の時に、めんどそうですね。 案に考えて見ます。
>>289 HTTP関数だけで別サーバーに転送できるんですか?
別サーバーからfile_get_contentsやfopenでそのデータを開いて、そのサーバーに保存するとかではないですよね?
>>290 現在うごいているサーバーに新しく物を入れるのは……ちょっとためらってしまいます。
最初からRAID組んでおけばよかったですね…
>>291 テーブル単位だと……一番大きなデータベースで120個くらいのテーブルがあって、新機能と同時にテーブルも追加されているので、難しそうです。
telnetからCRONのシェル実行してやると、メモリーエラーのPHPが帰ってくるので、間違いはないと思いますが…
>>292 シェルスクリプトでsendmailまで通してしまえばいいんですね、そこは盲点でした。
簡単に組もうと思ってPHPでやってました。
とりあえず、いただいたアドバイスでやってみて、また報告します。
>>289 HTTP関数だけで別サーバーに転送できるんですか?
別サーバーからfile_get_contentsやfopenでそのデータを開いて、そのサーバーに保存するとかではないですよね?
クライアントからPOSTしてサーバーにデータを送るのと一緒で、
サーバーから別サーバーへPOSTすればいいだけ。
EasyPHP1.8のMySQLがうまく起動しない件の質問ってここで大丈夫ですか?
MACアドレスみたいなのって、ifconfigで一時的に変更できなかったっけ? 実際に変更することはかなりの難関だけど
299 :
283 :2007/07/16(月) 22:17:16 ID:cqqgBiea
>>296 fsock関数を使うって事ですね。
だけど、これ受け取り側のPOST_MAX_SIZEとかMEMORY_LIMIT、UPLOAD_MAX_FILESIZEを相当大きくしないといけないですよね…
20MBのGZIPをPOSTするのに、どれくらいの設定にすればいいのだろう……
1日1回バックアップが必要なほど重要なDBデータを メールで送ったりPOSTするのかよ。 バックアップを保管しておく側のマシンが SFTPクライアントで自動で一日一回取りに行けばいい。 クライアントマシンのCRONかタスクスケジューラ使えよ。
>>298 NICの故障交換ごときでMACアドレスが
コロコロ変わると管理が面倒くさいので
NICのツールで大抵変更できるようになっている。
ベンダーコードの部分まで変更できちゃったりするけど。
ipconfigにはそういった機能はないんではないかね。
ありそうなのはデバイスドライバの設定メニューのところとか。
302 :
275 :2007/07/17(火) 10:12:03 ID:7P0i756L
>>281 ありがとうございます。
難しそうですが試行錯誤してみます。(実はチンプンカンプンです・・・orz)
簡単な掲示板をつくってソースをみてもらいたいのですが板ちがいでしょうか?
>>301 ifconfigじゃたぶんムリ
たぶんLinuxの場合ioctl(2)とかを叩く必要があるはず。
その手のユーティリティがあるかもしれないけど。
それと、TCP/IPのソケットから相手先のMACアドレスを知る方法ってあるの?
つか、MACアドレスってイーサネットのルーティングでしか使わん情報で、
PPPとか、IPを経由した時点で消えると思っていたけど...
IPv6ならサフィックスとしてMACアドレスを使う場合もあるはずだから取れるかも。
306 :
nobodyさん :2007/07/17(火) 11:04:17 ID:uhiZpK63
include_onceで読み込んだファイルをクライアントのメモリに保存したいのですが そういう関数ってありますか?
httpもphpもincludeも全否定か
309 :
nobodyさん :2007/07/17(火) 13:38:28 ID:uhiZpK63
Aページを開いたときに「果物ファイル」を開いて Bページを開いたときに「音楽ファイル」を開いて で、AページとBページを行き来すると、 ページを開くたびにファイルを読み込むのも負荷が気になるんです。 別ページに移動してまた同じページにもどってもinclude_onceはまたファイルを読み込みますよね? Cookieだとさすがに量が多いので別の方法ってないでしょうか?
>>309 サーバーサイドなPHPでクライアントのメモリはどうこう出来ないだろ。
クライアント側に置きたいならクッキー以外無いでしょ。
いまいちやりたい事が分からないから、やりたい事と想定しているファイルの容量と種類を晒せば何か助言があるかもね。
つまり、クライアントにキャッシュとして残しておきたいんでしょ? それはクライアント側が決めることだから無理。
クライアントで読み込んだHTMLをキャッシュさせるという方法なら… ただし更新させるのが難しくなるがな
負荷云々っていうことにこだわるような質問レベルとは思えないけど、 そんなに気になるなら、PHP無関係なように静的なhtmlを吐き出しておけばいいやん。 それ以前に、サーバ側でキャッシュ使って改善できんのかとも思う。
>>312 includeの話であれこれなってるから、DB使った動的なことをそんなにやってない気がする。
315 :
nobodyさん :2007/07/17(火) 14:11:52 ID:uhiZpK63
AページとBページを統一して、GETでファイルの読み込みを振り分ける方法にしようと思います。 ファイルの更新日時をクッキーに記録して、クッキーに保存されている記録と照らし合わせて 新しかったら読み込ませず、古かったらinclude_onceをかませようと思います。 いろいろと助言くださって助かりました。ありがとうございます
>>315 の考えは思いつかなかったなあ
それぱくる
>>315 目的が不明瞭だが もし使って良いのなら、
ajax + レスポンスでhtmlを返して、<div id="hoge"></div> の間をinnerhtml書き換えすることでうまくいく。
(部分更新するデータのみ読み込み出来る。)
123
319 :
nobodyさん :2007/07/17(火) 15:58:21 ID:R00cIuyl
携帯用サイトの開発をしているのですが、 絵文字を表示するときは、Unicodeでの表示が良いのでしょうか? 3キャリア対応でキャリア別に絵文字を表示させたいのですが、 何かアドバイスがあればよろしくお願いします。
>>315 うちも似たようなことやってる。include(require)は結構応用がきいて便利。
メソッド内部でよみこめば$this参照ができてメソッドを使えるし、部品ごとにわけれてソースが綺麗になる。
なにより分解していくとかなり使い回しを意識してコードを書けてる気がする。
>>319 なんでもいい気がする。Unicodeにすれば
?(SJIS)と?xE63E;(Unicode)で同じ文字になってたらそれでいいんじゃない
321 :
nobodyさん :2007/07/17(火) 19:04:22 ID:k2OQL4pV
配列の並び替えについてなんですが、 forの繰り返し処理で値を参照し、数字が出た場合 その要素を、その数字のキーを持つ配列の直後に並べ変えたいのですが、 可能ですが? (例) rei[1]="いぬ" rei[2]="ねこ" rei[3]="こねこ" rei[4]="1" rei[5]="ぬこ" を rei[1]="いぬ" rei[2]="1" rei[3]="ねこ" rei[4]="こねこ" rei[5]="ぬこ" こんな感じです。 宜しくお願いします。
意味がわからない
よくわからんがヒントをやろう ・配列のキーを取得 ・キーに1を足す ・配列の値に↑の値があるかチェック あとは自分で考えろ
誤爆です。聞くスレ間違えました
なんかだんだん、エスパーレスが必要になってきたな。
すみません 今、php5.2.3をインストールしてphp.iniの編集をしてたんですが、 mbstring.script_encoding の指定がありません (以前使ってた5.2.0ではあって、euc-jpを指定しています) これは気にしなくていいものなんですか?
すみません、解決しました
329 :
nobodyさん :2007/07/17(火) 21:49:25 ID:iq9KHvpN
PHPを勉強しています。 基本は理解できているのですが、 classを利用したプログラミング、また、 オブジェクト指向の概念が理解できません。 本を買ってclassの基本構造などは理解しましたが、 自分で書くとなるとどのような場面で どういったclassを書けば良いのか さっぱり検討がつかない状態です。 このような段階(レベル)から一段ステップアップする為には どうしたらよいでしょうか? 習得にあたって参考になった書籍や、 経験に基づく習得方法などを教えてください。 購入した書籍 ■はじめてのPHP5プログラミング エキスパート編 (単行本) ■いちばんやさしい オブジェクト指向の本 (新書)
いい加減、OOPわかりませんできません に対する内容をテンプレに入れたらどうだ
>>329 オブジェクト指向分析・設計関連の本でも探してみては
あとは経験かなぁ
補助本としてなら
デザインパターン入門 結城浩
リファクタリング入門 結城浩
UMLモデリングのエッセンス マーチン・ファウラー
読んで学ぶのもあるけど、経験してから、読んで、 自分の経験と記述を比較してみるってこともしないとね。 オブジェクト指向って、実践知の最たるものだから。 ごちゃ混ぜの中から自分の経験をパターンの合わせてトレースしてみること。
333 :
329 :2007/07/17(火) 22:24:46 ID:iq9KHvpN
>331,332 早速のレスありがとうございます。 経験が重要ということですね。 仕事で書いているわけではないので、参考書籍を紐解く以外に なかなか経験値を積めないのが悩みです。 各種ライブラリやフレームワーク(MVC)などの 次のステップに早く進みたいので、 classを利用したプログラミングをなんとかマスターしたいです。 また、Rubyでオブジェクト指向を理解したという人や、 Objective-Cなどでweb以外ものを作るとわかるかもという意見もあるようですが、その他にも分かり易い方法などがあればアドバイスをお願いします!
具体的にあげていったらきりがないし漠然と説明しようとしたら意味分かんなくなる。
意識しすぎて無闇に不必要な物まで小分けして可読性が低くなったら本末転倒だしね。
>>332 の言ってるように実際に概念的な事柄だけ頭の隅に置いておいて
幾つか自分で作ってから本を読んで当てはまりそうな部分を掘り下げて
リファクタリングしていったほうがいいんじゃないかと
オブジェクト指向を理解していない俺様が講釈たれにきましたよ。
335 :
332 :2007/07/17(火) 22:33:21 ID:???
>>333 こんなところにぐだぐだレス書いてる暇があったら
プログラムの一行でも書け
336 :
nobodyさん :2007/07/17(火) 22:34:55 ID:QKoDyMoX
>>333 ライブラリやフレームワークなんてオブジェクト指向の最たるものだから
順番やステップとかきにしないでやりたいことを
とりあえずやってみた方が飛び越えてから理解できるってこともあるし
やってみてもいいんじゃまいか?
>>333 だからウダウダ言ってないで
PEARみたいなライブラリなりFWなりのソースひたすら読んで
自分でとにかく書いて気づいていくしかねーんだよこのタコ
「OOPを理解した!」なんてもんはそんな気がするだけだ
OOPに近道なんざねーよ
可哀想に、、 OOPは自分が必要に思えるようになるまで必要ない。(仕事の場合は除く)
>>341 モデルのような奥様なら、観るだけで自分の欲望をコントロールできると思います。
>>341 最悪の場合、奥さんが第三者にfuckされている可能性があります
植物だって生きているのに、動物を殺していないから、 俺たちは殺生していないと詭弁を弄するアホな坊主とオマエら一緒だな。 恥を知れよ。
↑頭わるそうだな
お決まりなので・・・・ オマエモナー
>>336 --enable-zend-multibyte
>>348 もうすこし具体的に書いていただかないとわかりません。
おねがいします
PHPをインストールする際に--enable-zend-multibyteと--enable-mbstringオプションを 指定することで、mbstring.script_encodingディレクティブが有効になる。 これはソースをSJISで書いているときに必要になるぐらいのもの。
351 :
nobodyさん :2007/07/18(水) 02:02:13 ID:PiKxEDAI
php 5.1.6 Apache 2.0.52 CentOS 4 です。 以下の様にpreg_replaceで$srchtmlに格納されてますタグの置換を行っています。 $styleには color="#FF0000" size="4" がちゃんと取り出されてるのですが、サブルーティンでexplodeしようとすると 検索されません。 Array[0]=' color="#FF0000" size="4"' となってしまいます。試しに、ほかのキー「FF」で試しても同じでした。 試しにfunction fontcss内で $myarray = explode(" ","hoge hoge huga huga"); としますと、こちらは問題なく、検索されて配列になります。 ど、どなたかお知恵を。。。 $search = array ('/<font(.[^>]*)>/','!<div id="([0-9][0-9])">!'); $replace = array ($this->fontcss("$1"),$this->divconv("$1")); preg_replace($search, $replace, $srchtml); function fontcss($style){ $myarray = explode(" ",$style); .... }
5.1系はバージョンアップしてもいいんじゃないのか
\bもためしたの?
>>354 ありがとございます、まさしくそれでした。
357 :
nobodyさん :2007/07/18(水) 12:58:43 ID:FfDpKpOg
アップロード時のローカルファイルアドレスはどこに格納されているのでしょうか mixiでは「c:\hoge\123.jpg」と確認ページに出てるのですが。 print_r($_FILES); print_r($_REQUEST); print_r($_POST); ファイル名しか見当たりません…
php.iniで指定された場所に保存されるけどサーバープロセスが終わると消える。
359 :
nobodyさん :2007/07/18(水) 13:05:23 ID:EIaU60X9
ボタンをクリックしたらデータを追加するようにするにはどうしたらいいんですか?
>>357 どこにも格納されていない
なのでJS使って自前でPOST
>>359 何のボタンなのかわからんので答えられない
361 :
nobodyさん :2007/07/18(水) 13:23:47 ID:EIaU60X9
>>360 追加ボタンを押したらSQL文を使ってデータベースに追加したいんです
>>361 データベースに接続して
インサート文を実行すればいい
363 :
nobodyさん :2007/07/18(水) 13:48:29 ID:EIaU60X9
>>362 そのSQL文がよくわからないんです
一応参考書どおりに書いたんですけど反映されません
勉強してください
365 :
nobodyさん :2007/07/18(水) 14:01:56 ID:2QFnxZCZ
bool値を一番シンプルに反転するコードはどうすればいいですか?
例だけでも教えてください
改行コードCRLFをLFに修正するスクリプトを作成したいのですが、 肝の「正規表現で改行部分を修正」というのが自信がありません。 $text_data = preg_replace("/\r\n$/m", "\n", $text_data); ↑これでモウマンタイでしょうか?
>>363 hoge_tblという名前のテーブルにhogei(int型)とhoget(text型)というカラムに入れる場合は
INSERT INTO hoge_tbl(hogei,hoget)values(1,'ああああああ')
を実行する
テーブル名とカラム名は時分の設計したDBにあわせて変更すること
あとは試行錯誤するか他の暇なやつが現れるのまて
370 :
nobodyさん :2007/07/18(水) 14:15:01 ID:FfDpKpOg
>>どこにも格納されていない >>なのでJS使って自前でPOST onclickで複合技なのですね、ありがとうございます。
>>369 暇じゃないが、一言いっておくと、そのSQLだとvaluesが小文字になっているから動かないよ。
あと、テーブル名も大文字にしておかないと、Windowsでは動くけどLinux上では動かなくて慌てる。
どうしてかは、もう分かったよね?
372 :
nobodyさん :2007/07/18(水) 14:24:50 ID:EIaU60X9
>>369 ありがとうございます
SQL文はできたと思うんですが
ほかに足りないステートメントがあるんでしょうか
valuesが小文字だと動かないDBなんてあるのか?
374 :
nobodyさん :2007/07/18(水) 14:27:50 ID:bXBOiS7Y
PHPの最初に <?xml version="1.0" encoding="Shift_JIS"?> header('Content-Type: application/xhtml+xml'); を記述すると、どうしてもファイルのダウンロードになってしまうんですが、 どうすればちゃんと表示できるのでしょうか?
>>373 MySQLの5.0からは、予約語の小文字は動かなくなっている。
376 :
374 :2007/07/18(水) 14:36:13 ID:bXBOiS7Y
ごめん、なんでもない 自分でも何がしたいのかわかんね
>>375 ソースくれ
少なくとも今俺の手元にあった5.0.38では
INSERT INTO (〜) values (〜) でも動作している
>>372 371がいったことも考慮して
まだ入らないなら
1、DB接続チェック
2、カラム名のスペルチェック
3、インサートのVALUESのチェック
intは未入力はデフォルトが設定されていないとエラーになる0かNULLを入れること
textとdateはシングルクォートが必要
4、文字コードのチェック
>>375 へぇ〜MySQLってそうなんだ
>>377 INSERT INTO T_SAMPLE values(1, '半井は、最近調子に乗りすぎ');
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values' at line 1
予め予約語を大文字で書く癖つけてる俺は勝ち組wwww PHPだと逆だけどね・・・
>>378 予約語のとこにも載ってない
てかSQLでそんなケースセンシティブなことってあるか?
予約語で使われてる同名の識別子を
バッククォートしてないとかならともかく
>>381 integerとtextカラムのtableで試したけどそれでINSERTできるよ
そっちのバージョンは?
英文も読めないバカがおおいいな
385 :
nobodyさん :2007/07/18(水) 15:29:03 ID:EIaU60X9
>>380 入りました
でも1行目に入ってしまうんですがどうすればいいのでしょうか
入れたいのは4行目なんです
>>385 取り出すときに並び替えりゃいいんじゃないの?
あるファイルに記述された関数の中から、呼び出した側のファイル名を 知る方法があれば教えてください
>>385-386 auto_incrementのこといっているのか?
一回、内部インデックスをクリアーしないと駄目じゃないか?
389 :
nobodyさん :2007/07/18(水) 15:40:19 ID:EIaU60X9
間違えました 入ってませんでした;; 何がいけないんでしょうか
環境によってことなるファイルパスの区切り子を知る方法ありませんか? __FILE__とか使えばイモっぽい方法で分かりますが もっとクールに知りたいです
>>385 DB内の並び順は当てにしない
386の言う通り取り出し時にソートする
並び替えが必要ならユニークなシーケンスをふって取り出すときに
order by(ソート) すれば入れた順に並び替えができる
任意番号をふってもOKでその場合も取り出し時にソートをすればいい
SQLの方が早いが最悪PHPでソートするという手もあるにはある…
ちなみに内容が板違いになっていっているのでDB板で聞いたほうが
良いと思う
>390 php パス 区切り で google 検索したら 4番目に出てきませんか?
宣伝乙
396 :
nobodyさん :2007/07/18(水) 16:02:49 ID:bXBOiS7Y
とりあえず聞きたいことがまとまったので書きます。 DoCoMoでCSSを使いたいのですが、XHTML形式じゃないとダメみたいなんです。 これは、形式をxhtmlにしなくてもheaderでxhtmlを宣言していれば大丈夫ということなのでしょうか? metaでxhtml+xmlで試してみたのですが、DoCoMoではうまくCSSが使えません。 headerでxhtml+xmlを宣言した場合、なぜかPCで見るとファイルのダウンロードになります。 どなたかアドバイスお願いします。
たちの悪い冗談ぐらい華麗にスルーしましょう
>>396 「docomo css」で検索したらそれらしいのがゴロゴロ出てきたけど。
ヘッダーがそもそも違うみたいだからUAとかで判別してヘッダー出せばいいんじゃないの?
とちょろっと検索しただけで適当に言ってみる。
399 :
nobodyさん :2007/07/18(水) 16:11:30 ID:bXBOiS7Y
>>398 有難うございます。
UAで判別して携帯のみheaderでxhtml宣言することにします。
当方auなので確認する術がありませんので、知人にテストしてもらいます・・・。
400 :
nobodyさん :2007/07/18(水) 16:28:12 ID:sSp2i6sO
ページを移りかえるたびにfile関数でファイルを読み込むのはやめたほうがいいですか? 負荷はあんまり気にしないほうがいいでしょうか?
そんな大量のアクセスじゃなければ問題ないよ
え?fileになんか問題あんの? そんなのよくある処理じゃね
403 :
nobodyさん :2007/07/18(水) 16:34:52 ID:sSp2i6sO
大量のアクセスはないとは思うのですが、少しでも負荷をへらしたいとおもってます。 いちおう、セッションつかって一回しか読み込まないようにしてみたんですけど 数字的にみて、毎回ファイルを読み込むのと↓のコードはどちらが効率がいいですか? session_start(); if ($_SESSION['a'] != 1) { echo $_SESSION['a'] = 1; echo "ファイルを読み込みました"; $filename = "../data/schedule/schedule.dat"; $_SESSION['str'] = file($filename); } echo "出力"; print_r($_SESSION);
404 :
nobodyさん :2007/07/18(水) 16:35:11 ID:EIaU60X9
SQL文を入れるだけではだめなんでしょうか? 関数は何を使えばいいんですか?ODBCです
>>403 負荷気にするならDB使えばいいと思うんだが
>>405 お前は馬鹿かw
>>403 負荷を減らしたいなら
一般的にはそのdatファイルの更新がかかった際に静的なHTMLページを更新するってのが一般的かな
SESSIONの場合更新がかかったとしても古いデータを読むことになるからね。
408 :
nobodyさん :2007/07/18(水) 16:44:02 ID:sSp2i6sO
DB使いたいのですがサーバの仕様上インストールされてないので使えませんでした。 静的にHTMLページを作成することにします。
そんな貴方にXML
私、今ぼっきしているんです。 _ト. ̄|○
反応にこまるんだが
413 :
nobodyさん :2007/07/18(水) 19:22:32 ID:sSp2i6sO
ユーザー関数aaaから帰ってきた配列(1,テスト)のテストという部分を出力したいのですが、 echo aaa()[1]では以下のエラーが返ってきました。 Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\www\test.php on line 2 echo aaa()[1]をどのように直せばテストと表示できるのでしょうか? <?php echo aaa()[1]; function aaa(){ $abc = array(1, "テスト"); return $abc; ?>}
式の戻り値から直接ブラケットで 配列アクセスする事はPHPではできない 一旦変数に入れるか、array_slice(aaa(), 1, 1)か
>>413 PHPでは返り値がオブジェクトなら出来るけど配列だと出来ないんだよねぇ
その場合ならend()を使うという手もある。
>>415 は?!オマエ馬鹿か?
普通に配列を戻り値にできるだろwwww
>>413 関数の引数になんか付けて「テスト」だけ返すようにするとか・・。
用途が分からないからなんとも助言しにくい。
420 :
nobodyさん :2007/07/18(水) 19:49:09 ID:sSp2i6sO
ありがとうございます、おかげさまで助かりました。
421 :
nobodyさん :2007/07/18(水) 19:51:35 ID:27CSX6XY
>>415 の意味を理解せずにつっこんでいる奴らに絶望したw
>>421 >PHPでは返り値がオブジェクトなら出来るけど配列だと出来ないんだよねぇ
頭大丈夫?
この1行の意味だけを読めよ馬鹿がw
423 :
nobodyさん :2007/07/18(水) 19:59:21 ID:sSp2i6sO
最後にひとつ確認したいことがあります。 XSS脆弱性チェックをしているのですが、 $str = "<br><b>てすと";←タグなどを含んだ値を格納 <input type="text" name="text" value="<?php echo $str;?>"> これからXSSの実験をしているのですが確認できませんでした。 たまたま実験数が少ないだけかもしれませんが、 inputないに文字列をテキスト表示したからといって信頼できるのでしょうか?
>>422 返り値「が」だぜ?
返り値「に」や返り値「を」じゃないぜ?
そもそもが日本語がおかしい
中島敦「山月記」の中で、主人公が自分の半生を回顧して、 「己は次第に世と離れ、人と遠ざかり、憤悶と慙恚とによって益々己の内なる臆病な自尊心を飼いふとらせる結果になった。」 と言ったが、君達は正にそれだな。
>>423 信頼出来ない。"や">で要素やタグを終了出来るし、
そもそもHTMLでは要素内であっても特殊文字はHTMLエンティティにすることが推奨されている。
>>427 変な子がこのスレに取り憑いているだけだ
このスレ全体を眺めればわかる
まあ、気にするなってこと
430 :
nobodyさん :2007/07/18(水) 21:53:25 ID:sSp2i6sO
""で囲まれた中でも危険なんですか?その危険がどうしても発生できません。 以下のサンプルで試してみましたがXSSは確認できませんでした。 どのようなケースのときにXSSがおこりえるのでしょうか? $str = "あああ>"; value="<?php echo $str;?>
431 :
nobodyさん :2007/07/18(水) 21:54:54 ID:sSp2i6sO
すみません、気のせいでした。XSS可能でした
>>426 「他人より出来る」と思い込みたいんだから仕方ない。
ずっと前からそうだ。今になってわざわざ言う必要はない。
433 :
nobodyさん :2007/07/18(水) 23:00:43 ID:7tC2FFCS
>>426 何を言っているのか何を言いたいのかさっぱり分からないが
酒鬼薔薇事件で子供ほど難しい漢字や言葉を使いたがるというのを思い出した俺ガイル
>>433 自ら回答はせず、他者の回答に対し「おまいらは馬鹿かと反射的にレスしている」(+俺の勝ちとか思いこんでしまっている節もある)人が
自分の間違いと理解力不足に気づいていない事を皮肉っている。
435 :
nobodyさん :2007/07/18(水) 23:21:25 ID:7tC2FFCS
>>434 お前よくわかるな。俺は「慙恚」この漢字すら読めないZE
だからといってGoo辞書ひく気はまったくないけどな
そもそも聞いたことのないやつの自叙伝かなんかから
そんな崇高(だと思われる)な文章を引用されても
皮肉かどうかすらさっぱり分からん
大人って言うのは万人に分かりやすく説明する能力に長けているもんだっていう皮肉が
>>433 だ
サスペンドサスペンドってうるせ〜や!! 保留っていえや!!
>>434 いや、だからここはそういうとこなんだって
別にその場に無理に染まる必要も無いでしょう
まぁまぁ、そんな熱くならずに自分のおならの臭いを嗅いでエクスタシーを感じようよ。
染まれとは言ってない 意外とものわかり悪いな 自明なことをわざわざ言う必要はないってことよ まあ上で言われたし、エクスタシー感じながら寝るか
全員が自明の事だと何故分かるのかと小いt(ry
442 :
nobodyさん :2007/07/19(木) 08:59:15 ID:IPLKMfOV
質問です winXP apache2 php5.2.3で開発してます test/test.php の中で、 require_once("Auth/HTTP.php"); というコードを実行した時、Auth/HTTP.php は test/Auth/HTTP.php という 階層構造でなければならないんでしょうか? php.iniでのinclude_pathは .;C:\PHP\pear となっており、 実際の階層は C:\PHP\pear\Auth\HTTP.php となっています ちなみに、test/test.phpで if(require_once("Auth/http.php")){ echo" OK"; } を実行したら OK が表示されました。 お暇な方回答おねがいします
444 :
nobodyさん :2007/07/19(木) 09:01:40 ID:H7YXRZIl
Simplateっていうテンプレートエンジン使ってる人いますか? よさげなので使ってみようと思ったのですが、ドキュメントがどこにもなくて プラグインの使い方が良くわかりません。 テンプレート側で {htmlspecialchars($hoge,ENT_QUOTES)} みたいにPHPの関数をそのままかけるところまではわかったのですが ここに独自関数を使えるって言う事じゃないのでしょうか? メンバー変数に$_pluginっていうのがあるので使えそうなのですが、 どんな感じで使うのでしょうか? ソースがPHPじゃないので、読むことも出来ないしOTZ ご存知の方いらっしゃいましたらお願いします
445 :
nobodyさん :2007/07/19(木) 09:10:39 ID:IPLKMfOV
>>443 ありがとうございます 確認したいんですが
require という関数は、
・そのファイルのある階層からの相対パス
・rootからの絶対パス
・include_path で指定したディレクトリ以下のパス
の3種類を取れるってことなんでしょうか?
>>444 基本的にSmartyと互換とっているみたいだから
Smartyのドキュメントを参考にしたら?
>>445 そんな基本的なことは、まずドキュメントに書いてある
それを読め
>>445 マニュアル引用
> 読み込むファイルはまずカレントのワーキングディレクトリからの相対パスとしてinclude_path で探され、それから、カレントのスクリプトのディレクトリからの相対パスとしてinclude_path で探されます。
>>444 そんな状態の人間はSimplateなんて使うな
Smartyを使ったほうがましだ
450 :
nobodyさん :2007/07/19(木) 09:33:46 ID:IPLKMfOV
451 :
nobodyさん :2007/07/19(木) 09:49:41 ID:0PZWkZf0
テキストファイルの一行目を取り出したいんですが、出来ますか? 出来ればやり方を教えて頂きたいんですが…
メモ帳を起動 ↓ [ファイル[F]]->[開く(O)] ↓ テキストファイルの選択 ↓ 一行目をマウスで選択 ↓ Ctrl+C
>>451 「file()」「fopen()」でマニュアル検索汁
>>451 $fp = fopen("thx.txt", "r"); //読み込み
$subject_thx = fEncCvt( fgets($fp, 10000) ); //件名
while ( $data = fgets( $fp, 10000 ) ){
$msg_thx .= fEncCvt($data); //本文
}
fclose($fp);
455 :
nobodyさん :2007/07/19(木) 12:56:23 ID:AESNaKiL
参照アップロードのインプットフォームを サーバー側で自動で代入するのはjsでもphpでもできませんよね? (毎回参照ボタン押さないようにしたいけど、勝手にローカルファイルの指定するのは危険になるから?)
>>455 もしそれができたら、欲しいファイルがありそうな
ところのパスいれておいて、javascriptとかで
勝手にsubmitするぜw
レベルが低いな。ちょっと小細工かければできるだろ
>>458 javascript と phpだけでどうやるんすか?
ActiveX VBScript Javaアプレット使うわけでもない。
metaタグに仕込む奴は最近は、使えない気がするが。
<input type='file' に対してはjavascriptは無力ではないか? むしろ小細工できるならマジで知りたい。
460 :
444 :2007/07/19(木) 13:45:16 ID:EtVjENa1
>>446 プラグイン周りはそのままやっても動きませんでした。
>>449 そこをどうにかお願いしますw
使いたいメソッドを持ったインスタンスを登録して
テンプレート側で何らかの記号で呼び出すとかでしょうか?
それとも、普通に{hoge($foo)}と呼び出せたりするのでしょうか?
Smartyのように$_pluginsにはパスを登録すればよいけど
そこにおくファイルフォーマットが違うのでしょうか?
$_pluginsには何を登録するのか?
テンプレートではどのように書くのか?
この二点だけでもお願いします!
お断りだぜ!!!
462 :
nobodyさん :2007/07/19(木) 15:07:58 ID:pASguBwm
phpでテンプレートエンジン?
463 :
nobodyさん :2007/07/19(木) 15:19:50 ID:WayGbRpf
画像をフォームからアップロードしたときに気をつけなければいけないことってなんでしょうか? どんなチェックをしたらいいですか?
公序良俗に反していないかどうか、かな
465 :
nobodyさん :2007/07/19(木) 15:28:01 ID:WayGbRpf
それは大丈夫なんですが、セキュリティーはどうでしょうか?
内肛門括約筋を鍛えておけば大丈夫です。
質問が一般的、かつPHPと無関係なのはID出してても この程度の回答で満足してお引取りください
質問です。 いままで、csvファイルも含めてすべてsjisでPHPを作成していましたが、 新しくパソコンを買ったので、EUCで設定してはじめることになりました。 (新しく買ったPHPの参考書がEUC指定だったので) そこで以前のファイルをまとめてEUCに直したいと思います。 どうすれば、SJISで書かれたファイルをまとめてEUCに直せるでしょうか。 アドバイスをよろしくお願いします。
470 :
nobodyさん :2007/07/19(木) 18:30:03 ID:WayGbRpf
すみません、公序良俗は回答にふくまれるのでしょうか?
472 :
nobodyさん :2007/07/19(木) 18:46:49 ID:WayGbRpf
なんか納得できないな・・公序良俗ってバカにしてますよね
>>460 そこまでSimplateにこだわる理由は何?
直接製作者に聞いたらどう?
475 :
虚弱PHP :2007/07/19(木) 19:09:46 ID:???
>>463 セキュリティなら、本当に画像ファイルか確認することぐらいかな?
スクリプトファイルをアップロードされると、
ローカルファイル・インクルージョンの手段か、
リモートファイル・インクルージョンの踏み台にされる可能性あり。
ただ、他の脆弱性との組み合わせ技だし、
そんなに気にする必要もないと思うけど。
>>463 ・画像のサイズ上限(1MBとか)
・2バイト文字を含むファイル名、空白を含むファイル名を許すかどうか
・同一ファイルをアップロードしたときにファイル名をどうするか(元のファイル名に _日付 を勝手につけるとか)
・ファイルタイプ(gif,jpeg,pngのみ許可)とか
・ファイルアップロードの過程で簡易編集(リサイズ等)を出来るようにするか。
・同時に複数画像ファイルをアップロード出来るようにするか
・アップロード途中に、現在のアップロード状況をプログレスバーの様に表示するか
・アップロードと同時に、サムネイル画像を自動生成するか
等々、いろいろあって、範囲が広すぎて何とも言えない。
あと、最近のネタでは
バイナリ内にphpのコードを仕込むことが出来るらしいがコレの対策とか
とにかくいろいろ結構面倒なので、画像アップロード系のGPL,LGPLのソースとかもみれば良いと思う。
(仕事じゃなかったら、そのまま使って改造した方が楽かもね)
477 :
469 :2007/07/19(木) 19:58:04 ID:XK0LpanU
>>471 ありがとうございます。
さっそくツールを見つけて変換してみました。
ただソースとCSVをEUCに変換して、関数の"sjis"変換していたところを"EUC"に直してみたのですが、
”蟒”という字がどうも文字化けしているようでした。
これはもうどうしようもないのでしょうか?
sjisの時は問題なく表示されていました。
478 :
nobodyさん :2007/07/19(木) 20:04:24 ID:WayGbRpf
>>475-476 ありがとうございます。
最悪の場合などいろんなケースにも対応できるように
アドバイスを元ににプログラミングしてみます。
ありがとうございました。
479 :
469 :2007/07/19(木) 20:26:42 ID:XK0LpanU
うーん、どうも2バイト目が”ae”の日本語はすべて文字化けしてるみたいです・・・
480 :
469 :2007/07/19(木) 20:28:02 ID:XK0LpanU
あ、違いました。 見てたコード表がSJISでしたm(_ _)m
おれはいつでも変換できるように以下を気にとめながらコードを書いてる。 ・ライブラリファイル作成に日本語は使わない。上段部にまとめて日本語を記述するかreadme.txtを併用する。 echo "<form name=\"aaa\">というふうに'を使わないで"で統一。
482 :
469 :2007/07/19(木) 21:23:19 ID:XK0LpanU
文字化けしていた、CSVデータの前後に” ”(スペース)を入れてみたら文字化けがなくなりました。 なぜなのでしょうか??
phpからデータベースの更新がしたいんですがうまくいきません 警告でまくりです どこが詳しいサイトはないでしょうか
>>483 はっきり言って、フリーのDBサーバーは警告文が不親切で使い物になりません。
SQLServer又はOracleをオススメします。
因みに、私はOraclePlutinumを持っています。モチロン新試験の方です。
技術者1200人規模の会社で、DBについては一流の技術を持っていると会社の中で地位を得ています。
業者も大変だな
486 :
483 :2007/07/19(木) 21:41:21 ID:???
>>484 ありがとうございました。やはり、DBの設計思想がおかしいようです。
Oralcleの導入を早速検討させて頂きます。
本当にありがとうございました。
>>482 nkfなら
[root@localhost hoge]# vi /usr/local/bin/conv_to_euc.sh
#!/bin/sh
while [ -n "$1" ]; do
if [ -e "$1" ]; then
TMPF=nkftmp$$
nkf -e -Lu $1 > $TMPF
mv $TMPF $1
echo $1
fi
shift
done
こいつを chmod 777 /usr/local/bin/conv_to_euc.sh としてとりあえず実行権限立てて
上記シェルスクリプトを find ./ -name "*.php" |xargs /usr/local/bin/conv_to_euc.sh のみたいにfindをかまして呼び出す。
(よけいなファイルまで変換しないように要注意、findとかのオプションは自分で調べれ)
linux環境ならこれでeuc LF に 一括変換できる(手抜きだからパーミッションは変わっちゃけど)
いきなり本番にはやらないように、バックアップをとってからやりましょう。
ちなみに当然ながらソース内で mb_convert_encording($hoge,"SJIS","auto") なんてやっているところは、それぞれ
mb_convert_encording($hoge,"EUC-JP"","auto") とかに書き替える必要はある。
この類は、windows用とかで一括置換ソフトがあるので、それらを使えばよい。
けど質問者はたぶん全部windows上なんだろうなあ。
488 :
469 :2007/07/19(木) 21:55:30 ID:XK0LpanU
>>487 ありがとうございます。
ご推察どおり、Windouws環境です。
PHPファイル、CSVファイル、ブラウザ、ともにEUCなのを確認しました。
SJISだったところもすべて、EUCに書き直しました。
色々試していると、
これだと文字化け
while($line = fgetcsv($db, TEMP_BUF, ",")) {
・・・
echo "$name";
}
これだと文字化けせず
while($temp = fgets($db, TEMP_BUF)) {
$line = explode(",",$temp);
・・・
echo "$name";
}
というようなことが判明しました。
どこかで文字コードの判定が狂ってる気がします。
php.ini の設定ミスかもしれないので少し調べてみます。
>>487 >mb_convert_encording($hoge,"EUC-JP"","auto");
autoのdetectって結構袋小路に入る。
md_detect_orderを明示的に設定しても駄目なこともある。
コードが決まってるなら、実は$fooを決めうちすべき
mb_convert_encording($hoge,"EUC-JP",$foo);
491 :
nobodyさん :2007/07/19(木) 22:49:40 ID:L7MnxTu6
>>490 autoが駄目な理由は、文字コードの1バイト目が不定領域にある文字を使っているからでは?
先頭の方で、<!--京-->とすれば解決できるよ。
Yahooのページもソース見ると、そうやっていたりする。
そんなad-hocな解決は美乳好きだけでいいよ。くだらん
493 :
nobodyさん :2007/07/19(木) 22:55:39 ID:L7MnxTu6
>>492 ad-hocも何も釣りなんですが、何か?
495 :
469 :2007/07/20(金) 01:21:05 ID:0kZTntua
>>489 ありがとうございます。まさにこの症状だと思います。
ただどういうわけか、setlocale(LC_ALL, 'ja_JP.eucJP');をいろんなところにセットしてみても文字化けが直らなかったので、
素直にfgetcsvの部分をfgetsに直すことにしました。
このたびはたくさんの助言ありがとうございました。
いつか自分も誰かの質問に答えられるようになれればと思います。
とりあえず・・・
>>469 はどのくらいのスキルをもってるかPRしてよ
497 :
nobodyさん :2007/07/20(金) 09:43:19 ID:Bm0qkr+0
質問です winXP apache2 php5.2.3 mysql5 で以下を実行してもうまくいきません レコードは増えるんですが、idは追加されるものの、nameに値が入らないのです。 どんな原因が考えられるでしょうか? <?php extract($_post); mysql_connect('localhost','root','oraora'); mysql_select_db('test'); $sql = "insert into dbtest values(0,'$name')"; mysql_query($sql); ?> <form action="adodb_write.php" method="post"> 名前:<input type="text" row=1 name="name"></input><input type="submit"></input> </form>
498 :
nobodyさん :2007/07/20(金) 09:49:58 ID:Bm0qkr+0
>>497 です
すみません、忘れてました、SQLのテーブル構造は以下の通りです
>>497 のフォームでデータ送信して増えた部分はid=10(idはauto_increment)です
+----+-----------+
| id | name |
+----+-----------+
| 1 | simada |
| 2 | suzuki |
| 3 | sato |
| 4 | sirakawa |
| 5 | takahashi |
| 6 | saito |
| 7 | ito |
| 8 | ueda |
| 9 | takada |
| 10 | |
+----+-----------+
$_post $_POSTじゃない?
500 :
nobodyさん :2007/07/20(金) 10:04:37 ID:vU4cROZQ
上のアップローダーで話があったんですが アップ完了までのプログレスバーはどうやって実装するのでしょうか? 普通は完了するまで画面は表示されませんよね?
501 :
nobodyさん :2007/07/20(金) 10:25:50 ID:Bm0qkr+0
>>499 ありがとうございました、ちゃんと名前も追加されるようになりました。
ただ、、日本語で名前を登録すると追加されないです(アルファベット入力のみ受け付ける)
これはなぜでしょう?
phpはutf-8で保存、書き出し設定しています
mysqlの [mysqld] も default-character-set=utf-8 としているんですが
「ajax プログレスバー」とか「ajax プログレスバー php」とかで検索すれば色々分かる
504 :
nobodyさん :2007/07/20(金) 10:55:13 ID:Bm0qkr+0
>>503 すみません、レコードが追加されないのです
| 8 | ueda |
| 9 | takada |
| 10 | noda |
+----+-----------+
上記のように、 アルファベットでの名前 nodaのレコードは追加されても
「野田」と入力して送信しても
| 10 | noda |
+----+-----------+
上記のまま、id=11・name=野田 のレコードが追記されません なぜでしょう?
505 :
nobodyさん :2007/07/20(金) 11:55:01 ID:xSJ/fCQP
>>504 横レスですまんが、野田って、今年の3月に○立情報の案件で、
引継ぎも何もしないで、プロジェクトの途中で勝手に抜けた奴じゃなねーだろな。
あれから、めちゃめちゃ俺が引き継いで大変だったんだけど。
本人だったら、殴ってやりたいんだけど。
warota
pukiwiki等、URLに日本語が含まれていた場合エンコードしますが、 pukiwikiにはEUCとUTFの2種類あります。 EUCでほげほげをエンコードすると、『%A4%DB%A4%B2%A4%DB%A4%B2』となり、 UTFでほげほげをエンコードすると、『%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92』となります。 これを共通にデコードして同じ『ほげほげ』を出力したいのですが、 EUCで表示するUTFが文字化けし、UTFで表示するとEUCが文字化けしてしまいます。 これを防ぐにはどのような書き方をすればよいのか教えていただけませんでしょうか? <?php header("Content-Type: text/html; charset=EUC-JP"); $euc = "%A4%DB%A4%B2%A4%DB%A4%B2"; $utf = "%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92"; echo rawurldecode($euc)."<br>\n" . rawurldecode($utf); ?>
508 :
504 :2007/07/20(金) 12:12:25 ID:Bm0qkr+0
509 :
nobodyさん :2007/07/20(金) 12:16:31 ID:vU4cROZQ
>>502 むぅ、ajaxが必要ですか…
バッファじゃ不完全ですよねぇ
デコードしてからエンコーディングすればいいんじゃね?
>>507 文字コード指定したりできなかったっけ?
513 :
507 :2007/07/20(金) 12:57:51 ID:9levxhBt
あげ忘れてました。
もう1つ言い忘れたのですが、
エンコード済みのほげほげに該当する部分は、
外部から受け取る値になるので、
受け取った時点で、どの文字コードか調べたいのですがそんな関数ありますか?
>>511 rawurlencodeの引数にはそんなオプションはありませんでしたが、
なんか他の方法でできるのでしょうか?
どっちにしろ受け取った値がどの文字コードかわからないといけませんね。
>>513 $euc = "%A4%DB%A4%B2%A4%DB%A4%B2";
$utf = "%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92";
$euc = urldecode($euc);
$utf = mb_convert_encoding(urldecode($utf), "EUC-JP", "UTF-8");
あれ?MySQLでdeleteって予約語だっけ
517 :
nobodyさん :2007/07/20(金) 14:15:55 ID:Z+yQ2M+4
mail関数で携帯にメールすると文字化けします。 どのようにすれば対処できるのでしょうか? 文字コード:JIS 関数:mail() どこかで携帯にメールするときは文字コードはJISでmail()関数を使うのが正しいといわれたのですが・・・
518 :
517 :2007/07/20(金) 14:28:50 ID:Z+yQ2M+4
すみません、ちなみに文字化けするのはSubject部分のみです。 本文は文字化けせずにちゃんと届きます。 ちなみにSubject、Body共に「JIS」で送信しています。
それだけのキーワードがあるんら それで検索してみたら?
521 :
517 :2007/07/20(金) 14:40:25 ID:Z+yQ2M+4
すみません普通に同じような問題ありました。
522 :
虚弱PHP :2007/07/20(金) 14:51:51 ID:???
>>507 $enc_arr = split( ",", "ASCII,UTF-8,EUC-JP,SJIS" );
function fEncCvt($cvt_value) {
global $enc_arr;
$strDefEnc = mb_detect_encoding ( $cvt_value ,$enc_arr, TRUE );
if( $strDefEnc != DEF_HTTP_ENC ) {
$cvt_value = mb_convert_encoding($cvt_value, DEF_HTTP_ENC, $strDefEnc ); }
return $cvt_value;
}
$hoge = fEncCvt($hoge);
>>522 >PHP V5.2 の新機能、第 5 回: ファイル・アップロードの進行状況を追跡する方法
>PHP V5.2 の新機能、
>V5.2
orz
525 :
nobodyさん :2007/07/20(金) 14:53:50 ID:ETH2C+0h
くだらない質問ですみませんが解らないので教えてください 登録フォームなどでHTMLのセレクトタグをセッションし確認画面でセレクトタグの選んだものを表示し、 その後戻るボタンなどで登録フォームに戻ったときセレクトタグの選んだものの状態を維持させたいのですがどうすればいいでしょうか?
>>525 いや、そのままだろ
自分でそれを実行してみてわからないことがあれば質問汁
528 :
nobodyさん :2007/07/20(金) 15:00:25 ID:m5o2VFCm
ぬこえもんの生息スレをおしえてください
529 :
nobodyさん :2007/07/20(金) 15:10:47 ID:i+qd4INk
進むボタンでデータベースから次のデータを取り出したいんですがどうしたらいいんでしょうか?
>>525 質問はもちついて書け
内容が今ひとつわからんがjavascriptのヒストリーバックで対応しとけ
531 :
507 :2007/07/20(金) 15:15:18 ID:???
>>515 どうもありがとうございます。
mb_convert_encodingでやるのですね。
そのコードを使わせていただいたところ両方とも正常に表示されました。
あとは受け取った値の文字コードを調べる方法を模索してみます。
>>523 どうもありがとうございます。
その関数を使わせていただいたところ、
DEF_HTTP_ENCのところでエラーが出ました。
定数のようですが未定義ですよね?
>>529 質問の情報不足
内容が今ひとつわからんが進むボタンに次に取り出したいIDを持たせて対応しとけ
533 :
nobodyさん :2007/07/20(金) 15:25:51 ID:i+qd4INk
>>532 進むボタンを押したらデータベースを取得して次のIDが表示される仕組みをつくりたいんです
535 :
nobodyさん :2007/07/20(金) 15:39:26 ID:arPnDzjZ
正規表現で改行を含む不特定の文字列を検索したいのですが、 「.+」では一行だけしか検索できません。 改行を含む不特定の文字を表すメタ文字はないのでしょうか? また、ない場合、どんな方法で検索したら良いのでしょうか?
今の正規表現どんなのよ? /example.com/Ums で俺の場合いけたが
ごめん間違えた \s は 空白 タブ 改行 だった。
>>533 だから質問の情報不足
DBがわからんから次へのボタンを表示するときに
まえもって次の番号をDBから引き出しておいてその値をサブミット
しろとしかいいようが無い
540 :
nobodyさん :2007/07/20(金) 16:06:44 ID:Z+yQ2M+4
ひとつのクエリで2つのテーブルにINSERTをするってできませんか? たとえば $name="田中"; $age = "68"; INSERT INTO (name) VALUES ('{$name}') INSERT INTO (age) VALUES ('{$age}') こんな感じのを1行にまとめたいんですが・・・ これはMySQL板で聞いたほうがよさげですか?
543 :
nobodyさん :2007/07/20(金) 16:13:01 ID:Z+yQ2M+4
>>542 ごめ、直書きだったから素で間違えた
INSERT INTO tbl_1 (name) VALUES ('{$name}')
INSERT INTO tbl_2 (age) VALUES ('{$age}')
これを1行でやりたい
つまり、どちらかでエラーが出れば両方INSERTせずにすむから・・・
2行で実行すれば、どちらかがエラー出ても片方がINSERTされます。
(SQLの絵本はあるのですが、載っているサブクエリはSELECTのみでした。)
>>543 激しくphpと関係無いが、、
一発インサートはできん その変わりロールバックの仕組みを使う。
transaction rollback commit mysql php で検索汁、
携帯へメールを送信するスクリプトを組んでいるのですが ソフトバンクへだけタイトルが文字化けしてしまいます。 mb_language("japanese"); mb_internal_encoding("SJIS"); $header = "From: $from.\n"; $header .= "Return-Path: $from.\n"; $header .= "Reply-To: $from.\n"; $header .= "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain;charset=Shift_JIS\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; $error = mail($to,$title,$data,$header); 文字コードはSJISで、$title / $data もSJISです。 文字化けしない方法はないでしょうか? ちなみに、ISO-2022-JISにすると本文も文字化けしてしまいます。
>>543 SQL開始時にBEGINして
問題があればROOLBACK
問題が無ければCOMMITして完了
BEGINからCOMMITするまでの間はひとつの動作として扱ってくれる
548 :
nobodyさん :2007/07/20(金) 16:33:05 ID:Z+yQ2M+4
>>544 ,547
有難うございます。
それはPHP側で個別にクエリ送信した場合にでも反映されるのでしょうか?
たとえば
mysql_query("BEGIN","DB");
mysql_query("処理1","DB") or exit("Error!");
mysql_query("処理2","DB") or exit("Error!");
mysql_query("BEGIN","DB");
こんな感じで個別にしても大丈夫なのでしょうか?
550 :
nobodyさん :2007/07/20(金) 16:52:38 ID:7y+txqHq
PHPでアクセスしてきたユーザーのIP以外にport番号も知る関数とかありますか?
>>550 $_SERVER['REMOTE_PORT']
こんなの調べてどうするんだ?毎回かわるっちゅうに。
当月末日を割り出す簡単なコーディング教えてきぼんぬ。 例:2007-03-31
date("Ymd", mktime(0, 0, 0, 4, 1 - 1, 2007));
ミスりました、例を 2007-07-31とすべきでした
>>554 えーーー
割り出すって何?その月の末日なんて決まってるじゃん。
>>559 558じゃないが多分閏年とかその辺のかんけいじゃないか?
>>558 が
>.>577
をみて気づかない件について
562 :
558 :2007/07/20(金) 17:11:31 ID:???
date関数は何でもありだな
564 :
nobodyさん :2007/07/20(金) 17:13:46 ID:arPnDzjZ
2007-07-20 ↑これからタイムスタンプ出す方法をきぼんぬ
>>563 故にDBでdate型を使わずint型なった漏れ
>>564 もっと具体的にお願い。
検察したい文字列の見本と、(どの部分にマッチしてほしいのか補足つきで)
自分で書いてみたソースを全部出して。
570 :
nobodyさん :2007/07/20(金) 17:37:55 ID:i+qd4INk
Warning: odbc_fetch_row() [function.odbc-fetch-row]: No tuples available at this result index in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\file.php というエラーが出るんですがどうすればいいんでしょうか
573 :
nobodyさん :2007/07/20(金) 18:07:59 ID:arPnDzjZ
>>568 100 :2007/07/20(金)
PHPの改行と
正規表現についての
質問です
上記の文を例にすると
2行目から4行目までの書き込みの部分をマッチ(書き換え)させたいのです。
正規表現は
'/(\d{1,4})(\s:)(:\d{4}\/\d{2}\/.+\n)(.+)/'
でマッチ部分を\\4としたのですが、
1行目しか引っかからずどうしたものかと。
尚、マッチ部分の文字列は不定で、
受け取り時に最初からマッチ部分を変数に入れとけっていう
つっこみは無しでお願いします。
ようするに2chのログから書き込みの部分を抜き出したいということか? ヒント:htmlソース
575 :
nobodyさん :2007/07/20(金) 18:22:41 ID:arPnDzjZ
>>574 違います。単に多段文字列の例として書いただけ。
あくまで多段の文字列の正規表現を知りたいんで、
ヒントにあるような一例にこだわった解決方法なんかは無しでお願いします。
577 :
537 :2007/07/20(金) 18:26:58 ID:???
>>576 何で回答した俺まで帰らなきゃなんねーんだよ
581 :
nobodyさん :2007/07/20(金) 18:51:43 ID:v3lKaFxE
PHPプログラムでHTMLファイルを作成するプログラムを組んだのですが、 仕様としては初めのPHPプログラムファイル上でテキストボックスで文字などを入力したあと にボタンを押下するとまた新たなPHPプログラムを呼び出しでHTMLファイルを作成するのですが、 うまくいったりうまくいかなかったりするのですが、これはなぜでしょうか? 初めに開くPHPファイルですが、指定したファイル(*.ini)というファイルを読み込みにいき そこに書いてある設定情報を元に表示するというものです。 うまくいかない現象ですが、PHPファイルを開くと文字が化けて表示されてしまいます。 何度か更新(F5やctrl+F5)をやっても化けたりしてしまいます。 何度か更新をするとうまく表示されます。 私の予想なんですが、サーバ側の処理が遅いとこの現象が発生する? と思うのですが、これは対処方法などはないのでしょうか? よろしくお願い致します。
知るかボケ おまえの作ったプログラムのバグだろ
>>584 しつこい。
失言だろうがそんなのどうでもいいし、スレ違いだから消えてくれ。
586 :
nobodyさん :2007/07/20(金) 20:34:09 ID:m5o2VFCm
>>544 関数でサポートしてるんだから関係あるだろう。
ここ最近へんな回答者多いな
>>586 じゃおまいが答えろよ。MyISAM と InnoDB の違いまで最後まで。
588 :
nobodyさん :2007/07/20(金) 22:16:27 ID:m5o2VFCm
ヘリクツぬかしてんじゃねえよ。 シラネねならしらねえって家やクズ
いいかげんこういうバカは規制すべきだよなやっぱり。 荒らし放題だ。
>>588 ヘリクツぬかしてんじゃねえよ。
シラネねならしらねえって家やクズ
誰か規制されると利用者の多いeoがよく規制される つまり、書き込めなくなる・・・orz
強制ID化希望
俺もそれ希望しますわ
マジレスすると、IDが出ると急速に過疎化する予感・・・
596 :
nobodyさん :2007/07/20(金) 22:50:58 ID:A/l0wPOo
すみません。 スレッド式掲示板でのageやsageってどういう仕組みなんですか? どういう処理をしているんですか?
sageなら先頭に移動させないだけのカスのような機能です
598 :
nobodyさん :2007/07/21(土) 01:01:17 ID:R4v3Jns/
MySQLのテーブルに都道府県のデータを入れています。 フォームのテキストボックスに郵便番号を入れ、DB内に存在したら PHPのwhileで出力しようと思っています。 そこで素朴な疑問ですが、MySQL側のテーブルは都道府県毎に 分けた方が良いのでしょうか?それとも1つのテーブルにまとめてもOKでしょうか? 1つのテーブルにまとめると、PHPで出力するので重くならないか、 処理が遅くならないか心配してます。
最近、DBの質問ばっかだなぁ。 何か一人が何回も質問しているような。
>>599 ひとつDBの質問した俺だが全員ではない
>>598 rowsよりfieldsの数が多いのうが負担がかかるって聞いたから問題なくね?
自演おつ
ある程度のデータがある時にちょっとした操作だったら SQLでやるんだけどもうちょっとだけ複雑なのだと phpでやるかsqlでやるか悩む
SQLでできることは全部SQLでやるのがプロ。
605 :
nobodyさん :2007/07/21(土) 10:21:38 ID:orJf8jRL
xampp使ってますが、 xdebugがインストールできません。 pecl install xdebug とすると、 Did not understand the completion status returned from msdev.exe. と出ます。 いったいどうしたらいいのですか?
読んで字の如し。コンパイラがない。 manual 嫁
607 :
nobodyさん :2007/07/21(土) 10:52:59 ID:orJf8jRL
windowsだからコンパイラなんてついてません(><) peclはやめてバイナリをダウンロードして配置しました しかし extension=php_xdebug.dll をコメントアウトしたら Zend extensionとしてloadしなければいけないとwarningが出ました 普通のextensionとZend extensionの違いって? zend extensionとしてロードするにはどうすればいいですか?
どうしたらいいかって聞いたから、コンパイラがないと教えてやったら その返事かよ。痛いなお前
>>604 自分基準?本当のことを言ったんだが。
業務経験がある人ならわかるはず。
趣味でやってる君には言っても無駄だけど。
610 :
nobodyさん :2007/07/21(土) 11:07:27 ID:orJf8jRL
zend_extension_tsでいけました zend extensionについて詳しいページがあれば教えて下さい
611 :
nobodyさん :2007/07/21(土) 11:49:44 ID:MxdEPqHk
>>609 俺もそう聞いていて、この前、カラムの値を置換するのに
SELECT CASE WHERE hoge=99 THEN ’?’ END AS foo FROM 〜
みたいにやったら
「置換をSQLでするやつなんかいるか!PHPでやったほうがはるかに早くて軽い!怪しいコード書きやがって」
って罵倒されて、テストする時間もないし、それほど自信がなかったので
PHPで置換するように直したんだけど、どうなんでしょう?
例えばレコードの多いテーブルの検索のWHERE句に、置換を書いたりするのは全件に対してやるので
重そうなのはわかります。(ただ、この場合PHPで代用できないので、DBの設計を見直さないとだめなのかな)
WHEREで絞り込んだ物に対して置換するなら、SQLの方が早い(結果的に付加が軽い)と思うんですけど
どうでしょうか?
まあ、試してベンチ取ればいいんだけど・・・
>>609 >業務経験がある人ならわかるはず。
>趣味でやってる君には言っても無駄だけど。
まあそう感情的になるなよスルーしる
RDBMSによるだろうが、SQLを避けるやつはそもそもSQLを知らないんだから そいつのレベルに合わせるなら使わないほうが無難 もちろん知っていればSQLのがいい場合が多い
まだ君は根に持ってるのか
SQLを駆使するというのは最近はあまりないな よほど、パフォーマンスを必要としているところ以外では ビューとかも使うことはない
えええ〜 ビューはらくだから使うでしょ〜 コード内に、JOIN〜JOIN〜 書くのが主流?
SQL自体が規格分岐していて、ベンダごとの差異が大きいことを考えれば、 <SQLでやるのがプロ>なんて言葉を使うこと自体を憚るけどな、俺は。
はい、あおりあいが続くようでしたら煽りあい専用スレ立てますので
これは煽りあってんのか?スレ違いだとは思うが。
>>618 設計の時点でどのRDBMS使うか決めてるし関係ないと思うが。
622 :
nobodyさん :2007/07/21(土) 13:24:26 ID:7eH0E9Lf
mysqlにデータをインサートしたら、インサートした値のauto_increment値を取得するような場合は、自分で関数を用意しないでいけないでしょうか? デフォルトでそんな関数なかったですよね、たしか……
623 :
nobodyさん :2007/07/21(土) 13:32:39 ID:vMVc8wl5
>>622 insertでマニュアルで検索かければでるとおもわれ
624 :
nobodyさん :2007/07/21(土) 13:33:08 ID:hxwP08YV
登録やメールフォームなどで POSTデータの文字幅をサーバー側でチェックをつけなさいと言われたのですが ?hoge=一万文字 などいられたら場合どういう原理で どんな悪事をされてしまうのでしょう?
625 :
nobodyさん :2007/07/21(土) 13:35:02 ID:vMVc8wl5
>>621 変更になる場合や使いまわす場合も含めれば
ひとつのDBに依存しすぎた設計ってのはどうかとおもう。
特に可読性も含めてチームでやる場合
phpべた書きでややこしいSQLクエリを出すのはいただけないな
626 :
622 :2007/07/21(土) 13:49:58 ID:7eH0E9Lf
>>623 mysql_insert_id();
なんて素敵な関数がありました。 ありがとうございます。
>>625 変更になった場合や他のDBに移行なんかでもそんな手間がかかるようなものじゃないでしょ。
それにできるだけ固有機能に依存しない設計っていうのは当たり前だと思う。
SQLでやった方が速い遅いとかっていうより SQLにロジック埋め込むなっつー話だな 修正しにくいだろう普通に
それはSQLを知らなすぎる
PDOでselectを発行した時にfalseが返ってくるんですが これはどういう意味でしょうか?
ロジックを埋め込まざるおえない場合がある。客からの仕様とか。
そんなケースバイケースでどっちをやってもいいことを うだうだ言うのはやめようぜ
633 :
nobodyさん :2007/07/21(土) 16:27:42 ID:hk6YwjDG
学生に紹介されて、一読させて頂きました。 小生には、こちらで議論されている技術的な内容がほどんど分かりませんが、 匿名の掲示板における心理の曲折が垣間見れて、非常に参考になりました。 研究資料として、こちらのダイアログを使わせて頂きたいと思います。 取り急ぎお礼を申し上げたく投稿させて頂きました。 皆さまの益々のご活躍を心よりお祈り致しております。 乱筆にて大変失礼しました。
634 :
nobodyさん :2007/07/21(土) 18:24:39 ID:WqB94Z8Y
皆様のお力をお借りしたいのですが 実はログファイルを記録するのにfwrite($file,${data}."\n");の部分に\n改行を入れて 記録しているのですが、ログファイルを見るとすべて文字がつながってしまいます。 ちゃんと改行して記録できるようにするにはどうすればいいでしょうか? <?php $data=date('Y/m/d H:i;s'); $data.=$_SERVER['SCRIPT_NAME']; $data.=$_SERVER['HTTP_USER_AGENT']; $data.=$_SERVER['HTTP_REFERER']; $file=fopen('log.txt','a'); flock($file,LOCK_EX); fwrite($file,${data}."\n"); flock($file,LOCK_UN); fclose($file); ?>
635 :
ど :2007/07/21(土) 18:34:07 ID:???
>>624 1万文字程度ならどうってことない。
たとえばDBを使うとき、文字数制限があるからチェックとか。
>>634 Winなら\r\n
636 :
nobodyさん :2007/07/21(土) 18:55:05 ID:WqB94Z8Y
>>635 一時間もかけて調べてわからなかった回答を適切に答えていただき非常に
たすかりました。ありがとうございます。
\x0d\x0a
こんな所でネガティブキャンペーンしないと、自民党を死に体ってことか
時を越えるスクリプトを書きたいんですけどPHPでできますか? ('A` ) いっっっけぇぇぇぇぇぇぇ ( )\ \\
('A` ) いっっっけぇぇぇぇぇぇぇ ( )\ \\ パシャッ パシャッ パシャッ ∧_∧ パシャッ パシャッ ( )】Σ . / /┘ パシャッ ノ ̄ゝ
その発想は以外だ
何でもないようなことが幸せだったと思う 何でもないような夜のこーと‥‥‥
それなんて曲だっけ?
>>642 $today = date("Y年m月d日 H:i:s",time() + 5000000);
649 :
nobodyさん :2007/07/22(日) 00:46:22 ID:QvcmLLta
<?=preg_replace("|(
http://[\%?=&;\~/\-\.\w]+ )|", "<a href=\"$1\" target=\"_blank\">$1</a>",$log_data[message])?>
のように、URLをハイパーリンクするように置き換えてるのですが、
これに、さらに <br>を<br />に置き換えするようにしたいのですが、
どうも上手くいきません。
↓のように書いてみたんですがエラーがでました。
<?php
$url_re = array("|(
http://[\%?=&;\~/\-\.\w]+ )|", "<a href=\"$1\" target=\"_blank\">$1</a>");
$br_re = array("<br>", "<br />");
$log_data[message] = preg_replace( $url_re , $br_re, $log_data[message] );
?>
ちなみにyomiのphp版をいじっています。
どなたか助けて下さい。かれこれ2時間くらい試行錯誤中です・・
なぜ+だけ?
>>649 引数がおかしい、配列の引数でやるなら
第1引数が正規表現パターンの配列
第2引数が置換文字列の配列
653 :
649 :2007/07/22(日) 01:35:02 ID:QvcmLLta
ドメイン部分は3文字以上ってことを判定基準にするのがいいと思うけどやりすぎかのう
とおもったらロードって曲か
656 :
649 :2007/07/22(日) 01:42:36 ID:QvcmLLta
>>652 返信ありがとうございます。
こういうことでしょうか?
<?php
$url_re = array("|(
http://[\%?=&;\~/\-\.\w]+ )|", "<a href=\"$1\" target=\"_blank\">$1</a>");
$br_re = array("<br>", "<br />");
$log_data[message] = preg_replace( $url_re , $br_re, $log_data[message] );
?>
ちなみに、上で試してみたところエラーがでました。
エラー文は
Warning: preg_replace() [function.preg-replace]: Unknown modifier '$'
です。
657 :
649 :2007/07/22(日) 01:44:08 ID:QvcmLLta
656の文ですが、 gt と lt が勝手に< >になってしまったみたいです。 $br_re = array("<br>", "<br />"); の< > を ltとgtにしてみました。
$url_re と $br_re じゃなくて $url_br_pattern と $url_br_replaced だというのをわかってもらうのは 正規表現道場の仕事じゃないと思う。
>>659 これいいね、レンタルしてきた。1〜13章まであるのがうけるw
662 :
nobodyさん :2007/07/22(日) 02:10:50 ID:fPjwTOfp
すいません ダウンロードしたファイル(config.dat.php) にこんな感じのソースがあるんですがこれは何を実行してるのでしょうか? <?php exit(); ?> 11001100 01001100 10001100 00001100 00000100 10001100 00001100 10001100 10011000 00000100 10001100 10001100 00100110 00000100 10001100 10001100 00001100 00000100 10011100 01001100 ..... 00000100 10001100 10001100 00001100 00000100
663 :
649 :2007/07/22(日) 02:19:06 ID:QvcmLLta
>>660 なるほど、勘違いしてました^^
ちょっと試してみます。
664 :
649 :2007/07/22(日) 02:26:59 ID:QvcmLLta
以下で試してみたのですが、今度はエラー文は出てこなくなったのですが、
中身も表示されなくなりました。
<?php
$pattern = array("|(
http://[\%?=&;\~/\-\.\w]+ )|", "<br>");
$replaced = array("<a href=\"$1\" target=\"_blank\">$1</a>", "<br />");
$log_data[message] = preg_replace( $pattern , $replaced, $log_data[message] );
?>
665 :
649 :2007/07/22(日) 02:38:54 ID:QvcmLLta
中身が表示されないのも当たり前でした^^
<?php
$pattern = array("|(
http://[\%?=&;\~/\-\.\w]+ )|", "<br>");
$replaced = array("<a href=\"$1\" target=\"_blank\">$1</a>", "<br />");
$log_data[message] = preg_replace( $pattern , $replaced, $log_data[message] );
print $log_data[message];
?>
と書いたら表示されたのですが、
br がなぜか <<br />> に変換されてしまいます。
print_r(), var_dump() つーか、丸投げしすぎ 少しは調べてくれ
667 :
649 :2007/07/22(日) 02:41:21 ID:QvcmLLta
<?php
$pattern = array("|(
http://[\%?=&;\~/\-\.\w]+ )|", "|<br>|");
$replaced = array("<a href=\"$1\" target=\"_blank\">$1</a>", "<br />");
$log_data[message] = preg_replace( $pattern , $replaced, $log_data[message] );
print $log_data[message];
?>
これでできました!
||を忘れてました。
丸投げすみませんでした。
急いでたもので・・
おかげさまで思っていた事ができました。
ありがとうございました!
668 :
nobodyさん :2007/07/22(日) 04:48:11 ID:q/xgz08B
phpとしてパースさせるファイルの拡張子(.phpとか)って変えられるじゃないですか? これをPHPスクリプトの中から取得する関数ってありますか?
CLI用のphp.iniとモジュール用のphp.iniって別々なんですか?
最近、書いた文字を音声に変換してしゃべるソフトを購入したのですが、 女性の声にしてエロい言葉を喋らして大喜びしている俺って異常?
異常
あるディレクトリの下にfopenのwでファイルを作る/ファイルに書き込むときって そのディレクトリのパーミッション777じゃないといかんの?
>>670 configureの時に決められると思うよどっちでもいけると思う
debianパッケージとかでは別々になってるね
>>673 そのディレクトリへの書き込み権限があれば大丈夫
>>670 同じのを読むようにもできるけど、
デフォルトではphp.iniをサーチする場所も順序も違うし
confの内容も適宜変えるのが普通なので、
別ファイルにしとく。
676 :
662 :2007/07/22(日) 10:04:09 ID:fPjwTOfp
お願いします
>>662 少なくともPHPはなにも実行してない。
なんかのバイト列に見えるから、バイナリファイルにしてfilemagicに食わせちゃどうだい。
679 :
nobodyさん :2007/07/22(日) 10:17:09 ID:fPjwTOfp
>>677 下の数字のコードは何を実行してるのでしょうか?
デコードも可能ですか?
>>678 ありがとうございます。
filemagicとはデコードするソフトなのでしょうか?
検索しましたが、いまいちよくわかりません。
681 :
nobodyさん :2007/07/22(日) 11:25:12 ID:UxMDVzWu
682 :
nobodyさん :2007/07/22(日) 13:45:18 ID:KLJoHynC
>>679 これだけで何のデータかわかるやつがいれば神
どこからもってきたコードなのか晒せばもしかしたら分かる香具師がいるかもね
直接呼ばれないようにするための1行目って事か? アプリはこれの1行目を読み捨てて使ってるんだろう。 何に使ってるかはこれを読み込んでるソース見ないとわがんね。
>>680 filemagicとは、バイナリファイルのマジックナンバー
(Linuxのバイナリだと頭にELFがつくとか、JPEGのヘッダとか)
からそのバイナリの種類を推測するもの。
そのバイト列のようなものを適当にパックして、fileコマンドの入力にしてやれば
なんのデータかあるいは実行ファイルかわかるかもしれん、ということ。
ていうか、バイナリの知識なさそうだから難しそうだね。
たぶん最も速いのはそのファイルの配布元に聞くか、
そのデータを処理するコードがあればそれを読む事だろう。
688 :
nobodyさん :2007/07/22(日) 16:36:01 ID:q/xgz08B
クラス内にないメソッドを一括で処理するのに public function __call($method,$args) っていうのあるじゃないですか? クラス内じゃない、スクリプトにじか書きしたfunctionで同じような事実現できないでしょうか? つまり、まったく定義されてない関数hogeを読んだときを Fatal error: Call to undefined function hoge() in 〜 と出さずに処理を続けたいのですが、可能ですか? クラス定義の外に function __call($method,$args) ってやってみたけどだめでした。(まあ、そりゃダメだろうけど・・・) 呼び出す側でfunction_existsを使えば出来そうですが 呼び出す側がまったく手をつけられないので、呼ばれたときに処理できたらなあ、とおもいまして。 おねがいします。
名前を決めずに変数使う方法ないですか? get_defined_vars()を使って、 現在のスコープの変数をゲットしたいのですが その前の処理で、いらぬ変数を使ってしまうんです。
690 :
689 :2007/07/22(日) 16:51:34 ID:???
すみませんマ板と勘違いしました。
691 :
689 :2007/07/22(日) 16:54:11 ID:???
692 :
nobodyさん :2007/07/22(日) 16:56:44 ID:9tP3mK//
win + php + mysql4or5 で開発してる方に聞きたいです。
phpの文字コードとmysqlの文字コードを何に設定していますか?
今、phpをutf8、mysqlもutf8で作業してるんですが、mysqlに保存してる日本語データを
phpに表示すると???と化けてしまいます。
http://kawama.jp/archives/2006/03/phpskipcharacte.html ↑のページを参考に
[mysqld]
skip-character-set-client-handshake
として作業しても直らないんですが、どうしたらいいでしょう?
また、phpとmysqlの文字コードって統一する必要はないんでしょうか?
693 :
nobodyさん :2007/07/22(日) 17:01:55 ID:T1/ov9QC
ロリポップのPHPでファイル開いたり、書き込みしようと思ったら こんなメッセージがでます。 どうすりゃいいんでしょ? Warning: fgets(): supplied argument is not a valid stream resource in /home/sites/lolipop.jp/users/lolipop.j〜
694 :
nobodyさん :2007/07/22(日) 17:05:03 ID:T1/ov9QC
すいません 1時間くらい困ってたんだけど自己解決しました。 ファイルのパーミッション777にしたらokでした。 ぐぐったらどっかにパーミッション777ではダメで700にしなさい と書いてあったのでそうしてたのに・・
>>689 $newvar = ランダムな文字列生成;
にして、${$newvar}すれば?
チェックはarray_key_exsitsつかって$newvarとget_defined_varsを比べればいい。
$zettai_chigau_namae[]とかいうのを一つつくっておいて、配列で全部処理するとか。
$chinpo_manko_zukozukoならまず被らないからおk
698 :
689 :2007/07/22(日) 18:36:11 ID:???
もっとわかりやすくソースを添付してください
>>698 生意気なこと言ってると、チンポ挿入するぞ!!!
IDを出せ。話はそれからだ
701 :
689 :2007/07/22(日) 18:49:30 ID:???
っんだと!このちんかす野郎!
702 :
nobodyさん :2007/07/22(日) 19:16:00 ID:B3eI7QnN
キハ65(キハ58)に乗ってこようと思いますが、エンジン直下の座席といえば、どの座席番号あたりになるのでしょうか? (エンジン直下の座席だと迫力あると聞いたので。)
一番ベストなhtmlエスケープってどんなんですか?
一番ベストなhtmlエスケープとは、全て画像でHPを作ること。
その発想は無かったわ
画像も書き換えられることを勉強しましょう。安全ではありません
707 :
nobodyさん :2007/07/22(日) 19:58:40 ID:ynhTk9Bz
すみません、教えてください。 ファイル名は8文字を超えてもだいじょうぶでしょうか?
…
MS-DOSktkr
DOCTYPE宣言ってタグですか? 宣言だからタグじゃない?
もうやめな。ネタ仕込みが浅すぎる
DQNTYPE宣言してるやつがいるな
こんなスレを天皇陛下がご覧になったら、さぞお嘆きあそばすぞ。 俺たちは、天皇陛下の赤子であることを忘れるなよ。
まじで一番ベストなhtmlエスケープって何なんですか? 色んな種類が多すぎて分からないんですよ ネタじゃないです
まずきさまは危険なものを知ることからだ。 話はそれからだ
716 :
nobodyさん :2007/07/22(日) 21:11:10 ID:ynhTk9Bz
掲示板スクリプトにテーブルタグ使うのってありですか? なんか汚いような機がするんですが・・・
>>714 htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
第3引数は使ってる文字コードに合わせる、無しでもいいが
あとこれをベタ書きするんじゃなくて第2,3引数を
一括で変えられるようにしておいて
ラップしたメソッドか関数を用意して使うといい
>>715 一応知っていますよ
知らない人はhtmlエスケープすら知らないはずです
ただ種類が多すぎるのです
>>717 ありがとうございました
オブジェクト指向でCSSを組み立てたいんですが そういうモジュールみたいのありますか?
オブジェクト指向のCSSなんてあるの?
そんなのないですよ。 組み立て時のみオブジェクト指向にして $object->setWidth(100); $object->setHeight(100); $cssCode = $object->getCode(); みたいなことしたいんです
変わったことしようと思うんだね。 使い道なさそうなものはたぶんないよ。
>>721 W3Cに違反しているから、文法的に解釈できるブラウザなんてないでしょ。
ネタ?
CSSを吐き出すんだべ
727 :
nobodyさん :2007/07/22(日) 22:59:30 ID:e5knIosI
>>726 で実際どういう事に使おうと思ってんの?
考えられるっていや初心者でもそこそこ簡単にcssを設定できるブログサービスくらいか・・・
ただわざわざ探してどんなんだか分かんないライブラリ使う意味ないし
どうしてもオブジェクト指向でやりたいっていっても
プロパティ設定して吐き出す程度の機能だったら
調べながら使うより自分で書いた方が早そうだ
>>727 そこら中に宣伝してるんだろうが1時間たっても誰も投票してなくてワロタ
配色が7年前ぐらいのやつに投稿しようとは思わないわ
投票したのだれだよw
流れをとぎって悪いんだが、import_request_variables って 何に使うの? これ使うとregister_globals=Off は無意味に なるとかないの?
736 :
nobodyさん :2007/07/23(月) 02:04:19 ID:mtYZQPso
737 :
nobodyさん :2007/07/23(月) 02:32:31 ID:Q/UfUVNm
文字列の加工処理しているのですが、「〜」と「〜」の違いって何でしょうか? 同じ字形なのですが、str_系の関数もmb_系の関数も一致しないのですが・・
738 :
734 :2007/07/23(月) 03:16:15 ID:???
>>736 いや、マニュアル読んでも使い道が分からないんだよ。
register_globals = Off のときにGET値やPOST値をグローバル
にする意味が。
739 :
nobodyさん :2007/07/23(月) 03:21:34 ID:Q/UfUVNm
>>738 グローバル変数は、ユーザーが意図しない変数を入れてきて、
プログラムの誤作動、セキュリティーの脆弱性を高めることに繋がるので、
基本的にOFFにしておくという意味。
質問するときは言葉遣いにきをつけような
回答するときもな
742 :
nobodyさん :2007/07/23(月) 05:49:07 ID:FkQfGydc
おい、なんでこのスレの連中がインターンスレ見てるのよ はやく答えろ
743 :
nobodyさん :2007/07/23(月) 09:59:03 ID:x2hGpWhd
プロパティーのリストを渡したら クラスのsetterやgetterを自動生成してくれるようなライブラリ知りませんか?
744 :
nobodyさん :2007/07/23(月) 10:15:03 ID:m6GTZoUq
改行なしに入力されてしまった textareaのテキストを一定間隔で\nしたいのですが mb_chunk_split的な関数はないですよね? あああああああ\nいいいいいいいいい\n
745 :
nobodyさん :2007/07/23(月) 10:16:42 ID:m6GTZoUq
つwordwrap() 本当にありがとうございました
746 :
nobodyさん :2007/07/23(月) 11:35:32 ID:g+EySz3/
上の方の応用で 20文字ごとに\nを入れるとして 日本語は1文字カウント、英字は2文字で1字カウントで挿入するとして スマートなループはあるでしょうか?
まず貴様が文字コードsjisなのかeucなのかutf8なのかにもよる。 それを書いてからに白。 話はそれからだ
748 :
nobodyさん :2007/07/23(月) 13:33:46 ID:LAzhk+Ka
PHPでセッションを使うときにURLにセッションIDを付加しています。 (携帯サイトで使用している為) 会員ページでは全てのページに会員の名前を表示したいのですが、 ログインのときにIDとパスワードから名前を取得してセッションに格納するべきか、 全ページでDBにアクセスして名前を取得するか迷っています。 皆さんはどちらの方法でしていますか。 またほかに何か方法はありますでしょうか。 アドバイス頂けたらと思います。 宜しくお願い致します。
>>746 英字3文字日本語1文字のような文字列はどうするよ?
「テストabcあ」とか
まぁPHPの板だからここで聞くのは変かもしれないが amachangってどう思うよお前等? 俺はぶっちゃけ嫌いなんだよね… CSS Niteの1件といいね
751 :
746 :2007/07/23(月) 13:39:21 ID:g+EySz3/
とりあえずこんな風にしてみました //半角幅折り返し function mb_chunksplit($value,$br = 20) { global $action; if($action == "post") { $loop = mb_strlen($value,DEF_HTTP_ENC); //マルチバイト文字数 for($i=0; $i < $loop; $i++) { $wk = mb_substr($value,$i,1,DEF_HTTP_ENC); //一文字ずつ取得 //指定バイト幅で改行 if($line_count >= $br) { $line .= "\n"; $line_count = 0; } $line_count += mb_strwidth($wk); $line .= $wk; } }else{ $line = $value; } return $line; }
じゃあそうすれば
perlでの文法で下のような事をphpでやりたいんだけどえらい人教えてください $count = 1; $addr = "000.000.000.000" ↑のデータをファイルとクライアントから取得したと仮定 ↓やりたいのはここから chomp($count); $count ++; $hoge[0] = "$count"."\t"."gmt"; push (@hoge,$addr); open (OUT,">data.txt"); foreach (@hoge) { print OUT "$_\n"; } close OUT; 作りたいのは簡単なアクセスカウンターです ファイルから読み込みデータを配列に格納することはできたのですが、 カウントアップから複数行の書き出しのところで躓いてます。
>>753 とりあえず
>>1 嫁
今日から夏休みなんだよなぁ・・・
厨が増えそうで怖い・・ってか流れからしてもう増えてるな
755 :
753 :2007/07/23(月) 16:24:58 ID:???
ごめん、首つってくるわ。 perlスレにいくからごめんな
>>755 とりあえず
>>1 嫁
今日から夏休みなんだよなぁ・・・
厨が増えそうで怖い・・ってか流れからしてもう増えてるな
757 :
692 :2007/07/23(月) 18:13:09 ID:6p0coLtT
すみません、誰か
>>692 の質問に答えてもらえませんか
>win + php + mysql4or5 で開発してる方に聞きたいです。
>phpの文字コードとmysqlの文字コードを何に設定していますか?
>また、phpとmysqlの文字コードって統一する必要はないんでしょうか?
758 :
753 :2007/07/23(月) 18:34:20 ID:???
うぜーー門前払いにされたんだけどよ ここでやっぱり聞きます。 おしえてください。よろしくたのんます。
>>758 とりあえず
>>1 嫁
今日から夏休みなんだよなぁ・・・
厨が増えそうで怖い・・ってか流れからしてもう増えてるな
760 :
nobodyさん :2007/07/23(月) 19:14:50 ID:6p0coLtT
>>759 >厨が増えそうで怖い
お前も似たようなもんだろが
>>753 chompはtrimかrtrim
PHPの関数は基本的に値渡しなのでtrim($count)だけではだめ
$count = trim($count);
のように戻り値を受け取らないといけない
pushはarray_pushがあるけどそもそも配列使う必要ないよ
$count = trim($count);
$fp = fopen("data.txt", "w");
fwrite($fp, $count . "\t". "gmt" . "\n" . $addr . "\n");
fclose($fp);
>>757 俺の場合はlinux - php5 - mysql5だけど
utf8が通らないなんてあり得ないので、必ずどこかで設定ミスしてわけわからん事になっているはず。
一通りまとめられている解説サイトでも見ながら(自分にあったものを検索汁 :あとはスレの
>>1 のリンクとか)
「一つずつ」 順を追って確認しながら作業してみ。
確認箇所
・php.ini
・my.cnf
・DB
・ソース内のFORMのPOST部分のソース
・ソース内のinsert部分
そもそも
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
でちゃんとutf8になっているか?
764 :
757 :2007/07/23(月) 21:23:42 ID:6p0coLtT
>>762 ありがとうございます いろんなサイトをもう3日見てまわってます
文字コードの設定は
mysqlは
+--------------------------+-------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-------+
PHPは
mbstring.http_output UTF-8 UTF-8
mbstring.internal_encoding UTF-8 UTF-8
となっています。
また、mysqlにcmdからinsert文で日本語のデータを入れて、
それをPHPで表示するとやっぱり化けています。
つまり、少なくともPHP→mysqlの登録部分でのエラーではないみたいですが…
なにが悪いんだろう
>>764 cmd周りは、詳しくないが、
windowsの、コマンドプロンプトって、デフォルトが SJISだから、
それで日本語つっこむと、SJISの日本語がそのまま入ってしまうんじゃ? ([client]default-character-SET=utf8 の場合)
cmd上で、
chcp 65001 ってすると UTF-8になるけど、日本語がこの状態で正しくつっこめるかどうかはしらん
とりあえず、
hoge.php と適当なファイルをUTF-8作って、 埋め込みで
$a = "日本語";
//$aのinsert文実行
//select文実行
echo [selectしたデータ]
みたいな感じの処理を書いてみてブラウザで表示してみれば?(ブラウザのエンコード自動判定も、右クリックでUTF-8に変更する)
参考にならないかもしれないけど、俺のとこの環境だと mysql_query('set character set utf8'); で全て解決する。
767 :
757 :2007/07/23(月) 22:56:30 ID:6p0coLtT
>>765-766 ありがとうございます
試しに登録側のPHPを以下にしたらうまくいきました
<?php
extract($_POST);
$db=mysql_connect('localhost','root','pw');
mysql_select_db('peartest');
mysql_query("SET CHARACTER SET utf8");//この行を追加
if($name != ""){
$sql = "insert into dbtest values(0,'$name')";
mysql_query($sql);
}
?>
自分は、mysql_query("SET CHARACTER SET utf8");は読み取り側にすべき機能なのかと
思っていたんですが、送り側にもするものなんですね(
>>766 さんもそうなんですか?)
これは、「これから送るデータはutf8で保存しろ」という命令と考えていいんでしょうか?
そうすると結局全てのPHPスクリプトに書き込まなきゃいけなくなりそうですが、、
その「全部にイチイチ書く」のを避けるために my.iniにskip-character-set-client-handshakeを
指定するといろんなサイトに書いてあったのに、そのやり方じゃうまくいきませんでした。。
なんでだろ、もういいかなぁ…
そもそもインサートしようとしているデータが本当にUTF-8なのか疑問だ
769 :
nobodyさん :2007/07/24(火) 00:02:08 ID:N6M16q3q
OSはWinsows Apache 2.2.4、MySQL 5.0.41、PHP 5.2.2を使用しています。 以下のものを、掲示板のトップページにfunction dispTitleList($pid) という関数を使って、ツリー表示をしたいと思っています。 改善点を教えていただけませんでしょうか。お願いいたします。
770 :
769 :2007/07/24(火) 00:03:10 ID:N6M16q3q
<?php // DBへ接続 $con = mysql_connect('localhost','root','') or die('Cannot connect<br>'); mysql_select_db('cdcol') or die('Cannot select<br>'); // titelとidの一覧を取得 $query = "select titel,id from cds"; $result = mysql_query($query); if (!$result) { $mes = 'Error : ' . mysql_error() . "<brn"; $mes .= 'Whole query : ' . $query; die($mes); } // titelを一覧表示しつつ、それをidを渡すリンクタグで囲む echo "<ul>\n"; while ($data = mysql_fetch_assoc($result)) { // リンクタグを出力 echo "<li><a href='cdcol_desc.php?cdid=".$data['id']."'>"; // titelを表示 echo $data['titel']; // リンクタグを閉じる echo "</a>\n"; } echo "</ul>\n"; mysql_close($con); ?>
771 :
nobodyさん :2007/07/24(火) 00:10:39 ID:VTvHCDnM
PHPのパターンマッチで、perlの「$`」、「$'」に相当するものを探して います。 preg_match($pattern, $string)でパターンマッチした後で、$string中で 「パターンに一致した前の部分」「パターンに一致した後の部分」を取り出す 一番簡単な方法は何になるでしょうか?
772 :
757 :2007/07/24(火) 00:15:30 ID:HjFYaxsC
>>768 どういうことなんでしょう?
PHPの場合なら、保存形式utf-8のPHPファイルのフォームからinsertする
文字はutf-8になるんじゃないですか?
または、cmdなら、 たとえばこのテキストボックスにinsert文を書いて、
それをペーストするような時に文字コードが関係するものなんでしょうか?
かなり初心者な質問かもしれないですが、おねがいします
773 :
nobodyさん :2007/07/24(火) 00:19:42 ID:qzMpiZVa
$hoge_array [0] = "hoge1"; $hoge_array [1] = "hoge2"; $body = preg_replace('/([0-9]+)/', $hoge_array[$1], $body); 要は置き換え文字列を、後方参照値を使って引用したいんだが、 $1が展開してくれない。 ''を使ってくくっても配列の中じゃシンタックスエラーになる。 誰かいい方法ない? 答えられたら神と崇めます。
>>772 >>768 じゃないけど
php.iniもUTF-8で設定しているようだし、DB側もutf8だから
フォームのあるhtmlが、
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="content-language" content="ja" />
てちゃんと設定してれば大丈夫だと思うが。
不安だったら
POSTで渡した変数ではなく、
UTF-8のソースに、2バイト文字をべた書きしたものをinsertしてみて実験してみれば。
問題を切り分け、調査する時は、極力問題を単純化して調べるのがコツ
>>772 どこで見たか忘れたけど(MySQLのあるバージョンから?)外部(PHP)と接続した時に、
iniやcnfの設定にかかわらず文字コードがLatin-1になってしまって日本語が扱えないとか。(バグ?)
PHPで接続した時に
$db->exec('set names utf8');とか
mysql_query("SET CHARACTER SET utf8");とかを実行して、
いちいち文字コードを指定してやれば大抵大丈夫なようです。
776 :
757 :2007/07/24(火) 01:38:50 ID:HjFYaxsC
>>774 ありがとうございます
登録のPHPにフォームと関係なく mysql_query("insert into dbtest values(0,'しいたけ')"); を
実行したんですが、やっぱり化けていました
(mysql_query("SET CHARACTER SET utf8"); を解除した時)
>>775 ありがとうございます
やっぱりイチイチ文字コード指定ってやり方じゃなきゃダメっぽいですね
ダメバージョンを使ってしまってるようです…
いろいろアドバイスをくれた皆さんありがとうございました。
MYSQLを入れなおしてみます、PHPの質問と少しずれてすみませんでした。
どうもありがとう
777 :
nobodyさん :2007/07/24(火) 04:54:55 ID:0up0b4iV
for($i=0;$i<10;$i++){ print "<input type=\"hidden\" name=\"hID\" value=\"$dID[$i]\">"; print "<input type=\"submit\" name=\"cmd_Delete\" value=\"削除\">"; } 削除ボタンが押されたら押された場所のdIDをhIDに入れたいんだがこれでは出来ないのか・・・ なんか他の方法ありますか?
経過した時間を表示するにはどうすればいいんでしょう ○時○分から○時間○分 経ちました と表示したいんですけど、教えてください
>>778 開始と終了、それぞれをstrtotimeでUNIXタイム型に変換してから差を求める。
それを60で割ったり、3600で割ったり。
>>778 これだけならJavaScriptが最適
783 :
753 :2007/07/24(火) 09:22:09 ID:Wdyxg0H6
>>761 ありがとうございます
perlと似ているだけに少し使い方が違ったり、同じような動作をするのに
いくつも似たような演算子があったりと少々戸惑っていました。
おかげさまで納得のいくものができました。
ちなみに配列は同一IPをカウントしないために2行目からIPを格納するのに使っています。
while使うと\nばかりが延々続いた膨大なデータファイルが出来上がり、なぜこうなるのか
今の自分では理解できないです。
ただforeach使ったら狙った動作をしてくれたのでとりあえずは良しとし、これからwhileの謎を解明しようと思ってます。
遅レスで申し訳ないですが、ありがとうございました。
工エエェェ(´д`)ェェエエ工
>>777 for($i=0;$i<10;$i++){
print "<form meghod=\"post\" action=\"this.php\">";
print "<input type=\"hidden\" name=\"hID\" value=\"$dID[$i]\">";
print "<input type=\"submit\" name=\"cmd_Delete\" value=\"削除\">";
print "</form>";
}
みたいに1個ずつFORMタグで囲まないと、全部のhiddenが送られちゃうでしょ。
GETで良いなら、<a href="this.php?delete_id=".$did(略
で簡単に済む。
消すIDを送るだけならPOSTする必要はない。
あとはsubmitのnameで渡しちゃって
PHP側でnameをごにょごにょする方法もある。
でも削除なら、チェックボックスにするのが一般的。
そうすれば一気に消したり出来る。
>>777 ほらよ
<script language="JavaScript" type="text/JavaScript">
<!--
function setval(val){
document.form.hID.value = val;
document.form.submit();
}
//-->
</script>
<form name="form" method="post" action="./0.php">
<input type="hidden" name="hID">
<?php
for($i=0;$i<10;$i++){
?>
<input type="button" value="削除" onclick='setval(<?=$i;?>)'>
<?php
}
?>
</form>
<?php
echo $_POST["hID"];
?>
phpの中からfind path -exec phpfunc {} \; みたいなこと(見つかった結果をひとつひとつphpの関数に投げる)したいんですが どうすればいいですか?
790 :
789 :2007/07/24(火) 13:07:13 ID:???
あ、解決しました。すみません。
791 :
789 :2007/07/24(火) 13:10:30 ID:???
792 :
789 :2007/07/24(火) 13:19:51 ID:H27wi0OE
794 :
773 :2007/07/24(火) 13:21:32 ID:qzMpiZVa
>>773 誰も答えられないのかよ。
俺も含めてここの奴はたいした事ねえな。
>>789 説明不足じゃない?やりたい事がいまいち分からない。
phpのソース内で関数を使えばいいって答えじゃ駄目なの?
>>794 偉そうなのは結構だが$1ってどこから出てきたのよw
797 :
777 :2007/07/24(火) 13:42:58 ID:28scIEzF
>>787 ありがとう.formタグで囲めばよかったのか(汗
やはり削除とかはチェックボックスのが良いな.サンクス
798 :
789 :2007/07/24(火) 13:48:24 ID:H27wi0OE
質問内容が解決できればなんでもいいです。 アドバイスおねがいします。
799 :
789 :2007/07/24(火) 13:49:26 ID:H27wi0OE
>>794 わたしもたまに回答者にむかつきますがここは冷静になりましょうよ
800 :
789 :2007/07/24(火) 13:50:45 ID:H27wi0OE
てか$1って・・・参照できるわけねえだろばかwwwwwwwwwwwwwwwwww
>794 もっといい やり方も あると思いますが $body = "abc 0 ABC 1 zzz"; echo "$body\n"; function call_back($n) { $hoge_array[0] = "hoge1"; $hoge_array[1] = "hoge2"; return $hoge_array[$n[0]]; } //$body = preg_replace('/([0-9]+)/', $hoge_array[$1], $body); $body = preg_replace_callback('/([0-9]+)/', call_back, $body); echo "$body\n"; 神と崇めていただかなくて結構なので その態度を改めていただけないでしょうか
ああ 1つ訂正 下のほうにある call_back は single quotation で囲んでください でないと notice レベルの警告が出ます
805 :
nobodyさん :2007/07/24(火) 14:17:58 ID:PuYDSgkH
配列の先頭からn個の要素を削除したい場合 どうしたらいいですか?
806 :
nobodyさん :2007/07/24(火) 14:23:21 ID:Y3Stxh5i
phpからデータベースにSQL文でデータを更新したいんですが 数字を入れるフォームを空にして更新するとエラーなってしまいます 文字型は入れなくてもエラーになりません
他の質問スレではID出しを強制されたりしないのに 何故このスレでは強制されるんですか? こんな悪習を続けていたらPHPerはケツの穴が小さいと思われますよ ID出さなくても、答えたい人は答える、答えたくない人は答えない それでいいじゃないですか
>>808 intに空を入れようとすると自動的に「0」にならなかったっけ?
811 :
nobodyさん :2007/07/24(火) 15:02:44 ID:CE11c5Qj
$_SESSIONが空の状態で、 セッションIDでセッションを取得して$_SESSIONに格納する方法はありますでしょうか? URLにID付加をするのではない方法であればお願いします。
>>810 デフォルトを設定していないとそうはならん
>>811 最初にマニュアル読むように
引用
session_name() は、カレントのセッション名を 返します。name を指定した場合、カレントの セッション名は、その値に変更されます。
815 :
nobodyさん :2007/07/24(火) 15:05:54 ID:Y3Stxh5i
>>812 NULLを指定しても反映されません
デフォルトで設定するにはどうしたらいいんでしょうか
816 :
nobodyさん :2007/07/24(火) 15:08:51 ID:z1nZ//nw
誰かsqlite2系のコマンドライン版でBSDでコンパイル出来るやつ 知りませんか。 PHP4のモジュール版sqliteで2系のDBを作ってしまったとです。
817 :
nobodyさん :2007/07/24(火) 15:11:13 ID:z1nZ//nw
>>815 MySQLならカラム作るときにDEFAULT NULLだったと思います。
そすれば、何も入れなきゃNULLになるです。
>>815 > NULLを指定しても反映されません
設計段階でNOT NULL指定してないだろうな?
本来は設計段階で設定すべきだが…
ALTER TABLE [テーブル名] ALTER COLUMN [カラム名] SET DEFAULT [デフォルト値];
819 :
773 :2007/07/24(火) 15:23:47 ID:???
>>803 preg_replace_calllbackは後方参照値が取れないから使ってなかったけど、
そういうやり方があったんですね。
解決しました。
ありがとうございました。
>>809 話を摩り替えてますよ、あなた。
ルールですから。
>>809 ID無しで質問するのも、それに回答するのも自由はあるよ、やればいいじゃん。
ただ、ニセモノが頻発するので推奨してるだけ。
何のためのルール? 誰が得するの?
823 :
nobodyさん :2007/07/24(火) 15:50:03 ID:dkSuvKse
はじめまして。 どこにでもありそうな質問で恐縮です。 Apacheで.htaccessを使ったBasic認証のサイトがあります。 この中でパスワード変更のフォームを動かしていてきちんと動くのですが、 当然といえば当然で、パスワード変更して.htaccessを変更した瞬間に 次のリクエストでブラウザからは再度認証ダイアログが出てしまいます。 これを回避するためのテクニックってどういうのがあるでしょうか? アドバイスいただければ助かります。
824 :
nobodyさん :2007/07/24(火) 15:50:07 ID:Y3Stxh5i
>>809 別にケツの穴が小さいと思われても俺に不都合があるわけないしどうでもいい
テンプレもマニュアルもまともに読めない。
アンカーすらまともに使えない厨が多くてカオスになったからそうなったんじゃね?
実際テンプレどおりやってる奴の質問は追っていきやすいのは事実だしな
826 :
822 :2007/07/24(火) 15:54:42 ID:???
>>821 を読んで納得しました。
無駄にからんで申し訳ありません。
心を入れ替えます。
827 :
809 :2007/07/24(火) 16:02:52 ID:???
夏休みにはいったばかりではしゃぎ過ぎました。 荒らして申し訳ありませんでした。 心を入れ替えます。
>>823 板違い UNIXかLINUXあたりの板のWEBサーバー関連で聞くように
>824
SQLのコマンドラインで実行
ちなみに君も板違いDB板で聞くように
829 :
809 :2007/07/24(火) 16:06:49 ID:???
偽者が多いですね… ケツの穴が小さいルールが偽者を作りだしているように思えてなりません 他のスレではIDがなくても偽者が出たりしませんから…
PHPは簡単で習得しやすいから利用ユーザーの年齢層がバラバラで
そのうちの
>>809 みたいな夏厨とかが偽者で書き込む。
それを防ぐためにID強制
831 :
823 :2007/07/24(火) 16:09:53 ID:???
自己解決しました みたいなやつが出てくるからね 別にトリップでもいいんだけど
var_dumpで巨大なオブジェクトを表示しようとしたら 途中で表示を打ち切られた(><) 前までそんなことなかったのに 最近新しいオプション出来たの?
833 :
823 :2007/07/24(火) 16:24:48 ID:dkSuvKse
すみません。まだ解決していません。
>>828 そちらの板ではWeb系の話はとんと・・・
ここの板でよいと思うのですが、確かにPHP限定の話ではないです。
どなたかわかる方、ポインタだけでもお願いします。
834 :
nobodyさん :2007/07/24(火) 16:25:07 ID:Wdyxg0H6
perlでいうループ制御のlast、next、redo って有効じゃないのですか? $hoge に30行ほどの文字列が格納されている そのうち10行を書き出したい $kazu = '1'; foreach ($hoge as $val) { if ($kazu > 10) { last; } print "$val\n"; $kazu ++; } としても最後まで書き出されてしまいます。 last,next,redoに変わるものがあるのでしょうか?
835 :
nobodyさん :2007/07/24(火) 16:29:13 ID:Y3Stxh5i
>>828 すいません
コマンドラインってのはどこにあるんでしょうか?
837 :
nobodyさん :2007/07/24(火) 16:38:01 ID:Wdyxg0H6
>>836 ありがとう。助かりましたm(_ _)m
>>773 後方参照値の変数展開は
\\1 or \$1 とかじゃなかったっけ? 単純にミスタイプか?
840 :
839 :2007/07/24(火) 16:58:29 ID:???
>>829 結構前はそれで平和にやっていた。
しかし、
>>830 の言う流れでこうなった。
これは随分前からの流れなのでしょうがない。
嫌ならID無しにどんどん答えてあげればいいじゃない。
>>836 っていうか、continueっていうネーミングはおかしいだろ。
skipとかにしろよ。php作った奴で馬鹿???
continueはphpがオリジナルじゃないだろ
845 :
nobodyさん :2007/07/24(火) 19:23:33 ID:WZenHGY2
phpのファイルを読み込んで、 そこに定義されているクラスをリストアップするプログラムを書こうとしています include→get_declared_classes で、そのファイル中のクラスは判定できますが、 includeしたファイルに書かれたclass以外のプログラムも実行されてしまうのが マズイです。 何かいい方法はないでしょうか? 実行せずにパースする方法があればいいのですが…
846 :
845 :2007/07/24(火) 20:52:18 ID:???
PEARのPHP_Parserつこうたらできました なんかCatchable fatal errorが出まくりですが一応動作するようデス
file_get_contents なりで読み込んで、正規表現でパースすりゃいんじゃね?
>>848 その通りですが荷が重すぎます
単にclass hogeという文字を見つけるだけでは済まないので…
バッカス・ナウア記法とかなんとかサパーリ
おい、坊主! 大した技術もない癖に、調子に乗ってなめたこと書き込んでんじゃねーぞ、コラ!!!
852 :
nobodyさん :2007/07/24(火) 21:30:10 ID:WZenHGY2
..が入っているファイルパスをクリーンにするいい方法ありませんか? /hoge/moge/../fuga/poko のようなパスから..をなくす感じです
テンプレより PHP構文が載ってるところってありますか?
>>852 realpath('/hoge/moge/...");
パスが存在すればね。
>>816 すれ違いだが教えてやる。
sqlite-2.8.16.tar.gzで、ウエブ全体から検索で、ググレ。
探しているうちにソースが見つかるだろう
857 :
nobodyさん :2007/07/24(火) 23:01:25 ID:wuKYIYS0
やべえ。 PHP4とPHP5を両方使ってるが、どっちだろうがまったく気にしてない俺がいる。 クラスで書いてないから?
858 :
nobodyさん :2007/07/24(火) 23:34:10 ID:9eCs8dRb
require_once '../lib/PEAR/HTTP/Request.php'; では読めるけど require_once 'HTTP/Request.php'; ではうまくいきません。 パスを通す方法教えてください。 くだらんな質問ですいません。
859 :
nobodyさん :2007/07/24(火) 23:45:46 ID:9eCs8dRb
何となく自己解決しました。
.htaccessに
include_path = ".:/lib/PEAR::/lib/PEAR/
HTTP::/lib/PEAR/NET "
こんな感じでぶちこむと動きました。
>>857 URLにクラスのメソッド入れる様な作り方しない限りは殆ど関係無いよ。
とりあえず関数作りまくって壁に当たって
クラス使い出して慣れてきてからでOK。
>URLにクラスのメソッド入れる様な作り方しない限り FWといいたいのかも知れないがまったく意味不明。
なんでURLが関係するんだよw 意味不明w
世の中には知らなくていいこともあるんです。
>>857 ディレクトリ一覧を取得するときとかいろいろ仕様がちがうぜ
むかし、「さくら」と言えば寝台特急のことだと誰もが信じて疑わなかったが、 今や「さくら」といえば、SAKURA Internetの事だと口をそろえていう。 これが時代の変化なんだろうが、嘆かわしい限りだ。 露と落ち露と消えにしわが身かななにはの事も夢のまた夢
闇の力を秘めし鯖よ、真の姿を我の前に示せ。契約のもと、SAKURA Internetが命じる。 レリーズ!!!
くだ質も夏休みだねぇ…
一年中夏休みだろ、ここはw
sage
>>857 俺は書いたスクリプトに不具合が出ては困るから
レンサバ借りるときは必ずPHP5が入ってるやる借りるぜ
ってか、もうすぐ6出るのにまだ4入れてる鯖が多すぎて萎える
872 :
nobodyさん :2007/07/25(水) 12:39:08 ID:F1E3rbc2
2ちゃんねるはクッキーがないと書き込めない仕様と聞きました。 これはセッションをつかって発行されたクッキーなのでしょうか? それともふつうにsetcookieによって発行されるクッキーなのでしょうか? また、両者のどちらが安全度が高いですか? よろしければアドバイスお願いいたします。
>>872 人に聞くより、自分でクッキーの中見た方が早いだろ
874 :
nobodyさん :2007/07/25(水) 12:54:20 ID:F1E3rbc2
答えを聞いてるわけではないんですよ
>>872 セッションでクッキーは発行できないよ
クッキーでセッションIDを発行することはあるが
877 :
nobodyさん :2007/07/25(水) 14:12:18 ID:TgPM8Cfn
Shift-JISからUTF-8に文字コードを変換したいのですが、 <form name="form1" method="post" action=""> <textarea name="txt"></textarea> <input type="submit" name="Submit" value="送信"> </form> <? var_dump(mb_detect_encoding($_POST['txt'])); var_dump(mb_convert_encoding($_POST['txt'], "utf8", "auto")); ?> このように、文字コードをUTF-8にしようとしてみたのですが、 Unable to detect character encoding とのエラーで、文字コードが変換されません。 正直今までにこのようなエラーがなくて戸惑っています。 mb_detect_encodingでの出力はFALSE mb_convert_encodingではstring(6)で文字コードがShift-JISのままです。 一体何が原因でこのようなことが起きるのでしょうか? 宜しくお願いします。 【環境】 Windows Vista Home Premium PHP 5.2.2
>>877 文字コードが分かってるんならautoではなく直接指定
変わる場合があるならmb_detect_orderで指定しておく
879 :
nobodyさん :2007/07/25(水) 14:30:30 ID:TgPM8Cfn
>>878 ありがとうございます。
mb_detect_orderでsjisをトップにもってきて
mb_convert_encodingでautoをsjisにすると解決しました。
今までこのような問題がなかったので、
何が原因でこのような文字化けなどが起きるのかわからないのですが、
もしよろしければ教えていただけないでしょうか?
マルチバイトの文字コード判別は信用ならない
>>879 それも、またmb_系関数のマニュアルを熟読しろ。
「今までこのような問題がなかった」のが単にラッキー程度だと思っておいたほうがよろしい。
mb_コンバート系統はその程度の実装だ。
882 :
虚弱PHP :2007/07/25(水) 14:33:17 ID:???
>>879 入れてやる文字列によっては、文字コード判別できないってだけの話。
いままでは"たまたま"うまくいっていただけ。
というわけで、基本的に"auto"は使わないのが良い。
883 :
nobodyさん :2007/07/25(水) 14:37:03 ID:TgPM8Cfn
有難うございます。 その時その時によってautoではなくしっかりと文字コードを指定してやるのが大事なんですね。 マルチバイト系のクラスでも作っておきます・・・。
ジャンキタ――(゚∀゚)――!!
885 :
nobodyさん :2007/07/25(水) 14:49:42 ID:EIPyOfNN
すみませんもしかしたら基本的な事かも知れないんですが 例えば test1.phpというPHPスクリプトの中に$aという変数を宣言しまして。 この$aという変数をHTMLのsubmitなどを使用しないで別の test2.phpというPHPスクリプトの中で使用することはできるのでしょうか? わかりにくいですね… test1.phpで $a="あいうえお";と宣言したら どうにかして test2.php内でprint($a);で 「あいうえお」と出力できませんか? ということなのですけれどもご教授お願いします。
PHP6うp期待あげ
>>886 TextIteratorクラスとかぶっちゃけいらないよな
俺はクエリ自動生成に期待してる
889 :
nobodyさん :2007/07/25(水) 15:46:03 ID:EIPyOfNN
>>887 やはりセッションですか。
ありがとうございます頑張ってみます!
890 :
nobodyさん :2007/07/25(水) 16:06:01 ID:EIPyOfNN
>>887 ありがとうございます
解決しました!ご教授の通りやはりセッションを使うとできますね。
891 :
nobodyさん :2007/07/25(水) 16:11:19 ID:T4EA9qil
phpからSQL文を使ってデータベースにデータを追加したいんですが 空白が入るとエラーになってしまいます どうしたらいいんでしょうか?
空白を変換すればいいじゃん
「空白」なんていう曖昧なことを言われてもね。
せめてエラー文ぐらいコピペして欲しい
895 :
nobodyさん :2007/07/25(水) 19:05:39 ID:Muzhb0ib
Cのlintみたいなツールは無いでしょうか? 使っていない変数を探したいんですが、php -lだと 構文が正しいかどうかしかチェックしてくれなかったので。
>>895 PHPの場合、初期化は代入と等しいし、変数の宣言はないので、
使っていない変数を探すのは難しいんじゃないか。
>>896 インストールが途中で、install_modules.dllの初期化に失敗しましたってでるんだが、
php6ってVISTA対応していないの?
php6の開発時期とvistaが登場した時期を見比べろ あと、リリースとベータの違いも区別つけようなザコ
5も広まってないのに6ってなめてんのかこら
OSでさえ出たばかりのは使わないんだから、枯れた一個下のバージョンが主流というのはもっともな選択じゃね。
家で使う分にはいいんだが、レンタルサーバーで6まで対応しているのって ほとんどないからなぁ。実用でいったら、せいぜい5までだ。
version4主流なんていうのは悪手だろ
通はPHP3、 普通はPHP4、 キティガイはPHP5だろ
906 :
nobodyさん :2007/07/25(水) 22:29:16 ID:+OWKNv7k
セーフモード下で、サーバに存在しないファイルを生成したいのですが、 何か方法はありますか? cgiで動かした時にfopenで作れたのですが、できればcgiを使いたくないので。
907 :
906 :2007/07/25(水) 22:38:33 ID:???
一応ソースだしときます。 #!/usr/local/bin/php <?php $file = realpatch('./hoge.log'); if (!file_exists($file)) { $fp = fopen($file, 'w+'); fclose($fp); } ?>
touch
909 :
906 :2007/07/25(水) 23:05:11 ID:???
>>908 どうもありがとうございます。
しかしその関数でもセーフモード下ではファイル生成は不可能でした。
910 :
nobodyさん :2007/07/25(水) 23:27:35 ID:9KsThU60
sqliteのエスケープ用関数がないんですが sqliteはsqlエスケープをしなくていいんですか(?_?)
911 :
nobodyさん :2007/07/25(水) 23:42:49 ID:9KsThU60
ありました 勘違いしてました\^o^/バンザーイ
>>912 いますけど?(/\)チャチャチャチャ \(^o^)/ハッ!!
古い絵を出して何か言ってる奴って何なの?
もう当の昔に見飽きたわ
>>912 職業技術者がいないと言っているのに、なんで仕事の話の画像なんだ?
>>912 この絵が何をあらわしているのかわからん。
だれか説明たのむ
暑いし少し頭が弱くなしていたのだろう 見なかったことにしようぜ
実際に仕事してるやつは痛いほどわかる内容だ。
下らん煽りはどうでもいい。 質問があれば答えるそれだけでいいじゃないか。 趣味でやってるやつがほとんどだというのに、 職業がどうとかどうでもいいです。 PGになってもいいことないしな。
いわゆるデジタルドカタだからな
それでも年収1000超えです。
>>922 27歳不動産屋社長
年収2500万ですが何か?
500万は駐車場収入だけど
>>923 主にセキュリティ系の仕事で年収3000万超えですか何か?
セキュリティ系の仕事って、警備員さんですか? 深夜警備明けなのに、わざわざ書き込みお疲れ様です。