トップページ⇒php
1001コメント312KB

【PHP】下らねぇ質問はここに書き込みやがれpart18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/03/15(水) 19:18:21ID:yiOrS10N
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/

前スレ【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/

過去スレは>>2-3あたり
0039nobodyさん2006/03/16(木) 12:38:13ID:???
>>37
エラーは関係なくて、純粋にこの違いを見分ける方法を知りたいんです。
0040nobodyさん2006/03/16(木) 12:48:21ID:???
>>39
get_define_vars()したのに、あるか否かとか。
0041nobodyさん2006/03/16(木) 12:51:59ID:???
>>38
確認小窓というのが、もしポップアップのことなら、ブラウザで無効にされてるかもよ
0042nobodyさん2006/03/16(木) 13:24:52ID:???
>>40
get_defined_vars() ですね。なるほど・・
0043nobodyさん2006/03/16(木) 13:57:03ID:???
はじめまして、php歴1日の者です。

test.php?mode=2
というURLにあるフォームで書き込んだとき
ログファイルには
「2,書き込んだ内容」
というように、modeの数字を頭に付けたいと思っています。

<?php
extract($_POST);
$cmtfile = "testcmt.txt";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$mode = $_POST["mode"];
} elseif ($_SERVER["REQUEST_METHOD"] == "GET") {
$mode = $_GET["mode"];
}
0044432006/03/16(木) 13:57:35ID:???
?>
<form method="post" action="<? echo $PHP_SELF; ?>">
<input name="cmt" type="text">
<input type="submit" value="submit">
</form>
<?php
if($cmt){
$cmt = htmlspecialchars ($cmt);
if(get_magic_quotes_gpc()){
$cmt = stripslashes($cmt);
}
$thisnum = $mode;
$dat = "$thisnum,$cmt\n";
$fp = fopen($cmtfile, "a");
fputs($fp,$dat);
0045432006/03/16(木) 13:58:53ID:???

fclose ($fp);
}
?>

これだと、testcmt.txtには
「,書き込んだ内容」
と、modeの数字が反映されません。

サンプルプログラムの貼り合せでお見苦しい点も多々ですが;
OSはWinXP,PHPVersionは5.1.2,AN HTTPD DAEMONです。
できるだけ小直しで解決できたらいいな><;
よろしくお願いします。
0046nobodyさん2006/03/16(木) 14:36:34ID:???
>>45
?以下は常に$_GET[ ]
0047nobodyさん2006/03/16(木) 14:41:42ID:???
>>45
レッツの古いスクリプトに影響された悪い見本そのものだな...

まずはextract()使わないで書き直してみ。あとGET/POSTメソッドを
それぞれの場合で流れを追って。
extract()使うなら使うでも構わないけど、それが何をやってるか理解した上で
駄目なところを直す。やってることが理解できれば、駄目なところも判るよ。
0048nobodyさん2006/03/16(木) 14:47:52ID:???
extractは絶対に禁止。バグとクラックの元。
$_REQUESTを使うと吉。
マジッククオートの\除去はスクリプトの先頭で。
"$thisnum,$cmt\n"は"${thisnum},${cmt}\n"とした方が見やすいしバグ防止になる。
fputsはLFを書き込むから、上の\nを消すかfwriteを使う。
$cmtが0だと書き込まれない。empty()を使う。

