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

【PHP】下らねぇ質問はID出して書き込みやがれ 79

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/01/13(火) 21:48:25ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0110nobodyさん2009/01/16(金) 00:27:04ID:???
>>108-109

My siteって緑のバックグラウンドで出て、
その下に、でっかい、白い枠があるけど?
0111nobodyさん2009/01/16(金) 00:29:04ID:???
DWの設定を見直してみます・・・
0112nobodyさん2009/01/16(金) 00:32:34ID:???
環境設定>ブラウザでプレビュー>一時ファイルを使用してプレビュー
にチェックしたら解決できました
すいません><
0113nobodyさん2009/01/16(金) 02:25:38ID:cpRhXZRJ
http://www.php-ref.com/basic/05_const.html

constっていうのは
クラスの中でしか、使えない?
0114nobodyさん2009/01/16(金) 02:36:59ID:cpRhXZRJ
<?php
$dsn = 'sqlite:C:/aaa';
$pdo = new PDO($dsn);

$sth = $pdo->prepare(
'SELECT count
FROM bookmark
where id=1');

$sth->execute();
$a=$sth->fetch(PDO::FETCH_ASSOC);
print $a[count];

?>
これを実行すると
「20」
と、こちらが欲しい結果が表示されるが、それと共に
Notice: Use of undefined constant count - assumed 'count' in
という、Noticeが出てしまう。
「countを初期化すればいいのか?」
と思ったが、constはクラスの中でしか使えないみたい。
どうすれば初期化できる?
0115nobodyさん2009/01/16(金) 02:37:10ID:???
クラス外での定義ならdefine
0116nobodyさん2009/01/16(金) 02:38:22ID:cpRhXZRJ
>>71
は直接、クエリーを発行したけど、
今度はそれの、プリペアード・ステートメント版を作ってるということ。

この方がSQLインジェクションに強くなる。
0117nobodyさん2009/01/16(金) 02:38:59ID:cpRhXZRJ
>>115
なるほどね。
Noticeにconstantという用語が出ているからといって、
かならずしもconstを使って初期化しなければならない、
ということではなかったんだな。
0118nobodyさん2009/01/16(金) 02:44:32ID:cpRhXZRJ
<?php
define("count", ""); //countを初期化
$dsn = 'sqlite:C:aaa';//データーベースの情報の定義
$pdo = new PDO($dsn);//データーベース作成

$sth = $pdo->prepare(//プリペアード・ステートメント
'SELECT count//フィールド選択
FROM bookmark//テーブル名選択
where id=1');//レコード選択

$sth->execute();//実行
$a=$sth->fetch(PDO::FETCH_ASSOC);//データーを取ってる
print $a[count];//表示

?>

------------------------------------------------------
これにしたら、今度は、次のNoticeが出るようになった。
Notice: Undefined index: in C:1.php on line 14
indexを初期化するってなんだ?
$a[count]を初期化してみたが、違うようだし。
0119nobodyさん2009/01/16(金) 02:57:41ID:cpRhXZRJ
<?php
$dsn = 'sqlite:C:/aaa';
$pdo = new PDO($dsn);

$sth = $pdo->prepare(
'SELECT count
FROM bookmark
where id=1');

$sth->execute();
$a=$sth->fetch(PDO::FETCH_ASSOC);
if (isset($a['count'])){
print $a['count'];
}
?>

これでいけた。
シングル・クオーテーションつけてないだけだった。
つけたらNotice消えた。
0120nobodyさん2009/01/16(金) 02:59:00ID:cpRhXZRJ
これでPDOでプリペアード・ステートメントを使って
データーベースから情報を取ってきて
画面に表示する、というところまで、できた。

次の挑戦は、プレースホルダ、変数のバインドだ。
0121nobodyさん2009/01/16(金) 07:05:23ID:???
>>115
餌を与えないで下さい
0122nobodyさん2009/01/16(金) 07:08:59ID:???
私いつもの人はミュンヒハウゼン症候群だと思うの
0123nobodyさん2009/01/16(金) 09:09:33ID:???
ID:cpRhXZRJアボーン
0124nobodyさん2009/01/16(金) 11:19:23ID:???
あぼーんなんてものは
チラ裏に書いておきなさいってば
0125nobodyさん2009/01/16(金) 14:08:45ID:JjgIvuO0
ボックス・ミューラー法を使って結果が正規分布になる乱数を得るコードを書いたのですが
結果が正規分布になりません
参考にしたのは以下のHPです
http://blog.longearth.net/2008/04/30/c%E3%81%A7%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%83%BB%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%BC%E6%B3%95%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%AD%A3%E8%A6%8F%E4%B9%B1%E6%95%B0%E3%82%92%E7%99%BA/
http://www.inf.ie.kanagawa-u.ac.jp/c_learn/class/norminv.html

//正規分布の乱数を10000回生成
for($i=0;$i<$10000;$i++){
$x=rand();
$y=rand();

$a=sqrt(abs(-2*log($x)))*(cos(2*pi()*$y));
@$result[floor($a*5.8+171)]++;//身長(平均171、標準偏差5.8)

}

//結果表示
for($i=100;$i<=200;$i++){
echo @"$i {$res[$i]}<br>";
}

何が間違っているのか分かる方、よろしくお願いします。
0126nobodyさん2009/01/16(金) 14:23:11ID:???
rand()
0127nobodyさん2009/01/16(金) 14:23:53ID:???
$10000 ってなに?
0128nobodyさん2009/01/16(金) 14:26:52ID:???
ん、めちゃくちゃやんこれ
0129nobodyさん2009/01/16(金) 14:30:18ID:JjgIvuO0
すいませんコピペ間違えです
×for($i=0;$i<$10000;$i++){
○for($i=0;$i<10000;$i++){

×echo @"$i {$res[$i]}<br>";
○echo @"$i {$result[$i]}<br>";
0130nobodyさん2009/01/16(金) 14:43:58ID:???
>>125,129
舌足らずな>>126を補足すると
その変換式には 0 < $x <= 1, 0 < $y <= 1 を与えろって事
http://www.php.net/manual/ja/function.rand.php
0131nobodyさん2009/01/16(金) 14:46:49ID:JjgIvuO0
分かりました
一様乱数の事を偏りの無い結果を返す乱数なら範囲はどうでもいいと誤解していました。
一様乱数は0〜1まででないと駄目で
$x=rand()/getrandmax();
$y=rand()/getrandmax();
としたら正規分布した結果が得られました
>>126さんどうもありがとう御座いました
0132nobodyさん2009/01/16(金) 14:47:25ID:JjgIvuO0
>>130さんどうもありがとう御座います
0133nobodyさん2009/01/16(金) 14:57:51ID:BSD/KGQf
レンタルサーバに置いたindex.phpにて100サイト分のブログの更新情報を掲載するスクリプトを書こうか迷ってます
rssで更新情報を取得したいのですが、これはレンタルサーバに負荷がかかるのでしょうか?
0134nobodyさん2009/01/16(金) 15:03:28ID:???
かかる
0135nobodyさん2009/01/16(金) 15:03:32ID:???
absかけてる理由ってなんなの?
0136nobodyさん2009/01/16(金) 15:06:29ID:???
>>121
警察に通報しました。
0137nobodyさん2009/01/16(金) 15:07:01ID:???
>>122
警察に通報しました。
0138nobodyさん2009/01/16(金) 15:08:02ID:???
>>135-137
病気なんで許してあげてください。スルー推奨
01391352009/01/16(金) 15:08:21ID:???
俺もか
0140nobodyさん2009/01/16(金) 15:08:42ID:???
>>134
え?おれ普通にやってるよ?まじ?
0141nobodyさん2009/01/16(金) 15:11:19ID:???
>>123
警察に通報しました。
0142nobodyさん2009/01/16(金) 15:11:52ID:???
>>138
警察に通報しました。
0143nobodyさん2009/01/16(金) 15:13:42ID:???
>>133
実際に問題になる負荷かどうかはこのスレの住人が決める事じゃないよ
レンタルサーバに相談してね
RSSはcron等で定期的に更新するようにして
表示する際はそのキャッシュを参照する仕組みをとってりゃ却下されないでしょう
01441332009/01/16(金) 15:33:49ID:???
cronが使えないので訪問時に条件判断してrssを一日一回のみ確認してみることにします
index.phpには日時だけを表示するようにしますがこれも重い処理になるのでしょうか?
ありがとうございました
0145nobodyさん2009/01/16(金) 15:36:44ID:???
レンサバに聞けよ
0146nobodyさん2009/01/16(金) 18:24:47ID:???
例外を組み込んでみて感じたけどやっぱfinallyがないと不便だね
0147nobodyさん2009/01/16(金) 18:41:04ID:???
>>146
ここは質問スレ。雑感はブログに書こうね。
不便とか、どんだけ貧困なんだよ。
0148nobodyさん2009/01/16(金) 18:43:49ID:???
不便じゃないの?
0149nobodyさん2009/01/16(金) 18:44:56ID:tYa6x4Bm
すいませんrssから更新日時だけを取得することってできますか?
本文などは転送量が多くなるので更新日時だけを取得したいです
0150nobodyさん2009/01/16(金) 19:00:33ID:???
普通できると思う
0151nobodyさん2009/01/16(金) 19:02:27ID:???
相手鯖の仕様による。
RSSを配信しているファイルで更新日時をはいてるかどうか試してみるといい。
0152nobodyさん2009/01/16(金) 19:09:47ID:???
>>150
フイタ
0153nobodyさん2009/01/16(金) 19:47:28ID:08Ji2paI
php大丈夫なレンタルサーバーにphpのアクセス解析コードを入れて
index.phpと保存したファイルをfffhpを使ってupしても
変なエラーコードがweb上で表示されます。
助けてください。
0154nobodyさん2009/01/16(金) 19:55:35ID:???
まず服を脱ぎます
0155nobodyさん2009/01/16(金) 19:56:57ID:???
エスパーさん>>153がお呼びですよ
0156nobodyさん2009/01/16(金) 20:05:27ID:???
変なエラーコードとは、通常出るようなエラーじゃないってことだから中の人の出番だな
0157nobodyさん2009/01/16(金) 20:06:34ID:tYa6x4Bm
>>153
エラーコード晒してからかけよバカ
0158nobodyさん2009/01/16(金) 20:10:47ID:???
え、こんなんで入れ食い

>>149,157
おいおい、似たり寄ったりだろうが
0159nobodyさん2009/01/16(金) 20:45:04ID:???
>>153=>>158

うるせーよ!
0160nobodyさん2009/01/16(金) 20:56:54ID:???
w
0161nobodyさん2009/01/16(金) 21:20:34ID:cpRhXZRJ
>>153
そのエラーメッセージをコピペしてください。
もちろん公開できない部分は適当に変えて。
0162nobodyさん2009/01/16(金) 21:28:24ID:???
ID:cpRhXZRJ
01631532009/01/16(金) 21:36:07ID:08Ji2paI
ありがとうございます。
いま携帯からなので自宅へもどりしだいエラーコード書きます。
0164nobodyさん2009/01/16(金) 21:54:52ID:???
>>162
警察に通報しました。
0165nobodyさん2009/01/16(金) 22:40:42ID:???
笑うwww
0166nobodyさん2009/01/16(金) 22:44:45ID:???
>>165
警察に通報しました。
0167nobodyさん2009/01/16(金) 23:05:31ID:3QNMuF/N
$bod="
START
あいうえお
END

START
かきくけこ
END
";

という変数から正規表現で間の文字だけ取得し、配列に入れたいと思います。
preg_match_all("/START(.*)END/is",$body,$array);

としたのですが、取得できません。どういう書き方をすればいいのでしょうか?
0168nobodyさん2009/01/16(金) 23:07:08ID:???
ID:cpRhXZRJ、出番だよ
0169nobodyさん2009/01/16(金) 23:17:16ID:e0uLUs7Z
イメピタ風の携帯画像うpろだ探してます。
教えて下さい!!
0170nobodyさん2009/01/16(金) 23:21:27ID:n9qydKtv
ちょっと気になったので質問させて下さい。
文字コードがUTF-8で作った掲示板をブラウザで表示して
ブラウザの表示を文字化け覚悟でEUCに変換、その後POSTで送信したら
内部に届く文字はEUCになるんですかね?
0171nobodyさん2009/01/16(金) 23:25:54ID:???
やってみ
聞いたことよりもやってみた結果のほうが何倍も信用できるだろ?
01721702009/01/16(金) 23:35:26ID:???
>>171
返信ありがとうございます。
やってみたらEUCで送られてきました・・・
どう対処しようかと考えましたが
mbstring.http_input = auto
mbstring.encoding_translation = On
にしたら全てUTF-8になりました。
お手数をおかけしました。
対処法はこれでいいんですかね?
0173nobodyさん2009/01/16(金) 23:36:34ID:???
自動変換しちゃっていいの?
01741702009/01/16(金) 23:53:36ID:???
>>173
mbstring.http_input = autoでは
まずいんですかね?
出来ればmbstring.internal_encodingで
設定しているUTF-8でいただきたいんですけど・・・
0175nobodyさん2009/01/17(土) 00:41:26ID:sXvdxnWv
webページ上で文字コードを変換すれば?
もしくは今の時代utf8だからそのままでもいいとは思うけど
01761702009/01/17(土) 01:00:35ID:???
>>175
返信ありがとうございます。
私自身も今までこの設定でやってきたんですが、
もしUTF-8で作った掲示板を誰かがブラウザの表示で
文字のエンコードを変えてPOSTで送信してきたら
セキュリティ的に大丈夫なのかなと思いまして・・

変な質問ですいません。
0177nobodyさん2009/01/17(土) 01:01:53ID:???
セキュリティ的に(笑)
0178nobodyさん2009/01/17(土) 01:19:40ID:sXvdxnWv
どういう意味でセキュリティー的に危ないの?
大丈夫だよ。
誰もphp.iniをのぞかないから。乗っ取られない限り
01791702009/01/17(土) 01:35:59ID:???
>>178
例えば先程書いた例の通り掲示板にSJISの文字コードで
こんにちはとPOST送信してきた場合その言葉を内部でUTF-8に
エンコードしない限りSJISとして処理され
データベースに格納されてしまうのかなと疑問に感じまして・・

今日確認目的でマルチバイトの設定ファイルの勉強を再度したら
頭がごちゃごちゃになってしまいました。
変な質問本当にすいません。
0180nobodyさん2009/01/17(土) 01:57:53ID:???
SJISで格納されることがセキュリティ的に危ないの?
0181nobodyさん2009/01/17(土) 02:12:55ID:???
対処法としてはsubmitにnameを持たせて
valueを日本語にして送信されたvalueと内部の値を比較する。
01821702009/01/17(土) 02:23:40ID:???
>>180
セキュリティというか文字化けですね。
掲示板の投稿やショッピングサイトのユーザ登録を作る時に
ブラウザから文字コードの違うテキストがPOST送信されてきた場合、
内部の文字コードに適切に処理するプログラムでいつも対処するべきなのか
疑問に感じました。

例えばIEのメニューから表示→エンコード→シフトJISに切り替えて
POST送信した場合、フォームに記述したモノは
全てシフトJISで送信されるんですかね?

なんか書きながらすごい自分自身幼稚な事を言ってる気がします。
読んでいただいてありがとうございます。
0183nobodyさん2009/01/17(土) 02:24:40ID:???
やってみ
聞いたことよりもやってみた結果のほうが何倍も信用できるだろ?
0184nobodyさん2009/01/17(土) 02:33:55ID:???
>>176
ブラウザ上でユーザーが明示的に
UTF-7にして、そのデーターを送信してきたら
アタッカーが意図的にjavascriptのコードを仕込んできて、
XSSやCSRFの原因になることがあるよ

詳しくはググれ
0185nobodyさん2009/01/17(土) 02:35:02ID:???
>>178
お前はバカ
会社もクビになったろ?
0186nobodyさん2009/01/17(土) 02:35:34ID:???
スレタイとテンプレすら読まない子にそれができるとは思えない
0187nobodyさん2009/01/17(土) 02:36:11ID:???
>>180
危ないだろ。
シフトJISでは防げない攻撃がある。
だからシフトJIS自体を使うのをやめましょうね、
って流れになってる。
0188nobodyさん2009/01/17(土) 02:38:46ID:???
それシフトJISじゃなくてエスケープやエンティティ化の問題じゃね?
0189nobodyさん2009/01/17(土) 02:39:41ID:???
ちなみにデーターベースに格納するときの危険性は
SQLインジェクションだけ考えればいい。

そっから取ってきたデーターを画面に
表示するときは、htmlspecialcharsでサニタイズが必要。
0190nobodyさん2009/01/17(土) 02:40:08ID:???
サニタイズw
0191nobodyさん2009/01/17(土) 02:41:14ID:???
また、ユーザーの入力値を、そのままOSにコマンドとして渡す場合は、
「OSコマンド・インジェクション」への注意が必要。

通常、ユーザーの入力値をそのままOSに渡したりしてはいけない。
バカがメール送信プログラムとかでよくやる。
01921532009/01/17(土) 02:46:02ID:ElVqoJ54
Parse error: syntax error, unexpected '?' in /home/ユーザー名/public_html/index.php on line 61
よろしくお願いします
0193nobodyさん2009/01/17(土) 02:46:54ID:uOghFGaK
phpでポータルサイト作るのに
・サイト内検索
・ログイン、ログアウト
・ユーザー登録
・データベース管理
あとどんな技術が必要?
0194nobodyさん2009/01/17(土) 02:47:51ID:???
>>192
syntax errorです
>>193
ID:cpRhXZRJ乙
0195nobodyさん2009/01/17(土) 02:58:31ID:???
>>192
?
が変なところに入っている。消せ。
0196nobodyさん2009/01/17(土) 02:59:09ID:???
>>194
病院に行け
これは命令だ。
0197nobodyさん2009/01/17(土) 03:00:05ID:???
命令w
01981702009/01/17(土) 03:02:18ID:qiM85KnN
色々な意見本当にありがとうございました。
まだまだ勉強不足なのでこれから一層努力していきます。
0199nobodyさん2009/01/17(土) 03:03:20ID:???
努力するなんて言う奴が実際に努力するのを見た試しがない
0200nobodyさん2009/01/17(土) 04:17:01ID:???
fputcsv($fp, $data)で、CSVに書き込まれる値が"で囲まれない
んですけど、なぜでしょう?デフォルトの挙動ではないのか。
ちなみに,
fputcsv($fp, $data, ',', '"')としても結果は同じだた。
0201nobodyさん2009/01/17(土) 04:26:55ID:???
まずスレタイに注意することから
0202nobodyさん2009/01/17(土) 05:31:32ID:3kZEDG7g
2chとか掲示板の本文検索とかってmysql使ってるの?
レス番、名前、メール欄、・・・・、本文、、
みたいな感じでテーブルにずらーと管理されてるのかな
想像絶するようなデータ量だと思うんだけど、そのようなことが本当に行われているのか。
それともphpでdatからこの部分参照、検索みたいなことやってるのかな。
気になってしょうがないので、なんとなくでいいので教えてください
0203nobodyさん2009/01/17(土) 08:35:28ID:???
2ch自体に検索機能はない
未来検索ブラジルってとこが2chのログをインデックス化して
検索できるようにしてるだけ
なんのDBが使われてるかはしらないが当然DBは使われている
簡単にいえばGoogleみたいなもんだ
0204nobodyさん2009/01/17(土) 09:52:48ID:???
未来検索ブラジルは全文検索エンジンsennaの開発元だな。
詳細はぐぐれば分かる(もしくは説明しても分からない)から大雑把に言うと、
DBからインデックス(本の末尾に単語とページ数の対応表があるだろ、あんな感じ)を事前に生成し、そいつを使って検索する。
(もしかしたら公開版のsennaより高性能なものを使っているかもな)

まあ、その辺は内部処理なので、呼ぶ側からは普通にSQLで検索かけているように見えるんだけどな。
昔の2chはMySQLだったので、いまもそうじゃないかと思うが、断言は出来ない。
それと、2chはPHPではなくPerlで動いている。
サーバー側の仕組みからして普通のwebサーバーとは異なるので、その辺のスクリプトと比較はできないけどな。
0205nobodyさん2009/01/17(土) 09:56:44ID:???
誰もperlで動いてることなんて聞いてないのに
0206nobodyさん2009/01/17(土) 10:00:53ID:???
>>205
>>202
0207nobodyさん2009/01/17(土) 10:03:16ID:???
説明下手でフイタw
0208nobodyさん2009/01/17(土) 12:22:02ID:???
>>202
DBに何使ってるのかは俺はシラネ。
他の人のレスにもあるように、大規模データのindex化の手法っていうのは色々あるので、
sennaの開発元でもあるし、頭の良い人は何かえーよーにやっとるのでしょう。
俺みたいな凡人は、頭の良い人が考えた技術を後からありがたーく使わせてもらうまでw

ちなみにgoogleなんかはDBのエンジンからして自社開発だけどね。
0209nobodyさん2009/01/17(土) 12:32:22ID:???
>ちなみにgoogleなんかはDBのエンジンからして自社開発だけどね。

(゚Д゚)ポカーン
■ このスレッドは過去ログ倉庫に格納されています