【PHP】下らねぇ質問はここに書き込みやがれ 31
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/10/25(水) 08:45:46ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0910nobodyさん
2006/11/05(日) 00:14:46ID:???<?php
readfile('http://www.yahoo.co.jp');
?>
0911nobodyさん
2006/11/05(日) 00:15:22ID:???0913909
2006/11/05(日) 00:47:00ID:bwOCiosnファイルハンドラを保存というか、保存されているものは文字列(というかバイナリ)です。
以下、スクリプト自身をDBに保存する摩訶不思議なスクリプトです。
よろしければ、試してもらえるたら幸いです。
(インデントは全て全角スペースで書いてあるので、置換してください)
$fp = fopen(__FILE__, 'rb');
$db = new PDO('mysql:host=localhost;dbname=hogehoge', 'user', 'pass');
$stmt = $db->prepare('insert into files set file=:file');
$stmt->bindParam('file', $fp, PDO::PARAM_LOB);
// 挿入時はちゃんとファイルハンドラが使える。
if (! $stmt->execute()) {
$info = $stmt->errorInfo(); echo $info[2];
}
0914nobodyさん
2006/11/05(日) 01:02:22ID:ByyhjYSA10円 ハゲ PHP エロス
辺りでググッたのですが見つかりません。
0915nobodyさん
2006/11/05(日) 01:29:17ID:???セッションで隠すやつは玄人
0916909
2006/11/05(日) 01:47:57ID:bwOCiosnMySQL server has gone away
(MySQLサーバーが消えました???)
と言われます。
もう何かPDOでLOB扱うのは諦めるかもしれません。
他にMySQLでファイルを保存する方法にはどんなものがありますか?
0917nobodyさん
2006/11/05(日) 02:24:39ID:???0918nobodyさん
2006/11/05(日) 03:37:58ID:???> 今、トラックバックスパムではないんですが、トラックバックを一度で複数送る研究を・・・
それがトラックバックスパムなんです。研究だろうと何だろうと。
>>874みたいに興味持っちゃうお子さんがいるでしょ。
だから公共の場で教えてあげることはできないんです。
0921nobodyさん
2006/11/05(日) 08:32:35ID:???ttp://takagi-hiromitsu.jp/diary/20061104.html#p01
で、
> こんなのは PHPのバグでしょ。エンコーディングがShift_JISの文字列を addslashes() するときに、
> Shift_JISとして処理していない addslashes() のバグ。
といってるが、バグなのか?
マニュアルにも、SHift_JISは"PHP で動作しないと思われる文字エンコーディング"になってるのに。
0922nobodyさん
2006/11/05(日) 09:03:11ID:???バグだろうがバグじゃなかろうか議論なんて問答無用な話だ
0925nobodyさん
2006/11/05(日) 11:48:25ID:???PHP始めたばかりの初心者だけどC/C++経験者のおいらから言わせてもらえば
×バグ
△仕様
○未実装
他の文字列関数にmb系関数がある以上日本語にはmb系関数を使うのが正しい。
しかしmb_addslashesは無いので未実装扱いが正統。
Shift_JISなんぞ国個別(今回は日本語)の個別コードに過ぎないので解釈不能で仕方が無いと思う。
ついでに言うとmb_addslashesが無いのであればmb_addslashesと同等の動作の物を自分で作成するか
PHPマニュアルにもあるようにSQLサーバ固有のエスケープ関数を使用するのが正しいと思う。
それでも問題が起こるのであれば、それはまた別の話
つづく
0926nobodyさん
2006/11/05(日) 12:02:32ID:???それはバグでもなければひろみちゅの勘違いでもなくて、
指摘された元々の文章を書いた人が
「PHPではSJIS日本語のエスケープにaddslashes()を使う」
と大嘘を書いたせい。
0927nobodyさん
2006/11/05(日) 12:22:05ID:???0928nobodyさん
2006/11/05(日) 12:35:09ID:???「今夜分かるSQLインジェクション対策,」であるのならば記事の方が正しい。
>>921のリンク先で批判している人が間違い。
>対策に「準備された文」(prepared statement) のことを書かないのは、どういうつもりなわけ?
確かに書くべきだと思うが
1:prepared statementはDBや上位インターフェイスによっては未実装かもしれない。(そういう)意味ではエスケープもアレだが
2:prepared statementはインジェクション対策というよりプログラムからSQL文作成をする場合の簡略化に本質があるとはず。
つまりprepared statementに対応していたとしても問題文字を埋め込んだ場合に必ずしもインジェクション対策にはならないのではないかという疑問がある?
>そんな方法が「一般的になっている」なんて書くなって。そんなのは、はじめっから間違ってるって書くべきこと。
「今夜分かるSQLインジェクション対策,」、つまり分かっていない人用だし、実際にそのような対策例が多いので=一般的で良いと思われる。
というかprepared statementが正しいという前提の元で批判しているこの人が間違い。
>「方向性は正しい」と言いながら「理解していないため」というのはどういう了見なわけ? 「方向性」って何? 方向性からして間違ってるんだって。
prepared statementが正しいという前提の元で(ry
記事はエスケープをするという方向性は正しいが本質を理解していないと完全な対策が取れないという事が言いたいのであろう。
すなわち文字列やaddslashesを理解していない人には完全な対策が取れな(ry 自爆(ry
>「HTMLを生成する段階でエスケープすればよいと考えている人」って何それ?
これは記事の説明が悪い。
記事は初心者にクロスサイトスクリプティングと一緒くたにしないように注意を喚起したかったのであろう。あれもエスケープするしね。
0929925 928
2006/11/05(日) 12:37:59ID:???SQLインジェクションとは何故起こるのかを説明しなければならない。
説明する上では文字列やエスケープについての記述が必須になる。
何故起こるのかの本質を理解せずに「prepared statementを使用すれば良い」等という書き方になると.
(全てのDB,SQL,インターフェイスで対策になっているか疑問だが)
addslashesがバグとかいう誤解をする人が増えてしまうのではないかと思う。
また、別の件で本質が同じである同様の間違いをおかす人も増えてしまうのではないかと思う。
SQLインジェクションの本質を理解していれば単純なクロスサイトスクリプティング脆弱性は生まれないが、
prepared statementだけでは同じ間違いをおかしかねない。
------------ここまでチラシの裏-----------
0930nobodyさん
2006/11/05(日) 12:45:24ID:???【PHPアクセラレータで一番高速なのはどれか?】
ttp://gigazine.net/index.php?/news/comments/20061103_php_accelerator/
0931nobodyさん
2006/11/05(日) 12:51:06ID:???うちでもAPCを使ってるが、月1くらいで再起動かけないと
どうも動作が不安定になることが多くてちょっと困ってる…
0932nobodyさん
2006/11/05(日) 13:12:38ID:???別に高木は「prepared statementを使用すれば良い」っていう
書き方をしろなんて書いてないでしょ
Webアプリケーション対策のところにprepared statementを始めとする
セキュリティが考慮された上位DB抽象インターフェイスを使う事が
説明されてないっていう事がダメって言ってるわけで
何故起こるのかを書く事は必要だけどその対策方法が
低レベルAPIの対策方法しか書かれてなくて
しかもそれらがさも「一般的な対策」であるかのように
書かれてるっていうのが問題だってのが高木の言い分だろ
@ITの記事が説明不足だっていうのは正しい指摘だと思うよ
高木の「addslashesはバグだ」ってのもちょwおまwって感じだけど
0933925 928 929
2006/11/05(日) 13:43:48ID:???まあ、そうですね。
そんなおいらも >>901 みたいなアフォな事やってるフォー
901=925,928,929なんです(`・ω・´)シャキーン
高木氏の文に説明書いてあるけど顔見知りみたいだし(?)書いているのは個人日記みたいだし、
高木氏本人も自分専用チラシの裏程度の感覚で書いてるのかもしれないですしね。
0935nobodyさん
2006/11/05(日) 14:27:01ID:???function mb_stripslashes($str)
{
$enc = mb_detect_encoding($str, 'UTF-8,EUC-JP,SJIS');
$str = mb_convert_encoding($str, 'UTF-8', $enc);
$str = stripslashes($str);
$str = mb_convert_encoding($str, $enc, 'UTF-8');
return $str;
}
0936nobodyさん
2006/11/05(日) 14:38:59ID:???そこでstripslashesするってことはaddslashes済みのデータってことだよね?
SJISデータにaddslashesするとデータが破壊されるから正常なUTF-8には変換できないよ。
それ、addslashesの間違いなんじゃ…
0937nobodyさん
2006/11/05(日) 18:29:10ID:???まぁ俺は元々UFT-8使ってるから関係ないけど。
0938nobodyさん
2006/11/05(日) 18:41:22ID:???釣られたよ俺の負けだ
0939937
2006/11/05(日) 19:02:15ID:???0940nobodyさん
2006/11/05(日) 22:10:07ID:???0941nobodyさん
2006/11/05(日) 22:14:31ID:???0942nobodyさん
2006/11/05(日) 22:43:56ID:???0943nobodyさん
2006/11/05(日) 22:54:54ID:???0945nobodyさん
2006/11/06(月) 00:13:36ID:???0946nobodyさん
2006/11/06(月) 00:54:45ID:???0947nobodyさん
2006/11/06(月) 02:10:13ID:NtdVX8J9受け側で $_POST['a'] == 'b'; なるようなソースを教えてください。
0948nobodyさん
2006/11/06(月) 02:30:15ID:???$_POST['a'] == 'b';
?>
0949nobodyさん
2006/11/06(月) 02:31:12ID:???0950nobodyさん
2006/11/06(月) 02:31:34ID:???これで以下のスクリプトでどこでも$_POST['a']がbとして使えるよ
0951nobodyさん
2006/11/06(月) 02:36:04ID:NtdVX8J90952nobodyさん
2006/11/06(月) 03:27:09ID:mhsSMHja0954nobodyさん
2006/11/06(月) 04:38:56ID:???4→5はオブジェクト周りがかなりJavaっぽくなったが、
また6で覚えなおすこと多くなるのかな。
0955nobodyさん
2006/11/06(月) 04:48:47ID:???6への移行はなかなか進まないんじゃないかな。
あまりしらないんだが、そんな予感。
0956nobodyさん
2006/11/06(月) 05:31:37ID:???6で気になるとこはgotoとネームスペースかな。
gotoは無くていいけど、ネームスペースは欲しい。
デリミタは「:::」になるみたいね。
0957nobodyさん
2006/11/06(月) 05:35:56ID:???って話になってるよね。register_globalsをはじめ、関数エイリアスとか。
0958nobodyさん
2006/11/06(月) 05:38:05ID:???0959nobodyさん
2006/11/06(月) 06:26:33ID:???処理速度が最低5倍、最大30倍も向上するらしいって話だったけど。
0960nobodyさん
2006/11/06(月) 06:56:53ID:???0961nobodyさん
2006/11/06(月) 10:21:56ID:???0962nobodyさん
2006/11/06(月) 12:08:48ID:rJsIKc5Iさらにhoge.phpの中にconfig.phpをincludeする文があるのですが、
これってincludeしてくれるんでしょうか?
0963962
2006/11/06(月) 12:10:06ID:rJsIKc5I0964nobodyさん
2006/11/06(月) 12:11:11ID:???するよ。
>>963
いや、PHP以外の質問されても困るけどさ。
どうせ書くならPHPのバージョンとかその辺りを…
0966nobodyさん
2006/11/06(月) 12:25:06ID:???参考書読んでもわからないもので。
0967nobodyさん
2006/11/06(月) 12:32:27ID:???$_SERVER['REQUEST_METHOD'] / getenv('REQUEST_METHOD'')
func_get_args()
でどうかしら
0968nobodyさん
2006/11/06(月) 12:39:53ID:???Perlの機能で質問するならMethPost、ReadParseがどういう機能なのか説明しなよ。
なんでPHP知ってる人がPerlのしかも標準でないライブラリについて知ってると思うのさ。
MethPost → ($_SERVER['REQUEST_METHOD'] == 'POST')
ReadParse → 標準で自動的に$_GETと$_POSTに格納される。
0970nobodyさん
2006/11/06(月) 12:48:06ID:???0972nobodyさん
2006/11/06(月) 14:28:39ID:???登録フォームなどで
フォーム(form.php)→入力内容失敗(フォーム上に表示)→成功・送信完了(entry.php)
と言うように入力判定を登録フォーム上に表示する仕様がよく見かけますが、
これは以下のような考え方でいいのでしょうか?(form.phpに記述するとして)
if($name=""){
echo"名前が入力されていません"
}else{
$_SESSION[name]=$name;
header(location: entry.php);
}
0973nobodyさん
2006/11/06(月) 14:35:20ID:???$name = ""じゃなくて$name == ""な
俺だったらわざわざロケーションするくらいなら
同じファイルで値チェック+成功後の処理もやっちゃうけどね
0974972
2006/11/06(月) 15:11:30ID:???すみません、結構記述ミスがありましたね。。
それで同じファイル上で値チェック+成功後の処理をすると
デザイン面などの編集がしづらいんです。
また、間に確認するページを入れた場合など。
それで、sessionで保持してロケーションするのが良いのかな?
っと思い、設計の質問をした次第です。
0979nobodyさん
2006/11/06(月) 16:43:52ID:???(1)
$num = $db->getOne("SELECT COUNT(*) FROM hoge");
(2)
if(!DB::isError($rs = $db->query("SELECT * FROM hoge"))){
$num = $rs->numRows();
}
1と2ってどっちが早い?
行数にもよると思うけど。
0980nobodyさん
2006/11/06(月) 16:52:47ID:???if($name==""){
echo"名前が入力されていません"
}else{
include "entry.php";
exit;
}
でもいいんじゃないの
0981nobodyさん
2006/11/06(月) 16:56:34ID:???0983nobodyさん
2006/11/06(月) 17:21:15ID:???<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title><?php echo "$title" ?></title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
さーせん、コレで書いてるのになぜかブラウザはshift_jisで表示してしまいます。
考えられる原因は何でしょうか?
0984nobodyさん
2006/11/06(月) 17:27:45ID:???php.iniのdefault_charset変えたら行けました。
死んできます。
0985nobodyさん
2006/11/06(月) 17:32:19ID:???0986nobodyさん
2006/11/06(月) 17:55:24ID:L/507IWYメールフォームを使えば楽なのですが、携帯利用者にとって
自分のメールアドレスを打つのはご法度だと考えております。
どなたかアドバイスお願いいたします。
0987nobodyさん
2006/11/06(月) 18:27:27ID:???0988nobodyさん
2006/11/06(月) 19:03:02ID:???0992nobodyさん
2006/11/06(月) 19:23:14ID:???0993nobodyさん
2006/11/06(月) 19:26:38ID:???まだ伝書鳩使ってるんですか?
php-5.2.0からは糸電話が実装されたので非常にセキュアです。
dos攻撃にも強いですよ。
0994nobodyさん
2006/11/06(月) 19:34:26ID:???伝書鳩
RFC 1149 鳥類キャリアによるIPデータグラム送信標準
0995nobodyさん
2006/11/06(月) 20:37:35ID:???鳥インフルエンザが心配だな。
パケットが落ちる可能性がある。
しかも、インコとか暗号しゃべれないでしょ?平文は不安だよ。
やっぱり糸電話は物理層でつながっている安心感が違うよ。
インフラでコストがかかるけど、うちは全部 ”糸”だよ。
0996nobodyさん
2006/11/06(月) 20:59:33ID:???それ、PHPの質問じゃないぞ。
.forwardとかでメールの内容をスクリプトに渡してやって
正規表現で相手のメールアドレス抽出。
PHP STDINあたりで検索かけてみ?
0998986
2006/11/06(月) 21:06:11ID:???0999nobodyさん
2006/11/06(月) 21:06:42ID:???受け取った後は言語はなんでもいい。もちろんPHPでもできる。
問題はスクリプトにどうデータを渡すか。これはPHP全然関係ない。
1000986
2006/11/06(月) 21:07:06ID:???For ever you!!!1000
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。