あと、error_reporting(E_ALL)
0049nobodyさん2006/03/16(木) 14:47:53ID:???
というか、
PHPにも問題はあるが、とりあえずhiddenでmodeを渡してやれば終わりだろ。
0050nobodyさん2006/03/16(木) 14:48:05ID:???
>>45
あと、$_POST["mode"]の値はどっから渡されるんだ?
0051432006/03/16(木) 14:49:37ID:???
>>46
キタ―――――(゜∀゜)―――――!!!
ありがとう
0052nobodyさん2006/03/16(木) 14:52:11ID:???
>>48
fputsはfwriteの単なるエイリアスじゃなかったけ?
http://jp.php.net/manual/ja/function.fputs.php
0053432006/03/16(木) 14:53:28ID:???
>>47-50
リロってなかった…ごめんなさい
もっと勉強して、皆様の仰ったことを理解できるようになります
ありがとう
0054nobodyさん2006/03/16(木) 17:46:32ID:???
>>41
完全にスレ違いなんだけど、便乗。
あれって、ポップアップ成功したか失敗したかの判定ってできるんだろうか?
0055nobodyさん2006/03/16(木) 18:04:59ID:???
>>41,54
ポップアップがダメならば
<div style="display:none;">だったものをdisplay:blockあたりにして確認するという手もある。

>>54
完全にスレ違い。
http://pc8.2ch.net/test/read.cgi/hp/1142242220/l50
0056nobodyさん2006/03/16(木) 20:11:33ID:???
tmpにうpさせてるのはtmpからのダウソを試みたり、勝手にtmpに送り込めば攻撃可能。
あとファイル名をチェックせずに、ファイル操作してると、/etc/passwdを含むファイル名でうpすればパスワード流失しないか?
0057nobodyさん2006/03/16(木) 20:45:31ID:???
最近のUNIXは/etc/passwdがないと聞いたのだが……
0058nobodyさん2006/03/16(木) 21:07:45ID:5JEd8fcS
index.php?id=0123 → ページAを表示
index.php?id=0123&amp;hoge=xxxx → ページBを表示

こんな感じでクエリ情報で違うページを出力しているのはどうやっているのだろう。
というか、何の意味があるんだろうか…(もう一つファイル作ればいいし、ナンセンスじゃないの?)

if (isset($_GET[?id?]) and $_GET[?id?] == "0123") {
      条件式がTRUEの場合の処理
} else {
・・・・・・・・・
}

この場合、include()しているのかな。
それとも単にprint()…?
何の意味があるのでしょうかねぇ。
0059nobodyさん2006/03/16(木) 21:23:46ID:???
echo implode (file ("ページA"), "");
0060軟式PHP2006/03/16(木) 21:49:08ID:???
>>56
俺へのレスかな?tmpは/tmpではないよ。
0061nobodyさん2006/03/16(木) 21:50:20ID:???
>>58
もし、一つのファイルに:

if(条件式){
   print <<<END
        …………………
   END;
}
って大量にかいてあったら処理とか重くなるんじゃ…
0062nobodyさん2006/03/16(木) 21:56:13ID:???
PHPでジャギーがでないよう画像を綺麗に縮小し、かつjpgなりgifなりで出力するにはどうしたら良いでしょうか。
普通にやると汚くなりますよね。
0063nobodyさん2006/03/16(木) 22:00:38ID:???
>>62
綺麗にできるかどうかはPHP関係なくてGDやImageMagickの問題だろ?
そっち方面で綺麗に変換するためのコツでも聞いてくるか、
それ以外の画像変換ライブラリやツールを漁ってくればいいんじゃね?
0064nobodyさん2006/03/16(木) 22:36:16ID:???
なるほど
0065242006/03/17(金) 01:29:23ID:???
>>24です。思いのほかたくさんのレスを頂き参考になりました。
今の自分のちからでは無理に確認画面を作るより、完了idをgetで渡すとかしてすぐに編集に戻れるようにしたほうが使い勝手がよさそうなので、ひとまずそういう形にしておきますた。

ところで、
ファイル選択&POSTで次の画面が出たところで
$_FILE配列にpostしたファイルの情報が入り、鯖のテンポラリに変なファイル名で一時的に選択した元ファイルがアップ(コピー)されるという解釈でよろしいでしょうか?
疑問なのはこのテンポラリのファイルがいつまで残ってるかという点です。
マニュアルには
>移動または名前の変更が行われていない場合、リクエストの終了時にその ファイルはテンポラリディレクトリから削除されます。
とありますから、この画面からリンクをクリックしたり、ほかのURLを叩いたり、POSTやGETで移動したりした時点で消えるということですか?
だとしたら、>>27さんの方式で$_FILESをセッションで持ち歩いても意味ないってことになっちゃいますよね?

