【PHP】下らねぇ質問はここに書き込みやがれ 30
1 :
nobodyさん :
2006/10/05(木) 01:38:25 ID:y1WWhz/p PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。
まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
2 :
nobodyさん :2006/10/05(木) 01:39:17 ID:y1WWhz/p
3 :
nobodyさん :2006/10/05(木) 01:39:51 ID:y1WWhz/p
4 :
nobodyさん :2006/10/05(木) 01:40:25 ID:y1WWhz/p
5 :
nobodyさん :2006/10/05(木) 01:41:32 ID:y1WWhz/p
6 :
nobodyさん :2006/10/05(木) 01:43:07 ID:y1WWhz/p
【簡易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プログラムとして実行された結果になる。
7 :
nobodyさん :2006/10/05(木) 01:43:41 ID:y1WWhz/p
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ってどう違うの?
→ echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
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に保存?
→ 好きにしてください
一応【簡易FAQ】を28から復活させといた。 (何かFAQに加えないか?と話が上がってた気はするが、時間なくて放置。)
>>9 スレたて乙
久しぶりまともなスレ立てを見た気がする
_______ , -‐' ´ __, -―‐ 、 r‐,―` ‐、 / , - '  ̄/!\ ̄ \_ / /、!∠ _, - ´ ̄ ̄ ̄ ̄`´ヽー、_フ _/ / /!`イ / ヽ \ くだらねぇ質問は / \! // ,/ / | ヽ ここに書き込ブッ  ̄`<,ト/ _、i/ / / ,./ / /l! ト、 -‐''´'´ / ,) /!! , / / / / / ,__-‐'''´-‐'''-‐''´ ! l! | | f --,ノ_-γ--''´ ̄ / / li l | !(◎弋 / // / ` //li ! |リ ゞノ"} l l | | / //! \, ! //ノ"}| l | 丶 / / ! liヽ│/ lト、 \ '| ,. -'´ \' / / l li ‐┼‐ li \`ー`//) / :∠ミーニ丶、 |`! !' ,/ !/ |イ!/│ヽ.l! | \ \丶、__ ../ ̄>-'⌒ー‐r;┬' ∠ミーニ !! / ∧! liノ! ` 、__, イ_ /:| │ | i' /:| ! リ / ` 、_,. -―'´ ̄V /ヽ/ ::| │ | //:::| j:/ リ三f::::f三ヽ / ,,/ヽr、! | | //rーfく /!/イ!!l::\ \ヽ! / r ' / フ |
14 :
nobodyさん :2006/10/05(木) 05:19:13 ID:6/NUu1Qf
正規表現のマッチングがうまくいきません。。。 半角英数字のみをマッチさせたいのですが、以下のコードでuserid、password共に全角やらタグを入れても マッチしてしまいます。。。>< どこがいけないのでしょうか?宜しくお願いします。環境(Apache HTTP Server 2.0.59、php-5.1.6、widows) <?php session_start(); $regex = "[a-zA-Z0-9]+"; $str = $_POST['userid']; if(ereg($regex,$str)) { $userid = $_POST['userid']; } else { print("IDまたはパスワードが不正です"); exit; } $str = $_POST['password']; if(ereg($regex,$str)) { $password = $_POST['password']; } else { print("IDまたはパスワードが不正です"); exit; } $_SESSION['userid'] = $userid; $_SESSION['password'] = $password; print("ID:$userid<br />"); print("パス:$password<br />"); ?>
$regex = "^[a-zA-Z0-9]+$";
この間違いも多いよねー。
>>14 っていうかわざわざ正規表現使わないで、ctype関数とか使えよ。
お力添えお願いします。 設定ファイルをrequireしたいのですが、どうもrequireされてないようです。 文法など間違ってないか確認しましたが正しいようです。 こういうトラブルってどうすればよいでしょうか?
まずはソースを出せ
 ̄ ̄| ̄ ̄| ̄|  ̄| ̄ ̄| ̄ ̄|─‐‐-、  ̄| ̄ ̄| ̄ ̄| |  ̄ ̄| ̄ ̄| ̄|----‐  ̄| ̄ ̄| ̄ ̄|  ̄ヽi  ̄ ̄| ̄ ̄| ̄|д゚) || ジー  ̄| ̄ ̄| ̄ ̄|中濃 ||)  ̄ ̄| ̄ ̄| ̄| ー ス/||  ̄| ̄ ̄| ̄ ̄|----'/  ̄ ̄| ̄ ̄| ̄|"U ̄ ^^^^^^^^^^^^^^^^^^^
