【PHP】下らねぇ質問はここに書き込みやがれ 50
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/07/11(水) 17:50:01ID:fYd+34USPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0427nobodyさん
2007/07/18(水) 20:10:51ID:???>>413の質問内容とそれに返答する>>415の内容から何を言わんとしているか判断出来ないのは
やはりゆとり脳のせいでしょうか?
0428nobodyさん
2007/07/18(水) 20:34:54ID:???信頼出来ない。"や">で要素やタグを終了出来るし、
そもそもHTMLでは要素内であっても特殊文字はHTMLエンティティにすることが推奨されている。
0430nobodyさん
2007/07/18(水) 21:53:25ID:sSp2i6sO以下のサンプルで試してみましたがXSSは確認できませんでした。
どのようなケースのときにXSSがおこりえるのでしょうか?
$str = "あああ>";
value="<?php echo $str;?>
0431nobodyさん
2007/07/18(水) 21:54:54ID:sSp2i6sO0432nobodyさん
2007/07/18(水) 22:33:35ID:???「他人より出来る」と思い込みたいんだから仕方ない。
ずっと前からそうだ。今になってわざわざ言う必要はない。
0433nobodyさん
2007/07/18(水) 23:00:43ID:7tC2FFCS何を言っているのか何を言いたいのかさっぱり分からないが
酒鬼薔薇事件で子供ほど難しい漢字や言葉を使いたがるというのを思い出した俺ガイル
0434nobodyさん
2007/07/18(水) 23:12:54ID:???自ら回答はせず、他者の回答に対し「おまいらは馬鹿かと反射的にレスしている」(+俺の勝ちとか思いこんでしまっている節もある)人が
自分の間違いと理解力不足に気づいていない事を皮肉っている。
0435nobodyさん
2007/07/18(水) 23:21:25ID:7tC2FFCSお前よくわかるな。俺は「慙恚」この漢字すら読めないZE
だからといってGoo辞書ひく気はまったくないけどな
そもそも聞いたことのないやつの自叙伝かなんかから
そんな崇高(だと思われる)な文章を引用されても
皮肉かどうかすらさっぱり分からん
大人って言うのは万人に分かりやすく説明する能力に長けているもんだっていう皮肉が>>433だ
0436nobodyさん
2007/07/18(水) 23:29:23ID:???保留っていえや!!
0438nobodyさん
2007/07/19(木) 01:04:59ID:???0439nobodyさん
2007/07/19(木) 01:32:28ID:???0440nobodyさん
2007/07/19(木) 01:48:35ID:???意外とものわかり悪いな
自明なことをわざわざ言う必要はないってことよ
まあ上で言われたし、エクスタシー感じながら寝るか
0441nobodyさん
2007/07/19(木) 04:29:36ID:???0442nobodyさん
2007/07/19(木) 08:59:15ID:IPLKMfOVtest/test.php の中で、
require_once("Auth/HTTP.php");
というコードを実行した時、Auth/HTTP.php は test/Auth/HTTP.php という
階層構造でなければならないんでしょうか?
php.iniでのinclude_pathは .;C:\PHP\pear となっており、
実際の階層は C:\PHP\pear\Auth\HTTP.php となっています
ちなみに、test/test.phpで
if(require_once("Auth/http.php")){ echo" OK"; }
を実行したら OK が表示されました。 お暇な方回答おねがいします
0444nobodyさん
2007/07/19(木) 09:01:40ID:H7YXRZIlよさげなので使ってみようと思ったのですが、ドキュメントがどこにもなくて
プラグインの使い方が良くわかりません。
テンプレート側で
{htmlspecialchars($hoge,ENT_QUOTES)}
みたいにPHPの関数をそのままかけるところまではわかったのですが
ここに独自関数を使えるって言う事じゃないのでしょうか?
メンバー変数に$_pluginっていうのがあるので使えそうなのですが、
どんな感じで使うのでしょうか?
ソースがPHPじゃないので、読むことも出来ないしOTZ
ご存知の方いらっしゃいましたらお願いします
0445nobodyさん
2007/07/19(木) 09:10:39ID:IPLKMfOVありがとうございます 確認したいんですが
require という関数は、
・そのファイルのある階層からの相対パス
・rootからの絶対パス
・include_path で指定したディレクトリ以下のパス
の3種類を取れるってことなんでしょうか?
0448nobodyさん
2007/07/19(木) 09:19:53ID:???マニュアル引用
> 読み込むファイルはまずカレントのワーキングディレクトリからの相対パスとしてinclude_path で探され、それから、カレントのスクリプトのディレクトリからの相対パスとしてinclude_path で探されます。
0450nobodyさん
2007/07/19(木) 09:33:46ID:IPLKMfOV申し訳ないです 書いてありました
ありがとうございました
0451nobodyさん
2007/07/19(木) 09:49:41ID:0PZWkZf0出来ればやり方を教えて頂きたいんですが…
0452nobodyさん
2007/07/19(木) 09:59:10ID:???↓
[ファイル[F]]->[開く(O)]
↓
テキストファイルの選択
↓
一行目をマウスで選択
↓
Ctrl+C
0454nobodyさん
2007/07/19(木) 12:47:36ID:???>>451
$fp = fopen("thx.txt", "r"); //読み込み
$subject_thx = fEncCvt( fgets($fp, 10000) ); //件名
while ( $data = fgets( $fp, 10000 ) ){
$msg_thx .= fEncCvt($data); //本文
}
fclose($fp);
0455nobodyさん
2007/07/19(木) 12:56:23ID:AESNaKiLサーバー側で自動で代入するのはjsでもphpでもできませんよね?
(毎回参照ボタン押さないようにしたいけど、勝手にローカルファイルの指定するのは危険になるから?)
0456nobodyさん
2007/07/19(木) 13:04:36ID:???もしそれができたら、欲しいファイルがありそうな
ところのパスいれておいて、javascriptとかで
勝手にsubmitするぜw
0458nobodyさん
2007/07/19(木) 13:13:12ID:???0459nobodyさん
2007/07/19(木) 13:32:54ID:???javascript と phpだけでどうやるんすか?
ActiveX VBScript Javaアプレット使うわけでもない。
metaタグに仕込む奴は最近は、使えない気がするが。
<input type='file' に対してはjavascriptは無力ではないか? むしろ小細工できるならマジで知りたい。
0460444
2007/07/19(木) 13:45:16ID:EtVjENa1プラグイン周りはそのままやっても動きませんでした。
>>449
そこをどうにかお願いしますw
使いたいメソッドを持ったインスタンスを登録して
テンプレート側で何らかの記号で呼び出すとかでしょうか?
それとも、普通に{hoge($foo)}と呼び出せたりするのでしょうか?
Smartyのように$_pluginsにはパスを登録すればよいけど
そこにおくファイルフォーマットが違うのでしょうか?
$_pluginsには何を登録するのか?
テンプレートではどのように書くのか?
この二点だけでもお願いします!
0461nobodyさん
2007/07/19(木) 13:58:21ID:???0462nobodyさん
2007/07/19(木) 15:07:58ID:pASguBwm0463nobodyさん
2007/07/19(木) 15:19:50ID:WayGbRpfどんなチェックをしたらいいですか?
0464nobodyさん
2007/07/19(木) 15:21:46ID:???0465nobodyさん
2007/07/19(木) 15:28:01ID:WayGbRpf0466nobodyさん
2007/07/19(木) 16:32:29ID:???0467nobodyさん
2007/07/19(木) 16:33:52ID:???この程度の回答で満足してお引取りください
0469nobodyさん
2007/07/19(木) 18:25:15ID:???いままで、csvファイルも含めてすべてsjisでPHPを作成していましたが、
新しくパソコンを買ったので、EUCで設定してはじめることになりました。
(新しく買ったPHPの参考書がEUC指定だったので)
そこで以前のファイルをまとめてEUCに直したいと思います。
どうすれば、SJISで書かれたファイルをまとめてEUCに直せるでしょうか。
アドバイスをよろしくお願いします。
0470nobodyさん
2007/07/19(木) 18:30:03ID:WayGbRpf0472nobodyさん
2007/07/19(木) 18:46:49ID:WayGbRpf0475虚弱PHP
2007/07/19(木) 19:09:46ID:???セキュリティなら、本当に画像ファイルか確認することぐらいかな?
スクリプトファイルをアップロードされると、
ローカルファイル・インクルージョンの手段か、
リモートファイル・インクルージョンの踏み台にされる可能性あり。
ただ、他の脆弱性との組み合わせ技だし、
そんなに気にする必要もないと思うけど。
0476nobodyさん
2007/07/19(木) 19:23:25ID:???・画像のサイズ上限(1MBとか)
・2バイト文字を含むファイル名、空白を含むファイル名を許すかどうか
・同一ファイルをアップロードしたときにファイル名をどうするか(元のファイル名に _日付 を勝手につけるとか)
・ファイルタイプ(gif,jpeg,pngのみ許可)とか
・ファイルアップロードの過程で簡易編集(リサイズ等)を出来るようにするか。
・同時に複数画像ファイルをアップロード出来るようにするか
・アップロード途中に、現在のアップロード状況をプログレスバーの様に表示するか
・アップロードと同時に、サムネイル画像を自動生成するか
等々、いろいろあって、範囲が広すぎて何とも言えない。
あと、最近のネタでは
バイナリ内にphpのコードを仕込むことが出来るらしいがコレの対策とか
とにかくいろいろ結構面倒なので、画像アップロード系のGPL,LGPLのソースとかもみれば良いと思う。
(仕事じゃなかったら、そのまま使って改造した方が楽かもね)
0477469
2007/07/19(木) 19:58:04ID:XK0LpanUありがとうございます。
さっそくツールを見つけて変換してみました。
ただソースとCSVをEUCに変換して、関数の"sjis"変換していたところを"EUC"に直してみたのですが、
”蟒”という字がどうも文字化けしているようでした。
これはもうどうしようもないのでしょうか?
sjisの時は問題なく表示されていました。
0478nobodyさん
2007/07/19(木) 20:04:24ID:WayGbRpfありがとうございます。
最悪の場合などいろんなケースにも対応できるように
アドバイスを元ににプログラミングしてみます。
ありがとうございました。
0479469
2007/07/19(木) 20:26:42ID:XK0LpanU0480469
2007/07/19(木) 20:28:02ID:XK0LpanU見てたコード表がSJISでしたm(_ _)m
0481nobodyさん
2007/07/19(木) 20:31:35ID:???・ライブラリファイル作成に日本語は使わない。上段部にまとめて日本語を記述するかreadme.txtを併用する。
echo "<form name=\"aaa\">というふうに'を使わないで"で統一。
0482469
2007/07/19(木) 21:23:19ID:XK0LpanUなぜなのでしょうか??
0483nobodyさん
2007/07/19(木) 21:26:35ID:???警告でまくりです
どこが詳しいサイトはないでしょうか
0484nobodyさん
2007/07/19(木) 21:31:42ID:???はっきり言って、フリーのDBサーバーは警告文が不親切で使い物になりません。
SQLServer又はOracleをオススメします。
因みに、私はOraclePlutinumを持っています。モチロン新試験の方です。
技術者1200人規模の会社で、DBについては一流の技術を持っていると会社の中で地位を得ています。
0485nobodyさん
2007/07/19(木) 21:34:29ID:???0486483
2007/07/19(木) 21:41:21ID:???ありがとうございました。やはり、DBの設計思想がおかしいようです。
Oralcleの導入を早速検討させて頂きます。
本当にありがとうございました。
0487nobodyさん
2007/07/19(木) 21:45:09ID:???[root@localhost hoge]# vi /usr/local/bin/conv_to_euc.sh
#!/bin/sh
while [ -n "$1" ]; do
if [ -e "$1" ]; then
TMPF=nkftmp$$
nkf -e -Lu $1 > $TMPF
mv $TMPF $1
echo $1
fi
shift
done
こいつを chmod 777 /usr/local/bin/conv_to_euc.sh としてとりあえず実行権限立てて
上記シェルスクリプトを find ./ -name "*.php" |xargs /usr/local/bin/conv_to_euc.sh のみたいにfindをかまして呼び出す。
(よけいなファイルまで変換しないように要注意、findとかのオプションは自分で調べれ)
linux環境ならこれでeuc LF に 一括変換できる(手抜きだからパーミッションは変わっちゃけど)
いきなり本番にはやらないように、バックアップをとってからやりましょう。
ちなみに当然ながらソース内で mb_convert_encording($hoge,"SJIS","auto") なんてやっているところは、それぞれ
mb_convert_encording($hoge,"EUC-JP"","auto") とかに書き替える必要はある。
この類は、windows用とかで一括置換ソフトがあるので、それらを使えばよい。
けど質問者はたぶん全部windows上なんだろうなあ。
0488469
2007/07/19(木) 21:55:30ID:XK0LpanUありがとうございます。
ご推察どおり、Windouws環境です。
PHPファイル、CSVファイル、ブラウザ、ともにEUCなのを確認しました。
SJISだったところもすべて、EUCに書き直しました。
色々試していると、
これだと文字化け
while($line = fgetcsv($db, TEMP_BUF, ",")) {
・・・
echo "$name";
}
これだと文字化けせず
while($temp = fgets($db, TEMP_BUF)) {
$line = explode(",",$temp);
・・・
echo "$name";
}
というようなことが判明しました。
どこかで文字コードの判定が狂ってる気がします。
php.ini の設定ミスかもしれないので少し調べてみます。
0489nobodyさん
2007/07/19(木) 22:14:56ID:???> 注意: この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合
> ファイル中の 1 バイトエンコーディングは間違って読み込まれます。
というわけで、Windows上でfgetcsvを実行するとShift_JISとして処理されてんじゃね
setlocale(LC_ALL, 'ja_JP.eucJP');
をスクリプトのはじめに突っ込んどけば
参考にしたサイト: ttp://blog.development-network.net/ung/2006/09/php5fgetcsv.html
0490nobodyさん
2007/07/19(木) 22:45:59ID:???>mb_convert_encording($hoge,"EUC-JP"","auto");
autoのdetectって結構袋小路に入る。
md_detect_orderを明示的に設定しても駄目なこともある。
コードが決まってるなら、実は$fooを決めうちすべき
mb_convert_encording($hoge,"EUC-JP",$foo);
0491nobodyさん
2007/07/19(木) 22:49:40ID:L7MnxTu6autoが駄目な理由は、文字コードの1バイト目が不定領域にある文字を使っているからでは?
先頭の方で、<!--京-->とすれば解決できるよ。
Yahooのページもソース見ると、そうやっていたりする。
0492nobodyさん
2007/07/19(木) 22:53:24ID:???0493nobodyさん
2007/07/19(木) 22:55:39ID:L7MnxTu6ad-hocも何も釣りなんですが、何か?
0494nobodyさん
2007/07/19(木) 23:13:29ID:???そんな懐かしい技術が最近復活してたりするわけで
http://dictionary.goo.ne.jp/
ソースでみると……
<!--龠龠龠-->
まあ、この場合はIEのせいなんだけど
0495469
2007/07/20(金) 01:21:05ID:0kZTntuaありがとうございます。まさにこの症状だと思います。
ただどういうわけか、setlocale(LC_ALL, 'ja_JP.eucJP');をいろんなところにセットしてみても文字化けが直らなかったので、
素直にfgetcsvの部分をfgetsに直すことにしました。
このたびはたくさんの助言ありがとうございました。
いつか自分も誰かの質問に答えられるようになれればと思います。
0497nobodyさん
2007/07/20(金) 09:43:19ID:Bm0qkr+0レコードは増えるんですが、idは追加されるものの、nameに値が入らないのです。
どんな原因が考えられるでしょうか?
<?php
extract($_post);
mysql_connect('localhost','root','oraora');
mysql_select_db('test');
$sql = "insert into dbtest values(0,'$name')";
mysql_query($sql);
?>
<form action="adodb_write.php" method="post">
名前:<input type="text" row=1 name="name"></input><input type="submit"></input>
</form>
0498nobodyさん
2007/07/20(金) 09:49:58ID:Bm0qkr+0すみません、忘れてました、SQLのテーブル構造は以下の通りです
>>497のフォームでデータ送信して増えた部分はid=10(idはauto_increment)です
+----+-----------+
| id | name |
+----+-----------+
| 1 | simada |
| 2 | suzuki |
| 3 | sato |
| 4 | sirakawa |
| 5 | takahashi |
| 6 | saito |
| 7 | ito |
| 8 | ueda |
| 9 | takada |
| 10 | |
+----+-----------+
0499nobodyさん
2007/07/20(金) 09:59:23ID:???$_POSTじゃない?
0500nobodyさん
2007/07/20(金) 10:04:37ID:vU4cROZQアップ完了までのプログレスバーはどうやって実装するのでしょうか?
普通は完了するまで画面は表示されませんよね?
0501nobodyさん
2007/07/20(金) 10:25:50ID:Bm0qkr+0ありがとうございました、ちゃんと名前も追加されるようになりました。
ただ、、日本語で名前を登録すると追加されないです(アルファベット入力のみ受け付ける)
これはなぜでしょう?
phpはutf-8で保存、書き出し設定しています
mysqlの [mysqld] も default-character-set=utf-8 としているんですが
0502nobodyさん
2007/07/20(金) 10:26:29ID:???0504nobodyさん
2007/07/20(金) 10:55:13ID:Bm0qkr+0すみません、レコードが追加されないのです
| 8 | ueda |
| 9 | takada |
| 10 | noda |
+----+-----------+
上記のように、 アルファベットでの名前 nodaのレコードは追加されても
「野田」と入力して送信しても
| 10 | noda |
+----+-----------+
上記のまま、id=11・name=野田 のレコードが追記されません なぜでしょう?
0505nobodyさん
2007/07/20(金) 11:55:01ID:xSJ/fCQP横レスですまんが、野田って、今年の3月に○立情報の案件で、
引継ぎも何もしないで、プロジェクトの途中で勝手に抜けた奴じゃなねーだろな。
あれから、めちゃめちゃ俺が引き継いで大変だったんだけど。
本人だったら、殴ってやりたいんだけど。
0506nobodyさん
2007/07/20(金) 12:00:28ID:???0507nobodyさん
2007/07/20(金) 12:09:19ID:???pukiwikiにはEUCとUTFの2種類あります。
EUCでほげほげをエンコードすると、『%A4%DB%A4%B2%A4%DB%A4%B2』となり、
UTFでほげほげをエンコードすると、『%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92』となります。
これを共通にデコードして同じ『ほげほげ』を出力したいのですが、
EUCで表示するUTFが文字化けし、UTFで表示するとEUCが文字化けしてしまいます。
これを防ぐにはどのような書き方をすればよいのか教えていただけませんでしょうか?
<?php
header("Content-Type: text/html; charset=EUC-JP");
$euc = "%A4%DB%A4%B2%A4%DB%A4%B2";
$utf = "%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92";
echo rawurldecode($euc)."<br>\n"
. rawurldecode($utf);
?>
0508504
2007/07/20(金) 12:12:25ID:Bm0qkr+0プギャーww ワロw
0509nobodyさん
2007/07/20(金) 12:16:31ID:vU4cROZQむぅ、ajaxが必要ですか…
バッファじゃ不完全ですよねぇ
0510nobodyさん
2007/07/20(金) 12:16:53ID:???0513507
2007/07/20(金) 12:57:51ID:9levxhBtもう1つ言い忘れたのですが、
エンコード済みのほげほげに該当する部分は、
外部から受け取る値になるので、
受け取った時点で、どの文字コードか調べたいのですがそんな関数ありますか?
>>511
rawurlencodeの引数にはそんなオプションはありませんでしたが、
なんか他の方法でできるのでしょうか?
どっちにしろ受け取った値がどの文字コードかわからないといけませんね。
0515nobodyさん
2007/07/20(金) 13:00:27ID:???$euc = "%A4%DB%A4%B2%A4%DB%A4%B2";
$utf = "%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92";
$euc = urldecode($euc);
$utf = mb_convert_encoding(urldecode($utf), "EUC-JP", "UTF-8");
0516nobodyさん
2007/07/20(金) 13:10:03ID:???0517nobodyさん
2007/07/20(金) 14:15:55ID:Z+yQ2M+4どのようにすれば対処できるのでしょうか?
文字コード:JIS
関数:mail()
どこかで携帯にメールするときは文字コードはJISでmail()関数を使うのが正しいといわれたのですが・・・
0518517
2007/07/20(金) 14:28:50ID:Z+yQ2M+4本文は文字化けせずにちゃんと届きます。
ちなみにSubject、Body共に「JIS」で送信しています。
0519nobodyさん
2007/07/20(金) 14:31:51ID:???それで検索してみたら?
0521517
2007/07/20(金) 14:40:25ID:Z+yQ2M+40522虚弱PHP
2007/07/20(金) 14:51:51ID:???http://www-06.ibm.com/jp/developerworks/opensource/library/os-php-v525/index.shtml
0523nobodyさん
2007/07/20(金) 14:51:55ID:???$enc_arr = split( ",", "ASCII,UTF-8,EUC-JP,SJIS" );
function fEncCvt($cvt_value) {
global $enc_arr;
$strDefEnc = mb_detect_encoding ( $cvt_value ,$enc_arr, TRUE );
if( $strDefEnc != DEF_HTTP_ENC ) {
$cvt_value = mb_convert_encoding($cvt_value, DEF_HTTP_ENC, $strDefEnc ); }
return $cvt_value;
}
$hoge = fEncCvt($hoge);
0524nobodyさん
2007/07/20(金) 14:53:35ID:???>PHP V5.2 の新機能、第 5 回: ファイル・アップロードの進行状況を追跡する方法
>PHP V5.2 の新機能、
>V5.2
orz
0525nobodyさん
2007/07/20(金) 14:53:50ID:ETH2C+0h登録フォームなどでHTMLのセレクトタグをセッションし確認画面でセレクトタグの選んだものを表示し、
その後戻るボタンなどで登録フォームに戻ったときセレクトタグの選んだものの状態を維持させたいのですがどうすればいいでしょうか?
■ このスレッドは過去ログ倉庫に格納されています