1 名前:nobodyさん mailto:sage [2008/11/22(土) 06:36:02 ID:???] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 PHP使いが優しくコメントを返しますが、 お礼はPHPの布教と初心者の救済をお願いします。 PHP Home Page www.php.net/ jp.php.net/ くだすれPHP(超初心者用)4 pc11.2ch.net/test/read.cgi/php/1213356756/ 適当に関連スレ(マルチはだめぽ) 【PHP】下らねぇ質問はここに書き込みやがれ 69 pc11.2ch.net/test/read.cgi/php/1211879073/
291 名前:286 mailto:sage [2008/12/21(日) 21:01:57 ID:???] >290 それが動く事に少なからず衝撃を受けた。 requireやincludeは、基本的にPHPプログラムを読み込むためのもの。 それだとたぶん、txtの中にPHPプログラムとして解釈可能な文字列があると、実行されてしまう。 単純にテキストファイルの中身を読み込む場合、file_get_contents()を使ったほうがいい。 動くなら問題ないっちゃあないんだが…
292 名前:nobodyさん mailto:sage [2008/12/21(日) 21:07:15 ID:???] って、ああそうか、よく考えたら動いて当たり前か。 「評価されると危ないので避けたほうがいい」という意見は変わんないけどな。 txtは自分が編集するから、安全といえば安全なのだが、無駄な危険の芽は摘んだほうがいい。 いつの日かうっかりtxtにexit();とか書き込んだらエラーになるし。
293 名前:nobodyさん mailto:sage [2008/12/21(日) 21:39:17 ID:???] >>292 うっかりが起きないとも限らないので file_get_contents()について調べてみます。 勉強になりました。 ありがとうございました。
294 名前:nobodyさん mailto:sage [2008/12/21(日) 21:45:08 ID:???] >>290 まぁ、動いているので問題ないけど、 コーディングのマナーとしてはよろしくないかもね ・require等の中に変数は入れない方がいい ・比較するときにキャストして使う時にキャストしないというのは問題になることがある。 前者は設定によってはリモートでのコード実行につながるから 後者は比較が通っても、問題のある変数で実行する可能性があるから
295 名前:nobodyさん mailto:sage [2008/12/21(日) 21:53:40 ID:???] >>292 なんねーよ echoと同じだ
296 名前:nobodyさん mailto:sage [2008/12/21(日) 22:28:16 ID:???] >>294 参考になります まだまだ馴れてない部分が多いので基礎から覚えるために やはり、書籍を一つ買おうと思います
297 名前:nobodyさん mailto:sage [2008/12/21(日) 22:58:47 ID:???] うむもう二度と来ないでくれ
298 名前:nobodyさん mailto:sage [2008/12/21(日) 23:00:10 ID:???] >>297 来なければ、いいだけじゃね。
299 名前:nobodyさん mailto:sage [2008/12/22(月) 18:00:09 ID:???] プログラミング初心者だけどPHP難しすぎて投げそう(';ω;`) 2週間位で基礎を学ぶには何したら良いんですか(';ω;`)ウォウォ…
300 名前:nobodyさん mailto:sage [2008/12/22(月) 18:02:13 ID:???] 教えてくれそうな男に体でも売ればいいんじゃね
301 名前:nobodyさん mailto:sage [2008/12/22(月) 18:06:33 ID:???] もうウンコして寝込むしかねぇ・・・
302 名前:nobodyさん mailto:sage [2008/12/22(月) 18:21:33 ID:???] マニュアル嫁
303 名前:nobodyさん mailto:sage [2008/12/22(月) 18:26:34 ID:???] どっかから小さめなスクリプト落してきて、 「なんで?なんで?なんでこうなるの?」と思いながら丁寧に読んだり、 チョっとした機能を追加してみたりして、 いろいろもがくといいんじゃないだろうか。
304 名前:nobodyさん mailto:sage [2008/12/22(月) 20:08:10 ID:???] 初心者が読めるようなちょっとしたスクリプトは大抵がPHP4時代の糞CGIで変な癖がついたりする罠。 グローバル空間にexplodeしてたりするスクリプトが多すぎる。
305 名前:nobodyさん mailto:sage [2008/12/22(月) 20:09:08 ID:???] explode→extract
306 名前:nobodyさん mailto:sage [2008/12/22(月) 20:09:52 ID:???] >>304 それがどうしたの。
307 名前:nobodyさん mailto:sage [2008/12/22(月) 20:18:07 ID:???] んなの読まなきゃいいだろ
308 名前:nobodyさん mailto:sage [2008/12/22(月) 22:15:31 ID:???] >>299 初めてのプログラミングがPHPで、配列/連想配列でこけたけど、しばらくしてからやってみたらすぐ理解できた。 あんまり根詰めないで気楽にまったりやるといいよ。 読むだけじゃなくて手も動かすといい。 サンプル丸写しして、いろいろ自分で弄ってみるんだ。 エラー出ればメッセージ出て何が原因かすぐわかるしね。
309 名前:299 [2008/12/22(月) 22:16:58 ID:W3OrxKsT] >>303 どっかから? どっかから?そのどっかから?はどっかから? つまり僕が言いたいのはどっかから?なんです。お願いします。
310 名前:299 [2008/12/22(月) 22:39:19 ID:W3OrxKsT] >>308 ( ´_ゝ`)フーン 「どうもありがとう」って言っといてだってお兄ちゃんが 妹より
311 名前:nobodyさん mailto:sage [2008/12/22(月) 22:51:01 ID:???] で、どう書いたら>>304 さんに変な癖がついてると言われない書き方なのよん 正しい書き方教えてくりっ
312 名前:nobodyさん mailto:sage [2008/12/22(月) 22:59:57 ID:???] PHPの公式マニュアルで「非推奨です」「危険です」と書かれている書き方を全て避ける。
313 名前:nobodyさん mailto:sage [2008/12/22(月) 23:00:21 ID:???] 変な癖が付いてると言われなければいいのか
314 名前:nobodyさん mailto:sage [2008/12/22(月) 23:04:23 ID:???] >>304 みたいな奴には何を見せても重箱の隅つつかれるよね。 スルーでいいとおもう。
315 名前:nobodyさん [2008/12/22(月) 23:15:14 ID:zcPu3Ss9] PHP4用の開発ノウハウってのがあって、これは今となってはバッドノウハウ。 PHP5のみサポートの有名なFWで開発してみて、動いたらソースを読むのが吉
316 名前:nobodyさん mailto:sage [2008/12/23(火) 00:46:09 ID:???] ノウハウ以前のレベルだろうに
317 名前:nobodyさん mailto:sage [2008/12/23(火) 02:41:59 ID:???] いまだに共用鯖じゃPHP4主流だもんなあ。
318 名前:nobodyさん [2008/12/23(火) 03:56:34 ID:207JnJAg] JavaScriptの"for〜in"構文をPHPで書くとどうなるのでしょうか PHPはあまり分らないもので
319 名前:nobodyさん mailto:sage [2008/12/23(火) 04:00:08 ID:???] >>299 漏れは先にperlを2ヶ月やってから PHPに移動した。
320 名前:nobodyさん mailto:sage [2008/12/23(火) 04:13:36 ID:???] >>318 マニュアル
321 名前:nobodyさん mailto:sage [2008/12/23(火) 13:04:10 ID:???] >>318 $array=array('name'=>'aki','age'=>23,'karesi'=>'futsu'); foreach($array in $key=>$item) { echo "$key $item\n"; }
322 名前:nobodyさん mailto:sage [2008/12/23(火) 13:54:23 ID:???] 単にforeach文て言えば済むじゃねぇかw
323 名前:299 mailto:sage [2008/12/23(火) 17:39:32 ID:???] >>319 何でですの?教えてごらんなさい
324 名前:nobodyさん mailto:sage [2008/12/23(火) 17:43:37 ID:???] ご先祖様だから
325 名前:nobodyさん mailto:sage [2008/12/23(火) 18:14:25 ID:???] ご先祖様はCだろw
326 名前:nobodyさん mailto:sage [2008/12/23(火) 18:37:45 ID:???] そこまで戻る必要は無い ってか、Cは却って難しい
327 名前:nobodyさん mailto:sage [2008/12/23(火) 20:41:02 ID:???] SQLite3ってPDOってやつを使ってアクセスするんですよね マニュアルにあるSQLite3ってやつとは何が違うんでしょうか
328 名前:nobodyさん mailto:sage [2008/12/23(火) 20:45:19 ID:???] 別にPDOじゃなくてもアクセスできるけど
329 名前:nobodyさん mailto:sage [2008/12/23(火) 21:06:01 ID:???] なるほど ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが どっちを使っても構わないってことでしょうか
330 名前:nobodyさん mailto:sage [2008/12/23(火) 21:06:50 ID:???] うん
331 名前:nobodyさん mailto:sage [2008/12/23(火) 21:19:15 ID:???] わかりました どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます
332 名前:nobodyさん mailto:sage [2008/12/23(火) 21:44:59 ID:???] DBっていうのは、MySQLとかSQLiteとかPostgreSQLとかOracleとか、似たようなのがたくさんある。 元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。 で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。 それがPDO。 PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。 また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。
333 名前:nobodyさん mailto:sage [2008/12/23(火) 21:50:29 ID:???] 普通DSNを書き換えるんだろ
334 名前:nobodyさん mailto:sage [2008/12/23(火) 21:50:51 ID:???] じゃあ自由度は下がるってことでFA?
335 名前:nobodyさん mailto:sage [2008/12/23(火) 21:57:29 ID:???] ひとう → ひとつ これだけだとバランス取れないので、一応デメリットも。 全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。 よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。 個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。 SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。
336 名前:nobodyさん mailto:sage [2008/12/23(火) 21:58:54 ID:???] > よくある話だと、MySQLの持続的接続が使えなかったりな。 それってパフォーマンスに影響するんだっけ?ベンチとった?
337 名前:nobodyさん mailto:sage [2008/12/23(火) 22:14:41 ID:???] PDOは文字コード変更用の関数がないからなー……。 SET NAMES 危ないって聞くし。
338 名前:335 mailto:sage [2008/12/23(火) 22:49:27 ID:???] >334 んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。 俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。 (実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)
339 名前:nobodyさん mailto:sage [2008/12/23(火) 22:58:50 ID:???] >>338 あたまでっかちおっさんどっかいけよ
340 名前:nobodyさん mailto:sage [2008/12/25(木) 05:23:16 ID:???] >>339 335, 338の発言を理解できないなら発言するな。 339的な発言は、このスレの害虫。
341 名前:nobodyさん mailto:sage [2008/12/25(木) 05:57:49 ID:???] >>PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、 >>PDOクラスをnewしてるところだけ書き換えれば普通に動く SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか? (標準SQLだけで書かないでしょふつう) 俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を 減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。
342 名前:nobodyさん mailto:sage [2008/12/25(木) 18:01:58 ID:???] 標準SQLだけで書かないのが普通という前提なら、共通で使える部分の学習量なんてほとんど0じゃないか?
343 名前:nobodyさん mailto:sage [2008/12/25(木) 20:20:04 ID:???] DBを変更する予定があるとき、 単純にPDOだけで実現できるわけじゃぁないが、 PDOで標準SQLだけを使うか、 PDOよりも抽象化したFWを使うわけで、 素の関数を使うよりは汎用性が高い。 どっちの言うことも大きく間違っちゃいないわな
344 名前:nobodyさん [2008/12/29(月) 23:28:23 ID:hqhRjo69] オブジェクトのメソッド名とプロパティ名の一覧ってどうやって取得したらいいんでしょうか?
345 名前:nobodyさん mailto:sage [2008/12/29(月) 23:37:49 ID:???] リフレクション
346 名前:344 mailto:sage [2008/12/30(火) 12:21:58 ID:???] >>345 有り難うございます おかげで3週間越しの問題が解決しました 本当に有り難うございます
347 名前:nobodyさん mailto:sage [2008/12/31(水) 11:35:34 ID:???] phpの質問かJavaScriptの質問か迷ったのですが、ボタン(button)がクリックされた時に 確認用のダイアログを出すにはどうすれば良いでしょうか? 実行しますか? 【OK】 【キャンセル】 ※ダイアログを表示し【OK】が押された場合のみ submit処理を行ういたいです。
348 名前:nobodyさん mailto:sage [2008/12/31(水) 11:47:59 ID:???] >>347 超JavaScript ググれば死ぬ程出てくる 一番最初に引っかかったページ promptbox.jp/blog/memo/index.php?itemid=785 お年玉くれw
349 名前:nobodyさん mailto:sage [2008/12/31(水) 12:38:49 ID:???] >>348 ありがとうございます。 でもお金ないです。。。
350 名前:nobodyさん mailto:sage [2008/12/31(水) 12:39:59 ID:???] つI
351 名前:nobodyさん mailto:sage [2008/12/31(水) 13:25:47 ID:???] つD 御縁がありますように。
352 名前:nobodyさん mailto:sage [2008/12/31(水) 13:30:12 ID:???] っH
353 名前:nobodyさん mailto:sage [2008/12/31(水) 16:42:47 ID:???] htmlかphpかわからないのでこちらで質問です。 formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に 送るような使い方はできるのでしょうか。 ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで 表示させるといったことをしたいのですが。
354 名前:nobodyさん mailto:sage [2008/12/31(水) 17:24:24 ID:???] php関係無し
355 名前:nobodyさん mailto:sage [2008/12/31(水) 18:25:42 ID:???] そうですか、phpで操作できたらよかったんですが。 その後ググってるとJavaScriptでメニューの値が取得できるようですので これとonClickだかでどうにかできるのかなってことでJSはわからないんですが 少し勉強してみようとおもいます スレ違い失礼しました。
356 名前:nobodyさん mailto:sage [2008/12/31(水) 18:29:31 ID:???] JavaScriptのほうが最適ではあるだろうけど 工数増えるけどPHPでできないこともない まぁガンガレ
357 名前:nobodyさん mailto:sage [2008/12/31(水) 18:57:38 ID:???] 素直にやるならJavaScriptだろうな。 プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。
358 名前:nobodyさん mailto:sage [2008/12/31(水) 18:59:09 ID:???] >>353 リンクにonclickといれてsubmitさせてやればいい
359 名前:nobodyさん mailto:sage [2008/12/31(水) 19:01:23 ID:???] 俺ならselectが変更された時点でJavaScript経由でcookieに表示設定を放り込む。 一度選択したら2回目以降は覚えていて欲しいだろうからな。
360 名前:nobodyさん mailto:sage [2008/12/31(水) 19:49:56 ID:???] URLに数字等を入れる事により1つのphpページ画面をそのパラメータによりページの内容を 変えたいと思います。 どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか? www.test.php=1234 www.test.php=1235
361 名前:nobodyさん mailto:sage [2008/12/31(水) 19:52:15 ID:???] httpのクエリストリングから調べろ
362 名前:nobodyさん mailto:sage [2008/12/31(水) 20:01:42 ID:???] >>360 www.example.com/?page=1234 こういう形なら$_GET['page']で1234が取得できるから これを使って切り替えれば良い ただしpage=1234の1234は誰でも値を入れる事ができるから チェック等は必ずするように
363 名前:360 mailto:sage [2008/12/31(水) 20:14:49 ID:???] >>361 ヒントをありがとうございます。 >>362 詳しくご解説頂きありがとうございました。 早速「ガキ使い」を見ながらプログラミングしてみようと思います。
364 名前:nobodyさん mailto:sage [2009/01/03(土) 12:58:05 ID:???] phpでシステム開発をする場合には通常次の階層の直下に*.phpファイルを置いて 動作確認を行いますよね? C:\Program Files\Apache Software Foundation\Apache2.2\htdocs しかし、1つのPCで複数サイトの開発を行う場合には、次の用にフォルダを切った上で 開発を行っているのですが、この方法は正しいですか? C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site1 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site2 ※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?) localhost/site1/index.html localhost/site2/index.html
365 名前:nobodyさん mailto:sage [2009/01/03(土) 13:04:40 ID:???] hosts にサイト名追加して、VirtualHost つかうとかもあるな。
366 名前:nobodyさん mailto:sage [2009/01/03(土) 13:12:49 ID:???] 俺はZF使ってるからmod_rewrite
367 名前:nobodyさん mailto:sage [2009/01/03(土) 13:20:37 ID:???] 使ってれば偉くなった気になるんですね。わかります。
368 名前:nobodyさん mailto:sage [2009/01/03(土) 13:31:35 ID:???] お前は何を言ってるんだ
369 名前:nobodyさん mailto:sage [2009/01/03(土) 13:31:42 ID:???] 俺も毎日ちんこ使ってるので偉くなった気になっています。
370 名前:nobodyさん mailto:sage [2009/01/03(土) 13:45:12 ID:???] >>365 LinuxじゃないとVirtualHostは使えないのではないですか? それともWindows環境でも出来るのですか? >>366 取り敢えず、 tech.bayashi.net/svr/doc/apache/mod_rewrite.html のサイトで勉強してみようと思います。 実務でphpを使ったWEBサイトの開発とかした事が無いのですが、 実務でphpで開発を行う場合にテキストエディタだけを使っているプロジェクトは少ないですか? あと、複数サイトの開発を1台のPCで行う場合に、>>364 みたいな感じで行うのは 能率が悪いでしょうか?
371 名前:nobodyさん mailto:sage [2009/01/03(土) 13:53:14 ID:???] >>370 べつにWindows環境だってIPベースでも名前ベースでもできるさ
372 名前:nobodyさん mailto:sage [2009/01/03(土) 13:54:52 ID:???] Apacheの話題はスレ違い
373 名前:nobodyさん mailto:sage [2009/01/03(土) 13:57:42 ID:???] >>370 人の話を疑うぐらいなら聞くな >>364 の形で運用するわけじゃないんならダメだろ。 >>365 がFA
374 名前:nobodyさん mailto:sage [2009/01/03(土) 14:00:48 ID:???] おれは常にテキストエディタ(Vim)と過去の開発資源(ライブラリ)だけで事足りてる
375 名前:nobodyさん mailto:sage [2009/01/03(土) 14:19:04 ID:???] んんんだこのgdgdはw 複数サイトをプロジェクト(複数人数)でやるんだから、ファイルのアップロード方式の方が重要。複数の人間がftpでアップするのなら、それを管理しやすい方法で あと、htdocs/aaa/bbb/ とかでやった場合、mod_rewrite の RewriteBase が後でアレな時あり プロジェクトを管理できれば良いので、エディタは何でもいい
376 名前:nobodyさん mailto:sage [2009/01/03(土) 14:38:30 ID:???] 複数の人間が更新するならCVSとか使うかなあ サイト側もcheckoutするのだ
377 名前:nobodyさん mailto:sage [2009/01/03(土) 14:55:16 ID:???] checkoutじゃなくて、exportな
378 名前:nobodyさん mailto:sage [2009/01/03(土) 14:59:27 ID:???] >>371 〜 >>375 あざーす。 ぐぐって勉強してみます。
379 名前:nobodyさん mailto:sage [2009/01/03(土) 15:57:48 ID:???] Subversionを使っているのに何故かデプロイがftp経由ファイル単位なうちのプロジェクトは滅ぼしていいと思う。 >370 同時にいじるなら、何も考えずにやってるとアクセスログが同じファイルになってしまうので、やりづらいと思う。 そのままでもできるけど、バーチャルホストの方がエラーログの切り分けが簡単。 あとは両プロジェクトで同名のクッキーを使った場合衝突が発生する点かな。セッション周りが特に危険。 あと、本番環境に持っていく際に、相対リンク/絶対リンクとか周りで絶対いくつかリンク切れが発生すると思う。 以上のような点を気にしなくて良いのならば、そのままでもいいんじゃない?
380 名前:379 mailto:sage [2009/01/03(土) 16:44:44 ID:???] ああ、そもそもセッション変数が共有されてしまう点の方が問題か。 クッキーは発行パスを適切に指定すれば混ざらないが、本番環境への移行の際に適切な修正をする必要がある。
381 名前:nobodyさん mailto:sage [2009/01/12(月) 12:35:49 ID:???] パール互換の正規表現についてなのですが、 preg_matchなど公式マニュアルに出ている内容については理解したのですが、 Perlとは微妙に違うリテラルやトークンの使い方について詳しく説明してある ドキュメント等はないでしょうか?
382 名前:nobodyさん mailto:sage [2009/01/12(月) 13:43:52 ID:???] PHPって確か鬼車使っているんだっけ だとしたら ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt 補記 3. Perl 5.8.0と比較して存在しない機能 + \N{name} + \l,\u,\L,\U, \X, \C + (?{code}) + (??{code}) + (?(condition)yes-pat|no-pat) * \Q...\E 但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効
383 名前:nobodyさん mailto:sage [2009/01/12(月) 15:24:30 ID:???] ありがとうございます! 参考にメモさせていただきました
384 名前:nobodyさん mailto:sage [2009/01/13(火) 02:11:38 ID:???] くだらない事なんですが、一つ気になっている事があります。 PEAR::Logでログでログ管理をしようと思っているのですが、 手元の参考書やWebで調べると、解説のサンプルプログラムが <?php require_once 'Log.php'; $file = &Log::factory('file', 'out.log', 'TEST'); $file->log('ログ内容'); ?> みたいな場合が多いのですが、この場合Log::factoryで作成した インスタンス(?)の$fileは明示的にcloseか何かしなくて言いのでしょうか? 例えば、普通のファイル操作ならfopenしたら最後はfcloseをするので、 Log::factoryもそれに該当する操作が必要ないのか?と気になりましたので・・・・
385 名前:nobodyさん mailto:sage [2009/01/13(火) 03:08:48 ID:???] マニュアル嫁
386 名前:nobodyさん mailto:sage [2009/01/15(木) 22:20:46 ID:???] テキストファイルを読み込んで一行ごとに配列に入れ 配列を検索して特定の文字が含まれていた場合そのインデックスを返す っていうのをやりたいのですが、わかりません。よろしくお願いします。 インデックス1を返して欲しいんですが、何も返ってきません。 ***テキストファイルの中身******* 群馬県 栃木県 茨城県 埼玉県 東京都 **************************** <?php //ファイルを開く $filename="test.txt"; //配列に代入する $f1=file($filename); //特定の文字が含まれる要素を探す $word="栃木県"; $key=array_search($word,$f1); print($key); ?>
387 名前:nobodyさん mailto:sage [2009/01/15(木) 22:27:13 ID:???] 返り値 ファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。改行記号はついたままとなります。 失敗すると file() は FALSE を返します
388 名前:nobodyさん mailto:sage [2009/01/15(木) 22:28:50 ID:???] $word="栃木県\n";
389 名前:nobodyさん mailto:sage [2009/01/15(木) 23:00:30 ID:???] >>387 >>388 レスありがとうございます。 この検索の場合は完全に一致するものしか検索できないんですね。 例えば $word="玉"; とした場合に 埼玉県のインデックスの3を返すというのは無理なんでしょうか?
390 名前:nobodyさん mailto:sage [2009/01/16(金) 00:17:00 ID:???] >>389 データーベースに入れて 「like」検索をすればできる。
391 名前:nobodyさん mailto:sage [2009/01/16(金) 07:02:26 ID:???] >>389 DBなんて使わなくてもstrposでできる
392 名前:nobodyさん mailto:sage [2009/01/16(金) 15:17:30 ID:???] >>391 strposって、最初に出てきた位置を返す関数じゃない? 「あるかどうか」を調べる関数のほうがいいんだけど。
393 名前:nobodyさん mailto:sage [2009/01/16(金) 15:19:44 ID:???] 最初に出てくる=ある
394 名前:nobodyさん mailto:sage [2009/01/16(金) 16:25:58 ID:???] strposで位置取得 そこまでに\nがいくつあるか ウマー
395 名前:nobodyさん mailto:sage [2009/01/16(金) 23:23:04 ID:???] 俺なら何も考えず配列に格納→foreachでループ→中でstrpos >392 strposは文字列検索としては最速の部類。 他の選択肢はpreg_match位しかないが、preg関数とstr関数じゃお話にならんほど速度が違う。
396 名前:nobodyさん mailto:sage [2009/01/16(金) 23:24:33 ID:???] 説得力を持たせるためにベンチマークを載せてはどうかね?
397 名前:nobodyさん mailto:sage [2009/01/16(金) 23:28:16 ID:???] 自分でやれ
398 名前:nobodyさん mailto:sage [2009/01/17(土) 11:25:45 ID:???] >>396 395ではないが暇なので作ってみた $imakara_ikude = microtime(TRUE); $dokowo_sawatte_hosiinya = '検索対象にしたい任意の文字列'; $kokoga_eenka = '検索したい任意の文字列'; $kokoga_eenka_pattern = '/' . preg_quote($kokoga_eenka, '/') . '/'; $itte_itte_ikimakuru = 100000; for ($i = 1; $i <= $itte_itte_ikimakuru; $i++) { if (strpos($dokowo_sawatte_hosiinya, $kokoga_eenka) !== FALSE) {} // if (strstr($dokowo_sawatte_hosiinya, $kokoga_eenka)) {} // if (preg_match($kokoga_eenka_pattern, $dokowo_sawatte_hosiinya)) {} } $doya_yokattaka = microtime(TRUE) - $imakara_ikude; echo $doya_yokattaka; ■結果 - Windows XP(ペン4 3.2GHz)+XAMPP(PHP5.2.2) strpos():0.060ぐらい strstr():0.052ぐらい preg_match():0.28ぐらい strstr()の方が微妙に早いが、公式マニュアルでstrstr()の説明見ると strpos()使えカスと書いてるので俺は素直にstrpos()使う。
399 名前:nobodyさん mailto:sage [2009/01/17(土) 11:38:45 ID:???] >>392 というわけで、 if (strpos($str, 'search') !== FALSE) を使え。必ず「!== FALSE」にするように。理由は説明ダルいからマニュアル見れ。 >>389 $index = FALSE; $word = '玉'; if ($ary = file('test.txt')) { foreach ($ary as $key => $val) { if (mb_stripos($val, $word) !== FALSE) { $index = $key; break; } } } var_dump($index); strpos()はマルチバイト対応してないので、mb_系使うように。
400 名前:nobodyさん mailto:sage [2009/01/17(土) 11:43:51 ID:???] >>399 で書き忘れたが、大規模検索なら素直にDB使う。 >>384 気持ち悪いなら明示すりゃいい。というか、色んな意味で明示したほうが良いと俺は思う。 phpは、リソースのオープンは明示しなくても自動的に閉じてくれる。(ファイルであれDBであれ) >>382 PHP5から鬼車。mb_ereg()系で。 preg_match()では使われてないのでは?
401 名前:nobodyさん mailto:sage [2009/01/17(土) 11:53:04 ID:???] お前らJavaとPHPのスキルを比率で示してくれ。 俺の場合 Java : PHP = 5 : 5 ただ、レンタルサーバ代がJavaだと高いから力配分を 1:9程度に持って行こうかと思ってる。
402 名前:nobodyさん mailto:sage [2009/01/17(土) 12:00:27 ID:???] >>399 最初にifしてるのはなんで?
403 名前:nobodyさん mailto:sage [2009/01/17(土) 12:05:09 ID:???] >>402 $a = array('a', 'b', 'c'); foreach ($b as $k => $) {} 実行すれば分かる
404 名前:nobodyさん mailto:sage [2009/01/17(土) 12:06:47 ID:???] >>398 変数ワロタwww
405 名前:400 mailto:sage [2009/01/17(土) 12:11:35 ID:???] >>384 あ、ひょっとしたらデストラクタで閉じてるのかもね。と一応>>400 に付けたし。 連レスウザいだろうからこの辺で。
406 名前:nobodyさん mailto:sage [2009/01/17(土) 12:23:28 ID:???] >>403 だったら普通初期化するかキャストするもんだよ
407 名前:nobodyさん mailto:sage [2009/01/17(土) 12:25:11 ID:???] >>406 開こうとしているファイルが必ず開けるとは限らないわな。
408 名前:nobodyさん mailto:sage [2009/01/17(土) 12:26:13 ID:???] >>407 foreach((array)file('〜') as ...)
409 名前:nobodyさん mailto:sage [2009/01/17(土) 12:29:37 ID:???] phpごときで何細かいことウダウダやってんだかww
410 名前:nobodyさん mailto:sage [2009/01/17(土) 12:30:34 ID:???] >>406 エラー処理がしやすいとかじゃね?
411 名前:nobodyさん mailto:sage [2009/01/17(土) 12:34:40 ID:???] あと $ary = file('test.txt') or array(); $ary = file('test.txt') or exit; とか。もしくは例外使う。 何か関数からの出力を得る度にifで1ブロック使うなんてナンセンスすぎ。
412 名前:nobodyさん mailto:sage [2009/01/17(土) 12:38:43 ID:???] 399は最近学び始めてphpが分かってきたから答えたくてたまらないお子ちゃまか
413 名前:399 mailto:sage [2009/01/17(土) 12:39:51 ID:???] >>411 が糞ウザくなってきたから一言。 あのな。 言っておくが、>>399 みたいな処理は普通はクラスのメソッド通すなりするわ。 めんどくさいからはしょってるだけだろーが。分かるか?あ?? なんか>>411 見てると、俺の会社の全然使えないカスPGにそっくりで殴り倒したくなるわw
414 名前:nobodyさん mailto:sage [2009/01/17(土) 12:40:56 ID:???] いやお前のコードが使えないんじゃん
415 名前:nobodyさん mailto:sage [2009/01/17(土) 12:41:35 ID:???] お前ら、質問があっても誰も答えないくせに 誰かが答えるとそれには文句つけないと気がすまないんだな。 どうしようも無いカスだなw
416 名前:nobodyさん mailto:sage [2009/01/17(土) 12:42:27 ID:???] たかがPHPでしょ 動けばいいじゃん ばか?
417 名前:nobodyさん mailto:sage [2009/01/17(土) 12:43:17 ID:???] 能力ないのに見栄を張るとは恥ずかしい奴だなw
418 名前:nobodyさん mailto:sage [2009/01/17(土) 12:46:56 ID:???] さすがPHPスレ。お前ら目糞鼻糞。
419 名前:nobodyさん mailto:sage [2009/01/17(土) 12:50:26 ID:???] ____ ) 『 実行すれば分かる 』っと、 /⌒ ⌒\ ) 『 開こうとしているファイルが必ず開けるとは限らないわな』っと。 /( ●) (●) \ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶 / ::::::⌒(__人__)⌒::::: \ | |r┬-| | \ `ー'´ / ノ \ /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ ____ /::::::─三三─\ foreach((array)file('〜') as ...) /:::::::: ( ○)三(○)\ |::::::::::::::::::::(__人__):::: | _____ \::::::::: |r┬-| ,/ .| | ノ:::::::: `ー'´ \ |
420 名前:nobodyさん mailto:sage [2009/01/17(土) 12:52:06 ID:???] やぱりphpしか使えない奴ってバカっ事でOK? Java使いが一番
421 名前:nobodyさん mailto:sage [2009/01/17(土) 12:52:28 ID:???] >>419 ウケルwwwww
422 名前:nobodyさん mailto:sage [2009/01/17(土) 12:53:47 ID:???] アホな奴もいるもんだなw
423 名前:nobodyさん mailto:sage [2009/01/17(土) 13:03:06 ID:???] 自演煽りのクオリティが低すぎて吹いた
424 名前:nobodyさん mailto:sage [2009/01/17(土) 13:46:03 ID:???] 書き込み時間と日頃のレスの伸びからして2名が暴れていただけらしいな PHPやってると頭だけではなく性格まで悪くなるらしいから気をつけようww 融通利かないやつやコミュニケーション能力無いやつは PGだろうが何だろうが使えん うちにも1名いて給料の査定も下がったはずだが、はやくその理由に気付いて辞めてくれ
425 名前:nobodyさん mailto:sage [2009/01/17(土) 17:45:47 ID:???] 一週間を表示する関数を作ってみたんですが、 どういうわけか土曜日だけ文字化けしてしまいます。 解決策はないでしょうか? <?php write_day(); //一週間を表示する関数 function write_day(){ while($i<7){ print($f1[$i]); $ts=getDay($i); print(date("m/d".getYoubi(date("w",$ts)),$ts)); $i++; } } //曜日を漢字に変換 function getYoubi($wday) { $arr = array("(日)","(月)","(火)","(水)","(木)","(金)","土"); return $arr[$wday]; } //日にちを取得する関数 function getDay($day){ $now = time(); return mktime(date("H",$now),date("i",$now),date("s",$now),date("m",$now),date("d",$now)+$day,date("Y",$now)); } ?>
426 名前:nobodyさん mailto:sage [2009/01/17(土) 18:23:30 ID:???] >425 コードをShift_JISで書かないでUTF-8にするだけで解決。
427 名前:nobodyさん mailto:sage [2009/01/17(土) 18:52:25 ID:???] >>426 一発で解決しました。ありがとうございます。 本当文字コードって難しい。 スクレイピングでサイト作る人とか超尊敬。
428 名前:nobodyさん mailto:sage [2009/01/17(土) 23:41:37 ID:???] >>425 まったく関係ないんだけど 土曜日だけ()が付かないのはなんでなんだろうと思った。
429 名前:nobodyさん mailto:sage [2009/01/18(日) 07:29:09 ID:???] >>428 土曜日だけどうしても文字化けで表示できず いろいろと試行錯誤した結果わからなかったので 質問しました。 ()除いたりといった試行錯誤の名残をそのまま 書いてしまいました。ごめんなさい。
430 名前:nobodyさん mailto:sage [2009/01/18(日) 11:24:28 ID:???] >>424 自己紹介乙
431 名前:nobodyさん mailto:sage [2009/01/18(日) 20:28:36 ID:???] プログラム経験無しで、今からPHPを勉強しようと思っています。 そんな俺に、一冊買うならコレ!っていうPHPの参考書を教えてください。
432 名前:nobodyさん mailto:sage [2009/01/18(日) 20:32:39 ID:???] >>431 www.php.net/manual/ja/
433 名前:nobodyさん mailto:sage [2009/01/18(日) 21:03:22 ID:???] >>432 本をonegaisimasu
434 名前:nobodyさん mailto:sage [2009/01/18(日) 22:30:36 ID:???] まずマニュアル嫁
435 名前:nobodyさん [2009/01/18(日) 23:59:27 ID:542zz2rd] アンケートプログラムなんかでよくある、全部の項目が入力されているかを submitボタンが押されたときに調べて、それが通ればsessionに入力項目を追加して次のページへ ってことをやりたいんですが、 全部の項目が入力されているかを調べるのはonclickにJavascriptでチェック出来ますが、 そのあと動的に選んだ値をphpのsession変数に追加するのってどうしたら良いのでしょうか?
436 名前:nobodyさん mailto:sage [2009/01/19(月) 00:03:08 ID:???] $_SESSION['hoge'] = $hoge;
437 名前:nobodyさん [2009/01/19(月) 00:11:48 ID:jnDZLn2z] >>436 すいません、えっとどう言ったら良いのか; 質問のニュアンスを伝えるためにわざと無茶苦茶に書くと、 <input type="submit" onclicke="check()" /> <script type="text/javascript"> function check(){ //checkコード if(allchecked){ $SESSION['age']=document.getElementsById("age"); } } </script> こんな風な意味合いのことをする方法を聞きたかったのです。
438 名前:nobodyさん mailto:sage [2009/01/19(月) 00:16:55 ID:???] PHPとJavascriptの違い分かってないの?
439 名前:nobodyさん [2009/01/19(月) 00:21:05 ID:jnDZLn2z] >>438 あくまでニュアンスを伝えるために上記のような書き方をしているだけで、 サーバサイドphpとユーザサイドJavascriptの違いは分かってます。 ただphpではこういうチェックが出来ないのでどうしたものかと迷ったので。
440 名前:nobodyさん mailto:sage [2009/01/19(月) 00:21:42 ID:???] よく分からんがGETで取れば?
441 名前:nobodyさん mailto:sage [2009/01/19(月) 00:22:12 ID:???] いやPOSTでもいいけど
442 名前:nobodyさん mailto:sage [2009/01/19(月) 04:21:49 ID:???] >>437 よく意味がわからんが・・・ <form name="form1" method="post" action="hoge.php"> <input type="submit" onclick="return check();" /> 名前:<input type="text" name="name" /> </form> <script type="text/javascript"> function check(){ //checkコード if (document.form1.name=='') { alert('名前が入力されていません'); return(false); } return(true); } </script> あとはhoge.phpでnameを受けとってセッション変数に放り込むなり好きにするヨロシ。
443 名前:nobodyさん mailto:sage [2009/01/19(月) 04:44:39 ID:???] ただのjavascriptの話になってるw
444 名前:nobodyさん mailto:sage [2009/01/19(月) 17:58:38 ID:???] うわわわわ。。。 issetでもisSetでも書けるくさいなぁ(´・ω・`)
445 名前:nobodyさん mailto:sage [2009/01/19(月) 20:15:28 ID:???] str_replaceよりpreg_replaceが速いのか
446 名前:nobodyさん mailto:sage [2009/01/20(火) 00:26:44 ID:???] >>445 それはありえない preg_replaceは正規表現の処理が入る分遅くなる ついでにいうと、単純な置換ならstrstrよりstr_replaceの方が速い
447 名前:445 mailto:sage [2009/01/20(火) 00:28:42 ID:???] >>446 じゃあここのはウソってことか。。。 ttp://phpspot.org/blog/archives/2006/11/12php.html
448 名前:nobodyさん mailto:sage [2009/01/20(火) 00:37:17 ID:???] うん
449 名前:nobodyさん mailto:sage [2009/01/20(火) 00:58:56 ID:???] >>447 そのサイトは検証もせずコピペしてるだけだからあまり鵜呑みにしない方がいい
450 名前:nobodyさん mailto:sage [2009/01/20(火) 01:55:00 ID:???] 原文はこう書いてある。 str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4 PHPの勉強の前に、まず英語勉強しようぜ
451 名前:nobodyさん mailto:sage [2009/01/20(火) 06:28:50 ID:???] >>450 その原文の出典ってどこ?
452 名前:nobodyさん mailto:sage [2009/01/20(火) 07:38:55 ID:???] >>447 のリンク先
453 名前:nobodyさん mailto:sage [2009/01/20(火) 12:58:32 ID:???] >>447 記事がうそじゃないとしても、2年も前だとあまり当てにならないな。 5.1.x時代だっけ
454 名前:nobodyさん [2009/01/20(火) 14:17:46 ID:auDP4Xko] sql文の中に多数の変数を入れるにはどうしたらよいのでしょうか?
455 名前:nobodyさん mailto:sage [2009/01/20(火) 14:24:08 ID:???] 普通に文字列連結じゃだめなの? 意図がいまいちわからない。 あ、エスケープはしっかりしろよな。
456 名前:454 mailto:sage [2009/01/20(火) 20:16:30 ID:???] >>455 はい普通に . でした 6時間前の自分にゲンコツしときました
457 名前:nobodyさん [2009/01/20(火) 23:14:20 ID:FkFXLWeK] php5.seesaa.net/category/3813207-1.html ここを見ながら勉強中で、ひとつ前の Step9・入力された値をPHPでチェックする まではうまくいったんですが、 Step10・入力された値をJavaScriptでチェックする が、うまくいきません。イントラネットとかいうのが関係してるんでしょうか。。 何度も確認したんですけど、警告ウインドウが出てきません
458 名前:nobodyさん mailto:sage [2009/01/20(火) 23:21:44 ID:???] 問題の切り分けすべし
459 名前:nobodyさん mailto:sage [2009/01/21(水) 03:11:36 ID:???] まずなにも入れないで計算してみて。 あとjavascript有効になっている?
460 名前:nobodyさん [2009/01/21(水) 09:46:52 ID:VkT7uFdT] >>459 さん javascriptは、セキュリティのところでいじればいいんですよね。 それでしたら有効になってます。 なにも入れないで計算すると ------------------- +=0 前の画面へ戻る ------------------- って出ます。IEから見るソースは ------------------- <html> <head> <title>calc.php</title> </head> <body> +=0 <br/> <br/> <a href="#"onclick="history.back();return false;">前の画面へ戻る</a> </body> </html> ------------------------------ です。 書いてるソースのほうは php5.seesaa.net/category/3813207-1.html にあるとおりだと思います。
461 名前:nobodyさん mailto:sage [2009/01/21(水) 10:44:16 ID:???] calc.htmlはどうなっているの? 最初に実行するプログラムはなに? calc.htmlだよね? そこからcalc.phpで処理してってことだけど、 form action とか大丈夫これどうり記述しているよね? jsも読み込んでいるよね。 パスもあっているよね?
462 名前:nobodyさん [2009/01/21(水) 13:51:32 ID:ruw5pBd2] <input type="text" name="名前" size="20" /> <? $line = "==名前=="; $line = ereg_replace("==(.*)==", $_REQUEST["\\1"], $line); ?> 上記スクリプトで $line を name="名前" のフォーム値に置換したい のですができません。どうすれば置換できるでしょうか?
463 名前:nobodyさん mailto:sage [2009/01/21(水) 14:09:33 ID:???] マニュアル見れ あとeregよりpreg
464 名前:nobodyさん [2009/01/21(水) 14:58:58 ID:VkT7uFdT] >>461 さん calc.htmlのソースは --------------------------- <html> <head> <script type="text/javascript"src="calc.js"></script> <title>calc.html</title> </head> <body> <form name="form1"action="calc.php"method="post"> <input type="text"name="txtA"id="txtA"> <select name="selOpe"size=1> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type="text"name="txtB"id="txtB">=? <br> <input type="submit"value="計算"> <input type="reset"value="クリア"> </form> </body> </html> ------------------------------------- です。パスがあっているかどうかは、どこを見るとわかりますか?
465 名前:nobodyさん mailto:sage [2009/01/21(水) 15:12:50 ID:???] >>464 のソースの中を見ればわかりますよ!( ^∀^)b
466 名前:nobodyさん mailto:sage [2009/01/21(水) 15:27:54 ID:???] sample012 の中にはなにが入っている? sample011までPHPは動いていたんだよね? わからん。 ほんと。php5.seesaa.net/category/3813207-1.html と同じことしているんでしょう? calc.jsもsample012のフォルダの中にはいっているんでしょう? ソースはコピペしてやっているんでしょう?
467 名前:nobodyさん [2009/01/21(水) 16:23:54 ID:VkT7uFdT] >>465 さん >>466 さん コピペしなおしたらできるようになりました。 でもどこが悪かったのかわからに・・
468 名前:nobodyさん mailto:sage [2009/01/21(水) 19:35:45 ID:???] 考えられるのは、どっかに空白がはいってしまったこと。 なんか変な文字がどこかにはいってしまったか。 おれもコピペでそういうことになったことは よくある。 見たとこミスはないので、あのソースをきちんと理解 して次進んでいいと思うよ
469 名前:nobodyさん [2009/01/21(水) 21:43:57 ID:VkT7uFdT] 空白もいけないんですか 先生ありがとう
470 名前:nobodyさん mailto:sage [2009/01/21(水) 22:33:22 ID:???] いやあくまでも想像だけど、でも間違っているところがないから。 以後もし動かったら再度コピペすることを望みます。
471 名前:462 [2009/01/22(木) 10:25:52 ID:PnoeEoeZ] >>463 すみません、マニュアル見直しました。 ところで、 $line = "==名前=="; //$line = preg_replace("/==(.*)==/e", "$_REQUEST['$1']", $line); $line = preg_replace("/==(.*)==/e", "rep('$1')", $line); function rep ($text) { return $_REQUEST["$text"]; } コメント行の置換が動作せずに下記エラーが発生するのですが、 いちいちrepのようなfunctionを用意しなきゃいけないのでしょうか? Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /************/index.php on line 340
472 名前:nobodyさん mailto:sage [2009/01/22(木) 10:36:31 ID:???] preg_replace_callback じゃないのか
473 名前:nobodyさん mailto:sage [2009/01/22(木) 12:54:40 ID:???] $line = "==名前=="; $line= preg_replace("/==(\S*)==/e", 'sprintf("<input type=\"text\" name=\"$1\" value=\"%s\" />", isset($_REQUEST["$1"]) ? $_REQUEST["$1"] : "")', $line); こうやりたいのか? キー文字は==全角==じゃなくて==半角==がいいと思うが
474 名前:473 mailto:sage [2009/01/22(木) 13:16:38 ID:???] htmlspecialcharsも使わないとやヴぁいか。。。
475 名前:462 [2009/01/22(木) 13:23:02 ID:PnoeEoeZ] >>473 すいません、解決しました。バカみたい・・・ $line = preg_replace("/==(.*)==/e", 'sprintf("%s", $_REQUEST["$1"])', $line);
476 名前:nobodyさん [2009/01/23(金) 05:27:52 ID:L5uKYwrL] 今初めてのPHP+mysqlを勉強しているのだが、 17章のサンプルアプリケーションが動かない。 これって仕様かな? おれはcent os5でやったんだが、画面真白で。 linuxで誰かやってくれませんか?すいませんが お願いします。ソースは一応レンタルサーバーと ホームページ上に貼り付けているんで、 ソースダウンロードできないんだ。 gichioka.web.fc2.com/source.zip ←ソースをダウンロード www.krautgrrl.com/learningphp/index.php/site/C17/ ←データベース とかもろもろ貼ってあります。 お手数ですが、よろしくお願いします
477 名前:nobodyさん [2009/01/23(金) 05:29:33 ID:L5uKYwrL] 日本語へたで申し訳ないですが、まあ両方見てやってみてください。 ほんとはphpの本のスレに行きたかったんだけどなくなってしまった みたいで。 すいませんが、よろしくお願いします
478 名前:nobodyさん [2009/01/23(金) 05:34:48 ID:L5uKYwrL] すいません。 サンプルコードありました。 昔はなかったのに www.oreilly.co.jp/books/9784873113654/ ここです。
479 名前:nobodyさん mailto:sage [2009/01/23(金) 07:37:08 ID:???] オライリー本、 読んで理解できたためしがない
480 名前:nobodyさん mailto:sage [2009/01/23(金) 08:08:21 ID:???] >>478 エラーメッセージは?
481 名前:nobodyさん mailto:sage [2009/01/23(金) 16:01:37 ID:???] <?php session_start(); $anc = array('anc1' => 'one', 'anc2' => 'two', 'anc3' => 'three'); $html = '<html><body><form action="">'; switch ($_REQUEST['m']) { case '1': $html .= 'confirm<br />'; foreach ($anc as $k => $v) { $_SESSION[$k] = $_REQUEST[$k]; if ($_REQUEST[$k]) { $html .= $v . '=checked! '; } } $html .= '<br /><input type="hidden" name="m" value="2"><input type="submit" value="go!">'; break; case '2':
482 名前:nobodyさん mailto:sage [2009/01/23(金) 16:04:18 ID:???] $html .= 'finish<br />'; $param = ''; foreach ($anc as $k => $v) { $_SESSION[$k] = $_REQUEST[$k]; if ($_REQUEST[$k]) { $param .= $v . '=checked! '; } } if ($fp =@ fopen('anc.dat', 'a')) { fputs($fp, date("Y/m/d H:i:s ") . ' ' . $param . ' ' . $_SERVER["REMOTE_ADDR"] . "\n"); fclose($fp); } $html .= 'thank you!'; break; default: $html .= 'question<br />'; foreach ($anc as $k => $v) { $html .= '<input type="checkbox" name="' . $k . '" value="1">' . $v . ' '; }
483 名前:nobodyさん mailto:sage [2009/01/23(金) 16:08:55 ID:???] $html .= '<br /><input type="hidden" name="m" value="1"><input type="submit" value="next">'; } $html .= '</form></body></html>'; echo $html; exit; ?> パソコンが今使えないので携帯で消化してしまってごめんなさい このプログラムのoneやtwoを別のファイルに記録したいんですが どうすればよいでしょうか? すごい初心者なので、良ければ具体的に教えていただければ嬉しいです スレチや失礼あればごめんなさい
484 名前:nobodyさん [2009/01/23(金) 16:11:58 ID:Jr51+scJ] あと、これを一時間くらいでやらなきゃなので テンパってます… お待ちしてます
485 名前:nobodyさん mailto:sage [2009/01/23(金) 16:34:47 ID:???] 初心者とかじゃなくて、 「oneやtwoを別のファイルに記録したいんですが 」 日本語か?それ。
486 名前:nobodyさん [2009/01/23(金) 16:40:52 ID:Jr51+scJ] すいません やはり分かりにくかったですか questionの解答がoneやtwoになっていて その解答を記録したいんです 解答した日付時刻などはanc.datに記録されますが なにを答えたかが記録出来てないと思うのですが
487 名前:nobodyさん mailto:sage [2009/01/23(金) 16:58:18 ID:???] >>486 なんかエラー出てると思うけどねぇ。 エラーを確認するのが解決への近道だよ。 たぶん、原因は↓かと。 $param .= $v . '=checked! '; $param .= "{$v}=checked! "; に変えてみたらどうかな?
488 名前:nobodyさん [2009/01/23(金) 17:08:51 ID:Jr51+scJ] >>487 あれ paramじゃなくてそこはhtmlにではないですかね 僕の方では一応エラーは出てません
489 名前:nobodyさん mailto:sage [2009/01/23(金) 17:21:03 ID:???] >>486 セッションが引き回せていないだけ、ってオチじゃないの? case '2'のところで、print_r($_SESSION)ってやってみれば?
490 名前:nobodyさん [2009/01/23(金) 17:27:13 ID:Jr51+scJ] >>489 すいません どの辺りに入れたらいいかよろしければおねがいします セッション引き回す?の意味がよく分からないのですが …念のためお聞きしますが、このプログラムでは解答をファイルに書き込めないですよね?
491 名前:nobodyさん mailto:sage [2009/01/23(金) 17:37:42 ID:???] >>486 もう少し頭を整理したら? 回答はどのファイルに書き込むの? > oneやtwoを別のファイルに記録したいんですが 回答毎に別のファイルを作るってことかい?
492 名前:nobodyさん mailto:sage [2009/01/23(金) 17:39:39 ID:???] //$_SESSION[$k] = $_REQUEST[$k]; //if ($_REQUEST[$k]) { if ($_SESSION[$k]) {
493 名前:nobodyさん mailto:sage [2009/01/23(金) 17:52:40 ID:???] >>490 デバッグなんだから、どこでもいいよ。 とりあえず、聞く前に試したら? セッションに代入した(はずの)後、 代入された(はずの)セッションを使う前
494 名前:nobodyさん [2009/01/23(金) 17:58:15 ID:Jr51+scJ] >>491 これをwebアンケートのようにしたときに これを解答した人が何を選んだのか記録するファイルを作りたいんです 今はanc.datをつくればそこに日付等が記録されますが できれば加えてone,two,threeのどれにチェックをつけたかも記録したいということです 記録するのがanc.datファイルでなくてもよいです >>492 ありがとうございます! それで上記みたいな事ができるでしょうか? 今は分かりませんが、夜に試してみます
495 名前:nobodyさん [2009/01/23(金) 18:00:35 ID:Jr51+scJ] >>493 自分でさっきいろいろ挿入してみました どうしてもエラーが出てしまったので あとで>>492 を試してみます ありがとうございます!
496 名前:476です。 [2009/01/23(金) 19:42:52 ID:L5uKYwrL] エラーメッセージは Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0 でした。 わかる人いますか? ぜんぜんわかりません。 ちなみにsmartyはhangar5.blog48.fc2.com/blog-entry-27.html でインストールしました。
497 名前:nobodyさん mailto:sage [2009/01/23(金) 20:01:20 ID:???] すんまそん、どなたか教えて下さい あるphpで書かれたスケジューラを使っているのですが、ユーザ認証の際に POSTで パスワードを受け取り($pwd)、これの一部をsaltとして使い、crypt()でパスワードを暗号化しています。 おおまかな処理は以下の様な感じで行っています(htmlspacialchars等は省きました)。 /* $userid, $pwd => POSTから受け取ったユーザ名・パスワード */ $ pwd_cr = crypt( $pwd, substr( $pwd, 3, 2 ) ); /* SQL文作成 */ $sql = "SELECT id, passwd FROM users "; $sql .= "WHERE id='".$userid."' AND password='".$pwd_cr."'"; /* SQLの結果セット取得 */ $res = pg_query($conn, $sql); $cnt = pg_num_rows($res); 教えてもらいたい事ですが、この crypt( string $str [, string $salt ] ) について、 $str と $salt が完全に同じものである場合、どのような環境でも、生成される文字列は常に同一のものになるのでしょうか? なんでまたこんな事を聞くかと言うと Windows ServerにApacheとPHPをぶちこんで動かしていたら、Apache再起動のタイミングで 何故か 同一の $str ・ $salt から生成される文字列が変わってしまった経験が今日を含めて2回起きたからです。 そりゃ確かに php.netのマニュアルには > そのシステム上で使用できるその他のアルゴリズムを使用します と書いてあるんですが…ンなcryptの動作がコロコロ変わるものなんでしょうか?
498 名前:nobodyさん mailto:sage [2009/01/23(金) 20:04:21 ID:???] 連投すみません、追記。 crypt の挙動が変わる辺りで Windows Update を挟んでいたかどうかは、情けない事にわかりません。 むしろ、 Windows Update で crypt の挙動が変わる可能性があるなら、どのHotfixが怪しいか教えてもらえるとありがたいです。
499 名前:nobodyさん mailto:sage [2009/01/23(金) 20:10:33 ID:???] >>496 (>>476 ) 「 /var/www/html/login.php 」について、下の2つの確認まじおすすめ ・確実に存在しているのか ・Apacheを実行しているユーザが読めるのか(パーミッションを確認)
500 名前:476です。 [2009/01/23(金) 20:41:49 ID:L5uKYwrL] >>499 さんへ /var/www/html/login.php 確実にあります。 パーミッションもユーザーが読めるようにしています。 smartyもできてます。 if (class_exists('Smarty')) { $smary =& new Smarty; printf("you can use Smarty(version %s).\n", $smary->_version); } else { echo "you can't use Smarty.\nplease install Smarty library."; } で確認をとりましたし、テストデータもいれました。 ってことはlinuxだからだめってことですよね? ほかに考えられないんですよ。 基礎からのphpのサンプルアプリケーションもlinuxでだめでした。
501 名前:nobodyさん mailto:sage [2009/01/24(土) 21:09:15 ID:???] >>476 ・ DB関連の記述は間違っていないか MySQLみたいだけど、特に $db_host 等 ・ php自体の記述が間違ってないか つーかphpの文法はわかってる?あとファイル始端終端の無用な空白行やコメント、文字コードとかにも注意。 ・ 最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++; を入れて止まってるところを探せ php勉強するなら結局はコレ大事。 あとは、本気でどうにも出来ないけどどうにかしたい、って言うなら↑の3つを試した後で 今使ってるMySQLの中身と、今のDocumentRootのディレクトリ構成、php.ini、httpd.conf を、ディレクトリ構成ごとまとめて zipでうpする位は必要だな。レスが付くかどうかは知らんけど。 >>476 の source.zip だけじゃ db_login.php とか、Auth/HTTP.php とか入ってないっしょ。 ドキュメント見たらなんか、学習に沿って自分で作って配置するものらしいけど…そんなんわからんがな。 これじゃ相当なヒマ人かエスパーじゃない限りレスも何もでけん。
502 名前:476です。 [2009/01/24(土) 22:31:06 ID:M+3olz+y] >>501 Auth/HTTP.php これはpearだぜ。 db_login.php はつくったけど、結果はだめでした。 もういいです。すいませんでした。 Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0 これも連日ぐぐっているけど、だめ。 orellyに聞いたところ確認するって。 誰か持っていてアプリをlinuxで試した人いるかなって 思ったんだけど、いないみたいですね。 スレ汚しすいません。 持っている方はぜひやってみて。 報告待っています souce.zipは削除しますので、 暇なエスパーの方でおれやってみようかな?っていう方 はwww.oreilly.co.jp/books/9784873113654/ からダウンロードしてみてください。 ではすいませんでした。
503 名前:nobodyさん mailto:sage [2009/01/24(土) 22:41:25 ID:???] もっかい自分が今扱っているコードと関連ファイル(ディレクトリ構成そのままで)をうpしてくれ
504 名前:nobodyさん mailto:sage [2009/01/24(土) 23:08:37 ID:???] "Unknown on line 0" そのエラー、稀に文字コードの問題はあるにしてもソースの問題じゃないと思うけど。 サーバー設定で権限がなくて読みに行けないとか、だな。
505 名前:nobodyさん mailto:sage [2009/01/24(土) 23:11:53 ID:???] 元ファイルがUnknownなのにlogin.phpがincludeできないというのもおかしいな
506 名前:nobodyさん mailto:sage [2009/01/24(土) 23:21:55 ID:???] >>505 おかしくない。よくあること。
507 名前:nobodyさん mailto:sage [2009/01/24(土) 23:23:43 ID:???] なぜに?
508 名前:nobodyさん mailto:sage [2009/01/24(土) 23:49:33 ID:???] Unknown on line 0 Unknownとは、読みに行く側のリソースが特定できていないということ。 Web経由のアクセスの場合、login.phpはあるが、権限が不足していたりすると404じゃなく、 phpハンドラーに渡されて、そのエラーになる。普通によくあること。 >>500 は「パーミッションもユーザーが読めるようにしています。 」って書いてるが、 読めなくなる原因はファイルパーミッションだけじゃないからね。
509 名前:nobodyさん mailto:sage [2009/01/24(土) 23:56:53 ID:???] 実際のところ、>>501 のアドバイスの3つ目をやってみてないわけだな。 とりあえず、最初に叩くファイルの冒頭にecho "hoge";exit();これでどうなるか。 そっからデバッグしてけば別のエラーになるさ。
510 名前:nobodyさん mailto:sage [2009/01/25(日) 01:33:09 ID:???] >最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++; だせぇw
511 名前:476です。 [2009/01/25(日) 02:01:51 ID:esMzMmSN] >>503 さんへレスくれた方へ gichioka.web.fc2.com/source.zip すべてのファイルとデータベースとphp.iniを入れました。 よろしくお願いします。
512 名前:nobodyさん mailto:sage [2009/01/25(日) 02:15:21 ID:???] どれ実行して>>502 が出んの?
513 名前:nobodyさん [2009/01/25(日) 02:28:51 ID:esMzMmSN] login.phpとposts.phpです。
514 名前:nobodyさん mailto:sage [2009/01/25(日) 02:41:42 ID:???] >>510 ださくない、ださくないよ
515 名前:nobodyさん mailto:sage [2009/01/25(日) 02:44:07 ID:???] >>513 login.phpの中で/var/www/html/login.phpなんてincludeしてんの?
516 名前:nobodyさん mailto:sage [2009/01/25(日) 03:08:45 ID:???] ダブルクォーテーションで囲んだ文字列に改行をいれてもエラーにならないのですが、 これって文章化されたPHP仕様に含まれてますか? てっきりヒアドキュメントを使わなくてはならないものだと思っていたのですが… $multiline = " LINE 1 LINE 2 LINE 3 ";
517 名前:nobodyさん mailto:sage [2009/01/25(日) 03:24:57 ID:???] PHPだけじゃなくて一般の言語全てがそうだと思われます(pyなんとかは一般でないから除く)
518 名前:nobodyさん mailto:sage [2009/01/25(日) 03:58:37 ID:???] >>516-517 VBだと改行で認識するよね。 だからVBからきた人だと、改行入れても エラーにならない、という仕様のほうが 不思議に思うんでしょう。
519 名前:516 mailto:sage [2009/01/25(日) 04:22:47 ID:???] ありがとうございます。 有名どころのフレームワーク等でも $multiline = "LINE1\n" . "LINE2\n" . "LINE3\n" と書いているものがほとんどなので、使ってはいけないのかなと疑問を持った次第です。 SQLとか埋め込む時は>>516 の方が断然楽ですよね… ヒアドキュメントはいらない子?
520 名前:nobodyさん mailto:sage [2009/01/25(日) 04:37:23 ID:???] いる子
521 名前:nobodyさん mailto:sage [2009/01/25(日) 05:48:15 ID:???] >>519 ヒアドキュメントは、"をエスケープしなくてすむのがいい。
522 名前:nobodyさん mailto:sage [2009/01/25(日) 05:59:54 ID:???] 多次元配列の要素数を返す関数はありませんか? 例えば $test['a'][1]; $test['a'][2]; $test['b'][1]; $test['b'][2]; $test['b'][3]; この配列で要素数5を返したいのですが countでは3が返ってきます。 何かほかの関数や手段はありますか?
523 名前:nobodyさん mailto:sage [2009/01/25(日) 06:07:51 ID:???] >>522 array_merge_recursive
524 名前:nobodyさん mailto:sage [2009/01/25(日) 06:08:42 ID:???] array_walk_recursive すまんこっちのほうだ
525 名前:nobodyさん mailto:sage [2009/01/25(日) 07:39:19 ID:???] echo count($test, 1) ttp://jp2.php.net/manual/ja/function.count.php
526 名前:nobodyさん mailto:sage [2009/01/25(日) 08:17:33 ID:???] >>476 >>515 だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。 たとえば、お前らのサーバでも試せるからやってみ。 test.php作ってパーミッションを000にしたファイルにアクセス。 したら、 Warning: Unknown: Failed opening ・・・ になるから。
527 名前:nobodyさん mailto:sage [2009/01/25(日) 08:29:44 ID:???] おいおい、マルウエアかよ
528 名前:476です。 [2009/01/25(日) 11:45:32 ID:esMzMmSN] だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。 なんででしょうか?
529 名前:nobodyさん mailto:sage [2009/01/25(日) 11:56:54 ID:???] なんでて、言う前に試してみた? login.phpの中身を空っぽにしてアクセスしてみ?
530 名前:nobodyさん mailto:sage [2009/01/25(日) 12:04:32 ID:???] >>528 原因はパーミッション以外にいろいろあるよ。 パーミッションだってあってるのかどうか。 他にはopen_basedirとかsafe_modeとか、 CGIで動いてるレンサバなんかならそれに合わせた設定が必要だし。
531 名前:nobodyさん mailto:sage [2009/01/25(日) 12:08:36 ID:???] >>526 上と被るけどそれじゃ単純なhello worldスクリプトも動かないってこと?
532 名前:nobodyさん mailto:sage [2009/01/25(日) 12:09:07 ID:???] >>528 宛てね
533 名前:nobodyさん mailto:sage [2009/01/25(日) 12:14:51 ID:???] >>531 Hello Worldが動くかどうかなんて、エスパーじゃあるまいしわからないさ。 が、とりあえず、それを試せば問題は次に移るってこと。 Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0 冗長だけどもっかい書くとね。 Apache:login.phpにリクエスト来ました。ファイルありました。phpハンドラー、後はよろしく。 php:了解、じゃ、ファイルをインクルードして処理します〜。あ、ファイル、インクルードできません。 で、エラー from:不明なリソース to: login.php action:include result:無理
534 名前:nobodyさん mailto:sage [2009/01/25(日) 12:19:12 ID:???] こういうケースでよくあるのは パーミッションが間違ってる。 open_basedirの設定にtypoがあって動かない。 include_pathに問題がある safe_modeの設定に問題がある PHPがsuexecで動いてて、ファイルの所有ユーザーかグループに問題がある などなど。
535 名前:nobodyさん mailto:sage [2009/01/25(日) 12:20:35 ID:???] >>533 いやお前さんに聞いてるだけじゃなくて本人に聞いてるんだよ
536 名前:nobodyさん mailto:sage [2009/01/25(日) 12:21:27 ID:???] まぁ、login.phpの冒頭にphpinfo(INFO_CONFIGURATION); とでも書いて結果を貼ってもらうってのがいいのかもしれないね。この場合。
537 名前:nobodyさん mailto:sage [2009/01/25(日) 12:22:17 ID:???] >>535 あぁ、そういうことね。
538 名前:476です。 [2009/01/25(日) 13:36:25 ID:esMzMmSN] >>536 へ phpinfo(INFO_CONFIGURATION); かいたやつを入れましたのでよろしくお願いします。
539 名前:476です。 [2009/01/25(日) 13:42:05 ID:esMzMmSN] source.zipの中にはいっています。
540 名前:nobodyさん mailto:sage [2009/01/25(日) 13:44:10 ID:???] source.zipアクセスできなかったよ? ところで、login.phpでecho "Hello World!";はしてみたの?
541 名前:nobodyさん mailto:sage [2009/01/25(日) 13:44:40 ID:???] てか、そのURL貼っちゃえw
542 名前:nobodyさん mailto:sage [2009/01/25(日) 13:45:57 ID:???] >>538 なぜ531はシカト?
543 名前:nobodyさん mailto:sage [2009/01/25(日) 13:49:36 ID:???] え、シカトされて怒ってんの?
544 名前:nobodyさん mailto:sage [2009/01/25(日) 13:50:22 ID:???] これは、マルウエアをインストールさせるための釣りだな。たぶん。
545 名前:476です。 [2009/01/25(日) 14:46:06 ID:esMzMmSN] login.phpでecho "Hello World!"; はできました。 source.zipアクセスできるようになりましたので、よろしくお願いします。 >>マルウエアをインストールさせるための釣りだな。たぶん。 変なこといわないでください
546 名前:nobodyさん mailto:sage [2009/01/25(日) 14:53:00 ID:???] >>545 そしたら、元のソースにして、エラーが出る個所を特定すればいい。 1行でも解釈できれば例のエラーにはならないから。 で、リダイレクトループとかで問題が出ているケースもあるから、 error_log(__LINE__);とかを怪しいところにはさんで行って、どこまで処理が進んでるかチェック。
547 名前:476です。 [2009/01/25(日) 15:00:45 ID:esMzMmSN] error_log(__LINE__); の使い方がわかなんね。 どうやって使うの?
548 名前:nobodyさん mailto:sage [2009/01/25(日) 15:04:41 ID:???] それ書いて、エラーログ見れば、行番号が出力されてくる。 コマンドラインが使えるならエラーログでtail -f /var/log/httpd/error_logとかで見張ってればよくわかる。 エラーログが見れないんならechoでもいいけど、要するにどこまで処理が進んでるかチェックして そのエラーメッセージを出せば、新しい情報がとれるでしょ?
549 名前:nobodyさん mailto:sage [2009/01/25(日) 16:08:16 ID:???] なんで原因を特定しようとせんの? Hellow World→動く サンプルコードをそのまま挙げた→動かない これしかやってないでできないできない言うとかありえないっす
550 名前:476です。 [2009/01/25(日) 20:01:42 ID:esMzMmSN] みなさん。ありがとうございます。 error_log(__LINE__); でいろいろ調べてみたいと思っています
551 名前:476です。 [2009/01/25(日) 20:12:36 ID:esMzMmSN] エラーがでました。 PHP Fatal error: require_once() [function.require]: Failed opening required 'config.php' (include_path='.:/usr/local/include/php/libs') in /var/www/html/login.php on line 3 だそうです。 調べてみてもわからん。
552 名前:476です。 [2009/01/25(日) 20:13:47 ID:esMzMmSN] ひとつ事例があり、SELINUXが原因かと思いましたが SELINUXは切ってありました。
553 名前:476です。 [2009/01/25(日) 20:51:19 ID:esMzMmSN] すいません。質問です。 無事動いたのですが....動いたといえるのか。 HTTP/AUTH.PHPが作動したのですが、 Member Area のサーバーにはユーザー名とパスワードが必要です。 と普通でます。 で、db_login.phpのデータを入れたんですがだめでした。 もしかして $AuthOptions = array( 'dsn'=>"mysql://$db_username:$db_password@$db_host/$db_database", 'table'=>"users", // テーブル名 'usernamecol'=>"username", // ユーザ名の列 'passwordcol'=>"password", // パスワード列 'cryptType'=>"md5", // パスワードの暗号化形式 'db_fields'=>"*" // 他の列も取得可能にする のどこかにデータを入れなくてはいけないのでしょうか?
554 名前:nobodyさん mailto:sage [2009/01/25(日) 21:17:56 ID:???] とりあえず、初期の問題は片付いたわけだな。よかったよかった。 >>553 聞きたいことをもう少し整理してくれ。
555 名前:476です。 [2009/01/25(日) 21:24:21 ID:esMzMmSN] Member Area のサーバーにはユーザー名とパスワードが必要です。 とでるんですがユーザー名とパスワードを入れてもうごきません。 初歩的ですいませんが、 >>553 のどの部分に自分のデータを記載すればいいのでしょうか? 僕はdb_login.phpにデータが入っているのでなにもいれてなく>>553 のままなんですが。 ここの部分がおかしいんですよね?
556 名前:nobodyさん mailto:sage [2009/01/25(日) 21:31:42 ID:???] mysqlでしょ? usernameっていうユーザいるの?
557 名前:nobodyさん mailto:sage [2009/01/25(日) 21:35:07 ID:???] まず、こんだけ色々アドバイスもらってんだから、動くに至った経緯を書け。 ここはお前専用の質問スレじゃないんだ。 で、login.phpが動かないとか、そもそも入力されたユーザ名・パスワードが間違ってた時の挙動が どうなるのかを把握してんのか? それと自分でうpした中のDB.txtの中身を理解してるのか? 具体的には62・63行目。 …もしかしてNG推奨だったのか
558 名前:nobodyさん mailto:sage [2009/01/25(日) 21:35:50 ID:???] データベースのレコードに自分のユーザー名とパスワード、md5ハッシュを保存 db_login.phpにはそのデータベースにアクセスするための権限情報を保存
559 名前:476です。 [2009/01/25(日) 21:38:41 ID:esMzMmSN] 'usernamecol'=>"username", // ユーザ名の列 ←変更 'passwordcol'=>"password", // パスワード列 ←変更 すればいいですか? あ、mysqlに入っているusernameとpasswordはすでに試しましたが だめでした。 それがいまいちよくわからないんですよね なんでだめなのか
560 名前:nobodyさん mailto:sage [2009/01/25(日) 21:39:56 ID:???] パスワードはちゃんとハッシュしてんの?
561 名前:nobodyさん mailto:sage [2009/01/25(日) 21:47:18 ID:???] しっかし、よく釣れるなぁw
562 名前:476です。 [2009/01/25(日) 22:23:02 ID:esMzMmSN] >>557 さんへ マスまずパスが違っていました。 僕のパスはinclude_path = ".:/usr/local/include/php/libs" なので、ここにpearとconfig.phpを入れてやりました。 そしたら動きました。 >>560 さんへ パスワードはちゃんとハッシュしていますよ。
563 名前:nobodyさん mailto:sage [2009/01/25(日) 22:34:43 ID:???] >>562 PEAR入れて無かったってこと?
564 名前:476です。 [2009/01/25(日) 22:43:40 ID:esMzMmSN] いや、pearのパスが間違っていました。
565 名前:nobodyさん mailto:sage [2009/01/25(日) 23:06:00 ID:???] 元はどこにあったの?
566 名前:522 [2009/01/26(月) 01:07:02 ID:Ihgtqp1K] >>525 それだと、a・bという項目もカウントしてしまい、7を返すようです。5を返す方法はないですか?
567 名前:nobodyさん mailto:sage [2009/01/26(月) 01:16:16 ID:???] >>566 >>524
568 名前:522 [2009/01/26(月) 05:09:38 ID:Ihgtqp1K] >>567 すみません、バージョンが4なのでarray_walk_recursiveは使えないみたいです。 他にありませんか?
569 名前:nobodyさん mailto:sage [2009/01/26(月) 05:10:14 ID:???] 引き算すりゃいいでしょ。countとcountで
570 名前:nobodyさん mailto:sage [2009/01/26(月) 05:48:20 ID:???] >>522 $count = 0; foreach ($test as $value) { $count += count($value); } echo $count;
571 名前:570 mailto:sage [2009/01/26(月) 05:58:46 ID:???] ちなみに>>570 の方法は2次元配列の場合で それ以上になると再帰(リカーシブ)でやったほうがいい (foreachのネストでも可能だが読みやすさに限界がある) ただし再帰は頭の回転が速くないと何やってるかわからなくなるので 苦手なら無理して使う必要はない
572 名前:nobodyさん mailto:sage [2009/01/26(月) 06:13:09 ID:???] >>570-571 発想はいまいちだが、初心者にしちゃぁ、よくできたな。
573 名前:nobodyさん mailto:sage [2009/01/26(月) 06:26:30 ID:???] 巣にお帰り pc11.2ch.net/test/read.cgi/php/1231850905/
574 名前:nobodyさん mailto:sage [2009/01/26(月) 06:30:54 ID:???] 自己紹介乙
575 名前:nobodyさん mailto:sage [2009/01/26(月) 10:12:51 ID:???] >>570 わざわざそんなことしなくてもこれでいけるっぽ echo count($test, 1) - count($test);
576 名前:nobodyさん mailto:sage [2009/01/26(月) 10:29:32 ID:???] html拡張子でPHP5が動くように設定しつつ、 404エラーの際に自作エラーページを表示させるには どうすれば良いかご存知の方いませんでしょうか。 .htaccessで「AddType PHP5-script html」を指示してしまうと 「ErrorDocment 404 error.html」で指定したページが表示されません。 PHP4の時は両立できたんですが…
577 名前:nobodyさん [2009/01/26(月) 10:41:26 ID:2xglnPYy] >>576 AddType php5-script .html
578 名前:nobodyさん mailto:sage [2009/01/26(月) 10:44:39 ID:???] >>575 3次元以上の場合は?
579 名前:nobodyさん mailto:sage [2009/01/26(月) 11:03:14 ID:???] >>577 あー大文字で書いてしまったのはここに書き込む際の記載ミスです。 実際の.htaccessではご指摘のように記載してます。html拡張子でPHP5は動いてます。 でもそうすると404エラーで自作ページが表示できなくて困ってます。 AddTypeでやってもAddHandlerでやっても結果は同じで、 「AddType application/x-httpd-php .html」でPHP4の環境では両立できるんです。
580 名前:nobodyさん mailto:sage [2009/01/26(月) 11:05:47 ID:???] エラーページが表示されないのならどんなページが表示されてる? まっちろ?
581 名前:nobodyさん mailto:sage [2009/01/26(月) 11:14:50 ID:???] >>580 IEならIE、FireFOXならFireFOXのフツーの404NotFoundページが出ます
582 名前:nobodyさん mailto:sage [2009/01/26(月) 11:19:56 ID:???] そのエラーのソースの中でheader("HTTP/1.0 404 Not Found");してみるとどうなる?
583 名前:nobodyさん mailto:sage [2009/01/26(月) 11:22:02 ID:???] だったら例のあれじゃない? 自作エラーページのサイズが小さ過ぎるとか。。。
584 名前:nobodyさん mailto:sage [2009/01/26(月) 11:27:03 ID:???] >>582 変化ありませんでした。 IEのHTTP 404 未検出の画面が出ます。 >>583 ファイルサイズは1Kbありました。
585 名前:nobodyさん mailto:sage [2009/01/26(月) 11:29:13 ID:???] >>584 404header返せばいけるはずなんだがな。 どんなソースになってるよ。
586 名前:nobodyさん mailto:sage [2009/01/26(月) 11:46:12 ID:???] >>585 単純なHTMLページの1行目に↓をぶち込んだんですが… <?php header("HTTP/1.0 404 Not Found"); php?> .htaccessで拡張子指定しているのは今は.htmlだけなのですが 存在しない.htmファイルを探させると自作エラーページへ行くことがわかりました。 が、.htmlファイルだとIE規定のページになっています。 .htmlでPHPが動くように指定してしまうとErrorDocmentが 狙った動きをしてくれない、という事でしょうか。 ちなみに今、直接自作エラーページを指定したらIE規定のページが出ましたので 404headerはちゃんと返ってきているようです。
587 名前:nobodyさん mailto:sage [2009/01/26(月) 11:54:43 ID:???] Apacheスレかhtaccessスレあたりで聞いたほうがいいぞ
588 名前:nobodyさん mailto:sage [2009/01/26(月) 12:06:45 ID:???] htaccessスレが見つけられなかったのと PHPで何とか似たような事をやる技があったりしないかなーと 思ったりしたんですが、やっぱ無理すよね。スイマセンでした。 Apacheスレの方で聞いてみます。ありがとうございました。
589 名前:nobodyさん [2009/01/26(月) 14:26:16 ID:7H1IWdV1] >>586 > php?> 何これ。
590 名前:589 mailto:sage [2009/01/26(月) 14:27:55 ID:???] と思ったら関係ないな、すまん。
591 名前:nobodyさん mailto:sage [2009/01/26(月) 21:42:45 ID:???] 右から読んでもphp
592 名前:nobodyさん mailto:sage [2009/01/26(月) 23:07:21 ID:???] 左から読んでもphp なんて言うと思ったか
593 名前:nobodyさん mailto:sage [2009/01/27(火) 06:21:30 ID:???] 前から読んでも(ry
594 名前:nobodyさん mailto:sage [2009/01/27(火) 10:00:43 ID:???] <?山本山 タケヤブヤケタ 山本山?>
595 名前:nobodyさん mailto:sage [2009/01/29(木) 04:21:55 ID:???] ttp://free-p.ddo.jp/tools/enc4php_e.php こことおなじものを自分のローカルサーバに設置したいのですがどこかに置いてないでしょうか?
596 名前:nobodyさん mailto:sage [2009/01/29(木) 04:32:25 ID:???] なぁにこれ?
597 名前:nobodyさん mailto:sage [2009/01/29(木) 07:06:35 ID:???] >>595 サイトの中身良く見りゃわかんだろ・・・ evalは、文字列の中身をphpのコードとして解釈して実行するもの。 base64_decodeしてからgzinflateしてるんだから base64_encodeしてからgzdeflateすれば、期待の物が出来るんじゃね? これでわからないんだったら、プログラミングやめた方が良いかもな
598 名前:nobodyさん mailto:sage [2009/01/29(木) 10:51:02 ID:???] 性格悪いな
599 名前:nobodyさん mailto:sage [2009/01/29(木) 12:03:24 ID:???] >>597 最初と最後の1行ずつは要らんだろ常識的に考えて。
600 名前:nobodyさん mailto:sage [2009/01/29(木) 12:10:04 ID:???] >>597 pc11.2ch.net/test/read.cgi/php/1221471692/l50 ここの995=997だろ
601 名前:nobodyさん mailto:sage [2009/01/29(木) 13:24:49 ID:???] >>600 フイタww 淡々と技術情報の交換を2chでしたいってそりゃ無理だろw 2chってそういうとこだとおもうべきだな
602 名前:nobodyさん mailto:sage [2009/01/29(木) 17:55:36 ID:???] 質問です! サーバーがPHP5になってしまい 今まで使っていたフリーのメールフォームが使えなくなりました。 PHP5のフリーのメールフォームを探したのですが全然わからず ここにたどり着きました。 フリーのメールフォームのサイトを教えて頂けないでしょうか?
603 名前:nobodyさん mailto:sage [2009/01/29(木) 18:20:03 ID:???] スレ違いで内科?
604 名前:nobodyさん mailto:sage [2009/01/29(木) 18:24:41 ID:???] まともな人がいないのでこちらでも質問を //$_SESSION['abc']; は前ページで123を代入 //ここから $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/'); } session_destroy(); echo $_SESSION['abc'];//123 と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。
605 名前:nobodyさん mailto:sage [2009/01/29(木) 18:29:17 ID:???] 頭痛くなってきた。 要点をまとめてくれないか
606 名前:nobodyさん mailto:sage [2009/01/29(木) 18:40:48 ID:???] $_SESSION['abc'] にはすでに123が入ってるが $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/'); } session_destroy(); とすると123も消えるけど、それを消さずに echo $_SESSION['abc'];//123 と後でも表示させたい。 理想としては $abc = $_SESSION['abc']; $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/'); } session_destroy() $_SESSION['abc'] = $abc; echo $_SESSION['abc']; と表示できればいい。
607 名前:nobodyさん mailto:sage [2009/01/29(木) 19:53:27 ID:???] >>604 == >>606 だよな? 「どうしても$_SESSION['abc']を使いたい理由」ってのがわからんと、普通のPGは他の手段を考えると思うぞ。 >>606 の中で $abc に入れてるんだったら、そのまま echo $abc; すりゃ良いじゃん、的な。 つーかsession_start()しなくて良いんかな。 長ったらしくない程度に、もう少し質問の背景を含めて、かつ要領良くまとめて質問すれば回答が返って来ると思う。
608 名前:nobodyさん mailto:sage [2009/01/29(木) 20:07:16 ID:???] 釣りだよ。 ttp://oshiete1.goo.ne.jp/qa3224862.html
609 名前:nobodyさん mailto:sage [2009/01/29(木) 20:25:30 ID:???] pc11.2ch.net/test/read.cgi/php/1158647441/672 pc11.2ch.net/test/read.cgi/php/1231850905/880 理由はどうあれこういうマルチするアホは相手にしないほうがいい
610 名前:nobodyさん mailto:sage [2009/01/29(木) 23:28:49 ID:???] 何回読んでも>>604 のやりたいことがわからない
611 名前:nobodyさん mailto:sage [2009/01/29(木) 23:37:26 ID:???] 前よく出没してた基地外だろ
612 名前:nobodyさん mailto:sage [2009/01/29(木) 23:41:37 ID:???] やりたいことは見えてる。 「ログイン・ログアウトとは別にセッションデータを引きまわしたい」ってことだろ。 で、普通は>>604 みたいなソースにはならないのに、わざわざ教えてgooだか、 phpのマニュアルでセッション破壊用のソースをそれだと勘違いして質問してるだけ。 すでに回答ついてるのに、人の意見を聞けない困ったチャンか、単なる荒し
613 名前:nobodyさん mailto:sage [2009/01/30(金) 10:09:33 ID:???] >>607 ログインログアウトとは別に、スタイルシートをセッションで持ち歩いていて、 ログアウト>>606 で書いたようにログアウトとしたときセッションに保存してあるスタイルシート変数も消えてしまいます。 なので、セッション(ログアウト)を消す前に$abc = $_SESSION['abc']; として消した後再び、$_SESSION['abc'] = $abc; などにして再度セッションにいれればなと考えていますが、 うまくいきません。 そこで何かいいほうほうは無いものかと。
614 名前:nobodyさん mailto:sage [2009/01/30(金) 12:27:38 ID:???] 悔しいっ・・・でも・・・触っちゃう・・・っ(ビクビク >>613 cookie使えよ。sessionなんかにそんなん入れんな。 sessionに入れるならログアウト=専用スタイルシート破棄として使え。 $_SESSION と session_*()を勉強し直して来い
615 名前:nobodyさん [2009/01/30(金) 23:37:15 ID:gxYTwHzL] epg.2ch.net/tv2chwiki/subject.txt から、別サーバー(自分のブログとか)に スレの勢いと局、番組名だけを取得して表示させることってできますか?
616 名前:nobodyさん mailto:sage [2009/01/30(金) 23:39:57 ID:???] うん
617 名前:nobodyさん [2009/01/31(土) 00:20:10 ID:Zjr5MV5E] <form action="<?= $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="text" name="textbox" value=""> <input type="submit" value="送信"> </form> <?php $text = htmlspecialchars( $_POST["textbox"] ); if ( get_magic_quotes_gpc() ) { $text = stripslashes( $text ); } print $text; ?> これ、ゲストの人がコメント書き込むくらいならいいんだけど、自分が投稿しようと思った時に $_SERVER['PHP_SELF'];が入っているからエディットページ(管理人専用の編集ページ)かなんかでindex.phpに書き込めないと思うんだ。 エディットページでindex.phpに反映させる方法ってない?
618 名前:nobodyさん mailto:sage [2009/01/31(土) 00:28:12 ID:???] エディットページで$_SERVER['PHP_SELF']にしなければいいのでは?
619 名前:nobodyさん [2009/01/31(土) 00:41:31 ID:Zjr5MV5E] お!というとどういう風に記述すればいいですか?
620 名前:nobodyさん mailto:sage [2009/01/31(土) 00:42:37 ID:???] ファイル名
621 名前:nobodyさん mailto:sage [2009/01/31(土) 00:42:41 ID:???] >>615 $rtn = file_get_contents( 'epg.2ch.net/tv2chwiki/subject.txt ' ); >>617 漏れは神様でもエスパーでもないんだから、 おまいのやりたいことを補完して理解なんかできない。 質問は相手に理解できるように書こう。 でも <input type=hidden name=action value=edit> とか場合わけしる
622 名前:nobodyさん mailto:sage [2009/01/31(土) 00:43:50 ID:???] なぜにhidden使う必要が?
623 名前:nobodyさん [2009/01/31(土) 01:07:34 ID:Zjr5MV5E] >>621 説明足らずで すまん ありがとう。要は管理人専用ページでこのスクリプトを使用した時に$_SERVER['PHP_SELF']だと現在いじってる(管理人専用ページ)でスクリプトが実行されてしまうんではないかと。 あくまで表示したいのはindex.phpなので、そこんとこどうなんかなーと思いまして。 >>620 と、いうことは$_SERVER['PHP_SELF']を$_SERVER['index.php']にしたらいいってことですか?
624 名前:nobodyさん mailto:sage [2009/01/31(土) 01:09:00 ID:???] お前は何を言ってるんだ?
625 名前:615 [2009/01/31(土) 01:27:06 ID:myPf0iH/] >>621 <?php $temp = "epg.2ch.net/tv2chwiki/subject.txt "; $html_f=file_get_contents($temp); $replace = "(2)"; $scriptphp = "<br />"; $word = str_replace($replace, $scriptphp, $html_f); $hogeru = ".dat<>"; $gogeta = "<br />"; $yabai = str_replace($hogeru, $gogeta, $word); print $yabai; print($word1_a); ?> から、偶数行だけ表示するにはどうしたらいいんでしょうか?
626 名前:nobodyさん [2009/01/31(土) 01:27:12 ID:Zjr5MV5E] すみません。ようやく分かってきました。 $_SERVER['PHP_SELF'] これ書かなきゃいいんですね。 じゃあそのかわりformのactionにはなんて書けばいいんですかね?
627 名前:nobodyさん mailto:sage [2009/01/31(土) 01:28:37 ID:???] actionの意味知らんの?
628 名前:nobodyさん [2009/01/31(土) 01:30:22 ID:Zjr5MV5E] 正直なところform処理いじったことがありませんもので…。非常に申し訳ないんですが教えてくれると助かります…
629 名前:621 mailto:sage [2009/01/31(土) 01:35:09 ID:???] >>625 最初からそれをいいたまへ $rtn = file( 'epg.2ch.net/tv2chwiki/subject.txt ' ); for ( $n = 0; $n < count( $rtn ); $n = $n + 2 ) echo $rtn[$n];
630 名前:621 mailto:sage [2009/01/31(土) 01:38:56 ID:???] >>623 やっと意味がわかった。管理人は管理人ようのページを作り給え
631 名前:nobodyさん [2009/01/31(土) 01:46:56 ID:Zjr5MV5E] >>630 ありがとうございます。じゃあ$_SERVER['PHP_SELF']はいらないってことですかね?
632 名前:nobodyさん mailto:sage [2009/01/31(土) 01:55:22 ID:???] >>631 <? // index.php if ( $_POST['textbox' != '' ) { なんか処理 } ?> <html><body> <form action="index.php" method="post> <input type="text" name="textbox" value=""><input type="submit" </form> </body></html> と <? // kanri_index.php if ( $_POST['textbox' != '' ) { なんか処理 } ?> <html><body> <form action="kanri_index.php" method="post> <input type="text" name="textbox" value=""><input type="submit" </form> </body></html> を作れ
633 名前:nobodyさん mailto:sage [2009/01/31(土) 01:59:14 ID:???] いやindex.phpでいいだろ
634 名前:nobodyさん mailto:sage [2009/01/31(土) 02:06:10 ID:???] 色んなやり方あるけど初心者だそうだからいちばん新ぷりに
635 名前:nobodyさん [2009/01/31(土) 13:18:26 ID:Zjr5MV5E] ありがとうございます!ようやくわかった気がします。actionって動作させたいファイル名を指定したらいいんですね。 これでなんとかなりそうです。ありがとうございました!
636 名前:nobodyさん mailto:sage [2009/01/31(土) 19:25:28 ID:???] prepareの使い方で質問があります。 下記のコードを実行すると Call to a member function prepare() on a non-object とエラーが返ってきます。 $sql = "insert into table (column2,column1) values(?,?)"; $sth = $this->db->prepare($sql); $result = $this->db->execute($sth, array($column2_value,$column1_value)); プレースホルダを使わずqueryを発行すると問題なくdbが更新されるのですが、 どこかおかしいのでしょうか
637 名前:nobodyさん mailto:sage [2009/01/31(土) 19:26:42 ID:???] すみません、環境書き忘れました。 php5,postgresです
638 名前:nobodyさん mailto:sage [2009/01/31(土) 19:28:26 ID:???] >636 どのクラスのprepareだよこの馬鹿馬鹿まんこ! $this->dbが接続失敗か何かで初期化されていないように思われる。
639 名前:nobodyさん mailto:sage [2009/01/31(土) 20:01:51 ID:???] レスどうもありがとうございます。 そのあたりを探ってみます。
640 名前:nobodyさん mailto:sage [2009/01/31(土) 20:02:31 ID:???] いや$dbのnewしてるとこ見れば一発だろw
641 名前:nobodyさん mailto:sage [2009/01/31(土) 20:16:52 ID:???] 出来ました。どうもありがとうございます。 さっきのエラーは昔書いたクラスコピペして直したら出なくなったのですが、 dbが更新されなくて悩んでいたら文字コードの違いが原因でした。 mb_convert_encodingで挿入する値をdbの文字コードに直して解決しました。 お世話様でした。
642 名前:nobodyさん [2009/01/31(土) 20:23:42 ID:QDNvJIlq] sqlite php5 利用です。 登録メールアドレスの重複チェックをしたいのですが、うまく動きません。 if(!$db=sqlite_open("database/database.sqlite",0666,$err)){ die("データベース接続エラー".$err."<br>"); } ////////////////////////////データベース二重登録防止//////////////// $check_sql="SELECT * FROM add_table WHERE add = '$mailadd'"; if($abc = sqlite_query($db,$check_sql)){ header("Location: mail.php?miss=miss&miss_naiyou=sumi"); //登録済みの場合は飛ばす } sqlite_close($db); //データベースクローズ
643 名前:nobodyさん mailto:sage [2009/01/31(土) 20:26:51 ID:???] >>642 jp2.php.net/sqlite_query
644 名前:nobodyさん [2009/01/31(土) 20:31:10 ID:lgngjuqH] <?php $temp = "epg.2ch.net/tv2chwiki/subject.txt "; $html_f=file_get_contents($temp); $br = "<br />"; $replace = "(2)"; $word = str_replace($replace, $br, $html_f); $replace = ".dat<>"; $word = str_replace($replace, $br, $word); $replace = "res/min"; $word = str_replace($replace, $br, $word); $replace = "] "; $word = str_replace($replace, $br, $word); $a = explode( "<br />", $word ); $b[0]= "g"; print $a[2]; print $br; //…(1) print $b[0]; print $br; $strs[0] = "srename :"+ $a[2] +",";//…(2) $strs[1] = $b[0]; print $strs[0]; print $br;//…(3) print $strs[1]; ?> 出力 [NHK総合]探検ロマン世界遺産 g 0 g (3)の$strs[0] が0になってしまうのはなんでですか? おねがいします。
645 名前:nobodyさん [2009/01/31(土) 20:33:43 ID:QDNvJIlq] >>643 マニュアル見てもさっぱりわかりません
646 名前:nobodyさん mailto:sage [2009/01/31(土) 20:39:00 ID:???] >>644 +を.にかえてみ
647 名前:nobodyさん mailto:sage [2009/01/31(土) 20:40:47 ID:???] >>645 じゃ諦めれ
648 名前:nobodyさん mailto:sage [2009/01/31(土) 20:42:10 ID:???] >>646 おーできました ありがとうございます!!
649 名前:nobodyさん [2009/01/31(土) 20:59:19 ID:QDNvJIlq] >>642 解決しました。 if(sqlite_fetch_array(sqlite_query($db,$check_sql))){ header("Location: mailmagazine.php?miss=miss&miss_naiyou=sumi"); } >>643 ありがとうございます
650 名前:nobodyさん mailto:sage [2009/02/01(日) 21:04:08 ID:???] 質問です elseif (preg_match("/^\d{8}$/", $_GET["id"])){ $id = $_GET["id"]; } GETで8桁の数字のみ受け取るように↑のようにしましたが if文でマッチしてても変数に代入する際はpreg_matchなりで GET変数内を数字のみとなるように変換した方がいいものなんでしょうか
651 名前:nobodyさん mailto:sage [2009/02/01(日) 21:10:26 ID:???] お前は何を言ってるんだ
652 名前:nobodyさん mailto:sage [2009/02/01(日) 21:11:12 ID:???] >650 俺ならctype_digit($str) && strlen($str) === 8 まあそれはそれとして、別にいいんじゃね。その正規表現にマッチしてるなら間違いなく数字だけだし。
653 名前:nobodyさん mailto:sage [2009/02/01(日) 21:16:32 ID:???] 末尾の$は改行にもマッチするから数字だけとは限らないんじゃ?
654 名前:nobodyさん mailto:sage [2009/02/01(日) 22:42:37 ID:???] ググってたら遅くなりました >>652 matchに漏れがなければ問題ないように思たんですが あげてもらった関数の方が確実 でしょうか >>653 正規表現はまだよくはわかってないのですがググったところ \r\nのことでしょうか。 scripting.cocolog-nifty.com/blog/2008/12/post-c9b4.html ここを参考に一応"/^\d{8}\r?$/"としてみましたが >hoge$に掛かりません の理屈が今一わかりません。
655 名前:650 mailto:sage [2009/02/01(日) 22:56:05 ID:???] よく考えたら\rが混じる時点で正常なデータではないので もとの"/^\d{8}$/"で問題なしな気がしますがどうなんでしょう
656 名前:652 mailto:sage [2009/02/01(日) 23:22:37 ID:???] 重視したのは分かりやすさ。正規表現だと、何を意味しているのか分かりづらい。 パターンがよほど複雑な時以外は正規表現は避けたほうがいい。 >653-654 改行とか忘れてたわ。 if(preg_match("/^\d{8}$/", "12345678\n")){ echo 'match'; }
657 名前:nobodyさん mailto:sage [2009/02/03(火) 00:43:02 ID:???] 半年ロムってろと言われてずっと見てきたが もうPHP諦めることにした。さっぱり分からん。 このスレのどこが超初心者用なんだ。
658 名前:nobodyさん mailto:sage [2009/02/03(火) 01:51:58 ID:???] 3年ROMってろ
659 名前:nobodyさん mailto:sage [2009/02/03(火) 02:00:14 ID:???] もう、諦めたんだ放って置いてくれw プログラムなんて嫌いだ。
660 名前:nobodyさん mailto:sage [2009/02/03(火) 09:47:26 ID:???] 何が分かんないんだよ
661 名前:nobodyさん mailto:sage [2009/02/03(火) 10:34:27 ID:???] 放っておいてやれよ
662 名前:nobodyさん mailto:sage [2009/02/03(火) 14:10:58 ID:???] なんか残念だな...。 このスレだけ読み続けても、超初心者が分かるようにはならないと思う。 このスレは、超初心者も質問していいというだけで、来る質問が全部、 超初心者向けというわけではないから。 もう見てないかもしれないけれど、入門書を図書館とかで借りてきたほうが いいと思うよ。
663 名前:nobodyさん mailto:sage [2009/02/03(火) 14:18:03 ID:???] PHPなんってググって触ってみりゃ、どうにでもなるものを、 半年もROMってわからないなんて、ネタに決まってるだろ もしネタじゃないなら、10年はROMるべき。 そうして人生が終わるさ
664 名前:nobodyさん mailto:sage [2009/02/03(火) 20:28:48 ID:???] 人生も諦めたらスッキリするのに
665 名前:nobodyさん mailto:sage [2009/02/04(水) 06:33:54 ID:???] >>664 全く原因が分からないのでお聞きしたいのですが… $im=createimagefromjpeg(image.jpg); imagejpeg($im); destroy 上記の様な単純な記述で画像を開きたいのですが、 ローカルならできるのになぜかインターネット経由だと できないのです… 実行すると半角で「リ」と表示されるだけで print hoge;などを付け足しても何もかわりません phpinfoでGDが使えることは確認したのですが、 他に原因が思いつきません 初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
666 名前:nobodyさん mailto:sage [2009/02/04(水) 06:34:18 ID:???] >>664 全く原因が分からないのでお聞きしたいのですが… $im=createimagefromjpeg(image.jpg); imagejpeg($im); destroy 上記の様な単純な記述で画像を開きたいのですが、 ローカルならできるのになぜかインターネット経由だと できないのです… 実行すると半角で「リ」と表示されるだけで print hoge;などを付け足しても何もかわりません phpinfoでGDが使えることは確認したのですが、 他に原因が思いつきません 初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
667 名前:nobodyさん mailto:sage [2009/02/04(水) 06:50:26 ID:???] image.jpgがないんでね?
668 名前:nobodyさん mailto:sage [2009/02/04(水) 08:17:43 ID:???] >>666 MIMEヘッダー出してる?
669 名前:nobodyさん mailto:sage [2009/02/04(水) 10:03:22 ID:???] ああそれだな
670 名前:nobodyさん mailto:sage [2009/02/04(水) 17:18:03 ID:???] >>667 確かにファイルは存在しています・・・ >>668 MIMEヘッダーは header("content-type: image/jpeg"); で出力できてますでしょうか? ご指摘の後にこれを追加してやってみてのですがだめでした。 ただ、文字化けのような表示から画像を表示できていないマーク? のような表示にはかわりました・・・
671 名前:nobodyさん mailto:sage [2009/02/04(水) 17:25:29 ID:???] >>670 imagecreatefromjpeg にしてみたら? それで、$imがfalseになってないかチェック それから、imageやheaderを出力する前に余計な出力をしないように、ソースの冒頭でob_startして、直前で破棄
672 名前:nobodyさん mailto:sage [2009/02/04(水) 17:39:12 ID:???] ところで皆さんPHPとMYSQLは勉強し始めて どれくらいの期間で使えるレベルになりましたか?
673 名前:nobodyさん mailto:sage [2009/02/04(水) 17:41:17 ID:???] 使うだけなら書籍読みつつ1日でカバーできる範囲 使いこなすまでは相当かかったが
674 名前:nobodyさん mailto:sage [2009/02/04(水) 17:50:34 ID:???] >>670 「image.jpg」→「"image.jpg"」
675 名前:nobodyさん mailto:sage [2009/02/04(水) 18:10:51 ID:???] "imagejpg"になってたりするのか
676 名前:nobodyさん mailto:sage [2009/02/04(水) 18:32:32 ID:???] そもそもcreateimagefromjpegなんて標準関数はないわけだが imagecreatefromjpeg(string $filename)ならあるけど
677 名前:nobodyさん mailto:sage [2009/02/04(水) 18:33:11 ID:???] 単純にサーバにGDライブラリがはいってないだけなんじゃね? phpinfoみてみれ
678 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:31 ID:???] >>677 >>666
679 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:52 ID:???] >>676 >>671
680 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:31 ID:???] 書いたとおりに載せないで情報小出しにしてる時点でもう答えようがない
681 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:39 ID:???] 要するに釣り
682 名前:666 mailto:sage [2009/02/04(水) 20:04:43 ID:???] お騒がせ致しました 釣りではないのです 広告自動表示のレンタルサーバーを使用していたためにうまくいかなかったようです 広告無しのサーバーでは問題なく表示できました。 ありがとうございました
683 名前:nobodyさん mailto:sage [2009/02/04(水) 22:08:23 ID:???] 広告自動挿入のサーバーだと ヘッダー情報ってだめなの?
684 名前:nobodyさん mailto:sage [2009/02/04(水) 22:09:01 ID:???] PHPの講師やりたいんだけど、 どこの学校がおすすめ?
685 名前:nobodyさん mailto:sage [2009/02/04(水) 22:31:36 ID:???] 学校行ってまでPHP学びたいと思うか?
686 名前:nobodyさん mailto:sage [2009/02/04(水) 22:37:41 ID:???] >>685 だって一日で20万もらえるってよ バカらしくてコーダーなんかやってられないよ
687 名前:nobodyさん mailto:sage [2009/02/04(水) 22:41:25 ID:???] SQL(SQLite)なんですが単対多のデータを取得したら |A|a|1| |A|a|2| |A|b|1| |A|b|2| |B|c|1| |B|d|1| みたいになるじゃないですか。 重複した項目をまとめて(A,(a,b),(1,2)),(B,(c,d),1)な感じにする関数てあるんでしょうか。
688 名前:nobodyさん mailto:sage [2009/02/04(水) 22:46:57 ID:???] >>685 pdoj.wordpress.com/2009/02/04/fetch-modes/ とりあえず翻訳やってみたけど、どう?
689 名前:nobodyさん mailto:sage [2009/02/04(水) 22:50:36 ID:???] >>687 pdoとかMDBとかにあるよ sqliteは知らんけど
690 名前:nobodyさん mailto:sage [2009/02/04(水) 22:52:37 ID:???] >>688 ドキュメントの翻訳で「〜と思う」なんて普通使わない
691 名前:nobodyさん mailto:sage [2009/02/05(木) 00:20:18 ID:???] >>689 ありがとうございます。 探したらfetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)がそれらしいです。 ただマニュアルの例で例えると array(3) { ["apple"]=> array(2) { [0]=> string(5) "apple" [1]=> string(5) "apple" } みたいな感じにカラム0の値しか取得できてないようです。 自分がどこか間違ってるのかSQLiteが対応してないのか... もう少し試してみます。
692 名前:nobodyさん mailto:sage [2009/02/05(木) 00:47:17 ID:???] >>691 ほい jp2.php.net/manual/ja/pdostatement.fetchall.php
693 名前:nobodyさん mailto:sage [2009/02/05(木) 00:49:12 ID:???] $str = '4,980 円'; ↑みたいなフォーマットの価格データを整数値にしたいんだけど ↓よりシンプルにやる方法ってある? $str = str_replace(array(' ', ',', '円'),array('', '', ''),$str);
694 名前:nobodyさん mailto:sage [2009/02/05(木) 00:51:20 ID:???] $str = (int)str_replace(',','',$str)
695 名前:nobodyさん mailto:sage [2009/02/05(木) 00:54:43 ID:???] ありがとうg
696 名前:nobodyさん mailto:sage [2009/02/06(金) 21:22:00 ID:???] >>692 MySQLでも試してみたのですが結果は同じでサンプルのような結果にならないのですが どこか捉え違いしているのでしょうか。 PHP 5.2.6/MySQL 5.0.4 |apple|red| |banana|yellow| |apple|green| という内容として、 $dbh = new PDO('mysql:〜','root','root');//もしくは'sqlite:〜' $sql = "SELECT name,color FROM table1"; $sth = $dbh->prepare($sql); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); var_dump($result); $stmt = null; 結果 array(2) { ["apple"]=> array(2) { [0]=> string(5) "apple" [1]=> string(5) "apple" } ["banana"]=> array(1) { [0]=> string(6) "banana" } } となります。
697 名前:nobodyさん mailto:sage [2009/02/06(金) 21:29:26 ID:???] サンプルのような結果と言われても、サンプルのような結果がどんなもんだかわからんからね。 とりあえず、FETCH_GROUPなんだし、結果が正しいように思うが?
698 名前:nobodyさん mailto:sage [2009/02/06(金) 21:34:36 ID:???] まぁ、試しに PDO::FETCH_COLUMN|PDO::FETCH_GROUP じゃなく PDO::FETCH_ASSOC|PDO::FETCH_GROUP にしてみたら?
699 名前:nobodyさん mailto:sage [2009/02/06(金) 21:39:06 ID:???] >>697 失礼、サンプルは>>692 にもあるPDOStatement->fetchAllの例3です。 期待した結果は ["apple"]=> array(2) { [0]=> string(5) "red"... なんですが、>>696 が正しいということはやっぱりなにか勘違いしてるのかなぁ
700 名前:nobodyさん mailto:sage [2009/02/06(金) 21:43:25 ID:???] あぁそれか、fetchAllの第2引数に0が入ってるじゃん、だから、カラムが制約されてる それ、外したらどうなる?
701 名前:nobodyさん mailto:sage [2009/02/06(金) 21:48:42 ID:???] array(2) { ["apple"]=> array(2) { [0]=> string(3) "red" [1]=> string(5) "green" } ["banana"]=> array(1) { [0]=> string(6) "yellow" } } になったけど
702 名前:nobodyさん mailto:sage [2009/02/06(金) 21:49:22 ID:???] ああすまん本人じゃなくて俺の環境でやったらってことね
703 名前:nobodyさん mailto:sage [2009/02/06(金) 22:07:01 ID:???] >>700 あれ?どうも。0がなくてもうまく取得できなかった気がしたんですが 今0を外したらPDO::FETCH_ASSOC|PDO::FETCH_GROUP同様うまくいきました。 |PDO::FETCH_GROUPがついたときは第2引数で指定したPDO::FETCH_COLUMNを基準に グループ化するのかと勘違いを… 実際は複数のカラムが必要なのでPDO::FETCH_NUM|PDO::FETCH_GROUPで 思った通りの結果が得られるようになりました。ありがとうございました。 >>701 も確認ありがとうございます。
704 名前:nobodyさん mailto:sage [2009/02/06(金) 22:11:15 ID:???] fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); で普通に取得できたが? 後進のために原因を明らかにしといてくれ
705 名前:nobodyさん mailto:sage [2009/02/06(金) 22:21:43 ID:???] >>704 もし、第2引数に0が入ってても第2カラムを取得できたんならバグだと思うよ
706 名前:nobodyさん mailto:sage [2009/02/06(金) 22:26:54 ID:???] お前は何をいっちょるんだ? 第2引数に0を入れるということは1番目のCOLUMNを用いて残りのカラムをGROUP化するってことだぞ
707 名前:nobodyさん mailto:sage [2009/02/06(金) 22:29:53 ID:???] >>778 何も問題ないが
708 名前:nobodyさん mailto:sage [2009/02/06(金) 22:30:55 ID:???] すまん誤爆した
709 名前:nobodyさん mailto:sage [2009/02/06(金) 22:57:48 ID:???] >>706 デマ書いてすまん、よくわかってなかった。 そのはずだよねぇ。
710 名前:nobodyさん mailto:sage [2009/02/08(日) 19:09:17 ID:???] <?php try { function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exception_error_handler"); fntest(); function fntest() {echo "call function";} } catch (ErrorException $exception){ echo "何かエラーだよ<br />"; echo $exception->getMessage()."<br />"; echo "line:".$exception->getline(); exit(); } ?> これを実行するとFatal error: Call to undefined function fntest() in〜と出ます 定義を先にするかtry〜catchをなくすとエラーは出ません 何がいけないんでしょうか
711 名前:nobodyさん mailto:sage [2009/02/08(日) 19:26:17 ID:???] 定義が後でtry〜catchの中だからでは?
712 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:14 ID:???] >>711 まんまやん というかだめなんですか? >次の二つの例のように、ある条件下でのみ関数が定義される場合には、その関数定義は関数がコールされる前に行われていなければなりません。 に当てはまるということでしょうか とりあえずそういうものだということで前方で定義するようにします
713 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:15 ID:???] >>710 いったいどうしたらそういう書き方ができるのか知りたいわ
714 名前:nobodyさん mailto:sage [2009/02/08(日) 20:35:03 ID:???] Perlから入った奴なんかはそういう書き方をする事があるな。 Perlは書き方によっては、関数の宣言や定義より先に呼び出しが来てもちゃんと動く。
715 名前:nobodyさん mailto:sage [2009/02/08(日) 21:05:08 ID:???] PHPだって、パース対象がグローバルなら、普通にfunctionの後置定義は有効だよ。 ifやwhileやtryやfunctionの中などの節の中は後置できないだけ。 >>710 なんてそんなの百も承知で釣り質問してるに決まってるだろ。 釣られてへぼい回答してんじゃねぇぞ
716 名前:nobodyさん mailto:sage [2009/02/08(日) 21:07:39 ID:???] ツン?
717 名前:nobodyさん mailto:sage [2009/02/09(月) 00:04:48 ID:???] PHPとMySQLで学習用のWEBシステムを作っているのですが ' % 等のDBにとっては迷惑な文字列が入力された場合に、それとHTML上の特殊文字に変換する にはどうすれば良いですか? 簡単な掲示板を作ったのですが' %が入力された場合にエラーが発生し困っています。
718 名前:nobodyさん mailto:sage [2009/02/09(月) 00:12:47 ID:???] 基礎中の基礎すぐる
719 名前:nobodyさん mailto:sage [2009/02/09(月) 08:41:31 ID:???] >>717 mysql_real_escape_string addslash
720 名前:nobodyさん mailto:sage [2009/02/09(月) 08:53:51 ID:???] addslash ? syntax error
721 名前:nobodyさん mailto:sage [2009/02/09(月) 09:16:28 ID:???] データーベースにデーターをつっこむ直前に データーベース専用のエスケープ処理をするのが普通
722 名前:nobodyさん mailto:sage [2009/02/09(月) 09:20:54 ID:???] データー(笑)
723 名前:nobodyさん mailto:sage [2009/02/09(月) 21:42:26 ID:???] >717 使える箇所ならプリペアドステートメント。これが一番安全。 ttp://jp2.php.net/manual/ja/mysqli.prepare.php ttp://jp2.php.net/manual/ja/pdo.prepare.php 使えない箇所ならmysql_real_escape_stringなど。 どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。
724 名前:nobodyさん mailto:sage [2009/02/11(水) 12:21:22 ID:???] htmlの<base>のようにユーザのトップディレクトリを指定したいんですが、 ユーザのトップディレクトリを調べる方法はありますか?
725 名前:nobodyさん mailto:sage [2009/02/11(水) 13:56:50 ID:???] 環境は?OSとか
726 名前:nobodyさん mailto:sage [2009/02/11(水) 14:12:44 ID:???] >>725 ああすみません。 開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。 PHP5でApachサーバのところを借りようとは思ってます。 なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。 一応マニュアルのファイルシステム関数は目を通したんですが…
727 名前:nobodyさん mailto:sage [2009/02/11(水) 14:24:23 ID:???] exit()ってスクリプト終了のために多用してもいいのでしょうか? たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など function return_json($flag, $data){ if($flag == true) $result = $data; else $result = "ERR:".$data; $res = array( "status" => $flag, "result" => $result ); print(json_encode($res)); exit(); } if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了 if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了 //最後に return_json(true,"成功です。");
728 名前:nobodyさん mailto:sage [2009/02/11(水) 14:33:34 ID:???] 別にいいんでは?
729 名前:nobodyさん mailto:sage [2009/02/11(水) 15:13:35 ID:???] 関数はあくまで何かを返すだけにして、制御を握っているのは「メインのルーチン」ひとつにした方がいい。 あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。 同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。 俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして function generare_json(){ if(isError1()){ return return_json(false,"エラー1です"); } if(isError2()){ return return_json(false,"エラー2です"); } return return_json(true,"成功です。"); } とし、echo generate_json()を最後に呼び出す。 exit()はスクリプトの末尾のみ、出力はこの文のみになる。
730 名前:nobodyさん mailto:sage [2009/02/11(水) 15:20:37 ID:???] つうか、正しいjson出力とエラー出力を別の関数にするかな。 boolを渡すより、return_error_json()の方が分かりやすい。
731 名前:nobodyさん mailto:sage [2009/02/11(水) 15:23:03 ID:???] >>719 ヒントをサンクス。 >>723 詳しいありがとうございます。 参考にさせて頂きます。
732 名前:nobodyさん mailto:sage [2009/02/11(水) 17:07:46 ID:???] >>726 ああもしかして、http://〜/~user/ の部分の実ディレクトリが知りたいってこと?
733 名前:nobodyさん mailto:sage [2009/02/11(水) 17:30:07 ID:???] 実ディレクトリでいいのかな?ローカルでいえば /Applications/MAMP/htdocs/ となります。 実行ファイルがトップにあるわけではないので相対パスでのファイル指定より 基点からの絶対パスのほうがわかりやすいかなと。
734 名前:724,733 mailto:sage [2009/02/11(水) 17:31:27 ID:???] >>732 アンカーわすれてたので念のため
735 名前:nobodyさん mailto:sage [2009/02/11(水) 17:45:24 ID:???] >>733 dirname(__FILE__) とか getcwd() とか そういうこと?
736 名前:nobodyさん mailto:sage [2009/02/11(水) 17:47:36 ID:???] >>733 $_SERVER['DOCUMENT_ROOT']
737 名前:nobodyさん mailto:sage [2009/02/11(水) 18:00:00 ID:???] ユーザー関係ないじゃんw
738 名前:724,733 mailto:sage [2009/02/11(水) 19:15:46 ID:???] >>735 ,736 $_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。 ありがとうございました。