トップページphp
1001コメント318KB

【PHP】下らねぇ質問はここに書き込みやがれ 70

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/25(水) 10:14:08ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0712nobodyさん2008/07/11(金) 14:18:22ID:???
ぶっちゃけ環境構築とか自分でやれって話だろ
くだらねえといってもスクリプト全般の質問じゃなきゃな
0713nobodyさん2008/07/11(金) 14:36:45ID:???
>>712
PHPのスレのはずでは
0714nobodyさん2008/07/11(金) 14:38:45ID:???
情報を共有するのはPHPコーディング技術やスクリプトの話題でいい
サポセン的なことをなぜここでやらないといかん
ということじゃね?
0715nobodyさん2008/07/11(金) 14:50:54ID:???
>>714
昔は技術は盗んで覚えろと言われたものだが、
こういう情報を共有する云々という人は、
世間でいわれるスイーツ脳ってことかな。
0716nobodyさん2008/07/11(金) 15:00:27ID:???
>盗んで覚えろ
バカ
0717nobodyさん2008/07/11(金) 15:04:46ID:???
昔昔って古臭い既成概念に縛られてるようなジジイは帰れよ
21世紀には不釣合いだ
0718nobodyさん2008/07/11(金) 15:05:34ID:???
くだすれで質問者の質を求めるとかバカなんじゃね?

そりゃ最低限の事は自分でやるべきだと思うが
トンデモな奴なんてどこにでもいるだろ
0719nobodyさん2008/07/11(金) 15:20:36ID:???
質問させてください。

$str = mb_strimwidth($str,0,18,'...');
上記のように記述し$str(日本語文字列)を9文字で切りたいのですが、
$strにスペースや・が含まれていると7文字しか入らず、
最後に文字化けした文字が付きます。
なぜこのような現象が発生するのでしょうか。
また、どう記述すれば文字化けせずに表示されますか?

0720nobodyさん2008/07/11(金) 15:26:13ID:???
>>719
mb_strcutかmb_substrで可能じゃね?
0721nobodyさん2008/07/11(金) 15:27:53ID:???
>>719
mb_internal_encodingは正しく設定されてる?
0722nobodyさん2008/07/11(金) 15:35:55ID:???
>>720-721
ありがとうございます。
encodingをすっとばしていたのが原因でした。
設定したところ文字化けもなく表示されました。
とても勉強になりました。
0723nobodyさん2008/07/11(金) 16:00:01ID:???
>>722
マルチバイト文字使うのに、
encodingすっ飛ばすなよ。
0724nobodyさん2008/07/11(金) 16:11:14ID:???
>>711
いっしょにするなクズ人間
0725nobodyさん2008/07/11(金) 16:11:40ID:???
>>724
俺は違うんだ!って思いたいのですね、わかります
0726nobodyさん2008/07/11(金) 16:27:04ID:???
むしろ>>724が一番底辺にいるようだな
0727nobodyさん2008/07/11(金) 16:44:41ID:???
>>725-726
キモい
0728nobodyさん2008/07/11(金) 17:02:55ID:???
むしろ>>727が一番キモいようだな
0729nobodyさん2008/07/11(金) 17:05:35ID:???
defineしたものを未定義に戻すundefみたいなものはないですか?
0730nobodyさん2008/07/11(金) 17:11:17ID:???
>>729
定数じゃなくて変数使えよ。
0731nobodyさん2008/07/11(金) 17:18:56ID:???
>>729
出来ないことは無いが、非常に手間がかかる。
ttp://d.hatena.ne.jp/masugata/20061011#p2

