- 1 名前:nobodyさん mailto:sage [2007/12/19(水) 03:33:51 ID:???]
- まず読め→【PHP マニュアル】www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。 過去スレ、関連スレ、FAQなどは>>2-10辺り ◆前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 60 pc11.2ch.net/test/read.cgi/php/1196511516/ ◆質問する時の注意 ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ) ・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。 ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 ◆質問後の注意 ・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない) ・2回目以降は最初に質問した際のレス番号を名前欄に入れること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
- 301 名前:nobodyさん [2007/12/26(水) 13:33:05 ID:0y2BVKsS]
- >>300
ありがとうございます すみません、書き忘れていました レンタル鯖の仕様によりhtaccessでのphp_value・flagが仕様できないのですorz
- 302 名前:nobodyさん mailto:sage [2007/12/26(水) 15:08:20 ID:???]
- 情報小出しに日本語不自由か…ダメダコリャ
- 303 名前:nobodyさん mailto:sage [2007/12/26(水) 15:14:38 ID:???]
- これでまた、何か案を出したら、それはすでにやったんですが・・・
と続くからなw
- 304 名前:nobodyさん mailto:sage [2007/12/26(水) 15:54:46 ID:???]
- そして最後には、お前ら使えねーな、で締めるのか
- 305 名前:nobodyさん [2007/12/26(水) 16:07:23 ID:5CJgBllV]
- 認証システム作りたいと思ってます 以下のような処理でOKなんでしょうか?
(ログインフォームの次の会員トップページの処理です) 0)session_start(); (タイムアウト設定も同時にする) 1)$_SESSION['LogIn']=0;//ログイン状態のフラグの用意 2)1)をチェック →0なら3) 3)POSTされたid,passwordをもとにログイン処理 →LogIn=1にする 4)以降のページでは0〜3を(外部ファイル化して)最初にチェック ※3)のPOSTデータがなければ警告画面に遷移 PEAR:AUTHも考えたんですが、ログインフォームと認証後トップページを 同じにしなきゃだめっぽいんでやめました 環境はPHP5,APACHE2です
- 306 名前:nobodyさん [2007/12/26(水) 16:10:25 ID:0y2BVKsS]
- >>302
すみません、小出しではなく>>301はただの書き忘れです
- 307 名前:nobodyさん mailto:sage [2007/12/26(水) 16:20:00 ID:???]
- >>305
リクエスト毎に 1) の処理を行うの? そうならヘンだと思うが。
- 308 名前:305 [2007/12/26(水) 16:32:50 ID:5CJgBllV]
- >>307 ありがとう ごめんなさい、間違えました
LogInは初期化しません 最初にチェックするだけです あと、今思ったんだけど、最初のログイン時にランダム値を持たせといて(DBにも登録) それもリクエストごとにチェックするとかの方がいいのかな? それがセッション名(?)てことだからわざわざやらなくていいんでしょうか?
- 309 名前:nobodyさん mailto:sage [2007/12/26(水) 16:53:52 ID:???]
- 乱数を設定しても意味は無いだろうけど、「ログイン状態のフラグ」を管理するぐらいなら、
誰がログインしているのかという、「ログインユーザのID」を管理した方が良いと思う。 ログイン後は、それが誰だかわからなくても良いなら、別に良いけど。
- 310 名前:305 [2007/12/26(水) 17:23:39 ID:5CJgBllV]
- >>309
ログイン開始と終了を記入するテーブルみたいなのを作るわけですか? 考えたこともなかったです。 ログイン状態のチェックだけなら305の内容でokなんでしょうか 度々すみません
- 311 名前:nobodyさん mailto:sage [2007/12/26(水) 17:33:52 ID:???]
- DBじゃなくてセッション変数の話。
「ログイン状態のチェック」が「だれかがログインしているが判定できる」なら、305の内容でOK。 普通は、このセッションでログインしているのが誰かも判らないと困るんじゃないかと。
- 312 名前:305 [2007/12/26(水) 17:53:13 ID:5CJgBllV]
- 親切にありがとうございます
しかしセッションの知識が不足でよく理解できません idに依存したセッション名を発行するのかな、、 ちょっと勉強してきます ありがとうございました
- 313 名前:nobodyさん [2007/12/26(水) 18:50:16 ID:7SSM1+qD]
- すいませんお教えいただきたいのですが、
キーボードからそのまま受け取ったデータaを cに変更して<textarea>に出力する ことはできますでしょうか? いろいろ調べて下記のようなものを書いてみましたが、できません。 <form> <textarea> <?php set_time_limit(0); ($stdin = fopen("php://stdin", "r")); $s = trim(fgets($stdin, 256)); if($s == "a"){ $s = "c"; } print $s; ?> </textarea> </form> ハッスルサーバを使っていて、phpはバージョン4.3です。 初心者の質問で申し訳ありませんが、どうかよろしくお願いします。
- 314 名前:はっしゅ(前すれ703) [2007/12/26(水) 19:02:23 ID:drjhjm0k]
- >>前すれ734
回答ありがとうごいました。 レベル低すぎて誰も答えてくれないのであきらめてたんですが、今日見たら回答きてたのでお礼に伺いました。 またわからないことあったら教えてください。 遅ればせながらありがとうございました。
- 315 名前:nobodyさん mailto:sage [2007/12/26(水) 20:44:56 ID:???]
- キー入力された時その場で変えたいなら
JavaScript使うかAjax使わないと無理 phpはサーバーサイドスクリプトです
- 316 名前:315 mailto:sage [2007/12/26(水) 20:45:19 ID:???]
- 315は313宛ね
- 317 名前:nobodyさん mailto:sage [2007/12/26(水) 20:45:33 ID:???]
- >>313
意味がわからない キーボードから受け取ったデータってなんだ? サーバの送受信はするの? しないんだったらphpじゃなくてjavascriptでしょ 具体的にどういう操作と結果がほしいのかわからなきゃ回答不可だよ
- 318 名前:nobodyさん mailto:sage [2007/12/26(水) 22:33:52 ID:???]
- C言語の本読んでもキーボードから1文字ゲットから先に進めない人
ノシ
- 319 名前:nobodyさん mailto:sage [2007/12/26(水) 22:40:10 ID:???]
- $white = 'snow';
$black =& $white; unset($white); print $black; //snow これで snowが出力されるんだけど、$blackは$whiteの参照になってるから unset($white)で$blackの値も破棄されるんじゃないの? なぜsnowがprintされるのかわかりません。
- 320 名前:nobodyさん mailto:sage [2007/12/26(水) 22:46:40 ID:???]
- >>319
jp2.php.net/manual/ja/function.unset.php >参照渡しされた変数が関数内で unset() された場合に、 ローカル変数のみが破棄されます。 >呼出側の環境でその変数は、 unset() がコールされる前と同じ値を保持します。 って書いてあるから良いんじゃないの。
- 321 名前:320 mailto:sage [2007/12/26(水) 22:51:51 ID:???]
- 良く見たら >>320 とはちょっと違うパターンか。ごめん。
- 322 名前:319 mailto:sage [2007/12/26(水) 22:54:50 ID:???]
-
参照渡しの場合はローカル変数しかunsetされないでいいんかな
- 323 名前:nobodyさん mailto:sage [2007/12/26(水) 23:00:42 ID:???]
- mb_send_mail()の引数の本文部分に
「>」を入れると 勝手に「>」にエスケープされるんですが、 ホワイ? 特に htmlspecialcharsとかかけてないんですが。。。
- 324 名前:nobodyさん mailto:sage [2007/12/26(水) 23:11:12 ID:???]
- ethnaの$this->af->getで取得した変数だからでした。
勝手にエスケープされるんでつね。。。 mb_send_mail( $this->af->get('to'), $this->af->get('subject'), $this->af->get('body') ); みたいな送信の仕方できないですが、 一回エスケープしたのを戻すとかの作業するのが一般的なんでしょうか
- 325 名前:324 mailto:sage [2007/12/26(水) 23:20:58 ID:???]
- いや、すんません
ethna関係ないっぽいです、普通にやってむりぽでした。
- 326 名前:nobodyさん [2007/12/26(水) 23:53:50 ID:5CJgBllV]
- 条件分岐でページ遷移する処理をしたいんだけど
Header関数(location)がエラー起こします。ほかに方法はないんでしょうか? echoでjavascript出力もできますがそれはあんまりなので、、 よろしくお願いします
- 327 名前:nobodyさん [2007/12/27(木) 00:13:03 ID:kzcBaheO]
- >>326
飛ばしたいページのファイルをincludeすればいいんじゃね?
- 328 名前:nobodyさん mailto:sage [2007/12/27(木) 00:15:44 ID:???]
- >>326
エラー書いた方が良い >>324 うちの環境ではエスケープされなかった
- 329 名前:nobodyさん mailto:sage [2007/12/27(木) 00:39:58 ID:???]
- >>326
単に、header関数の前に何か出力されちゃってるんでない? それか場所の指定に変数を使ったりしてるならそこがおかしいか。
- 330 名前:nobodyさん mailto:sage [2007/12/27(木) 00:54:22 ID:???]
- 特にローカルの開発環境だと、
キャッシュが効いて動作がおかしくなったりもするがな<header()
- 331 名前:326 [2007/12/27(木) 00:57:52 ID:k02W1D9g]
- >>327-328
ありがとうございます 前に一度相談してて、自力解決めざしたんですができなかったんです 詳細は>>111です 今apacheのエラーログ見たところ、 PHP Parse error: syntax error, unexpected T_EXIT in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\system\\admin\\hoge\\index.php on line 14, referer: localhost/system/ …らしいです 14行目は>>111のexit;なので、コメントアウトしたら(//exit;)今度は unexpected '}'〜〜 と出ました。ただのif文なのに意味がわかりません ググっても出てこないし、気が向いた方教えてください お願いします
- 332 名前:nobodyさん mailto:sage [2007/12/27(木) 01:10:18 ID:???]
- 構文エラーじゃん
エラーの行なんて参考でしかないから /* */で囲みながら範囲をせばめてエラーで出てる箇所特定しろよ どうせ、おっぱいかっこ{}の数があってないとか、そういうのだろ
- 333 名前:nobodyさん mailto:sage [2007/12/27(木) 01:32:39 ID:???]
- >>313
そいつぁコマンドライン用です。
- 334 名前:255 [2007/12/27(木) 03:55:57 ID:tJxOOzWu]
- >>258 遅れてすいません。
<?php // メール送信先を指定します。 $to = "実際は指定しました。"; // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } // メール本文を組み立てます。 $naiyou = "お名前:$name\n メールアドレス:$from\n タイトル:$title\n 内容:$naiyou\n"
- 335 名前:255 [2007/12/27(木) 03:56:48 ID:tJxOOzWu]
- if ($name != "" and $from != "" and $title != ""
and $naiyou != "" ) { if (mb_send_mail($to, $title, $naiyou, "From:$from")) { echo "メールを送信しました"; } else { echo "メール送信失敗です"; } } ?>
- 336 名前:sage [2007/12/27(木) 05:13:26 ID:aXynhXDH]
- setcookieで「味噌」と日本語を食わして吐き出すと「?」となってしまいます。
ちなみにEUC-JPです。 ファイルを確認した所、保存時では「+%CC%A3%C1%B9+」とurlencodeされているのですが webで表示(print $_COOKIE[hoge];)するときだけバグります。 64encodeしてから食わし、64decodeして吐かすとも考えたのですが、 ファイル全部の保存と表示部分を直すことは大量すぎて辛いっす。 何かいい解決策は有りませんでしょうか。
- 337 名前:336 mailto:sage [2007/12/27(木) 05:28:15 ID:???]
- sagemissしてすいません。
追加ですが「あへあへ噌」や「味噌漬け」はバグりません。
- 338 名前:326 [2007/12/27(木) 05:57:19 ID:k02W1D9g]
- >>332
ありがとうございます 構文エラーということで、{の閉じ忘れなどチェックしてもなかったので、 ソースをガンガン削っていったら 1)これは動作する <?php header("Location: www.yahoo.co.jp/"); ?> 2)これは動作しない <?php header("Location: www.yahoo.co.jp/"); exit; ?> という状況になりました。ホントに上のソース以外一切何も書いてません 誰か同じ症状になった方いないですか? 参った、、 PHP5.2.3 winXP apache2です
- 339 名前:nobodyさん [2007/12/27(木) 09:19:36 ID:jblLPn+a]
- ドメインについて教えて下さい。
ドメインを正規表現を使って省こうとしているのですが、 このようなドメインが有効なのですが、 ドメインの2番目で3文字以上ないといけないのではないでしょうか? ドメイン名の規約とかないでしょうか? www.ms.com/ (モルガンスタンレー証券)
- 340 名前:nobodyさん mailto:sage [2007/12/27(木) 09:22:25 ID:???]
- >>339
宣伝乙
- 341 名前:nobodyさん mailto:sage [2007/12/27(木) 09:26:19 ID:???]
- >>326
例えば header("Location: ./"); @file_put_contents("nnnnnnn.txt", "test" ,FILE_APPEND);//ファイル作成 とすると、表示はジャンプで終わるが読み込み処理は終わらずにファイルも作られる。 header("Location: www.yahoo.co.jp/");exit; @file_put_contents("nnnnnnn.txt", "test" ,FILE_APPEND); だとexitで終了され、ファイルは作られない。 exit終了しない場合の後述によるエラー文表記は動作が不安定なので一概に言えない。 if(!$a){header("Location: www.yahoo.co.jp/");exit;} などとしてでも、Locationにexitはセットと考えた方がいい。 でもexitつけたら動作しないというのは初耳。
- 342 名前:nobodyさん [2007/12/27(木) 09:27:56 ID:NgfmXqR6]
- >>315
>>317 >>333 313で質問したものです、 ご回答ありがとうございました。 javascriptを勉強してみたいとおもいます。
- 343 名前:nobodyさん mailto:sage [2007/12/27(木) 09:29:13 ID:???]
- んなもんRFC読めよw
- 344 名前:nobodyさん mailto:sage [2007/12/27(木) 09:33:20 ID:???]
- >>305
SESSION使うと「戻る」が使えなくなるから、ユーザーがウザがるよ。 COOKIEでいいんじゃない? めっちゃ重要なセキュリティーが必要?
- 345 名前:nobodyさん mailto:sage [2007/12/27(木) 10:40:08 ID:???]
- > SESSION使うと「戻る」が使えなくなる
んなこたーない
- 346 名前:326=305 [2007/12/27(木) 10:41:55 ID:k02W1D9g]
- >>341
ありがとうございます 結局これは僕の環境の異常という他ないんですかね? php.iniで自動的に全ファイルに共通読み込みさせる機能がONになってるのかと思い チェックしたんですがそれも問題ありませんでした… もうあきらめてjavascript出力してリダイレクトさせることにしました 回答いただいた方、ありがとうございました >>344 「戻る」が使えないってどういうことでしょう? 本やサイトを見るとセッションを使ってるので自分もそうしようと思っただけで 深い判断はありませんでした 今は>>309さんのいう“誰がログインしているのかという「ログインユーザのID」を管理” の方が気になってたんですが、、 「めっちゃ重要なセキュリティー」は意識してません 普通の会員システムで十分です なんかすみません、わからないことだらけで
- 347 名前:nobodyさん mailto:sage [2007/12/27(木) 12:00:59 ID:???]
- 多分 >>344が言いたいのは、複数のページにまたがって一連のデータを入力させるような場合、
「戻る」操作をするとブラウザ上の表示とセッション変数の状態が食い違うことがあることを 言ってるんだと思う。 セッションの使い方によっては「戻る」操作を禁止するのは定石だけど、セッションを使うと ページ戻りできないって話はおかしい。少なくもログインチェックに使用しただけで、 ページ戻り出来ないってのはあんまりすぎる。
- 348 名前:344 mailto:sage [2007/12/27(木) 13:16:55 ID:???]
- わかりにくくてごめん。
SESSIONをかましたページでデータの送信等をした際に ブラウザの戻るや進むで前の画面に戻ろうとすると 「セキュリティーのどうたら」ってエラー文がでて、送信前の入力データが消えたり 新しくリロードしないとページが表示されないようになる。 セッション値とかは関係ないけど、上記理由で 普通の感覚で「戻る」と「進む」が使えないから ID新規作成とか、何回もログインしない部分だけをセッション使用にして ログインとか一般的な頻発部分はクッキーの方がいいと書いたのです。 例、ログインID-A(mailとか)/Passの入力→ID-B(Noとか)と暗号化したPASSのクッキーを発行 各ページでクッキーによって本人承認を行い、1日〜4週間&ログアウトでクッキーを消滅させる。 暗号化といえばPHP5の初期設定のままで、md5(一方向)、base_64encode、 urlencode、mb_convert_encoding以外に使えるものってないですかね? C++のXORみたいなのは用意されてないのかな・・・
- 349 名前:344 mailto:sage [2007/12/27(木) 13:21:00 ID:???]
- 追記。凡ミス。 ×base_64encode → ○base64_encode
- 350 名前:nobodyさん mailto:sage [2007/12/27(木) 13:29:34 ID:???]
- >>348
なんかめちゃくちゃ言ってない?
- 351 名前:nobodyさん mailto:sage [2007/12/27(木) 13:36:30 ID:???]
- >>349
XORを用意ってビット演算子はあるんだからそれくらいの手間をケチるなよ。 ...rot13とかなかったっけ? あとcryptも
- 352 名前:nobodyさん mailto:sage [2007/12/27(木) 13:43:05 ID:???]
- >ブラウザの戻るや進むで前の画面に戻ろうとすると
>「セキュリティーのどうたら」ってエラー文がでて、送信前の入力データが消えたり >新しくリロードしないとページが表示されないようになる。 これはフォーム送信した後に戻ろうとしたら「再送信します OK?」っていうアレのこと? セッションとは関係なくない?
- 353 名前:nobodyさん mailto:sage [2007/12/27(木) 13:45:14 ID:???]
- >> 348
てゆーかセッションわかってる?
- 354 名前:nobodyさん mailto:sage [2007/12/27(木) 13:50:22 ID:???]
- >>348
それセッションとかクッキーとか全然関係無いだろw
- 355 名前:nobodyさん mailto:sage [2007/12/27(木) 14:17:26 ID:???]
- >>348
それは、no-cache の話じゃないかな。sessionを使うと自動的にno-cacheにしてしまうような フレームワークがあっても不思議じゃないけど、一般論として、sessionを使うとno-cacheになると いうものではない。 >>344は、特定の環境で教えられたんじゃないかって気がする。
- 356 名前:nobodyさん mailto:sage [2007/12/27(木) 14:17:58 ID:???]
- str_rot13() = 英字の置き換え ABCDE ←→ NOPQR
crypt() = 一方向ハッシュ化 $1$Ze5.ut0.$9k5PF7d6Wogm4fjfYcViE0 cryptってmd5より有名だったと知らなかったPHP暦1年の俺が来たよ str_rot13についてはマイナーすぎて今知った
- 357 名前:nobodyさん mailto:sage [2007/12/27(木) 14:31:22 ID:???]
- 「crypt」って、エニグマと同じ方式による暗号化プログラムで、暗号化キーで復号できるものだと
思ってたんだけど、最近はcryptといえば単方向ハッシュであるものを言うようになったのか。 確かにPHPのマニュアルにも単方向って書いてあるし、何時の間にって感じなんだけど。
- 358 名前:344 mailto:sage [2007/12/27(木) 14:40:06 ID:???]
- >>344>>348デス。
>>347>>350-355 暗号化について解説ありがとうございます。早速今日から使ってみます。 sessionについても丁寧なご説明ありがとうございます。 今調べたらまさにその通りでした。>>305>>346さんゴメンナサイ。 2年も間違ったまま覚えてたってやっべえ恥ずい。 どれぐらいって恥ずかしい性癖とかばれたぐらい? 反省してROMに戻ります。
- 359 名前:nobodyさん mailto:sage [2007/12/27(木) 15:45:25 ID:???]
- >>357
たぶんUnixとかネットワーク関係プログラマ界隈では crypt といえば crypt(3) のこと。 PHPのcryptもcrypt(3)の単なるラッパのはず。 >>356 rot13はたぶん一番古くて一番有名なそして一番弱い暗号だぞ! シーザーさんをなめるな!
- 360 名前:nobodyさん mailto:sage [2007/12/27(木) 16:52:06 ID:???]
- ytteter.so.land.to/ts/up59.jpg
- 361 名前:nobodyさん mailto:sage [2007/12/27(木) 18:06:57 ID:???]
- >>359は、宝塚出身の女優と一緒だな。
本人は芝居上手だと勘違いしているが、押し付けがましいパフォーマンスに過ぎない。
- 362 名前:nobodyさん mailto:sage [2007/12/27(木) 18:27:55 ID:???]
- だが、ぬくぬくと生き伸びていたりする。
- 363 名前:nobodyさん mailto:sage [2007/12/27(木) 23:42:07 ID:???]
- 過疎ってルナ
- 364 名前:nobodyさん [2007/12/28(金) 01:18:59 ID:x8Ui+5jw]
- 質問です。
次元数が任意の多次元配列で、その配列の要素数を数えながら 次元を自動的にさかのぼる処理をさせたいと思っています。 具体例を書くと、配列 $arr が下記のようなものだったとして、 Array ( [0] => hoge [1] => Array ( [0]=> koke [1]=> moke ) ) $arr[1]の要素数(2)を取得できるようにしたいと思っています。 この時、この配列の内容は事前に分かっていないため、 count($arr) が1以上ならば、その要素を調べ、 更に配列あればが自動的に添え字を付加して(ここでは「count($arr[0])」として) 上位次元を走査するような方法を思いつきました。 そこで変数に格納した添え字を配列変数に付加したかったのですが、 その方法が分かりません。 感覚的には、 $index = "[1]"; だったとしてとして $arr{$index}{$index} が 「 $arr[1][1] 」となり、「moke」を取得する、 というような動作を希望していますが、$index が文字列のためうまくいきません。 何か他に望む処理を行える方法があるでしょうか? よろしくご教示ください。
- 365 名前:nobodyさん mailto:sage [2007/12/28(金) 01:28:39 ID:???]
- >>364
>>$index が文字列のためうまくいきません。 ここの意味が分からない。 $arr["$index"]["$index"] って話じゃなくて?
- 366 名前:nobodyさん mailto:sage [2007/12/28(金) 01:33:23 ID:???]
- >>364
$index = "[1]"; と、絶対使いにくそうな値を敢えて仮定する理由は?
- 367 名前:nobodyさん mailto:sage [2007/12/28(金) 01:35:23 ID:???]
- つまり
$index = "1"; $arr["$index"]["$index"] みたいな形がやりやすい方法です。
- 368 名前:364 mailto:sage [2007/12/28(金) 01:53:54 ID:???]
- >>365-367
みなさんレスありがとうございます。 その問いが来るかな、とは思っていたのですが、うまく説明できませんでした。 >>364 の例でいうと、$arr が何次元の配列なのか事前に分からないところが ネックとなります。 つまり処理を行う前に最高次元が「$arr[]」なのか、「$arr[][]」なのか、 「$arr[][][]」なのかが分からないため、決め打ちできないということが問題です。 そのため、「[]」の角括弧を最初から書いておく「$arr["$index"]」方式では 対応できないので、角括弧を後から自由に付加できるような形を 求めていたというわけです。 例えば、$i = 1; で $index = "[$i]"; ならば、 $arr . $index で「 $arr[1] 」となって欲しいと思っていました。 このような目的を満たす処理方法はありますでしょうか? 引き続き、よろしくお願いします。
- 369 名前:nobodyさん mailto:sage [2007/12/28(金) 02:02:57 ID:???]
- 最初から分かってたらなら書けと・・
再帰的な手法は分かる? 「再帰的関数 php」とかでググッてみるといい
- 370 名前:nobodyさん mailto:sage [2007/12/28(金) 02:08:52 ID:???]
- home/hoge
home2/hoge4 home/hoge2 home/hoge3 home2/hoge5 これを ----------------- home hoge hoge2 hoge3 home2 hoge4 hoge5 ----------------- と表示させられるように配列処理したいのですが、 良い方法思いつきません、 お助けを。
- 371 名前:nobodyさん mailto:sage [2007/12/28(金) 02:10:06 ID:???]
- ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ) ・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。 ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
- 372 名前:364 [2007/12/28(金) 02:21:01 ID:x8Ui+5jw]
- >>369
申し訳ありません。 >>364 の「この時、この配列の内容は事前に分かっていないため」で 伝わるかと思い込んでしまいました。 再帰処理については知っています。 今回の処理も再帰処理で、と思っていたのですが、 どうしても配列変数の添え字を自動生成する方法の所が分からなかったのです。 何か方策はありますでしょうか? >>371 重ね重ね失礼しました。追記いたします。 サーバのOS: 「Windows2000」 Webサーバ: 「Apache 2.0.59」 PHPのバージョン: 「4.4.7」 以上の環境です。 なおこの環境は、OS 以外は利用しているレンタルサーバのスペックを 模倣したもので、この環境下での動作を求めています。
- 373 名前:nobodyさん mailto:sage [2007/12/28(金) 03:04:11 ID:???]
- >>370
/でexplode()してキーと値に宛えば。 >>372 どうにも難しい処理だから微妙だけど eval("return \$arr{$index};") とか。
- 374 名前:370 mailto:sage [2007/12/28(金) 03:17:21 ID:???]
- > キーと値に宛えば
詳しくキボンヌ
- 375 名前:nobodyさん mailto:sage [2007/12/28(金) 04:14:13 ID:???]
- 「キーと値に使えば」と予想
つまり home2/hoge4 を分割して $hoge["home2"] = "hoge4"; って形にすれ
- 376 名前:nobodyさん mailto:sage [2007/12/28(金) 04:44:15 ID:???]
- まず読め→【PHP マニュアル】www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。 過去スレ、関連スレ、FAQなどは>>2-10辺り ◆前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 60 pc11.2ch.net/test/read.cgi/php/1196511516/ ◆質問する時の注意 ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ) ・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。 ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 ◆質問後の注意 ・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない) ・2回目以降は最初に質問した際のレス番号を名前欄に入れること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
- 377 名前:255 [2007/12/28(金) 06:41:54 ID:rEU4Fn3c]
- 環境fedora7
<?php if (mail('ac10@fb3.so-net.ne.jp','titile','message')) echo "<b>SUCCESS TO SEND</b><BR>"; else echo "<b>fail to mail</b><BR>"; ?> でfail to mailという方が出ます。 恐らくphp.iniの設定が不足しているんだと思いますが、 php.iniのsendmail_pathについてまだよく分かっておらず、とりあえずデフォのままにしてます。 ポート25は開けていませんがこれでいいのでしょうか。
- 378 名前:255 [2007/12/28(金) 06:46:39 ID:rEU4Fn3c]
- sh: /usr/sbin/sendmail: Permission denied
というログが出ました。
- 379 名前:255 [2007/12/28(金) 06:48:30 ID:rEU4Fn3c]
- が、lrwxrwxrwx root root system_u:object_r:bin_t sendmail
とあったので別にパーミッションは良いかと思います、、、もしかしたら bin_tをhttpd_sys_content_tにしなければならないですか。
- 380 名前:nobodyさん mailto:sage [2007/12/28(金) 07:40:41 ID:???]
- /var/logを (って/var/logがFedoraにあるのかしらないけど)
良く調べてみたら。隅々まで。 bbs.fedora.jp/read.php?FID=2&TID=1428 ちょっとググってみたかんじだと SELinuxがどうのこうの、って 話がいくつか出てくるけど
- 381 名前:255 [2007/12/28(金) 08:10:09 ID:rEU4Fn3c]
- 有力情報ありがとうございます。SELinux disableにして実行してみたんですけど、やはりfail to mailでした。
ろぐ追加です。 [Fri Dec 28 06:18:37 2007] [notice] caught SIGTERM, shutting down [Fri Dec 28 06:18:48 2007] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0 [Fri Dec 28 06:18:48 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Fri Dec 28 06:18:48 2007] [notice] Digest: generating secret for digest authentication ... [Fri Dec 28 06:18:48 2007] [notice] Digest: done [Fri Dec 28 06:18:49 2007] [notice] Apache/2.2.6 (Unix) DAV/2 mod_layout/4.0.1a PHP/5.2.4 mod_ssl/2.2.6 OpenSSL/0.9.8b configured -- resuming normal operations sh: /usr/sbin/sendmail: Permission denied もう少しググってみることにします。selinuxには気づきませんでせした。
- 382 名前:255 [2007/12/28(金) 08:12:50 ID:rEU4Fn3c]
- あ、ほんとくだらない質問になるんですが、メル鯖立ててなくてもmail関数使えますよね。
sendmailpathの意味するところが分からなくて、、、
- 383 名前:nobodyさん [2007/12/28(金) 08:19:14 ID:/nAj2CVO]
- 会員システム作ってるんだけど kaiin/以下が会員領域だとして
その中にあるファイルはリファラがkaiin/内のファイルじゃない場合強制ログアウト という処理にしたらセキュリティ上がるかなぁと思ってます この処理をする場合、効率よくリファラチェックする方法はないでしょうか? ひたすらif&orでやってけばいいんでしょうが何かみっともないので、、 また、そもそも↑みたいなことやっても意味ないですか? ファイルをDLして手を加えられる侵入に対策したいと思ったんですが…
- 384 名前:nobodyさん mailto:sage [2007/12/28(金) 08:30:44 ID:???]
- >>382
mail()を実行すると、 Windowsの場合 : メールサーバに接続する(ネットワーク越し) - php.iniのSMTP Linuxなど : メール送信用のプログラムを呼び出す(プログラムの引数) - php.iniのsendmail_path のように、OSごとに違った挙動をする。 >>383 ノートン先生のようにデフォルトの設定でrefererを送信しないものもある。 >ファイルをDLして手を加えられる侵入に対策したい 何をしたいのかよく分からないが、特定の人言い換えりゃ特定の情報を送信してくるブラウザを 識別するには次のどれかだろうね。 ・cookie ・セッション(まぁ、これもcookieの場合もあるが) ・WebサーバのBasic認証とかDigest認証とか
- 385 名前:255 [2007/12/28(金) 08:34:06 ID:rEU4Fn3c]
- >>384 ありがとうございます。
windows:mail()→ネットワークに接続 linux:mail()→mail program呼び出し→ネットワークに接続 みたいな感じに理解しました、(あってるかな。。。)
- 386 名前:nobodyさん [2007/12/28(金) 08:47:14 ID:/nAj2CVO]
- >>384
ノートンてリファラ送信しないんですか じゃあダメですね、やめときます ありがとうございました
- 387 名前:nobodyさん mailto:sage [2007/12/28(金) 11:31:19 ID:???]
- 今日で仕事納めです。
早速、phpも仕事を土管とやってみましたが、 やはりmb_系の関数が絵文字処理で悩まされました。 mb_をpregと統一して総合文字列関数として再スタートさせるべきではないでしょうか? それでは、来年も良いお年をお過ごし下さい。
- 388 名前:nobodyさん [2007/12/28(金) 12:52:34 ID:gGF8c07c]
- 処理が遅い時、ブラウザを勝手に閉じると、
サーバーのスクリプトが終了したときに返却されるレスポンスのパケットはどこにいくのでしょうか? サーバーの動作が遅いのですが、このパケットが行き先を失って、 ルーター内で無限ループしているってことは考えられますか? 送信要求しておいて、ページが表示されないからって閉じられるクライアントをどうにかしたいのですが、そうもいかないので。
- 389 名前:nobodyさん mailto:sage [2007/12/28(金) 13:04:54 ID:???]
- 横槍だが、メール送信を使いたいだけで自鯖にメール機能をインストする必要はなっしん。
無料レンタ鯖にデータ飛ばして、そこから送信して、必要なら戻ってくるようにすれば無問題。 使い慣れないメール設定やほーと設定で悩んでいる人にオススメ。
- 390 名前:nobodyさん mailto:sage [2007/12/28(金) 13:14:14 ID:???]
- >>388
jp2.php.net/ignore_user_abort ja.wikipedia.org/wiki/Transmission_Control_Protocol
- 391 名前:nobodyさん mailto:sage [2007/12/28(金) 17:13:21 ID:???]
- こんど、
「天皇陛下もやっているPEARの活用講座」 という本を出すことになりました。宜しくお願いします。
- 392 名前:nobodyさん mailto:sage [2007/12/28(金) 18:45:23 ID:???]
- こんど、
「将軍様もやっているPECLの活用講座」 という本を出すことになりました。宜しくお願いします。
- 393 名前:nobodyさん [2007/12/28(金) 21:09:26 ID:41MrW7lh]
- 作成中のシステムが
[notice] Parent: child process exited with status 3221225477 -- Restarting. というメッセージをApacheのログに残して落ちるようになってしまいました。 多分、再帰に失敗してスタックオーバーフローか何かになっているのだと思うのですが、 例えば例外をスローしてくれたりする設定のような、場所を特定する良い方法はないでしょうか? 環境は、PHP5.2 Apache2.0 WindowsXP です。 フレームワークは使用していません。 ご存知の方、教えてください。よろしくお願いします。
- 394 名前:nobodyさん [2007/12/28(金) 22:07:55 ID:/nAj2CVO]
- 自力で会員システム作ってるんですが、二重ログインという問題があることに気づきました
この問題はどう解決したらいいんでしょう? 同一IDで後から入ってくる人を有効にすべき? 仕組みとしてはどういうものが理想ですか? 今考えてるのは、会員情報の管理テーブルに、現行のセッション名を保持するカラムを作って、 各アクションごとにブラウザが持ってるものと保存してるセッション名とを比較する →不一致の場合強制ログアウト というものです どうなんでしょう ご意見いただければ幸いです よろしくお願いします
- 395 名前:nobodyさん mailto:sage [2007/12/28(金) 22:12:07 ID:???]
- >>394
その処理が君のシステムにおける理想ならそれでいいじゃん
- 396 名前:nobodyさん mailto:sage [2007/12/28(金) 22:20:49 ID:???]
- >>395
調子に乗ってんじゃねーぞ。このニート!!!
- 397 名前:394 [2007/12/28(金) 22:28:49 ID:/nAj2CVO]
- 自分のアイディアや知識に自信がないから聞いているので、
それでいいじゃんと言われても… 念のためググって調べて考えた上で質問させてもらいました 不快にさせたんならすみません
- 398 名前:364 mailto:sage [2007/12/28(金) 22:38:10 ID:???]
- >>373
返事が遅くなりました。 試してみたら eval() で希望の動作が実現できました。 どうもありがとうございました。
- 399 名前:393 [2007/12/28(金) 22:44:02 ID:41MrW7lh]
- 例外を生成し、そのスタック長がある上限を超えていたら throwする関数を作って、
これを再帰している箇所に埋め込む事にしました。
- 400 名前:nobodyさん mailto:sage [2007/12/28(金) 22:44:30 ID:???]
- >>394
二重ログイン禁止したいならそれでいいんじゃないかな。 後から来た方を拒絶しようにも、明示的にログアウトしてくれる人ばかり じゃないしね。 一定時間経ったらログアウトって仕組みにしても、その間最ログインできないし。
|

|