トップページphp
982コメント234KB

PHP総合雑談スレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/01/14(月) 21:35:11ID:???
PHP全体の雑談のようなスレがなかったからたてた
反省はしていない
0637nobodyさん2009/04/13(月) 14:40:26ID:???
>>636
アブダクションに推論すると,GETの場合はURLに必ずhttpという文字が含まれる,ということだな
0638nobodyさん2009/04/13(月) 14:42:21ID:???
>>637
ちがいますね
<a href="?test">test</a>
0639nobodyさん2009/04/13(月) 14:57:48ID:???
それにアクセスするとブラウザのURL欄が?testになるのかい?
0640nobodyさん2009/04/13(月) 15:01:59ID:???
おまえは何を言ってるんだ
0641nobodyさん2009/04/13(月) 15:03:00ID:???
>>631=>>634=>>637=>>639
基本がわかってなさ杉
web制作板行って濃い
0642nobodyさん2009/04/13(月) 15:05:47ID:???
=じゃねぇよ読解力無い奴だな
0643nobodyさん2009/04/13(月) 15:48:18ID:???
>>631=>>634=>>637=>>639=>>642
0644nobodyさん2009/04/13(月) 16:21:44ID:???
>>641
言いたいことは解るが=関係は違うと思うぞ
別にどうでもいいが
0645nobodyさん2009/04/13(月) 19:31:03ID:???
>>631=>>634=>>645 です。
助言ありがとうございます。レス遅れて失礼しました。

>>635
PHPとは少し離れますが、mod_rewrite で動的ページを静的ページに見せかけようとしています。
ttp://url/aaa/bbb → ttp://url/aaa.php?page=bbb
このとき、当てずっぽうでGET変数を当てられて(なかなか無いとは思いますが)、
直接ttp://url/aaa.php?page=bbbへのアクセスははじくように設定しています。
このときの判定材料を、%{THE_REQUEST} に?が含まれているかどうか、
という条件式にしているのですが、これで隙がないか調べているところでした。
0646nobodyさん2009/04/13(月) 19:56:06ID:???
なんではじくの?
あとrewrite後のページでGET使いたいとき面倒じゃない?
0647nobodyさん2009/04/13(月) 21:00:29ID:???
>>646
rewriteするときに、同時に文字列を正規表現で正規化してPHPスクリプトに渡しています。
PHPのほうではGET変数の不正チェックを行わずに生で使っています。
(二重チェックするのはリソースがおしいので)

PHPでは不正チェックを行わない理由から、apache側のGET変数のチェックはきびしめにしたいからです。
0648nobodyさん2009/04/13(月) 21:09:21ID:???
mod_rewriteで入力値の妥当性検証するのは無謀だと思うぞ・・・
0649nobodyさん2009/04/13(月) 21:26:54ID:???
>>648
無謀だという理由を簡単で構いませんので教えていただきたいです…。
無知で申し訳ないです。よろしくお願いします。

私の考えでは、副産物として値の不正チェックができるならば、という考えです。
これ自体が目的ではありませんので、デメリットが大きければ固執するのはやめようと思います。
そもそも自サイトからのリンクなので、「故意にURLを書き換えられる」という
特別なケースを考えているからフォームに入力を求めるような場合の
ゆとりある不正チェックは必要ないかなと考えています。