21 :
nobodyさん :2006/10/05(木) 11:01:51 ID:EznVcv3u
前スレ
>>967 そこはちゃんと書き換えましたorz
…つまり、アクセス権とかの問題なのか…!?
Thu, 05 Oct 2006 11:13:43 +0900 こんな感じでデータ関数で出力された文字列があります。 これをThuだとかOctだとかを、数字に戻す関数はありますか? 出来ればdateやtime関連の関数であればよいのですが・・・
24 :
nobodyさん :2006/10/05(木) 11:29:24 ID:vfIfxPaM
ソケット通信の際のタイムアウトについて質問です。 FTPクライアントを作っているのですが、fsockopenでソケットを開いて stream_set_timeout($socket, $ftp_timeout); でタイムアウトするまでの時間を設定し、FTPサーバーへコマンドや ファイルを送信したり、FTPサーバーの応答を受け取ったりします。そのあと、 $a = stream_get_meta_data($socket); で$a['timed_out']を見てタイムアウトしたかどうか調べてるんですが fgetsでサーバーの応答を受け取るときは、ちゃんとタイムアウトしたか 調べられるようなんですが、fwriteでサーバーへファイルを送信する際は どんなにタイムアウトまでの時間を短くしてタイムアウトするように テストしても$a['timed_out']に何も入ってないようで タイムアウトを判別できないようです。 この関数はサーバーへ送信する際はタイムアウト処理を行えないのでしょうか? どなたかご教授願います。よろしくお願いします。 環境は以下の通りです。 使用しているOS: Fedora Core release 3 Linux 2.6.9-1.667 PHPのバージョン: 4.3.9
25 :
nobodyさん :2006/10/05(木) 11:41:16 ID:EznVcv3u
Sendmailと格闘中の者ですが、 しっかりこんなコード吐いてましたorz sendmail returned error code 127 ぐぐっても見つかりませんorz ご存知の方、どうかお助けを…
26 :
25 :2006/10/05(木) 12:12:05 ID:EznVcv3u
自己解決しますた。 XREA、モジュールなPHPは使えないみたいですorz バイナリアクセスに制限があるぽ… スレ汚しスマソ
27 :
nobodyさん :2006/10/05(木) 12:27:49 ID:6/NUu1Qf
14で質問させて頂いた者です。 無事解決いたしました〜〜〜〜〜〜>< 答えて頂きありがとうございました ctypeも勉強しますっっ#^^#
関数の調べ方がわかりません。 目的別に探せるとことかありますでしょうか? PHPマニュアルなんかは、関数名を知っていないと、 調べることができないので、 どうしてもこういうとこで聞いたりして他力本願になってしまいます。 すんなり答えられる人もいるので、経験だとは思いますが、 経験が浅いうちはどうして調べればいいのでしょうか? コツもあったらぜひ教えてください。
>>28 やりたいことから探せる、逆引きの本も出てるよ。
30 :
nobodyさん :2006/10/05(木) 14:01:51 ID:6/NUu1Qf
クラスの中のメソッドをすべて出力するみたいな 関数はありませんか?
>>31 マニュアルの「クラス/オブジェクト関数」を嫁
33 :
28 :2006/10/05(木) 14:34:59 ID:???
>>29 そんな本もあるんですね。早速アマゾンで探してみます。
>>30 参考サイトありがとうございます。
早速拝見しましたが逆引きもあって便利そうですね。
紹介してもらったサイトを参考に勉強したいと思います。
お互い経験積んで頑張りましょう!
KDDIとVodafoneの絵文字を10進法表記にしたいんですがどこか良い解説サイトありませんか??
auは公式デベロッパーサイトに softbankは無理
softbankはしね
>>35 公式デベロッパーサイトってなんですか??
公式デベロッパーサイト KDDIとかで検索してみましたが良く分かりませんでした。
SoftBank無理ですか(=д=#)...
38 :
nobodyさん :2006/10/05(木) 17:55:52 ID:FhS4/x3O
すいません。 手持ちの本を読んでもWebでも見つけられなかったので、質問させて頂きます。 $i=~$i; ってどういう意味なんでしょうか? あと、 $i=$i&0xFFFF; の「&」の意味も教えて頂ければと思います。 よろしくお願い致します。
痴展的典
>>38 ビット演算子
・「~」はビット反転。
(例えば1をビット反転すると-2になるのは、2の補数で調べるとイイ)
・「&」は論理積。
詳細はビット演算で検索すると大量に見付かるからそっちに任せた。
42 :
nobodyさん :2006/10/05(木) 21:23:40 ID:Mc2eGKeJ
皆様のお知恵を拝借したく存じます。test.txtがフォルダ上にない場合に、 $f = fopen("test.txt", "w+"); で新規作成しようとしてもうまくいきません。 ローカルテスト(Ver4.4.4)ではうまくいくのですが、サーバ(ver4.3.1)に アップすると必ずfopenの行で、 Warning: fopen(): Unable to access test.txt Warning: fopen(test.txt): failed to open stream: No such file or directory というエラーが返ってきます。事前に対象のファイルを用意してやれば読み書き共に オープンできるようです。ちなみに試してみたところ、copy()も通りませんでした。 サーバ上の権限がないからでしょうか?
うん、たぶん、そう。 あとセーフモードになってるとか、open_basedirで制限されてるとかも ないわけではない。
>>42 たいていレンタルサーバ(特にフリー)はセーフモードになってるから、
細かい部分で制限あるよ。
45 :
nobodyさん :2006/10/05(木) 22:17:20 ID:BOdiPOMC
Vine3.2でPHP5を利用してます。 php.iniでSMTPサーバを指定したいんですけど、[For Win32 only.]の文字を見つけちゃいました。 SMTPの設定値って、WindowsOSしか対象とならないのでしょうか? ちなみに、SMTP = <メールサーバのIP>を指定したんですけど、 mail()で指定したメールサーバを経由してメール送信を実施する事が出来ませんでした。 [mail function] ; For Win32 only. SMTP = localhost smtp_port = 25
46 :
nobodyさん :2006/10/05(木) 23:00:05 ID:q9Uny2VW
インスタンスを明示的に破棄するにはどうしたらいいでしょうか?
>>45 マニュアルにあるとおり。
>SMTP string
> Windows 環境のみで使用されます: mail() 関数でメールを送信する際に使用する SMTP サーバのホスト名または IP アドレス。
SMTPで送信したいのであれば、phpmailerとかPEARのMailつかうとか。
48 :
nobodyさん :2006/10/05(木) 23:46:35 ID:BOdiPOMC
>>47 ありがとうございます。
自分もそのマニュアルを見てました。
便利なのにWinだけなんて残念ですね。
仕様について考え直してみます。
>>46 たぶん、インスタンスを参照してる変数すべてについて、別のものを指すようにする
またはunsetするとかの方法しかない。
50 :
nobodyさん :2006/10/06(金) 01:14:09 ID:en5ikSuV
PHPでAPIを使うってどういう意味ですか?
何のAPIかによるよ。 よっとしてAPIって言葉の意味自体分からないとか?
APIってすごい曖昧な言葉だよね。 アプリケーション開発における内部プログラムと外部プログラマをつなぐもの(つまり「ム」と「マ」をつなぐものw)ってくらいの意味をみんな好き勝手に使いすぎなんだよな。 ライブラリのことをAPIって言ってみたり、開発者向けドキュメントのことをAPIって言ってみたり、もう何が何だかわかりません><
53 :
nobodyさん :2006/10/06(金) 01:45:11 ID:en5ikSuV
ライブラリそうライブラリだよ ffmpegをダウソしてサーバーに上げてみたんだがそんなライブラリはないみたいなエラーが出やがるorz
>>53 サーバーに上げた後、指定されたソースディレクトリにffmpegを置いて、phpのconfigureオプションにffmpegを追加してコンパイルしなおし、php.iniのextensionを追加しないと動かないよ。
55 :
nobodyさん :2006/10/06(金) 01:55:26 ID:en5ikSuV
↑まさにそのとおりです。色々調べるとそのように書いてありました。 が頭の悪いオレにはわかんねー。 orz ちなみにサーバーはSAKURA使ってます。
レンサバじゃおそらく無理。 サーバー管理者に直接問い合わせてインストールしてくれ、と交渉してください。
57 :
nobodyさん :2006/10/06(金) 02:03:31 ID:en5ikSuV
ぬおー堂々めぐりじゃー どうにかして動画からサムネイルを作らせてくれ orz
自宅サーバでもたてて、そいつでサムネイル生成部分だけやりや。
59 :
nobodyさん :2006/10/06(金) 02:43:17 ID:en5ikSuV
その生成したサムネイルに直リンするわけか… でもSAKURAのサーバーに投稿されたときに自宅サーバーが PHPを使ってサムネイルを生成するように操作することってできるの? 素人ですまん。
さくらでは「無理」
61 :
nobodyさん :2006/10/06(金) 02:48:36 ID:en5ikSuV
どこのレンサバなら出来る?
たとえばXREA+は >C、C++はあらかじめコンパイルしてアップロードしてください。 だそうだ。
XREAはSSHからコンパイルできる さくらもできる ただ負荷が強烈にかかる
>>62-63 ffmpegってphpのconfigure、makeし直して、サーバー再起動しなきゃ無理なんじゃないの?
xreaってそこまでできるの?
65 :
nobodyさん :2006/10/06(金) 03:05:52 ID:en5ikSuV
>>64 ffmpegのバイナリを実行できればいいんじゃないかな、と。
70 :
42 :2006/10/06(金) 04:48:10 ID:???
>>43 >>44 ありがとうございます。調べてみたら思いっきりセーフモードで動いてました。
perlだったら何とか通ったっぽいので、ファイル作成だけはperlで組むことにします。
WindowsServerでApache & PHP & SQL Serverをうごかしています。 PHPからデータソース名を指定してSQL Serverに接続したいのですが、 データソースの定義ってどこで行うんでしょう。 Java + Tomcatだと、Tomcatの設定に書いておきますが・・・
管理ツールにあった。。。すんません。
>>71 JavaでいうデータソースはPHPではコネクションを取得するスクリプト中に直接記述する。
コネクションの取得方法はDBMSごとに違うけど、ある程度統一的な方法を使うにはpearかpdoを使う。
後はマニュアル読めば全部載ってる。
クラスとかメソッドっていろいろ機能があるけど、 実際どう使えばいいのかわからん。 実例みたいな紹介しているサイトありませんか?
オブジェクト指向とかoopとかで検索すれば色々あるんじゃない? でも独学ならそんなに無理して使う必要ないけどね。 最初からオブジェクト指向でやってる人なら無いとやってらんないだろうけど。
77 :
46 :2006/10/06(金) 09:24:14 ID:???
>>49 ありがとうございます。unset()を使うことにしました。
>>75 フレームワークを使ってみるとか。
今はsymfony、cakephp、zend frameworkが有力らしいです。某スレによると。
お前の次のセリフは『フレームワークってどう使えばいいのかわからん!』という!
mb_send_mailを使って、メールを受け取る(hotmailで)と迷惑メールとして 受け取ります。迷惑メールにならない方法ってありますか?
>>70 PHPをCGIとして動作させれば通るかも。
共用レンタルサーバーで PHPのsession使うのはセキュリティの関係上DBにしてたのですが、 PHPをCGIとして動作させる場合、同様に共用レンタルサーバーでの sessionの管理方法として、 DB、ファイル、どちらか優劣を決めることはできるでしょうか?
下のように、値が頻繁に変わって、5文字程度を取得したいのですが、 下のだと、たまに4文字しか抜き出せなかったりします。 何かお薦めの方法を教えてください。 $mictime = microtime(); $registdate = substr($mictime,2,5);
>>85 5文字ってことは英数字でもいいの?
だったら
$microtime = md5($microtime());
$registdate = substr($mictime,0,5);
とかが簡単
88 :
87 :2006/10/06(金) 14:44:24 ID:???
ごめん。なんか間違えた。 $microtime = md5($microtime()); じゃなくて $mictime = md5(microtime()); ね
>>86 ,87
ありがとうございます!
数字で取得したかったので、87さん、すいません。
substr($mictime,2,5)で取り出しても、最初の数が0だと抜き出す数字は
4桁になるのを、前に数字をつけて解決することにしました。下の
ような感じで取得することにしました。
$registdate="5".substr($mictime,2,5)
submitのフォームがあるページでエンターを押すと、 押したことになってしまいますが、これを無効にする方法ってありますか?
>>90 文字列から数字だけ取り出せばいいんじゃないの?
SESSIONでデータを持ちまわす場合、 データ量が多くなるとパフォーマンスは落ちますでしょうか?
セッション変数はsession_start()を呼んだ時ファイルから読み込まれる。
>>94 そうなの?
$_SESSION['hoge']とかで呼び出したときに、
その部分だけファイルからメモリに読み込まれるんだと思ったが・・・
Perlのdbmマッピングみたいな仕組みなら変数単位に逐次ロードの方が 効率も良かったりするけどな。(その代わりディスク容量食うけど) 残念ながらPHPのはファイルに$_SESSION配列を丸ごとシリアライズで格納、 って方式だから$_SESSIONの中身が太るとパフォーマンス落ちるよ。
99 :
nobodyさん :2006/10/07(土) 00:19:55 ID:prmnYVal
mb_eregを使用して文字列検索を行っているのですが 検索結果が配列の先頭にしか格納されません。 全ての検索結果を格納するにはどうすれば良いでしょうか? お力添え、宜しくお願い致します。 環境 Win XP, PHP 5.1.4, Apache 2.0 $str ="2004 2005 2006"; $ary = array(); if (mb_ereg("[0-9]{4}", $str, $ary)) { echo "[0]".$ary[0]."<br />"; echo "[1]".$ary[1]."<br />"; echo "[2]".$ary[2]; } 実行結果 [0]2004 [1] [2]
>>99 [0]以外の部分は正規表現で (〜) で括った部分が格納される。
>>99 $str ="2004 2005 2006";
$ary = array();
if (mb_ereg("[0-9]{4}", $str, $ary)) {
print_r($ary);
}
// ereg()は1回マッチしたら検索を止める。
// だから$aryに"2004"だけ入れてTRUE返して終わり。
//
>>99 の方法では$ary[1]や$ary[2]は存在しないので未定義としてエラーが出ているはず。
// 結果:
// Array ( [0] => 2004 )
echo "<br />\n";
// マッチするものを全部出す場合はpreg_match_all()とかを使う。
preg_match_all("/[0-9]{4}/", $str, $ary);
print_r($ary[0]); // $ary[0]は正規表現全体(この場合は4桁の数字)にマッチした部分でできた配列である。
// 結果:
// Array ( [0] => 2004 [1] => 2005 [2] => 2006 )
>>100-101 ありがとうございます、お陰さまで期待通りに動きました。
eregは1回しか検索してくれないのですね./ ,' 3 `ヽーっ
おちつけw
105 :
nobodyさん :2006/10/07(土) 02:05:48 ID:JIECxGar
すいません、特定のCSSファイルから検索をしたいのですが、いいソース、または 解説サイトはありますか?
CSSファイルから検索って意味が分からんです。何だソレ。
107 :
nobodyさん :2006/10/07(土) 02:27:00 ID:JIECxGar
>>106 ごめんなさい、CSVファイルからでした ^^;
そのCSVファイルは日本語を含むのか?その場合の文字コードは?
探せばライブラリが沢山ありそーだが
110 :
nobodyさん :2006/10/07(土) 03:15:01 ID:JIECxGar
だったらfgetcsv()で1行ずつ読み込みながら対象カラムと比較していくだけでいけると思う。
112 :
nobodyさん :2006/10/07(土) 12:35:56 ID:2Dg2VxQN
会員制のページを作りたいと考えています。 そこでsessionについて質問があります。 例えば、idとパスワードで認証が行われるとします。 それが、DBに存在するものと一致すればログイン成功 その時にsession_idがクライアント側に渡される 次にsession_idがなければアクセスできないページがあると isset()で確かめて認証するとします。 この場合だとsession_idを持っている=会員というところまではわかるのだと思いますが どの会員かは、わからりませんよね? ひとりひとり個人として認証する場合にはsession_idを渡すときに同時に DBにもsession_idを登録しておきそれと一致するものを探すと言う作業をしなければ ならないのでしょうか? よくわからない日本語となっていますがよろしくお願いします。
user_idをセッションに入れればいいんじゃ?
$hoge配列の要素分繰り返しをするとき いつも $i =0; while($i < count($hoge)){ } としているのですが、 もっと簡単な記述方法ないでしょうか? whileのなかで、さらに繰り返すとき $i2 = 0; とかしなければならなくていつもゲッソリするです
115 :
(^ω^) :2006/10/07(土) 14:21:43 ID:???
foreach ($hoge as $key) {}
どうでもいいことだが、 $i ときたら次は $j だろう。
プリントスクリーンでコピッた画像をWEBに貼り付けられるようなシステムって できないんでしょうかね? エクセルに貼り付けるような感覚で。 できたらすごい便利だと思いませんか?
>>117 それが便利かどうかはともかく、可能か不可能かと言われれば余裕で可能です。
そしてそれを自動化したものの一種がいわゆる『きんたま』と呼ばれるものです。
あ、ここPHPスレか。 PHPだけで実現するとなるとちょっと難しいかも知れんね。
検索のときに、ページングなどで、その検索語を渡すと、 URLに日本語がそのまま表示されたり、その語が削除されたりします。 日本語で検索をするときは、urlencodeを使うべきなのでしょうか? 解決策を教えてください。
つ【RFC】
すいません>< RFCで調べても、わからないです。もう少しヒントを下さい
RFCを検索語にして調べるんじゃなくて、RFCの中でurlについて記述されているものを読め、ってことだ。
検索するときに、下のようなやり方で、DBに入れてもいいものなんでしょうか? 受け取った値をmysql_real_escape_stringをしないとセキュリティは危険なのでしょうか? $keyword = $_GET[keyword]; if (get_magic_quotes_gpc()) { $keyword = stripslashes($keyword); } $keyword = mysql_real_escape_string($keyword);
その後の使い方による それで十分な場合もあるし、不十分な場合もあるし、十分すぎる場合もある
外部のxmlファイルの更新日を取得する関数はありますか?
127 :
117 :2006/10/07(土) 20:15:12 ID:+DkGqdIm
>>118 それってウィルスのことですか?
詳しく教えてくださいな。
>>125 ありがとうございます。その後の使い方は、WHERE comment = $keywordみたいに
使って、当てはまるものを抽出して、HTML上に表示させています。
この場合は平気でしょうか?
>>124 プリペア独自の関数通さないなら
$keywordを''とかで囲った方が良い
あ、プリペアとか独自の関数ね・・・
>>130 ありがとうございます。じゃあ、WHERE comment = '$keyword' こんな感じで
平気ですよね!?ありがとうございます。
あと、ついでみたいで悪いのですが、
$con = mysql_connect($DBSERVER〜);
$selectdb = mysql_select_db($DBNAME〜);
$sql=SELECT〜
みたいな感じで、毎回DBを使うときは、$conと$selectdbを書いているのですが、
これは、一つのファイルにまとめて、インクルードして
$sqlだけ、個々のページに記述するのが普通なのでしょうか?
>>132 DBクラスや関数等を作るか
PEARのDBとかを使ったりするのが殆どだと思うけど
そのやり方で問題無いなら別にそれでも良いんじゃない?
標準のmail関数を使うためphp.iniでSMTPを設定してますが これ認証が必要なSMTPは無理ですか?
注意: HTML などの複雑なメールを送信する場合は、PEAR パッケージの PEAR::Mail を 利用することを推奨します。注意: HTML などの複雑なメールを送信する場合は、PEAR パッケージの PEAR::Mail を 利用することを推奨します。
136 :
71 :2006/10/08(日) 07:56:30 ID:???
PearDBを使ってSQL Serverにアクセスできるようにはなりましたが、 今度は文字コードの件ではまってます。 SQL Serverでは、nvarcharのカラムのデータを、 PHPで取ってくるとShift-JISになります。 PHPではUTF-8で処理したいのですが、どうするのが一番良いでしょう? DBから取得するごとにmb_convert_encodingでShift-JIS -> UTF-8 するのでしょうか?
137 :
nobodyさん :2006/10/08(日) 09:05:00 ID:oH20wXBj
なぜスクリプトを書くときはEUC-JPのコードで書くのか教えてください。 シフト-JISではいけないのですか?
>>137 文字コードの問題で、漢字を表示するときに\をつけないと文字化けするときがあるから
139 :
137 :2006/10/08(日) 09:21:53 ID:oH20wXBj
>>138 なるほど、文字化けという重要な問題が原因だったのですね。
ありがとうございました。
>>139 現象としては文字化けで済む場合もあるが、
本質はPHP(ZendEngine)がSJISのソースを実行できるようになっていない、
またSJISはEUC-JPなどと違ってきちんとSJISを考慮していない
(ASCII前提のものとか)と、適正な処理ができないコードが混じっているため。
必要なら別にSJISで書いたって構わないよ。
・PHPの設定で、ZendEngineに渡す前にSJISを解釈できる文字コードに変換するようにしておく
(ZendEngineから渡された文字コードをSJISに変換する逆方向も)
・その変換処理によるパフォーマンスやコストに目をつぶれる
ならば。
>>139 ていうかEUC-JPよりUTF-8の方がいいよ
UTF-8よりEUC-JPの方がいいよ
PHPはEUC-JPの方がいいな。
いやいやBig5が一番でしょう
ここは漢らしく全部画像で。
どうぞどうぞ
お主らこそ、まっこと漢の中の漢よのう。
おれが作るサイトは全部SJISですけど何か? 結局何にしようが文字化け怒る時は怒るよ
文字化けだとんだごるるるるらうらあああああああああああああああ!!!!!!!!!!!!!!! なめてんのかこるるるるるるあああああああああああああ!!!!!!!!!!!!!!!!!!!
いや、バグらないから。
そのindex.phpがバグってるんじゃないの。さらさないとだれーもわからない
すいません、バグるというか、CSSとかincludeするファイルが反映されなくなったりします。 これは相対パスで指定してるからでしょうか? というか、これは危険なのでしょうか? 普通は、そのファイルは存在しません、みたいな表示をさせるのでしょうか?
さあ皆で円陣を組むぞ。エスパーを呼び出すんだ!
エスパー伊東だけど、呼んだ?
さぁ、エスパー召還の儀式を!
>>153 絶対path使え
これ /index.php/hoge だと
ブラウザにはディレクトリが違うという判断になるはず
とういうか、<base>?
掲示板であるような、httpが書かれたら自動的にリンクされるようにしたい
のですが、いまいちわかりません。
今は下のようにしているのですが、これだとできません。
どうか教えてください。
ereg_replace('
http://+[a-zA-Z0-9\.\-\=\/\%\$\?\&\_]* ', "<a href ='\\0'>
<font color=ff0000>"."\\0"."</font></a>", $string)
\\0と変数使ってるが、元側でどこが変数か指定してやれよ。
>>160 すいません、元側でどこが変数か指定してとはそうゆうことでしょうか??
「http・・・って書いてあるところを自動リンクにしたい」 ていうときには、全部一度にやらずに、分割してテストしながらやるといいと思うよ。 まず、http・・・にマッチする正規表現を調べる、これが第一段階。(replaceじゃなくてmatchするしないだけをしらべる) 第二段階は、リンクを張るやり方のテスト。簡単な文字、例えば、aaaを<a href="aaa">にreplaceするやりかたを調べる 第三段階で、その両者を合体させる。
あ、「aaa」ってのは例えば a+ とかの簡単な正規表現で、っていう意味ね。
それを考える前に、結果欲しいものから、 「$_SERVER SSL」とかでぐぐってみないかねー。
167 :
nobodyさん :2006/10/09(月) 01:17:31 ID:mIjkQc8G
・・・? 結局、現状何がどうなって困ってるんだ?
>>167 おk、順を追って考えてみよう
1.ログファイルを配列に読み込む
$lines = file(LOG_FILE);
2.行を削除
array_splice($lines,$i,1);
3.ログファイルを更新
ファイルへの書き出し処理はどこに書いてるんだ?
170 :
165 :2006/10/09(月) 01:38:20 ID:???
>>166 アドバイスどうもありがとうございます。
とても助かりました。m(__)m
$_SERVERの項目をhttpページとhttpsページで見比べて、違う箇所を発見しました。
$_SERVER[SERVER_PORT] => 80 という部分も違いましたが、
$_SERVER[HTTPS] => on というそのものスバリのパラメータがあったので、とりあえずこれをSSLページ判別に利用してみます。
一つのページにいくつものフォームを書いてそれぞれにsubmitボタンを 与えて、Aボタンが押されたら、名前変更、Bボタンが押されたら、メアド変更 みたいにしたいのですが、受けとるページで、if(isset($_POST[B])){}のように 書いてもAボタンのif文が実行されてしまいます。 どうすればいいでしょうか??教えてください。
>>171 受け取るページに、
print_r($_REQUEST);
と書いて、受け取っている値をチェックしてみよう。
ボタンがたくさんある方のページは、
(1)ボタン毎に<form>〜</form>で囲んで確実に違う動作にする
(2)JavaScriptでボタン毎に動作を違うものになるようにする
という方法があるんじゃないでしょうか?
>>171 if ( isset( $_POST[B] ) ) { }
の部分を
if ( !empty( $_POST[B] ) ) { }
に変えてみたら動作変わる?
>>171 ありがとうございます。
ボタン毎にformを設定しているのですが、何か変な挙動が。笑
print_r($_REQUEST);←を使って色々と頑張ってみます!
あと、もう一つだけお願いがあるのですが、enterキーを押しても
submitが押されたことになるのを止めたいのですが、どうすればいいのでしょか?
そりゃブラウザの仕様の問題なのでは?
>>174 JavaScriptを使え。
詳しいやり方は検索すれば大量に見付かるから自分で探すように
>>174 ボタンごとにフォームを分ければ確実に出来る。俺はそうしてる。
それから、if文での判別には、submitボタンに設定したnameおよびvalueは使わないように。
理由は省くが、とにかく使わないように。
その代わり、hiddenで、name=mode value=A などとして、それを使って判別すると良い。
178 :
nobodyさん :2006/10/09(月) 08:57:28 ID:mIjkQc8G
>>168 すいません。、、あんまり詳しく書けてなかったみたいです><;;
>>169 おぉ!ありがとうございます!早速直して行きたいと思います!!
アドバイスありがとうございました^^A
>>173 emptyはあんまオススメできん・・・
181 :
nobodyさん :2006/10/09(月) 11:17:20 ID:/lkovAUh
今ちょっと調べてみたら、
mime_content_type
ていう関数があるみたいだね。
http://jp.php.net/manual/ja/function.mime-content-type.php 例によってコメント欄に重要な情報が書いてあって、
Windowsの場合はphp.iniで、
extension=php_mime_magic.dll
とする。それと、magicファイルがいるので
mime_magic.magicfile = "C:\path\to\php\install\magic.mime"
としなきゃいけないと。(それようにビルドしてあるPHPじゃナイト使えないみたいだけど)
あと、gnuwin32のfileがWindows用のfileコマンドとして使える、
ていう話も書いてあるね。Officeのドキュメント識別できるかどうかしらんけど……
外部コマンドのfileが使えるんなら、system関数かなんかで呼び出せばいいと。
ID/PASSを変数に入れておいて リンクをクリックすれば、 認証CGIにヘッダーでID/PASSを投げてログイン、 という方法を取りたいと考えています。 (例えばYahooのウェブメールにログイン) > ID/PASSを変数に入れておいて > 認証CGIにヘッダーを投げて これはできたのですが、 最後のログインがどのようにすればよいか分かりません。 ID/PASSを投げただけで終わる感じです。 具体的には pfsockopenして、 対象CGIにID/PASSをfputsで送る感じです。 これ以降がよくわかりません。 javascript とかで自動的にフォーム移動させたり、 hiddenでID/PASSを入れておいて・・・ という方法もあると思いますが、 これだと第三者にログインしてもらいたいときに パスワードが知られてしまいますので 上のような手順をとっています。 どなたかご助言をお願いします。
185 :
183 :2006/10/09(月) 15:17:21 ID:???
>>184 レスありがとうございます。
びっくりしたことに、ちょうどその書籍目の前にありました。
ただ、これに関しては同サーバーから相手先のデータを読み込んで表示する、
という感じですよね。
直接該当ページに移動するのは無理でしょうか?
移動するというのはどういうこと?
文字列から最初と最後を除いた文字列を取得する、スマートな方法は? 例: 'abcdefg' => 'bcdef' substr($str, 1, strlen($str) - 2) ←これより良いのありますかね?
substr($str, 1, -1);
-1なんて使えたのか・・・ サンクス
掲示板のスクリプトで2chみたいにIDを生成しようと思ってますが、 $host = ホスト(略); $id = crypt($host.$_SERVER['USER_AGENT'].date("w"), "HOGE"); としてるんですが、こんなんでいいのでしょうか?なんか書き込んだ人を個別に判別できる値とかないんでしょうか?
USER_AGENTなんか入れたら偽装できまくりじゃん
192 :
190 :2006/10/09(月) 19:26:39 ID:???
>>191 そうですね(汗)
USERAGENTは抜いておきます。偽装されたら意味ないですね。
アップロードされた画像を相対的に表示させるにはどうすればいいのでしょうか? imgの中に、widthなどをいれると全てそのサイズになってしまいます。 ある一定以上大きい画像は幅、高さを縮小させて表示させるには、imageizeなどを 使えばいいのでしょうか? もし、よろしければ詳しいやり方を教えてください。お願いします。
>>193 1.getimagesize()でファイルの縦横サイズを取得する。
2.縦横がそれぞれ指定サイズ以上かを判定する
3.縦か横のどっちか大きい方をheightまたはwidthで指定する
だけかと。こんなのいちいち人に聞くような内容じゃないぞ?
195 :
181 :2006/10/09(月) 20:36:00 ID:/lkovAUh
オブジェクト指向プログラミングは、あちこちで「効率が良い」と言われて居るけれど 具体的にどう効率が良いの? 自分のウェブサイトで使う様な、あくまで趣味感覚で一人で開発して居る人には関係無いよね?
「具体的にどう効率が良い?」というのは非常に難しいところだと思う。 実際、オブジェクト指向じゃなくても同程度(場合によってはそれ以上)効率良くプログラムを書くことはできる。 気になるなら勉強すればいいし、もっと深く話を聞きたいなら違うとこに行ったほうがいい。 議論するほどにスレ違い&板違いな方向に行くのは目に見えてる。 一人で開発してるなら「どこにどんな処理があるか」「この処理はどこに書かれているか」が分かってるからほとんど必要ない。 最低限、よく出てくる処理をfunctionにしておけばいいと思う。
開発人数か一人かどうかはあまり関係ないと思うな。 まず、Cの構造体が便利だと思えるかどうか。 便利だと思えるなら、次の段階として構造体のメンバに関数のリファレンスを格納できたら便利だと思えるかどうか。 それが便利だと思えるなら、その次の段階として、似てるけど微妙に違う構造体をたくさん使うとき おおもとになる型枠的なものを用意して、その子分をこしらえてながら開発出来ると便利じゃないか、と。 まあ、以上のものにちょっと機能を加えて便利にしたものがオブジェクト指向って感じか。 まず、構造体が便利だと思えなければ話が始まらないが、、PHPって素の構造体は・・・連想配列で代用か?
今PEARのMailでメールを送ってるんだけど、何故か件名が35byteぐらいを 超えると文字化けしてしまう・・・ PEARでメール送るときって件名の文字制限ってあるんですか? 確か1000ByteまでOKだったはずなんだけど・・・
200 :
nobodyさん :2006/10/09(月) 21:37:59 ID:WzDdpX/2
構文的な内容の質問です。 現状態ではプログラムの中で決まったHTMLを出力する場合に、 <?php echo <<< HTML <html> <head><title>test</title></head> HTML; ?> と出力するようにしています。しかしこれだと、 <?php function test(){ if(〜){ echo <<< HTML <html> <head><title>test</title></head> HTML; } } ?> のようにインデントを入れた場合にインデントまで出力することになってしまいます。 echoやprintを使用して一行ずつ出力することも考えましたが、ソースの可読性など考えるといい方法とは思えませんでした。 こういう場合は外部ファイルにタグを記述しておき、それをfile関数などで読み出して、出力するほうがよいのでしょうか? 意見のなどよろしくお願いします。
202 :
nobodyさん :2006/10/09(月) 22:29:41 ID:bFRkADqN
easy php で php my admin でデータベースの管理をブラウザ上から 行いたいのですが,文字化けしてて使えません. 対策方法お知りの方おられましたら,お教え願えないでしょうか?
>>201 それだ!!
でも、文字数は20〜30文字ぐらいなんですよ・・・
【100yen or 200yen】お前ら最高!でも俺の方が最高!
上みたいなヤツだと「最高!」あたりが文字化けしてしまうっす・・・
>>200 別にHTMLの部分までPHPにあわせてインデントする必要はないんじゃないの?
206 :
203 :2006/10/09(月) 22:44:52 ID:???
>>205 あ、すみません。最後の「最高!」でした。
それ以前は部分は文字化けしません。
今確認したところ、件名自体を短くして「俺は最高!」
のみに縮めた場合は文字化けせずに問題なく送信できます。
207 :
205 :2006/10/09(月) 22:46:19 ID:???
申し訳ないです。。。 × >あ、すみません。最後の「最高!」でした。 >それ以前は部分は文字化けしません。 ○ >あ、すみません。最後の「最高!」でした。 >それ以前の部分は文字化けしません。
>>204 インデントしないと見通し悪くなるっしょ。
出力後のHTMLのインデントを美しく揃えたくなってしまう俺様が来ましたよ
気持は分かる。 が、俺はついついインデントを全排除してとにかく楽な方に逃げてしまうなあ。
> 200 インデントするもなんも、ヒアドキュメントの終端IDのある行はインデントできんでしょ。 見栄えもなんもあるかいな。
includeでもしてくれ
というか作りそのものがまず悪いよ
>>200 > ソースの可読性など考えると
ソースの可読性を考えてるやつはプログラムコードの中にHTMLを書いたりしない。
> こういう場合は外部ファイルにタグを記述しておき、それをfile関数などで読み出して、出力するほうがよいのでしょうか?
当然。
どうしてもソース中にHTML書きたいんなら、Perlじゃないんだからヒアドクなんて使わず
if(〜){
?><html><?php
?><head><title>test</title></head><?php
}
みたいにHTMLモードに入っちゃえば?
>>213 includeじゃ対応できない部分もあるよ。
たとえばwhileなどで動的にテーブル作る(セル数が変動する)ときとか。
これはプログラムの流れに沿ってHTMLも書かなきゃならんので、
やはりソースに合わせてインデントしたくなる。
217 :
200 :2006/10/10(火) 01:02:53 ID:???
自分も今動的な部分に困っています。 他にいい方法がない場合は外部ファイルに <?php $header = create_function('$title',' echo <<< HTML <html> <head><title>$title</title></head> HTML; '); ?> と書いてrequireなどして逃げようと思ってます。
>>217 なぜわざわざ関数化するんだよ。
ヒアドキュメント内の変数だって{}で囲めば、
requireで読み込んだあとに変数部分がきちんと展開されるぞ。
>>216 俺は表示の動的制御に関しては読み込まれるHTML側に<?php 〜 ?>埋め込みでPHPコードを書くかな。
HTMLファイル側に仕込むのは
・変数表示
・表示のフォーマット処理
・表示のON/OFF制御のためのif
・ループ処理
のみに制限すればSmarty辺りのテンプレートとほぼ同様の可読性を維持できるから問題は感じない。
逆に言うと、あの辺のテンプレートと同程度のコードは許容しないと外部ファイル化はまず無理。
>>217 いくらなんでもその書き方はありえないだろ。
外部ファイルにしている意味が全くないぞ。
>>219 具体的にどんな感じですか? 良かったら参考にさせて下さい。
219じゃないけど、話の流れにそって俺なりのテンプレートの一部を書いてみる。 ショートタグ派的にはだいたいこんな感じ。 (というか、テンプレートにこういう風に書けるように、require前に変数を作成しておく) <? foreach ($this->list as $item) : ?> <tr> <td><?=h($item->number)?></td> <td><?=h($item->name)?></td> <? if ($item->displays_body) : ?> <td><?=h($item->body)?></td> <? else : ?> <td>ひみつ</td> <? endif ?> </tr> <? endforeach ?> ちなみに俺はテンプレートの中でwhileは極力使わない。 ループは全てforeachで済ませられるよう努力する。
表示制御でwhileなんて、使う方が難しくないか? forを使わない、ってことなら分からなくもないけど。
223 :
221 :2006/10/10(火) 07:59:33 ID:???
>>222 まあ、そりゃそうだ罠。つーか、
>>216 でwhileの話が出てたから一応言ってみただけなんだけど。
ロジックを表示周りに一体化させたい衝動に駆られると、whileも出てくるんじゃない?
あとは、while (DBからfetch) の中で直にechoして、メモリをすっきりさせてみたい年頃だったりとか。
224 :
200 :2006/10/10(火) 08:37:53 ID:???
>>217 の書き込みが不適切だったことにお詫び申し上げますorz
>>218 要するに、呼び出し側で
function test(){
$title = "testaaaa";
require("header.php");
}
としておき、header.phpで
<?php
echo <<< HTML
<html>
<head><title>$title</title></head>
HTML;
?>
ということでよろしいのでしょうか?
225 :
183 :2006/10/10(火) 09:28:01 ID:???
>>186 通常のブラウザからのログインと同じように
対象のURLに自身のPCからアクセスするという意味です。
ためしにcURLでやってみたら、
上手くログインはできたものの
自身のサーバ経由で読み込むため、
ログイン先のシステムによっては、相対パスなどで指定されていて
リンク先などが正常に表示されませんでした。
そりゃそうなるにきまってますよね。BASEタグでも挿入しときゃ委員では?
じっくり考えてみたけど、要するに183さんがやりたいのは PHPでプロキシーサーバーを作りたいってことなのかな?
183はHTTP_Requestでも使ってろ
229 :
183 :2006/10/10(火) 11:33:55 ID:???
>>227 いえ、逆に単にID/PASSが分からないログインボタンを作りたいだけです。
現在の状況(cURL)がプロキシサーバーになってしまっているので困ってます。
知人にログインして見せたい情報があるんですが、
ID/PASSは知らせたくない、というだけの状態です。
クライアントPCから相手先のサーバにデータを送る必要があると思うのですが、
上の場合、PHPサーバーから相手先のサーバにデータを送ってしまうので
難しいのでしょうか。
230 :
183 :2006/10/10(火) 11:40:05 ID:???
ちょっと考えてみたのですが、 PHPサーバーから相手先のサーバーにPOSTしても ログイン先のサーバーでは PHPサーバーと対のセッション情報保存されるわけで、 クライアントがログインできたかどうかとは全く別問題なんですよね
以前したらばを対象に似たようなの作った事あるけど、 こういうのって発覚するとロクな事にならないので止めといた方が良い。 単にログイン後のページを見せたいのなら スクリーンショット撮って適度にモザイクかけて渡せ。
>>224 だから呼び出す側でも関数化する必要ないし、呼び出される側では変数を{}で囲めって。
正しくは(最も単純なのは)↓
$title = "testaaaa";
require("header.php");
としておき、header.phpで
<?php
echo <<< HTML
<html>
<head><title>{$title}</title></head>
HTML;
?>
233 :
200 :2006/10/10(火) 14:56:02 ID:???
>>232 今作っているものの都合上、関数化して書き込んでいました。
すいませんorz
234 :
nobodyさん :2006/10/10(火) 15:12:57 ID:VCBK9AiM
PHPで、日替わりでヘアスタイルの画像を表示するサイトを作りたいです でも全然分かりません… 親切な方、いらっしゃったら教えてください 画像は365枚あります。
>>234 <img src="hair_<?php printf("%03d",date("z")) ?>.jpg">
普通JSでやるだろ
>>236 普通JSではやらない。
JSオフ環境の人も多い今の世の中ですよ奥さん。
オフにしてるのなんて、アダルトサイトに行く人だけw
まぁ意識レベルの問題だけどね。 何も危ないのはアダルトだけじゃないよ。 価格.com事件のようなのもあるしね。
***みんな誰でも無料で使える高速FTP「てぶ鯖」***
てぶ鯖は・・・
♪誰でもどんなファイルでもアップロード可能!!
♪アップロードされているファイルは誰でもいくらでもダウンロード可能!!
♪たくさんアップロードした人にはなんと抽選でプレゼント!!
だからみんなで楽しく使っちゃおう!!
ftp://tebukuro.ath.cx User:anonymous
password:メールアドレス
++++*******てぶ鯖********++++
>>238 相手が携帯かもしれない
って考え付かないですか
242 :
nobodyさん :2006/10/10(火) 17:51:02 ID:VCBK9AiM
>>235 さん
ありがとうございました!!なんとか出来ました!
243 :
nobodyさん :2006/10/10(火) 19:27:44 ID:HtJUF5F+
$a = array('111', '000', '222','222', '000', '222''888', '426', '222'・・・・・・・・); このような配列が有る場合に 000は何個 111は何個 222は何個 と配列の中身をカウントする方法は有りませんでしょうか?
>>243 要素を一個取り出して、array_diffかけてから減った個数を調べる
245 :
sage :2006/10/10(火) 19:57:14 ID:???
RSSフィーダー(php)の海外のプログラムいじっているんですが、 下記のように文字化けします。 心当たりありませんか? ?¢?¢?¢?¢?¢ とか \???\?\£
246 :
nobodyさん :2006/10/10(火) 20:16:03 ID:HtJUF5F+
>>244 様
ありがとうございます。
理解出来ませんでした。
もう少し優しいやり方はないでしょうか?
>>246 244じゃないけどそれが理解できなかったら他の方法も無理なんじゃないかな。
これ以上ないくらいに分かり易く説明してくれてるのに。
決して難しくないから頑張って理解してみるといいと思うよ。
@要素を1個取り出す
Aarray_diffをかける
B減った個数を調べる
順を追って解決していくといいよ。
別な方法としては
$aの要素をキーとする新しい配列を作り、1つ要素があるごとにそのキーの値を1増やす。
これを$aの全ての要素について行う。
>>246 foreach ($a as $b){
$c[$b]++;
}
print_r($c);
>>246 $a = array('111', '000', '222', '222', '000', '222', '888', '426', '222');
foreach ($a as $value) {
if (!isset($b[$value])) {
$b[$value] = 1;
} else {
$b[$value]++;
}
}
print_r($b);
前にもやったぞこれ。
キーにする方法だと、array(1, '1', true)とかで問題が起きたり。
>>243 つーか、array_count_values($a)で一撃だと思うんだが。
250みたいな問題が起こる可能性があるなら、値を全部serializeすればいいと思う。
252 :
nobodyさん :2006/10/10(火) 21:02:05 ID:HtJUF5F+
試行錯誤している内に皆様レスありがとうございます。 こんだけ時間掛けてやっと実行出来たのがこれなのですが 問題等ありますでしょうか? <?php $a = array('111', '000', '222', '222', '000', '222', '888', '426', '222'); $a2=array_unique($a); foreach ($a2 as $a2_num => $aaa) { foreach ($a as $a_num => $aaaa) { if ($a2[$a2_num]==$a[$a_num]) { $cnt[$a2_num]=$cnt[$a2_num]+1; } } $a_cnt[$a2[$a2_num]] = $cnt[$a2_num]; } while(list ($key, $val) = each($a_cnt)) { print (" $key は、$val 個です<br>\n"); } ?>
>>251 serializeって…こうか!
array_count_values(array_map('serialize', $a));
目から鱗w
>>251 様
凄いですね
$a = array('111', '000', '222', '222', '000', '222', '888', '426', '222');
$b = array_count_values($a);
while(list ($key, $val) = each($b)) {
print (" $key は、$val 個です<br>\n");
}
数行で同じことが出来ました。
>>252 と比べると非常に情けないです・・・・
255 :
71 :2006/10/10(火) 22:44:48 ID:???
何度もすみません。 同一Windowsマシン上でApache + PHP & SQL Serverをうごかして、 PHPからSQL Serverのデータを取ってくる際、 odbc_connectやmssql_connectで出力エンコーディングを 指定することはできないのでしょうか? いろいろ調べましたが、エンコーディングを設定するということができないようです。 FreeTDSのodbc.iniには書けるようですが、Linux用のドライバですし〜や@は化けるようです。 以下のようにCOMを使ったらできたんですが重いです。 $conn = new COM("ADODB.Connection", NULL, CP_UTF8); $conn->Open("Driver={SQL Server};Server=servername;Uid=user;Pwd=passwd;Database=databasename"); なんというか、こんなやり方でしか、エンコーディング指定できないというのは、 かなり信じられないんですが・・・本当に困ってます。 何か知っている人がいたらご教授ください。
256 :
nobodyさん :2006/10/10(火) 23:14:34 ID:UY1nIn3b
(int $x) と (str $y) に、(int 0-9)と(str a-z)を代入して二文字のパターンを、ループ処理で 全て求めたい: 例: 00, 01, 02, …… 98, 99, …… 0a, 0b, 0c, …… 9x, 9z 数字のループは分かるんだけど、文字列のループはどうすれば出来るのかな? for ($i = 0; $i < 99; $i++) { echo $i; }
257 :
nobodyさん :2006/10/10(火) 23:16:53 ID:UY1nIn3b
[訂正] (int 0-9)と(str a-z)の組合せで出来る二文字のパターンを、ループ処理で 全て求めたい
for ($i=ord('a'); $i<=ord('z'); $i++) { echo chr($i); }
for ($i=0;$i<36*36; $i++) { echo base_convert($i,10,36); }
260 :
nobodyさん :2006/10/10(火) 23:55:07 ID:UY1nIn3b
ありがとう。
便乗 0-9、a-z、A-Zでは?
foreach(range(0,9) as $c){ foreach(range('a','z') as $n){ $a[] = $c.$n; } } print_r($a); --- ところでこれだとなんでzzまで出ちゃうんだ? for($i='a';$i<='z';$i++){ echo $i; }
大文字小文字順番逆だけど function jump(&$i) { if ($i == 58) $i = 65; elseif ($i == 91) $i = 97; } for ($i=48; $i<=122; $i++) { jump($i); for ($j=48; $j<=122; $j++) { jump($j); echo chr($i).chr($j); } }
$a = array_merge(range(0,9),range('a','z'),range('A','Z')); foreach($a as $b){ foreach($a as $c){ foreach($a as $d){ $aa[] = $b.$c.$d; } } } print_r($aa);
269 :
nobodyさん :2006/10/11(水) 02:22:14 ID:8Czx1vGv
>>269 機種名というのは携帯電話端末の?
ユーザーエージェントの識別名は、クライアント側の自己申告なので
難しいと思う。まず各メーカーの仕様書を見ろ。
$lines = file ('filename.txt');
foreach ($lines as $line) {
$result = str_word_count ($line, 1);
echo "{$result[0]}<br>\n";
}
ほとんどのユーザーエージェントは、機種名を識別名文字列の最初に持って来ているので
これで取得出来ると思うが……。
>>269 キャリアをまず判別して、キャリアごとの機種名ぶっこヌキ処理書いて
引っこ抜くしかないんじゃないの?
サイトのリニューアルをしてるんですけど、 フレームワーク使うからurlが変わっちゃいます。 いままでのurlには末尾に.htmがついていたのですが、 フレームワークのurlには.htmがついていません。 .htm 付のurlでアクセスがあった場合.htm なしのurlに 転送できるのでしょうか。
それはトップページだけでいいの?それとも大量に転送したいURLがあんの?
トップだけでいいなら元々のHTMLと同じ名前のHTMLを1個置いといて
中に
<?php Location("
http://フレームワークなサイトのURL/ "); ?>
って1行仕込んどくだけでいいと思うけど。
mod_rewrite
ここのスレはいい人ばかりで大好きです。 ありがとう。
↑なんでこの発言、定期的に書き込まれるの?
>>276 え!? そんなのあったか?
5スレほど過去ログ遡ってみたが1個も見つからないぞ。
ここのスレはいい人ばかりで大好きです。 ありがとう。
感謝を素直に受け取れない偏屈者がいたようだw
280 :
nobodyさん :2006/10/11(水) 12:57:14 ID:i80IIJil
php5でis_a()を使うと「is_a(): Deprecated. Please use the instanceof operator」と 言われるんですが、使わない方がいい理由って何かあるんでしょうか?
ってかさ、読もうとしろよ翻訳使ってもいいからさ 「instanceof演算子を使って下さい」
>>281 お前も日本語読む努力をしようよ。
「何故、これが非推奨になってるのか」を聞いてる質問だろ?
これが非推奨でinstanceof演算子を使えといわれてることは
質問者はすでに理解してるんだよ。その理由を聞いてんの。
283 :
280 :2006/10/11(水) 13:30:19 ID:???
>>282 そんな事を書き込む暇があったら
さっさと理由を教えてくれ
>>283 PHP5で演算子化(instanceof)されてより効率がよくなったから。
わざわざ関数を通してオーバーヘッドを増やすのはナンセンス。
285 :
nobodyさん :2006/10/11(水) 13:47:02 ID:P+AC1Js6
>>234 さんの質問と重複するかもしれませんが
愛猫の動画を365日自分の携帯用ホームページに表示したいです
365本の動画はすでに1〜365まであります
教えてくださる方、お願いします。
286 :
280 :2006/10/11(水) 13:49:42 ID:i80IIJil
>>284 ありがとうございました。
283は私じゃありません。
いくら下らねぇ質問スレでも回答を読めないレベルの人はお断りだ
サイト登録ができるサイトを作ろうと思っています どうやらCGIプログラムを使うといいらしいのですが、 CGIについてまったくのド素人なため、1から作るというのが難しい状況です お勧めのフリーCGIプログラムがありましたら教えてください
画像を縦横同じ比率で縮小させて、表示させたいのですが、どうすれば いいのでしょうか?getimagesizeで縦や横のサイズが500以上だったら300に する、みたいなことはできたのですが、それだと、元の画像の縦横サイズが 変わってしまいます。縦が小さくなったら、同じ比率分だけ、横も 縮小させたいのです。どうか宜しくお願いします。
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>295 小学校からやり直す?
$length = 200;
$size = getImageSize($targetfile);
if($size[0] > $length){
$width = $length;
$high = $size[1] * $length / $size[0];
}else{
$width = $size[0];
$high = $size[1];
}
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>297 ,298
ですよね。。これって簡単な算数ですよね。。。ホント馬鹿です。
ありがとうございます。
301 :
nobodyさん :2006/10/11(水) 16:39:42 ID:WiH1H+/l
テキストボックスが空欄の場合、 対応する $_POST[] の中身って何になりますか?
>>301 「テキストボックスが空欄」ねー。
↑この文、回答者から見たらどうとらえると思う?
303 :
nobodyさん :2006/10/11(水) 16:47:25 ID:WiH1H+/l
>>302 何も記入されていない状態、と、
普通は捉えてもらえると思いましたがorz
>>301 つ「var_dump($_POST)」
305 :
nobodyさん :2006/10/11(水) 17:00:10 ID:WiH1H+/l
…超ショボい凡ミスしてますたorz
>>304 お手数おかけしました…
ここのスレはいい人ばかりで大好きです。 ありがとう。
307 :
nobodyさん :2006/10/11(水) 17:05:36 ID:WiH1H+/l
おまいら! VBとは違って、= は代入、 == が比較だぞ!orz
>>301 ,303,305,307
お前は一人でコントでもやってるのか?
309 :
nobodyさん :2006/10/11(水) 17:17:32 ID:a92Vtxiq
310 :
285 :2006/10/11(水) 17:28:29 ID:P+AC1Js6
度々すみません
>>287 さんのやり方で
<html>
<body>
<div align="center">
<a href="movie.php">今日の動画</a><br>
</div>
</body>
</html>
でmovie.phpを
<?php location("
http://example/movie/ " . (date("z")) . ".amc"); ?>
としましたが
Fatal error: Call to undefined function: location() in /home/virtual/site42/fst/var/www/html/movie.php on line 1
のエラーが返ってきてしまいます
ちなみに見る方がおばさんばかりなので、携帯用動画(3gp amc)しかありません
親切な方、よろしくお願いします
311 :
nobodyさん :2006/10/11(水) 17:35:30 ID:WiH1H+/l
location じゃなくて、 echo じゃダメなんですかねorz
>>310 おばかさんはお前じゃね?
その程度のエラー訳して自己解決しろよ
314 :
nobodyさん :2006/10/11(水) 17:37:14 ID:WiH1H+/l
>>311 君は、何事にも、もう少し落ち着いたほうが良いと思う。
行動する前に、一拍考える時間を。
316 :
nobodyさん :2006/10/11(水) 17:41:34 ID:WiH1H+/l
>>310 は、ひとことも「おばかさん」なんて書いてないのに
「おばかさんはお前」なんていわれてかわいそう
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>285 285は、使ってみる前に、phpマニュアルを読む、ぐぐってサンプルを
拾ってみる。ぐらをはしような。
>>309 警告メッセージに書かれた文字列から判別するしかないと思う
業務経験のある方に質問したいのですが、 コーティング規約とかによるのかもしれませんが、 PHPにおける、変数名、定数名、クラス名、関数名のつけ方は、 業務ではどのような感じでつけていますか? 頭に大文字、全て小文字、アンダースコアで繋ぐなど。 Hogehoge hogehoge hoge_hoge HogeHoge等・・・
規約によりますね。 アンダースコアって使うのかなあって感じですが。 個人的にはクラス姪は HogeHoge, instantiateしたのは hogeHogeが好きだけど
324 :
309 :2006/10/11(水) 20:52:44 ID:VRU7wb5k
ここのスレはいい人ばかりで大好きです。 ありがとう。
DEFINE_NAME Namespace_Package_ClassName_Etc $variable_name or $variableName $property_name or $propertyName $_private functionName() methodName()
ipアドレスをgethostbyaddrでホスト名に変換させてるんだけど、 100個くらいになるとかなり時間がかかる。 これを改善する方法は無い?
328 :
nobodyさん :2006/10/11(水) 22:14:40 ID:qjuz9ghD
DNSだっけ? それにホスト名はとりにいってるからね
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>327 その場でやらずに事前に変換しとくくらいしかないのでは…
それともローカルでDNSサーバー立ててそいつとプライベートで通信すれば
少しは速度向上できるのかな。
>>328 公式じゃない場合、利用者が送信することを選択しない限り送信されないよ。
334 :
322 :2006/10/11(水) 23:55:58 ID:???
>>323 >>326 どうもありがとうございます。
どのようにつけたらベストなのかわからず迷っていたので、
大変参考になります。ありがとうございます。
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>276-277 とは違う奴だったりしてw
まぁ専ブラでNGワード登録して弾いてるから全く問題なし
むしろ、この人また書き込んでるよ。ご苦労様( ´,_ゝ`)プッ と笑えるなぁ
ここのスレはいい人ばかりで大好きです。 ありがとう。
phpスレなのに「人」だと決め付けてしまうあたり、まだまだですね。
PHP使いは人以下ですか そうですか ありがとう
なんのこっちゃw
ApacheのIndexesみたいに そのフォルダ下のファイルの一覧を表示させるようなPHPスクリプトはありませんか?
スレ違い
>>343 そのくらい自分で作りなさいよ。数行で終わるだろ?
phpスクリプトをWindows上で単体で動作させる(.exe化)ことって出来る??
出来るよ。
>>352 横からだが、面白そうだしちょっとそれ使ってみる
被検索語のランキング表示ができるスクリプトを探しているのですが どなたかご存知ありませんでしょうか。MT用のプラグインはあるみたい ですが、単体で使えるものがてんで見つかりません。。。orz
で、検索にはなにを使ってるんだね?
ぐーぐる
最近オブジェクトPHPはじめたのですが、 スタティック変数にするメリットってたとえばどういうときなんでしょうか? class Hoge { public static $a = 1; } echo Hoge::$a; とかくのと、 class Hoge { public $a = 1; } $hoge = new Hoge; echo $hoge->a; と書くのでは結果的には一緒ですがどう違うのでしょうか?
>>357 $hoge1 = new Hoge;
Hoge::$a = 100;
$hoge2 = new Hoge;
$hoge2->a = 2;
Hoge::$a = 200;
echo $hoge1->a; // 1
echo $hoge2->a; // 2
echo Hoge::a; // 200
インスタンス変数はインスタンスごとにそれぞれの値を与えたい場合に使う。
スタティック変数はインスタンスによらず、クラス全体で共通の値を与えたい場合に使う。
余談だけど、クラス内の変数はなるべくprivateにしような。
>>358 おーわかりやすい説明ありがとうございます。
これでひとつまた賢くなりました。
メンバ変数はprivateがよいのですね?了解しました!
早朝にわざわざレスありがとうございましたm(__)m
ここのスレはいい人ばかりで大好きです。 ありがとう。
362 :
nobodyさん :2006/10/13(金) 11:21:08 ID:7vpqtGwf
よく携帯サイトなどで見かけるのですが mailtoを利用して空メールをさせて 折り返しに登録メールや案内メールを送るのがありますが これは何かメールサーバみたいなものやサーバの設定が必要だと思うのですが そういったものを用意せずに mailtoを利用した感じのものでメアド取得は出来ませんでしょうか?
フォームからGETで配列を渡すのどうすればいいんでしょうか? postなら分かったのですが。
>>362 スレ違い。
しかもメールを送られた時の処理なのに、メールサーバの設定をせずに潜り抜ける意味がわからない。
そういうのは普通/etc/aliasesか.forwardから適当にスクリプトを起動する。
POP見に行くPHPでも実現は出来るけどね
くだらない質問で恐縮なのですが、 swfにxmlを読み込ませる場合、セキュリティの都合上 自ドメインのxmlしか読み込めないらしいのですが 他ドメインのxmlを自サイトのファイルにインクルード して読み込ませることは出来ますか
>>362 通常は受信メール毎にスクリプトを自動実行させるように
sendmail等のサーバー設定を行って組むんだが、
受信BOXのメールを定期的に動かしたスクリプトでPOP受信すれば
若干のタイムラグは発生するが同様のことはできるよ。
370 :
nobodyさん :2006/10/13(金) 13:53:31 ID:wYHWwd6x
プロバイダの関係かなにかで、メーラーの送信ポートを587にしろとメールがきました。 もちろん、メーラーの設定は変えたのですが、 Mac OSXを確認用サーバーに使用しており、phpからのメール送信ができなくなってしまいました。 特にエラーはでないのですが、送信されない状況です。 とりあえず、php.iniの設定で、 smtp_port=の部分を587にしてみましたが、ダメでした。 何か解決策がありましたら、教えてもらえると有り難いです。
>>370 まずはそのプロバイダから来たメールを張りつけろ。
話はそれからだ。
Message Submission?
373 :
nobodyさん :2006/10/13(金) 14:33:47 ID:wYHWwd6x
>>373 smtp認証はしゃべれないはず。
fsockopenでプロトコル手書きするか何か別の手を使うしかないと思う。
phpmailerとか
ここのスレはいい人ばかりで大好きです。 ありがとう。
377 :
nobodyさん :2006/10/13(金) 17:10:43 ID:0s8cJuHn
PHPに限った事ではないんですが、SQLiteとかのデータベースを使う利点を教えてください。 例に出ていたのですが、たとえば図書館の本検索システム。 これはデータベースでやってるところが大多数らしいのですが、データベースを使わずにやっても出来ると思うのですが、どうなのでしょうか? 件数が30万件とかものすごく多くなると速度に差がでてくるのでしょうか? それともサーバーの負荷の問題でしょうか?
378 :
373 :2006/10/13(金) 17:22:09 ID:???
ありがとございます。 全然詳しくないのでアレなんですが、メーラーの設定みたいに、 ポート25を587に変えるだけじゃダメなんですねぇ。
>>378 php.iniのSMTP PORTは、 Windows Onlyだからね。
>>377 30万件のレコードから、検索や抽出、並べ替えなんかをするのを
がんばって作ってみな。
まあ、結果を得られる速度はDBに負けるだろ。
もし対等に渡り合えるのがかけてるんなら、DBを作れたって話だ。
>>377 件数が多い場合や複数条件の組み合わせでやっぱ速度に大きく差が出るね。
速度に差が付く理由の1番大きなところはインデックスの生成だから
そこを自作してやればDBと対等かそれ以上の速度を出すことは可能。
それ以外にもデータ更新時に破損しにくいとかの堅牢性やメンテのしやすさ
なんかも理由には挙がるけど、データがほとんど更新されない静的データなら
どっちでも大した問題にはならないと思う。
検索処理と並行して頻繁に更新されるデータならDBで作ってないとすごく怖い。
383 :
377 :2006/10/13(金) 20:14:05 ID:0s8cJuHn
>>379 >>381 >>382 皆様ありがとうございます。 やはり速度がかなり違うのですね。
データが破損しにくいとは知りませんでした。 どっちにしろ手間かけるくらいならDB使ったほうがいいということですね。
ありがとうございました。
階差は約1時間ですねー
385 :
nobodyさん :2006/10/13(金) 20:46:39 ID:jl8poghH
画像のパスを表示せずに、画像をブラウザに表示させる方法ってあるでしょうか? 画像を右クリックで保存等は出来ても構わないのですが、画像のパスだけは 隠しておきたいのです。 テストではGDを利用して出来たのですが、使うサーバはGDが使えないのです。。 宜しくお願いします。
>>385 >GDを利用して出来た
どうやって??
headerのcontent-typeとreadfileでできるんじゃね
>>385 /img/****.jpg だろうが、 /img.php?****.jpg だろうと
どっちにしても、画像のパスには違いないわけだが…
直リンク対策や、会員限定とかのためにPHPを通して表示したいって事?
何が目的なのか、良く判らないんだけど
GETで投げられた変数をPHPで受け取って使う場合に
http://hoge.com/?id=passwd $id = "";
if(isset($_GET["id"])){ $id = $_GET["id"]; }
としてから受け取っているけど、これって正解ですか?
>>388 俺も初め385の意味がわからなかったが、387を読んで、画像のパスを隠すというのはおそらくサーバ上での絶対パスを隠すという意味ではないかと推測。
で、もしそうなら387でFA。
$arr = array("1"=>array("1"=>array("id"=>5,"gender"=>0,"age"=>14) ,"2"=>array("id"=>33,"gender"=>0,"age"=>23) ,"3"=>array("id"=>143,"gender"=>1,"age"=>43))); これを $ages=array(14,23,43); に加工したいんですが、可能ですか?
--環境(windows XP, postgreSQL8.1.4, php5.1.6)-- phpのinsertでserialの項目を省略して記述したいのですが、省略すると追加できません。 試しにコマンドプロンプトで同じinsert文を記入するとなぜか追加できてしまいます。 『失敗したinsert文』--> insertからbbsidを省略しています create table bbstable ( bbsid serial, name text, title text, coment text, updatetime text); $sql = 'insert into bbstable (name, title, coment, updatetime) values (?, ?, ?, ?)'; $stmt = $dbh->prepare($sql); $flag = $stmt->execute(array($name, $title, $coment, $updatetime)); 『成功したinsert文』--> コマンドプロンプトで実行 insert into bbstable (name, title, coment, updatetime) values (1, 2, 3, 4); ↑これでbbsidに採番された値が入っています 調べると以下のような説明を行っているサイトがあったのですが、まずserial型のデータをselectで取得してから、insertを行っています。 せっかく自動採番の項目なのに変だと思っています。何か思い違いをしているのでしょうか? 『解説にあったサンプルPG』 CREATE TABLE person ( id SERIAL, name TEXT ); new_id = execute("SELECT nextval('person_id_seq')"); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
>>392 foreach($arr[1] as $a) {
$ages[] = $a["age"];
}
冗長だと思う。 $id = isset( $_GET['id'] ) ? $_GET['id'] : '';
397 :
nobodyさん :2006/10/14(土) 02:07:22 ID:HT3mnicj
同じドメインのパスでも、 クッキーの変数ごとに期限を設定できるんでしょうか? すぐに消えるクッキーとずっと残るクッキーを同居できますか?
398 :
397 :2006/10/14(土) 02:19:24 ID:???
別々に設定できるみたいですね。
>>395 短くしたいならこれでいい。
$id = @ $_GET['id'];
PHPってArrayクラスってないの? いまどき count(ary)とかやって要素数得るのダセーとか思うんだけど・・・
401 :
nobodyさん :2006/10/14(土) 08:32:36 ID:+DX4AjuZ
なにがどうダサいのかまず説明しなよ。 C++やJavaみたいにデフォでは満足なリスト機能を持たない言語なら クラスで用意するのも分かるが、LispやPerlやPHPくらいになると むしろクラスで処理するのがナンセンスに感じるけどね。 count($arr)だって実際はプロパティ値返すだけだし。
>>400 お前の存在自体がダサいwwwwwwwwwwwwwwwwwwwww
2バイト文字が含まれている文字列から、 英数字だけをとりだしたいのですが、 いい方法はありますか? はじめは以下のようにやっていたのですが、 文字の組み合わせによって余計な文字が出てくる場合があります。 preg_replace('/[^\w]/', '', $str); mb_eregi_replace を使ってみたのですが、 使い方があっていないのかうまくいきません。
404 :
400 :2006/10/14(土) 09:01:33 ID:???
なんかCで構造体の引数を第一引数に渡してる感がするんだな。 あと文字列もクラスじゃない。 JavaやC#だったら、インテリセンスでメソッドが出てくるが、 PHPだとそうはいかない。それがだるい。
>>404 文字列をわざわざクラス化!?w
だったらC++やJavaで整数がなんでクラスじゃないのか説明してみなよ。
それはダサくないのかね?
407 :
400 :2006/10/14(土) 09:17:31 ID:???
普段、四則演算くらいしかオペレーションがないからだろ。 とにかくインテリセンスがきかんのがうざい。 インテリセンスでクラスのメソッド名が出てきたら、 だいたい該当するのはどれなのかわかる。 PHPは、いちいち調べるのがめんどい。 タイポする可能性も増える。 しかも型もコンパイルないからエラーにならんし。 つーか、こんな言語愛用してるのは糞だ。死ね!
408 :
385 :2006/10/14(土) 09:18:49 ID:53yXNDSa
385です
>>390 さんの通り、サーバに置いてある画像の絶対パスは隠しておきたいのです。
headerのcontent-typeとreadfileでどのようにやるんでしょうか。
よろしければヒントお願いします。
>>400 お前がそう思ってるならそれでいい。
糞だと思うなら使わなきゃいいし、このスレを見る必要もない。
もう来るなよ。
411 :
385 :2006/10/14(土) 09:32:17 ID:53yXNDSa
>>409 すみません。勘違いしてました。
マニュアルちゃんと読みます。
>>408 は無しでお願いします。
>>407 > 普段、四則演算くらいしかオペレーションがないからだろ。
ヘボ確定ww ワロスwww
413 :
400 :2006/10/14(土) 09:47:59 ID:???
>>412 じゃあ、おめぇこそ説明しろ。
文字列や配列がクラスなら、整数もクラス化しておいてもいいんじゃないかという意味を。
てか、C#じゃ整数もクラスだがな。でも、実際四則演算ばかりだから意識もしない。
むしろJavaみたいにプリミティブ型とクラスで分かれてる方が、色々うざい。
>>413 だから来なくていいからwww
誰もお前にPHP使ってくれなんて頼んだ覚えはない。
ここのスレはいい人ばかりで大好きです。 ありがとう。
416 :
400 :2006/10/14(土) 10:02:19 ID:???
なんか、あんま釣れないな・・・ 俺の煽りも今ひとつだったし、そもそもみんなまだ寝てるか。
417 :
nobodyさん :2006/10/14(土) 10:15:23 ID:lXZlr1go
おお、うざきも
ruby使い始めたらintegerやstringやarrayが オブジェクトだと確かに便利だと思った PHPユーザは純OOな言語もやっておくと PHPの良さ/悪さに理解が深まると思う ただPHPはスタートがOO言語じゃないし もう全部関数でいいじゃんみたいな発想から スタートしてるからこれOOじゃねーって言っても 根本の設計思想から違うから仕方がない インテリセンスがきかないってのは eclipseなりZSなりのIDE使えば問題なし あとsplでArrayObjectもIteratorも一応ある
419 :
400 :2006/10/14(土) 11:31:31 ID:???
eclipse + PHPプラグインでインテリ効くのは知ってるよ。 もれが言いたかったのは、クラスだったらオブジェクト変数書いて、 その後に->って書いたらメソッドの候補が出てくるでしょ? でもクラスじゃなかったら、そうはならないから、めんどいってこと。 PHPの良いとこは、O/Rマッパー作らんで良いことかな。 selectの結果が連想配列で返ってくるのは便利。 型もないから、いらんこと気にしなくて良い。
つりじゃないやん マジやん おお、
PHPでもStringクラスやIntegerクラスやArrayクラスを自作すればいいんだ! 演算子が使えないけどな!
ウザイ言語を態々使いたいと思う理由が理解できん
>>419 別にそんなことを質問スレにしにこなくていいよ、っていうのが反感を買った理由なのが理解できてないみたいね。
424 :
nobodyさん :2006/10/14(土) 13:15:25 ID:mRs0+tI4
質問です。 SESSIONとしてObjectをキープしたいときって、session_startの前に そのObjectが書かれたファイルをincludeすればいいのはわかってたんだけど、 そのObject内部にある入れ子のObjectってSESSIONとして保存されてないの?? 今そんなプログラムを作ってて、Object経由で入れ子のObjectの関数呼び出したんだけど、 Call to a member function searchPage() on a non-object とのこと。 原因または対策のわかる方いらっしゃったら教えてください
>>424 そのObjectに格納されてるObjectってのが、実体じゃなくリファレンスを格納してるんなら
当然のようにセッションには記録されないと思います。
リファレンスの本体はデータの外部にあるわけですから。
で、多くの場合、そういう構成になってるのではないでしょうか。
何とかして実体も一緒にセッションに格納されるようにすれば解決するんじゃないのかなぁ。
>>424 serialize unserialize __sleep __wakeup
427 :
nobodyさん :2006/10/14(土) 13:43:45 ID:mRs0+tI4
早速ありがとうございます。 でも実態を入れてるつもりなんですが・・・ object内部のfunctionで function detail($post){ switch($post['dType']){ case 1: $this -> DetailChartObjArr['a'] -> searchPage($a,$b); break; default: $this -> DetailChartObjArr['a'] = new DetailChartObj(); break; } って感じのを作ってて、defaultのすぐ後にprint_rすると、DetailChartObjArr['a']は表示されるんだけど case 1のあとにprint_rさせても何も表示されないし・・・ どうして?
case 1のとき、$this -> DetailChartObjArr['a']は何なの?
429 :
nobodyさん :2006/10/14(土) 14:09:24 ID:mRs0+tI4
入れ子のオブジェクトです。配列に収納してる。 でそのオブジェクトにはsearchPageというfuctionがあってそれを実行させてる。
断片的過ぎてなあ、、、 case 1の時にDetailChartObjArr['a']に 中身があるのは保証されているのかよくわからんし
431 :
nobodyさん :2006/10/14(土) 14:39:10 ID:mRs0+tI4
中身?? 一応defaultのときにnewでObjectが作成されていて、 case 1でそのObject内部のFunctionが実行されてるってことは、 表現できてると思ったんだけど。 その保証されてるか否かってのが、何か気になる。 ひょっとしたらそこにオレの問題点が有るってことかな?
432 :
431 :2006/10/14(土) 14:49:59 ID:mRs0+tI4
ごめんなさい。 DetailChartObjArrの属性をpublicにしてSESSIONを出力してみたら、 とりあえず保存はされてるみたい。 他に何か原因が有るか考えてみます。 お騒がせしました
>>431 そのつくりだと、必ずdefaultがcase 1のまえに実行されるようには見えないから、
>中身があるのは保証されているのかよくわからんし
ということになる。
つくりを見直したほうがいい。
質問です。 ログインシステムで、一人しかログイン出来ないように ログインの重複を拒否したいんですが、どうプログラムを書けばいいんでしょうか?
if( ! $logged){ ログイン処理 $logged=true; }
>>435 loggedという関数がある訳ではなくて、単に変数をフラグのように扱ってるんですよね?
PHPってユーザーの数だけスクリプトが動くから、それでは意味がないと思っていたんですが
PHPの変数ってサーバで共有でしたっけ・・・
もしくはファイルやDBに保存
タイムアウトも忘れずに
セッションやファイルに出力して保存する場合は ログイン時にフラグを上げ、ログアウト時にフラグを下げるんですよね? ブラウザを落とされたときはどう判定すればいいんでしょうか・・・ JSを使えば出来そうな気がするんですが、 PHP単体ではサーバでひとつだけ動く変数やスクリプトを作る機能はないんでしょうか?
すみません、早とちりしてました。 ログイン成功時にセッションを開始して DBに書き込んで次からのログインを防いで ログアウト時にDBのフラグを下げる。 ブラウザを落とされたときのためにタイムアウトを設定して 時間が経てば勝手にDBのフラグを下げるようにすればいいんですね
ポート80をlistenしてソケットつなぎっぱにすれば。 しかし、他のユーザーに「今ログインしてる人がいます」を返すポートが 別に必要になる罠。
2chのようにhttp〜を記述されたら、自動的にリンクされるようにしたいのですが どのようにやれば、いいのでしょうか? preg_matchでやろうとしても、上手くできません。 どうか教えてください。
preg_replace
>>389 $id = $_GET["id"];
なんでこれじゃダメなの?
448 :
441 :2006/10/14(土) 20:28:50 ID:???
ログインした瞬間にブラウザ落とすと タイムアウトまでログイン出来ない糞仕様なPHPが出来てしまいましたorz ログイン人数を2人以上にしなければいいだけなので ユーザーAがログインしてる時にユーザーBがログインした場合、 ユーザーBのログイン・ページ移動を許可、ユーザーAのログインを破棄 というように、後から入ってきたユーザーを優先させればいいと思ったんですが この場合、DBのフラグをどう扱えばいいのかわかりませんorz 登録情報はユーザーAでもユーザーBでも同じですが ログイン時にAとBで、それぞれ別々のIDか何かをセッションで持たせ、DBに格納し ページを移動するたびにセッションとDBを確認するという方法を考えたんですが この方法ではIDに乱数やホスト名を持たせても被ったりして困るのですが 後からログインしたユーザーを有効にする何かいい方法を教えてもらえないでしょうか?
何のためにそんなの作りたいのかいまいち良くわからんけど DBに「ユーザAがログインしている」ってこと書いといて 適時それをチェックして 次に違うユーザが入ったらそれを上書きするって方法じゃだめなん?
データ登録作業中にそんなことされたら、どうなるの?
452 :
626 :2006/10/14(土) 22:05:14 ID:???
>>448 漏れの参加してるプロジェクトも、そんな糞仕様ノシ
てか客の要望でそうなった。いいのかな、これで通して。
適当なファイルをファイルロックすればいいんじゃん。 ファイルロックされてたら、だれかログインしてると。
455 :
nobodyさん :2006/10/15(日) 01:50:31 ID:hzF42wCh
/** * @hoge hugahuga */ のコメントの書き方で、ファイルの作成開始日や、更新日は、 どのようなキーワードで書けばいいですか?
いみわがんね
457 :
455 :2006/10/15(日) 01:57:38 ID:???
例えば、@auther は作者名ですよね。そんな感じで。
auther の検索結果のうち 日本語のページ 約 180,000 件中 1 - 100 件目 (0.06 秒) author の検索結果のうち 日本語のページ 約 30,600,000 件中 1 - 100 件目 (0.26 秒) autherで検索したら、辞典が3番目に出てきたからびびったぜ・・・
*Header: *File: window.C *Auther: Akiko Wada *Date: 1999/12/31 *EndHeader: とかでいいんじゃね? きまりなどない
>>455 ドキュメントの自動生成にどのツールを使うのかによる。
phpDocumentorを使うなら、該当するマニュアルを読むべし。
documentable elementでぐぐれ。
ちなみにファイル作成/更新時刻なんて手書きで書かないでしょ。
そういうのはCVSやSVNなどでキーワードをつけとく。
461 :
455 :2006/10/15(日) 03:56:05 ID:???
作成日や更新日に該当するキーワードは特にないってことですかね。 更新日は手ではあまり書かないですが、 作成開始日は書いておくと、わかりやすかったりするんです。 authorは今気付いてよかった。
>>461 調べてから来いよ。
決まった書き方なんて特にないし、使うツールまたはローカルルール依存。
だいたいコメントなんだから好きなこと書いときゃいいんだよ。
ついでに言っておくと、ファイル作成日時なんて普通は誰も書かないから、完全に好きにしろとしか言いようがない。
カリカリすんな
もう来なくていいですよー(*^0^*)
一般的な英語で言うなら
作成日→created
更新日→modified
だろうけど、
>>460 のいうとおり、svnなりcvsなりを使ってりゃ手で書く用事はないかなあ
466 :
441 :2006/10/15(日) 11:00:23 ID:???
>>449 ユーザーAもユーザーBもログインした端末が違うだけで(仮想化された場合は端末も同じ)
実際は同一人物なので何を持たせればいいのか困ってます。
>>450 ショッピングカートのようなデータの競合が起こらない為の処置なので
誰かに入られるのを防ぐのではなく、
ログインユーザーが2人以上になることのみを防ぐ目的です。
それと、ブラウザを即落とした場合
タイムアウトまで待たないといけないという糞仕様を回避するためでもあります
後からログインしたユーザーをログイン状態にして
すでにログイン状態のユーザーのログインを解除する方法は
ログインごとに連番を付けるとかしかないんでしょうか…
それだとPHPが多重起動したときにすごく不具合が起こりそうで。。
君が言っているは、同じアカウントの重複ログインの話か? それとも別アカウントの話か?
重複ログインじゃないの?
>>466 > ログインユーザーが2人以上になることのみを防ぐ目的です。
だから別アカウントの話でしょ。
誰か1人がログインしてたら他は一切ログインできない糞仕様サイト。
>>446 仕様がアレなのはおいといて、セッションIDで区別すればいいんじゃないの
471 :
441 :2006/10/15(日) 12:25:10 ID:???
同アカウントの重複ログインの話です。
>>469 AとBに分けたのは分かり難かったですね・・・
ユーザーAがパソコンAでログインしてる時に
ユーザーAがパソコンBでログインした場合
ユーザーAのパソコンBからのログインを許可して
ユーザーAのパソコンAのログインを破棄する仕様にしたいのです
↓にあるブログの記事と同じコトなんですが、肝心のロジック部が分からず…orz
ttp://d.hatena.ne.jp/okinaka/20060626
>>471 ちなみにパソコンAで2つウインドウを開いてそれぞれでログインするのは可?
もしくは、パソコンAでログイン→途中のリンクで新規ウインドウを開く、は可?
根本的にWEBアプリケーションで多重ログイン禁止って考え方自体が
ユーザから見て非常に使いにくいのでやめた方がいいと思うよ。
その記事にもあるが
> なお、理想としては、多重ログインでもきちんと処理できるようなアプリケーションの作りにして、
が正しいと思う。
同一PC同一ブラウザでの複数ウインドウでは支障が出ない作りになっているなら、
ログイン時に現在のセッションIDをユーザ情報に格納するようにして、異なるセッションIDで
アクセスしてきたユーザは無効としてログイン前画面に飛ばしてしまうのが手っ取り早いと思う。
>ユーザーAのパソコンBからのログインを許可して >ユーザーAのパソコンAのログインを破棄する仕様にしたいのです ズバリ書いてる通りにすればいいじゃん。 つまり、パソコンAでログイン中にパソコンBでログインしてきたら、 そのログイン処理と同時に、パソコンAのセッション・ファイルを破棄して ログアウト処理もやっちゃえば解決じゃん。
多重ログインされてもいいように、ショッピングカートなんかは できてる。 ショップなんて、商品ごとに新しいページ開けたりするし。 違うパソコンから同時にログインされても困らない仕様が今風。 それがどうなってるかなんてのは、コードを読んでみなって話。
ショッピングカートを例とすると、「購入時に商品があるかチェックする(時間差で他のユーザーが先に購入していれば買えないようにする)」ことで防げるような気がするが。 ショッピングカートでなくても考え方は同じでは?それでは解決されないのかな?
476 :
nobodyさん :2006/10/15(日) 16:28:01 ID:gxN1FoLo
478 :
nobodyさん :2006/10/15(日) 16:44:46 ID:gxN1FoLo
>>477 そうか、GDだと座標計算から始めないといけないから大変だ……。
ありがとうございます!
>>474 >ショップなんて、商品ごとに新しいページ開けたりするし。
アホか。
普通にPHPでセッション機能を作った場合、ブラウザ側で「新しいウインドウで開く」などの
操作を行なった場合は当然新しいウインドウからも同じセッションIDがサーバに送られるっての。
だから新しいページを同一セッションにて開けるのは当たり前。ショップとか関係ない。
スレタイ通り下らない質問で申し訳ないんだが
拾ってきたスクリプトに、ある関数が定義してあって
function hoge ($fuga = "") {
//処理がずらずら
}
って書いてあるんだけど、$fuga = ""って何?
ここって引数を書く場所だから関数を定義する時じゃなくて実行する時に与えるものじゃないの?
http://jp2.php.net/manual/ja/language.functions.php にもそんな記述はないんだけど…
ちなみに実行しても特にエラーとかは吐かないんだけど、どういう意味か教えて下さい
>>482 ごめん、その上の「ユーザー定義関数」ばっか見てたわ
ありがとう
引数値はデフォルトありのとデフォルト無しのを混在させた時の順番を指定が面倒なんだよなあ。 ともあれ頑張れ。
引数は名前付きで指定できたらいいのにねぇ
重複ログインチェック の検索結果のうち 日本語のページ 約 203,000 件中 1 - 50 件目 (0.23 秒)
safe_mode_gidがOffのセーフモード(xrea)で利用しているにも関わらず、
異なった所有者のファイルをunlink()やtouch()できてしまいます。
http://www.php.net/manual/ja/features.safe-mode.functions.php を見ると、
>処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。
>処理を行うディレクトリが実行するスクリプトと同じ UID を有しているかどうかを確認します。
と書いているのですが、セーフモードでも異なった所有者ファイルのunlink()を
可能にするような設定が、safe_mode_gidの他にあるのでしょうか?
ディレクトリの所有者が異なる場合は、
正常に、セーフモードのエラーが出るのですが・・・
>>485 連想配列1個の引数にするんじゃダメなのか?
オーバーロードできたらよかったけど、互換性もあるしね
GD使って画像アップロード機能付きBBSを作っているんですが、 投稿した人のローカルのファイルの置き場を取得する方法ってありますか?
なぜそんなことを
>>492 投稿確認で、ここにあるファイルをうpしますよー って感じで表示したいんで
>>491 以前はブラウザの脆弱性で、JS使えば出来てしまってた気がするけど、今時は無理ではないかと。
つーか、他人に迷惑はかけるなよ。
ファイル名だけで十分だろ パスまで出たら引く
そういやGmailでファイル添付するとき、パスが表示されてるな。 あれって、仁義的にはありなのかな?
>>494 そうなんですか 確かにいろいろとまずそうですね。
>>495 たしかにファイル名だけでいいかも・・。
mixiに画像投稿したときも確か出てたな。 まぁあれはperlだけど。
499 :
491 :2006/10/16(月) 03:45:43 ID:???
遅い時間に即レスthx 違う方法考えてみます。
違う方法だと?
>>488 それがフツー。
非safe_modeだと、ディレクトリに書き込み権限があれば誰でもファイルを作成・削除できる。
safe_modeだと、たとえディレクトリに書き込み権限があっても、ディレクトリのUIDが違うとファイルを作成・削除できない。
502 :
488 :2006/10/16(月) 04:46:15 ID:???
だからその、セーフモードで、 >処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。 とあるのに、異なった所有者のファイルを削除できてしまっている、 ということで・・・
>>496 、
>>498 それはPHPとかPerlとか関係ない。
INPUT TYPE="file"はフォームの標準仕様。
仁義もクソも関係ない。(っていうか「仁義」って言葉の使い方間違えてるが)
これはひどい
ここのスレはいい人ばかりで大好きです。 ありがとう。
>>502 マニュアルが変だね。
でも仮に、異なった所有者のファイルを削除できないとなると、
wwwサーバはユーザディレクトリのファイルを一個も削除できない仕様になる。
safe_modeは共用サーバ用に作られた仕様だからそれはどうかと。
(suEXEC環境とか、root権限持ってる環境の話は置いといて)
>>506 訂正
> wwwサーバはユーザディレクトリのファイルを一個も削除できない仕様になる。
wwwサーバはwwwサーバ自身がユーザディレクトリ内に作ったファイルを一個も削除できない仕様になる。
PHPのマニュアルにはおかしなところが多いよ。
公式マニュアルの癖にコメント欄が付いてて
http://www.php.net/manual/ja/features.safe-mode.functions.php この↑ページのコメント欄にも
「glob()が一覧に載っていないけど、これもsafe_modeで挙動が変わる」
「所有者が他人のディレクトリーをglobしても警告が出ない。(けど、返ってくる一覧はからっぽ)」
とかなんとか、色々書いてあるし。(所有者が他人でだれでも読めるディレクトリで、こうなるんなら問題だと思うが・・・)
>>488 が指摘している問題は、umaskかなんかで適当に解決できると思うけど。
(OSのファイルシステムのパーミッションを適切に使えれば、PHPが制限しなくてもいいような気が)
PHP6からセーフモード廃止だから、セーフモードに頼るのは止めたほうがいい
登録システムでYahooのような個人情報入力後メールが送られてきて そのメールにあるアドレスに飛ぶことで初めて登録が成立するシステムを作りたいんですが どのようすれば作れるのか分かりません。 PHPの処理の流れを教えて貰えないでしょうか
>>510 そのまんまじゃん。
入力されたあとに、仮登録のファイル(仮登録フラグを立てる)を作る。
メール上の個別認識できるURLに飛んできたら、仮登録を本登録に変える。
個別認識部分に、自由設定のIDとか連番を使わないようにね。
質問です。WinXPでXAMPP 1.5.4aを使ってます。 pear upgrade PEARとすると、 permission denied (delete): \xampp\php\pear.bat permission denied (delete): \xampp\php\peardev.bat permission denied (delete): \xampp\php\pecl.bat ERROR: commit failed と言われて、アップデートできません。管理者権限はあるはずなのですが… 何か解決方法はあるでしょうか?
xamppはインストール時にデフォルトの インストールパス(\xamppだったかな)から 変更するとPEARスクリプトファイル内で パスが噛み合ってないところが出てきた記憶がある エラーで出てるパスに実際のファイルがなかったらそういうのかも pear.batの中のパスとかがちゃんと合ってるか確認してみれ
変数の後ろから3文字を取得したい場合、簡単な方法はないでしょうか? 例:$a="abcdefghijk" の場合、 ijk を取得したいです。
516 :
nobodyさん :2006/10/16(月) 18:31:12 ID:ecpKZqzB
くだらん
また分別のない質問者か
519 :
nobodyさん :2006/10/16(月) 19:15:03 ID:4Z1hn7GP
Array(2) { ["Red"] => "Apple", ["Yellow"] => "Banana" } array_pop( )って、こういう配列に対応していないのかなぁ。 ファイルポインタがEOFに当たるまで、配列に格納する処理をしているんだけど 最後のEOFまで配列に格納しちゃうから、この関数で要素を削除しようと思っていたんだけど。
520 :
488 :2006/10/16(月) 19:24:41 ID:???
>>506-508 マニュアルが変だいうことでがってんしました。
実装挙動は別によかったんですけど、
マニュアルと書いてあることと違うようなので、混乱してました。
>>519 $a["aaa"] = "111";
$a["bbb"] = "222";
$a[] = FALSE;
array_pop($a);
var_dump($a);
で結果が
array(2) {
["aaa"]=>
string(3) "111"
["bbb"]=>
string(3) "222"
}
になるんだけど、これじゃいかんのか?
つか、EOFまで配列に入れちゃうロジックも間抜けだと思うけどね。
522 :
nobodyさん :2006/10/16(月) 19:39:11 ID:4Z1hn7GP
>>521 ごめん、EOFなのかは分からないんだけど
[""]=> NULL
になっている。
インデックスが "" で、要素が NULL …。
array_pop( $array ) でvar_dumpすると、
「NULL」が返ってきた。
> 配列 array は、要素一つ分短くなります。
> array が空(または、配列でない)の場合、 NULL が返されます。
配列がおかしいのかな……?
>>522 いや、array_popの戻り値なんて無視でいいだろう、それ。
>>522 arrayが空か配列でない場合、戻り値にNULLが返る。
arrayの最終要素の値がNULLだった場合も当然だがNULLが返る。
525 :
nobodyさん :2006/10/16(月) 19:57:45 ID:4Z1hn7GP
な、なんだって? arrayが空ってのは、引数にある変数の型がArrayでは無い場合のことかと思っていた。 じゃあ、こういう場合はどうしたらよいんだろう……。
>>525 いや、普通にarray_popすりゃいいじゃん。
何でわざわざ戻り値なんて見てるのよ?
527 :
nobodyさん :2006/10/16(月) 20:06:03 ID:4Z1hn7GP
>>525 えっ? 配列が返ってくるのを期待しているのに、NULLが返ってきたら
嫌だと思うでしょう。
とりあえず array_slice( $info, 0, -1 ) でイケました!
528 :
nobodyさん :2006/10/16(月) 20:12:04 ID:cRZeyQ/b
includ pathが複数あったときにユーザ関数がどのファイルで宣言されたか調べる関数はないのでしょうか? 大量のincludファイルがあったときに困っています。 includ pathをgrepしたりしていると時間がかかってしょうがないですし・・。 他人のソースを除いてみて、ユーザ関数がどの外部ファイルに書かれているかわからない場合。 どのような方法が一般的なのでしょうか。 環境としてはサーバにあるファイルを直接viでいじっているような環境なので、eclipse等の便利なツールは使えません。
>>519 unset($array['']);のがよくね?
つーか521の言うように、EOFまわりのロジック見直したほうがいいと思うけど。
>>528 なんでgrepで時間がかかるの?
531 :
nobodyさん :2006/10/16(月) 20:24:16 ID:cRZeyQ/b
>>530 grepが遅いのはハードのせいでしょうか、大量にありますし。
あとはできるだけ鯖に負荷をかけたくないのです。
grepが一般的なのでしょうか?
viでいじれるなら普通にローカルに落として エディタでもなんでも使って見りゃいいし ファイル名でだいたい想像つくだろ
533 :
名無しさん@お腹いっぱい。 :2006/10/16(月) 22:18:14 ID:TSmbOY92
PHP(5.0)でアップローダを作って、ファイルを受け取った時点で、namazuの インデックス作成コマンドをsystem関数で入力するようにしたいんですけど うまくいきません。 コマンドプロンプトでインデックスを作るとき >mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files\Apache Group \Apache2\htdocs\dir\" でよいのですが、 system関数では system("mknmz -U -O C:\namazu\var\namazu\index C:\Program Files\ Apache Group\Apache2\htdocs\dir\"); とすると、mknmzまでしかコマンドを認識していないようなのです。 どなたか正しい指定の仕方をご教示願えませんか?
>>533 バックスラッシュのエスケープしてないからじゃね?
535 :
名無しさん@お腹いっぱい。 :2006/10/16(月) 22:44:40 ID:TSmbOY92
namazuの設定ファイルでの検索対象ファイルのpathを使い "/[Cc]\\|/Program Files/Apache Group/Apache2/htdocs/dir/" としてみたのですが、同じ結果になってしまいました。。。
> system関数では > system("mknmz -U -O C:\namazu\var\namazu\index C:\Program Files\ > Apache Group\Apache2\htdocs\dir\"); > とすると WindowsのPHPはよくしらんのだけど、 これだと「C:\Program」で切れちゃうんでは? $cmd = 'mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files\ Apache Group\Apache2\htdocs\dir\"'; system($cmd); としてもだめなの?
>>527 array_popの戻り値は最初から配列じゃないだろ。
やりたいことはarrayの最後の要素を削りたいって話であって
削った内容がなんであるかなんて気にする必要ないじゃん。
>>529 おまえも分かってない。
538 :
名無しさん@お腹いっぱい。 :2006/10/16(月) 23:19:05 ID:TSmbOY92
>536 ご指摘の通りでした。ありがとうございました。
539 :
512 :2006/10/17(火) 01:52:14 ID:???
>>513 インストールパスに対するヒントをくださってありがとうございます。
結果的には、XAMPPのインストーラー版をダウンロードしなおし、
デフォルトのパスでインストールしたところ、うまくPEARが動くようになりました。
フレームワークやライブラリというものは、 他の方が書いた、よく使うクラスやメソッドという認識であってますか? PHPのフレームワークを使ってみようと思うのですが、 誰でも簡単に使えるものなんでしょうか? Mapleというものをダウンロードして使ってみよウと思ったのですが、 中にPHPのファイルがたくさんあって、どうしたらいいのかわからなくて・・・ あとPEARはライブラリなんでしょうか?
PHPコードに潜む脆弱性をどうチェックすればいいのかわからないのですが、 SQLインジェクション攻撃の仕方とか、XSS攻撃の仕方とか、 詳しく解説されてるサイトなんてないでしょうか? もちろん悪用はせず、自鯖で自分が攻撃者になってチェックをするつもりです。
542 :
nobodyさん :2006/10/17(火) 06:58:24 ID:lz+2vZ2T
544 :
541 :2006/10/17(火) 07:20:30 ID:???
>>543 これは素晴らしいサイトを紹介して下さりありがとうございます。
大変参考になります。
これから早速熟読してまいります。
メールファイルを解体してデータベースに挿入したいんですが、 何か良いpearライブラリとかないでしょうか? 逆(要素からヘッダー作成)なら見つけたんですが、 求めるもの(メールファイルから各種要素、From:など取得) が見つかりません。 自作でやってるんですが、 HTMLメールの処理とか添付ファイルがついてる場合の処理とかが 非常にしんどいです。
>>546 PEARのMail_mimeDecode
548 :
nobodyさん :2006/10/17(火) 11:33:27 ID:G6d4HSq5
特定のRSSファイルをローカルに保存したいのですが。
変数$aがある複数の値(abc, def, ghi)でないと・・・ていう処理を if文で単調に書く以外にシンプルでよい方法はないでしょうか? if($a == "abc" || $b == "def" || $c="ghi"){・・・} より見やすい書き方ないでしょうか。 上ならまだいいんですが、 「ある複数の値」の数が増えてしまうとかなりだるいことになります
配列にしてforeachかな
copyで簡単にできました。
554 :
nobodyさん :2006/10/17(火) 15:51:36 ID:lz+2vZ2T
>>551 配列使え
つforeach
つin_array
つpreg_grep
好きなので。
フォームの submitボタン(type="submit")の値基準で switch()を使って分岐をしようと思ったんですが、 submit ボタンの値って、ボタンの表示名になってしまいますよね。 あれ回避方法ないんでしょうか? submitボタンの値ではなく、 submitボタンの名前で分岐をする必要が出て困ってます。
IEでenterで入力した場合にも送られないので submitの値は使わない がFA
うむ
じゃあ、同一フォーム内のデータを使って 押したボタン毎に複数の処理させたいときはどうすんの?
submitのnameの値変えるかvalueの値を変える
560 :
559 :2006/10/17(火) 17:11:22 ID:???
よく考えたら無理かも
>>556 submit値が無かったら無視かデフォルト処理、でいいじゃん。
>>555 何が困るのか分からない。nameの有無で判定すればよろしい。
564 :
nobodyさん :2006/10/17(火) 17:22:22 ID:lz+2vZ2T
radioなどで選択させればおk。サブミット押すのもラジオ選択するのも変わらんべ。
だから過去レスに答えが書いてあるってば。
566 :
nobodyさん :2006/10/17(火) 18:56:29 ID:Q9ZQ0FiR
"select CULLUM from TABLE where user_no = {$ad} and number & {$_SESSION['ip']}"; というSQLがPHPの中にあって分からないんですが。 & はどんな意味があるんでしょうか? phpでなかったらごめんなさい、sqlの構文かな・・
567 :
名無しさん@お腹いっぱい。 :2006/10/17(火) 19:04:11 ID:kJ5BDveO
>533での質問に関連してもう1つお聞きしたいのですが。 533の問題は解決したのですが、今度は PHPで $command = 'mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files \Apache Group\Apache2\htdocs\インデックス"'; system($command); としたときはうまくいくのですが、 $index ="インデックス"; $command = 'mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files \Apache Group\Apache2\htdocs\$index"'; または\\index,\${index} system($command); などとすると、 "C:\Program Files\・・・\htdocs\$index" という具合に変数のままになってしまいます。 どうか正しい指定の仕方を教えていただけないでしょうか?
>>567 '〜' の間は変数展開はされない。PHPの基礎からやり直してきて。
'で囲んでる変数は展開しないから連結つかえばおk $command = 'mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files \Apache Group\Apache2\htdocs\'.$index.'"';
>>567 $command = "mknmz -U -O C:\namazu\var\namazu\index \"C:\Program Files
\Apache Group\Apache2\htdocs\$index\"";
とする手もあり。"〜" で括って途中の " は \" でエスケープ。
572 :
571 :2006/10/17(火) 19:18:58 ID:???
あ、
>>571 のやり方の場合は
$command = "mknmz -U -O C:\\namazu\\var\\namazu\\index \"C:\Program Files
\\Apache Group\\Apache2\\htdocs\\$index\"";
って途中の \ も全部エスケープしないといかんかも。
そうだね
574 :
nobodyさん :2006/10/17(火) 19:29:44 ID:CZNsLBp9
PHPで画像内の文字を読みたいんですが 何かいいクラスライブラリはないですかね。 phpocrを試してみたんですが学習型の様で…
576 :
名無しさん@お腹いっぱい。 :2006/10/17(火) 20:36:50 ID:kJ5BDveO
>567ですが、みなさまに教えていただいた方法を試してみましたが、570さん の1つ目の方法以外はなぜかコマンドが通りませんでした。 それと、 $cmd = sprintf('mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files \Apache Group\Apache2\htdocs\%s"', $index); に続けて、変数に日本語を格納して、$indexの下にもう1階層ディレクトリを 指定したいのですが(\htdocs\$index\$index2)、どのようにすれば良いのでしょうか?
$cmd = sprintf('mknmz -U -O C:\namazu\var\namazu\index "C:\Program Files \Apache Group\Apache2\htdocs\%s\%s"', $index, $index2); こうしたいっていう意味かな?
>>576 せっかくヒントや関数を教えてもらったんだから
1度はその内容をマニュアルで確認してみようよ。
言われたとおりにしか書けないなんてちょっと最低だよ?
580 :
nobodyさん :2006/10/17(火) 21:27:46 ID:rN63+8fU
たしかにいくら下スレとはいえ、なめてるな。 自習して、悩みに悩んだ上で聞けって話だ。
581 :
名無しさん@お腹いっぱい。 :2006/10/17(火) 21:35:58 ID:kJ5BDveO
文字列指定のところで、時間を費やしてもなかなかうまくいかなか ったので、ついつい見直しを怠ったり、すぐに質問をするといったことを してしまいました。もうしわけないです。
582 :
567 :2006/10/17(火) 23:19:30 ID:???
遅い
>>580 自習して悩みに悩んだ上で聞くような人・・
それは、質問文書くためにあちこち検索して調べてたら自己解決しちゃうような人ですね。
585 :
名無しさん@お腹いっぱい。 :2006/10/17(火) 23:45:01 ID:kJ5BDveO
>582 進まないので焦って軽薄なことをしましたが、そんな逆ギレくん ではありません。
質問させてください。 入力された値が正しいURLじゃなかったらエラーを出したいのですがどうしたらいいでしょうか? ちなみに preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $url) これだとうまくいきませんでした。 よろしくお願いします。
>>586 これでどういう場合にうまくいかなかった?
>>588 >>586 の正規表現はそのページにある「実用版」の内容だよ。
> さて,ここまで長々と書いてきましたが,正確に正規表現を書くことをあきらめて,
> もっと簡単でいいやという人のための http URL の正規表現が以下になります.
> s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+
これ↑
590 :
nobodyさん :2006/10/18(水) 12:52:03 ID:kRDgnrct
WinXPにphp4.4.4をインストールしたのですがphp.iniに Mysqlを使うために設定するextensionにdllが載っておりませんでした。 このバージョンでは使えないのでしょうか? また使う方法があればご教授ねがいます。
>>586 そもそも『正しいURL』の定義は何だ?
>>586 ()をエスケープしてないから正規表現エンジンが混乱している
(*****()****)
>>592 マジで? (**[**()**]**)なのに?
俺これでURL自動リンク作って普通に動いてるけど…
/s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/
>>592 . ィ
.._ .......、._ _ /:/l!
:~""''.>゙' "~ ,、、''‐'、| _
゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':,
``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ
" .!-'",/ `'-‐'') /\ `/ でノ-〈
.-''~ >'゙:: ‐'"゙./ ヽ.,' ~ /
//::::: ', / ,:'゙
空メールをトリガーにして処理をしています。 その処理の中ではstdinを読んで メールの送信元など、メールの内容を把握しようと思っています。 ・送信元、送信先の取得 ・メールのタイトルや本文中に”ほげほげ”の文字が含まれているかチェック 等をやりたいのですが、どのように記述すればよろしいでしょうか? よろしくお願いします。
596 :
軟式PHP :2006/10/18(水) 15:45:18 ID:???
>>595 「処理をしています」何の処理をしているんでつか?
どこまで出来ていて、何が判らないのでつか?
>・送信元、送信先の取得
>・メールのタイトルや本文中に”ほげほげ”の文字が含まれているかチェック
ソレだけだったら、どちらも簡単な正規表現で可能でつ。
ほげほげがある時点で、空メールじゃないじゃん
600 :
nobodyさん :2006/10/18(水) 19:06:45 ID:kRDgnrct
requireはphpファイルしかいけないのでしょうか? htmlファイルも読み込んで問題ありますでしょうか?
602 :
600 :2006/10/18(水) 19:13:16 ID:kRDgnrct
ありがとうございます。おかげさまで解決できました。
603 :
nobodyさん :2006/10/18(水) 19:30:48 ID:kRDgnrct
たびたびで失礼します。requireしたphpファイルなんですが、ファイル名をアドレスバーに直で 入力するとアクセスされてしまいます。 htaccess以外にこの行為を制限したいのですが何かヒントをいただけませんでしょうか? ためしてみたのがPOSTとGET、リファラチェックでやってみましたが、 requireが読み込みませんでした。
アクセスされたくないならドキュメントルート外に置けば?
>>603 document_root より上に置く
606 :
nobodyさん :2006/10/18(水) 20:03:09 ID:V2QN5Ppq
PHPを制すれば、女も金もウハウハになると実感しました PHPを学べるPC学校教えて下さい(神奈川県内、できれば横浜市内)
$_SERVERのscript_nameとかpathとか取って 自分と名前が違ったら拒否するとかいうのもありかね?
609 :
nobodyさん :2006/10/18(水) 20:19:30 ID:GXIHNsCX
画像アップローダーを作成しているのですが 画像をリサイズする際にJPEG, PNGは正常にリサイズ出来ますが アニメGIFのリサイズはどの様に行えばよいでしょうか? 色々なクラスライブラリを使用してみましたが アニメGIFをリサイズするとリサイズはされますが静止画のGIF画像 に変換されてしまいます。
611 :
606 :2006/10/18(水) 20:56:19 ID:V2QN5Ppq
KENかWAVEにしよ でも、授業料たけーーーーーーーーーーーーーー アルバイトして貯めないと PHP学ぶのに20万〜40万ぐらいだった、どこも
俺はPHPはマニュアル読むだけで行けたなあ… ずぶの素人さんでも良い本が1冊2冊あればそれで何とかなると思うが。
プログラミングの基礎があればマニュアルとGoogleでどうにかなるけど、 基礎がないとphp-usersの某氏のようになる
614 :
606 :2006/10/18(水) 21:36:20 ID:V2QN5Ppq
>>612 まじかよ
ホームページ作成数30個ぐらい
ブログ作成数5個ぐらい
動画編集、画像編集、めちゃくちゃ経験あり
2ちゃん暦プロ並ちょい下
これぐらいのPC暦だが、自宅サーバ、CGI、PHP、さっぱりわからない
参考までにどんなところが分からないのか教えてくれ
僕はコードをどのように書くと、いかに効率良く、そして最終的に どんなふうに動作するのかが予想できない。 だから設計するときも、まるで数学の方程式を解いているみたいだ。 まあ趣味(自分のウェブサイトで使う)でやっている程度だし、コーディングが気持悪くても 人にソースはみせないし、動けばいいかな、と。
617 :
606 :2006/10/18(水) 22:11:33 ID:V2QN5Ppq
>>615 今、話題かどうかわからないけど、俺の中では超話題の
ブログのRSS配信、いろいろ探してみたり検索してみたけど
ジャバスプリクト?っていうのか、あれで他人のブログのRSSを取得して
自分のブログで配信するのは、できるんだが、1つ欠点がある
続く・・・
君の場合PHPよりもまず日本語が
619 :
606 :2006/10/18(水) 22:15:58 ID:V2QN5Ppq
続いた・・・ ジャバスプリクトでやると、検索エンジンから検索されない 例)他人のブログが「ゆうこりんのスカトロプレイ激写」 という記事を更新したとする 俺のブログでも、どこどこのサイトが何時何分に「ゆうこりんのスカトロプレイ激写」 という記事が投稿されましたと表示される のだが・・・・・・・・・・・・・・・・ それが、検索エンジンでは引っかからないんだ 続く・・・・・・・・・・・
620 :
606 :2006/10/18(水) 22:20:02 ID:V2QN5Ppq
続いた・・・・・・・・・・・・・ そこで俺は調べまくった、、、、、何日もかけてというか、1日で調べた ジャバスプリクトだと、検索されないが、、、 PHPだと検索せれるということなんだ、 例)他人のブログが「ゆうこりんのスカトロプレイ激写」 という記事を更新したとする 俺のブログでも、どこどこのサイトが何時何分に「ゆうこりんのスカトロプレイ激写」 という記事が投稿されましたと表示される ここまでは同じだが、ここからがすごい ヤフーやグーグルで「ゆうこりんのスカトロプレイ激写」というキーワードが 俺のブログから検索されるのだ なので、俺はRSS配信のPHP版の無料ソフトやら、有料ソフトを探しまくった 続く・・・・
わざわざjsで取得して公開する意味が解らん。
RSS PINGのホストをやりたい と言うことか? やり方は知らん、興味も無い
623 :
606 :2006/10/18(水) 22:25:56 ID:V2QN5Ppq
探しまくったのだが、有料ソフトは0だった
無料ソフトは3つあったが、1つは海外ので、英語不明であきらめた
そして、残りの2つから1つを選びだした
そのソフト名は
ごちゃまぜRSSリーダーforPHP(UNIX / インターネット&通信)
http://www.vector.co.jp/soft/unix/net/se334908.html ってやつだ、ダウンロードしてみた
拡張子が「.dat」なんだこれ?と思ったが、グーグルで検索したら
プログラムを選択して開くでワードパットやら、メモ帳で開けることがわかった
俺にとってはかなりの成長だ、そこに、取得したいRSSのアドレスを打ち込んだ
ここまでは、順調だったのだが
とんでもないことがおきた
続く・・・・・・・・・・・・・・・・
荒らしか?うぜぇ・・・
625 :
606 :2006/10/18(水) 22:30:03 ID:V2QN5Ppq
続いた・・・・・ もう1つファイルがある 「.php]と書いてある なんじゃこれは? これをフォルダごとアップロードしてとか書いてあるけど フォ、フォルダごとアップロードって聞いたことないぞ? どうするんだ? phpさっぱりわからんということで、、、 この板にたどり着いたというわけだ 終わった・・・・・・・・・・・・・・
ジャバスプリクト (sprict?) ってのが、ネタなのか素なのか わからないけど面白い。
アーティストの名前みたいだなジャバスプリクト
ECMA262って書けばTypoしようがないのにね
629 :
名無しさん@お腹いっぱい。 :2006/10/18(水) 22:54:37 ID:hZ8NwhMG
以下のようにして、htmlを生成しているのですが、 $documents1="500文字程の文章"; $documents2 = fopen("$filename.html","w"); fwrite($documents2,"<html><head></head><body>$documents1</body></html>"); fclose($documents2); でも、これだと少々見にくいので、 htmlタグの部分を <html><head></head><body><font size="4">$documents1</font></body></html> といったふうにすると、どうも意図したとおりになりません。 こういった場合、どのようにすれば、レイアウトを整えられるでしょうか? お教えいただきたいのですが。。。
630 :
nobodyさん :2006/10/18(水) 22:56:00 ID:X4KrD1CY
'2006-10-18 00:00:00' のような 'YYYY-mm-dd H:i:s' フォーマットの時刻を UNIXタイムに変換するのはどの関数で出来るのでしょうか? time()とかdate()も参照してみたのですが。 恐縮ですがお願いします。
意図する結果と実際の結果を言ってくれないと分かるわけないと思うんだけど。 てかそれだとパースエラー出る気がするけど
>>614 > ホームページ作成数30個ぐらい
> ブログ作成数5個ぐらい
> 動画編集、画像編集、めちゃくちゃ経験あり
> 2ちゃん暦プロ並ちょい下
茶ぁ吹いた。
こんなこと言ったら何だけど、
君はインターネットそものの知識がきょうびの小学生以下だから
まずはその辺のパソコン教室のインターネット初級コースからやり直した方がいい。
ホームページとかブログとか自分では分かってるつもりかも知れんが
それこっちから見ると全然分かってないレベルだから。
この様子じゃあ動画とか画像の編集もたかが知れてるわ。
PHPとかCGIとか言い出すのも15年は早い。
あと2chもてんで理解できてねぇから最低でもあと半年ほどロムれ。
ネタになんとかクマースプリクト
>>630 strtotimeでできるか分かんね
フォーマット決まってるんならstrptimeのほうがいいのかも
638 :
nobodyさん :2006/10/18(水) 23:19:35 ID:X4KrD1CY
639 :
606 :2006/10/18(水) 23:23:59 ID:V2QN5Ppq
>>635 いや、インタネット初級コースなんか、全然だめ
たぶん、無料パソコンスクールとかで
じいちゃん、ばあちゃんとかを教えてる先生より
俺のほうが、たぶん詳しい
友達で俺にPCスキル勝つやつはいないよ
ただあれだ、、、この板にいるやつからみたら
俺は子供同然、赤ちゃん以下のスキルしかないよ
640 :
606 :2006/10/18(水) 23:25:56 ID:V2QN5Ppq
あと >あと2chもてんで理解できてねぇから最低でもあと半年ほどロムれ。 大丈夫だ、俺はニートで1日15時間ぐらい2ちゃんにいるから 今日はFFのバージョンアップだから、そっちの情報集めと睡眠とらないといけないから あまり2ちゃんにいれないけど
641 :
名無しさん@お腹いっぱい。 :2006/10/18(水) 23:30:03 ID:hZ8NwhMG
>634 「\"」にした? ・・・すいません。未熟者なので。 どういった意味でしょうか?
おまえ面白いからおまえ専用スレ立ててそこでやれ
643 :
606 :2006/10/18(水) 23:33:14 ID:V2QN5Ppq
とりあえずだ、 すごいやつは、本とかネットで調べて PHP理解出来るやつは、すごいと思うけど 俺の頭脳じゃ、無理だわ これやりたいと思ったら、どうしてもやらないとダメなんだわ 好奇心旺盛なのは、まぁいいことだ なので、しょうがないから、アルバイトして金貯めて PHPの学校いくようにするは、30万ぐらいだけど、しょうがない
>>641 fwrite($documents2,"<html><head></head><body><font size=\"4\">$documents1</font></body></html>");
こう言う風になってるかって事
君の説明はどう言う風に出力したいのかよく分からない。
期待している結果はどんな内容なの?
>>639 よし分かった、バイトでばあちゃんとかを教えてた俺がはっきり言ってやろう。
お前は俺の生徒だったじいちゃんばあちゃんの足下にも及ばん。
647 :
名無しさん@お腹いっぱい。 :2006/10/19(木) 00:22:01 ID:hyorX1t2
>645 具体性に欠ける質問をしてすいません。 それと、教えていただいた方法でエラーにならず、文字を大きくして htmlに書き出すことができました。ありがとうございます。
>>640 とりあえず数字を半角で打てるようになろうな
個性を潰すような押し付け教育はいくない
それを学校の先生にいえ
質問させて下さい。 WinXP Sp2 Apache2.054 PHP 5.1.5 上記の環境で運用しています。 PHPのfunctionの呼び出し行を取得する関数や、仕組みのようなものは ありますでしょうか? 少し大きめのプログラムで同じfunctionを多くの場所から呼び出しているのですが 特定の条件時にそのfunctionを呼び出している行を知りたいのです。 デバック方法や、デバック関数等で検索したのですが、開発環境ソフトのインストールし ブレークポイントを設定するような方法以外見つかりませんでした。 もしよろしければお力添えをして頂けませんでしょうか。 よろしくお願い致します。
夜分にすみません。リモートサーバにあるファイルのHTTPレスポンスヘッダを 取得するにはどうしたらいいでしょうか? モジュール版のApacheじゃないので apache_ほにゃらにゃ関数は使えません。ご教示お願いいたします。
>>651 debug_backtrace()をその関数に仕込んどけばいいんじゃないの?
戻り値の配列のlineキーの値が呼び出し元の行数になるよ。
<?php
function a() {
$debug = debug_backtrace();
echo $debug[0]['line']."\n";
}
a();
a();
a();
?>
結果:
6
7
8
>>651 各functionの直後にechoでユニークな値を出すようにしとく。
●例
function hoge() { 〜〜〜 };
hoge();
echo "a";
hoge();
echo "b";
hoge();
echo "c";
定数__LINE__があるやん?
>>656 それ、関数側に仕込むと関数の定義位置が出ちゃうだろ。
658 :
nobodyさん :2006/10/19(木) 06:23:08 ID:zWYhlPAk
ソースじゃなくてほんと下質かもしれない質問ですが、 PHP型のブログってどういうメリット・特徴があるのでしょうか? 機能的な面じゃなくて「なぜPHPなのか?」と言うことが気になってきました。 と言うのも自分でPHPを使い、簡易ブログを作っているのですが、 最近MTのフリー版を落として設置したところ、ページの生成など CGI型の方が向いているのではないか?っと思い、悩んでいる次第です。
引数で渡せって話かな。 スタックトレースならAdvanced PHP Debuggerってのがある。
>>658 PHP型とCGI型の定義が不明なので、
PHPをCGIモードで使えば〜としか申し上げられない次第です。
CGI型とPHP型って一体何よ。
>>652 CURLを-Iオプション付けて呼び出せば?
>>658 ?PHPとPerlの比較の話をしてるの??
ちなみにPHPのCGIっていうのがあるのは知ってる?
あと、CGIでないPerlっていうのがあるのも。
>>655 え? 本気だけど、これで何か問題ある??
あくまでデバッグ用に任意の行を特定するだけだったら、
>>654 で示した方法が一番簡単だと思うが・・・。(要するにechoデバッグの一種)
>>651 は「特定の条件時」と言っているから、echoを差し込むべき数も少ないだろうし。
突っ込みどころ満載なんだが、とりあえず・・
>>653 が簡単だろ!
666 :
nobodyさん :2006/10/19(木) 07:16:42 ID:2ix5xPYO
「志」の入ってる文字列の検索時にヒットしないのでPOSTされた文字をダンプすると 「獅、」に化けてました。。 DBに入れると正しく「志」で反映されてる事は確認しました。 mb_regex_encoding('SJIS-win'); mb_internal_encoding('SJIS-win'); mb_http_output('pass'); と設定してます。 念のためにPOSTされたものは全て mb_convert_variables('SJIS-win', 'UTF-8,eucJP-win,SJIS-win', $_POST); で'SJIS-win'に変換してます。 3日ハマってます。。解決方法あれば教えてください。 宜しくお願い致します。
あと半年くらいはまれば分かるんじゃないかな
>>664 >>651 の言っている「特定の条件時」ってのは、原因不明の症状が出てるから
それが発生したときにどっから呼び出されてるのか知りたい、って話かと。
だからechoを差し込むべき場所は全く特定されておらず、呼び出し元全部に
仕込まないといけなくて、それがあまりにも多いもんだから困ってる、という話でしょ。
669 :
nobodyさん :2006/10/19(木) 08:20:59 ID:JzmElHR8
文字コードについて質問です。 Apache 2.2.3 MySQL 5.0.24a PHP 5.1.6 phpMyAdmin 2.9.0.1 で開発してます。 phpMyAdminで追加すると日本語が文字化けするのですがどこを設定すればいいでしょうか。
>>658 本当にPHPでBlogを作れるレベルならそんな質問しないよ。
PHP型っていうのが単にPHPをさして、
CGI型というのがPerlをさしていると前提して話を進める。
(他の人が指摘してるのは、PHPもCGIとして動作できるということ)
PerlもPHPも同じプログラム言語。
PHPはWeb特化という位置づけだけど、基本的にできることはほぼ同じ。
MovableTypeが"たまたま"Perlで書かれているだけで、
作ろうと思えば、他の言語でも(もちろんPHPでも)作ることはできる。
できるできないの話だとそれこそsh/CGIとかでもできるって話になっちゃうな。
問題は「向いてるか向いていないか」だが、そもそも
>>658 が何を根拠に
CGI(Perl?)の方が向いてるなどと思ったか、だと思う。
個人的意見で言えば特にPHPでやるメリットや特徴があるわけではないが、
Perlと比べて遜色があるわけでもなく、どっちも同じ程度じゃないの?ってとこ。
別にblog程度でPHP/Perlに向き不向きがあるとは思えんなー。
ページ生成とかは出力バッファの取り込みができるPHPの方が楽な面はあるかな。
672 :
658 :2006/10/19(木) 09:55:25 ID:???
>>670-671 向いているか向いていないかを前提とした質問です。
あと、CGI=Perlです。CGIはPerl以外でもあるのは知ってますが、とりあえず。
それでなぜ
>>658 のような質問をしたのかというと、MTの場合、表示ページを
HTMLで書き出しますよね?PHPでもHTMLを書き出すことが出来ますが、
他のPHP型ブログを見てもだいたいはDBと連携してDB内を読む仕様なんです。
当然HTMLで書き出した方がSEO的にも良いし、複数ブログ作成の時も
1つのプログラムだけで複数のブログを作ることが出来るので、汎用性も高い。
そんなこんなを考えると、PHPで作る事でCGI(Perl)よりもメリットがあるのかな?
っと思った次第です。自分のPHP知識レベルも低いもので。。
>>672 向いてるか向いてないかなんて、
>>670 で答えでてるじゃん。
>PHPはWeb特化という位置づけだけど、基本的にできることはほぼ同じ。
できることが同じということは、
同じ様にできる=どっちもどっちってことでしょ?
>>671 も
>個人的意見で言えば特にPHPでやるメリットや特徴があるわけではないが、
>Perlと比べて遜色があるわけでもなく、どっちも同じ程度じゃないの?
と言っている。
>他のPHP型ブログを見てもだいたいはDBと連携してDB内を読む仕様なんです。
それは作ってる人が、そういう作り方のほうが慣れてたり、
そっちのほうが作者的にはいいと思ってるから、そういう設計にしてるだけ。
なぜPHPで作ってるかという最大の理由は、
あなたがPHPでCMS作ってるように、その人にとって得意言語だからなはず。
と、ここまでいっといてなんだけど、
Perlで作る最大のメリットは、Perlに対応してるサーバが圧倒的に多いこと。
>>672 > 当然HTMLで書き出した方がSEO的にも良いし、
そういう意味では、動的生成でも.htmlの拡張子が(設定次第で)使えるApacheモジュールの方が有利だよ。
.htmlの拡張子を使いつつ、静的書き出しと動的生成のどちらでも自由に選択ができる。
あと、1つのプログラムで複数blog生成の話は意味不明。
DBにデータを保持する方式でも作ろうと思えば簡単に複数対応できると思うけど。
動的生成もDB保持も単にユーザニーズの問題なだけじゃないの?
どっちもPerlだからとかPHPだからとかCGIだからとかいう問題じゃないでしょ。
唯一、SEO対策としての.html拡張子の件だけは、CGIでこれを動的生成にするような真似は
ふつーやらない、ってくらいかな。
でも昨今のgoogle辺りじゃ、拡張子はあまり区別しない傾向が強くなってきてると思うけどね。
パラメータ付加の有無くらいじゃないの?影響するのって。
静的HTMLを書き出すなら同じようにできるし 動的表示ならPHPのがどう考えても軽いでしょ phpじゃスタティックなHTMLは吐けないと思ってんのかな? googlebotは以前は負荷を考慮して動的ページのクロール頻度は 控えめにしてたらしいけど
変らないものなら、静的ページを生成するようにしておけばいいんだよ。
「CGIはPerl以外でもあるのは知ってますが、とりあえず。」 読む人を混乱させたのがわからないのだろうか? それがわかっていて、それでもなお、「とりあえず」と、PerlのことをCGIと呼び続ける理由が理解できない。
おまえら釣られすぎ
なんでCGIの事について書くと「それはPerlか?」とかわざわざ聞くやついるの? PHP使いの俺には理解出来ない。一般的にはperl=cgiと思ってもいいんじゃねぇ?
最近流行りのRubyとかは?
まあ「PHP使い」にも二種類いて、 マニュアルをちゃんと読んだことのある「PHP使い」は CGI≠Perl ってのが理解できるんだけど 読んだこと無い「PHP使い」は、「なんでいちいち聞くんだろう」と思うと。 けっこうマニュアルのさいしょのほうに書いてあるんだけどね
PHP「型」とPerl「型」みたいな聞き方だとさらに迷うな…
それに
>>672 の言い分からすると、実際はPerlかどうかは関係なくて、
本当にSAPIとCGIとでどっちがblog向きなのかを問うてるようにも思える。
あとblogを作成する際にRDBMSを用いるべきかどうか、だよね。
ただ、個人的意見を言わせてもらえれば、PerlでDBを使ってないのは
単に標準のPerlではDBにアクセスするのが面倒くさいでだからだと思う。
これが簡単ならPerlでだってDBにデータ突っ込んでるよ。
DBにデータを入れることと動的生成は全く関係ないことは質問者も分かってるよな?
・.html拡張子のまま動的生成もSAPIのPHPなら容易にできる
・静的HTMLへの吐き出しも出力バッファ関数を持つPHPの方が簡単
・安全確実なDBでのデータ保持もPHPなら簡単
Perlを選択するのは普及率と作成者の慣れ以外に理由はあまり無いと思う。
684 :
nobodyさん :2006/10/19(木) 12:40:24 ID:JzmElHR8
話が移植の件になってますが 669の件です DBの照合順序 を utf8_general_ci に設定することで解決できました。
まあCGIだったら「動的に生成させたくない」(無駄に負荷かかるので)っていう 考えは必ず入ってくるだろうね、設計する時に。だから静的書き出ししたくなる。 PHPのSAPIだったら設計する時にそういうのを気にする人はたぶん少ない。 だから動的に出すのが多いと。
DB使わないのも必ずと言っていいほど静的に吐き出すのも メリットじゃなく単なる制約によるものだよね >CGI/Perl
687 :
652 :2006/10/19(木) 13:18:00 ID:???
>>662 お答えありがとうございます。借りているサーバにそれが
インストールされているようですのでこれから勉強します。
688 :
nobodyさん :2006/10/19(木) 13:58:18 ID:WNEBG+gg
バイナリー形式で送られてきた画像をphpで表示したいのですがどのような方法があるでしょうか? Content-Type: image/形式(jpeg等) echo $file; とやっても出来ません
>>688 > バイナリー形式で送られてきた
ってのは具体的にどっからどういう風に送られてきたものなの?
691 :
nobodyさん :2006/10/19(木) 18:04:54 ID:RDYn6fyD
phpスクリプトの配布を予定しているのですが、 文字コードは何で保存しておくべきでしょうか? たいていの配布サイトを覗いてみたのですが、 明確にされておりませんでした。 それぞれの文字コードで別々に公開するのがベターでしょうか?
やっぱりUTF-8じゃないの? (個人的にはあまりすきじゃないんだが) Unicode対応しておけば朝鮮人とか中国人にも使ってもらえるわけだしし。
ISO-8859-1 マルチバイトが入るならUTF-8
俺は朝鮮人や中国人には使ってもらいたくないので、EUC-JPでいくぜ。
UTF-8はアクセス激しいとこだと転送量が損だよね?
その転送量の問題ってのは 中国人とか朝鮮人が大勢アクセスしてくるから損って言う意味? それとも一文字三バイトだから、って話?
普通に考えれば後者だと思うけど、 テキストの転送量が問題になるようなサーバなんてこの世にあるのか?w
あ、後者の意味ね 2chはUTF-8じゃないけど転送量のことで閉鎖しかけたじゃん それは確かgzipで解決したけど転送量が問題になることは無きにしも非ず まぁ普通は気にしないか
配列を分割するいい方法ありませんか? たとえば、 ほげほげtoはげはげ で to以前と以後を分けたいんです。
>>699 それは配列なのか?文字列なのか?どっちだこのヤロー
>>699 配列を? どう見てもその例は配列には見えんが…。
それとも配列に、か?
ありがとうございます。 いろんな方にさわってもらいたいのでEUC-JPとShift-JSとUTF-8で それぞれ用意して配布しようと思います。
704 :
nobodyさん :2006/10/19(木) 19:39:29 ID:RDYn6fyD
2chに書き込むとき、クッキーがないときに表示される画面がありますよね。 このときデータを改ざんして、『名無し』『sage』『あああ』を書き換えることに対しては 対策されているかと思います。 hiddenから受け取ったデータをそのままログに書き込んでいるとは思えないのですが、 どのようにしてデータを受け渡して書き込んでいるか推測してください。 <form method=POST action="../test/bbs.cgi"> <input type=hidden name=subject value=""> <input TYPE=hidden NAME=FROM value="名無し"> <input TYPE=hidden NAME=mail value="sage"> <input type=hidden name=MESSAGE value="あああ"> </ul> <input type=hidden name=bbs value=php> <input type=hidden name=time value=1161249710> <input type=hidden name=key value=1094842959> <input type=hidden name="hana" value="mogera"> <input type=submit value="上記全てを承諾して書き込む" name="submit"> </form>
705 :
704 :2006/10/19(木) 19:42:30 ID:RDYn6fyD
>>703 のコードは書込み確認画面よりFORM部分のみ抜粋いたしました。
2chなのでperlスクリプトに埋め込まれたものですが、
phpとしてお考えいただけると助かります。
706 :
nobodyさん :2006/10/19(木) 19:45:08 ID:D9BD7psJ
>>669 $a = "ほげほげtoはげはげ";
$b = explode("to",$a);
$b[0]は、ほげほげ
$b[1]は、はげはげ
>>704 推測して下さいってなんだよ
自分でソース探せ馬鹿野郎
>>704 セッション使ってるんじゃないかな?
あ、でもhiddenを使う意味がなくなるか。
小文字の片仮名を大文字にしたいのですがまとめてする方法はないでしょうか? 今はereg_replaceでァからォまで1行ずつ書いているんですけど・・
$result = str_replace(array('ぁ','ぃ','ぅ','ぇ','ぉ','ゎ'), array('あ','い','う','え','お','わ'), $str); あっ片仮名か。
712 :
nobodyさん :2006/10/19(木) 20:56:06 ID:N/IEl6YX
714 :
nobodyさん :2006/10/19(木) 21:26:43 ID:RDYn6fyD
<form action="" method="post"> なまえ <input type="text" name="name"> <input type="submit"> </form> 上記のコードをブラウザから実行して、名前を入力した場合、 値は$_POST['name']でとれますが、 この値はクライアントに保存されているのでしょうか? それともサーバに保存されているのでしょうか?
電子の粒としてWebを彷徨ってる
どこにも保存されませんよ。 鏡を見ながら、おでこにマジックでメモッて保存してください。
保存されているかどうか、「戻る」を実行してみなよ。
718 :
nobodyさん :2006/10/19(木) 23:23:00 ID:34r0Z/Nk
エクステンションをコンパイルってどういうことでしょうか? レンタルサーバなんですが。
カモーンえすぱああああぁぁぁぁあ!!
722 :
nobodyさん :2006/10/20(金) 06:29:42 ID:nmqka2TX
□example ├□foo └index.php □はフォルダです。 index.php内に以下のようにしてもfoo内のファイル名の取得ができずに、 exampleフォルダ内のファイル名が取得されてしまいます。 どこが間違っているのでしょうか? $dir = opendir("foo"); while(($fname = readdir($dir)) !== false){ 〜〜 }
すみません、ちょっと教えてください。 $x = (0.1 + 0.7) * 10; echo $x."\n"; echo (int)$x."\n"; これを実行すると、 8 7 と表示されますが、なぜ最初に「8」が表示されるのか、理由がよくわかりません。 なぜでしょうか。 (例えばJavaScriptで同じ計算をすると「8」にはなりません)
初心者なんでわからんけど 0.8*10で8だとおかしいんでしょうか? 俺的には7が返ってくるほうが理由わかりません。
俺も「7」になるほうがおかしいと思うが。
浮動小数点の問題でしょ。 0.1とか0.7とかは正確に二進数浮動小数点では表現できないから誤差が出る。 PHPやPerlみたいに数値を文字でも表現するような言語では そこで違った動きになるんじゃないかな。
728 :
722 :2006/10/20(金) 11:58:57 ID:+hAC6M3g
外出先からなのでIDが変わっています。
>>723 フォルダの属性はexample、foo共に777ですができません。
>>724 727の言うように「誤差は出るものである」って点はもっともなんだけど、ちょっと気になったので計算してみた。
IEEEのdoubleのフォーマットに従えば、最初に出現する1の次から52ケタ保持できるはず。
0.1(10進) = 0. 0 0011 0011 0011 ... 0011 001 (2進)
0.7(10進) = 0. 1 0110 0110 0110 ... 0110 (2進)
これで素直に足し算すると、
0.1(10進) + 0.7(10進) = 0. 1 1111 1111 1111 ... 1111 (2進)
で、内部表現のレベルでは0.8(10進)と偶然ながら一致する。
ただ、10(10進) = 1010(2進)を掛け算したときに、おそらく
111. 1111 1111 1111 ... 1101 (2進)
になると思うんだけど(掛け算の実際のアルゴリズムはよく知らないので、筆算でやったorz)、これは8(10進)の値よりもわずかに小さい。
ちなみに当たり前だけど、8(10進) = 1000. 0000 0000 0000 ... (2進)になる。
たぶん724の質問の仕方からすると、すでに緻密に計算した上での釣りのようにも見えるが、一応エスパー以外の人にも検証してもらえるように、俺なりに書いてみた。
問題は、111. 1111 1111 1111 ... 1101 (2進)は8とは内部表現レベルで一致しないのに、なぜPHPのechoは8と表示できたのかってことかと思う。
(int)をつけると、いわゆるfloorになるので、7になるのは納得できるけど。
たしかprintfの%gは10進での小数点以下6ケタ程度で四捨五入っぽかった気がするので、その関係ではないかと想像。
730 :
729 :2006/10/20(金) 12:19:05 ID:???
一部書き写し間違えたorz × 0.1(10進) + 0.7(10進) = 0. 1 1111 1111 1111 ... 1111 (2進) ○ 0.1(10進) + 0.7(10進) = 0. 1 1001 1001 1001 ... 1001 (2進)
> たしかprintfの%gは10進での小数点以下6ケタ程度で四捨五入っぽかった気がするので、その関係ではないかと想像。 へぇぇぇ、面白!! 勉強になるなあ。 どうもありがとう。 (しかし、、おれんちのmanでprintf(3)がひけないのはなんでだろう・・・)
携帯から添付された画像ファイルを取得したいのですがどのようなやり方があるでしょうか?
>>732 .forwardやaliasesでメール受信からシェルスクリプトを自動起動して本文取り込み。
メール本文のマルチパートを分解→base64をデコードして画像ファイル取得。
サーバー設定がいじれなくてスクリプト自動起動が困難なら、
手動で任意、または数分おきに定期的にPOP3でメールを受信して以下同様。
>>734 ありがと
漏れにはムズいけどがんがる(・ω・)
736 :
nobodyさん :2006/10/20(金) 18:54:20 ID:QYiDpVQJ
daisuki
kotowaru!
738 :
nobodyさん :2006/10/20(金) 22:43:08 ID:CXNhs/e2
ファイルの先頭に文字列を追記したいのですが、 $FILE=fopen("〜〜","a+"); rewind($FILE); とやってもうまくいきません。 どのような手段をとればよいのでしょうか。 お願いします。
動画をHPに置く予定なのですが、 たくさんアクセスがあった場合落ちる可能性を避けたいので PHPでアクセス数によって振り分けたいのですが、 可能なのでしょうか、可能でしたら教えてください。
>>739 負荷を心配しているのに、高負荷時の対応のために、
さらに負荷かけてどうする・・・
Max Clientとか鯖のチューニングをすべ氏
質問の仕方が下手だと↑みたいなバカな回答しかつかないから注意してね^^;
>>739 「振り分ける」じゃ意味がわからん。
具体的に何をどうしたいのか書けバカ。
>>738 追記できるのは末尾だけ。
$fp = fopen("テンポラリファイル", "w");
fwrite($fp, "文字列" . file_get_contents("元ファイル"));
fclose($fp);
unlink("元ファイル")
rename("テンポラリファイル", "元ファイル");
みたいに、1度別のファイルに追記内容+元ファイルで吐き出して
その後、元ファイルにリネームで被せてやるしかないかと。
>>739 そういうのはPHPでやらずに、ロードバランサーとかの外部の機器を使います。
そもそもWEBサーバーに到達しちゃってる時点で振り分けても遅いです。
745 :
743 :2006/10/21(土) 00:04:58 ID:VQhvLI4X
>>738 わかりました。
すばやい対応ありがとうございます!
>>742 って経験がないから経験から推測して判断して回答できないんだな。
で?っていう
極端な話、PHPで5分に1回しか動画にたどり着けないとかすれば 動画送信するぶんの負荷は減らせるだろうな。
はやいはなしapacheとlinuxを業者に頼んでカスタマイズしてもらえ。
> たくさんアクセスがあった場合落ちる可能性を避けたいので > PHPでアクセス数によって振り分けたいのですが、 個人向けのレンタルサーバーでたまに月間の転送量の上限が決まってると個 があったりするけど、例えば「概算80%ぐらい転送量消費したところで 動画を配信しないようにしたいんだけど」とかいうことではないのだろうか?
(;^ω^)
誰か、このスレを和やかな雰囲気にしてくれる、 例のコピペ嵐のコピペをコピってくれるかな。
>>751 まあまあ気持ちはわかるが馬鹿は放置しる
連想配列のカッコ内の記述ってどうルール付けすればいいんでしょうか?
ここのスレはいい人ばかりで大好きです。 ありがとう。
シングルクオーテーションで囲う、 ダブルクオーテーションで囲う、 なにも付けない。 3つの方法があるけど、どんな時にどの方法を取ればいいかっていう ルール付けがうまく出来ません。
>>758 引用符は文字列に使う
シングルかダブルかは趣味
何もつけないのは数字、定数、変数
変数を含んでいて展開するなら、ダブル
>>758 キーに変数使ってるならダブル。
それ以外はシングル。
何も付けないってのは数字?<それ連想配列じゃないと思う
define定数ならそりゃ括っちゃダメだよね。
Perlと違って、普通の文字をクオートしないのはPHPじゃ非推奨です。
>>758 シングルはキャラクタ 'a' 'i' 'u' 'e' 'o'
ダブルは文字 "aiueo"
763 :
nobodyさん :2006/10/21(土) 12:32:51 ID:jCNqCJC6
自分のサイトに来たPOSTデータを 他サイトへPOSTデータと共に 移動させてやる事は可能ですか? (JavaScript等使わずにPHPのみで)
764 :
nobodyさん :2006/10/21(土) 12:37:42 ID:yrD6q3vz
>>763 METAで…と思ったらPOST限定なの?
765 :
nobodyさん :2006/10/21(土) 12:41:22 ID:jCNqCJC6
>>764 GETならLocationとか使えば可能なのですが
POST限定なのです
POSTされてきたデータを
外部POSTしてそのデータを取得する事はできるのですが
一緒に移動となるどうしたら良いのか解らず・・・
ただ、これが出来るといろいろ問題でそうだなぁーとも思いつつ・・・
移動ってなに?
POSTをそのままPOST設定して、formのsubmitで飛ばせばいいじゃないか。
マルチポストしたいって話じゃないの 業者ぽいw
>>768 それだとサイトでワンクッション置かれてしまう・・・
>>769 確かにこれが出来てしまうと
マルチポストも簡単に出来てしまう・・・
やっぱ無理か・・・・
>>770 >それだとサイトでワンクッション置かれてしまう・・・
いいかげんにスレ違いだと気づけw
PHPでやる方法があるのかって質問なのにスレ違いて
773 :
nobodyさん :2006/10/21(土) 13:27:15 ID:jCNqCJC6
>>771 自サイトのPHPにPOSTされてきたデータを
PHPで処理させて他サイトへ
POSTデータと一緒にそのサイトへ
飛ばしたいと言ってるのだが
スレ違いなのか?
PHPで処理させてるのに?
POSTしたあとにheaser("Location: " . dokokaNoSite );じゃだめなのか
× heaser ○ header
>>763 HTTP_Requestとか使ってPOSTで受け取ったデータをそのまま渡して
POSTでリクエストするだけ
777 :
nobodyさん :2006/10/21(土) 13:50:58 ID:jCNqCJC6
>>774 やってみましたがダメっぽいです
>>776 HTTP_Requestってリクエストして
そのレスポンスを取得し表示する為に使ったり
PHPで簡易ブラウザを作るための物だと思ってたのですが
もうちょっと調べてみます
779 :
739 :2006/10/21(土) 13:57:00 ID:???
すいません、質問の仕方が悪すぎでしたね。 Flash動画をHPにおきたいのですが負荷が心配です。 test.phpへアクセスあったら test1.phpとtest2.phpに分けたいです。 test1.phpとtest2.phpは見た目まったく同じPで 動画のリンクが埋め込んでいるのですが、 リンク先のサーバーが違うということです。 ってかアクセス数で分けるなんて無理か 単純に2分することになりますかね
君はあれか、昨日の「アクセス数によって振り分けたい」の君か?!
781 :
739 :2006/10/21(土) 14:00:19 ID:???
そうです・・・なんか昨日爆睡している間に盛り上がったみたで・・・ 初心者ですまそ。
FLASH自体のの処理に分岐つければ?
「アクセス数によって」ってのが具体的に同死体のかわからないけど test.phpが吐き出すHTMLに書いてある動画リンク先を二箇所にする、って いうのは普通にできると思うけどね。
784 :
739 :2006/10/21(土) 14:12:17 ID:???
すいません・・・ なんか漠然としたイメージだと、 ばぁ〜っとアクセスがあって(test1.php)ある程度アクセス数が 例えば100件あったら、別ページ'(test2.php)に切り替わるみたいな イメージだったんですが・・・普通に無理そうですね。 アクセス数っていうか接続数ってか。PHPのレベルとは関係ないか
785 :
739 :2006/10/21(土) 14:15:07 ID:???
>>782 すいません、すれ違いですが
もう少し具体的に教えてもらえますか
そんな分散をPHPでやろうと考えている事に無理がある 大人しくそれ専用のシステムを鯖から作れ
788 :
739 :2006/10/21(土) 14:35:30 ID:???
んですね。 出直してきますわ。
>>784 同時アクセス数が一定数を超えたら、他の場所に分散した動画を参照させたいって事か?
PHPでアクセス時刻管理して、一定時間経過するまで接続していると見なすとかは
>>779 単純に埋め込む動画リンクの中身(aタグのリンク先)を
生成する際に任意に振り分ければいいだろ。
アクセス毎にサーバAとサーバBを交互に使うとか。
なんでそんな簡単なことすら自分で考えつかないんだお前は。ミジンコ以下の脳みそだな。
上記の説明でも理解できなければ、「ラウンドロビン」について調べまくれ。
で、それと同じ原理をスクリプトに仕込め。
下手にアクセス数を監視して余計なサーバー負荷を増やすくらいなら 最初からランダムで2サーバーに振り分けた方が確かに早いw
792 :
nobodyさん :2006/10/21(土) 15:53:04 ID:jCNqCJC6
>>778 やはりPHPだけでは無理そうですねぇ・・・
>>792 基本的にはクライアントのブラウザ自身に再送信させないといけないからな。
GETはURLがそのものだからLocationでブラウザに指定させることができるけど、
POSTの再送信指定は自動では厳しいだろう。
クロスサイトスクリプトと言う言葉が頭に浮かんだ
>>792 >>778 の言う通り、ちょっとしたJSを仕込めば済む話だろ。
なんでPHP「だけ」にこだわるんだよ?
JSなどと組み合わせたほうがよっぽど効率的だ。
>>795 JSを含むとJSを切っている場合があるから
単純に、秒で奇数偶数で振り分けるとかでいいじゃねーか。 結果的に、半々に振られるんだから。
どっかに偶数秒の時にのみ一斉アクセスするスレとか立ちそうだな。
時計はクライアント側じゃなく、サバ側なのよねんw
流れをぶった切って悪いが よくある大文字アルファベットと数字で構成された5*5のシリアルキーは どう発行してどう正当性を確認してるのかね?
大抵は特定の桁〜特定の桁までを一定のルールで計算して その結果が特定の桁の部分と一致するか、っていう チェックサムやCRCの発展みたいな手法でしょ。 計算式やルールはそれぞれが好き勝手にやってると思うけど。
ここのスレはいい人ばかりで大好きです。 ありがとう。
>> 763 curlだと思うけど。 そのへんのblogのトラックバック送信のところ調べてみ。POSTで送ってるところがあるはず。 今すぐ思いつくのがsnoopy snoopyなら何も考えずに snoopy->submit($URI, $formvars="", $formfiles="") これで$URIへPOSTデータを飛ばせる。 PEARでもどうと機能があったと思うが、調べてない。
>>803 いやだから、それだと単にPOSTデータを飛ばすだけで、
ユーザのブラウザ画面はPOST先のページに移動しない、
って
>>763 は書いてるわけじゃない。
>>804 >>763 はPHPの何たるかを分かっていない。JavaScript使えでFAだな
そもそもPOSTされたデータを持たせて他サイトに飛ばす必要があるって・・どんな場合だ?
すぱーむ!!
この場合はPHPどうこうってよりHTTPの仕様の話の気がするけどね。
809 :
nobodyさん :2006/10/22(日) 04:27:49 ID:b7CANJCx
質問させて下さい。(サーバOS:FreeBSD4.10、PHP4.4.2、Apache1.3.31) mysqlデータベースにフィールド名が「name」で「一郎」、「二郎」、「三郎」、「四郎」、「五郎」、「六郎」の6レコードがあります。 それをPHPで読み込んで <table> <tr><td>一郎</td><td>二郎</td><td>三郎</td></tr> <tr><td>四郎</td><td>五郎</td><td>六郎</td></tr> </table> とするのが目的です。 で質問の内容なんですが〜whileで繰り返し処理をする時、 <table> <tr> <?php do { ?> <td><?php echo $row_record['name']; ?></td> <?php } while ($row_record = mysql_fetch_assoc($record)); ?> </tr> </table> とすると、 <tr><td>一郎</td><td>二郎</td><td>三郎</td><td>四郎</td><td>五郎</td><td>六郎</td></tr> と横に一列になってしまい、また <table> <?php do { ?> <tr> <td><?php echo $row_record['name']; ?></td> </tr> <?php } while ($row_record = mysql_fetch_assoc($record)); ?> </table> とすると <tr><td>一郎</td></tr> 〜 <tr><td>六郎</td></tr> のように縦に一列になってしまいます。 目的のような結果になるよう表示させるには、どのような繰り返し処理を記述すればよいのでしょうか?
ループに2回入ったら次のtr出すようにすればいい
何列目で折り返すのかが決まっているのなら 余りの数で折り返すのが良いと思います。 例の場合なら3列なのでレコード数を3で割って余りが0のときに</tr><tr>を入れる。 あとは例外処理だけ
812 :
809 :2006/10/22(日) 07:25:20 ID:b7CANJCx
>>810 >>811 お答えいただき、ありがとうございます。
申し訳ないのですが、具体的にどのように記述すれば良いのでしょうか?
今まで調べていたのですが、どうにも分からなかったので再度質問です。
度々お手数をお掛けしますが、よろしくお願いします。
なお本日は限界な為、もう寝ます・・・。
お返事は起きてから致します。
こういう事をあっさりやってのけるニートって意外にたくさんいるから ニートに金渡してやらせればニート問題も解決しねぇ?w
>>812 810か811でFAだけど、本当にわかってなさそうなので教えてみる。
<tr>
<?php
for ($i = 1; $row_record = mysql_fetch_assoc($record); $i ++) {
?>
<td><?php echo htmlspecialchars($row_record['name'])?></td>
<?php
if ($i % 3 == 0) {
?>
</tr>
816 :
815 :2006/10/22(日) 08:28:49 ID:???
// 微妙なとこで送信してしまったorz <tr> <?php } } ?> </tr>
>809 そりゃ難しい話でもなんでもないぞ。 PHPがどうこうという話ですらない。 それ宿題でやってるの? 仕事としてやってるの? 前者なら、考えるのが仕事なんだから悩めばいいし、 学校で友達や先生にわかるまで聞きなー 後者なら、転職したほうがいいよ。会社辞めなー
>>809 つーか何のためにそんなことするんだ?
一列だろうと二列だろうと、レンダリング結果は一緒だろうが。
んで、
>>817 の言うように、それくらい自分で考えられないなら
氏んだほうがいいと思う。
どこが一緒だよw 1行と2行は大違いだろ。
>>815 てゆーか、おじさんそういう書き方は感心しないなぁ。
こうしようぜ。
<tr>
<?php for ($i = 1; $row_record = mysql_fetch_assoc($record); $i ++) : ?>
<td><?php echo htmlspecialchars($row_record['name']); ?></td>
<?php if ($i % 3 == 0) : ?>
</tr>
<tr>
<?php endif; ?>
<?php endfor; ?>
</tr>
821 :
nobodyさん :2006/10/22(日) 12:09:44 ID:BSjdszSl
PHPをはじめようと思ってる俺に おすすめのPHP本を教えてくれ! ハローワールドしかできない!
>>821 買うならその前にレッツのソースを眺めてろ。
823 :
nobodyさん :2006/10/22(日) 12:21:48 ID:BSjdszSl
>>822 レッツ php
で、検索もできないならココで質問するな。
825 :
824 :2006/10/22(日) 12:25:40 ID:???
うお! レス間違えたorz
なんだ!この流れのテンションおかしいぞ!
>>820 なんか<?php 〜〜〜 ?>
が凄く多い気がするんですけど。皆さんも必要部?だけphpの記述をする感じですか?
私の場合、例のような感じですと<tr>なども全て出力させるのて
おおきく<?php で囲ってしまうのですがどうなのでしょうか?
as you like
>>827 普通はviewとロジックは分けるもの。
テンプレートエンジン等使って事ある奴ならそんな発言は先ずでない。
>>829 何処までをLogicとするかはかなり主観的な問題だからその考えは一般的じゃない
<?php .... ?>のあいだにはいってるのが「ロジック」 そとにあるのが「ロジックではないもの」 ていうロジックなのかな?
そういうロジックであるべきってロジックじゃないか?
ロジックはロジカルであるべき
「?」がたくさん踊っていると個人的には読みにくいと思うので 埋め込み方式では書かないな・・・
俺はC言語的に書いてしまうな。
2chのトリップ生成関数を教えてください
838 :
809 :2006/10/22(日) 16:22:39 ID:b7CANJCx
色々とお返事、叱咤等ありがとうございました。
また、
>>815 、
>>820 のお二方は
具体的に記述していただいて大変感謝です!
ただ、このやりかただと、
<tr><td>二郎</td><td>三郎</td><td>四郎</td></tr>
<tr><td>五郎</td><td>六郎</td></tr>
というように、最初のレコードである「一郎」が表示結果に出ません。
(ソート順は名前でやってあります。)
試しに別フィールド「年齢」でソートしてやっても、
やはり最初のレコードは表示されません。
>>815 、
>>820 の両氏のコードで試しましたが、同じでした。
これは私の環境がおかしいのでしょうか??
もしこれがデータベースの問題なら、
これ以上はスレ違いなので調べても分からなかったら他を当たってみます。
しかし、今回のような動的テーブル作成法って変わった事なんでしょうか?
WEBアプリの場合だと、当たり前なんだと思ってました・・・。
表示する以前に1回fetch_assocやってんるんだろ?
>>838 素人レベルでは割と普通。
仕事でやるならデータの取得と表示は完全に分けちゃうのが一般的。
>>838 まずデータの取得「だけ」やってみて確認しなよ。
それすらやらずに人に聞くなんてアホじゃないかと。
どんな書き方をしても自分で見通しが利けば問題ないよ 他人の書いた物はどうせ見難いし
見易さ以前にデバッグしづらい書き方しときながら デバッグできないので教えてください、じゃ話にならんだろ
844 :
809 :2006/10/22(日) 17:45:09 ID:b7CANJCx
皆様、色々とありがとうございました。
>>839 氏の仰るとおり、表示以前に処理しておりました。
ご迷惑をお掛けして申し訳ありませんでした。
また、
>>815 、
>>820 氏にはせっかく書いて下さったのに
失礼な発言をしてしまいました。
お詫びいたします。
これでやっと希望通りの結果を得ることが出来ました。
そのことには深く感謝です!
しかし私が言うのも何ですが、プログラミングって面白いですよね。
これからも少しずつ精進していこうと思います。
最後にもう一度、ありがとうございました!
846 :
nobodyさん :2006/10/22(日) 20:26:50 ID:QZl/ECEV
その里親募集は、レベルとしては中級ってとこじゃないですか。 いろんな人みてますけど、ほんとに人それぞれですよ。 大雑把に言って、2ヶ月、3ヶ月ってとこじゃないですか。 勘のいい人は、まったくの、まっさらの状態から勉強して 1ヶ月でさくっと作ったりしますよ、それぐらいだと。 コツとしては、一度に複雑なものを作らないことです。 必要最小限の機能のものを作って、それに肉付けしていく。 なんか、今日・昨日、DBからひっぱってきたデータを二列に表示したい、とかいう 話がありましたけど、ああいうのも、最初は一列で表示させる、 次に、DBとは関係なく、配列データの二列表示の研究、最後に両者を組み合われる、とか、 「分割して統治せよ」のコツを、うまくつかめるひとは、みにつくのもはやいです。
848 :
847 :2006/10/22(日) 20:40:40 ID:???
即レスありがとうございます 1〜3ヶ月ですか 年内を目標にがんばっていこうと思います アドバイスもありがとうございます まだそこまでの域に達していないのでピンときませんが、 忘れないように肝に銘じておきます
最近佐賀ネタでスレ違いの書き込みが増えている。 佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。 銀行が潰れるとしたデマが回り騒ぎが起きたこともある。 このような書き込みは慎むべきだ。 被害防止のため常駐するスレに啓蒙してくれ。
それ自体が荒らしだと何故気づかない
そこ、マジレスするところじゃないよ
それもスレに「佐賀」と書かせるための釣りだからな
>>848 プログラム未経験なら分かりやすいPHP入門書を1冊買うといいですよ。
あと大事なのは、オンライン公式マニュアルの導入のところをちゃんと読んでおくことと
使えそうな関数のチェックは怠らないことですかね。
847氏も書いてますが、単純な形から徐々に拡大していくというのに賛成です。
今日のテーブルの件だって複雑に考えなくても
for文を使って1から6までの数字を
1 2
3 4
5 6
と表示するにはどうすればいいかと考えることと同じなわけで。
里親募集は要するに掲示板作るのと同じですね。
データの保存にDB使うのかファイル使うのか分からないけどDBと仮定すると、
登録時は
@HTMLからフォーム送信⇒APHPで受け取ってSQL文生成+クエリ実行⇒BDBに保存
表示時は
CSQL文を実行してDBからデータを取得⇒DデータとHTMLタグを組み合わせてHTMLページを出力
みたいな感じ。
あと細かい処理やら写真のアップなどは追々付け足していけばいいわけで。
何か詰まったらまたここで聞いてくださいね。
>>853 アドバイスありがとうございます
右も左もわからない状態なので助かりました
855 :
nobodyさん :2006/10/23(月) 01:36:51 ID:2dkTMRuK
こんにちは、少し前にこのスレッドにて質問をさせていただいた者です。
また、初心者な質問をさせていただきます。
返信機能付きの掲示板を作成しているところです。
現在、無限ループが発生していて、困って居ます。
演算子などの辺りのマニュアルも一応読みましたが、原因が分かりません。
どなたか教授をお願いします。
ソース:
http://www5.pf-x.net/~php/s/q.phps あと、質問者として最低の行為だと思うのですが、今日から2日間、小旅行に行ってきますのでお答えを見る事ができません(泣
帰ってきてから質問しれよw
857 :
nobodyさん :2006/10/23(月) 02:08:44 ID:2dkTMRuK
エラメです。 書いておくのを忘れてしまいました。 Fatal error: Maximum execution time of 60 seconds exceeded in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136
858 :
nobodyさん :2006/10/23(月) 02:13:06 ID:2dkTMRuK
>>856 帰ってきてからでは少し都合が悪いのです。すみません。
Warning: file(1 .dat) [function.file]: failed to open stream: Invalid argument in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136
もあるようです。1と.datの間に半角スペースが・・・。
>>858 > $roop_lines = file(ENTRY_NUM_FILE);//現在、「1」が代入されます(最新の親記事番号)
> $num_of_time = (end($roop_lines));//最後の要素(最大数)を取り出します
file()で取得される配列は各行に改行コードがついたままになっている。
それを
> for($i = $num_of_time;$i >= 1;$i--){//最大の要素分ループします。(たぶんこの辺りがおかしい)
> $file = ($i.'.dat');
とやってしまっては、$i(改行).dat という意味不明のファイル名になってしまう。
136行目でMaximum execution time of 60 seconds exceededとfailed to open streamが出てるってことは
> $entry = file($file);
これが136行目なんだろうと思うが、不正なファイル名を渡されて読み込みを行っているために
file()関数が止まってしまってる状態。これは永久ループじゃなく1件目でいきなりこけてると思われ。
860 :
nobodyさん :2006/10/23(月) 02:41:05 ID:2dkTMRuK
すいません、解決しました。 こんなに駄レスをしてしまい、申し訳ありません。
861 :
nobodyさん :2006/10/23(月) 02:42:10 ID:2dkTMRuK
>>859 rtrim()でその改行コードを取り除いたら解決しました。
回答していただき、ありがとうございます。
>>862 それ、何の役に立つんだろうね?
一見するとすごいけど、「で、それがどうしたの?」って感じだもんな。
レッツAJAX!
役に立たないから面白いんじゃないか。
866 :
nobodyさん :2006/10/23(月) 20:11:42 ID:3vDBvRjM
みんなクラスファイルってどこに置いてる? 俺はlib/php以下にclassってディレクトリ作って置いちゃってたんだけど。。
好きなようにすればいい
うちはDOCUMENT_ROOTの1つ上の階層にディレクトリ作ってそこ。
>>865 役に立たないだけでなく、面白くもないんだが。
関連ワードが無茶苦茶だし。
>>840 仕事でやる人はイテレータとか使わないの?
871 :
866 :2006/10/23(月) 22:22:33 ID:3vDBvRjM
>>868 なるほど。/home/user/class/みたいな感じですかね?
共通クラスみたいのは特に作ってないですか?
872 :
名無しさん@お腹いっぱい。 :2006/10/23(月) 22:42:07 ID:1uLUI3dC
文字列の置換についてお聞きしたいのですが。 例えば、tenki.txtに"明日 天気にな ぁれ。"のような文章が入っていた とします。それを全角スペースを置換し、「明日天気になぁれ。」にしたい のですが、どのようにすれば良いでしょうか。 一応、このようにしてみたのですが・・ $file=fopen("tenki.txt","r+"); $str =fread($fp,filesize("tenki.txt")); $str2=str_replace(" ","",$str); fseek($file,0); fwrite($file,$str2); fclose($file); 結果はエラーはでないが、効果もないという感じでして。。。 どのようにすれば良いのか、ご教授いただけないでしょうか?
>>872 とりあえず、$fpは何処から持ってきたのか教えてくれ・・・
875 :
名無しさん@お腹いっぱい。 :2006/10/23(月) 22:53:42 ID:1uLUI3dC
すいません。$fpではなく、$fileでした。 こちらに書く際に間違えてしまいました。 改めて、よろしくお願いします。
876 :
nobodyさん :2006/10/23(月) 22:59:40 ID:lxved+5w
ユーザー関数内から$textを表示させたいのですが 思うようにうまくいきません。 どなたかご教授お願いいたします。 php4.4.4です。 $text = "2ちゃんねる"; html($text); function html() { echo $text; }
>>872 > $str2=str_replace(" ","",$str);
半角スペースしか置換してないように見えるんですが。
>>876 function html($text)
>>876 echo $GLOBALS['text'];
880 :
876 :2006/10/23(月) 23:07:28 ID:???
>>878-879 迅速なアドバイスありがとうございます。
両方とも正しく動きました。
『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。
$GLOBALS['text']はとても使いやすいですね。
お互い要所によって使い分けてみたいと思います。
ありがとうございました。
881 :
名無しさん@お腹いっぱい。 :2006/10/23(月) 23:07:47 ID:1uLUI3dC
>872です。 " "で効果がなかったので、" "としてしまいました。 どちらにしても置換がされないので、どうしたものかと。。。
>>881 良く考えたらそれはおかしいよ
文字数が減るからfseek0にしたら後ろにゴミが残るでしょ
だから勘違いしてると思う
<?php ?>をコード中にたくさん記述するのは処理が重くなるのでしょうか?
884 :
名無しさん@お腹いっぱい。 :2006/10/23(月) 23:20:42 ID:1uLUI3dC
872 fseekを使わないでやるというパターンも試してみたんですけど、どうも うまくいかないのです。 よろしければ、答えの一例をお示しいただけないでしょうか?
>>883 1万個くらい書いたHTML文書を生成して試してみてくれ
>>880 > 『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。
違う。
function html($text) は「引数を受け取れるようにする」という「指定」。
これで初めて引数を使えるようになるものであって、これは引数を渡しているわけじゃない。
渡される引数と、関数側の指定は別のものなので、
$data1 = "1ちゃんねる";
$data2 = "2ちゃんねる";
html($data1);
html($data2);
function html($text)
{
echo $text;
}
のように異なる変数名を使えるし、そこに利点がある。
(関数はそれ以外の部分がどうなっているかを意識せずに作りこむことができる)
> $GLOBALS['text']はとても使いやすいですね。
> お互い要所によって使い分けてみたいと思います。
グローバル変数を使う方式はこういう自由度が無いため、使い分けが重要。
>>883 たくさんコメントを書きまくるのと同じ程度には重くなると思います。
>>881 > " "で効果がなかったので、" "としてしまいました。
それ、どっちも半角スペースだと思うんですが。
>>882 今は置換されてないんだからゴミも出ないよ。文字数変わってないんだもの。
ちなみにtenki.txtの更新日付は実行後に変化してますか?
>>872
>>889 家でテストしたら半角も全角もちゃんと動いたよ
891 :
871 :2006/10/23(月) 23:40:38 ID:???
>>874 そうでしたか。まああまり気にすることなさそうですね。
レスありがとうございました。
まさか書き込み禁止のデータファイルでエラー制御してるとかだと笑えるけどw
893 :
nobodyさん :2006/10/23(月) 23:46:41 ID:zNg8YSYz
すいません、CSVのの特定の行データ(例:18行目)を抽出しるにはどんな 感じにすればよいのでしょうか?
894 :
名無しさん@お腹いっぱい。 :2006/10/23(月) 23:46:46 ID:1uLUI3dC
872です。 >888 確かに。言い直すと、全角または半角指定でもうまくいきませんでした。 >889 実行後の更新日時は変化していました。 それと、改めて実行したところ、スペースは置換されました。 しかし、"明日天気になぁれ。れ。" となってしまいました。 きれいに置換する方法はないものでしょうか?
>>894 結局置換できなかった理由はなんなのよw
ゴミの方は
>>882 が書いてるけど、上書き時のゴミでしょ。
1度元のファイルを消さないと、同じ桁位置に上書きするわけだから
字数が短くなれば当たり前だが後ろに上書きされなかった内容が残る。
ファイルを作り直すか、中身消去関数を実行しましょう。
>>893 $fp = fopen("CSVファイル", "r");
for($i = 0, $i < 17; $i ++) fgets($fp);
$line = fgets($fp);
echo $line;
>>894 とりあえず、動いてるものを動いてないと勘違いしてた時点で
しばらくは質問を控えて自分で悩んだ方がいいと思うよ。
実際の状態が分からない状態で質問されても正直困る。
898 :
名無しさん@お腹いっぱい。 :2006/10/24(火) 00:21:07 ID:amM1UeJp
結構悩みましたが。。。まぁとりあえず出直します。
PHPでCharCodeAtみたいな文字コード番号を返す関数ってありますか?
900 :
nobodyさん :2006/10/24(火) 00:35:04 ID:Ylboj5c4
>>896 ありがとうございます。確かに18行目のデータ全て抽出することができました。
さて、これからがぼくにとっての難問なんです・・・
たとえば、2つのCSVファイルがあるのですが(佐賀県.CSVと汚職.CSV)、やりたいことは
汚職.CSVの中の「Sさん」という人物プロフィール紹介のページで、「Sさん」に当てはまる(登録されている)
汚職カテゴリーを佐賀県.CSVの中からすべて抽出し、<li>・・・・・</li>の形で表示したいのですが、
なかなかうまくいきません。
どうかお知恵をおかしください。どんな感じにすればよいのでしょうか?
@頑張る A単純化して考えてみる BDB使う
>>900 18行目の抽出程度で困る人ではその内容は無理かと。
>>900 佐賀県.CSVをループさせてる間、人名を<a href="hoge.php?query=xxx">で囲ってxxxにエンコした人名を入れておく、
受け取り側では$_GET['query']を確認してから該当文字列を含む列を配列に格納、その配列をぐるぐるしながら表示。
とか?
まだおきてるひとはいますか?
いますけど何か?
質問してもいいですか?
回答するか(できるか)は分からんけど 質問があるならすればいいかと。
909 :
nobodyさん :2006/10/24(火) 04:48:35 ID:+34GEzTN
自宅内PCのlocalhostからhoge.comへポストで送信することについて。
hoge.comに向けられた、自宅内PCから発射されたPOSTを遮断する方法がわかりません。
何かヒントとなるものはございませんでしょうか?
『自宅内PCのindex.phpのコード』
<form action="
http://hoge.com/index.php >
<input type="submit" name="submit" value="submit">
</form>
『hoge.comのindex.phpのコード』
if (isset($_POST[submit]))
{
echo "他サイトからポストがありました";
}
>>909 REFERERを見て自分のサイト以外だったら弾くとかくらいじゃ…
もっとも、昨今はREFERERを返さない設定にしちゃってる
ブラウザやセキュリティソフトが多いのであまり十分とは言えないけど。
あとはセッションを使って、直前の送信ページ表示の情報を持ってる
ユーザのPOST以外は受信不可にするとか。
もっともこれも1度送信ページを表示してから実行されるとスルーしちゃうけど。
それを完璧に防ぐ方法は理論上存在しないと思う。
しょせん、クライアントのブラウザを介しての処理だからねぇ。
クライアントが「送信元のページ」を正確に渡してくれないことには不可能で、
クライアント自体をユーザが自作可能である以上、そんな手法は存在しない。
Refererより改竄しやすいけどCookieのセッションがあるな。 有効期限で一定時間以後は無効にもできるし。
セッション使った対処方法もすでに
>>910 で書いてるけど…
データ本体をサーバ側に置いとけば改竄はそうそうできないよ。
正規の入力画面を表示した時にアクセスしたタイムスタンプを送れるように hiddenを仕込む、同時にその値をDBに突っ込む、 受け側(hoge.comのindex.php)で値を受取る時にDBを確認、 hiddenで送られたタイムスタンプと一致したら正規のPOST、とかどう? 一定時間過ぎたらCronなりでDBを掃除
アンケートフォームなどで、radioボタンなどのvalueとして設定される数値と textフィールドに入力されるテキストが値として混在しますが こういうのはどこで分割するのがいいんでしょうか? 例えばこんなやつです。 <input type="checkbox" name="q1[]" value="1">選択肢1 <input type="checkbox" name="q1[]" value="2">選択肢2 <input type="checkbox" name="q1[]" value="3">選択肢3 <input type="checkbox" name="q1[]" value="4">その他<input type="text" name="q1[]"> @HTMLの時点でname属性を変える(q1_4_txtなど) ADBのテーブルを数値用と文字列用に2つ作り、POSTされたデータをPHPで判定して振り分ける BDBにまとめて放り込み、selectするときに上手いことやる とりえあず@のようにnameを変え、select文を select name, value, count (value) from table group by name, value とし、PHPで全件に対して valueが数値の場合: $result[name][value] = count; valueが文字列の場合: $result[name][] = valie; と代入して使用しています。 もしかして効率が悪いことしているのかと不安に感じるので、皆さんは普段どうしていますか? こういうフォームを扱う時のコツなどありましたら教えてください。
どっちにしろ、正規ページ表示→そのページを元に生成した不正ページから送信 って
パターンは防げないけどね。
>>909 が何をどこまで厳密に防ぎたいのかが分からないので何とも。
送信前に1度でも正規ページを表示してくれれば問題なし、って話ならセッションで十分でしょ。
>>914 フォーム云々ってより集計プログラムの方が問題な気がする。
フォームは集計プログラムの仕様に合わせれば自ずと決まるんじゃないか?それ。
「最終的にどういう形でDBに入ってくれてれば容易に集計できるのか」
という逆算で設計した方がいいよ。
IPではじけないのか?
>>917 クライアントのIPと送信元ページに何の関係があるのよ。
Macのハートマークなどの機種依存文字を省きたいんですが、ordでは成功しませんでした。 どうすればMacなどの機種依存文字を判定できるんでしょうか?
bin2hex()でゴニョゴニョするのかな?ごめんわからん。
>>919 mb_ereg_replace("[\x86\x9F-\x86\xB5]", "", $str); みたいな感じで
文字コードで範囲指定してmb関数で置換すればいいんじゃないの?
>>921 つ
foreach ($ary as $i) {
print_r($i);
}
Perlとほとんど変わらんがな。
>>923 それならprint_r($ary)でいいじゃん
Web特化はお呼び出ないってことですよ。 日のあたらない目立たないとこでコシコシやっていこうぜ。
rubyとかpythonとかどこで使われてんの?
「いれてーな」に脳内変換してしまう自分は病気でしょうか。
>>928 この場合のイテレータはPHPでいうとimplements Iteratorなクラスでは?
>>910 実際POSTをはじくことはできないにしても業務レベルで使えるようにすることはできる。
2ちゃんのCGIを参考にしたらええよ。
>>931 質問者は「POSTを弾く方法」を聞いてるんじゃないのか?
>>909 の質問は、どう見てもCSRFを防ぐ方法について。
本人がCSRFという言葉や概念を知っているかどうかは知らないけどな。
で、CSRF防御策については、決定打は無いものの、
世間的に概ねFAが出ている。
大手では画像に数字をだして、それを入力させてsubmitさせてるよ。
>>909 ってhoge.com側の対策じゃなくて自宅側の対策について聞いてるような?
>>909 だからhoge.comは実在する企業のドメインだからexample.comを使えと何度言えばわk
おまえらほんとセキュリティにはうぶなんだな(笑)
>>940 ぜひここでセキュリティ対策の講義を(笑)
>>940 初心者でもわかりやすくお願いしますね(笑)
944 :
940 :2006/10/24(火) 15:29:24 ID:???
ネットに繋がなければいいんだよ。
単純な話、cookieでいいじゃん。 ブロックしてたら、ブロックしないようにしてから投稿してねで。
947 :
nobodyさん :2006/10/24(火) 16:59:53 ID:Fh1N1ejS
>>944 騙ってんじゃねえよ。
いいか、phpでもっとも有効な対策は重要なデータはhiddenにのせないことだ。
cookieが使えるのはPCのみで、携帯ではcookie対応機のみ。 PC用と携帯用で振り分ければいい。 万能な記述などない。やるだけだ。
あと、クッキーに「サーバのログに書き込むデータ」は保存しないことだ。 クッキーが改ざんされてしまうだろうが。
やはりセッションが無難であるといえる。 ただ、ハイジャックされることも頭に入れてコードを書かなくてはならない。 たとえば、下記を参照してもらおう。 セッションA−−−−−−−→セッションB ↑ 盗聴 クライアントにセッションAを与える。 クラッカーがセッションAを盗撮。 しかし、セッションAを与えた直後、セッションBに移し変えてセッションAを消してやれば 盗聴されたセッションAは何の意味ももたなくなる。
952 :
940 :2006/10/24(火) 17:30:29 ID:???
・セッションはIPと対にして発行、IPが変わったら無効 ・そもそもSSL通せや が抜けてる
スレ違いだけど、PHP使い始めて2年、プログラマになって20日だけど、今日初めてinclude_onceの有り難みが解ったorz
>>951 >盗撮
ふだん使ってる言葉が無意識に出ちゃってるぞ。
質問です。 aaa.php?test=1とURLに指定して呼び出したときに echo $HTTP_GET_VARS['test'];をしても1が表示されません。 phpinfo()を呼んだ画面ではregister_globalsがOnと表示されています。 register_globals以外に上記を取得するための設定が必要なのでしょうか? fedora core5を使っていて、phpのバージョンはphp-5.1.6-1.1です。
>>957 そんなもん使うな。
$_GET, $_POSTなどのスーパーグローバル変数を使え。
>>958 ありがとうございます。
1ピコ秒で解決しました。
ぼくのぴこ
>>956 ほかになにがあるんですか?いってください。
別の人だけどproxyも全部はじかないとな
>>930 921のリンク先の言葉を使えば、デフォルトのままでforeachが「内部イテレータ」の役割を果たす。
Iteratorはその挙動を自分で指定できる、メタプログラミングの一種かと(既存のarrayを操作できるわけではないけど)。
>>964 そのリンク先、関連項目のforeachをあわせて見てみるべし。
イテレーションとは別のものとして取り上げているしPHPのforeachもそこにある。
本質的な話は別として、そのリンク先では
>配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。
と解説されている。
>>964 >Iteratorはその挙動を自分で指定できる、メタプログラミングの一種
まさにこれの事ではないのか?
>>965 物凄いスレ違いだけど、おもしろそうなのでつっこんでみる。
「foreachの対象はイテレータではない」
というのが965の主張??
foreachは(おそらく一般的には)イテレーションの構文糖じゃないの?
> 本質的な話は別として、そのリンク先では
> >配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。
> と解説されている。
これを実現する一つとしてforeachがあるかと。
ちなみにPHPのSPLで用意されているIteratorは、大雑把に言って「foreachの挙動を操作するもの」だと思う。
投票結果に応じてオッズを計算して更新するアプリを公開してるサイトとかありますか?
あぷり?
969 :
nobodyさん :2006/10/25(水) 00:02:50 ID:noTSvRA3
すいません下らねぇ質問です! サイト上の特定のワードを、特定の文字に置き換えることはPHPで簡単にできますか? 例えば、 英文字の DOG というのを すべて日本語の 犬 に置き換えるという具合です。 できるとすればどんな構文になるのでしょうか? お願いします。
ブックマークレットでも使ったらどうかな。
971 :
nobodyさん :2006/10/25(水) 00:24:22 ID:noTSvRA3
>>970 翻訳できない造語(英語)や日本語のローマ字入力なんかがあるのでブックマークレットは
使えないので残念です。
IEならjavascriptをアドレスバーに直接ぶちこめばできるよ
翻訳…? 2つ3つの単語を対応する単語に置き換えるならともかく、 まともな翻訳処理を施すなら単語の置換どころの騒ぎではなくなる。 素直に検索サービスに飛ばすブックマークレット使え。
974 :
nobodyさん :2006/10/25(水) 00:37:00 ID:noTSvRA3
>>973 私の説明が悪かったです^^;
置き換えは英語、日本語関係なく、
サイト内の 「AAA」 という単語を、 単純に「BBB」 と置き換えるだけです。
置き換えたい単語は全部で10個程度です。
宜しくお願いします。
それだとブックマークレットで駄目な理由が分からん。 サーバ上のファイルで一括置換したいという意味であれば適当なテキストエディタ使え。
>>974 一回ファイルに読み込んで
置換すればいいだけじゃね?
978 :
965 :2006/10/25(水) 00:47:47 ID:???
>>966 「PHPのforeachが繰り返しの抽象化としてのイテレータなのか」という議論はおいといて、
>>921 のリンク先では関連項目のforeachにはPHPのそれが載っているが、
イテレータには載っていない。
この文脈では、PHPのイテレータとしてはIteratorを挙げるのが適当では?
ということ。
話は変わるけどimplements IteratorはJavaやPythonの例のように、
イテレーションのインターフェイス(巻き戻し、次の要素、次があるかの問い合わせ)
を提供するわけで、
・ある集合に繰り返しの窓口を設けるもの。
対してforeachは、
・繰り返しの窓口に対して、順番に要素を取り出すもの。
という事じゃないだろうか?
979 :
nobodyさん :2006/10/25(水) 00:55:17 ID:noTSvRA3
>>977 どんな関数で置き換えができるのでしょうか?
PHP詳しくないんですみません。ヒント教えていただければ検索してみます。
>>979 マニュアルを最初から読まないことを前提にしてる人にまで回答してられないよ。
というか、その内容ならPHP使わない方がいいんじゃない?
Windows用の置換ツールとか使った方がいいでしょ。
981 :
nobodyさん :2006/10/25(水) 01:02:55 ID:noTSvRA3
>>980 $hoge = array(
'1'=>'犬',
'2'=>'猫',
'3'=>'フェレット',
);
$line = "1 2 3";
$line2 = strtr($line,$hoge);
こんな感じでやってるんですがなかなか・・・
javasciptがわけわかんなくて投げ出しそうな奴はPHPも挫折しますか?
うん
985 :
nobodyさん :2006/10/25(水) 01:17:54 ID:noTSvRA3
みなさん $hoge=str_replace("dog","犬",$Str); で、できました!お騒がせしました。 でも、あってますよね^^; 一応ウェブサイト上では置換えできてます
>>978 > この文脈では、PHPのイテレータとしてはIteratorを挙げるのが適当では?
いや、ぶっちゃけforeachだけ載せても、SPLのIteratorまで載せても、大した問題じゃないと思うけど。
perlのとこだってforeachとwhile-eachの例しか載ってないし。
せいぜいIteratorってのもあるよ、ってくらいのコメントで十分かと。
まあPHPのIteratorは、foreachで内部イテレータを書くことも、forで外部イテレータを書くこともできちゃうから、説明としてはまあまあ有用性高い気もするけどね。 筆者がたまたまPHPを知らなかっただけの話でしょ。 // 例 class Records implements Iterator {・・・} $records = new Records(); // 内部イテレータ foreach ($records as $index => $record) { 処理 } // 外部イテレータ for ($records->rewind(); $records->valid(); $records->next()) { $record = $records->current(); $index = $records->key(); 処理 }
strtrって遅くない? 何回計ってもstr_replaceの方が倍以上速い どう考えてもstrtrのほうが軽そうなのに
件のページに書き足すなら、foreachとimplements Iteratorを併記がいいって事で。
990 :
nobodyさん :2006/10/25(水) 02:14:28 ID:rZkuwLJp
>>985 さらに一歩進むなら
$hoge=str_replace(array("dog","cat"),array("犬","猫"),$Str);
>>988 strtrはインターフェースが冗長だからそこで時間食ってる。
俺のとこではstrtrとstr_replaceの速度は誤差の範囲内だったけど。 (何回も繰り返すと、strtrのほうが速いときも少なくないし) 988のベンチとった実際のコードキボンヌ
strtrは配列で置換指定するタイプはダメね 配列じゃない方も対象文字列が長くないとダメね
>>988 strtrは文字列置換ではなく文字置換
strtr("ABC", "XYZ", "A1B1C1");
A=>X, B=>Y, C=>Zに置換されX1Y1Z1になる
間違えた strtr("A1B1C1", "ABC", "XYZ"); phpは似たような関数で引数の順番が違うからいちいちマニュアルで確認しないといけない
次スレ立てるけど、いくつか修正するのに文句あるやついる? ・「ですます調」が中途半端に混ざっててキモイので全て「非ですます調」に統一。 ・過去スレを全部リストアップするのは色々な意味で無駄なので5つ程度に制限。 ・関連リンクでZFのマニュアルは日本語版があるので修正。 ・関連スレは確認が面倒なので削除(どのスレも「php」で検索するだけでヒットするのにリストアップする必要性を感じない)。 ・FAQは変なとこで改行されててムカつくので、変な改行を除去。 ・printはecho同様に関数ではなく、値を返すだけなので修正(数スレ前に話題に出た)。
997 :
996 :2006/10/25(水) 08:11:19 ID:???
つーか、そんなこといちいち断ってから立てる必要もないか。 1000まで残り少ないし。 変だったら、さらにその次のスレから直してください。
998 :
996 :2006/10/25(水) 08:13:52 ID:???
なにこの板。スレ立てられないじゃん。 スマソが誰が任せた。
じゃとりあえず適当にスレ立ててくる。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。