【PHP】下らねぇ質問はID出して書き込みやがれ 89
■ このスレッドは過去ログ倉庫に格納されています
0001●
2009/10/11(日) 21:18:54ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0723nobodyさん
2009/10/28(水) 18:25:52ID:???0724nobodyさん
2009/10/28(水) 18:34:44ID:???javascript無し、DB無しでPHPだけでいろいろ慣れるのが先だな
0725nobodyさん
2009/10/28(水) 18:35:06ID:???A2()で「しろごま」
A3()で「ごまふあざらあし」
を処理する気まんまんの>>679にWeb100.0
0727nobodyさん
2009/10/29(木) 00:12:37ID:???それと同時にプログラミングの概念について解説してる本を読んだ方がいいのかも
概念が足りてない
0728nobodyさん
2009/10/29(木) 03:46:52ID:???0729nobodyさん
2009/10/29(木) 09:54:12ID:xBLZE2eU【バージョン】php5.2.10
SimpleXMLElementに関する質問です。
mlから特定の属性を持った要素を削除するにはどうすれば良いのでしょうか?
例を挙げると、
『sample.xml』
<?xml version="1.0" encoding="UTF-8" ?>
<library>
<book id="00001">
<title>aaa</title>
<author>Emily</author>
</book>
<book id="00002">
<title>bbb</title>
<author>John</author>
</book>
<book id="00003">
<title>ccc</title>
<author>Mike</author>
</book>
</library>
とした場合、idが「00002」の要素を削除するという感じです。
--続く--
0730729
2009/10/29(木) 09:56:09ID:xBLZE2eUいろいろ調べたところ、
$xml = new SimpleXMLElement('sample.xml', null, true);
unset($xml->book[0]);
で削除は出来るのようですが、配列で何番目という指定ではなくid「00002」の要素を指定して削除し、
<?xml version="1.0" encoding="UTF-8" ?>
<library>
<book id="00001">
<title>aaa</title>
<author>Emily</author>
</book>
<book id="00003">
<title>ccc</title>
<author>Mike</author>
</book>
</library>
となる事が目的です。
どうぞよろしくお願いします。
0731nobodyさん
2009/10/29(木) 12:08:53ID:???foreachで出来た方いたら教えてください。
$xml = new SimpleXMLElement('sample.xml', null, true);
for ( $i = 0 ; $i < count($xml->book);$i++) {
if ( $xml->book[$i]["id"] == " 00002") {
unset( $xml->book[$i] );
}
}
echo $xml->asXML();
0733nobodyさん
2009/10/30(金) 06:12:51ID:5l/tuOOstaro@example.com
これだと4文字決め打ちになってしまいます。
preg_replace('/[a-z0-9\.\-\_]+@/i', '****@', $text);
いまのところシンプルに書ける方法で思いつくのは、
長い文字数から順に置換していく方法です。
forなど使えばシンプルには書けそうです。
preg_replace('/[a-z0-9\.\-\_]{10}@/i', '**********@', $text);
preg_replace('/[a-z0-9\.\-\_]{9}@/i', '*********@', $text);
...
でも美しい方法とは思えません。
定石、または美しい方法はありますか?
0734nobodyさん
2009/10/30(金) 08:26:53ID:???たとえば
$text = "taro@example.com";
echo preg_replace('/([a-z0-9\.\-\_]+)@/ie', "str_repeat('*',strlen('$1')) . '@'", $text);
0735nobodyさん
2009/10/30(金) 10:41:53ID:???$text = "taro@example.com";
$array = explode('@', $text);
echo str_repeat('*',strlen($array[0])) . '@' . $array[1];
0736nobodyさん
2009/10/30(金) 16:17:27ID:???$text='taro@example.com';
echo str_repeat('*', strpos($text,'@')).strstr($text,'@');
0737nobodyさん
2009/10/30(金) 17:16:58ID:5l/tuOOsありがとうございます。e修飾子とかはじめて認識しました。
Yahoo!グループの過去ログのように「メール本文中の署名などの個人情報を隠匿」が目的なので、
>>734の方法で行かせていただこうと思います(目的を書いとくべきでしたごめんなさい)。
精進します。
0738nobodyさん
2009/10/30(金) 20:21:02ID:k7DoHVtBphpのソースコードそのものを取り込んで
そのコードを解析する
みたいな手段ってありませんか?
0739nobodyさん
2009/10/30(金) 20:25:31ID:???単に構文解析だったら、PHPでPHP用のレキシカルアナライザとパーサ作ればいいんだけど、
それだけやったって面白くないよね、手間なだけで。
何をしたいのかが良く分からん。
0740nobodyさん
2009/10/30(金) 22:48:05ID:pyIKqVVx{
private $ar,$tes;
public function __construct()
{
$this->ar = array('tes');
(ここで 変数 $this->($this->ar[0]) この場合 $this->tes に何らかの値を代入したい)
echo $this->tes;
}
}
$this-> に続く変数名を変数の値で表す方法はありますか?
宜しくお願いします。
0741nobodyさん
2009/10/30(金) 22:52:15ID:???0742nobodyさん
2009/10/30(金) 23:25:37ID:pyIKqVVx$this->tes = "b"; と書くのではなく、tesの部分に、"tes"が代入された変数を使いたいのです。
0743nobodyさん
2009/10/31(土) 00:17:51ID:???echo $this->$var;
こんな感じで
0744nobodyさん
2009/10/31(土) 00:38:36ID:???runkit
http://jp2.php.net/manual/ja/book.runkit.php
0746nobodyさん
2009/10/31(土) 09:17:44ID:5b/pi/nwアップローダー作る時にテンポラリのディレクトリから保存用のディレクトリに
ファイルをcopy → もとのテンポラリファイル削除 って流れがあり、
if(copy($tmpFile, $lastFile)){unlink($tmpFile);}
という感じの処理をすると思います。
しかし条件部分がtrueにならないとき、どうしたら良いんでしょうか?
「コピー失敗しました」みたいなアラート表示すべき? そんなことやってますか?
そもそも、上のif文でのチェックは必要なんでしょうか…
条件成立・不成立をどこまでフォローすべきか悩んでいます。
0747nobodyさん
2009/10/31(土) 15:10:42ID:???0748nobodyさん
2009/10/31(土) 15:13:55ID:???それに失敗したらアップロード処理失敗のエラー返すしかなかろ。
0749nobodyさん
2009/10/31(土) 15:30:20ID:???コピー失敗したらそのファイルを削除してメッセージを表示&エラーログを残すとか
0751nobodyさん
2009/11/02(月) 18:13:40ID:uSMOoO6Cphpでmhtmlを出力するほうほうはありませんか?
0753nobodyさん
2009/11/02(月) 18:58:04ID:???http://www.hedgerwow.com/360/dhtml/base64-image/demo.php
0756nobodyさん
2009/11/03(火) 00:57:00ID:OxH3Rb8VPHPの言語仕様として確認したいのですが、
1リクエストごとにstaticメソッドであろうが毎回PHPのリソースをメモリに読み込んで、
レスポンスを返した時点でメモリ破棄する。
そのため、複数のリクエスト間での共有ができず、たとえばDBのコネクションプール
などという考え方は基本ない。であっていますか?
0757nobodyさん
2009/11/03(火) 02:25:30ID:???たいていの言語は、別々に起動された、親子関係
でないプロセス間でソケットを共有する方法は、
言語仕様にはないと思う。
0758nobodyさん
2009/11/03(火) 05:32:26ID:???SpeedyCGIみたいな常駐プログラムを使ったらDBコネクション繋ぎっぱなしできるよね?
それをphpから呼び出したら、プログラム呼び出しののオーバーヘッドとDB接続のオーバーヘッド天秤にしても常駐の方が早い希ガスだけどどうなの?
あと、phpでSpeedyCGIみたいシステムないの?
0759nobodyさん
2009/11/03(火) 10:19:58ID:???MySQLならSQLrelayとか。
0760nobodyさん
2009/11/03(火) 10:39:36ID:???0761nobodyさん
2009/11/03(火) 21:21:41ID:ppv8Lxeqwikipediaで携帯のIPアドレス一覧があって、それを元にアクセスした人のIPが携帯なら携帯用のページに飛ばすのをPHPで以前に作ったんだけど
知らない間に携帯用のIPアドレスが増えてるみたいで、修正しようかと思うんだけど、結局イタチごっこだから
シンプルにユーザーエージェントで分別しようかと思うけどそれだとPCで偽装もできるので
ちゃんと的確に分けられる方法教えて。
0762nobodyさん
2009/11/03(火) 21:23:10ID:???0763nobodyさん
2009/11/03(火) 21:34:29ID:???だから普通にUAで振り分ければいいとおもうが
0765nobodyさん
2009/11/03(火) 23:00:04ID:Hf2P9qWB助けてください
0766nobodyさん
2009/11/03(火) 23:08:14ID:ppv8Lxeqだけど、UAの文字列の一部で携帯かPCかを判断すると、今後携帯キャリアがUAの仕様を変えた時に、
携帯だかPCだか判断できずに、携帯なのにPC用ページを表示してサイズでかすぎて表示できないとかだと最悪でしょ。
妥協してユーザーエージェントでやるとするといくつあるの?
ドコモ、au、ソフトバンク、ボーダフォン、J-PHONE、あと何?
ウィルコムとかイーモバイルとかも固有のUAあるの?ディズニーモバイルは?あとiフォンもある?
0767nobodyさん
2009/11/03(火) 23:42:05ID:???0768nobodyさん
2009/11/03(火) 23:44:16ID:???0770679
2009/11/04(水) 09:18:30ID:???>>720
・・・申し訳ない。
以前あったレスからJavascriptは使わないと決めて
元々記述したJsコードを全部削除してPHPに実装しなおしていましたが
報告忘れてました
>>721
A1とかA2とかは、それぞれupdateでsetする内容が違うだけ。
むしろコレなら変数で勝手に変わる様にしたほうがいいのかもしれないですが・・。
>>722
一応削除はしてます。
>>723
諦めたらそこで終わりじゃないですか??
>>724
はい。実はJavaはやっていたのですが
どうもHTMLやらJavascriptやらPHPやらとくると・・どうにも
0771679
2009/11/04(水) 09:19:55ID:???まだまだ若いですよ。上司には当然教えてくださる方もいないので独学になりますが。
いかんせん会社が大きく無いのでしょうがないです。
>>727
本・・ですねえ。
でも今月はCiscoの本やらいっぱい買ってしもたorz
経費で落ちそうなら考えてみます。
今のところ一応Formタグを追加し、typeをSubmitにして飛ばすようにしてます。
次のphpでname属性から拾ってきたものを取り上げ、PHP側のif分岐等でのマッチング査定をしつつ
その先で上書き処理、という流れで、やっていくつもりです。
0772nobodyさん
2009/11/04(水) 09:50:46ID:???それ、Apacheの問題であってPHPのじゃないじゃん。
<httpd.conf>
AddType application/x-httpd-php .php
PHPIniDir [PHP.iniのあるディレクトリ]
LoadModule php5_module [php?apache*.dllへのフルパス]
書いたらApacheの再起動。
0773nobodyさん
2009/11/04(水) 13:15:10ID:+cyJ/kJvドキュメントルート(サイトのルート)の中の一つのフォルダを完全にPHP使えないようにしたい。
そうしないとそこがアップロード用のファイル保存フォルダになっているので
PHPのファイルをアップされブラウザでファイルをアクセスされると危険。unlink()とかされたら完全に終わる。
かと言ってアップ時に、拡張子が.phpのファイルをはじくとかだとそれも困るし、そのファイルの内容をチェックするのも大変。
.htaccessファイルに、拡張子.phpは.htmlとするように書いてもいいけど.php5とかPHPとして動く拡張子が他にもあるから対処しきれない。
で、特定のフォルダにだけPHPを使わせない機能ないの?
もしくはアパッチでドキュメントルート以外のフォルダを作り、
C:/root_A(PHP可能)
C:/root_B(PHP不可)
として
http://ドメイン/root_B以下にアクセスがあった時はC:/root_B/index.htmlを表示させるとかできないかな?
バーチャルホストじゃなくドメイン同じで二つのルートを使い分けるって事。
0774nobodyさん
2009/11/04(水) 13:18:32ID:+cyJ/kJv同じドライブに複数の人のルートがあると思うけど他人のファイルをunlink()したりできないのは何で?
0775nobodyさん
2009/11/04(水) 13:22:13ID:???PRINT 'マンコ';
}
初めて作ったプログラムがこれ。
0777nobodyさん
2009/11/04(水) 13:31:39ID:???一つはパーミッション。
削除権限はそのファイルが含まれているディレクトリのパーミッションによるが
777とかしてたら消せる。
でもphpだと全ユーザーが同じ実行ユーザーになる場合もあるので
phpのSafeModeを使う。
これは、実行ファイルのオーナー(実行時のユーザーではない)が
他のオーナーのファイルをいじれなくする仕組み。
0778nobodyさん
2009/11/04(水) 16:27:43ID:+cyJ/kJvありがとう。ちょっとググってみるよ。
0779nobodyさん
2009/11/04(水) 17:03:15ID:???基本的にhttpdは拡張子で実行するか決めてるんだから
拡張子で制限すればいいはずだよ。
0780nobodyさん
2009/11/04(水) 17:37:09ID:???phpファイルはアップロード禁止にしたらいいんじゃない?
どうしてもアップロードしたい場合はZIPって手もあるし
0781nobodyさん
2009/11/04(水) 18:05:34ID:???Options -ExecCGI -Includes -MultiViews
php_flag engine off
こんな感じで.htaccessを設定したらCGIとPHPは動かなくなるはず
0782nobodyさん
2009/11/05(木) 02:39:02ID:bdU2dbguというURLでアクセスしたら
http://example.com/ref/index.php?id=abc
の結果を返すにはどうしたらいいですか?
0783nobodyさん
2009/11/05(木) 02:43:08ID:???0784nobodyさん
2009/11/05(木) 02:56:01ID:bdU2dbguありがとう
0785nobodyさん
2009/11/05(木) 09:23:02ID:???PRINT 'パイズリ';
BREAK;
}
二番目に作ったプログラムがこれ。
0786nobodyさん
2009/11/05(木) 10:17:21ID:???print "まんこ\n";
}
print 'な? 9999の次でも1に戻るってことは無いだろ?';
0787nobodyさん
2009/11/05(木) 10:31:55ID:???0788nobodyさん
2009/11/05(木) 12:50:44ID:???0789nobodyさん
2009/11/05(木) 13:16:33ID:???0790nobodyさん
2009/11/05(木) 15:22:19ID:17l6YWCOindex1.php
↑インクルード
user_func.txt
↓インクルード
index2.php
でもこうなるとindex1.phpにアクセスするということはuser_func.txtにもアクセスする事になるので、鯖に負担がかかる。呼び込むファイルが増えればなおさら。
負荷を無くすにはどうしたらいいでしょうか?
個人的にできたらいいなと思うのは、この様な自作関数もメモリ上に置けるようにしてほしい。
最初に鯖を立ち上げた時に読み込んで後は元々ある関数みたいに使いたい。
0791nobodyさん
2009/11/05(木) 15:33:59ID:???実際、どの程度の負荷がかかってるのさ?
一度user_func.txtが読み込まれれば、2回目からはメモリを見に行くから気にしなくて良いレベルだと思うぞ。
0792nobodyさん
2009/11/05(木) 16:22:18ID:17l6YWCOえっ?そうなの?って事はindex.phpとかも一回読まれたらメモリ見るの?
知らなかった。どの位の負荷がかかってるかはどうやって調べたらいい?
最近サイトを開くと重いんだよね。特に夜。LAN内のPCからでも遅いから回線が原因じゃないかと思うんだけど
HDDがあれこれファイルを読んだりして追いついていけないのかもって思って。
CPU仕様率は結構低いんだけど。LANもギガビットLANだし、原因がHDDとしか思えないんです。
0794nobodyさん
2009/11/05(木) 16:55:33ID:???普通は一度ファイルを読み込めば、次回はメモリを参照する。
readで毎回必ずHDDを読んでいたら大変な事になるよ。
CPU使用率がわかってて、DISK周りの負荷は調べてない?
Linuxならiostatとかで見て見なよ、sarが入ってればそれでもいいし。
0795nobodyさん
2009/11/05(木) 16:59:36ID:???ギガビットは過信しないほうがいい
LANカードやHUBがしょぼかったら無意味
転送量が少なくても一度に大量の接続があれば捌ききれなくなる。
0796nobodyさん
2009/11/05(木) 19:35:22ID:???世の中にはキャッシュと言うものがあってだな・・・
てか、HDDからの読み込みが気になるくらいでかいファイルなのか?そのスクリプト。
0797nobodyさん
2009/11/05(木) 20:31:20ID:17l6YWCOOSはWindowsなんだけど、とりあえずHDDをSSDとか1万回転のHDDに変えたら速くなりそうな気がするんだよね。
ルータやLANケーブルはそれなりのやつを使ってるけど。
実際商用のサーバーってどうやって負荷計ってるの?そういうフリーソフトないかな?
何を改善すればいいか分からん。
>>796
スクリプトはでかくないよ。ただ動画のダウンロードが多い。これが遅延の原因かも。
あとデータベースとOSのドライブは別のドライブにした方が速い?パーティションじゃなくて完全に個別という意味で。
0798nobodyさん
2009/11/05(木) 23:07:04ID:???流石にスレ違いだろ。
DISKは複数あったほうが速いにきまっとる
書いてるようにOSとDB分けたほうがいい。
0799nobodyさん
2009/11/05(木) 23:39:13ID:???PHPのファイルは、OSによってディスクから内容がメモリに読まれた上で、インタプリタによって機械語にコンパイルされ、実行される。
ここまでが基礎知識。
で、まず、今どきのOSはディスクからの読み込みをキャッシュする。
つまり、一度読んだファイルはメモリにそのまま持っておいて、更新がなければ次回以降はそいつを使う。
次に、APCやeアクセラレータといったPHP関連ライブラリを使うと、機械語にコンパイルされたコードを使いまわしてくれるようになる。
0800nobodyさん
2009/11/05(木) 23:55:44ID:???NICかHubが壊れかけてるとか?
とりあえず遅延がどの時点で発生しているのか調べないと。
なんかPHPが原因じゃないっぽい感じがする。
0801nobodyさん
2009/11/06(金) 15:02:27ID:uY82lX0BSystem.out.printlnで
あれ、デバッグですごく便利なんだけど、
EclipseでPHPでできないのかな
0802nobodyさん
2009/11/06(金) 15:30:23ID:+6dsWJpThttp://www.madirish.net/?article=245
上記を参考にPostgreSQLで作ってみました。
BL取得→DBに保存→webから利用があったらmd5してdbにSELECT発行
という形で作ってみたのですが、BL取得→DBに保存
ここまで上手くいって294,830件のハッシュがDB内に存在する所までは確認できました
ところが実際にwebから本家GoogleSBでBL入りしているようなドメインを送ってもBL判定されません。
どなたかMySQL環境がある方、このソースをまんまで試してみて頂けますでしょうか…。
例として下記
http://www.google.com/safebrowsing/diagnostic?site=4gameranking.com
0803nobodyさん
2009/11/06(金) 21:29:10ID:qkr//tmUif(isset($val))かif(!empty($val))
と
if($val != "") か if($val <> "")
では、どちらの方が処理が速いのでしょうか?
0805nobodyさん
2009/11/06(金) 23:17:02ID:???Cのコードを読んでみないとなんとも言えないが、もっとも処理の少ないであろうisset()が最速だと思う。
だけど、そんな速度差を気にしないといけないような案件でPHPを使うほうが間違っているので、どうでもいい。
0806nobodyさん
2009/11/06(金) 23:29:19ID:vBz8RCVvそこでクラスについて勉強したいと思うのですが
フレームワークを覚える前にクラスの使い方を覚えると楽になりますか?
OOP、デザインパターンを覚えてからフレームワークに入るのが王道でしょうか?
プログラミングはPHPが初めてでクラスの基本的なものは分かるのですがクラスだけは敷居が高くて勉強してきませんでした
0807nobodyさん
2009/11/06(金) 23:33:04ID:???フレームワークの使い方だけ学べばいいんじゃないかな。
どこにファイルを置いて、こういう名前にして、どういうAPIがあって・・・みたいな。
0808nobodyさん
2009/11/06(金) 23:34:14ID:???0809nobodyさん
2009/11/06(金) 23:34:43ID:vBz8RCVv{
private $word = "こんにちは世界さん(^^)";
function view() {
return htmlspecialchars($this->word, ENT_QUOTES);
}
}
$obj = new hello_world();
echo $obj->view();
0810nobodyさん
2009/11/06(金) 23:38:43ID:vBz8RCVvcakePHPもなんかドキュメントの通りやりましたがこのファイルにこれを書けという意味が理解できなかったため挫折しました
smartyはサンプルみて挫折しました
0811nobodyさん
2009/11/06(金) 23:41:26ID:???0813nobodyさん
2009/11/06(金) 23:53:40ID:???0814nobodyさん
2009/11/06(金) 23:54:01ID:vBz8RCVvprotected
private
が使えます
0815nobodyさん
2009/11/06(金) 23:54:54ID:???あとSmartyはFWでないしな
0816nobodyさん
2009/11/06(金) 23:59:14ID:???ZendFrameworkはドキュメントがたくさんあってまだ読んでないです
フレームワークって新しい言語を覚えるような感じですね
気合入れないとだめですね
0817816
2009/11/06(金) 23:59:56ID:vBz8RCVv0818nobodyさん
2009/11/07(土) 01:02:50ID:???がんばれ!
0819nobodyさん
2009/11/07(土) 01:04:33ID:???0820nobodyさん
2009/11/07(土) 10:59:11ID:HHoKTIgI$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}
検索する文字が検索対象に一致するか調べたいと思います。
上のように対象をforeachで回して$valに対象の文字列と一致するか
調べる方法が一番簡単だと思いますが、
検索する文字が複数ある場合、何回も上記の事をしなければいけません。
もう少し効率の良い書き方はないでしょうか?
0822nobodyさん
2009/11/07(土) 11:32:59ID:HHoKTIgI■ このスレッドは過去ログ倉庫に格納されています