また>>26さんの方法でも、やはり次の画面に逝ったところでテンポラリは消えてしまう訳で・・
やはりpostした次の画面でとにかく、ファイルの名前付けて移動するとこまでやっちゃわないとだめですね。
さらにここで確認OKでは無かった場合、この移動済みのファイルを消す処理、さらに痛いのは、入力に戻ったところで他の文字等の入力値はセッションで保たれますがファイルは再選択の必要があるってこと。
ファイル名にDBのレコードID番号(自動連番)と関連づけたファイル名にしたい場合はさらにめんどくさい処理にorz
ファイルが絡むとこんなにめんどくさいなんて思ってもみなかったす。
0066nobodyさん2006/03/17(金) 02:30:51ID:???
>>65
お前さん、フォームでファイルアップロードしてるんだよね?
そのアップロードされたファイルを何のファイルで参照したり使ったりするんだ?PHPファイルだろ?
>>27はスクリプトが終わる前にテンプファイルの中身を全部テキストと同じ扱いでセッションにぶち込む、
>>26は、入力チェックでOKの場合にファイルを選択させるって事じゃないのか?
0067nobodyさん2006/03/17(金) 09:56:23ID:fjaH3SIM
function hoge($a){
}

で、hoge($b); として、この $b の変数名('b')を、
hoge() 内で取得する方法はありますか?
0068nobodyさん2006/03/17(金) 10:00:25ID:???
ファイルにキャッシュを保存する時、
生PHPで保存するのと、シリアライズして保存するのでは、
速度差はどれくらいあるもんでしょうか?
0069nobodyさん2006/03/17(金) 10:31:56ID:???
phpどころかプログラムとかまったく知らないんですが、
phpの解説サイトのレッツphpっていいんですか?
グーグルでphpというキーワードで日本語のサイトを検索すると上位に来るんですが、
ソースとか参考になりますか?
ソースの書き方の体裁は参考になるけど内容はだめ、
とかそういうのがあれば教えてください。
ほかに、サンプルが豊富なためになる解説サイトがあればおしえてください。
phpってhtmlで言うところの不思議マークアップのようなものがあったりするんでしょうか?
0070nobodyさん2006/03/17(金) 10:33:41ID:???
PHPマニュアルが最強です。
PHPマニュアルを見ましょう。
0071nobodyさん2006/03/17(金) 11:17:23ID:???
>>69
公式マニュアルで必要十分。

>不思議マークアップ
何それ?
0072nobodyさん2006/03/17(金) 11:37:51ID:???
>>69
レッツphpのソースは参考にならない。時が止まったままだ。
読んでやってる処理をみるのは構わないけど、あれを基にしたり
同じようなコードを書くのは自分に悪い癖を付けるだけ。
(ちょっと宜しくないかなというレベルではない)

>不思議マークアップ
俺も判らん。正確で無い変な用語を使うのは、仲間内にとどめとけ。
0073nobodyさん2006/03/17(金) 11:41:52ID:???
マニュアルは当然見るとして、
マニュアル以外で参考になるサイトがないってこと?
0074nobodyさん2006/03/17(金) 12:43:01ID:???
後悔したくないなら素直にマニュアルを熟読
0075nobodyさん2006/03/17(金) 12:50:20ID:???
PHPからプログラムを始めるのはお勧めしない。
PHPしか扱えなくて、プログラムできます、なんて言ったら大恥。
C言語やJavaをお勧めする。入門書1冊やるだけでいいから。
0076692006/03/17(金) 13:24:51ID:???
>>70-75
レスどうもです。まったくの無知なのでマニュアルを見ても、
マニュアルにちょこっと載ってるサンプルらしきものをみてもよくわからないので
htmlのときのように他人のサンプルを触りながらのほうが理解できるかな、と思いまして。
やはりマニュアルの熟読から始めたほうがいいのでしょうか。

