【PHP】下らねぇ質問はID出して書き込みやがれ 81
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2009/02/18(水) 21:09:16ID:xNLzAD7T過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0859nobodyさん
2009/03/05(木) 11:50:35ID:???0860nobodyさん
2009/03/05(木) 11:51:59ID:???どっかの既存スクリプトのソースでも見てみればいいんでないかね
0861857
2009/03/05(木) 11:55:26ID:???WEBサービスなどの既存スクリプトを見ると
<script type="text/javascript" src="アクセス解析のURL">
となっているだけ、それでどうやって取得しているのか予測できないんです。。
0862nobodyさん
2009/03/05(木) 11:59:23ID:???0864nobodyさん
2009/03/05(木) 12:36:30ID:???0865857
2009/03/05(木) 12:37:02ID:???処理を予測すると、
Javascriptでアクセス情報を取得→PHPで受け取って→DBなどに保存
だと思います。
Javascriptでアクセス情報を取得する方法はわかりますが、
PHPに渡す方法がわかりません。AJAXで通信するというのは聞いたことありますが。。
かなり規模が大きくなりそうなので、別の方法を考えます。
0866nobodyさん
2009/03/05(木) 12:40:39ID:???0867nobodyさん
2009/03/05(木) 12:44:57ID:Ai8YQiii上記でアクセスし$_SERVER['PATH_INFO']を使って以下のようにします
$path1 // testを代入
$path2 //100を代入
1.この値をhtmlに出力するときにhtmlspecialcharsをするべきでしょうか?
2.この値を<a href="get.html?mode=<?php echo $path1;?>"?>のようにソースに書くときもhtmlspecialcharsは必要でしょうか?
3.この値を利用して$file=file($path1.".log") or die("エラー");とするとき、$path1をhtmlspecialcharsをするべきでしょうか?
0869nobodyさん
2009/03/05(木) 13:13:08ID:7kExiJxs$file=file("kokugo.log");
もしファイルが存在しなかった場合ワーニングになるのですが
file関数で開く前にkokugo.logが存在して読み込み可能かチェックしたほうがいいのでしょうか?
0870nobodyさん
2009/03/05(木) 13:16:09ID:???上2つは XSSになりえる。
html..でおk
残り1つは DirectoryTraserval になりえる。
これは html.. じゃ防げない。
パスに関する文字を消す処理を挟むべき。
0871870
2009/03/05(木) 13:18:10ID:???日本語だと ディレクトリ遡り攻撃ね。
0872nobodyさん
2009/03/05(木) 13:39:41ID:2sUk8Kdmhttp://www.example.com/index.php/../test/100とすると
ページがNot Foundになります
以下のようにしてみたのですがこれは対策になってますでしょうか?
$path = split("/",$_SERVER['PATH_INFO']);
print_r($path);
0873867
2009/03/05(木) 13:40:24ID:2sUk8Kdmすみません
0874nobodyさん
2009/03/05(木) 13:49:36ID:???ヒアドキュメントはSQLを書くためにあるものじゃないのかと
0875nobodyさん
2009/03/05(木) 14:16:58ID:???Call to a member function execute() on a non-object
とエラーが出ます。
クエリミスや引数ミスでこのエラーが出るのですが、
実行前にデバッグしたいのですが、クエリを参照する方法がわかりません。
$sth->execute($data);の段階でエラーが出るのですが、
それ以前にダンプしてもクエリが作成されてなく、確認ができません。
何か方法はないでしょうか
0876nobodyさん
2009/03/05(木) 14:17:30ID:???0877875
2009/03/05(木) 14:18:27ID:u8y4hmKR0878nobodyさん
2009/03/05(木) 14:35:56ID:UILw4QgF$kansu = hello();の時点で実行されてしまいます
どのようにしたらよろしいでしょうか?
function hello() {return "こんにちは";}
$kansu = hello();
〜他の処理〜
echo $kansu;
0881nobodyさん
2009/03/05(木) 14:58:09ID:???0882nobodyさん
2009/03/05(木) 16:47:02ID:hzERq96Aという、先輩が書いたコードがあるんですけど、これって
if ($var[0] != '#') { ... }
と等価でしょうか。
なにか違う点がありましたら教えてください。
0883nobodyさん
2009/03/05(木) 16:55:02ID:???下は配列の一つ目を取り出してる
意味は全く違う
0884nobodyさん
2009/03/05(木) 16:57:21ID:???$var = 123;
echo substr($var,0,1); #=> 1
echo $var[0]; #=> NULL
0886nobodyさん
2009/03/05(木) 16:58:05ID:???$varが配列や、ダブルバイトなら使えん。
素人はこれだから困るという先輩の顔が目に浮かぶw
0887nobodyさん
2009/03/05(木) 17:01:58ID:???0888nobodyさん
2009/03/05(木) 17:03:54ID:???0889nobodyさん
2009/03/05(木) 17:25:19ID:???0890nobodyさん
2009/03/05(木) 17:37:55ID:???0893nobodyさん
2009/03/05(木) 18:36:23ID:0C8jTvwAよろしくお願いします
0894nobodyさん
2009/03/05(木) 18:37:50ID:???0895nobodyさん
2009/03/05(木) 18:38:39ID:???0896nobodyさん
2009/03/05(木) 19:11:16ID:???0897nobodyさん
2009/03/05(木) 19:46:42ID:???substr() は mbstring.func_overload に影響を受ける
http://www.php.net/manual/ja/mbstring.overload.php
オフセット参照は変数の型に影響を受ける
http://www.php.net/manual/ja/language.types.string.php#language.types.string.substr
0898882
2009/03/05(木) 19:55:19ID:???ここでは$varは配列ではなく文字列です。
>>884
なるほど、$varが文字列以外の場合、substr() だと$varが自動的に文字列に変換されるわけですね。
参考になります。ありがとうございました。
>>885
おこるぐらいならもっとましなコード書いてください。
0899nobodyさん
2009/03/05(木) 19:57:58ID:???だったら、!is_string($var) ならexit()とか入れとけ。
ソースにないもんをエスパーできるかよw
にしたって、strposを使うケースだけどな。$var[0]とか狂ってる。
0901nobodyさん
2009/03/05(木) 20:29:27ID:???0902nobodyさん
2009/03/05(木) 20:33:26ID:???>>897を理解してる上で使う分には間違っちゃいない
$a = array(); $a[] = 1; は許すのに $a = ''; $a[1] = 'a'; は許さないとか
シンタックスシュガーを利用するしないはコーディング規約で決めるものだ
それにstrpos()は最悪文字列全体を見るまで処理を打ち切らないし
882をバカにできる奴が選ぶ手段じゃない
0904nobodyさん
2009/03/05(木) 20:41:26ID:???$str[0]は配列にも使える。
従って文字列へのアクセスならば、substrのほうが分かりやすい。
スレが軽く荒れたところを見ても、角括弧が混乱を招きやすい表記だという事は分かるだろ。
ちょっとコードの見た目がスッキリするとか、何ナノ秒処理が早くなるだとか、そんなメリットと引き換えにしていいレベルじゃない。
0905nobodyさん
2009/03/05(木) 21:11:52ID:???んなもん、strposが最適解だと思うだろjk
オライリの詳説正規表現の効率云々みたいに解説本でも欲しいところだなw
0907nobodyさん
2009/03/05(木) 21:24:16ID:???先輩乙
0908nobodyさん
2009/03/05(木) 21:27:44ID:Zs/6GWofそれともあくまでデバッグのみに使用しますか?
0909nobodyさん
2009/03/05(木) 21:28:33ID:???0910nobodyさん
2009/03/05(木) 21:43:17ID:l6IOt6/c配列についてなんですが、
$arr = $this -> fncName($aa);
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
で値を返し、ajaxでページに表示させると、何も表示されないのに、
$arr = $this -> fncName($aa);
$appArr['配列名'] = '';
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
と、$arr['配列名'] = '';のように初期化した値だけページに反映されるって状況の場合、
一体何が問題なのでしょうか?
当方PHP5.2.9をapache2.2.11を使用しております。
よろしくお願いいたします。
0915nobodyさん
2009/03/05(木) 22:42:02ID:l6IOt6/cそれしても、入力されません。
具体的に配列のkeyを直接入力しなければ入らないのです。
また、$arr['key']には、htmlの要素がいっぱい入っています
(<span>や<div><form>など)
それが入っていない場合は、普通に表示されます。
なぜなんでしょ?
0916nobodyさん
2009/03/05(木) 22:54:40ID:???$appArr = array();
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
↑でダメならvar_dumpかprint_rしながら
$appArrに求めてる値が入ってるか確認してみた方がいいかも。
0917nobodyさん
2009/03/05(木) 22:57:16ID:???$arrが空っぽ または $this->fncName2($val)が値を返さない
というか後者は $this->fncName2($key) じゃなくていいの?
0918nobodyさん
2009/03/05(木) 23:26:53ID:???このスレだけが俺の生きがいだからかそらないでくれたまえ
0919nobodyさん
2009/03/05(木) 23:28:36ID:???解説サイトとかつくって人呼べばいいじゃん^^
0920nobodyさん
2009/03/05(木) 23:35:44ID:???0921nobodyさん
2009/03/06(金) 02:07:01ID:???もしくは、どの関数のことを言ってるのか想像つきますか?
0923nobodyさん
2009/03/06(金) 02:32:04ID:cF17z8wj<img src="img.php">
PHP側
header("Content-type: image/jpeg");
とだけしました。しかし、IE6で見ると×が表示されて
画像として読み込めていないようです。
これはどうしてでしょうか?
0924nobodyさん
2009/03/06(金) 02:36:58ID:???0925nobodyさん
2009/03/06(金) 02:42:04ID:cF17z8wj>>923のようにしているのですが、
やはりimgタグの方にwidth="1" height="1"と指定するか、
readfileで透明な1ピクセルのファイルを読み込む方法しかないのでしょうか?
0927nobodyさん
2009/03/06(金) 03:08:35ID:???0928nobodyさん
2009/03/06(金) 03:08:41ID:???0929nobodyさん
2009/03/06(金) 03:11:50ID:???自分たちの領域に引き込む宗教本みたいだったぜ
どんだけJavaの生産性が低いかの説明ばっかり
0930nobodyさん
2009/03/06(金) 03:45:28ID:???ぐぐったらまさにそれっぽいんですが、関数の中身(文字列の結合、分解)とかにまで触れてた記事は無かったでしょうか?
0931nobodyさん
2009/03/06(金) 04:01:35ID:???宗教本っていうか、
rubyの作者自体がモルモン教徒だから。
(1)rubyをやらせる
↓
(2)モルモンに入信させる
↓
(3)ニュースキン、ニューウェイズをやらせる
こういうビジネスモデルだから。
0932nobodyさん
2009/03/06(金) 05:36:30ID:???<?php
echo exec('notepad.exe');
?>
これを実行するとメモ帳が起動する。
0933nobodyさん
2009/03/06(金) 05:40:42ID:6cUsAerc2ch かつ php かどうかを比較するにはこのようにしていいのでしょうか?
if ( $a == '2ch' && $sub != ''php'){
print "2chだけどphpスレではない";
}
0935nobodyさん
2009/03/06(金) 08:52:00ID:???>929
釣れませんね
0936nobodyさん
2009/03/06(金) 08:58:45ID:???というか事実だから釣りでも何でもないだろうけど
0937nobodyさん
2009/03/06(金) 09:03:29ID:???0938nobodyさん
2009/03/06(金) 09:05:57ID:???http://d.hatena.ne.jp/higayasuo/20080311/1205228639
0939nobodyさん
2009/03/06(金) 11:17:48ID:???0940nobodyさん
2009/03/06(金) 11:23:57ID:???それより、移るってどういうことよ。
おれはCだろうがPHPだろうが、適材適所で使い分けてるけど、
移ったらってことは、Cを捨てるのか、いや捨てられたのか。あ、そか。
きっとPHPも君を捨てるだろう。
0941nobodyさん
2009/03/06(金) 11:48:17ID:???0942nobodyさん
2009/03/06(金) 11:57:16ID:???0943nobodyさん
2009/03/06(金) 12:02:29ID:???0944nobodyさん
2009/03/06(金) 12:04:02ID:???面接官が言葉の端々で最近はRubyしか使わないを連呼してたので断ったわ
RoRで作っても後に痛い目に遭うのは確実だし
あんなメモリ食いまくる仕組みがなんで流行ってるのか理解に苦しむ
0945nobodyさん
2009/03/06(金) 14:03:24ID:???24時間つなぐぜ
http://irc.2ch.net/
#WEB制作板
0946nobodyさん
2009/03/06(金) 14:17:45ID:???0947nobodyさん
2009/03/06(金) 15:22:09ID:k96rJD9yclass keisan {
function tasizan($a,$b) {return $a+$b;}
function hikizan($a,$b) {return $a-$b;}
function kakezan($a,$b) {return $a*$b;}
function warizan($a,$b) {return $a/$b;}
}
$obj=new keisan;
$tasizan_kekka = $obj->tasizan(10+5);
$obj->kakezan($tasizan_kekka,20);
tasizan関数で足し算の結果をkakezan関数の$aに使いたいのですが
このような書き方でよろしいでしょうか?
もっと効率的・スマートな書き方がございましたらご教示お願いいたします。
0948nobodyさん
2009/03/06(金) 15:23:34ID:???0949nobodyさん
2009/03/06(金) 16:07:43ID:???計算結果を内部に持っても良いのなら、以下のようなのはどう?
class keisan {
private $result;
function __construct($a) {
$result = $a;
}
function tasizan($b) {
$this->result += $b;
retun $this;
}
function hikizan($b) {
$this->result -= $b;
return $this;
}
function kakezan($b) {
$this->result *= $b;
return $this;
}
function warizan($a,$b) {
$this->result /= $b;
return $this;
}
function kekka {
retun $this->result;
}
}
$obj=new keisan;
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
0950nobodyさん
2009/03/06(金) 16:10:52ID:???$obj=new keisan(10);
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
0951nobodyさん
2009/03/06(金) 16:21:58ID:ox3YTIPGFTPでいつも手動でディレクトリを作成してます
一つのディレクトリの中に10000ファイルためる場合、処理が遅くなりますか?
0952nobodyさん
2009/03/06(金) 16:23:10ID:???メソッドチェーン覚えました〜〜って香ばしい匂いが
0955nobodyさん
2009/03/06(金) 16:25:07ID:ox3YTIPGありがとうございます
手動で定期的にファイルを移動させます
0956nobodyさん
2009/03/06(金) 17:26:24ID:???ext3とかなら確実にアウトだ
0957nobodyさん
2009/03/06(金) 17:32:06ID:???いまどきlinuxでext3を教えてる教本があるから困る
いまはFATだろが
レス数が950を超えています。1000を超えると書き込みができなくなります。