どんな処理をするのか知らんけど、他の方法で実装した方が良いと思うぜ?
0732nobodyさん2008/07/11(金) 17:24:42ID:???
>>729
定数を変数として使うって無いよ?
飛行機を新幹線として使いたいっていていると一緒。
0733nobodyさん2008/07/11(金) 17:28:51ID:???
例えが悪すぎる
0734nobodyさん2008/07/11(金) 17:33:17ID:???
クラス使ってゴニョゴニョすれば似たような事はできるけど
              __,      ノ}      _,
              ヾミ、   ,イl|      ,ィツ
                ヾミ、 ノリlj';   ,ィ彡イ
                 〉ミミY杉ハ='杉彡"
                 '^".:.:.:.:.:.:.::.:`丶{
              /:.:.:.:.:.:.:.:.:.:.:.:.:.:.::.:.:.ヾミ三ニ≡=-ッ-
                /       :.:.:.:.:.:.:.:.:.:.'.彡''"´ ̄
          r==〈r==≦ミ    :.:.:.:.ヽ.:.:.}
          {:.::::儿_:::::.:::.:}}≠======--、:}
             弋彡'iゞr-=彡      f⌒ハ
           レ;;公^;ヽ    . : :.: :. r' リ  <オマエには無理だろな
           爪rェェ弍   . : :.: :.:::.r-イ   
           川ーニ´jj{  . : :.: :.::  : イ       
              巛爪z从}     ∠ニ=ヘ
           ゞ巛巛lリ _  _,∠二二、\     
              ̄ {/ ̄      \ \     
              /           ヘ. ヘ      
             /             ∨ ,ハ
              { __ 「::レフ r::v‐ァ    く::∨ '、
             /(::c' |:::;〈  〉:::/       `ヘ  |
             {ヘ `¨└^¨ `¨´     Y'   | |
            /.ハ            |   | |
0735nobodyさん2008/07/11(金) 17:36:38ID:???
はなくそがうまい。
07367292008/07/11(金) 18:03:53ID:???
>>731
php本体のソースをいじらないといけないということはやはり普通の方法ではできないのですね。
ありがとうございます。
0737nobodyさん2008/07/11(金) 18:13:19ID:???
別にハックしなくても自分で作ればできるんじゃない?
undefってのが内部的にどういう動作してるか知らないから憶測だけど
0738てんちゃん2008/07/11(金) 19:29:55ID:Z3Uae7Hu
telnetを使って、サーバのindex.phpのソースコードを抜こうと思って
80番ポートをたたいて
いるのですが、どうもHTMLソースしか抜けません。なんか方法ありますか?
telnet ホスト 80

GET /index.php

0739nobodyさん2008/07/11(金) 19:37:20ID:???
>>738
そろそろ夏休みだろ
9月になったら教えてやるから、
夏休み中にオライリーの本全部読んどけ

http://www.oreilly.co.jp/catalog/index.html
0740nobodyさん2008/07/11(金) 19:42:20ID:???
>>738
telnetで接続してhttpで取得してるんだからそりゃhtmlが返ってくるでしょうよ
どちらかというとunix板の話題なのでそちらへGO
0741nobodyさん2008/07/11(金) 19:46:39ID:???
どこがUNIX板の話題?
0742てんちゃん2008/07/11(金) 19:52:14ID:Z3Uae7Hu
>>739
おぉ(´・ω・`)さんくす

これ理解できたらPHPのソースコード抜けるかな〜
0743nobodyさん2008/07/11(金) 19:56:42ID:???
最近多いね
公開されていない他人のサイトのphpやらcgiのソース見たいとかいうやつ
0744nobodyさん2008/07/11(金) 19:59:25ID:???
telnetで80番ポートで接続してなんでソース抜けるのw
0745nobodyさん2008/07/11(金) 20:02:28ID:???
>>742
セキュリティーが甘いサイトは、
phpソースを表示させる方法はあるけど、
本来表示することを意図していないページを意図的に表示要求をすることは、
アクセス禁止法に抵触するとした東京高裁の判決が去年出ているから、
逮捕されるぞ。
0746nobodyさん2008/07/11(金) 20:04:30ID:???
他人のサーバにログインしてるんだろ?
だとしたら抜けたらセキュリティーホールだろ
脆弱性をついてやると不正アクセスになるからやめなさい
0747てんちゃん2008/07/11(金) 20:09:30ID:Z3Uae7Hu
>>745
教えてほしいですな

自分のサイトパスクラされて、こんな挑戦受けたんですよ(´・ω・`)
FPはセキュリティホールがあるから簡単にソースが抜けてパスクラもできるらしいです。
パスワード返してくれない…
http://tool-4.net/?jsjsjs

0748nobodyさん2008/07/11(金) 20:16:01ID:???
お前の今の知識じゃ100%無理だから諦めろ。
0749nobodyさん2008/07/11(金) 20:17:26ID:???
>>747
その方法を教えて君が逮捕されたら、俺まで巻き添えを食うわけだが。

それなら、仕返しの方法は簡単。運営者に言えば、
向こうが相当面倒なことになるだけ。

俺のサーバーにもSSHの認証をランダム文字列でクラックしよういう馬鹿な奴がいるが、
日本にあるプロバイダーならログ提出して猛抗議して、契約解除させられている。
日本のメジャーなプロバイダーなら、今は結構積極的に対応してくれる。
あとは、pingとかポートスキャンしている奴のプロバイダーにも相当文句言っているが。
0750てんちゃん2008/07/11(金) 20:30:42ID:Z3Uae7Hu
ならソースを抜く簡単な方法だけ教えてくれませんか?
ソフト使ってもいいです。ソフト名だけわかってもいいです。
WEBアプリケーションの脆弱性は結構勉強したので知っています
昔はヌルバイト攻撃も通じたし。XSSも通じました。なのに今は対策されています。
やりかたさえ教えてもらえればあとはググルので。
全部丸投げはしません。
やった奴のIPをアクセスログより確認して、アクセス禁止にしたいのです。
0751nobodyさん2008/07/11(金) 20:35:09ID:???
根性は評価できる
0752nobodyさん2008/07/11(金) 20:36:58ID:???
アクセス禁止にしたいのとソースを抜くのは関係ないな
0753nobodyさん2008/07/11(金) 20:37:13ID:???
よく話が掴めないが>>750>>747のサイトでwebホスティングサービスやってる管理人?
0754nobodyさん2008/07/11(金) 20:39:51ID:???
定期的にここに現われるかまってちゃん
0755nobodyさん2008/07/11(金) 20:40:14ID:???
サービスやってる管理人なら、わざわざココで聞く必要ないだろ^^;
0756nobodyさん2008/07/11(金) 20:41:44ID:???
まぁどうせ>>747は単なる自演で、実際攻撃したいサイトは他にあるんだろ
アホくさww
0757nobodyさん2008/07/11(金) 20:44:05ID:???
>>756
そんなこと今になって気づいて得意げにレスしているお前が痛い。市ね。
0758nobodyさん2008/07/11(金) 20:49:16ID:???
つうかホスティングしてる管理人に問い合わせてみればいいのに
0759てんちゃん2008/07/11(金) 20:51:03ID:Z3Uae7Hu
せっかくPHPの板にきたから、PHPを使ってやろうと思います。

ランダムに
$data = arrary(a,b,c,d,e,f…);
と、全てのアルファベットと全ての数字を配列に納め、配列からランダムに取り出して、

あらかじめ入手しといたHTMLのログインページの変数
?id=自分のID&pass=配列で作成したパスファイル&mode=logincheck
で、
whileで、見つかるまでループさせて、
file_get_contents
でファイルを取得し、ソースも取得し、そのソースに
"パスワードが違います";
以外の文字だったらパスワードとみなして、表示する。

というPHPを考えたのですが、どうでしょうか?

他鯖に負担がかかるかな…
0760nobodyさん2008/07/11(金) 20:54:28ID:???
やってみればいいじゃん。自己責任で。
0761nobodyさん2008/07/11(金) 20:55:04ID:???
>$data = arrary(a,b,c,d,e,f…);
>と、全てのアルファベットと全ての数字を配列に納め、配列からランダムに取り出して、

負担どうこう以前に一生見つかりませんね^^;;;;;;;;
0762nobodyさん2008/07/11(金) 20:55:28ID:???
>>759
なんで運営に連絡を入れないの?
本当なら明らかに違法行為でしょ
0763nobodyさん2008/07/11(金) 21:00:43ID:???
>file_get_contents
>でファイルを取得し、ソースも取得し、そのソースに

なんつう突っ込みどころ満載wwwww
0764てんちゃん2008/07/11(金) 21:03:06ID:Z3Uae7Hu
というよりセキュリティホールがあるかぎりどんだけパスワード複雑にしようが、パスワードファイルを開かれたら、おしまいですよね?
一応通報はしときましたけど、対応はいつになるやら不安です

FPのセキュホってXSSですか?
0765nobodyさん2008/07/11(金) 21:04:27ID:???
じゃあ、俺が通報しといてやるよ
0766nobodyさん2008/07/11(金) 21:05:14ID:???
OK・・・誰か俺がわかるように翻訳してくれ
話についていけなくて俺涙目
0767nobodyさん2008/07/11(金) 21:05:47ID:RxUTiv/S
自分自身の変数名取得ってできるっけ?

たとえば$hogeだったら文字列のhogeを取得する方法ってある?
0768てんちゃん2008/07/11(金) 21:06:50ID:Z3Uae7Hu
通報はみんなでしてくれたほうがうれしいですね。

うーん
やっぱりセキュリティホールなかなか見つからないですね

0769てんちゃん2008/07/11(金) 21:09:48ID:Z3Uae7Hu
>>767
訂正で
http://tool-6.net/edit.cgi?id=あなたのID&mode=logincheck&yourp=パスワード

だから、変数は
$_GET['id']
$_GET['yourp']
$_GET['mode'] ==logincheck

こういう意味です。
0770nobodyさん2008/07/11(金) 21:12:15ID:???
>>767
真っ当な方法では無し
0771nobodyさん2008/07/11(金) 21:13:15ID:???
他所のサイトの迷惑になるからやめなよ
そういうことをやっていいのは自分のサーバーだけ
常識無さすぎだぞ・・・
0772nobodyさん2008/07/11(金) 21:15:44ID:???
だいたいFPとかなんの話をしてるのかサッパリだな・・・
このゲームcgiっぽい仕様を調べろとでもいってるのか?
0773てんちゃん2008/07/11(金) 21:18:21ID:Z3Uae7Hu
FP → フリーページ

http://tool-1.net/
0774nobodyさん2008/07/11(金) 21:19:21ID:???
>FP → フリーページ
そりゃわかんねーわw
ロリポやxreaとか有名どこならまだしもなぁ
0775nobodyさん2008/07/11(金) 21:24:09ID:???
根本的な解決にはならないけどとりあえずパス再発行してもらえばいいのでは?
パス変えられただけでしょ?
0776nobodyさん2008/07/11(金) 21:25:07ID:???
>>774
っていうか、ロリポっていうのも、よく分からないが・・・
0777nobodyさん2008/07/11(金) 21:48:00ID:???
>>757
>市ね。
やだ!そんな事でしにたくない!
0778nobodyさん2008/07/11(金) 21:57:26ID:7DrXvr8B
聞きたいんですが、プログラムって一通りかけるようになったら
実行速度が気になると思うんですが、みなさんはどうやって効率的な
速度の速いプログラムの書き方を身に着けましたか?
phpでそういうのを詳しく解説した本とかあるんでしょうか?
少なくともこういう処理は必須という「ノウハウ」があれば教えてください
環境はapache2/php5でお願いします 特にSQL処理関連について意見もらえれば嬉しいです
0779nobodyさん2008/07/11(金) 22:03:23ID:???
>>778
O/Rマッパ使うならそれに依存するし、
直にDBに投げるSQLならチューニング次第。
実行計画でも見ながらSQLチューニングしろ。
つかSQLだったらスレ違いだな。

0780nobodyさん2008/07/11(金) 22:04:37ID:???
> 実行速度が気になると思うんですが

もっと力をつけたら、実行速度はあまり気にしなくなるけどねw
全体で数秒かかっている処理の、数ミリ秒なんて気にしたってしょうがないし。
重要な部分が、問題になるくらい遅ければ手をつけるけど。

その次は開発速度を気にするようになる。
どれだけ何も書かないで作るか。

えっと、どうやって身に着けたかだっけ?
速いプログラムのアルゴリズムはどういう仕組みになっているか勉強することだね。
SQLというかRDBMSね。の場合だと、JOINはどういうアルゴリズムで
データを結び付けているかだとか、インデックスはどういう実装(B木とか)で
どういう理屈で早いのかとか。
0781nobodyさん2008/07/11(金) 22:05:07ID:???
PHPならよっぽどのことがない限りそんなに速くはならないだろ
0782nobodyさん2008/07/11(金) 22:06:30ID:???
>>781
それはどんな言語でも一緒。
0783nobodyさん2008/07/11(金) 22:10:21ID:???
JAVAやC#畑で揉まれた方が身につくだろ
0784nobodyさん2008/07/11(金) 22:12:19ID:???
いや関係ない。そもそも速度を上げる方法というものは
言語に依存しないものだから。

言語に依存するやり方は、バッドノウハウでしかない。
言語やバージョンが変わると使い物にならない。応用力が身につかない。
07857082008/07/11(金) 22:19:48ID:???
php.ini のZendの設定の一つ上の項目の
" を閉じ忘れていたのが原因でした。
0786nobodyさん2008/07/11(金) 22:20:40ID:???
>>783
いや、Javaはオブジェクト指向を取り入れた通常の開発をすれば、
間違いなく遅くなる。メモリーも食う。速度的には不利。

じゃ、言語に依存せずwebシステムにとって何が重要か?

早く開発する必要もないはないが、不十分。
webで特に求められているのは、全体の運用コストが安くなる開発。
その解の一つがオブジェクト指向なんだが。

>全体で数秒かかっている処理の、数ミリ秒なんて気にしたってしょうがないし。
そもそも、1reqestに数秒かかる処理が問題。
最適化すれば相当早くなるケースも相当ある。
それは、phpコードの最適化もそうだし、php以外の技術も使うが。
0787nobodyさん2008/07/11(金) 22:24:16ID:???
なんかこのスレさ、この板の総合質問スレみたいに思われてんじゃね?
0788nobodyさん2008/07/11(金) 22:27:21ID:???
ある程度開発になれてくると、三項演算子とか使いたがる奴。
そういう奴が一番やっかい。
いわゆる秋葉系の部類だよ。
本人は、できる技術者って勘違いしているだから、たちが悪いわ。
0789nobodyさん2008/07/11(金) 22:30:19ID:???
>>786
数秒もかかる処理。それを大幅に縮めるには
ロジックそのものを変えないといけないことがほとんど、
そしてそのロジックはPHPに限ったものじゃないことがほとんど
0790nobodyさん2008/07/11(金) 22:30:19ID:???
>>784
それはテンプレート的な覚え方をしてるからだ。
「方法」ではなく、速度を上げる「理屈」を覚えれば、色々と応用は利くぞ。
0791nobodyさん2008/07/11(金) 22:32:13ID:???
>>790
うん。そしてその「理屈」はPHP限定のものじゃないよ。
どの言語でも使えるものだし、PHPでももちろん使えるもの。
速度アップにあまり言語ってものを意識することは無いんだよね。
0792786 2008/07/11(金) 22:34:22ID:???
>>790
同意。
数学で、数式を覚えるのではなく、数式に至るまでの展開を覚える方が、
応用問題に対処できるのと一緒ってところか。
0793nobodyさん2008/07/11(金) 22:35:15ID:???
小細工的な高速化("を使わず'を使う)とか
PHP限定のなら山ほどあるがな。
0794nobodyさん2008/07/11(金) 22:35:22ID:???
>>788
激しく同意
0795nobodyさん2008/07/11(金) 22:36:38ID:???
>>792
そういう話で、言語にこだわる人って、本質がわかっていないと思う。

漢数字じゃだめだよ。アラビア数字を使わなきゃ。みたいな。
0796nobodyさん2008/07/11(金) 22:45:41ID:???
>>793
そういうのも、他の言語でも無い話じゃないしな。
コンパイラ特有のノウハウとかもあったりなったり。
0797てんちゃん2008/07/11(金) 23:22:33ID:Z3Uae7Hu
結局TELNETでHTTP以外でソースを取得することはできないのですか?


さっきからずっと試しています。
21番ポートもダメでした
0798nobodyさん2008/07/11(金) 23:41:16ID:???
shine
0799てん2008/07/12(土) 00:25:37ID:xw9p7232
http://tool-1.net/do.dat
これは普通には開けません。.htaccessで、.datのつくファイルをアクセス拒否しています。
このチェック機構すり抜けれますか?
0800nobodyさん2008/07/12(土) 00:39:21ID:???
>>799
PHPと全然関係ないし
0801nobodyさん2008/07/12(土) 00:46:54ID:???
わかってやってんだから放置しとけ
0802nobodyさん2008/07/12(土) 00:49:59ID:lql6772u
クラスの変数一覧ってPublicじゃないと取れんの?
0803nobodyさん2008/07/12(土) 01:09:23ID:???
>>802
やったことはないけど、そういうのをやるのはリフレクションの仕事だね。
調べてみたら。
0804nobodyさん2008/07/12(土) 03:04:46ID:z/JSD44Z
すいません、whileのなかのlist(, $val) = each($arr) がどのような処理をしているのか解説お願いします
list(,$val)のように書くとどのような動作をするんでしょうか

<?php
$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');

while (list(, $val) = each ($arr)){
if ($val == 'stop'){ // stopの文字列あれば処理抜け
break;
}
echo "$val<br />\n";
}
?>
0805nobodyさん2008/07/12(土) 03:39:00ID:???
while (list(, $val) = each ($arr)) は foreach ( $arr as $val ) と同じ処理
each()はarrayのkeyとvalueを返すのでlistでvalueのみ受け取ってるだけ
0806nobodyさん2008/07/12(土) 03:50:27ID:GP2h4Bov
>>804
処理的に高負荷で可読性の悪いことしてると思うけど
たぶんPHP初期のころの素人の書いたコードだろうな
keyとvalがとりたければ
foreach ( $arr as $key => $val )
とすればいいだけ
無意味な処理だ
0807nobodyさん2008/07/12(土) 04:58:27ID:???
>>806
PHP/FIまでforeach構文はなかった。
ついでに言うと、$array as $key=>$val と list($key, $val)=each($array) のパフォーマンス上の違いはほとんどない。
実際に計測してみればよく分かる。
0808nobodyさん2008/07/12(土) 05:50:41ID:???
倍くらい違うけど
0809nobodyさん2008/07/12(土) 08:11:12ID:GP2h4Bov
>>807
step数で考えると
list($key, $val)=each($array)の方がstep数が多くなる
パフォーマンスに違いが無いなら
可読性がよくてstep数が短い方がいい
ちがうんか?ワレぼけ
0810nobodyさん2008/07/12(土) 08:18:16ID:GP2h4Bov
whileなんてつかえねー
今どき使ってる化石みたいやついるの?
foreachさえあれば何でも出来るのによお
0811nobodyさん2008/07/12(土) 12:05:30ID:???
ttp://www.phpbench.com/

ここのベンチマーク結果だと、5倍くらい差があるね
■ このスレッドは過去ログ倉庫に格納されています