あとphpからプログラムをはじめるのはダメなんでしょうか。
phpはかんたんだと聞いたので。
かんたんというか、ある程度適当に作っても動くって意味なんでしょうか。
だからちゃんとした文法が身につきにくい・・・とか?
phpしか使えなくて恥をかく、とかは別に気にしません。
0077nobodyさん2006/03/17(金) 13:26:38ID:???
>>71-72
不思議マークアップってのは、見た目のみ最優先にして本来の仕様とは異なる目的で
使われているHTMLの書き方のこと。対義語はstrict。CSSが無かった時代の悪癖。
「悪い見本」[過去の遺物]って点でKENTやレッツPHPもそれに近いものであると言えるかもしれないな。
でもぐぐっても800件そこそこしか出てこないマイナーな単語なので、そういう単語で
物事を表現してる時点で>>69はすでに同レベルの人間に成り下がってるとオモ。

で>>69質問の、PHPで参考にできるサイトは唯一、本家マニュアルサイトのみです。
書籍だとマンモス本って言われている「PHP4 徹底攻略」とそのシリーズくらい。
それ以外ではまともに参考にできるものは大変少ないです。
大抵、ちゃんと全体を網羅できていない上に内容が間違ってる。
PHPは初心者を狙ったいいかげんな本やサイトが大量に氾濫してる上に、
ものすごく早いペースで機能拡張・仕様変更が行われているので、
これをちゃんとフォローできてるのは公式的なものしか無いと思っていいでしょう。
0078nobodyさん2006/03/17(金) 13:42:54ID:???
>>76
PHPは過保護なママタイプ
大抵の機能はファンクションとして揃ってるから、
レゴブロック感覚でもとりあえず動くものが作れる。
それが良い事なのか悪い事なのかはケースバイケースなので一概には言い切れないけど、
まずはプログラミングの世界に触れてみる第一歩としては間違っていないと思う。
大事なのは2歩目以降。
0079nobodyさん2006/03/17(金) 13:43:08ID:???
本一冊買うだけでもだいぶ使えるようには成るよ。
サイトは基本的に書きたい事しか書かれてないし、必要な事が書かれてるとは限らない。
明らかに図示した方が理解しやすくても、面倒だからという理由で省いてるサイトは多い。
サンプルベースの方が理解しやすければ、
1) 超入門的な本を読んでまず全体像を掴む。詳細は覚えなくてもいい。
2) チュートリアルとか用例付きの実践的な本を読んで手を付けながら覚えていく。
 分からない所は、ぐぐったり、1の本を見て復習しながら進む。
という学習がいいかも。
プログラムの習得の目標をどこに置くかだと思う。一生phpでよければphpで始めて問題ない。
日本語しか話さないなら、日本語だけ知ってればいいのと同じ。
他の言語も覚えたければ、英語とかフランス語習った方が理解が進むように、いろいろ学んでいけばいい。
ちゃんとした文法を身につけたければ、堅苦しい言語を選べばいいよ。
とはいえ、最近の言語は省略形を使えるようにして利便性を上げてる傾向が有るので、どれも汚く書ける(=その代わり速度は速い)から有る程度癖がつくのはしょうがないと思う。
あんまりどっぷり嵌らないうちにいろいろな言語を弄って自分の好みの言語や記述スタイルを確立していけばいいと思う。

Cとかだとあまりにも個人差が有りすぎて、保守性悪いので、書式統一にINDENT(1)を義務づけるとかやるよ。
phpの書式整形手段はエロイ人に任せる。
0080nobodyさん2006/03/17(金) 13:44:51ID:???
>>76
PHPは簡単だけど、目的から行くと「他の言語で基本を知ってる人が
Web目的で楽をするための言語」だと俺は思ってるので、
同種の文法を持ってるCやJavaの基礎を先にやった方がいい。

