【PHP】下らねぇ質問はID出して書き込みやがれ 112
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/10/31(月) 05:11:09.81ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0251nobodyさん
2011/11/08(火) 00:45:22.59ID:???まぬあるのあの文面どうなのって思うわ
0252nobodyさん
2011/11/08(火) 02:21:04.05ID:???プログラム板で聞いたほうがいい
http://hibari.2ch.net/tech/
PHPはこまけーこと気にしないでいいような
オヴァカさん向け設計なので
ご覧のようにまともな回答は返ってきません
そういうメモリやらなんやらの基礎知識は
基本情報あたりに手を出して初めて知るのがPHPer
0253nobodyさん
2011/11/08(火) 02:27:58.13ID:???大抵の人は「ああー、あの文面ね」って理解できるぐらいメジャーな話なんだろうけど、分からないorz
0256nobodyさん
2011/11/08(火) 02:50:14.75ID:???0257nobodyさん
2011/11/08(火) 03:01:35.87ID:???Prepared statementsを先ほど知ったのですが、
これって、毎回決まったようなクエリだったら
PDO::queryの変わりにPDO::prepareで実行すると
2回目から早いよって認識で大丈夫ですか?
ちょっと認識ずれてます?
0258257
2011/11/08(火) 03:02:31.41ID:6HzOoKMdID出し忘れのため、最投稿
0259nobodyさん
2011/11/08(火) 03:17:02.17ID:???だいたいそんな感じでいいよ
パラメータだけ変えて複数実行する時に有用
insert文やupdate文でまとめて複数行うときなんかによく使う
0260nobodyさん
2011/11/08(火) 09:21:39.20ID:hZ5KEzHU関数Aの中でまとまった処理がしたくて、
function A(){
function 纏まった処理(){};
纏まった処理();
纏まった処理();
}
としているのですが、この書き方でA()を実行すると纏まった処理()が
A()の中だけでなくグローバルになってしまいます。
A()の中だけで有効な関数の作り方はどうすればよいのでしょうか。
function A(){
$纏まった処理=function (){};
$纏まった処理();
$纏まった処理();
}
しか無いのでしょうか。
0261nobodyさん
2011/11/08(火) 09:30:32.81ID:???0262nobodyさん
2011/11/08(火) 09:33:12.26ID:???その関数内でしか使われない関数って定義はできないし、
ラムダ関数みたいな機能もないので
クラスで書いてもいい処理ならprivateで外からアクセスさせないようにするってくらいかな
0263257
2011/11/08(火) 09:35:34.95ID:6HzOoKMdなるほど、ちょっと試してみます。
ありがとうございます
0264nobodyさん
2011/11/08(火) 09:39:28.14ID:???記述が見易くならない可能性の方が高いんで、使えるかは微妙だけど
0266nobodyさん
2011/11/08(火) 09:56:54.62ID:???0267nobodyさん
2011/11/08(火) 10:30:09.32ID:Olz6L6I6class Test {
private $con;
private $hoge;
public function Test($hoge) {
$this->con = DB::get()->connect();
$this->hoge = $hoge;
}
public function a() {
$this->con->query("sql");
//$this->hogeを使う
}
public static function b() {
$con = DB::get()->connect();
$con->query("sql");
}
}
ポイントは
b()はインスタンス変数を必要としないのでstaticとしても呼び出せるようにしたい
$this->conが使えないのでstaticメソッドは毎回DB::get()->connect();をコールしないといけない
こういうのっておかしいですか?
0268nobodyさん
2011/11/08(火) 13:03:03.23ID:???ActiveRecordみたいなパターンがあるのでおかしくはない
そもそもそのTestが何を表してるのかが大事
クラスは箱や入れ物じゃないからな、型だぞ
$user = new User();
$user->name = 'hoge';
$user->save();
$user = User::findByName('hoge');
0269nobodyさん
2011/11/08(火) 14:36:04.18ID:lQaQJdzPclass内の先頭部でprivate $_dbなどメンバ変数(クラスのプロパティ)を定義しますが、
これと、メンバ関数function()内での変数$popとの違いは、
・$_dbはクラス全体で使える(あるメソッド内で値を代入されたらそれが他のメソッドでもその値が使用される)
・$popはその関数の中でのみ有効
という理解で宜しいのでしょうか?
0270nobodyさん
2011/11/08(火) 14:45:16.78ID:???スコープもわからんとは不思議なやつめ
staticを考慮しなければそういう理解でよろしいです
0271nobodyさん
2011/11/08(火) 16:16:16.06ID:???いい方法ないだろうか?
0273nobodyさん
2011/11/08(火) 16:23:44.63ID:92k+xz2Urequireは出来るのですが
file_get_contentsは403が返ってきてアクセスできません。
上記条件下でlocalhost内のファイルを文字列に読み込むにはどうしたらいいでしょうか?
0274nobodyさん
2011/11/08(火) 16:26:49.92ID:???requireしたファイルから文字を返すように書き直す
file_get_contentsで403が返るのは理由はHTTPの勉強をすれば出来ない理由が分かる
0275nobodyさん
2011/11/08(火) 16:30:50.05ID:???0276nobodyさん
2011/11/08(火) 16:40:15.24ID:???ttp://www.php.net/manual/ja/reflectionclass.getproperties.php
ここらあたりで出来たはず
>>273
file_get_contentsはファイルパスも受け付けるのでファイルパスを記述すりゃいい
file_get_contents('../../../hogehoge')
file_get_contents('/var/www/etc/hogehoge')
みたいな感じで
0277273
2011/11/08(火) 16:46:18.38ID:92k+xz2UURL形式ではなく>>276さんのおっしゃる方法でうまくいきました。
お三方ありがとうございました。
0278271
2011/11/08(火) 17:10:24.27ID:???どうやら、そのリフレクションでは、
クラスのデフォルト値しかとれないようです
コンストラクタとかで値を再定義しても、そっちは取得できない。
で、調べてみたらクラスをforeachにかけると取れるのがわかったので、
今回はそっちを使うことにしました
0279nobodyさん
2011/11/08(火) 18:28:41.45ID:++VodBMCHTTP_USER_AGENTに対する正規表現はどのように書くのがベストだと思いますか?
0280nobodyさん
2011/11/08(火) 18:33:52.57ID:???偽装できちゃうんで、それが出来る限りでしょう。
期待した答えじゃないなら、それ書いてね。
0281nobodyさん
2011/11/08(火) 18:37:55.45ID:++VodBMCそう言われてみればそうですね。
HTTP_USER_AGENTを使う方法以外に、
例えばクッキーみたいなブラウザにはついてる機能の有無を確認して
ブラウザからのアクセスかどうかを判定することはできそうですか?
0282nobodyさん
2011/11/08(火) 18:42:37.21ID:???やりたいことは何でしょうか。
0283nobodyさん
2011/11/08(火) 18:42:50.35ID:???そういうのは現実的ではないと思うなぁ
0284nobodyさん
2011/11/08(火) 18:49:56.34ID:++VodBMCそれではクッキーが有効かどうかで判定してみることにします。
アクセス解析みたいなプログラムで不要・不正なアクセスを除外したいです。
ありがとうございました。
0285nobodyさん
2011/11/08(火) 18:50:05.65ID:???諦めてください
0286nobodyさん
2011/11/08(火) 18:51:53.54ID:++VodBMC0287nobodyさん
2011/11/08(火) 18:54:58.54ID:???0288nobodyさん
2011/11/08(火) 18:57:11.31ID:++VodBMC0290nobodyさん
2011/11/08(火) 19:04:38.69ID:???Webブラウザが行う事はWebブラウザでしかできない訳ではないから素人の子供だましだけどさ
0292nobodyさん
2011/11/08(火) 19:13:52.74ID:lDLMrbx7loader.php
<?php
function flush(){
require_once("test.php");
}
flush();
?>
test.php
<html>
<head>
<link rel="stylesheet" href="test.css" type="text/css">
<script src="test.js" type="text/javascript">
</head>
<body>
<?php echo "hello,world" ?>
</body>
</html>
上のような2ファイルを使い、loader.phpを実行してブラウザに表示させると、test.php内で呼び出しているcssとjavascriptが読み込まれません。
生のhttpレスポンスを見たところ、test.cssとtest.jsではcontent-typeが
Content-Type: text/html;
となっていたため、htmlとして読み込まれていたために動作していなかったと分かりました。
これらcssとjavascriptファイルを適当なcontent-typeで読み込ませるにはどうしたらいいでしょうか?
0293nobodyさん
2011/11/08(火) 19:24:39.52ID:???0294nobodyさん
2011/11/08(火) 19:26:25.57ID:???0296nobodyさん
2011/11/08(火) 20:02:56.28ID:???0297292
2011/11/08(火) 20:09:12.54ID:lDLMrbx7パスをあわせると普通に読み込めました・・・
>>295
自分で>>87のようなルーティングスクリプトを作っています。
あるurlにアクセスしたら条件にマッチするクラスを実行し、
そのクラスの中でtest.phpのようなテンプレートを呼び出す、という形にしているため
こういう感じになりました。
どう変なのか教えてもらえるとうれしいです。
0300292
2011/11/08(火) 21:01:23.04ID:lDLMrbx7結局それもパスを正しいものにしたところで直っていました・・・・
0301nobodyさん
2011/11/08(火) 23:00:38.35ID:lQaQJdzPconfigure: error: readline library not found
と出ます
しかし、yumでreadline-develは入れていますし、32bit版ではこれで上手くいっていました
rpm -ql readlineで
/lib64/libreadline.so.6
/lib64/libreadline.so.6.0
/usr/lib64/libhistory.so.6
/usr/lib64/libhistory.so.6.0
が出てきたので--with-readline=/usr/lib64とかしましたがダメでした
どのようにすればいいのでしょうか?
0302nobodyさん
2011/11/08(火) 23:06:06.38ID:lQaQJdzP0303nobodyさん
2011/11/08(火) 23:41:21.56ID:UTCFCr2RbindValueでINT指定でOKみたいなのですが、こうするしかないのでしょうか
0304nobodyさん
2011/11/08(火) 23:51:46.78ID:???一度yumでreadlineをremoveしてソースからビルドしてみたらどうですかね?
phpもソースからなんだし。
0307301
2011/11/09(水) 00:58:44.47ID:???32bit版では全く問題が無かったのです
パスを指定する必要もありませんでした
なので64bit版でも出きるだろうと思っていたのですが・・・
>>305
今--with-libdir=lib64を./configureに追記して実行してみました
しかし、やはりconfigure: error: readline library not found
が出てしまいました
自分、コマンドラインからも結構PHP使うもので、出来ればreadline入れたいなと思っております
0308nobodyさん
2011/11/09(水) 01:16:29.04ID:???0310nobodyさん
2011/11/09(水) 03:11:24.10ID:???/lib64 を指定しないと LD_LIBRARY_PATH に lib64を付加したところが探されるんじゃないのかな
0311nobodyさん
2011/11/09(水) 13:16:45.24ID:???マルチ乙
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1075068565
0312nobodyさん
2011/11/09(水) 13:25:51.50ID:???楽な方法ってどんな方法?
0313312
2011/11/09(水) 13:27:57.32ID:ICnxPKAlあと、毎回じゃなくて一定回数ごとに変化する方法も知りたい。
通信エラーのたびに最初のページからってのはさすがにうざいからな。
0314nobodyさん
2011/11/09(水) 13:35:23.73ID:???マニュアルにそのままやりたい事が関数に用意されてるだろ
0315nobodyさん
2011/11/09(水) 13:45:45.09ID:???0317nobodyさん
2011/11/09(水) 13:58:08.00ID:???自分の無知さをセッションのせいにするなよw
0318nobodyさん
2011/11/09(水) 14:55:21.12ID:Ubneb9ND表示されるのは元の文字列の「Hello」です
翻訳文字列を表示させたいのですがzipで一式あげましたのでご助言お願いします
ttp://www1.axfc.net/uploader/File/so/71394.zip
コードはgettext.php、翻訳ファイルのバイナリはdefault.moです
default.poも一応載せておきます(poeditで作りました)
0319nobodyさん
2011/11/09(水) 15:16:56.26ID:???0320nobodyさん
2011/11/09(水) 15:28:05.29ID:Ubneb9ND修正して再度アップロードしました
ttp://www1.axfc.net/uploader/File/so/71395.zip
現在も表示させる事はできません
0321nobodyさん
2011/11/09(水) 15:39:41.35ID:Ubneb9ND翻訳ファイルは指定された位置を置くルールがあるようで翻訳ファイルをルールに沿って指定した場所に置くと事で表示させることができました
0322nobodyさん
2011/11/09(水) 17:39:45.51ID:???>>240-241の指定の仕方だと
大量のWarningが出てダメだよね
loadHTML()系はJavaScriptとか入ってるだけで大量にエラーでるから
・・・って俺だけなのかな?
0323nobodyさん
2011/11/09(水) 17:45:22.41ID:???そこだけエラー抑制しとけば
0324nobodyさん
2011/11/09(水) 18:05:29.22ID:???@でもつけとけ。
0325nobodyさん
2011/11/09(水) 18:08:41.19ID:???と言うことは>>241のニコ動も・・・
・・・というかそこだけエラー抑制ってどういうこと?
$doc->@loadHTML()ってこと?
これじゃそこだけじゃなく、全体を抑制するからね
0326nobodyさん
2011/11/09(水) 18:14:48.53ID:???0327nobodyさん
2011/11/09(水) 18:22:05.56ID:???error_reporting(E_ALL ^ E_WARNING);
$doc->loadHTML($source);
error_reporting(E_ALL);
0329nobodyさん
2011/11/10(木) 11:39:56.26ID:9jcxfb/Whoge.com/?page=info
を、
hoge.com/info/
と置換されるようにして
静的URLにみせてるのですが
その影響でアクセス解析等を導入したとき
実際に
hoge.com/acc/
にアクセス解析があるのに、
hoge.com/?page=acc
と置換されて、表示できなくなります。
何かうまい解決策はないでしょうか。
0330nobodyさん
2011/11/10(木) 11:45:38.90ID:???MVCをなぜ書いたのかと、なぜPHPなのかはおいといて
アクセスログを見るツールだったら、そのまま表示されるはずだが?
もしかして、リライトじゃなくリダイレクトしてないよな
ま、どう出るかは解析ツール次第だろうな
0331nobodyさん
2011/11/10(木) 12:26:25.73ID:???を、
hoge.com/info/
と置換されるようにして
静的URLにみせてるのですが
逆じゃね?
0332nobodyさん
2011/11/10(木) 13:06:05.70ID:???MVCとか関係ねーよ
0333nobodyさん
2011/11/10(木) 13:18:25.64ID:???0334nobodyさん
2011/11/10(木) 17:37:41.31ID:MAuKgtyHデータベースにprepareでインサートするときはprepareを使うとエスケープがいらないって聞いたのですが
インサートしてもエスケープされません
<とか>などはエスケープされないってことですか?
インサートする文字列↓
<b>てすと</b>
0335nobodyさん
2011/11/10(木) 17:44:00.14ID:???0336nobodyさん
2011/11/10(木) 17:45:28.10ID:???どういうコード書いたの?
0337nobodyさん
2011/11/10(木) 17:59:21.53ID:MAuKgtyH$sql = 'insert into tbl (id, text) values (:id, :text)';
$stmt = $sqlite3->prepare($sql);
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);
$stmt->bindValue(':text', "<b>てすと</b>", SQLITE3_TEXT);
$stmt->execute();
0338nobodyさん
2011/11/10(木) 18:23:31.78ID:Capr9OYXhttp://jp.php.net/manual/ja/function.simplexml-load-file.php
の通りに
SimpleXMLElement Object
( [title] => Example Title
...)
のような形でアクセスするところまではできたのですが
これを逆にxmlの形に戻す事は可能でしょうか?
例えば
http://headlines.yahoo.co.jp/rss/rps_dom.xml
において<item>単位で、かつ
<item>
<title>後付け電装品による火災に再度注意喚起 国交省(レスポンス)</title>
<link>http://rd.yahoo.co.jp/rss/l/headlines/soci/rps/*http://headlines.yahoo.co.jp/hl?a=20111110-00000043-rps-soci</link>
<category>社会</category>
<pubDate>Thu, 10 Nov 2011 17:55:41 +0900</pubDate>
</item>
のようにタグを含んだ状態でDBに1コードずつ保存したいです。
DBはtitle,orijin_xmlなどのカラムを持ってタイトルはタイトルでタグが無い状態で欲しいので
simplexml_load_file()で処理した後に取得できるのですが、両方いっぺんには無理でしょうか?
0339nobodyさん
2011/11/10(木) 19:58:34.70ID:ZhWtNVenそれとも削除フラグが立って、削除自体はGCか何かであとでまとめて削除されるんですか?
session_save_path()でセッションの保存先をpublic_html以下にしてみて
session_destroy()を呼んでみて確認したところ、削除されていないような感じだったので・・・
0340nobodyさん
2011/11/10(木) 20:03:53.08ID:???0341339
2011/11/10(木) 20:18:05.94ID:???レスどうもありがとうございます
session_start();
$_SESSION = array();
はやっています
ini_set('session.use_cookies','0');
にしているのでセッションクッキーの箇所はマニュアルの例とは違っています
そのレスだとすぐにセッションファイルが削除されるってことですよね
わかりました
0342nobodyさん
2011/11/10(木) 22:15:11.52ID:J5cnYxt0今日おれの誕生日だ。
ケーキ買いに池袋いったんだ。
そしてケーキ屋の人がだれかの祝いですか、と聞かれて僕です
と答えたら、周りの従業員さん5名にbookoffみたくおめでとうと言われて
非常にはずかしかった。
どうしたらいい?
0343nobodyさん
2011/11/10(木) 22:20:43.89ID:???俺も8日に誕生日だった。
地震以来久々に妹からメールが来た。
読んだところ
「部屋にあるジョジョよんでいい?」
だった
そんなもんだ
0344nobodyさん
2011/11/10(木) 22:27:05.89ID:J5cnYxt0笑える。
でもさ、でかい声で今日お誕生日の方いらっしゃいました
とか言う必要なくない。
一人で来ているのに、もうはずかしくて。
まさかそんな待っている間拷問だった
0345nobodyさん
2011/11/10(木) 22:29:13.25ID:???と思って店員が気を効かせて祝ってくれたんだから有りがたく思え。
そして思いっきりスレチだ。
0346nobodyさん
2011/11/10(木) 22:31:54.86ID:J5cnYxt0じゃあ、こういうこと書ける板ってどっかある?
ちゃんと家族で食べたよ。恋人はいませんけど。
もう二度とあのケーキ屋にはいかない。
あーあおれの誕生日も後2時間か。いいことなかったな
0347nobodyさん
2011/11/10(木) 23:03:13.06ID:???0349nobodyさん
2011/11/11(金) 04:04:18.29ID:???当たり前だろ
データベースのエスケープ処理はSQLインジェクションを防ぐための処理
SQLインジェクションに<>は関係ない
<>のエスケープはXSSを防ぐための処理だ
んで本題だがHTMLタグってのはデータベースにはそのまま入れる
んで取り出してHTMLに表示するときにhtmlspecialcharsでエスケープをして表示する
0350nobodyさん
2011/11/11(金) 04:11:44.22ID:???0351nobodyさん
2011/11/11(金) 04:52:59.71ID:???PHPプログラマーの、お姉さんだ!
徹夜明けの始発で帰宅中だ。
頭がテンパッテルから
どんな質問にも答えるぞ!
■ このスレッドは過去ログ倉庫に格納されています