【PHP】下らねぇ質問はここに書き込みやがれ 39
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/02/12(月) 20:33:59ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0495nobodyさん
2007/02/17(土) 17:20:01ID:???普通のやり方だと無理だと思う。
$_SERVER変数は定義済み変数で、変数でありながらユーザーサイドで変更できない。
http://www.php.net/manual/ja/reserved.variables.php
0496nobodyさん
2007/02/17(土) 17:33:43ID:???0497nobodyさん
2007/02/17(土) 17:41:00ID:g7Ihrm8Ukwsk
0498nobodyさん
2007/02/17(土) 17:59:07ID:???php-cgi.exeという名前か、php.exeという名前で入ってる。
php-cliの方はphp-cli.exeという名前か、php.exeという名前で入ってる。php-win.exeも
cgiとcliが同じ名前で一時期混乱を招いた(Win版に限らず)。
取り合えずパスの優先順に気を付けた上で「php-hoge -v」してみ。
0499nobodyさん
2007/02/17(土) 17:59:33ID:???0500nobodyさん
2007/02/17(土) 18:13:19ID:???0503502
2007/02/17(土) 18:39:26ID:???と
http://www.7key.jp/nw/technology/protocol/http1.html
あたりを見ればわかるかも
0504nobodyさん
2007/02/17(土) 18:39:37ID:g7Ihrm8Uhttp://space-town.net/~vipper/kuso/index.php
0505nobodyさん
2007/02/17(土) 20:26:51ID:dqj9QXntもう既にPHPがインストール済みの場合、あとからそういうのを
パッチ的に(?)当てたりすることは出来るんでしょうか?
それともコンパイル&インストールからやり直し??
(共用レン鯖とかだと、それさえも不可能ですが・・・)
0506nobodyさん
2007/02/17(土) 20:30:57ID:???そんなパッチがあったとしても
レン鯖屋のバイナリに勝手にパッチ当てられるわけないでしょ。
レン鯖の提供する機能でやりくりするか
レン鯖屋を乗り換えるしかない。
0507nobodyさん
2007/02/17(土) 21:07:07ID:???0509nobodyさん
2007/02/17(土) 21:33:17ID:???0510nobodyさん
2007/02/17(土) 21:36:24ID:???rpmで入れてて、追加したい拡張機能のrpmがあるなら出来るかな。
http://q.hatena.ne.jp/1153517724
0511nobodyさん
2007/02/17(土) 21:47:26ID:???0512nobodyさん
2007/02/17(土) 21:48:22ID:???要点はそこじゃないだろバカかお前ww
つまり「コンパイル・オプションを後から追加できるかどうか」って話だろ。
手法がパッチかどうかの問題じゃないっしょ。
0513nobodyさん
2007/02/17(土) 21:52:07ID:???0514nobodyさん
2007/02/17(土) 21:53:50ID:???全部の拡張機能が可能というわけではないが、
後からでもphpの起動時に動的にロードできる。
# 実行にロードできるものも
「phpize」をキーワードにして検索。
0515nobodyさん
2007/02/17(土) 22:06:07ID:???何よりも、いま正常に動いているスクリプトが動かなくなったら怖いよな。
0516nobodyさん
2007/02/17(土) 22:21:55ID:???↑こういう手法もあるみたいだけど、なんかめんどくさいね。
もっと簡単に、ファイルをディレクトリに置くだけとかで
機能拡張できるようにしてくれないもんかね? <PHP
0517nobodyさん
2007/02/17(土) 22:32:05ID:???いたって普通の手法じゃねぇか。
ファイル置いてphp.iniで有効にするだけだろ。
それすら嫌なら全部phpで書けよ。
0518nobodyさん
2007/02/17(土) 23:10:27ID:???ビルドだのインストール作業だのがあるじゃん。
そうじゃなくて、コンパイル済みのバイナリをアップして
php.iniをいじるだけ…とかにしてほしいんだ。
0519nobodyさん
2007/02/17(土) 23:16:27ID:???これ使ってみたいんだが、なんか代理店が怪しすぎて導入が怖い。
誰か試用版を使ってみて、人柱になってくれないっすか?
0522nobodyさん
2007/02/17(土) 23:25:18ID:???0528nobodyさん
2007/02/17(土) 23:45:45ID:g7Ihrm8U戯言⇒ざれごと(ふざけて言う言葉。冗談。)
虚言⇒きょげん(うそ。いつわり。)
0529nobodyさん
2007/02/17(土) 23:54:07ID:???524じゃないけどもうやったよ。
パスワード入力をする前のコードは復元できなかった(つか時間が無くてあんまり出来なかった)けど
入力後のコードは普通に特定の文字を置換してbase64_decodeしたら生ソースが出てきた。
SourceCopよりかはベター、Zendのに比べれば劣る(当たり前だけど)
某所で見かけた難読化のやつはすごかった。非ASCIIのバイナリを直接関数にわたしてた。
0531439
2007/02/18(日) 00:05:13ID:???>>491
レスありがとうございます。
UNIX系の知識自体が不足していたようで、申し訳ないです。
phpばかりじゃなくてunixももうちょっと勉強して、答える側に回りたいものです
0532nobodyさん
2007/02/18(日) 00:41:29ID:VMFXb98L0534nobodyさん
2007/02/18(日) 00:50:02ID:???>base64_decodeしたら生ソースが出てきた
そういうのは暗号化とは言わないんだよバカ。
あの製品は、HTMLとJSは、単に難読化してるだけで暗号化はしてない(っていうか暗号化したらブラウザが読めなくなる)。
そっちじゃなくて、「暗号化されたPHPスクリプトのソース」を解読してみろって言ってんの。
>>530 ハァ? なんで社員になるんだよチンカス。
0535nobodyさん
2007/02/18(日) 00:52:25ID:???HTMLソース隠蔽とPHPソース隠蔽とをごっちゃに混同しているようだ。
両者はそれぞれ全く別の話。
0537nobodyさん
2007/02/18(日) 00:53:57ID:???0538nobodyさん
2007/02/18(日) 01:02:23ID:???http://***.com/link.php?a=1
で、このリンクをクリックしたら解析のページにlocationで飛びます。
ここまではわかるのですが、locationにパラメーターを指定して
index.php?b=1みたいにしてもいいのでしょうか?
index.phpでは、$_GET["b"]に1が表示されれば良いんです。
0540nobodyさん
2007/02/18(日) 01:06:15ID:???0541nobodyさん
2007/02/18(日) 01:07:01ID:???久しぶりに良い質問だ。
30x系のHTTPヘッダーにそのままパラメータ付きのURLを入れればOK。
GETメソッドなら、RFC上も全く問題ない。
0544nobodyさん
2007/02/18(日) 01:12:44ID:???header("Location:./index.php?b=1");
ってできるかってこと?
僕はそれやったことあるよ
0545nobodyさん
2007/02/18(日) 01:32:06ID:???0546529
2007/02/18(日) 02:36:34ID:???意味が分からん。そもそも暗号化なんて言葉は一言も使ってない。
それに俺が言ってるのはその製品におまけ程度に付いてるHTMLを難読化する機能じゃなくphpを難読化する方のことなんだけど。
つかHTMLの難読化なんて一切話題にしてないし。
base64_decodeが馬鹿ならその製品に言ってくれ。実際にそれだけで生ソースが出てきたんだから。
0547nobodyさん
2007/02/18(日) 02:47:42ID:???>>526の発言に対して、「もうクラックした」と言ってるじゃないかお前。バカだろお前w
base64_decode=クラックじゃねぇぞ。ただのデコードだろ。
そんで、PHPソースはbase64エンコじゃねぇし。
実際にやったことないくせに妄想で語るな嘘吐きが。
0548nobodyさん
2007/02/18(日) 02:51:52ID:???Javaは全部逆コンパイルできるからシェアウェアとか作りづらい。
0549nobodyさん
2007/02/18(日) 03:01:54ID:???あとライセンス体系も。
0550nobodyさん
2007/02/18(日) 03:06:06ID:???0551529
2007/02/18(日) 03:15:32ID:???実際にやったよ。そんなに疑うならサンプルファイル用意してみろ。
用意したものを元に戻せばおまえさんも納得ですか?
つかクラックなんて超絶に頭の悪い発言したのは俺じゃない。
勝手に>>526と結びつけないでくれ。
内部でbase64_decode使ってるのは事実なんだから妄想も糞もないがな。
>>548
ProGuardが無償で提供されてるだけでも。。
0552nobodyさん
2007/02/18(日) 03:15:53ID:???どんな言語でも逆アセンブル(逆コンパイル)は可能だろう。
原理的には。
0553nobodyさん
2007/02/18(日) 05:22:21ID:???0554nobodyさん
2007/02/18(日) 05:31:48ID:???こういう民度の低いのがいるからPHPは見下されるんです。カエレ(・∀・)!!
0555nobodyさん
2007/02/18(日) 08:29:46ID:IA/vQM+L自分は今まですべてのコンテンツ分の登録・編集機能を用意してて
自由に管理者が投稿出来るようにしたのですが、それを友人に試用して
もらったところ、「投稿したはずの書き込みが別のユーザで反映されている」
との指摘を受けました。(実際は、ユーザIDを間違えて登録していた
会員制の掲示板の場合、書き込みさせたいユーザがログインして書き込むので
ユーザIDが違うと言った問題はないのですが、管理者が管理システムから
書き込めるようにすると、そのような問題が考えられます。
そこで質問ですが、皆さんは会員制サイトを作る時の管理システム(管理者が使う)で、
登録・編集フォームはすべてのコンテンツ分、用意してますか?
もしくは管理者には自由に書き込めないようにしてますか?
自分の調べたところphpBBもOpenPNEも会員としてログインして書き込む形になっていました。
0556nobodyさん
2007/02/18(日) 08:55:51ID:???掲示板みたいな大したものじゃなかったら面倒なので削除だけだし
企業ものだったらほぼ全てっていうかフレームワークでできたcrudそのままって感じだし。
ただsuperAdminの権限を与える場合は
大抵DBも扱えるようにしてるからphpadminとかで勝手にやっちまえ
っていうお話。
0557555
2007/02/18(日) 09:05:41ID:???ありがとうございます。自分用の場合は大体
>大抵DBも扱えるようにしてるからphpadminとかで勝手にやっちまえ
>っていうお話。
で済むのですが、第三者が使う場合、何が一番良いのか迷う時があります。
仕事みたいに依頼されて作る場合は主旨が明確なので作りやすいのですが、
WEBの知識の無い人間に対して利用させる場合、を想定すると実に迷います。
ほぼすべての機能を使えるようにしたら誤った操作をしてしまわないか?
っと思うし、仮に使える機能を制限すると、管理者が投稿する時は
いちいち会員として投稿しなきゃいけなくなる。その点の判断が
いつも迷ってしまい、フローチャートの段階で詰まることも多々あります。
(実は今も詰まってしまい、質問したわけですが...
0558529
2007/02/18(日) 10:45:39ID:???何が必死なのか何が民度が低いのか、
レス返しただけなんだけど。
phpのスレでphpについての話題をして
帰れと言い出す>>554の脳はさぞ素晴らしいんでしょうね。
結局>>547はサンプルも用意できずに逃げたみたいだから
出てくるまではこのスレには来ないよ。
0560nobodyさん
2007/02/18(日) 12:07:55ID:7ifKcsCF正規表現で特定のディレクトリに特定のメッセージ出したりリダイレクトできたらいいんだけど
0561nobodyさん
2007/02/18(日) 12:11:13ID:7ifKcsCFスペルミス
0563nobodyさん
2007/02/18(日) 13:10:41ID:zIKYxPXSimap_openでopenに失敗した場合に即効で値が返ってくる方法はありませんでしょうか?。
imap_timeoutを使っても時間がかかったりPHPのタイムアウトまで時間がかかってしまいます。
0564nobodyさん
2007/02/18(日) 13:14:36ID:???0565nobodyさん
2007/02/18(日) 13:17:06ID:ix4BYiPNくだらない質問を一つさせてください。
例外処理ってどうしてますか?
例えばクラス側では投げるのに徹して、クライアント(実際にブラウザで実行するphp)側で
tryとcatchをするとか、セオリーみたいなのってありますか?
もっと楽そうなのは、投げっぱなしにしておいて
set_exception_handler()で一括処理なんて言うのも考えたんですけど
あんまりしませんか?この方法は問題ありでしょうか?
意見ありましたらお願いします。
0566nobodyさん
2007/02/18(日) 13:17:25ID:???たとえば削除なら
削除権限をつけた管理者だけが削除フラグを1にでき
かつ管理者の操作ログを保存する。
匿名掲示板程度ならここまで大げさにしないけどね。
0568nobodyさん
2007/02/18(日) 14:58:03ID:???セオリーみたいなのがあるかどうかは知らないけど・・・。
throwはとにかく例外的なことが起こったらどこでも投げればいい。
try-catchは、例外から回復するのが目的なので、きちんと意味のわかるところにおいておくのがよい。
まとめられるものはなるべくまとめる方が楽だから、トップレベルで全部catchしたくなるのもわかるけど、それではrobustなシステムは作れない。
クラスの中でもcatchして流れを継続できる部分があるかどうかも検討すべき。
もちろん面倒なときに、「全部まとめてcatch」みたいなことができるのも、この構文の利点ではあるけどね。
0569nobodyさん
2007/02/18(日) 15:43:05ID:???マニュアルとか見て意味は分かるけど
具体的な使用例がほしい
どこかのスクリプトで使ってるところありますか?
0570nobodyさん
2007/02/18(日) 15:49:02ID:???「復号キー」の存在を知らないのだろうか??
何のための「復号キー」なのだ、と小一時間・・・
まさか試用版の固定された復号キーであるという前提で、「解読できた」とか
言ってんじゃないだろうな?このバカww
0571nobodyさん
2007/02/18(日) 16:01:04ID:???0572nobodyさん
2007/02/18(日) 16:07:56ID:K0qFGfn0$img2 = $img1
等の方法で単純にコピーしようとすると
リファレンス渡しになります。
値渡しで丸コピーするにはどうすればよいですか?
0574nobodyさん
2007/02/18(日) 16:14:40ID:???0575529
2007/02/18(日) 16:15:51ID:???意味ぐらい知ってるよ。あんたほど馬鹿じゃないんでね。
今日ざっとCodelockの中身を見てみて完全じゃないけどそのキーの発見方法も見つけた。
つか問題なのは複合したあとのコードがいともたやすくデコードできてしまうことだろ?
複合キーで複合したあとのソースなんて難読化のかけらも無い。
実用で使う時には既に複合キーで解除されたあとなんだから何かの手違いでソースが漏れたらやばいだろって話。
おわかり?
0577nobodyさん
2007/02/18(日) 17:01:54ID:???俺もやってみたけど、キーで復号したあとのテキストも、
単純なbase64デコードではごく一部しか復元できなかったが?
0578529
2007/02/18(日) 17:20:26ID:???別にこの製品を否定してるわけじゃないよ。
実行不可能なほどの暗号化をするのはZendとかionCubeとか。
比べれば分かるけど値段が全然違うでしょ。
スクリプト自体に脆弱性があればソースを難読化しようが暗号化しようが問題ありありなのを分かってほしい。
>>577
当たり前。俺の過去のレス読んでよ。
つかデコード方法を解説したらまずいと思うからそこらへんは自分でやって。
0579nobodyさん
2007/02/18(日) 18:03:17ID:???>実行不可能
「実行」の意味を勘違いしてる気がする。「解読を実行」って意味で使ってるだろ?
そうじゃなくて、「スクリプトの実行」だよ。zendが実行不可能な暗号化するわけないだろw 意味がない。
>スクリプト自体に脆弱性があれば・・・
論点ズレてる。そんなことは今は問題にしていない。
0580529
2007/02/18(日) 18:08:04ID:???Loaderが無ければ実行不可なんだからそういった表現をしたまで。
ほかのスクリプトは単体(サポートスクリプト含む)で動く。
つか論点って何よ。何を気にしたいわけ?
0582nobodyさん
2007/02/18(日) 18:56:36ID:???0584nobodyさん
2007/02/18(日) 19:18:55ID:???0585nobodyさん
2007/02/18(日) 19:28:21ID:???0586nobodyさん
2007/02/18(日) 20:04:02ID:???実際に表示される文字列のサイズと
かなり乖離してるのですが
このあたりどうしてますか?
0587nobodyさん
2007/02/18(日) 20:15:29ID:???エラー画面のカスタマイズはset_error_handler()でできる。
特定ディレクトリは…AliasMatchでどっかのPHPに飛ばして
そこでエラーハンドラ書き換えて再び本来のスクリプトを
includeなりすりゃいいんだろうけど、一筋縄では行かないかもね。
>>569
例えば通常の運用では出ないようなイレギュラーなエラーのために
関数の引数をわざわざ参照にしてそこに戻り値入れさせたり
上位関数に返すために毎回エラーの有無確認したり面倒でしょ?
>>586
他の言語でGD触った時の情報だけど、
戻り値に実際に書き込んだ矩形の位置情報が
配列で返ってきたからそれで調整したよ。
>>581
実例のために早くサンプル用意してね。
0588nobodyさん
2007/02/18(日) 20:34:24ID:???ファイル名による条件分岐を前スレで教えて頂いたのですが、
どうしてもうまくいかないものでお知恵を拝借させてください。
top_link.php、und_index.php、sid_read.phpと3つファイルがあるとして
ファイル名の頭3文字による条件分岐をしたい
<?php
$array = array("top_link.php", "und_index.php", "sid_read.php");
foreach($array as $file){
preg_match("/(.*)_.*\.php/", $file, $match);
switch ($match[1]){
case "top":
echo "トップ";
break;
case "und":
echo "アンダー";
break;
default:
echo "その他";
}
}?>
ところが実行するとechoが全て実行されてしまいます。
どうやったらうまくいきますでしょうか?
0591588
2007/02/18(日) 22:04:04ID:???すいません、あほな書き方してしまいました。
やりたいことは、ファイル名によって表示文字を分岐させたいということです。
$File = basename($_SERVER['SCRIPT_NAME'],".php");
<?php
preg_match('/(.*)_.*\.php/', $File, $match){
switch ($match[1]){
case 'top':
echo 'トップ';
break;
case 'und':
echo 'アンダー';
break;
default:
echo 'その他';
}
}
?>
自分の力ではなかなかうまくいきませんで・・・
0592590
2007/02/18(日) 22:04:37ID:???A=0 B=1 C=2 .... a=26 b=27 c=28 ... 0=52 1=53 2=54 +=62 /=63 ==64 その他は0
に変換する。
1文字目は上の式の(値-0)/4の商
2文字目は(値-1)/4
3は(値-2)/4
4は(値-3)/4
5文字目は1文字目と同じ6文字目は2文字目と同じ……と変換していく。
変換した値を2進数にして頭に0をつける。
各文字を結合。
ここまで第一段階。
■ このスレッドは過去ログ倉庫に格納されています