PHPの便利なところは「ものすごく大量のWeb専用機能を内蔵してる」とこなので、
PHPの解説サイトや解説本はそこを重点的に説明してて基礎解説は全然しないし。
そういった便利関数を調べるのに追われて基礎を学ぶ暇が無くなるのはナンセンス。

で、その便利関数は頻繁に増えていってるので、これを全て網羅できるのは
公式サイトのオンラインマニュアルだけ。その辺のリファレンス本では無理。
結論として、他言語で基礎を知ってから、公式サイトをリファレンスにして
PHPを使い込む、って順番でやるのが最も効率的で間違いが少ない。
0081692006/03/17(金) 14:16:47ID:???
>>77-80
たくさんのレスありがとうございます。
最初にCやJAVAで文法の基礎を学んでからPHPの利便性を享受するか、
敷居の低いPHPから入って他のプログラム言語へと幅を広げるか、
ということでしょうか。
CとかJAVAって難しそうなので、
上の場合は忍耐力、下の場合は向上心がいるっぽいですね。

どうもありがとうございました。
いろいろと触れてみたいと思います。
0082nobodyさん2006/03/17(金) 15:18:46ID:???
>>81
CやJavaで躓くようなら、PHPをやってても他人に迷惑かけるだけ。
0083nobodyさん2006/03/17(金) 15:23:09ID:???
趣味ならその理由でやめちゃえばいいけど、
授業だったらそうも行かないかもねー。
0084nobodyさん2006/03/17(金) 15:26:47ID:???
他の言語すっ飛ばして最初にPHPやらせるなんてアホな授業する学校があんのか…
BASICやらせるよりタチわりぃ
0085nobodyさん2006/03/17(金) 15:41:22ID:???
>>81
忍耐力と向上心逆かと思われw
0086nobodyさん2006/03/17(金) 15:52:15ID:???
VBから入って今はPHP、ってプログラマ(モドキ)も現場にはかなり多いよな。
レベル的にはPHPしかやったことないのとどっこいなくらいに微妙な連中なんだが、
それでもPHPしかやってないやつよりは綺麗なコードが書けるのがちょっと多い感じ。
なんでああ、PHPしかやってないやつってコードめちゃくちゃなのが多いんだろう?
HTMLにコード埋め込みorコードの中でHTMLをecho、が最初にあるせいなのか?
0087nobodyさん2006/03/17(金) 16:57:00ID:???
PHPで結果出力したページをHTMLとして保存する事は出来るのでしょうか?
ブラウザの「名前を付けて保存」ではなく、submitボタンなどを押して
そのphpページをダウンロードするような。
0088nobodyさん2006/03/17(金) 16:59:33ID:???
>>87
できるよ。PHPには出力制御関数ってのがあって、ブラウザに表示する内容を
丸ごと変数に格納したりできる。それ使えば丸ごとファイルに保存→DLも楽々。
0089nobodyさん2006/03/17(金) 19:30:52ID:???
>>67
本筋とは関係ないレスで流れたけどこれってどうやるんだろ?
投稿者ではないが気になるな
0090nobodyさん2006/03/17(金) 20:00:57ID:???
>>89
俺には何がしたいのかが分からない。
もしやりたい事がこれならマニュアルの「言語リファレンス」と「機能」だけでも全部読んでくれ。
ttp://php.s3.to/man/language.variables.variable.html
0091nobodyさん2006/03/17(金) 20:38:54ID:???
>>89
最初から名前そのものを引数として渡すんならともかく、それは無理でしょ。
あれば「変わった使い方」ができそうだけど、変わった使い方すぎて
どこで何が起きてるか不明な状態になる=グローバル変数病のもっとタチの悪いものになる
だけなので、意義は感じないな。
0092nobodyさん2006/03/17(金) 20:44:47ID:???
関数の結合度って言葉を知ってるか。低ければ低いほどいい >>89
0093nobodyさん2006/03/17(金) 21:09:57ID:???
function hoge($a){
// 何かの処理

}