この考えから改めたほうがいいのでしようか…?
0650nobodyさん2009/04/13(月) 23:25:22ID:???
DBから取得した値を可変の配列に格納しようと思ってるのですが、
.NetのArryalListに似たコードはありますか?
0651nobodyさん2009/04/14(火) 01:22:41ID:???
>>650
なんかすごい名前のクラスだけど
.NetのArrayListってどんなの?
0652nobodyさん2009/04/14(火) 01:23:23ID:???
と思ったけどマルチですか
0653nobodyさん2009/04/14(火) 20:58:24ID:???
>>648はさっさと答えてやれよ
0654nobodyさん2009/04/14(火) 23:05:33ID:???
リファラではじけよ、そんな当てずっぽうURL。
0655nobodyさん2009/04/14(火) 23:14:22ID:???
りふぁら(笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
0656nobodyさん2009/04/14(火) 23:38:07ID:???

URL直叩きを防ぎたいだけなんだからリファラで十分だろ?

>>650
phpのarrayはもともと可変だろ。引数に文字を入れられるからArrayListにもDictionaryにもなる。
0657nobodyさん2009/04/14(火) 23:44:39ID:???
リハラーは偽装可能だから無意味だろ
0658nobodyさん2009/04/15(水) 01:26:03ID:???
意味がないことに時間を費やすより、有意義なことにつかったほうがいいという意見もあるといえばある
しかし相変わらずPHPとはあまり関係ない話題だわなw
0659nobodyさん2009/04/15(水) 08:45:59ID:???
リファラは常にブロックしてる輩がいるから、その方法はありえないな。
0660nobodyさん2009/04/15(水) 12:58:58ID:???
結局のところ

> さらに言うと、
> 「GET値を渡される場合のURLには必ず ? という文字が含まれる」
> という認識で間違いありませんか?

これに解答できれば解決ってことだろ。
俺も気になるから誰か明快な解答を頼む
0661nobodyさん2009/04/15(水) 13:03:48ID:???
本人乙
0662nobodyさん2009/04/15(水) 13:05:17ID:???
>>660
ブラウザのユーザー入力URLではそうとは限らない(rewriteされる可能性があるから)
でも最終的にApacheのコアエンジンが解釈するURLではその通り。それだけ。
?キー1=値1&キー2=値2.... はたぶんRFCの規定かなんかで仕様扱い。
0663nobodyさん2009/04/15(水) 13:11:49ID:???
>>660
本人お疲れ〜
0664nobodyさん2009/04/15(水) 16:13:41ID:???
十分かどうかは分からないけど、ある程度の効果はある。よほどみたいページじゃなければ、わざわざ偽装してまでアクセスしようと思わないから。
0665nobodyさん2009/04/15(水) 22:17:44ID:???
無駄な努力をがんばりたいのは勝ってだが、それはPHPの雑談ではなかろうとおもった
言語は受け取ってから動作するわけで、受け渡す値は
どう考えてもHTTP仕様やHTTPサーバ実装の話題だろう
0666nobodyさん2009/04/16(木) 11:30:11ID:???
これで読み込みが速くなるとか言うけど変わらないんだけど・・・
ttp://www.ideaxidea.com/archives/2008/01/3classcompressorphp.html
0667nobodyさん2009/04/16(木) 23:00:39ID:???
>>>666
既にサーバー側で、レスポンスを圧縮して転送してるんじゃない?
0668nobodyさん2009/04/17(金) 22:21:30ID:???
げとでも?が付かない場合もあるでしょ。
ttp://aaaa.com/abc.php/gomen/suimasen/kanben/
みたいな感じで。
0669nobodyさん2009/04/17(金) 23:03:48ID:???
>668
GETリクエストではあるかもしれないが、GET変数じゃないだろ、それ。
0670nobodyさん2009/04/17(金) 23:22:19ID:???
GETリクエストでPATH_INFOとってるだけだな。
というか、そういう話ならそもそも
GETリクエストはデータ送信が主目的じゃないから
大抵のサイトのGETリクエストには?なんかついてないわ
0671nobodyさん2009/04/20(月) 08:07:56ID:???
知恵をお借りしたいです。

$str = '"aaa", 0, 2';
substr($str);

↑これを、
substr('"aaa", 0, 2');
ではなく
substr("aaa", 0, 2);
として認識させる方法はないのでしょうか?
型変換とか色々考えてみたけど思い付きませんでした。
0672nobodyさん2009/04/20(月) 08:55:32ID:???
eval
0673nobodyさん2009/04/20(月) 16:33:38ID:???
>>672
知りませんでした。ありがとうございます。
0674nobodyさん2009/04/20(月) 16:46:13ID:???
>>671-672
いただき
0675nobodyさん2009/04/20(月) 16:51:15ID:???
おいおいw
0676nobodyさん2009/04/20(月) 16:56:31ID:pbLy9Xug
えばるな。
0677nobodyさん2009/04/20(月) 22:55:11ID:???
そしてまた脆弱性のあるコードが生まれるのであった・・・
0678nobodyさん2009/04/20(月) 23:06:09ID:???
き、脆弱性(笑
0679nobodyさん2009/04/20(月) 23:41:19ID:???
なんでなんでもすぐevalで解決しようとするにゃん(´・ω・`)?

$str = '"abcde", 0, 2';

$arr = split(',', str_replace('"', '', $str));
substr($arr[0], $arr[1], $arr[2]);

さくっと分けてしまえばいいやん

むしろ
$str = "abcde";
$arg1 = 0;
$arg2 = 2;
substr($str, $arg1, $arg2);
最初から分けておくべきじゃね
0680nobodyさん2009/04/21(火) 00:31:48ID:???
ちょっと始めたらあれもこれもやりたくなってきりが無い
画像認証と確認メールで再認証てどっちがいいの?
0681nobodyさん2009/04/21(火) 00:55:01ID:HHvQ3yZ0
ここだった。

終わった・・・
今まで、MySQL(サンの傘下)で開発していたシステムが全て水の泡だ・・・

【速報】オラクルがサンを買収
http://headlines.yahoo.co.jp/hl?a=20090420-00000004-zdn_ait-sci
0682nobodyさん2009/04/21(火) 01:02:02ID:???
非リレーショナルDBMSの時代クルー!
こねえよバカ
なんだとメガトロン
0683nobodyさん2009/04/21(火) 01:22:35ID:???
ポスグレ時代到来
0684nobodyさん2009/04/21(火) 01:24:33ID:???
少し前にMysqlの開発者がSunからエクソダスってたけど、やっぱ知ってたんだろうな
0685nobodyさん2009/04/21(火) 01:51:52ID:???
ようやく話をまとめたのかって感じだな
とりあえずはOracle大勝利か
0686nobodyさん2009/04/21(火) 09:26:36ID:???
今まで定数の宣言に何も疑わず define を使ってたんですが、
軽く速度はかったら宣言するのも呼びだすのも時間かかってるようでした。

定数の宣言はどうするのがいいと思いますか?
0687nobodyさん2009/04/21(火) 10:35:44ID:???
コンパイル言語じゃない限り定数で速くなることはないと思っていいかと
0688nobodyさん2009/04/21(火) 11:05:06ID:2lbDKRu3
>>681
疎いからよくわかんないんだけど、これはMySQL終了のお知らせ?
0689nobodyさん2009/04/21(火) 13:28:13ID:???
まさか・・・Mysqlの資格試験もチケット制になり、お金をむしり取られるのですか?
0690nobodyさん2009/04/21(火) 14:13:29ID:???
PHPって変数を読み取り専用にロックって出来ないよな。
0691nobodyさん2009/04/21(火) 15:49:02ID:???
変更できない変数ってそりゃ定数じゃん
0692nobodyさん2009/04/21(火) 18:28:24ID:og7kptdR
>>690
どんなロックしたいのかにもよるな。

コードにベタ書き完璧に固定するのか(定数でおk)
最初に定義したら変更できないようにしたいのか
何らかの条件下で固定したいのか

操作者に変更されたくないのか
共同開発者に変更されたくないのか
自身のバグによる誤操作を防ぎたいのか
0693nobodyさん2009/04/21(火) 19:54:37ID:???
flock($hensuu,LOCK_EX)でできない?
0694nobodyさん2009/04/21(火) 20:17:06ID:???
なんと
0695nobodyさん2009/04/21(火) 20:28:23ID:???
天才現る
0696nobodyさん2009/04/21(火) 22:42:28ID:???
>>681
DBMSにべったりなコードなんて書くほうがわるいな。
DB関係なんて適当な汎用ライブラリ使っておいて交換可能にしとくのが基本。

まあ俺はDBなんて概念そのものが胡散臭いって気付いてたけどね。
昔からのグラマーならファイル読み書きアルゴリズムなんか自作が基本だし。
0697nobodyさん2009/04/21(火) 22:47:15ID:???
>691
一度代入したら再代入できない、という意味だと思う。Javaでいうfinal。
変える気の無い変数は、「これは変わらないよ」と宣言しておくわけ。
メリットは、コードの可読性が上がる事。最初の代入の箇所にだけ注意すれば中身を特定できるようになるからな。
あと、変えられたらマズい箇所が変えられなくなるので、安全になる、ってのもある。

で、結論は無理。
0698nobodyさん2009/04/21(火) 22:50:03ID:???
もう定数でいいじゃまいか
0699nobodyさん2009/04/21(火) 22:53:06ID:???
class hoge()
{
private $var;

public function __construct($var)
{
$this->var = $var;
}

public function getVar()
{
return $this->var;
}
}

こんなんで代用かのう。
0700nobodyさん2009/04/21(火) 22:59:33ID:???
クラスにするならマジックメソッドで全部フックして
書き換えられたらエラー吐くようにすればいいと覆う
0701nobodyさん2009/04/21(火) 23:00:36ID:???
あと宣言はデメリットもあるので途中で
0702nobodyさん2009/04/21(火) 23:02:28ID:???
途中で書き込んでしまった、、好きなときにFreezeできると汎用性が高いじゃないかな
0703nobodyさん2009/04/21(火) 23:18:48ID:HHvQ3yZ0
>>696
趣味のレベルなら、それもできるが、そこそこの規模の業務でやろうとすると、
DBに依存する部分は多くなる。特にパフォーマンスチューニングで。
まぁ、これだとMySQLで構築しているサイトはほとんど閉鎖に追い込まれるわ。
0704nobodyさん2009/04/21(火) 23:32:55ID:???
>>699
なんてSPL?w
0705nobodyさん2009/04/21(火) 23:35:04ID:???
オラのミドルウェアもどうなるかわからんな
0706nobodyさん2009/04/25(土) 23:15:03ID:qBHp4qP0
is_a()
変更履歴

バージョン 説明
5.3.0 この関数は非推奨ではなくなりました。そのため E_STRICT も発生しなくなりました。
5.0.0 この関数は非推奨となり、かわりに instanceof 演算子の使用が推奨されるようになりました。この関数をコールすると E_STRICT が発生します。

なにこれwww
0707nobodyさん2009/04/25(土) 23:20:29ID:???
そんな関数どういう時に使うんだ?
0708nobodyさん2009/04/25(土) 23:25:45ID:???
こんな時
http://www.youtube.com/watch?v=5jbtqlvxwZs
0709nobodyさん2009/04/26(日) 04:23:42ID:???
そういや、最近 is-a関係って言葉聞かなくなったな。
0710nobodyさん2009/04/26(日) 04:27:11ID:???
Javaが喧伝され始めたころのOOPの説明ってどうかしてたよな
必ず車がどうとかリンゴがどうって話から入ってぽかーん
0711nobodyさん2009/04/26(日) 04:32:34ID:???
>>710
OODだと今でもそんなんでしょ。
一応、OOとしては本質的だとおもうよ。

OOPと言いつつフレームワークの使い方にしかなってない現状の方が、ちょっとおかしい。
0712nobodyさん2009/04/26(日) 04:41:44ID:???
確かにモデリングとか上流なら直結してるけど、、プログラミングにはプログラミングの説明がされるようになったのは無用な混乱が無くていいのではと俺は思っている
0713nobodyさん2009/04/26(日) 05:18:59ID:???
ム板でOOネタだけで何十スレ消費したんだろうなw
0714nobodyさん2009/04/26(日) 11:25:27ID:???
>710
とりあえずPofEAAでも嫁。
フレームワークのコードは
・DBのテーブルと1:1対応にあるTable Module
・M-V-C構造を実現するService Layer
のために存在する。class カローラ extends 乗用車 の話はDomain Objectに基づく設計で使う。

Domain Objectの話がされないのは、抽象化レイヤーが一枚増えるのでコード量が増えるから。
強力な概念だが、webアプリの大半はそこまでの強力さを必要としない。
それと、問題領域(ドメイン)によってクラス構成が全く変わってくるので、フレームワークとして使い回せるコードが無いし、一般論もない。
0715nobodyさん2009/04/26(日) 12:19:39ID:???
こんな感じでフレームワーク勉強しただけで、OO語っちゃうのが嫌なんだよ。
0716nobodyさん2009/04/26(日) 12:22:52ID:???
変数と関数をたくさんつっこめる便利なものです。ぐらいの説明からすべきだったな。

ポリモーフィズムの説明で社長が、部長課長を呼んで・・・とか言ってたやつは○んで良いよ。
0717nobodyさん2009/04/26(日) 12:46:27ID:???
例で言ったら俺は車はあまり好きくないかな
メッセージのやり取りによる協調システムって雰囲気が出ないから

>>716
あと「これはポリモー(ryの説明だけどjavaには型の制約があって面倒なだけなんだからね!」って書いとくべきw
0718nobodyさん2009/04/26(日) 19:24:39ID:???
現代的な開発プロセスではOOは欠かせないお・・・
だが本質論では一行たりともコードは書けん・・・
コードが書けんと新人くんが使えるようにならん・・・
だからStrutsの本を2冊ほど与えて放置するお!

お前らの現場は大丈夫ですか?
0719nobodyさん2009/04/26(日) 19:28:34ID:???
欠かせないお、放置するお とかいう上司は消えてほしい
0720nobodyさん2009/04/26(日) 19:35:10ID:???
だからドカタ仕事ならフレームワークだけ覚えて使えばいいだけ。
ってかOOはモノの見方であって、技術とかじゃないし。
0721nobodyさん2009/04/26(日) 19:37:03ID:???
その見方も片面に過ぎんな。
0722nobodyさん2009/04/27(月) 08:16:54ID:???
OOは分析・設計よいツールだ。一部の名人芸ではなく共有可能なテクノロジーとして練られてきた認識の方法論

しかしそれはかなりマクロな話であって、例えばある言語でプリミティブな型がオブジェクトであったり制御構造がメソッドであるようなこととは断絶がある
ミクロにはOOとはコードパターンでありクラスリテラルであり、何よりselfだ
java以降OOが急激にややこしくなったのは、すべてマクロモデルからコードが導けると誤解したり、上で言われたドメインをごっちゃにしたり、自分が理解した一部だけを狂信する俄仕込みの人間が増えたせいもあるだろう

PHPでOOをやろうと思う人間と、RubyでOOをやろうという人間がいたら、言語の思想を反映して、両者の思い描くOOはかなり異なっているかもしれない
PHPのOOを学ぼうと思う場合、あまりOOの歴史などには触れずSPLなど見ながら実践的な知識を得ればそれでいいと思う
0723nobodyさん2009/04/29(水) 13:20:45ID:???
PHPって例外機構があるのに、標準関数とかのレベルでエラーがあっても例外投げるわけじゃないよね。なんか変。
0724nobodyさん2009/04/29(水) 13:24:53ID:???
そりゃ標準メソッドでないもん
0725nobodyさん2009/04/29(水) 14:39:12ID:???
必要なら自前で例外を投げるエラーハンドラを設定すればいいじゃない。
0726nobodyさん2009/04/29(水) 15:59:40ID:???
ろくなクラスライブラリがないからな。例外機構が役に立たない。
0727nobodyさん2009/04/29(水) 16:02:37ID:???
あるじゃんPEARなりZFなり
0728nobodyさん2009/04/29(水) 20:48:44ID:???
全部自分で例外投げるのも面倒なんだよね。
0729nobodyさん2009/04/29(水) 20:50:45ID:???
だから>>725だっつってんだろ
0730nobodyさん2009/04/29(水) 21:43:00ID:???
それが面倒でしょ。
既に稼働中のWebサイトではやりにくいし。
0731nobodyさん2009/04/29(水) 21:43:50ID:???
そりゃ最初からそうしなかったお前が悪い
0732nobodyさん2009/04/29(水) 22:02:15ID:???
最初はPHP4だったサイトもあるわけ。
0733nobodyさん2009/04/29(水) 22:08:52ID:???
未だに4なんか使ってんの?
0734nobodyさん2009/04/29(水) 22:18:17ID:???
新規に作るのは少なくても、既存のサイトはいくいらでもある、
0735nobodyさん2009/04/30(木) 03:58:41ID:???
じゃ自分が悪いな
0736nobodyさん2009/04/30(木) 08:21:54ID:???
メモリ不足を例外処理できるようにしてくれ。
■ このスレッドは過去ログ倉庫に格納されています