12/02/17 08:11:36.95
今回の件とXAMPPになんの関係があるんだよw
>>650
$error = array('name' => '', 'email' => '', 'password' => '');
これ入れると22行目で常に空じゃなくっていつまでも確認ページにジャンプされないんじゃない?
俺なら先頭に
$data = array('name' => '', 'email' => '', 'password' => '');
// $_POSTからname email passwordがあれば入れる
foreach (keys($data) as $key) {
if (isset($_POST[$key])) {
$data[$key] = $_POST[$key];
}
}
でそれより下の$_POSTを全部$dataに置き換えする
656:nobodyさん
12/02/17 08:18:41.12
>>654
PHPの公式マニュアルは難しい参考書や問題集ではなく、入門向けの基礎ドキュメントになってる。
「はじめに~機能」まではPHP開発者なら当然抑えておくべき知識。上級者でなく初心者のね。
最低限「はじめに~言語リファレンス」までは理解していないと質問の会話も通じないし既存サンプルコードも理解できない。
読んで基礎を身に着けてから開発したほうがいいよ。
(一通りとかじゃなくて、ちゃんと理解して)
657:nobodyさん
12/02/17 08:19:04.20
追記
関数リファレンスは、最低限主要な関数くらいは見ておいたほうがいい
658:nobodyさん
12/02/17 08:19:39.49
てか質問と関係ないこと答えたな
フォーム関係だと、値を確認しないと危ないからどうしても長くなるよ
659:650
12/02/17 08:46:33.43 uCAZxDKu
みなさん、ありがとうございます。
>>655
ご指摘どおり動きませんでした。
エラーが消えて喜んでいたので、このまま参考書通り進めていったら気がつかなかったと思います。
たぶんエラーが消えたので、その箇所が問題だと疑問に思ってなかったと思うのです。
ぜひ参考にさせて頂こうと思います。foreachは浮かんだのに、そこからが出て来ないという。
>>656-658
あー、見てないです・・・知らなかったです。辞書のようなものだと思って
検索エンジンから関数入力して、直接その関数だけのを見てました。
トップページ見たことなかったです。。。
これは、嬉しい。必ず見て理解しながら、今の参考書をやろうと思います。
稚拙な質問ですいませんでした。ほんとにありがとうございました。
660:nobodyさん
12/02/17 09:23:09.19
>>659
俺は657-658だけど、ぶっちゃけ書籍とかいらない。
情報古いし誤記はあるし公式マニュアルの方が詳しいし。
今回みたいなことが発生する度にここで質問してたら一向に先に進まないから
基礎を身に付けてある程度自分で考えたり調べられるようになったほうがいいよ
661:nobodyさん
12/02/17 10:15:08.87
Notice: Undefined indexは最初無視していいよ
実際にサイトに設置するスクリプト書いた時直せばいい
662:nobodyさん
12/02/17 16:27:16.33 w/M88VPz
MVCって、view が、コントローラーありきじゃないですか。
となると、デザイナーが、
「ここ2ページふやしたいな」
「ここ、ディレクトリかえたいな」
とかなったらいちいちプログラマーがコントローラを
書き換えないとダメなんですか?
663:nobodyさん
12/02/17 16:51:20.31 UxdMuJ4N
逆
コントローラがViewのインターフェイスに依存してる
664:nobodyさん
12/02/17 19:36:37.46 7dv+Ag3y
PDOのインスタンス「$dbh」のスコープについて質問です。
ファイルの先頭で、PDOインスタンスを生成して、DB操作をしています。
しかし、関数内では、ローカル領域のため、そのまま$dbhを使用したくても無視されます。
関数内で、DB操作するための解決策として、
1.「global $dbh」のようにグローバル宣言をする
2.「$dbh」を関数の引数で渡す
のように考えたのですが、どうするのがベストなのでしょうか?
665:nobodyさん
12/02/17 20:07:52.04
どっちでも
666:nobodyさん
12/02/17 20:55:18.79
俺なら関数内で
$dbh = $GLOBALS["dbh"];
とかかな
667:660
12/02/17 20:55:35.29
656-657だった
668:650
12/02/17 21:27:24.10 uCAZxDKu
>>660
ありがとうございます。がんばります!
669:nobodyさん
12/02/17 22:58:30.87 MzraE+7u
メール送信について教えて下さい。
機種依存文字とか半角カナに対応する場合、
mb_send_mailよりmail関数で送信する方が良いのでしょうか?
また、iso-2022-jpよりUTF-8の方が文字化けリスクは少ないのでしょうか?
670:nobodyさん
12/02/17 23:22:09.91
どこでそんな情報仕入れてきたんだ
671:nobodyさん
12/02/17 23:39:23.76
通信中の文字化けを減らす目的だったら再送するなどすれば?
672:nobodyさん
12/02/17 23:44:54.56
どういった文字化けなのか調べてから質問しろ。
送信関数のバグか、受信側のエンコード認識ミスなのか、回線に比べサイズが大きすぎて送受信にミスるのか。
いちばん手軽に実装できる方法でやってみてそのエラーを書け。
673:nobodyさん
12/02/17 23:49:47.62 MzraE+7u
どう言った文字化けと言いましても・・・「?」と表示されます。
UTF-8のファイルに、mb_send_mailで機種依存文字や半角カナを送り、
outlookやgmailで受信すると文字化けします。
というか>>669は間違いなんでしょうか?
ググってもmb_send_mailは文字化けするから使うなってあります。
実際文字化けするので、そうなのかとは思いますが、
単にコードの書き方が悪いのかも?と思い、質問した次第です。
674:nobodyさん
12/02/17 23:51:27.34
>>673
コードの書き方が悪いんじゃない?
675:nobodyさん
12/02/17 23:54:35.00 MzraE+7u
mb_language('japanese');
mb_send_mail($email, 'テストメール', 'アアア');
UTF-8のファイルに単純に上記を書いてテストしています。
日本語メールをそう指定しているので、iso-2022-jpになるわけですが、
上記のままだと文字化けします。
mb_language('uni');にしてmail関数で送ると文字化けしません。
だからUTF-8にしてmail関数で送るのが正しいのでは?と思い、質問した次第です
676:nobodyさん
12/02/17 23:56:51.68
languageがuni?
677:nobodyさん
12/02/17 23:57:09.06
mb_internal_encoding
678:nobodyさん
12/02/18 00:04:31.94 XbBhkQAF
とりあえず今のところ↓の書き方なら文字化けしません。
mb_send_mail使っても文字化けしない方法ってあるんですね。
もう少し調べてみます。
mb_internal_encoding("UTF-8");
mb_language('ja');
$to = "メールアドレス";
$subject = mb_encode_mimeheader('テストメール');
$body = mb_convert_encoding('アイウエオ', 'sjis-win', 'UTF-8');
mail($to,$subject,$body);
679:nobodyさん
12/02/18 01:35:47.85
エンコードの自動変換をミスっただけだろ。
要するに設定次第で上手くいく。
680:nobodyさん
12/02/18 05:00:23.69 QcioPwmz
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
これをHTTP_REQUESTでaddPostDataするにはどうしたら良いでしょうか?
681:nobodyさん
12/02/18 05:12:01.30
>>680
foreach ($_POST['MyArray'] as $v) {
$req->addPostData("MyArray[]", $v);
}
682:nobodyさん
12/02/18 10:29:51.01 10KYAU7Y
ホストのIP変換が遅いのですが、早くする方法を教えてください。
さくらスタンダード、 PHP Ver5.2.17(CGI版)で、
$ipaddr=gethostbyname($domain);
の時間を測定すると、通常はマイクロ秒くらいの一瞬で終わるのですが、
ときどき5秒くらいかかることがあります。
同じドメインでも一瞬で終わるときと時間がかかるときがあるようです。
683:nobodyさん
12/02/18 11:40:26.02
それはPHP関係ないのでは
関数どうこうでなる問題じゃないでしょう
684:nobodyさん
12/02/18 12:10:41.22 10KYAU7Y
>>683
やっぱり無理ですか、残念ですがガマンすることにします。
ありがとうございました。
685:nobodyさん
12/02/18 18:36:17.03 Agr52FPR
URLのHTMLソースをそのまま取得する方法はありますか?
file_get_contentsだとタグ等を取得できません。
ソースをそっくりそのまま取得するにはどうしたら良いでしょうか?
686:nobodyさん
12/02/18 18:37:10.00 AZw1wiBM
どうでもいいじゃん、そんなこと
687:nobodyさん
12/02/18 18:44:16.60
file_get_contentsでタグを取得できない?なにいってんだ?
688:nobodyさん
12/02/18 18:44:44.12
403でも返ってきてるんだろ
689:nobodyさん
12/02/18 18:46:05.98
ローカルからやれば取得できるさ
690:nobodyさん
12/02/18 18:47:33.53
HTMLソースをそのまま取得しない方法を聞いてるんじゃね
691:nobodyさん
12/02/18 18:58:51.71 Agr52FPR
すいません、初心者なので変なこと聞いてしまっているかも知れませんが、
<?php
echo file_get_contents('URLリンク(www.yahoo.co.jp)');
?>
これだとソースではなくページを表示しますが、これを下のように
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "URLリンク(www.w3.org)">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、
など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
<title>Yahoo! JAPAN</title>
etc
とソースを表示させたいです、どうすればいいでしょうか?
692:nobodyさん
12/02/18 19:03:43.03
>>691
htmlspecialcharでもかませ
693:nobodyさん
12/02/18 19:40:17.07 Agr52FPR
>>692ありがとうございます、できました。
694:nobodyさん
12/02/18 20:52:04.00 GMcMwBnH
アップローダー作る場合は何か許可等はほしいのでしょうか?
また、利用規約は禁止事項、アダルト禁止や、児童ポルノ画像は
通報する等の警告を書かないとダメだったりしますか?
695:nobodyさん
12/02/18 21:01:41.90
>>694
アダルトはどこからアウトでどこからセーフかという問題があって難しいですね
少年漫画のパンチラレベルならおkなはずです
アダルト画像判別ライブラリがあるといいのですが
696:nobodyさん
12/02/18 21:15:41.43 AZw1wiBM
CGMはユーザがコンテンツをやり取りする場を提供するもの
他人のコンテンツは勝手にいじれない
規約に同意させて特定のコンテンツについて当事者に加えてもらえば自分のもんだから消し放題になる
697:nobodyさん
12/02/18 21:20:25.30
>>696
URLリンク(asonofumoto.cocolog-nifty.com)
698:nobodyさん
12/02/19 02:22:12.54 wQztI7LL
phpでrssリーダーを作りたいんだが、titleを取得してリンクさせるまではできた。
だが、スマートフォンに対応してないニュースサイトがあるため、xmlの中のtitleとbodyを取得して、スマホ向けにデザインを変更したいんだがどうすればいい?
一時的にhtmlを自動生成すればいいの?やり方がわからぬ、、、。
699:nobodyさん
12/02/19 02:23:30.04
>>698
スレ違い
スレリンク(php板)
700:nobodyさん
12/02/19 10:43:18.52 DFHu3tLC
fopenのmodeパラメータですが、
書き込み用モードで開くと自動的に排他制御になるのでしょうか?
同じリソースを使って書き込み/読み込みをしようとa+を指定したとき、
読み込みでも排他制御されてるようです。
これは困るのですが読み込みと書き込みは、
別々のリソースで管理しないとだめなのでしょうか?
701:nobodyさん
12/02/19 11:02:15.97
>>700
flockは入れてるの?
702:nobodyさん
12/02/19 11:14:52.49 ULtF97rd
for文作ってるのですけど、
for(i=0; i<10; i++){
$data["thanks$i+1"] = $i;
}
だとうまくいかないっす。
i+1をあそこに書くにはどうしたらいいんでしょうか?
703:700
12/02/19 11:15:31.80 DFHu3tLC
>>701
読み込みには入れてません。
704:nobodyさん
12/02/19 11:23:10.10
$t=$i+1;
$data["thanks".$t]=$i;
705:nobodyさん
12/02/19 11:32:17.68
>>704
ありがとう
ちなみに、文の中に数式を埋め込むのは不可なのですか。
関数だったら返り血使って普通にやりますよね?
706:nobodyさん
12/02/19 11:35:07.23
>>703
排他的ロックってのはロックしてる間読み込みも書き込みもできないようにするロックだよ
707:nobodyさん
12/02/19 11:43:36.84
>>705
汚いけどできるよ
$data["thanks".($i+1)]=$i;
708:nobodyさん
12/02/19 11:52:20.82
>>707
できました
あんまり好ましくはないようですね
先に教えてもらった方を使います
どもども
709:nobodyさん
12/02/19 15:38:42.75
返り血・・・血しぶき ドバーッ て感じだ。
710:nobodyさん
12/02/19 22:01:19.96 0c+jTY14
PHPアプリの二重ログイン防止策は、どうのように実装するのが良いのでしょうか?
有名SNSゲームが二重ログインのバグでサービス停止になったらしく気になります。
711:nobodyさん
12/02/19 22:05:18.54
>>710
その話詳しく
712:nobodyさん
12/02/19 22:08:06.99
ドリランドの件じゃなくて?
あれは二重ログインとはまた別の話だよね。
二重ログイン防止はセッションをDBで管理すればいいかな。
713:nobodyさん
12/02/19 23:25:00.75 TyCjVWx4
>>712
ドリランドの件です。
バグの利用だそうですが、「二つの機器のアカウントを同じにする」とあるので、
二重ログインにも関係していると思いました。
714:nobodyさん
12/02/19 23:49:52.59
トランザクションかけてなかっただけの話ではなく?
715:nobodyさん
12/02/20 00:32:56.31 0kztJ4Qe
>>711
URLリンク(blog.livedoor.jp)
遅れてすみません。
>>714
見る限り、トランザクションは関係ないようです。
デュープとかいう手法でアイテムを複製されるバグのようです。
716:nobodyさん
12/02/20 00:51:48.56
変数名に$をつけるとかめんどくせーな
717:nobodyさん
12/02/20 01:11:59.90
>>715
見れば見るほど関係あるように見えるが。
デュープとトランザクションが関係ないという理由は?
718:nobodyさん
12/02/20 01:49:12.03
>>715
トランザクションでググればみんなが言ってる事が理解できるよ
あんたもプログラマの端くれなら
憶測で物事を決め付けてかかる癖は直しなさい
719:nobodyさん
12/02/20 03:43:08.72
デュープとかトランザクションとか横文字に知るからゆとりが混乱するんだろうが
排他制御って書いてやれよ
720:nobodyさん
12/02/20 10:15:38.36
>>713
基本的にこの手のものは二重ログインは防止するものではないよ。
ユーザーがひどく不便になる。
721:nobodyさん
12/02/20 12:18:04.55 GErhC2S3
cURLのIDNを有効にするにはどうしたらいいんでしょうか
"curl idn enable"でggってみてそれらしきページはあったんですが何を言ってるのがサッパリでした
OSはwindows vistaでPHPはver.5.3.8、cURLは7.21.7です
722:nobodyさん
12/02/20 12:56:17.89
>>721
何を言ってるのかサッパリならわからない単語でさらにぐぐらないと。
そうやって技術書をスタックにつんでこそ。
723:nobodyさん
12/02/20 14:12:46.11
うおー、PHP.netがつながらない。困った。
でも俺だけっぽいな?
724:nobodyさん
12/02/20 14:14:15.72
ほんとだつながらない
725:nobodyさん
12/02/20 14:19:42.73 7zywTD2d
>>723
俺も繋がらないよ (千葉県でOCN回線)
726:723
12/02/20 14:23:06.17
>>724-725
うちは、都内でflet's + Interlinkだ。
普通にさば落ちかな。
727:nobodyさん
12/02/20 14:34:51.94
www.php.net→タイムアウト
jp.php.net→変なメッセージが出る
jp2.php.net→サーバが見つからない
728:nobodyさん
12/02/20 14:37:32.11
usの2つは繋がる
URLリンク(us.php.net)
URLリンク(us2.php.net)
729:nobodyさん
12/02/20 14:40:31.59
DNS浸透の問題じゃないか?
php.net
繋がらないPCだと[64.246.30.37]
繋がるPCだと[69.147.83.197]
730:nobodyさん
12/02/20 14:42:50.02
ドドランド詳しく
731:nobodyさん
12/02/20 15:44:56.71
>>716
同感
普段他の言語使ってるから
PHPで依頼されるとき$にイライラする
732:nobodyさん
12/02/20 15:56:02.91
そしたらvarで変数定義して、あとで変数に$を付けるスクリプト作れ。
733:nobodyさん
12/02/20 16:01:28.31
$がないPHPもつくれるだろうが人間の利便性より、解析処理速度を優先したんだろ。
内部コードがUTF16のPHPも作れるが、計画して進展しないのはやはりソースの解析速度だろ。
734:nobodyさん
12/02/20 16:09:55.54
perlの変数に$がついてるからだろ
735:nobodyさん
12/02/20 16:15:07.69
JavaScriptには付いてないけど。
PHPはperlに元にしてるのか。
736:nobodyさん
12/02/20 16:15:38.57
文字列中の展開とかあるしな。
使える記号も選べるほどないし
737:nobodyさん
12/02/20 16:39:46.15
ドのはなぁ…
規模が小さければトランザクションだ~とかで済むけど
規模が大きくなると基本が通じなくなる事もあるみたいだしな
URLリンク(d.hatena.ne.jp)
見たいな事象もあったりするし
それならそれで手を考える必要はあるんだろうが
その手のライブラリをしっかりと整備出来ていなかったのが痛いな
738:nobodyさん
12/02/20 17:21:34.54
だから、現金で取引されるようなデータには
固有の値をいれとけとあれほd
739:721
12/02/20 19:29:31.34
>>722
ウウッ(´;ω;`)ヒントだけでも頼むよぉ・・・
740:nobodyさん
12/02/20 19:35:40.43
>>739
英語だけじゃなくて日本語も読めないの?
741:nobodyさん
12/02/20 19:42:12.40
PHP.net復活したくさ。
742:nobodyさん
12/02/20 20:14:43.94
>>721
再コンパイルの仕方がわからないならxamppからPHP抜いて試してみるとよかろう
俺の使ってるXAMPP Lite 1.7.3のPHP5.3.4はONになってる
最新バージョンがどうかは知らないが
最新のxampp1.7.7はPHP5.3.8だし試してみる価値はあるだろう
743:nobodyさん
12/02/20 20:18:08.26
画像アップロードがほぼ完成して、自分が作ったソースファイルを
読んでたのですか、ifとelseを多用して非常に読みにくくなってました。
php歴2年ですが、これって素人がよくやるようなことなのでしょうか?
なにか解決策はありますか?
744:nobodyさん
12/02/20 20:30:10.23
>>743
>>595
745:nobodyさん
12/02/20 20:43:06.11 NoHq1hRP
正規表現で特定の文字の間の文字を取り出すことはできますか?
例えば、
あいうえおあ
という文字列があったら、あとあの間の文字の(いうえお)を表示する。と言うことは可能でしょうか?
746:nobodyさん
12/02/20 20:46:16.34
>>745
>>1
747:nobodyさん
12/02/20 20:46:30.08
可能
748:nobodyさん
12/02/20 20:49:21.61
>>743
今度からは>>1よめ
ifelse多様してるならswitch文が速いらしい
749:743
12/02/20 21:09:36.19 Hy6/Os+0
すいません、下げてました。
>>748
switch文をを試してみます。
750:nobodyさん
12/02/20 23:39:14.07
>>747ありがとうございます。
751:nobodyさん
12/02/21 00:33:40.75
NginXとFastCGIで、
a.phpで
<?php echo file_get_contents("URLリンク(localhost)"); ?>
として、
b.phpで
<?php echo "hello"; ?>
とすると、固まってしまう。
b.phpで、file_put_contentsとかしてみると出力はあるから、アクセスはしてるんだけど、
レスポンスが取得できてないくさい。
fopenやstream_socket_clientもダメだった。
ちなみにa.phpでhtmlやtxtなどの静的コンテンツは取得できた。
a.phpをコマンドラインで実行すると普通にレスポンス返ってきてるんだが・・・
何が原因なのかさっぱりわからん。
752:nobodyさん
12/02/21 01:13:11.18
>>751
>>595
753:nobodyさん
12/02/21 01:20:19.98
>>752
>>751のどこに質問と書いてある?
754:nobodyさん
12/02/21 02:58:29.45
>>737
ねえ、そのリンク先のだとトランザクション管理できないって言ってる?
そうじゃないなら何でそれ出したの?
755:nobodyさん
12/02/21 06:54:25.99 6SIN0kwR
WikipediaのSingletonのJavaで書かれた項目をPHPに移植したいのですが、
URLリンク(ja.wikipedia.org)
1つ目の例の書き方だと問題ないのですが、
2つ目の例の書き方の2行目をPHPで書くのは無理でしょうか?
同期化コストってのはようするにif文を毎回呼ぶのがよくないってことだと思うのですが、
2つ目の例の2行目の書き方がPHPでだめだとして、改善方法はありますか?
final class Singleton {
    private static final $instance = new Singleton();
    private function __construct() {}
    public static function getInstance() {
        return Singleton::$instance;
    }
}
$s = Singleton::getInstance();
$s2 = Singleton::getInstance();
var_dump($s);
var_dump($s2);
Fatal error: Cannot declare property Singleton::$instance final~
そこで$instanceのfinalを取ると
Parse error: syntax error, unexpected T_NEW in~
となります。
外からアクセスできるので質が違いますが、
private static finalに近そうなconstも試して見ましたが同様のエラーが出ます。
756:nobodyさん
12/02/21 07:18:35.44
>>755
コンストラクタ内でやればいいのでは?
757:nobodyさん
12/02/21 07:19:30.05
ああごめん、違うか
758:nobodyさん
12/02/21 07:20:50.57
final外すとか
759:nobodyさん
12/02/21 08:11:46.42
答える側も基本的な事すら調べないのな…
>>755
> 同期化コストってのはようするにif文を毎回呼ぶのがよくないってことだと思うのですが、
違う、同期化コストはJavaのsyncronized修飾子に対しての言葉
PHPではif文で毎回調べるのが常套手段となっている
URLリンク(www.php.net)
> 宣言時に初期値を設定することもできますが、初期値は定数値でなければなりません。
> つまり、コンパイル時に評価可能な値でなければならず、
> 実行時の情報がないと評価できない値であってはいけないということです。
760:751
12/02/21 08:31:30.02
自己解決した。単純な話だった
761:nobodyさん
12/02/21 10:14:06.04
ルール無視したまま退散か、このlocalhost野郎
762:nobodyさん
12/02/21 10:14:54.16
ルール守った所でお前みたいな無能には一生わからないからな
763:755
12/02/21 10:19:56.57
>>756-759
レスありがとうございます。
>>759
なるほどそういう意味でしたか。
syncronizedがどういうものかはよくわかりませんが、
PHPでは最初の例が常套手段ということは理解しました。
比較対象のため少しJavaの勉強もしてみようと思います。
どうもありがとうございました。
764:nobodyさん
12/02/21 10:24:44.01 otlrgE39
基本的なことかもしれませんが、教えてください。
ftp_get関数を使って、リモートのファイルをローカルに保存したいのですが
うまくいきません。
リモートでPHPの動かしていると、オフィシャルマニュアルのいうところの
「ローカル」というのは、動いている場所を指してしまうのですか?
具体的に書くとレンタルサーバー上のtest.phpの中で、ftp_get関数を使うと
レンタルサーバーの/home/hoge/に「C:\temp\downloaded.txt」 という名前のファイルが
できてしまってローカルには何もダウンロードされないのですが、これは仕様ということですか?
765:nobodyさん
12/02/21 10:37:35.23
Java知らないのにJavaのコードを移植しようとはこれいかに
766:nobodyさん
12/02/21 10:40:04.48
んな難しいことじゃないだろ
Javaなんて知らんでも>>755程度ならPHPある程度やってるやつなら誰でも移植できる
767:nobodyさん
12/02/21 10:43:47.00
でもつまづいてるのは、知らないからだというw
768:nobodyさん
12/02/21 10:57:28.75
>>764
ローカルとは実行してるコンピュータのこと
当然レンタルサーバーでftp_getを使えばftp_getの引数で指定した先からサーバー(ローカル)にダウンロードされ保存される
769:nobodyさん
12/02/21 10:59:15.38 otlrgE39
>>768
やっぱりそうでしたか、目の前の箱だと思っていたのが間違いでしたね。汗
ありがとうございました。べつな方法を考えてみます。
770:nobodyさん
12/02/21 14:39:44.56
PHPでのチェックボックスでの値の受け取り方や配列の扱い方よくわからないので教えて下さい。htmlの部分で
<input type="checkbox" name="checkbox01[]" value="0"> ~ <input type="checkbox" name="checkbox01[]" value="2">
とチェックボックスをつくりました。そしてPHPの処理部分では
// チェックボックスに値があれば
if($_GET["checkbox01"]){
foreach($_GET["checkbox01"] as $val){
if($val==0){
$data["A"]='あ';
}
elseif($val=1){
$data["B"]='い';
}
elseif($val=2){
$data["C"]='う';
}
}
// $dataがアレばそれぞれ
if($data["A"]){
print_r($data["A"]);
}
if($data["B"]){
print_r($data["B"]);
}
if($data["C"]){
print_r($data["C"]);
}
}
771:nobodyさん
12/02/21 14:41:32.79
としたのですが、チェックすべてに値をつけても 「あい」 までしか表示されません。試しに // チェックボックスに値があれば の前で
print_r( $_GET["checkbox01"]);
としたら
Array ( [0] => 0 [1] => 1 [2] => 2 )
と表示され、// $dataがアレばそれぞれ の前でも
print_r($data);
としたら
Array ( [A] => あ [B] => い )
と表示されたため、foreach文ないがおかしいとはおもうのですが解決方法がわかりません。
どのようにしたらいいのでしょうか?
長くなってしまったので連投してすみません、どなたかお知恵をかしてください。
772:nobodyさん
12/02/21 14:43:28.71
$val=1 → $val==1
$val=2 → $val==2
773:nobodyさん
12/02/21 15:08:48.42
これは質問者が間違って書いたから訂正してるのか、
別の人の解答なのかどっち?
ID無いからわからんな
774:770
12/02/21 15:21:10.42
>>772
ありがとうございます。こんな凡ミスなんて・・・
あと調べててin_array関数というのもみつけたのですが、foreachで繰り返して探すより
if(in_array("0", $_GET["checkbox01"] ){
}
if(in_array("1", $_GET["checkbox01"] ){
}
といったように内容は同じだとおもうのですがin_arrayで調べたほうがいいのでしょうか?
775:nobodyさん
12/02/21 15:37:57.26
>>774
全部処理するならforeach使うけどなぁ
in_arrayは検索する時だけ
776:770
12/02/21 16:07:46.92
>>775
ありがとうございます。
結局この場合はどちらがいいのでしょうか?
777:nobodyさん
12/02/21 16:17:22.51
>>776
この場合はforeach
778:nobodyさん
12/02/21 16:19:18.56
if($val==0){
$data["A"]='あ';
}
elseif($val=1){
$data["B"]='い';
}
elseif($val=2){
$data["C"]='う';
}
こんなことするなら最初からvalueにあいう入れればいいのに
779:nobodyさん
12/02/21 16:59:54.36
>>773
質問内容を理解してないから分からないんじゃないのか?
よって君はチェリーボーイ
780:nobodyさん
12/02/21 17:07:19.21
>>779
>>1読めって言ってんのがわかんねーやつは引っ込んでろよ
781:770
12/02/21 17:08:17.74
>>777
ありがとうございます。
そうじゃない場合はどんなときでしょうか?
782:nobodyさん
12/02/21 17:15:36.37
>>781
配列にひとつの値があるか検索する時
783:nobodyさん
12/02/21 23:58:50.45 QmooF5El
PHPの遅さを解消する方法はありますか?
784:nobodyさん
12/02/22 00:03:26.59
あなたの頭の回転の遅さを解消しましょう
785:nobodyさん
12/02/22 00:07:59.95
>>783
無駄な動作をなくせばいい
786:nobodyさん
12/02/22 01:07:04.45 HjiaSrjv
>>785
CakePHPを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
WordPressを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
OpenPNEを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
symfonyを早くするためにはどうしたらよろしいでしょうか?
デフォルトの状態です。
787:nobodyさん
12/02/22 01:09:47.45
また発作か
788:nobodyさん
12/02/22 01:39:15.45 HjiaSrjv
結局、言語自体が遅い気がします。
789:nobodyさん
12/02/22 01:42:23.62
今時体感できるほど遅いなら単にサーバがしょぼいだけだろ
790:nobodyさん
12/02/22 01:44:59.53 HjiaSrjv
>>789
他の言語に比較して遅いです。
比較はJavaとPythonです。
791:nobodyさん
12/02/22 01:46:11.48 HjiaSrjv
PHPもページ単位で処理が終わるものなら早いですが、
オブジェクト指向を始めると途端にパフォーマンスが悪くなるようです。
792:nobodyさん
12/02/22 01:48:41.94 HjiaSrjv
>>789
ローカル環境でも遅いのでどうしようもありません。
793:nobodyさん
12/02/22 01:54:46.01
じゃ窓からPCでも捨てればいいと思うよ
794:nobodyさん
12/02/22 01:57:04.91 HjiaSrjv
PHPでセッションにオブジェクトを格納することは少ないのでしょうか?
アプリケーションスコープが無いのはわかっていますが、セッションはありますよね。
WordPressしかり、Cakeしかり、symfonyしかり、オブジェクト格納場所として
セッションは考えられていないようです。これが結果としDBへの
余分なアクセスを増大させているようです。
795:nobodyさん
12/02/22 01:58:42.03 HjiaSrjv
>>793
たとえばOpenPNEが稼働しているサイトで機敏に動くところはありますか?
自分が知っている限り無いと思いますが・・・。
796:nobodyさん
12/02/22 02:10:14.28
OpenPNE使ってるサイトなんて画像が多かったりコード量が多いサイトがほとんどだろ
なんでもかんでもPHPのせいにすればいいってもんじゃない
797:nobodyさん
12/02/22 02:18:02.00
>>789
さすがにそれは無いわ。サーバがしょぼいの敷居がよほど高くなければ。
798:nobodyさん
12/02/22 02:18:21.92 HjiaSrjv
>>796
書いていますが、デフォルトの状態ですでに重いのです。
一切カスタマイズしていない状態です。ちなみに3.6系の最新版です。
デバックモードで起動するとものすごい数のSQLクエリが発行されています。
>>794についてはどう思われますか?
799:nobodyさん
12/02/22 02:20:08.85 HjiaSrjv
PHPのインタープリタが遅いのは承知していますが、
それ以上にクエリをムダに発行しているように思えるのです。
800:797
12/02/22 02:20:36.63
>>798
PHP部に限って言うならopコードキャッシュ使う。
DBアクセス数が多くて、コネクション生成コスト、クエリコストが原因で遅いのであれば、PHP自体の問題ではなくなる
801:nobodyさん
12/02/22 02:21:25.34
本当にそれが無駄なのであれば改善すれば世界中の人に喜ばれるよ。
802:nobodyさん
12/02/22 02:22:22.14
>>794についてはどう思われますか?
一人だけで使うなら別にいいんじゃね
803:nobodyさん
12/02/22 02:23:07.36 HjiaSrjv
PHPのリソースの捉え方が非常に大雑把で困惑しています。
たとえばJavaであれば
1.アプリケーションスコープ
2.セッションスコープ
3.リクエストスコープ
以上の3スコープに欲するデータが無い場合のみDBへアクセスしますが、
CakeやWordPress、OpenPNEなどの場合はお構いなしに毎回DBへアクセス
しているのが不思議です。
804:nobodyさん
12/02/22 02:26:05.08
>>803
Webサーバを複数使うことを想定してそうなってるわけじゃなくて?
設定とかで変えられないの?ってか、変えられないからそのように断定しているんだろうけれど。
805:nobodyさん
12/02/22 02:30:02.12
>>803
ちなみに期待するレスポンスはどの程度で、現状はどれくらい?
同時接続クライアント数など、必要なものを列挙してほしい。ベンチの結果でもいい。
806:nobodyさん
12/02/22 02:32:41.04
それがわからないから管を巻いてんじゃねえかな
807:nobodyさん
12/02/22 02:40:30.48 HjiaSrjv
>>805
>>806
PHPの主要フレームワークやCMSのソースコードリーディングに基づき、
このスレを書き込みしています。実践というわけではありません。
気づいたことはオブジェクトの一時保存場所としてセッションが
使用されていないのが不思議なのです。だからSQL発行が非常に多い。
これはなぜですか?
808:nobodyさん
12/02/22 02:41:22.45
>>807
>>804の1行目は理解できる?
809:nobodyさん
12/02/22 02:43:20.60 HjiaSrjv
>>808
PHPは分散オブジェクトは対応していないのですか?
810:nobodyさん
12/02/22 02:46:14.38
>>809
Javaのスコープの話が出てきた時点でこうなりそうな気はしていたが。
今後の話をわかりやすくするために「分散オブジェクトに対応する」というのがどういうことか伝えてもらえるかな。
811:nobodyさん
12/02/22 02:50:27.92 HjiaSrjv
>>810
複数のコンピュータ間で同じオブジェクトを同一マシーン上で処理が済むことと同じようにすることですよね。
812:nobodyさん
12/02/22 02:53:35.00 HjiaSrjv
OpenPNE,WordPress、CakePHPはセッションへオブジェクトを格納する設計になっていないのでしょうか?
813:nobodyさん
12/02/22 02:54:02.25
>>811
それでいいのなら、対応してる。
814:nobodyさん
12/02/22 02:55:12.88
>>812
ソースコードリーディングは諦めたの?
815:nobodyさん
12/02/22 02:56:50.78 HjiaSrjv
>>812
なぜ同じクエリを何度も発行しているのでしょうか?
OpenPNE3.6系です。
816:nobodyさん
12/02/22 03:00:29.37
いらなクエリをコメントアウトすればいいんじゃね?
817:nobodyさん
12/02/22 03:02:33.49 HjiaSrjv
>>816
その論法で行くと全部コメントアウトになりますが・・・。
私の質問はPHPでは答えにくのでしょうか?
818:nobodyさん
12/02/22 03:04:26.65
そろそろしんどい。
>>815, 817
繰り返すが、それが本当に無駄なら報告すれば多方面から感謝されるからそうしたらいい。
819:nobodyさん
12/02/22 03:08:04.96 HjiaSrjv
>>818
そんなに大げさなことでしょうか?
OpenPNEを試されたことがありますよね?
デバックモードで起動するとSQL発行数がわかりますが、すごい量です。
これはなぜですか?と言っているだけです。だから遅いんじゃないでしょうかと。
820:nobodyさん
12/02/22 03:09:29.52 HjiaSrjv
セッションにオブジェクトを格納しない理由があるのでしょうか?
昔はシリアライズのバグの話は聞いたことがありますが、さすがに今は解消しているはずです。
821:nobodyさん
12/02/22 03:09:46.81
>>819
デバッグモードじゃなければ発行されないの?
何のために使われるクエリなのかは調べてないの?
OpenPNEは使ったこと無いよ。使ったこと無いならレスしないでっていうことなら喜んでレスやめる。
822:nobodyさん
12/02/22 03:09:49.44
セッション切れるまでリソース保持とかどんな罰ゲーム
823:nobodyさん
12/02/22 03:09:54.82
x86命令セット渡しても文句言いそうだな
824:nobodyさん
12/02/22 03:11:44.08
どういう学び方をしたらこんなこじらせた頭になるんだ?
825:nobodyさん
12/02/22 03:11:56.60 HjiaSrjv
>>821
デバッグモードで起動するとSQLクエリの発行数がわかります。
826:nobodyさん
12/02/22 03:13:20.43 HjiaSrjv
>>822
それならそれでいいんです。
PHPでは罰ゲームレベルという理解でよろしいのですね。
827:nobodyさん
12/02/22 03:13:21.46
こんなとこで使ったこと無い人相手にがんばるくらいならコード読み進めてみたら?
828:nobodyさん
12/02/22 03:14:30.57 HjiaSrjv
結局のところ、
PHPではセッションにオブジェクトを格納するのは一般的ではないという結論ですね。
829:nobodyさん
12/02/22 03:15:13.92
>>826
Javaだと放置セッションのリソースはいつ破棄されるの?
830:nobodyさん
12/02/22 03:15:30.89
>>826
だから言っただろ
一人だけで使うなら別にいいんじゃね
って
831:nobodyさん
12/02/22 03:15:45.98 HjiaSrjv
よくわかりました。道理でセッションが使用されていないわけだ。
832:nobodyさん
12/02/22 03:16:55.71 HjiaSrjv
>>829
アプリケーションサーバーの設定による。
ただし、プログラムレベルでは細かく殺してリソースのムダ遣いを減らします。
833:nobodyさん
12/02/22 03:17:02.95
他人のコードを読む時の絶望感といったら言葉にならない
らーらーらー ららーらー 言葉になら~ない
834:nobodyさん
12/02/22 03:17:23.17
PHPだけの問題じゃないでしょうに
Javaだって同じ事
835:nobodyさん
12/02/22 03:17:48.03
>>832
PHPも一緒だよ。
836:nobodyさん
12/02/22 03:18:45.31
基礎知識が足りなさすぎるだろ
もっと幅広く勉強しろよ
837:nobodyさん
12/02/22 03:19:08.08 HjiaSrjv
もう大丈夫です。
PHPではセッションにオブジェクトを格納するのは一般的ではないということが
よくわかりました。
838:nobodyさん
12/02/22 03:20:04.33
どういたしまして。
839:nobodyさん
12/02/22 03:24:16.48 HjiaSrjv
セッションにオブジェクトを格納するのはPHPでは一般的では
ないとわかりましたが、それはPHPプログラマにとって尺に触ることでしょうか?
840:nobodyさん
12/02/22 03:27:56.08 HjiaSrjv
尺に触ったのであればすみまんでした。特に悪気はありません。
841:nobodyさん
12/02/22 03:30:45.46
癪に障るかってどういうことだろ。
たとえば一般的ではないことを強要されたら癪に障るかも知れないけれど。
842:nobodyさん
12/02/22 03:38:58.82
もしかして煽ろうとしていたのか…?
843:nobodyさん
12/02/22 03:57:13.25
>>840
キレてないっスよ
ペチパーキレさせたら大したもんスよ
844:nobodyさん
12/02/22 04:52:15.14
PHPでC言語の実装するとか言ってたのはどうなったんだ?
845:nobodyさん
12/02/22 06:32:14.02
PHPだからとかJavaだからとか関係ないから。
Webアプリケーションの設計の話でしょ。
846:nobodyさん
12/02/22 07:41:18.69
>>795
JavaとPythonで比較してるなら、OpenPNEに相当するJavaとPythonで実装されたもので
機敏に動くものを知りたい。
847:nobodyさん
12/02/22 08:55:42.21
もう大丈夫です。
PHPではセッションにオブジェクトを格納するのは一般的ではないということが
よくわかりました。
848:nobodyさん
12/02/22 09:00:26.08
PHPでなくても一般的ではない
849:nobodyさん
12/02/22 09:03:48.77
>>848
嘘つくなw
850:nobodyさん
12/02/22 09:10:04.74
コネクションプーリングってのはそもそもアプリケーション鯖が対応してなければ使えない
851:nobodyさん
12/02/22 09:13:27.28
>>850
当然。だからphpではコネプール不可。
852:nobodyさん
12/02/22 09:15:30.80
セッションの話はどうでもいいが、openpneが激重なのは同意。
かなりヤバイレベル。バージョン2の時代はマシだった。
853:nobodyさん
12/02/22 09:17:48.11
んでコネクションプーリングを実現するのにセッションが必要なんて
そんなヴァカな話があるのか
854:nobodyさん
12/02/22 09:24:03.91
>>853
たしかに、唐突にコネクションプーリングの話は変だとは思った。
その逆も必要ないかと。
話の流れとは関係ないw
855:nobodyさん
12/02/22 10:49:21.91
>>852
可能です。
以上。
↓次どうぞ
856:nobodyさん
12/02/22 11:04:16.02 yvJnpOho
>>783
CGIじゃなくてモジュールで動作させれば早いと書いてあった。
今のところはCGIで動作の仕様になってる。
857:nobodyさん
12/02/22 11:17:37.00
頭大丈夫 ?
858:nobodyさん
12/02/22 11:27:57.48
もう手遅れかと
859:nobodyさん
12/02/22 15:35:04.94
コネクションプーリングは言語レベルのサポートは無い。
860:nobodyさん
12/02/22 15:37:33.90
Javaのようなオブジェクト指向言語では普通にオブジェクトをセッションへ格納する。
861:nobodyさん
12/02/22 17:05:21.76
いいえアプリケーションで管理するのが普通です
862:nobodyさん
12/02/22 17:34:31.83
setcookie();の挙動について悩んでいます
a.phpで
echo $_COOKIE['testvar1'];
var_dump($_COOKIE);
---
b.phpで
setcookie('testvar1', 'bbb') //a.phpでbbbが出力される
---
c.phpで
setcookie('testvar1', 'ccc') //a.phpでcccが出力されない
setcookie('testvar2', 'xxx') //a.phpでtestvar2自体が確認出来ない
と、以上のようにしてる時、b.php → a.php の順番でアクセスするとechoもvar_dumpも正常な結果を返すんですが、その後
c.php → a.php の順番でアクセスするとechoはbbbを返し、var_dumpは追加したtestvar2自体を返さずtestvar1のみbbbとして返します
※c.php自体の中で echo $_COOKIE['testvar1'];すればcccを返します。また、c.phpのsetcookie();の返り値は1です
※また、b.phpの中でクッキーに入れる値を変更した場合はa.phpで変更後の値が確認出来ますが
c.phpの中で値を変更しても上書きされません(c.phpの中での確認です)
ドメインは全て同じで、原因が全くわかりません
何か考えられる対処法やチェック箇所あるでしょうか?
申し訳ないですが、どなたかご意見お願いします
863:nobodyさん
12/02/22 19:09:47.20
ブラウザを初期化する
864:nobodyさん
12/02/22 19:28:43.76
ありがとうございました!
865:nobodyさん
12/02/22 19:35:22.61
最近は、ID出さなくても答えて貰える様になったのか。
これがゆとりか。
866:nobodyさん
12/02/22 19:44:07.26
ID指摘したかったら、回答しつつ、ID出すように促せよ。
IDID言うやつ、回答しないんだよな。
867:nobodyさん
12/02/22 19:46:05.87
>>1
868:nobodyさん
12/02/22 19:46:44.23
昨日のチェリーボーイが居ますね
869:862
12/02/22 20:41:14.26 culdIBNJ
すみません、今気づきましたID出してなかったです。すみませんでした
その後もブラウザ再起動などしてやったんですが
やはりc.phpでsetcookie();した値はc.php以外で確認出来ません
なんなんでしょうか?
870:nobodyさん
12/02/22 20:44:30.18
>>869
問題が再現するコード出して
871:nobodyさん
12/02/22 20:50:21.88
>>869
たぶんpath
872:nobodyさん
12/02/22 21:49:26.94
HTTPのヘッダも確認してみれば
873:nobodyさん
12/02/22 22:14:17.30
fastcgiの動作確認なのですが
php-cgi -b 127.0.0.1:9000 &
として
telnet 127.0.0.1 9000
とかでなんか叩いて動作チェックって出来るものでしょうか?
874:862
12/02/22 22:42:10.50 culdIBNJ
>>870-872
その後、全てのsetcookie()を setcookie('time', date('Y-m-d H:i:s'), 0, '/', 'example.com');として
有効時間、パス、ドメインを指定したところ解決しました
質問して良かったです、助かりました
本当にありがとうございました
875:nobodyさん
12/02/22 22:51:44.23
いいってことよ
876:nobodyさん
12/02/22 22:55:02.14
ほい
877:nobodyさん
12/02/22 23:24:44.58 qmf6D6+H
get_included_files()に含まれてないファイルがrequire_onceで読み込まれないんですが、
原因としては何が考えられますか?
878:nobodyさん
12/02/23 00:42:33.05
>>877
パス間違ってるとかパーミッションがマズイとか。
ちょっと情報少なすぎ。
warningかnoticeも出てないの?
879:553
12/02/23 01:24:46.92
含まれていないんだから、読み込まれないのは問題無いだろw
880:nobodyさん
12/02/23 02:36:14.38
CakePHPは重いですね
881:nobodyさん
12/02/23 02:52:55.61
マシンパワーアップしようぜ
i7っでサックサクにしようぜ
882:nobodyさん
12/02/23 07:04:30.49
>>879
ん?
883:nobodyさん
12/02/23 11:23:14.79
>>880
同意。WordPressも激重。
884:nobodyさん
12/02/23 11:28:18.18
スレチ
885:nobodyさん
12/02/23 11:29:42.88
チッ
886:nobodyさん
12/02/23 11:35:04.06 GMJguUp1
セッションを利用したログイン認証について質問です。
ログインページでは、ID(メアド)とパスワードの一致をもって、認証OKとしています。
その後、各ページでは何をもって認証OKとすれば良いのでしょうか?
入門書では、
1.ログイン時に、各ユーザー情報をセッションに保持し、各ページでは、それがあれば認証OKとする。
2.ログイン時に、暗号化した認証キーを作成してセッションに保持し、各ページで再度、認証キーを作成し、セッションの認証キーと照会する。
3.ログイン時に、セッションID(session_id())をセッションに保持し、各ページでは、そのページでのsession_id()と照会する。
などの方法を確認しました。個人的には、1の方法で足りると思うのですが、2や3の方法のほうがセキュリティーは高まるのでしょうか?
887:nobodyさん
12/02/23 12:26:00.63
ログインフラグだけで十分
888:877
12/02/23 13:56:23.63 QQ9YytJp
>>878
パスは間違ってないようです パーミッションもちゃんと644になってます
直接関わるwarning・noticeは出ていないようです
情報が少なすぎるとのことなので問題の背景を説明します
レンタルサーバでXOOPSを使いサイトを運用しています
ある日すべてのページが500 Internal Server Errorになるようになりました
"php_flag magic_quotes_gpc Off"とだけ書かれたXOOPS_ROOT_PATH/.htaccessがあったのでこれを削除したところ、
だいたいのページは元通り見られるようになりました
しかし、管理メニューの互換モジュールで
Fatal error: Class 'Legacy_ActionFrame' not found in XOOPS_ROOT_PATH/modules/legacy/admin/index.php
とエラーが発生します
該当する.phpファイルではそのクラスを定義しているXOOPS_ROOT_PATH/modules/legacy/class/ActionFrame.class.phpをrequire_onceしているようなので、
このファイルにでたらめな文字列を書き足してSyntax errorを期待したのですが結果は変わりませんでした
また、require_onceの下にvar_dump(get_included_files());を書き足しても、このファイルは含まれていませんでした
以上にもかかわらず、require_onceの戻り値は1( != FALSE)でした
どうすればこのファイルはrequire_onceで読み込まれるようになるでしょうか?
よろしくお願いします
889:nobodyさん
12/02/23 14:11:01.61
>>886
どんな入門書読んだのか知らんが、2と3は明らかにおかしなこと言ってるぞ。
もう一回しっかり読め。
セッションとクッキーは別物だということを頭に置いてな。
890:nobodyさん
12/02/23 15:06:37.39 pOv6kBFH
smp.tsv
あああ\\t2012.01.23\\tききき\\n
いいい\\t2012.01.23\\tくくく\\n
ううう\\t2012.01.23\\tけけけ\\n
えええ\\t2012.01.22\\tこここ\\n
おおお\\t2012.01.22\\tさささ\\n
かかか\\t2012.01.21\\tししし\\n
今日 = 3
昨日 = 2
一昨日 = 1
このような値を取り出したい場合はどのような手順になるのでしょうか?
よろしくおねがいします。
891:886
12/02/23 15:11:52.08 AL17q7mx
>>887 889 レスありがとうございます。
3.のコードです。関数化されてます。
これは間違いなのでしょうか?
<?php
##### セッションの開始
function session_idset() {
session_start();
$_SESSION['auth'] = session_id();
}
##### セッションのチェック
function session_check() {
session_start();
$rtn = TRUE;
if($_SESSION['auth'] != session_id()) {
$rtn = FALSE;
}
return $rtn;
}
?>
892:886
12/02/23 15:23:33.04 AL17q7mx
2.のコードです。これもおかしいですか?
//セッションの開始
$_SESSION['login_id'] = $_POST['login_id'] ;
$_SESSION['auth'] = md5($salt . $_POST['login_id']) ;
//セッションの確認
function auth() {
global $salt;
if (md5($salt . $_SESSION['login_id']) == $_SESSION['auth'] ) {
return TRUE;
} else {
return FALSE;
}
}
893:nobodyさん
12/02/23 16:00:34.17
1~3は比較する情報が違うだけでやってること同じじゃん
894:nobodyさん
12/02/23 16:26:52.69
おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん。
やるんであれば、例えば、ランダム文字列を生成してクッキーに保存
その文字列をハッシュかけてセッションに保存
確認のときはクッキーのデータにハッシュかけたものとセッションのデータが一致するか
ってやればセッションハイジャックに対して少しは強くなりそう。
895:nobodyさん
12/02/23 16:36:47.58
>>891
本当にその入門書がその通りに書いているなら今すぐ燃やして他の本から学ぶべきだな
>>894
効果のないものを初心者に教えるな
896:nobodyさん
12/02/23 16:40:30.49
>>888
requireでは読み込めるってこと?
897:894
12/02/23 17:08:07.42
>>895
何で効果がないのか教えてくれ
898:nobodyさん
12/02/23 17:22:52.85
>>897
もしかして、セッションファイルを一般ユーザが見られる場所に
保存するシステムを前提に、ローカルユーザからの攻撃対策の話をしてる?
それだと、サーバの設定を見直した方がいいような……
899:nobodyさん
12/02/23 17:29:45.68
>>897
sidについて触れない時点でハイジャックには何の効果もないんじゃないの?それ
900:nobodyさん
12/02/23 17:31:23.55 sgcZLa3B
>>899
セッション固定攻撃に対しては効果があると思うけど。
901:nobodyさん
12/02/23 17:38:14.99
何で効果があるのか教えてくれ
902:nobodyさん
12/02/23 17:39:09.99
>>890
一行読んで、\tで分けて、二つ目の要素の日付調べて、該当する日のカウント増やす
903:886
12/02/23 17:59:29.91 +MEbH08X
1.のコードです。遅れてすみません。
やはり、このシンプルなコードが妥当なのでしょうか?
//$rowにDB取得データ代入済み
// ログイン情報を記録
$_SESSION["login"] = array("user_id" => $row["user_id"]," login_time" => time())
// ログインしているかどうか調べる関数
function is_logined() {
return isset($_SESSION["login"]);
}
904:nobodyさん
12/02/23 18:09:26.05
>>890
fgetcsv
array_count_values
905:894
12/02/23 18:21:05.98
>>898
仮にセッションIDが漏れた場合とか想定してるんだけど。
セッションIDだけじゃなくて、発行時のクライアントのチェックとして有効じゃない?
886の対案として出してるだけだから、ベストの方法とは思わんけど。
>>899
論点がぜんぜん違う
906:nobodyさん
12/02/23 18:24:58.57 pOv6kBFH
$lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$day,,)=explode("\t",$lines[$i]);
$today = date("Y.m.d");
$match_tday = preg_match("/$today/",$day);
}
今一歩前へ進めません。次のヒントお願いします。
907:nobodyさん
12/02/23 18:41:27.89
PHPSESSID決め打ちでそれだけが盗まれたら~ってこと?
908:nobodyさん
12/02/23 18:42:59.47
>>900
session_regenerate_id(true)で済む話だろJK…
909:nobodyさん
12/02/23 18:49:26.85
>>906
$lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$days[],,)=str_getcsv($lines[$i],"\t");
}
print_r(array_count_values($days));
910:877
12/02/23 20:38:51.67 QQ9YytJp
>>896
試してみました
requireに書き換えると、多少崩れたページが表示され、
Fatal errorではなくなりました
911:nobodyさん
12/02/23 20:40:13.32
session_registerって使っちゃまずいらしいけど
じゃあ代わりに何を使えばいいの?
912:nobodyさん
12/02/23 20:54:09.81
>>911
非推奨なのを知ってるということは
マニュアルを途中まで読んだな?
もっと下まで読めば書いてあるだろw
913:nobodyさん
12/02/23 20:57:03.04
最近は、ID出さなくても答えて貰える様になったのか。
これがゆとりか。
914:nobodyさん
12/02/23 21:00:17.68
回答しない自治気取り君お疲れ様です。
俺、アンタみたいな人嫌いですw
915:nobodyさん
12/02/23 21:10:37.40
お前が言うな
916:nobodyさん
12/02/23 21:44:28.17 P+2F5uLF
正規表現で既に取得しているものは取らない方法はありますか?
<?php
$data=
ABCDABCD;
$match='/A|B/';
preg_match_all($match, $data, $matches[0]);
print_r($matches[0]);
?>
結果
Array ( [0] => Array ( [0] => A [1] => B [2] => A [3] => B ) )
これを、AとBをそれぞれ一つだけ取得したいです。 1回取得したものと同一のものは取得しない方法はありませんか?
preg_matchを2回使うと一応できるのですが、それだと
結果
Array ( [0] => A )
Array ( [0] => B )
このようにそれぞれ別になってしまいます。
何かやり方はないでしょうか?
917:nobodyさん
12/02/23 22:13:07.95
print_r(array_keys(array_flip($matches[0][0])));
print_r(array_unique($matches[0][0]));
918:nobodyさん
12/02/23 22:28:16.08
>>913
主気取り乙。ずっとこんなところにばかりいないで他いくといいとおもう
919:nobodyさん
12/02/23 22:44:37.14
自己紹介おつ
920:nobodyさん
12/02/23 22:48:53.56
>>866です。レスありがとうございました。
>>894さんの「おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん」
というご指摘で、2.3.のおかしな点がよく理解できました。
ランダム文字列クッキーを認証に利用する方法は、自分も考えたのですが、
XSSでJSによりクッキーを盗まれる場合には、セッションクッキーとともに
そのランダムクッキーも盗まれるので効果が無いと思いました。
また、セッション固定化攻撃には、>>908 さんのいうsession_regenerate_id(true)が
適切だと考えます。それとともに、php.ini、.htaccessでセッション付きリンクを
使用不可にするのがよいのかなと。
921:nobodyさん
12/02/23 22:51:08.67
>>920
スレのルールは守ろうな
922:886
12/02/23 23:14:53.15 NC9JkONA
>>921 失礼しました。>>920 は886です。
923:nobodyさん
12/02/23 23:58:21.36 P+2F5uLF
>>917ありがとうございます、できました。
924:nobodyさん
12/02/24 00:05:55.32
ルール厨うぜー
925:nobodyさん
12/02/24 00:12:55.29
>>924
スレのルールは守ろうな
926:nobodyさん
12/02/24 00:25:39.45
おまえがいうな
927:nobodyさん
12/02/24 07:08:08.38
守ってるじゃん
928:nobodyさん
12/02/24 08:26:18.43
>>894
それ意味ないじゃん
ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
あとその処理自体にセッションハイジャックに強くなる要素が見当たらない
サーバ側でセッションハイジャックされないような対策を考える場合XSSだけに気をつければいい
結局ハイジャックされるかどうかはクライアント側の行動次第
リンクにセッション情報を含めないほうがいいのはクライアント側の行動次第では漏れる可能性が高いから
クライアント側がそれなりの知識を持ってるならリンクにセッション情報を含めても問題ない
929:nobodyさん
12/02/24 08:36:25.74
>>873
自己解決しますた。
telnetじゃムリでした。
<? phpinfo(); ?>がスルーされたのがそもそもの発端だったんだけど、5.3.8と5.2.13ではshort_open_tagが違うんですね。
pukiwikiとかwordpressって律儀に<?php ~ ?>ってやってるのかな?
930:894
12/02/24 09:27:38.22
>>928
前半の
>>ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
に関しては同意だけど、セッションIDとクライアントの情報を合わせて
盗まれなければ意味があるじゃん。
セッションIDだけ盗まれるってケースは意外とあると思うぞ。
>>920の言うようにクッキーまるごと盗まれたらしょうがないけど。
後半は同意できない。
931:nobodyさん
12/02/24 09:38:18.08
実質的にセッションIDが漏れるってことはクッキーが漏れることと同義だろ
どこの実装もほぼ100%クッキーでやってるんだから
932:nobodyさん
12/02/24 10:29:02.94 BAbDqRA5
eclipse3.7のphpで開発しているのですが、CVSからファイルを持ってきた時に文字化けをしてしまいます。
その為、使用するファイル(Sfit-JIS)を一つずつ選択し、プロパティーから文字化けしないUTF-8に変換しているのですが、
一括ですべてUTF-8にする方法はあるのでしょうか。
使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても
だめでした。
933:nobodyさん
12/02/24 11:10:06.07
>>930
それ同じこと思った。
なんでクッキーとセッションが別腹的な考え方なんだろ。
素人の俺にはわからん。
TLSかけるなりしてクライアントとPCの通信の盗聴防がなきゃ意味ない気が。
934:nobodyさん
12/02/24 11:18:03.05
最新式の複雑な鍵を使ったとしても、
鍵盗まれたら困るってことの対策にはならんもんね。
935:877
12/02/24 12:51:09.28 i01HfJfE
>>877,888,910です
解決策ありませんか?
936:nobodyさん
12/02/24 14:00:59.55
>>935
requireで読めたんならそれでいいだろ
2回以上読み込むファイルをrequire_onceで読み込むのがおかしい
937:nobodyさん
12/02/24 17:03:51.32
>>932
>使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても
だめでした。
それエクリプスの設定をUTFにしてるだけだし…
PHPでそのPHPファイルをfile_get_contentsで読み込んでエンコード変えて同じファイルに書き出すくらいじゃね?
938:nobodyさん
12/02/24 18:34:59.75
ほ
939:nobodyさん
12/02/24 20:44:15.85
>>929
毎回<?php って書いてるよ。
<?= とか便利かもって思ったこともあったけど、それが便利だと思える場面に遭遇しなくなった
940:nobodyさん
12/02/24 20:51:14.32
コードアシストで解決
941:nobodyさん
12/02/24 22:22:57.58
>>932
nkf使うとか。
942:nobodyさん
12/02/24 23:20:35.88
$file_name="p/1.html"となってる時、
p/の部分だけを取り除いて、
$file_name2="1.html"とすることはphpでは可能ですか?
943:nobodyさん
12/02/24 23:23:49.74 gMrEIIb2
$file_name="p/1.html"となってる時、
p/の部分だけを取り除いて、
$file_name2="1.html"とすることはphpでは可能ですか?
すいません、上げてました。
944:nobodyさん
12/02/24 23:34:42.08
>>943
basename()がある
945:nobodyさん
12/02/24 23:34:43.65
実際はディレクトリをのぞいてファイル名だけにしたいとかなんだろうけど
そんな質問の仕方だと
substrで三文字目以降を切り出せとか
p/を空文字に置き換えろとかいう答えが返ってくるぞ
946:877
12/02/24 23:48:54.24 i01HfJfE
>>936
requireで読むとFatal errorはなくなりますが、ページの表示が正常ではありません
2回以上読まれるかどうかは未検証ですが、
require_onceの前後のどちらでも、get_included_files()に該当するファイルが含まれないのは問題だと思います
947:nobodyさん
12/02/24 23:51:09.90 kLSGsgF4
phpから現在動いているmtaが何か取得する方法ってありますか?
sendmailか否かさえ分かればいいのですが。
948:nobodyさん
12/02/24 23:54:48.93 gMrEIIb2
>>944
ありがとうございました。
>>945
そうです、ディレクトリ名だけとっぱらいたかったんです。
なんか、適当に作ってたら、mysqlに入れた値が"p/1234.html"
となっていたんです。これはこれで表示されないデータなら
扱いやすいのですが、表示されるデータにディレクトリ名って
欲しいのか?という疑問にぶつかりました。basename()って便利な
関数ですね。
949:nobodyさん
12/02/25 00:21:03.84
>>946
requireで読めて、require_onceで読めないファイルがあるってことだよね。
それがわかっているなら後は何が原因なのか、どんどんコードを削っていけばたどり着くと思うんだけど
950:nobodyさん
12/02/25 00:55:13.78
>>947
Linuxなら、exec関数で "ps ax | grep sendmail" を実行して、その出力をチェックする
951:nobodyさん
12/02/25 01:14:42.48 a/GXX7hd
メールを連続で送信する場合、マニュアルには、
>mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。
>この関数は 1 通のメールを送信するたびに SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。
>大量のメールを送信する場合は、 ≫ PEAR::Mail および ≫ PEAR::Mail_Queue パッケージを参照ください。
と記述してありますが、PEARを使いたくない場合、
ソケット関数で自分でSMTP処理を書くしか無いですよね?
952:nobodyさん
12/02/25 02:43:21.75
実現できる方法でどうぞ。
「しか無い」ってのはよほどのことが無い限り無いと思ったほうが。
953:nobodyさん
12/02/25 02:47:59.67
PEAR::Mail および PEAR::Mail_Queue で必要な箇所を参考・コピペする。
954:nobodyさん
12/02/25 18:02:10.27
>>912
session_register()使う代わりに
$_SESSION に値をぶっこむのね
ありがとう!
955:nobodyさん
12/02/25 18:56:47.63 1lZdYX8R
たとえばですが、
wire.jpというサイトがあります。
内容的には好きなんですが、相当重いサイトです。
こういったPHPで作られたサイトのパフォーマンスを
上げるためにはどうしたらよろしいでしょうか?
956:nobodyさん
12/02/25 19:08:41.43
キャッシュでも作れば?
957:nobodyさん
12/02/25 19:09:58.04 r6BFdbus
RSSからforeachで値を取得したのですが、それをループの外で一つの変数として扱いたいのですが、どうしたらいいでしょうか?
<?php
$array=array(1,2,3,4,5,);
foreach ($array as $value) {
$a=$value;
}
echo $a;
?>
例えばこのようにすると、当たり前ですが結果はループで上書きされて5と表示されます。
foreachで取得したものを一つの変数に入れることは出来ませんか?
958:nobodyさん
12/02/25 19:25:22.22
>>957
よく分からんけど仮に3つ目の値が取りたいなら
echo $array[2];
959:nobodyさん
12/02/25 19:53:18.83
>>957
print_r($array);
して表示結果を見てみなはれ
その上で$array[x] ←xのところに対応した数字をいれる。
で出てくる。
960:nobodyさん
12/02/25 20:48:35.56
$a=$value;を $a[] = $value;
961:nobodyさん
12/02/25 21:26:32.82 r6BFdbus
>>960ありがとうございます。
962:nobodyさん
12/02/26 00:47:29.55
いいってことよ
963:nobodyさん
12/02/26 00:48:27.77
ほい
964:nobodyさん
12/02/26 00:52:26.79 nCX4lbdW
>>956
キャッシュとはどのようなキャッシュですか?
965:nobodyさん
12/02/26 01:35:13.43 nCX4lbdW
キャッシュとは言語レベルのサポートですか?
wire.jpはWordPressみたいですから
WP Super Cacheプラグインみたいなプログラムレベルの
キャッシュのことを意味していますか?
966:nobodyさん
12/02/26 01:42:08.72
( >д<)、;'.・ キャッシュン
967:nobodyさん
12/02/26 01:47:59.96 nCX4lbdW
>>956
例としてあげてwired.jpはW3 Total Cacheが入っているようです。
それでも遅い場合はどうしたらよろしいのでしょうか?
968:nobodyさん
12/02/26 01:48:34.31
>>966
bless you
969:nobodyさん
12/02/26 01:53:36.51
Thank you!
970:nobodyさん
12/02/26 01:58:30.12
phpでデータベースを扱うには、何かと方法がありますが
エクセルのシートで外部参照するみたいに、この列はこっちの
データベースから引っ張って、この列はこっちから
というように複数のデータベースから情報を引っ張って
統合して表示、または登録変更をするためには、どんな
方法を使うのが最も適しているのでしょうか?
971:nobodyさん
12/02/26 02:07:02.73
>>967
オーバークロックしかないな
972:nobodyさん
12/02/26 02:16:44.23 oisclph1
質問させてください。
自動返信メールの内容に値を持たせたいんですが
値の入っていないものは表示させないようにしたいです。
<?php
$MESSAGE = "
注文がありました。
商品 個数
[[りんご]] [[1]]
[[みかん]] [[0]]
[[ぶどう]] [[3]]
";?>
実行すると
りんご1個
ーー(みかんの注文が0なので表示されず空白だけできてしまう)ーー
ぶどう3個
というメールが来てしまうで、みかんの部分を上に詰めさせたいです。
メールが来る仕組みなどは人がしたものなのでよく分かってません。
よろしくお願いします。
973:nobodyさん
12/02/26 03:04:07.86
>>972
$cart=array("りんご"=>"1","みかん"=>"0","ぶどう"=>"3")
$MESSAGE = "注文がありました。\n\n商品 個数\n"
foreach($cart as $key => $val){
if ($val>0){ //$valが0以下の時は処理しない
$MESSAGE.="[[$key]] [[$val]] \n"
}
}
備考 POST情報はクライアント側で詐称できるので 値段を表示させる場合はPOSTさせないでDBに取りに行ったほうがいいと思うよ
974:nobodyさん
12/02/26 03:34:02.05 oyzRHeH9
俺は自分でも結構オブジェクト指向イケてるんじゃないかと思ってたんだが、
今日クラスを作成していたときにクラス名に悩んで、
候補のものをググってたら、C#の同名のクラスが出てきたんだ。
どんなメソッドがあるのかな?とチラっとみてみたら、
俺がクラスに含める予定だった処理が別クラスで処理されていた。
徹底的に細かくオブジェクトを分けていることに俺はショックを受けて絶望した。
これが本当のオブジェクト指向なのかと。
自信が一気になくなった俺はこれからやっていけるでしょうか?
975:nobodyさん
12/02/26 04:34:33.44
細かく分けることがオブジェクト指向・・・?
976:sage
12/02/26 09:48:27.16
>>974
そもそも論として
phpでオブジェクト指向実装は後付けの中途半端だし、
最適化されていないのでパフォーマンス悪いよ。
それだったらJava、C#みたいな強制的オブジェクト指向言語で
勉強して方がいい。他の言語で役に立つから。
977:sage
12/02/26 09:49:49.71
>>975
PHPerから見ると、
オブジェクト指向言語のクラス設計はすべてが細かく見えるかと。
978:nobodyさん
12/02/26 10:03:42.64
他の言語って、これからいくつ覚えるつもりだよ
一生勉強ってかw
979:sage
12/02/26 10:15:37.18
>>978
これからもphpオンリー?
スマホアプリとか大丈夫?
サーバーサイドオンリーの人だとしても、
phpだけだったら守備範囲が狭くならないかい?
たとえばfacebookみたいに
phpで作りました。
↓
でもユーザー増えて負荷に耐えられなくなりました。
↓
基幹をC++やJavaに切り替えました。
というケースは無いの?
980:nobodyさん
12/02/26 10:22:20.60
>>977
そこが本質じゃないのにね
981:nobodyさん
12/02/26 10:29:56.54
一生勉強って当たり前だろ
982:nobodyさん
12/02/26 10:34:22.17
いや本質だろ。
継承や再利用を考えると重要。
それより次スレ
983:sage
12/02/26 10:38:06.83
そもそも論として、
細かく設計するとPHPの場合すぐパフォーマンスが悪くなる。
いずれにしてもPHPのオブジェクト指向は中途半端で使いにくい。
984:nobodyさん
12/02/26 10:39:22.25
例えばチャットクラスで
書き込みを行うwriteというメソッドがあったとする
PHPerの場合
ここに渡す引数はString型の$messageである
C#erの場合
ここに渡す引数は別クラスで作成したメッセージオブジェクトである
985:nobodyさん
12/02/26 11:12:49.13 yp5CCX+k
メールアドレスの「@」より前を取得したいんですけど、自分では
$tmp = explode('@', $email);
$name = $tmp[0];
という書き方しか思い浮かびません。
もっと簡単にできる方法があれば教えて頂きたいです。
986:nobodyさん
12/02/26 11:18:26.38
echo substr($email, 0, strpos($email, "@"));
複数行になるのが簡単ではないと考えてるなら考えを改めるべし
987:nobodyさん
12/02/26 11:28:57.23
四年前の爺さんの背広からメガビックボーイが出てきたんだが
一生現役ってことを考えると一生勉強くらい普通だと思った。
988:nobodyさん
12/02/26 11:31:05.44
preg_replace("/(?=@).*/","",$mail);
とか
explodeでいいと思うけどな
989:nobodyさん
12/02/26 11:34:48.98
replaceだと元データのメアド使えなくなるやん
990:sage
12/02/26 11:35:02.59
勉強したくないなら
なぜ潰しが効かない、汎用性が低いphpなのか不思議。
汎用性が高い言語選べばよかったのに。
991:nobodyさん
12/02/26 11:39:39.13
どの言語でもできることとできないことがある
1つの言語習得すれば金輪際勉強せずに済む言語なんて皆無
992:nobodyさん
12/02/26 11:46:01.70
>>980
>>1
993:nobodyさん
12/02/26 11:49:03.94
しょうがないから建ててくるか
994:nobodyさん
12/02/26 11:52:02.39
スレリンク(php板)
995:nobodyさん
12/02/26 11:56:49.85 yp5CCX+k
>>986
ありがとうございます。助かりました。
複数行というより、わざわざ配列にするのが気持ち悪くて…。
996:sage
12/02/26 12:01:13.12
>>974
phpのオブジェクト指向はなんちゃってレベルだから。
他の言語ではphpの経験は生かせないよ。
997:nobodyさん
12/02/26 12:03:36.76
そいういうこと書いてるようじゃ
大してオブジェクト指向の考えというのを理解できてないな
998:nobodyさん
12/02/26 12:08:49.02
>>996
>phpのオブジェクト指向
どれだけあほなこと言ってるかわかるか?もっと勉強しろ。
999:sage
12/02/26 12:24:07.98
phpのオブジェクト指向機能の実装
1000:sage
12/02/26 12:25:05.67
PHPer、ダメポ。
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。