0094nobodyさん2006/03/17(金) 21:11:10ID:???
引数で渡した変数の値を関数の名前として使いたいって事か。
0095892006/03/17(金) 21:12:46ID:???
俺大人気だな
http://kaiunix.cs.shinshu-u.ac.jp/Lesson/ProgLangT/2005/VariousProgramStructure.html
とかでいいのかな結合度って
関数の話で変数とのつながりがいまいち分かりませんでした。

思ったけど配列なら内容を検索してkeyを返すって出来るね
0096nobodyさん2006/03/17(金) 22:26:44ID:qt9OXvzz
foreach (file($hoge) as $line) { 〜 }

とした場合、ループ中に毎回ファイル読み込んでるわけではないですよね?
毎回読んでたらループしませんもんね?
いや、一応確認したかったので。
0097nobodyさん2006/03/17(金) 22:29:12ID:???
>>96
ループの初回だけ
0098nobodyさん2006/03/17(金) 22:39:48ID:???
>>96
それよりも、$fl = file($hoge);と一度やった方が綺麗な気がする。
0099nobodyさん2006/03/17(金) 22:41:23ID:???
echoがprintf代わりなのかなあ(w
0100nobodyさん2006/03/17(金) 22:42:49ID:???
レッツって評判悪いのか?
0101nobodyさん2006/03/17(金) 22:45:17ID:???
>>98
なんで?
0102nobodyさん2006/03/17(金) 22:46:15ID:???
>>100
非常に。
0103nobodyさん2006/03/17(金) 22:56:49ID:???
>>102
レスサンクス
あまりスクリプト覗いてなかったもんで知らなかった
0104nobodyさん2006/03/17(金) 22:57:47ID:WHiStkGK
質問です
phpで書いたフォームで、入力された内容に
全部まとめてhtmlspecialcharsとかmb_convert_kanaを
かけたいんですけど、どうやったらいいですか?

いままでは
$hoge = mb_convert_kana($hoge, "KV", "SJIS");
$hoge2 = mb_convert_kana($hoge2, "KV", "SJIS");
$hoge3 = mb_convert_kana($hoge3, "KV", "SJIS");
と、項目の数だけ同じ行を増やしていました。
0105nobodyさん2006/03/17(金) 22:58:56ID:???
>>96でも書かれてるけど、
動作への不安が頭をよぎる。
foreach (file($hoge) as $line) { 〜 }
毎回は読み込まないよなぁ?…って
0106nobodyさん2006/03/17(金) 22:59:41ID:???
>>104
ホントに全部にかけちゃっていいなら
$_REQUEST = array_map("htmlspecialchars", $_REQUEST);
とかそんな感じ
0107nobodyさん2006/03/17(金) 23:01:33ID:???
>>105
いやそれはどうかと。別に全然綺麗じゃないし。
綺麗云々じゃなく素直に「中身が想像できないから見て分かる確実な書き方しかできません」って言いなされ。
0108nobodyさん2006/03/18(土) 00:04:11ID:???
>>107
動作への不安が頭をよぎるって読めないのか?
0109nobodyさん2006/03/18(土) 00:05:44ID:???
Eclipseおめぇー
0110nobodyさん2006/03/18(土) 00:16:14ID:???
Windowsの手動インストール版5.1を使っているんですが、
マニュアルに「php.iniの場所は環境変数PHPRCにディレクトリパスを書くことで
指定できる」と書いてあるのに、IISのISAPIだとWindowsディレクトリ下しか
見てくれません。PHPRCによる場所指定はコマンドライン起動などでしか
使えないんでしょうか…。
0111nobodyさん2006/03/18(土) 00:20:46ID:???
>>108
頭悪いだけじゃん
0112nobodyさん2006/03/18(土) 01:27:17ID:PidsL1Fk
ID<>なまえ<>内容<>アクセス数
ID<>なまえ<>内容<>アクセス数
ID<>なまえ<>内容<>アクセス数
・・・
・・
・

のようなログファイルをすべて読み込んでアクセス数順にソートして
再度ログファイルに書き込むようなスクリプトを書いているのですが、
似たようなプログラムだとかってありますでしょうか?
ランキングスクリプトを作りたいと考えてます
どなたか書ける方いらっしゃいませんでしょうか・・・・
挫折してしまいました・・・・
0113nobodyさん2006/03/18(土) 01:32:46ID:???
>>112
スレ違い。
依頼スレじゃない。

これだけじゃ分からん。
phpを読み込んだ時にアクセス数が増えるのか、
それとも元からあるファイルを見やすいように順番を入れ替えるのかにもよる。

前者なら、更新部分だけ順番を入れ替えれる(もしくは0.5とか姑息な数字にしてソートする)などが考えられる。
後者なら、総当り方式で順番をつけてくのが吉。
01141042006/03/18(土) 01:36:12ID:Lr7F21tP
>106
レスありがとうございます。
厳密に言うと、全部じゃなくて殆どの項目といった感じです。
任意の項目にまとめてかける方法はありますか?
いままで僕が書いていたように項目の数だけ行を増やすのは
あまりいいやり方ではないですよね?
0115nobodyさん2006/03/18(土) 01:41:36ID:???
>>114
あんまり何でも手際の良いスタイルを目指さなくてもいい時もある。
増やしたい部分だけやるのがいいと、俺は思うよ。

もっと良いコード書く人いるから。
その人がそういうの書いてくれると嬉しいよな。
0116nobodyさん2006/03/18(土) 02:05:25ID:???
>>114
$input_name = array(

);
0117nobodyさん2006/03/18(土) 02:11:07ID:???
間違った;;
>>114
$input_name = array(
"name1",
"name2",
"name3",
"name4",
"name5",
);
foreach($input_name as $k) {
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
俺ならこんな感じ。
ある程度パターン化された一覧表みたいなPOSTを受け付けるときは
こんな風に一括処理をかけちゃうかな。

で、これは変換対象を列挙する方式だけど、これがめちゃめちゃ多くて
逆に除外側を列挙した方がずっとシンプルになる場合は
$ext_name = array(
"ext1",
"ext2",
"ext3",
);
foreach(array_keys($_REQUEST) as $k) {
if(in_array($k, $ext_name)) continue;
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
みたいな手もあると思う。
0118nobodyさん2006/03/18(土) 02:19:15ID:???
スーパーグローバル変数を上書きって…
0119nobodyさん2006/03/18(土) 02:21:40ID:tuV8tpcr
フリーメールアドレスを発行できるCGIってどこかにありませんか。
0120nobodyさん2006/03/18(土) 02:24:50ID:???
>>98
こういうワーク的な変数を大量生産するのはむしろ汚く見えるなー。
ワーク変数って名称に意味を持たせにくいから適当な名前になりがちだし、
それでうっかり被って変数破壊したり、変数名打ち間違ってバグったりって
凡ミスするやつを現場で何人も見たことがある。
しかも、そういうワーク変数を増やしたがるやつって大抵はエレガントなロジックを書けないんだよね。
やたら回りくどい手法を使いたがって、ますます凡ミスの可能性を増やしてんの。

で、挙句の決め台詞が「PHPは変数初期化ミスをちゃんと警告できないのがダメだよね」ときたもんだ。
おまえがヘタレなだけだっつ〜の!
0121nobodyさん2006/03/18(土) 02:26:04ID:???
>>119
スレ違い
0122nobodyさん2006/03/18(土) 02:56:22ID:???
>>118
別に禁手ではない。
0123nobodyさん2006/03/18(土) 03:45:23ID:???
ブラクラURLやその他危険なURLとかを
まとめたリストってどっかにないかな??

掲示板とかでそういうのが投稿されたら
ブロックするようにしたいんだけど。
0124nobodyさん2006/03/18(土) 03:55:03ID:???
その目欄には心当たりがある
0125nobodyさん2006/03/18(土) 03:57:56ID:???
>>118>>122
俺普通にやってるけどまずいかしら
0126nobodyさん2006/03/18(土) 04:07:23ID:???
>>118
え。何か問題出ることあるんだっけ??
0127nobodyさん2006/03/18(土) 06:34:25ID:???
どうでもいいが、
foreach (file($fname) as $line) { }
こう書くときはエラー処理しなくていい場合な。

綺麗とか汚いの問題じゃないぞ。
0128nobodyさん2006/03/18(土) 06:57:48ID:???
UTF-8でPHP設定したいんですが、EUC-JPやSJISでOnOFFする
output_bufferingってどっちに設定すればいいでしょうか?
0129nobodyさん2006/03/18(土) 07:20:53ID:???
output_bufferingがなんか関係あるの?
0130nobodyさん2006/03/18(土) 08:00:00ID:???
mb_output_handlerを使う時はOn、普通はOff
01311282006/03/18(土) 08:06:16ID:???
ttp://www.php.net/manual/ja/ref.mbstring.php
EUC-JP ユーザ用の php.ini の設定
SJIS ユーザ用の php.iniの 設定
ってあってEUCはOffにSJISはOnにって書いてあってきになった・・
デフォのOffでいいのかなぁ・・
01321282006/03/18(土) 08:08:18ID:???
あぁレスみのがしてたorz
>>130さんありがとぉ
0133nobodyさん2006/03/18(土) 11:49:16ID:p8xxneVQ
なあ、PHPでWEBサービス作るのと
それにDHTMLでアクセスする
ってあたりの事が書いてるスレかサイトって無い?
0134nobodyさん2006/03/18(土) 11:57:35ID:???
ajaxのことかい?それならあった気が。
0135nobodyさん2006/03/18(土) 11:59:57ID:???

$inputstr = "uwaaaaa!";
から
uwaaaaa!
という出力を得たいとする。
============================
function aaa($str){
//実際はもっとめんどくさいごにょごにょがここに
echo $str;
}
function bbb($str){
//実際はもっとめんどくさいごにょごにょがここに
return $str;
}
============================
その場合
aaa($inputstr);
とするのと
echo bbb($inputstr);
または
$output = bbb($inputstr);
echo $output;
とするのどっちがいいんでしょう?
0136nobodyさん2006/03/18(土) 12:05:33ID:???
>>135
・表示するためのデータを作成する部分
・用意したデータを表示する部分
ってな感じに分割していると後々変更する時に楽なので、
$output = bbb($inputstr) がいいんジャマイカ?
0137nobodyさん2006/03/18(土) 12:09:06ID:???
aaa()がechoを行なうことが前提である関数なら上。たとえば、Smartyのdisplay()。
値をごにょごにょするだけの関数なら、見やすさに応じて真ん中か下。たとえば、substr。
0138nobodyさん2006/03/18(土) 12:27:36ID:???
>>135
printf()とsprintf()のどっちがいいですかって聞いてるようなもんだな
0139nobodyさん2006/03/18(土) 12:29:47ID:???
>>136-137
なるほど。
関数名の付け方とかで区別すればいいことに今気がついた。
呼ぶだけでechoするのは
print_nantara()とかecho_nantara()
ごにょごにょして返すのは、return_nantara()とか。
いままでそういう名前の付け方してなかった

>>118
ちなみに漏れもよくやります。上書き以降で元の値が必要ないとか、整形が必要なら、その都度ごにょごにょしないで、上書きしちゃえばいいと思ってます。
そんなに悪い事なのかな?
■ このスレッドは過去ログ倉庫に格納されています