【PHP】下らねぇ質問はここに書き込みやがれ 68
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/03(土) 22:52:16ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0179nobodyさん
2008/05/06(火) 19:51:19ID:???同じ値が何度も表示されてウゼーっス
循環参照を防ぐ方法ないッスか?
0182nobodyさん
2008/05/06(火) 20:26:33ID:???無限ループ?
0183nobodyさん
2008/05/06(火) 22:21:39ID:???再帰関数な感じだろうか
再起関数内でなんとかするならグローバルでカウントする変数作って最後に出すようにするとか・・。
単純に再起関数終了後にvar_dumpとか・・
どうでもいいがID出せ
0184nobodyさん
2008/05/06(火) 22:27:36ID:???探せばいくらでもあるだろう。
俺はcakephpのpr()を使っているが。
0185nobodyさん
2008/05/06(火) 22:59:10ID:???同時ヒット数によってサウンド変わったら分かりやすくね?
0186nobodyさん
2008/05/07(水) 00:20:40ID:???あと
$html .= aaaaaaa;
$html .= bbbbbbb;
は遅いけど
$hmlt = aaaaaaaa.
bbbbbbbbb;
はそんなに遅くない
0187nobodyさん
2008/05/07(水) 00:23:38ID:???ヒアドキュメントか"."連結のほうがスッキリする場合はそうする。
0188nobodyさん
2008/05/07(水) 14:11:21ID:???PHPでヒアドキュメントつかう意味がわからんて奴が結構いるけど、
変数がでるたびに<?php ?>で出入りするほうが面倒じゃね?
0189nobodyさん
2008/05/07(水) 14:20:04ID:PVZCAXAQ0190nobodyさん
2008/05/07(水) 14:51:59ID:ae64vN4s0191nobodyさん
2008/05/07(水) 15:02:26ID:???0193nobodyさん
2008/05/07(水) 15:44:25ID:???0194nobodyさん
2008/05/07(水) 15:50:21ID:???0196nobodyさん
2008/05/07(水) 16:11:28ID:???>>190
> ( string string [, bool replace [, int http_response_code]] )
これ便利ですよ。
0197nobodyさん
2008/05/07(水) 16:11:52ID:???サーバサイドで知る方法があれば教えて下さい
0198nobodyさん
2008/05/07(水) 16:13:58ID:???調べれば判るだろ
=頭を使ってないorどう調べて何が判らなかったのか説明する能力がない
0199nobodyさん
2008/05/07(水) 16:15:22ID:???ttp://www.phppro.jp/phpmanual/pear/package.http.http-request.response-eval.html
こういうことかい
0200nobodyさん
2008/05/07(水) 16:19:57ID:???いや・・・自コード内で、という意味です
たとえばsession_cache_limiterを使ったらヘッダが勝手に設定されるみたいですが
どう設定されたのか知りたいんです
0201nobodyさん
2008/05/07(水) 16:45:55ID:???出力済みヘッダ内容を、自分自身で受け取ったり文字列として再出力する手段は俺は寡聞です。力になれなくてごめん
もしデバッグ用途なら、firebugとか使ってクライアント側でヘッダ見るんじゃ駄目なのかな?
0202nobodyさん
2008/05/07(水) 16:57:54ID:???http://jp.php.net/manual/ja/function.headers-list.php
じゃダメなのかね。Apacheレベルでなんかしてたらお手上げだけど。
って言うか、質問者はマニュアル読んでるのかな。
0203nobodyさん
2008/05/07(水) 17:07:35ID:???ありがとうございました
firebugを使ってなかったのでいれてみました
>>202
これですね
こんな機能が標準で備わってると思わなかったのでみていませんでした
ありがとうございました
0204nobodyさん
2008/05/07(水) 17:33:33ID:???勉強用に単純な検索プログラム(ユーザーの入力した条件から適切なレコードを検索、表示する)を作っています。
結果が一定数以上の場合はページ遷移を行うわけですが、ここで少し迷ってしまいました。
@ SQLから結果を全て受け取って、配列に入れておき、それを for で回す。ページ遷移は for の引数を変えていく。
A LIMIT などを使って、そのページ、そのページで、SQLから結果受け取る。
どちらの方法を取るべきなのか、ご助言いただけると有難く思います。
よろしくお願いします。
0205nobodyさん
2008/05/07(水) 17:38:00ID:???なのでA番のほうがいいと思いますー。
そんなにレコード数はないだろうけど、勉強用としてはもってこいな題材だし。
0207nobodyさん
2008/05/07(水) 17:58:56ID:???ご回答ありがとうございます。
>>205さんのおっしゃる通り、レコードが数万単位になってきたら、ループで回すのは現実的じゃないですね。
A の方法を取ろうと思います。
参考になりました、ありがとうございました。
0209nobodyさん
2008/05/07(水) 22:09:34ID:jO2+N/ibmysqlに接続するときにmysqlのuserとpasswordが必要になりますが
PHPの場合はどこにその情報を持ちますか?
設定ファイルとしてconf.phpとかを作成してその中に持つのが簡単ですが
生パスワードが書かれるのは、できれば避けたいと思いまして
0210nobodyさん
2008/05/08(木) 00:03:27ID:???嫌なら暗号化処理とかすればいい
ついでだからバイナリ化しておけばパット見わからんぞ
0211nobodyさん
2008/05/08(木) 00:13:19ID:???0212nobodyさん
2008/05/08(木) 00:31:48ID:???0213nobodyさん
2008/05/08(木) 00:39:50ID:???0214nobodyさん
2008/05/08(木) 00:39:59ID:tHYDIFZkなかなかいい方法が浮かびません。なにか方法があるのでしょうか?
サイトにログインしてそのアドレスを他人に送信したときに入れなければいいんですが
urlに引数でユーザーIDとか持たせてるので、今はそれだけで認証させているのですが
もちろんそれだと他の人でも余裕で入れてしまいます・・
よろしくおねがいします。
0216nobodyさん
2008/05/08(木) 00:50:32ID:???0217209
2008/05/08(木) 01:09:01ID:???やっぱ生すかねえ
暗号化したところでhashみたいに一方向にはできないですし
apacheユーザでパーミッションを0600にでもしておきます
0218nobodyさん
2008/05/08(木) 01:11:07ID:???0219nobodyさん
2008/05/08(木) 01:16:25ID:???0220nobodyさん
2008/05/08(木) 01:17:48ID:???0221nobodyさん
2008/05/08(木) 01:46:12ID:???SUIDとかSGIDとかスティッキービットの部分かな
必要無いときゃ書かないのが普通だと思うけど
0223nobodyさん
2008/05/08(木) 03:00:32ID:/YXnYoEjこのページの例1の、$xmlstr = <<<XML ~ XML; の所が
”<<<XMLで”始まり、”XML;”で終わっていますが
変数に文字列としてxmlを代入する場合の決まり事っていう事でいいのでしょうか?
調べてみても分からなくて、気になったもので・・・
よろしくお願いします
0224nobodyさん
2008/05/08(木) 03:07:24ID:???http://jp.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
0225nobodyさん
2008/05/08(木) 03:16:09ID:/YXnYoEjすいません・・・、見てませんでした
取りあえずxmlを操作してみたく飛ばしてました
始めから読み直します;
ありがとうございました
0227nobodyさん
2008/05/08(木) 05:16:22ID:bsvRXjwoこれがすごく遅い
ブラウザからアクセスするとそんなに遅くないんだけど
なにか原因になりそうなことあります?
0228nobodyさん
2008/05/08(木) 05:32:42ID:???0229nobodyさん
2008/05/08(木) 05:33:14ID:???$className = "Hoge";
$className::classProperty;
$className::classMethod();
みたいにしたいのですが・・・
0230229
2008/05/08(木) 05:35:07ID:???0231299 ◆SxucvMLsOs
2008/05/08(木) 05:36:53ID:???暇な事してないで答えてくれよ!
0232229 ◆SxucvMLsOs
2008/05/08(木) 05:37:22ID:???0235229 ◆SxucvMLsOs
2008/05/08(木) 05:46:58ID:???試してます。
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
が出てしまうので、構文的にアウトなのはわかるのですが・・・
別の書き方があるのかと思い、質問してる次第です。
0236229 ◆SxucvMLsOs
2008/05/08(木) 05:51:10ID:???PHP5.3から出来るようになるとの事。
おとなしくcall_user_func使うよ・・・
0237nobodyさん
2008/05/08(木) 05:52:14ID:???ここはID表示されないとまともな回答は得られないスレですので
0238nobodyさん
2008/05/08(木) 05:57:20ID:???2回目からだけど
0239nobodyさん
2008/05/08(木) 05:57:52ID:???IDと全角で表記するのは非常にイケテない気がします。
0240nobodyさん
2008/05/08(木) 07:12:47ID:a30fSoKvサーバーとクライアント間を相互にXML送信したいのですが、
サーバー → クライアント のXMLは問題ないのですが、
クライアント → サーバー の場合、XMLHttpRequestを使ってXMLを送信した場合、
サーバー側のPHPではどうやってXMLを取得すればいいんでしょうか?
クライアント側のJavaScriptはこんな感じです。
// POST
Ajax.prototype.Post = function Post( argPost ){
post = '<xml>xml</xml>';
// post = 'va1=1&va2=2';
this.request = this.CreateXMLHttpRequest();
this.request.onreadystatechange = this.OnReadyStateChange;
this.request.open( 'POST', this.url, this.async, this.user, this.pass );
// this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.request.send( post );
}
サーバー側のPHPは、下のようにして値をチェックしてます
<?php
var_dump($_GET);
var_dump($_POST);
var_dump($_SERVER);
?>
0241nobodyさん
2008/05/08(木) 08:06:49ID:???$data = file_get_contents('php://input');
どうしてもXMLを使う理由が無いなら、
クライアント → サーバは 普通にpost
サーバ → クライアントは JSON
をお勧めする。
0242nobodyさん
2008/05/08(木) 08:37:17ID:a30fSoKvレスありがとうございます。
取得できました。
そんな方法があるとは知りませんでした。(さすがです!)
JSONの方が楽なのは承知しているのですが、色々と事情がありまして・・・
0243214
2008/05/08(木) 09:00:38ID:lngjMkTWそれだとFORMしかリンクに使えなくなるのでテキストのリンク部分などは回避したいところです・・
>222
違います
0245nobodyさん
2008/05/08(木) 09:12:35ID:???0246nobodyさん
2008/05/08(木) 09:12:48ID:???携帯端末情報は普通のアンカーからでも取れると思うよ。
DoCoMoだと端末側に送信するか否かの確認は出るだろうけど。
それが嫌なら、
・URLにユーザIDではなく、セッションIDを持たせる。
・セッションIDはアクセス毎に変更する
とか処理しとけば要件満たせるよ。
0247243
2008/05/08(木) 09:58:57ID:6fBs3OYgすいません、勘違いしてました。
>246
セッションIDもたせたばあい、そのアドレスでアクセスしたら
他の端末でアクセスしたときのセッションの内容がみれたのですが・・
0248nobodyさん
2008/05/08(木) 10:10:42ID:???「セッションハイジャックが毎日行われています。客に仕様だと説明しているのですが
納得してもらえません。どう説明すればいいのでしょう?」
と似てきたな。
0249nobodyさん
2008/05/08(木) 10:39:32ID:???>セッションIDもたせたばあい、そのアドレスでアクセスしたら
>他の端末でアクセスしたときのセッションの内容がみれたのですが・・
セッション側で管理してなきゃ当然の動作だ。
まずはユーザエージェントでも見て、セッションの有効性をチェックしろ。
これで3割防げる。
そして、セッションIDをアクセス毎に変えろ。
ユーザが故意にセッションIDを流出させない限り
これで9.99割防げる。
0251nobodyさん
2008/05/08(木) 11:33:28ID:???0253nobodyさん
2008/05/08(木) 11:43:53ID:???.__
ヽ|´∀`|ノ <先生!fscanfがおかしいです!
|__|
| |
0254nobodyさん
2008/05/08(木) 11:45:46ID:???0255243
2008/05/08(木) 12:03:56ID:6fBs3OYgもしよければ具体的なソースコードなど教えてもらえないでしょうか?
0256nobodyさん
2008/05/08(木) 12:04:51ID:???0257nobodyさん
2008/05/08(木) 12:05:52ID:???0258nobodyさん
2008/05/08(木) 12:07:34ID:BM6vmusKこれスクリプトおかしくない?
0259nobodyさん
2008/05/08(木) 12:14:31ID:???ググレばやまほど情報出てくるよ。
ロジックを考える事でPGは育つので、
自分で考えてみると良いと思う。
ヒント
$_SESSION['USER_AGENT'] を保存しておいて、
アクセス毎に、ユーザエージェントが変わってないかチェック。
セッションIDを毎回変えるというのは、
session_regenerate_id で検索すればいいよ。
0261243
2008/05/08(木) 12:33:03ID:6fBs3OYg同じ機種だと同一のagentにならないですか?
0263nobodyさん
2008/05/08(木) 12:41:47ID:???レンタルサーバーに設置して予定編集ページに飛ぶためにクリッコしてもページが切り替わらんのです。
自宅サーバー設置してやってみましたが同じだったのでスクリプトかと思いまして
0265nobodyさん
2008/05/08(木) 12:54:16ID:???ヒント:古いバージョンと新バージョンのPHPでのGETとPOSTの取得方法
ソースみたら動かなくて当然
よく読まなかったのかい?
0266243
2008/05/08(木) 14:27:27ID:6fBs3OYgDoCoMoだと毎回確認が出てうざくなるので
できれば使いたくないのですが・・・
ページによっては使うことになると思うんですが。
0267nobodyさん
2008/05/08(木) 14:47:17ID:???0268nobodyさん
2008/05/08(木) 14:55:12ID:???一回だけ認証すればあとはセッション使うだけだろ
ちなみにguid=onでIDが取れるようになったが、簡単に偽装できるのでお薦めしない
0269nobodyさん
2008/05/08(木) 15:33:41ID:???セッションの内容を消してしまうと、本来のユーザが困るし・・・
0270nobodyさん
2008/05/08(木) 15:35:29ID:???0271227
2008/05/08(木) 15:41:46ID:???鯖というと自分側のですよね?
相手側は直アクセスでは遅くないし
でも 外部へのアクセスだけがそんなに遅いもんです?
なにか解決方法ないものか…
もちろんキャッシュはしてるけど してないときが激遅です
0274nobodyさん
2008/05/08(木) 16:19:20ID:???まじあざっす!
まったくPHPがわからない素人なのです
.htaccessでregister_globalsをONにしたらできました
0275269
2008/05/08(木) 16:35:36ID:???セッションIDを変更して新規のセッションとして開始すると、
UAをころころ変えながら繰り返しアクセスすることで
セッションリソースを大量消費される攻撃に晒される危険があるかと思います。
またexitで処理を停止させてしまうのも、あまりよろしくない。
ルーティングは、後に任せるべき。
セッションがない状態でアクセスした時と同様の処理をしたいのですが、
既にその時点でセッションは開始されてしまっているので、
なかなかむずかしいんですよね・・・
0276269
2008/05/08(木) 16:43:38ID:???それでいながら、
その変更を本来のセッションストレージに反映させず、
また新規でセッション領域を消費しない」
と処理をやればいいかと思います
どうすればいいですか?
0277nobodyさん
2008/05/08(木) 17:44:50ID:???なぜ、現行Verではデフォルトでregister_globals=offになっているのかも知っておこうね。
0278nobodyさん
2008/05/08(木) 18:23:08ID:???>>261
>同じ機種だと同一のagentにならないですか?
逆を言えば、同一機種(+同一ファームウェア?)で無い限りはアクセスを遮断出来ます。
実装が簡単な割に得られる効果は大きいです。
>セッションIDを毎回変えるというのは、
>session_regenerate_id で検索すればいいよ。
は検索しましたか?
URLにセッションIDを含む以上、URLが漏れたら非常に危険です。
しかしセッションID自体をアクセス毎に変えることで、
この危険性はほぼ100%解消できます。
間違えて表示中のURLを漏らしてしまったとしても、
そのURLに含まれるセッションIDは既に無効になっている事になるからです。
■ このスレッドは過去ログ倉庫に格納されています