【PHP】下らねぇ質問はID出して書き込みやがれ 107
レス数が950を超えています。1000を超えると書き込みができなくなります。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1304064660/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0853nobodyさん
2011/06/28(火) 19:00:46.25ID:???ordとascだったかな。手元にマヌアルが無いんだ。スマソ。
あと、packだとか使ってもできたはず。
0854nobodyさん
2011/06/28(火) 19:45:49.53ID:B0fn7u1Xセッションはむやみやたらスタートさせないほうがいいのでしょうか?
a.phpからb.phpへの一方向の遷移を考える場合、
a.phpではb.php?hoge=ランダム値へロケーションヘッダを辿り、クッキーにも同じランダム値を保存しておき、
b.phpではif ($_GET['hoge'] == $_COOKIE['hoge'])が真の時のみにセッションスタートをして、
間違っていたり直接b.phpにアクセスした場合はセッションをスタートしないような感じにしたほうがいいのでしょうか?
それともこんな面倒な処理は必要ないですか?
0855nobodyさん
2011/06/28(火) 19:48:15.66ID:???0856。 ◆oDupeixhZv52
2011/06/28(火) 19:49:59.98ID:???$src="IBM"; $dist=""; $length=strlen($src);
for ($i=0;$i<$length;$i++) {
$dist .= chr(ord($src[$i])-1);
}
0857nobodyさん
2011/06/28(火) 19:52:23.47ID:???まず1つめはsession_start時にセッションファイルが作成されるので、
安易に作成しないほうがいいのかな?というのと、(サーバ負荷的に)
正規のルート以外からのアクセスでセッションを始めるのはなんかまずそうな気がして・・・(よくわかっていない)
0858854
2011/06/28(火) 19:53:04.52ID:B0fn7u1X0859nobodyさん
2011/06/28(火) 21:09:06.87ID:???どうしたらいいでしょう?
<?php
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
0860むこうの878
2011/06/28(火) 21:20:15.44ID:???そういう下らないことやめてくれませんかね?
ID出してないスレで質問したのになんでわざわざ煽られなきゃならんのだ
>>859はマルチ装った偽物ですスルーしてください
0861nobodyさん
2011/06/28(火) 21:55:22.86ID:???0862nobodyさん
2011/06/28(火) 21:58:25.91ID:???0863nobodyさん
2011/06/28(火) 21:59:29.98ID:nyZ/thnDZendかCakeにしようと思ったのですが初学者にはどちらがおすすめですか?
また、おすすめの教本があれば教えてください
0864nobodyさん
2011/06/28(火) 22:03:29.03ID:???入門にCodeIgniterからやっとけ
その後にZend
この二つを適当に覚えたらsynfonyにも手を出してみるのも良い
CodeIgniterとZendは似た感じなのでどちらかが分かればすんなり使えるのでおすすめ
CakePHPは汚いのでと2.0になるまでは勉強しなくておk(1.x系は害悪。信者が沸くと思うけどスルーでおk)
0868nobodyさん
2011/06/28(火) 23:58:06.73ID:???0870nobodyさん
2011/06/29(水) 00:08:02.17ID:???俺は使わないけど
0871nobodyさん
2011/06/29(水) 04:41:46.96ID:???【PHPのバージョン】 5.3.6
【質問内容】
http://localhost/hoge/index.php ( C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\hoge\index.php )に
print_r(getcwd());//A
register_shutdown_function(function(){print_r(getcwd());});//B
と書いて実行すると
AはC:\Program Files\Apache Software Foundation\Apache2.2\htdocs\hoge
BはC:\Program Files\Apache Software Foundation\Apache2.2
と表示されます。何故Bがこのパスになるのかが分かりません
http://php.net/manual/ja/function.register-shutdown-function.php
を読みましたが、register_shutdown_functionでカレントディレクトリが変わるとは書いてありませんし
「Apache などいくつかの Web サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。」とはありますが、変更可能≠強制変更ではないと思います
0873852
2011/06/29(水) 10:04:04.54ID:eHwOMlbcchrとordですね。ありがとうございました。
>>856
文字列って配列だったんですね。
ありがとうございました。
0875nobodyさん
2011/06/29(水) 13:09:44.49ID:DGRFcgEJモンスタードロップとかどのように設計すればいいですか?
0876nobodyさん
2011/06/29(水) 13:18:42.83ID:???0878nobodyさん
2011/06/29(水) 13:51:46.80ID:bf3Qo/adheader("Location: next.php");
Locationヘッダだと302 Foundで次のページへ移動して200 OKという風になりますが、
どうもその辺のメジャーなサイトのログイン機能を見ると、
ログイン後ページが移動しているのにLocationヘッダで渡してないのか200 OKを返してるようです。
Refreshヘッダにすると200になりますが、
Refreshヘッダで飛ばすのが普通なのでしょうか?
header("Refresh: 0; url=next.php");
それともなんか別の仕掛けがあるのでしょうか?
0879。 ◆oDupeixhZv52
2011/06/29(水) 14:56:29.63ID:???0880nobodyさん
2011/06/29(水) 15:31:33.81ID:???0881nobodyさん
2011/06/29(水) 16:21:59.12ID:???0882878
2011/06/29(水) 17:20:55.03ID:bf3Qo/ad具体的にどうやればよいのかヒントでも教えていただけませんか?
クリックする方式か、ログインとその次の画面を融合させる方法しか思いつきません。
>>880
そうですね。
調査数が少なかったようです。
0883878
2011/06/29(水) 17:22:25.10ID:bf3Qo/adJavaScriptとの連携はちょっと難しそうなので申し訳ないです。
Googleなんかはよくやってる感じがしますけどね。
0884。 ◆oDupeixhZv52
2011/06/29(水) 19:27:01.14ID:???ログインフォームの飛先変えればheaderなしで次のページに行くよねってだけ。
当たり前なんだけどさ。
0885nobodyさん
2011/06/29(水) 19:44:12.14ID:OCKz1ee8header("Content-Type: text/html; charset=utf-8");
echo $file;
外からのアクセスなら実行されたものが表示されると思いますが、
当然内側から読み込んでる場合は実行されません。
実行したものを表示したい場合はどうしたらいいでしょうか?
0886nobodyさん
2011/06/29(水) 20:26:30.48ID:???mod_php 限定でよけりゃ
http://jp.php.net/manual/ja/function.virtual.php
0887885
2011/06/29(水) 20:33:16.83ID:OCKz1ee8ありがとうございます。あとで見てみます。
いましがた、ひょっとしてrequireでいける?
と思いついたのでちょっと試してみます。
0888885
2011/06/29(水) 20:37:45.22ID:OCKz1ee80889nobodyさん
2011/06/29(水) 21:41:13.85ID:???0890nobodyさん
2011/06/29(水) 22:14:03.95ID:???PHPを主に使っているだけで最下層プログラマと言われて哀れみの目で見られます。
確かにPHPはどんな馬鹿にでも扱える言語と言われていますが、
PHPプログラマの自分としてはこの現実がとても悲しいです。
馬鹿でも素人でも扱える言語というのは利点でもあるはずです。
0891nobodyさん
2011/06/29(水) 22:15:09.89ID:???0892nobodyさん
2011/06/29(水) 23:09:34.02ID:???そんなの気にするこたぁねえだろw
っつか>>891デイイダロ
JavaだろうがPerlだろうが、スキル無い奴はあほらしい質問してくるもんだ。
Catalystのメーリングリストにもミョーな奴沸いてる事あるし・・・
要は、そんなの気にかからないくらいになればいいんだ
0893nobodyさん
2011/06/29(水) 23:10:02.00ID:???まず君は勘違いしている
PHPをバカにしているのではなくて、>>1を読まないようなプログラマーだから君がバカにされている
0894nobodyさん
2011/06/30(木) 00:10:11.21ID:Zpbvub7secho $i;
}
Zで止まるにはどうしたらいいですか?
Yまでだとちゃんと出てくれるんですが
A-ZだとA-YYのあとにZがくるらしく
思い通りにいきません
0895nobodyさん
2011/06/30(木) 00:21:37.30ID:???for ($i = 'A'; $i != 'AA'; $i++) {
echo $i;
}
とか?
0896nobodyさん
2011/06/30(木) 00:23:09.44ID:???良いのかな?
0897894
2011/06/30(木) 00:27:41.45ID:Zpbvub7sありがとうございます
これはバグではないんだろうか・・・
アルファベット入れれること自体なんかおかしいですけどねw
0898nobodyさん
2011/06/30(木) 00:33:36.67ID:???0899894
2011/06/30(木) 00:37:01.98ID:Zpbvub7sなんか都合よくそういうのが設定できる関数とかありませんか?
mb_detect_order的な関数があるといいですが
さすがにないですかねえ
0900nobodyさん
2011/06/30(木) 00:39:06.52ID:???組み込みじゃなければそんな気にするこたぁ、ねえと思うぜ。
1000とか使ってる訳じゃないんだろ?
変数とは違うが、正規表現でどのくらいまで普通に処理できるのかを、DURONで2Gのメモリ積んだLinuxで試してみた事があった。
3万行くらいで30秒だったかな。
条件によって違うとは思うがまぁ、一昔前のPCでもかなり処理できるってーこった。
0902nobodyさん
2011/06/30(木) 01:36:26.21ID:l/7mI36x受け取った入力値をhtmlに出力→htmlspecialchars
受け取った入力値をセッションやクッキーやhiddenやurlに出力→urlencodeまたはbase64_encode
って感じですか?
一番迷うのはhiddenはhtmlだからhtmlspecialcharsのほうがいいんだろうか?とか思っちゃいますが
具体的にどう使い分ければいいか目安ありますか?
0903nobodyさん
2011/06/30(木) 02:43:42.72ID:???セッション変数の中身は外から見えないからencode必要ないけどな。
0905902
2011/06/30(木) 09:14:27.73ID:l/7mI36xレス遅くなりました
参考になります
ありがとうございます
0906nobodyさん
2011/06/30(木) 09:23:27.36ID:???何となく使い分けるもんじゃない。
必要な場所で必要なものを「使わなければいけない」ってだけ。
変に兼用しても意味不明なコードになる。
読ませたくないならちゃんと暗号化する。
0907nobodyさん
2011/06/30(木) 09:41:08.87ID:???エスケープしてから出力しろとかどっかに書いてたな
どう考えても無駄だから俺はやってないけど
0908nobodyさん
2011/06/30(木) 09:43:46.75ID:qcWaMuTT【a.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
</div>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
というファイルを
a</div>
</div>
</body>
</html>
という風に出力したいと思い、下記のように書いたのですがうまくいきません
a.htmlに改行が含まれているせいだと思ったのですが
公式マニュアルのpreg_replaceの項には
"デフォルトで、PCRE は、検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 "
とあり、よくわからなくなりました。
0909nobodyさん
2011/06/30(木) 09:44:29.74ID:qcWaMuTTfunction replace(){
$str = file_get_contents("./a.html");
$rep = preg_replace('/.*<div class=\"a\">/',"",$str);
echo $rep;
}
↑これだと
<html>
<body>
</div>
</body>
</html>
とechoされます
0913nobodyさん
2011/06/30(木) 11:14:21.45ID:???いじってなければ標準の128MBだと思うけど
共有サーバだとその割り当てられたメモリを共有するからメモリミットを極限まで長寝て実験しないと意味ないんだよね
0914nobodyさん
2011/06/30(木) 11:19:56.33ID:qcWaMuTTありがとうございます
preg_replaceですが、容量の大きなhtmlファイル(491KB)では動作しなかったのですが
replace.php
function replace(){
}
これはPHPのメモリ割り当て量の設定が必要ということですか?
0915nobodyさん
2011/06/30(木) 11:25:05.55ID:qcWaMuTTすみません、途中で書きこんでしまいました
b.html ←491KBを、replace.phpで処理
【replace.php】xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<?php
function replace(){
$str = file_get_contents("./b.html");
$rep = preg_replace('/.*<div class=\"a\">/s',"",$str);
echo $rep;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<title>replace</title>
</head>
<body>
<?php replace(); ?>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
0916nobodyさん
2011/06/30(木) 11:25:54.68ID:???}
関数に何も定義されてないじゃん・・・・
0917nobodyさん
2011/06/30(木) 11:26:42.55ID:???0918nobodyさん
2011/06/30(木) 11:28:33.73ID:qcWaMuTT<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<title>replace</title>
</head>
<body>
</body>
</html>
0920nobodyさん
2011/06/30(木) 11:46:23.32ID:qcWaMuTT何を使うのがおすすめか教えてくださると助かります
>>919
【a.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
↑のhtmlなら>>915のreplace.phpでちゃんとechoされるのですが、
【b.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
中略
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
↑このhtmlではechoされません(このb.htmlは個人情報の含まれるファイルなので晒せません;すみません)
容量が491Kbもあるからメモリの問題なのかなと思ったのです
メモリの問題でエラーになった場合何もメッセージは出力されないのでしょうか?
0921nobodyさん
2011/06/30(木) 11:48:35.24ID:???ob_get_contentsしてもソースが取得できないんだ
<?php
ob_start();
include('./test.html');
$bufferHTML = ob_get_contents();
ob_end_clean();
var_dump($bufferHTML);
?>
色々試した結果わかったことは、
「test.html」に以下のようなxml宣言があると
<?xml version="1.0" encoding="Shift_JIS"?>
だめで、これを消すと正常に取得できる。
ちなみに「test.html」をUTF-8に変換して、
宣言の箇所をUTF-8にしてもだめだた
やはり宣言があるとだめみたいだ。
なんぞこれ?
0923nobodyさん
2011/06/30(木) 12:00:00.82ID:???【OS名】CentOS 5.3
【PHPのバージョン】5.16
【連携ソフトウェア】-
【質問内容】>>921
0924nobodyさん
2011/06/30(木) 12:02:58.99ID:???0925nobodyさん
2011/06/30(木) 14:20:36.94ID:???0926nobodyさん
2011/06/30(木) 17:58:12.43ID:OdRUAQ84class hoge{
private static $db;
public static function init($str){
$this->db=$str;
pirnt($this->db);
}
}
hoge::init("テスト");
以上のコードを実行しても、$thisがねーよとエラーが返ってきてしまいます
「::」を使ってアクセスする場合、最初にアクセスした時orコンパイル時に初期化関数が実行、プロパティを定義させるにはどうしたらよいのでしょうか
$hoge=new hoge();
とすればスマートなのですが、一度しか使わないhogeクラスのインスタンスをわざわざ定義するのもスマートではないと思って気が引けています
0927。 ◆oDupeixhZv52
2011/06/30(木) 18:23:41.88ID:???0928nobodyさん
2011/06/30(木) 18:37:41.74ID:OdRUAQ840931nobodyさん
2011/06/30(木) 23:19:24.77ID:???0932nobodyさん
2011/07/01(金) 00:52:39.22ID:???わからないから質問しているんです
質問を質問で返すのはマナー違反ではないでしょうか
それと質問ならIDを出してください
0933nobodyさん
2011/07/01(金) 00:54:21.42ID:???0934nobodyさん
2011/07/01(金) 03:46:57.51ID:???0935nobodyさん
2011/07/01(金) 04:17:23.29ID:???腹立つな
0936nobodyさん
2011/07/01(金) 04:37:03.65ID:???それを聞いてるの
0937nobodyさん
2011/07/01(金) 06:37:44.97ID:???0938nobodyさん
2011/07/01(金) 07:31:49.27ID:???0939nobodyさん
2011/07/01(金) 09:13:54.77ID:???素人が$hoge=new hoge();をスマートと思い込んでる理由を説明してもらわないと回答に困るから
0941nobodyさん
2011/07/01(金) 11:47:02.75ID:???次の方どうぞ
0942nobodyさん
2011/07/01(金) 18:31:21.43ID:???& #876;みたいな形に変換する方法ってありますか?
0943nobodyさん
2011/07/01(金) 18:31:34.87ID:LN8vUPfI0944nobodyさん
2011/07/01(金) 18:45:36.01ID:f1cCs/uIheader('Cache-Control: no-cache');
header('Pragma: no-cache');
キャッシュを無効っていまいちどういうことかわからないのですが、
上記のヘッダーを入れたページにアクセス(ローカルのApacheサーバ)
ブラウザを閉じる(Apacheサーバを停止する)
ブラウザを開いて再度アクセスする(サーバが見つからないのでページ読み込みエラー)
とここまではいいのですが、
このエラーページのソースを表示すると、
最初のページのソースが出ます。(使用ブラウザはFirefoxです)
Firefoxの問題なのかもしれませんが、キャッシュを無効って、
こういうソースをクライアントにとっておかないための処理ではないのでしょうか?
0947nobodyさん
2011/07/01(金) 23:11:13.79ID:???0948nobodyさん
2011/07/02(土) 02:43:30.08ID:???サーバーが落ちてる時にエラーでてソース表示でキャッシュがでるのは仕様
0949nobodyさん
2011/07/02(土) 03:35:54.12ID:U9fkTnQuこの場合やはり毎回count関数が実行されて多少遅くなりますか?
for ($i = 0; $i < count($x); $i++)
$n = count($x);
for ($i = 0; $i < $n; $i++)
0951nobodyさん
2011/07/02(土) 04:42:20.39ID:???散々既出だが・・・
http://php.net/manual/ja/function.count.php#46542
> When running loops with count conditions, the code runs faster
> if you first assign the count() value to a variable and use that
> (instead of using count() directly in a loop condition.
> As you can see, the second method (which doesnt use count() directly
> in the loop) is faster than the first method (which uses count() directly
> in the loop).
つーことで結論は出てるよ。
PHPのコンパイラがどの程度最適化してくれるのか知らんけど
後者の方が早いのは想像に難くない。
0952nobodyさん
2011/07/02(土) 04:58:26.18ID:U9fkTnQu計測方法がわからなかったのですが
今後は試してみたいと思います。
>>951
大変助かりました。ありがとうこざいますm(__)m
レス数が950を超えています。1000を超えると書き込みができなくなります。