【PHP】下らねぇ質問はここに書き込みやがれ 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/25(土) 22:11:08ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0424nobodyさん
2007/08/31(金) 16:31:10ID:???他の言語一つでもやったことあればPHPはかなり入りやすいとおもうけどな。
0425nobodyさん
2007/08/31(金) 16:32:26ID:???環境なんてレンタルサーバ月150円だせばどんだけでもうごかせるし。
0426nobodyさん
2007/08/31(金) 16:32:44ID:hmrJM+EB0427nobodyさん
2007/08/31(金) 16:33:21ID:???その質問よくあるけど、Smartyのレスはないよ。
Smartyなら、今まで何回も案件こなしているし、
カスタマイズもしているから、俺に聞けば分からないことはない。
0429nobodyさん
2007/08/31(金) 16:35:03ID:???PHP+MySQL+PEARがある程度理解できてきたのでSmaryでも勉強してみようかなと・・・
Smartyスレ立てたらたたかれるのかな・・・
0430nobodyさん
2007/08/31(金) 16:35:12ID:icDPlmBNactionscript
とXHTML.HTMLかじった程度
http://arazikai.lxl.jp/index.xhtml
拡張子がxhtmlには訳がある。
携帯サイト。
じゃ
0431nobodyさん
2007/08/31(金) 16:37:01ID:icDPlmBN余計なお世話ですw
0432nobodyさん
2007/08/31(金) 16:39:57ID:QupiSU+k違った画面がでるんですが、これは何でしょうか?
http://www.nya-taloda.jpn.org/2MB/src/mamitasu10627.jpg
0433nobodyさん
2007/08/31(金) 16:41:35ID:QupiSU+kよく分からないけど、インストールの際のオプションとかどうしたの。
通常は、phpinfo()で出力されるはずだけど。
あとは、文法的にエラーってない?
0434nobodyさん
2007/08/31(金) 16:42:34ID:???何がだよwww
0436nobodyさん
2007/08/31(金) 16:52:48ID:???0437nobodyさん
2007/08/31(金) 17:07:35ID:hmrJM+EBお前の醜き心を現した写真か
0438nobodyさん
2007/08/31(金) 17:15:07ID:???0439nobodyさん
2007/08/31(金) 17:16:08ID:???0440nobodyさん
2007/08/31(金) 17:19:40ID:???<?
1+1=
?>
Parse error: parse error, unexpected '=' in C:\www\test.php on line 2
0442nobodyさん
2007/08/31(金) 17:22:02ID:???Google 電卓機能について
このキーワードを含むドキュメントを検索する 1+1= .
0443nobodyさん
2007/08/31(金) 18:07:01ID:???0444nobodyさん
2007/08/31(金) 18:37:06ID:???0445nobodyさん
2007/08/31(金) 18:43:59ID:???大学 医学部
0446nobodyさん
2007/08/31(金) 18:45:19ID:???・・・ウソだけど
0447nobodyさん
2007/08/31(金) 19:16:21ID:???0448nobodyさん
2007/08/31(金) 19:25:08ID:???0449nobodyさん
2007/08/31(金) 19:50:12ID:???0450nobodyさん
2007/08/31(金) 19:59:37ID:???0451nobodyさん
2007/08/31(金) 20:05:54ID:???0452nobodyさん
2007/08/31(金) 20:31:05ID:???0453nobodyさん
2007/08/31(金) 20:32:13ID:???0454nobodyさん
2007/08/31(金) 20:33:12ID:FU/+7uRQこれをhtmlspecialchars使ってもサニタイズされず、困っています。
どうしたらよいのでしょうか?
0455nobodyさん
2007/08/31(金) 20:34:31ID:???0456nobodyさん
2007/08/31(金) 20:34:52ID:???0458454
2007/08/31(金) 20:43:09ID:???htmlspecialchars($_POST["name"], ENT_QUOTES);
0459nobodyさん
2007/08/31(金) 20:46:37ID:???0460nobodyさん
2007/08/31(金) 20:54:31ID:???0462nobodyさん
2007/08/31(金) 22:39:41ID:7jATCbIMググってもわかりやすい回答に出会えませんでした
よろしくお願いします
0463nobodyさん
2007/08/31(金) 23:44:14ID:???例) hoge( &$ss , $int ){
0464463
2007/08/31(金) 23:47:28ID:???FAQにありましたね・・
0465nobodyさん
2007/09/01(土) 00:22:33ID:2rZ2o9PEどうすれば良いのでしょうか?
0466nobodyさん
2007/09/01(土) 00:26:12ID:???英文か日本語か、又はどこかの言語かによって違う。
活用形がある場合とかも考えて揺らぎ除去するとか考えるともっと複雑。
0467nobodyさん
2007/09/01(土) 00:29:49ID:???レスありがとうございます
kakasiなどを利用すればきちんと出来るのかもしれませんが
今回の場合は「ゆらぎなし」の「日本語」を想定しています
言葉足らずで申し訳ありません
0468nobodyさん
2007/09/01(土) 00:36:28ID:???日本語を単語レベルで集計するのにphpの力だけでやろうとしているの??
形態素解析器から出力したものを集計する方が早いだろ?
0469nobodyさん
2007/09/01(土) 00:48:43ID:2rZ2o9PEもっと簡単なものだと思っていましたが、私がやろうとしていることはそんなに面倒なことなのでしょうか?
0470nobodyさん
2007/09/01(土) 00:50:52ID:???単語レベルなら、自然言語処理の知識がないと無理。
0472nobodyさん
2007/09/01(土) 01:38:21ID:???0473nobodyさん
2007/09/01(土) 01:48:09ID:???/レ' |,, -‐''´∠-‐'´,∠-z_,.
_l ´ ∠__
、) / ∠___
〉 _l_.∠..__/ -‐<_
〉´:::7:。'´ ̄`'ー-、_,. - -‐<__
__l;;;;;;;;|;゚_......,,∠@ `ヽ._,..- -<_ よんだ?
,-r―‐‐''''´| ト、`i/'´..三.ヾ. \ Z´ ̄`''ー-、
λ| | ト、_|、 ´、_゚_,` iヽ. 。゚/Y'T´ |ト、
/人 | | |:::::ト、ー--‐'⌒'‐`ー、∠イ | | K}
く`'´::::::\ 、、、、ゝヽ;:::::\ /:::ノ ノ ........ ノ人}
/`:::::::::::;;;;;〉、 ゛゛゛。`X'、::::::`::、_____,.::´::::;:'X´o"""""__./∩::/7
〉:::::::::::;;;;;;;;;イ`ー--‐'^'、ヽ;::::::::::::::::::::::::ノノ`'ー-、...____/;;::::H/./
ノ:::::::::::::::;;;;;イ=〒〒=i `'''ー===i===‐'''´r=〒〒=iト;;;;;;;ハつ /7-,
/::::::::::::::::::;;;フ}{==+=+==}} || {{=+==+==}{;;;;;;;i,::::`iー'-^j
0474nobodyさん
2007/09/01(土) 02:12:32ID:???つづきどうぞ↓
0475nobodyさん
2007/09/01(土) 02:22:08ID:Ym+xGTAWそんなの関係ねぇ!
つづきどうぞ↓
0476nobodyさん
2007/09/01(土) 02:24:24ID:KtjHm3MJimgでphpファイルを指定すると画像表示不可能を表すマーク(×など)が表示されて見栄えが悪くなってしまいます
これなんとか非表示にできませんか?
0477nobodyさん
2007/09/01(土) 02:27:28ID:???0478nobodyさん
2007/09/01(土) 02:31:17ID:???ってだれかのってくれよ
0479nobodyさん
2007/09/01(土) 02:44:40ID:KtjHm3MJ無能ども死んでください
0480nobodyさん
2007/09/01(土) 03:23:06ID:???>>250
ID:icDPlmBN が言ってるやつを試しにwhileとfreadで書いてみたんですが、
2バイト文字が境目で切られて、文字化けしてしまいました。
これの対応策を教えてくれませんか? 残念ながら見当が付きません。
まあ「区切ってないテキストを○○文字ずつ出力」という事は多分しないですけど。
0481nobodyさん
2007/09/01(土) 03:28:23ID:???0482nobodyさん
2007/09/01(土) 03:57:33ID:???自演じゃないよ、別の馬鹿だよ。
>>330 さん見てて、とりあえずこう書いた。
$fh=fopen("test.txt","r");
while($str=fread($fh,1024)){
print "<p>".htmlspecialchars($str,ENT_QUOTES)."</p>\n";
}
実行したら、境目の文字が化けた。
↑のやり方で、境目の2バイト文字の片割れと1バイト文字の判別法がわからない。
0483480,482
2007/09/01(土) 03:59:01ID:pRNvjrEd0484nobodyさん
2007/09/01(土) 06:28:53ID:r9rVpK15.htaccessに
AddHandler myphp-script .html
Action myphp-script /php.cgi
と記述してアップしたところ、○○.phpのファイルはそのまま読めますが、
○○.htmlのファイルは500Internal Server Errorになってしまいました。
php拡張子のものが読み込めるということはパーミッションの設定ミスというわけでもなさそうですし
(念のためすべて755にしました。)
実は昨日までは普通に動いていたものをミスで.htaccessを削除してしまっため、もう一度アップしたらこの現象となってしまいました。
どなたかわからないでしょうか?
さくら以外のサーバーでは「AddType application/x-httpd-php .html」だけでいけたのですが、さくらだけはどうにも。
0485nobodyさん
2007/09/01(土) 06:52:57ID:???http://www.google.co.jp/search?q=500Internal+Server+Error&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&client=firefox-a
0486484
2007/09/01(土) 08:06:30ID:r9rVpK15どもです。
検索ワードに.htaccessも加えてあちこち探して、
telnet直接乗り込みviで作り直したらうまくいったとあったので、
やったらうまく行きました。
たぶん改行コードかFTPのときのエラーかと思います。
どうもでした!
0487nobodyさん
2007/09/01(土) 12:49:26ID:oiOJU//q$_POST[self]だったかと思ったら違いました
0488nobodyさん
2007/09/01(土) 12:52:13ID:???0489488
2007/09/01(土) 12:57:16ID:???0490nobodyさん
2007/09/01(土) 13:29:56ID:WrlGqUhdid出してなくてすいません
0492nobodyさん
2007/09/01(土) 14:51:25ID:???1文字の文字列にする=1バイトで済む
こう考えると、インデックスは文字にした方がよいのでしょうか?
0493nobodyさん
2007/09/01(土) 15:56:15ID:NfVJpLYy'hoge\'や"hoge\"だと、クオートがエスケープされてしまうのでエラーになります
'hoge'."\\"
とか書くしかないですか?
もっといい方法あれば教えて下さい
0494nobodyさん
2007/09/01(土) 16:01:14ID:???0496nobodyさん
2007/09/01(土) 16:41:48ID:???$_POSTはクライアントから渡されるパラメータじゃん。
システム系の情報は$_SERVERだよ。
ttp://www.php.net/manual/ja/reserved.variables.php
↑ブックマークするか保存しておくといい。
0497nobodyさん
2007/09/01(土) 16:45:02ID:???1行読み込む前に現在のファイルポインター位置をftell()で保存しておいて
戻したいときはそのデータをfseek()でセット。
元の位置を保存しないでやるとしたらfseek()で現在位置を1文字ずつ
前にずらしながら読み込んでいって、改行文字を探しだすとかしないと
無理なんじゃないかな。
0498nobodyさん
2007/09/01(土) 16:49:48ID:???読み込んだデータの末尾1文字の文字コードを調べて
プリンタブルコードの最後の文字よりコードが大きい場合は
切り捨てて、次のファイル読み込み位置を1バイト手前に設定、
って感じじゃないのかな。
SJISで半角カナを含む場合は該当文字コードの範囲に気をつけないといかんけど。
0499nobodyさん
2007/09/01(土) 17:02:07ID:???時間の無駄だよ。
この辺が、Javaと違ってphpの言語仕様が糞なところだが、
どれでも使えるから使っていいじゃなくて、
何が使いやすいかを考えて文字コードを選択しないと、
あとで余計な時間を費やすことになるぞ。
趣味で時間がありあまっているなら、勝手にすればいいと思うが。
0500nobodyさん
2007/09/01(土) 17:37:28ID:???0501nobodyさん
2007/09/01(土) 17:44:48ID:HTX0SqTDフォームから受け取った値を出力する時、
$_POST["name"]というようにしていますか?それとも変数に変換して
$nameとして出力していますか?
郵便番号の書式を変換したりするとき、$zipというように変数に代入していますが、
それ以外は$_POSTのまま出力しています。こちらの方がセキュリティ的に
良いのかな?っと思いまして。皆さんの場合を教えて下さい。
0502nobodyさん
2007/09/01(土) 18:22:34ID:???・同じ内容の変数が複数あるのは無駄
・スーパーグローバル変数である(関数内でglobal宣言無しにアクセス可能)
ってな理由でそのまま使ってるな。
0503nobodyさん
2007/09/01(土) 18:30:27ID:epTGamb+値を出力するときは常にhtmlspecialcharsを通す。
htmlspecialcharsを通された値が代入されていることが分かる変数であれば、 そのまま出力する。
echo $_POST['name']; // これは危険
echo htmlspecialchars($_POST['name'], ENT_QUOTES); // これは安全
echo $safeName; // htmlspecialcharsに通された値を 「safe」 が付く変数に代入するという規則が決めてあれば、 これは安全
参照:
間違ったコードは間違って見えるようにする
(http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B)
0504nobodyさん
2007/09/01(土) 18:34:42ID:???0505nobodyさん
2007/09/01(土) 18:52:25ID:???元々のデータをそのまま使うなら$_POSTのまま、
データを様々加工する場合は別途変数に入れて、
としてる。
そのまま扱うのに別の変数に入れるってのは意味が分からん。
加工がある場合は元データを消失する構造にしてると
後の仕様変更で困ることが多いのでこれは別変数とする。
セキュリティはDB登録時やHTML出力時にそれぞれに合った形で
逐次エスケープするわけだから、別変数に入れる必要は全くない。
0506nobodyさん
2007/09/01(土) 19:49:34ID:Ca6l/pzb無駄でもなんでも変数ぐらいわかりやすく使えよ。さほどメモリ減るもんじゃなし。
自分の言い訳を考えるに、 読み込み→加工→出力 の一般的プロセスを分かりやすくするため
最初にリードしてる気分でローカル変数に叩き込んでる、つーかんじなのかもしれん。
グローバル変数で受け取る?つーかグローバル変数使うなんて阿呆のすることだと思うが?
0507501
2007/09/01(土) 20:12:35ID:???それでふと「他の変数に入れた方が、わかりやすいんじゃないか?」っと
思って、他の方はどうしているか気になった次第です。
とりあえずこれまで通り、加工しない場合は$_POSTのまま出力し、
加工する場合は、別途変数に入れる出力方法で行きます。
ちなみにhtmlspecialcharsは常にやっています。
0509nobodyさん
2007/09/01(土) 20:29:33ID:???プログラムを瞬時に理解できてミスもしない神プログラマーの>>508さんには間違っても勝てませんて。
0510nobodyさん
2007/09/01(土) 20:44:02ID:???そのローカル化したという変数がどこで加工されて出力されてるか把握できるのもすごい。
というか、ローカルって言うけどPHPの先頭がいきなりmain()とかの関数呼び出しになってるの?
関数内ならともかく、PHPのメイン処理で変数にぶち込んだらそれグローバル変数だと思うんだけど。
0511nobodyさん
2007/09/01(土) 20:47:14ID:???全く使わないというのは無理。
0512nobodyさん
2007/09/01(土) 21:00:50ID:???少なくとも俺はPHPはじめてglobal宣言はサンプル以外で書いたことはない。
全部関数に引数与えて処理してるし、スコープ考えて処理してる。
main()て書いて、いきなりスコープかましてるわけではないけど、
入力したデータはなにで、どこでしてるか
加工はどこでしているか
出力してるとこはどこか
ぐらいは簡単になるまで関数化、引数として何が必要か明確にしてるけど。
つか、そうそうソースの中のルートに書いた変数を関数内で扱う事に抵抗が無いわけ?
それじゃ簡単なものは作れても後々こまってくるとおもうんだが?
0513nobodyさん
2007/09/01(土) 21:26:07ID:???関数に引数として渡すこと=ローカル変数化、って言ってるの?
だったらこっちも同じだよ。
ってかふつーそんなの「とりあえず変数に叩き込む」って言わないだろう。
0514506,509,512
2007/09/01(土) 21:38:22ID:???ほぼオレの書いたソースはこれに近い形になってる(してる)んだが。
やっぱオレ間違ってる?なんか説明まちがった?よろしくw
<?php
//入力
$a=$_POST[〜]; //←変数に叩き込み
//処理
$b=process($a);
//出力
output($b);
function process($aa){
〜
}
function output($ab){
〜
}
?>
0515nobodyさん
2007/09/01(土) 21:42:29ID:???確かに「とりあえず”グローバル変数に”叩き込んでる」のね。
> $a=$_POST[〜]; //←変数に叩き込み
> $b=process($a);
…これって意味あるのか?($a代入)
セキュリティ以前に開発ミスを防ぐって意味でも。
セキュリティ的な意味合いでは「それが外部から来たデータであること」を
常に意識できる形になってないと極めて危険、というのが俺の経験則。
0516nobodyさん
2007/09/01(土) 21:45:27ID:???global宣言したものをグローバル変数というのではなく、
グローバルスコープの変数をグローバル変数というのだよ。
$_POSTのままの方がユーザー入力だと解りやすいと思うけどね。
0517nobodyさん
2007/09/01(土) 21:54:34ID:???もちろんprocess関数内では「グローバルとしては扱ってない」よ。
$aが外からきた変数の明示 ($a=_POST[〜];)と
加工部内でその$aが使われている証明($b=process($a);)
があるからいいんじゃね?
もしprocess内で$_POST[]がつかわれたらそれこそどこの環境の
どのデータとってきてるんだってことになるとおもうが?
どのデータを処理に使ってるか処理順序で明示してやるほうが分かりやすかろう
とおもってこうしてるわけだが。
>>516 んではサンプルのprocess内でも$_POSTで値とってきたほうが分かりやすいのか?
0518nobodyさん
2007/09/01(土) 22:00:47ID:???0519nobodyさん
2007/09/01(土) 22:03:40ID:???もし$_POSTをprocessにかける前に加工する必要性がでたら・・・・
おまえらソース書き換え大変だろwwwww
0520nobodyさん
2007/09/01(土) 22:10:14ID:???なんで関数内からグローバル変数を参照することを前提に書いているのか謎だが、
>>501が質問したのは$a=$_POST[〜];が必要かどうかってことでしょ。
>>502の直接参照出来るってのは利点として挙げただけでそうしろってことではないでしょ。
それに関数内からグローバル変数を参照することはほとんどないといってもケースバイケースだし。
0521nobodyさん
2007/09/01(土) 22:14:31ID:qAbTQU9wこのレスに来て、俺にも間違えが生じることがあることに気付かせてくれた。
悔しいけど、ありがとう。
0522グローバルは馬鹿っていってごめんなさい。とはいうものの
2007/09/01(土) 22:28:54ID:???> なんで関数内からグローバル変数を参照することを前提に書いているのか謎だが、
ああ、これはオレのグローバル変数の取り違え。正直すまんかった。
わざわざスーパーグローバルと同じ動きさせるために global $a; $a=$_POST[]なんてやんのか?
とかおもったんでアホか!っておもって書いた^^;
> >>501が質問したのは$a=$_POST[〜];が必要かどうかってことでしょ。
>>519で論破でいいか?
> >>502の直接参照出来るってのは利点として挙げただけでそうしろってことではないでしょ。
べつにおれもそうしろとはいってないよ。アホだとはいってしまったけど。^^;
プログラムはうごきゃいいんだよ。保守性なんて保守する必要なければ必要ないしね。
でも分かりやすく、ミスなく、とかおもったら俺の経験則でこうなったが。
> それに関数内からグローバル変数を参照することはほとんどないといってもケースバイケースだし。
ケースがないわけないじゃない。globalが用意されてんだから。
でも明示してないものを関数内で入力として使う危険性のほうがおれは経験則で怖いんで俺は明示するよ?
というかんじかな。
>>521 >>519で論破でOK?
0523nobodyさん
2007/09/01(土) 22:33:07ID:???■ このスレッドは過去ログ倉庫に格納されています