【PHP】下らねぇ質問はID出して書き込みやがれ 82
at PHP
[前50を表示]
400:nobodyさん
09/03/18 15:58:45
50行くらい
401:nobodyさん
09/03/18 16:21:37
>>399
そんなのきまってない
402:nobodyさん
09/03/18 16:42:30
URLリンク(hightide.blog2.fc2.com)
403:nobodyさん
09/03/18 17:10:10
>>399
画面半分に納めるのはよいプラクティスだって昔だれかがいってた。
スクロールしないと見れないメソッドはクソの匂いがするとも。
404:nobodyさん
09/03/18 19:19:39
>>392
ザコは黙ってろ
405:nobodyさん
09/03/18 19:20:32
>>399
pearのコーディング規約に1行何文字程度に収めるか決めてるから参考に読んでこれば
406:nobodyさん
09/03/18 19:48:17
1行あたりの文字数と
メソッドを何行に収めるかの話が
関係あるのか?
407:nobodyさん
09/03/18 20:07:04
掛け軸ぐらいな縦長のモニタだったら余裕だなw
408:nobodyさん
09/03/18 20:37:37
フォントを1ドットにしてもいいぞ
409:nobodyさん
09/03/18 21:09:42
>>406
既に答えが出てるだろ
ゆとりかおまえ
410:nobodyさん
09/03/18 21:14:44
お前は何を言ってるんだ
411:nobodyさん
09/03/18 22:22:03
>>410はゆとりだから気にしなくていいよ
412:nobodyさん
09/03/18 23:15:59 gf2MXR+O
本運用のリモートのunix系鯖か、
開発のローカルのwinかで、
デバッグ云々用とかで判別するのは
if (DIRECTORY_SEPARATOR == '/') { ...
で問題なし?
413:nobodyさん
09/03/19 00:18:23
開発環境をunixにしたくなったら詰むな。
それと、Win環境で本番環境同様の状態をエミュレートしたくなった場合も身動きが取れなくなる。
function isDevelopEnvironment()
とかをどこかグローバルにアクセスできる場所(グローバル関数か、クラスのstatic関数)に置いとけ。
他の場所からはこの関数で判定するようにしておけば、判定方法が変わっても変更が一箇所で済む。
実装と意図の分離は設計の基礎。
呼び出し側でやりたい事(意図)は環境の判別なのだから、関数名はそうなっているべき。
環境を識別するのにDIRECTORY_SEPARATORを使う、ってのは実装の話で、意図じゃない。
(もっと言うなら、開発環境がWinで運用環境がUnixなのも「たまたまそうなってる」だけの、つまり実装依存な話)
で、実装の話だが。
俺ならホスト名を開発環境と本番環境で変えておいて、それで識別する。もしくは設定ファイルか何かに書いておく。
WinとUnixを識別できればそれでいい、ってんなら>412で問題ない。
php_uname()関数の例にもディレクトリ・セパレータでOSを判別するコードが載っている。
414:nobodyさん
09/03/19 00:19:30
>>379
それ。
is_numeric()は"."を許したよーな気がする。
気をつけたほうがいいよ〜
D:\tools\php-5.2.8-Win32>php -r "var_dump( is_numeric( '1.5' ) ) ;"
bool(true)
415:nobodyさん
09/03/19 00:31:24
((string)(int) $string === $string)
これはどう?int判定
416:nobodyさん
09/03/19 00:34:08
PHP_OS
417:nobodyさん
09/03/19 00:35:21
>>399
行数っていうのとは違うけど
コメントを書かなくていいくらいに分かり易い
っていうのを目安にするといいっていう考え方もあるね。
コメントで「○○を処理する」とか入れるくらいなら
そのまとまりをprivateなメソッドにする感じ。
まぁ好き嫌いもあるけどねー。
418:nobodyさん
09/03/19 00:46:01
>>285
OOPっていう概念よりも
そもそもプログラミングにおいてクラス使うと何が便利?
って考えたほうが分かりやすいかもしんない。
419:nobodyさん
09/03/19 00:49:33
DIRECTORY_SEPARATORでOS判定なんてどう考えてもスジが悪いだろ
常識で考えて・・
420:nobodyさん
09/03/19 01:56:19
>>414
ctype_digit
でいいんじゃないの、バージョン注意だけど
421:nobodyさん
09/03/19 09:10:09 8+csUcRF
fsockopenのテストをしているのですが、
ローカルのサーバ(localhost)上ではオープンできないのでしょうか?
if(!$sock = fsockopen("localhost",80,$errNo,$errStr,10)){
echo "エラーです";
}
として開こうとしても、エラーになります。
422:nobodyさん
09/03/19 09:28:15
なんのために$errNoと$errStrを指定してるんだ
423:421
09/03/19 09:32:30
localhostを127.0.0.1にしたら出来ました・・。
424:nobodyさん
09/03/19 09:39:19
もしかして環境はVistaか?
最近のアップデートで、hostsを書き換えてlocalhostを消すものがあったと話題になってた。
3/10のWindows Defender更新でhostsが書き換えられる!? - スラッシュドット・ジャパン
URLリンク(slashdot.jp)
425:nobodyさん
09/03/19 11:06:59 GwakzSEQ
【PHPのバージョン】php5.2.8
【質問内容】
クラスのメンバ変数についての質問です。
あるメンバ変数が宣言されたかどうかを調べるにはどうしたらよいでしょうか?
代入はされていないのでissetではダメでした。
426:nobodyさん
09/03/19 11:10:22
get_object_vars
もしくは
get_class_vars
427:425
09/03/19 11:16:32
>>426
超速でありがとうございます
さっそくテストコードにかかってきます。
428:nobodyさん
09/03/19 11:18:46
is_nullのほうがいいよ
429:nobodyさん
09/03/19 11:37:30
issetのほうがいいよ
430:nobodyさん
09/03/19 12:38:06
普通こっちじゃねぇの。
URLリンク(jp.php.net)
431:nobodyさん
09/03/19 13:18:49
h1タグの部分を置換したいです。
もっと、スマートの方法ありますか?
(h1の要素は不特定、ない場合もあります。)
<?php
$file = "
<html><body>
<h1 id=\"news\" name=\"news\" style=\"size: medium;\">WBC速報</h1>
<p>4回裏 2 - 0</p>
</body></html>
";
preg_match_all('/<h1[^>]*?>(.*?)<\/h1>/is',$file , $match);
$tag = $match[0][0];
$title = $match[1][0];
$file = str_replace($tag,"<div>{$title}</div>", $file);
echo $file;
?>
432:nobodyさん
09/03/19 13:21:15
訂正 スマートな方法
433:nobodyさん
09/03/19 13:32:20
>>420
ctype_digitってマイナス値の場合falseになるから使えなくね
434:nobodyさん
09/03/19 14:15:42
>>431
何に置換したいのか書いてないよ
あと>>1
435:nobodyさん
09/03/19 21:43:36
まだやってんのか。
strval(intval($str)) === $str
でいいだろ、面倒くせえ。
436:nobodyさん
09/03/19 22:14:40
>>435
これはひどい
437:nobodyさん
09/03/19 23:11:37
>>420
その関数はバグがあるから使い物にならない
438:nobodyさん
09/03/20 04:10:54
URLリンク(phpspot.org)
439:nobodyさん
09/03/20 04:22:45
>>438
この人前も誰かにつつかれてキレてたよなw
440:nobodyさん
09/03/20 08:33:43
三行でまとめてくれ
441:nobodyさん
09/03/20 08:38:37
お前と同じで内容もロクに読まずに転載してるだけですよ、と言ってあげたい
442:nobodyさん
09/03/20 08:40:35
phpspotのアフィ厨がきもいのは確かだが、
「悪名高きda.me..@docomo.ne.jpを引っ掛ける一方で、dankogai+regexp@gmail.comを弾いてしまう」
ってのはどうなん?
ドキュモでda.me..@docomo.ne.jpが取得できる以上、
それをウェブアプリ側ではじくわけにはいかないじゃん
RFCを守るべきはdocomoであって、ウェブアプリは現実に準拠するしかない
443:nobodyさん
09/03/20 08:45:13
phpspotの人は正規表現について語らないほうがいいのでは
URLリンク(labs.cybozu.co.jp)
このトラウマを刺激されたから過剰反応したんだなw
444:nobodyさん
09/03/20 08:47:16
Diggのトップページやdel.icio.us/popularで表示されたページの概要を訳しているだけなんだから、
せめて自分で確かめてから紹介しようよw
>>phpspot
445:nobodyさん
09/03/20 08:57:25
>442
dankogai+regexp@gmail.com はRFCに準拠している。
ドキュモを弾くかはか方針次第だが、このアドレスを弾いてはいけない。
元々phpspotの提示していたコードが役に立たないのは確か。
出力例が「正しいかもしれない」「間違ってるかもしれない」な事からも明らか。
こういうのは「絶対正しい」「間違ってるかも」、もしくは「正しいかも」「絶対間違ってる」のいずれかを返さなければ糞の役にも立たん。
446:nobodyさん
09/03/20 09:47:11
準拠してようがおれはそんなメアドは通さねーぞwwwwwwwwwwwwwwwww
447:nobodyさん
09/03/20 09:59:17
URLリンク(d.hatena.ne.jp)
448:nobodyさん
09/03/20 10:02:52
プロバイダのメールアドレスをなるべき通したい場合は別にそこまでこだわる必要なし
+\とか記号を入れるメアドなんて普通の人は持ってないだろ
449:nobodyさん
09/03/20 10:23:25
>448
なんというか、ここにも馬鹿が多いな。
「食べやすい大きさに野菜を切るには」という記事に「カレーは野菜が大きいほうが美味しい」とか言ってるようなものだぞ、それ。
450:nobodyさん
09/03/20 10:31:42
それ話が通ってるじゃん
451:nobodyさん
09/03/20 10:49:03
RFCに準拠してさえすればいいってもんじゃない
452:nobodyさん
09/03/20 10:50:52
>>449
プロバイダやgmailを除いたメジャーなアドレスで記号付きのメールアドレスを取得できる所教えてください
453:nobodyさん
09/03/20 11:54:25 MICYHS4W
【OS名】debian etch
【PHPのバージョン】php5.2.0-8
PukiWiki Plus!で「ajaxtree.inc.php」プラグインを使おうとしたのですが
キャッシュファイルの作成が正常に行われず色々と調べてみていたところ
下記の部分でよくわからない動きをしていることがわかりました。 (ajaxtree.inc.php 198行目付近)
foreach ($pages as $page) {
if ($leaf[$page] === false) {
plugin_ajaxtree_update_cache($page);
}
echo $page . " " . $leaf[$page] . "<br>\n"; //debug
}
具体的には「plugin_ajaxtree_update_cache」関数が一度でも実行されると
その時点でループが終わってしまい配列の残りの要素が処理されなくなってしまうといった感じです。
(関数から戻ってきたあとのechoまでは処理されています)
ループ後の「$pages」の値には特に変化が無く、エラーも発生していませんでした。
なぜforeachが途中で止まってしまうのかわからずに困っています。
この場合、どういった原因が考えられるのでしょうか?
454:nobodyさん
09/03/20 11:55:01 uQ1BNnXR
トラックバックやpingの受信機能を作っています。
fsockopenで送信されたPOSTやGETを受け取ると思うのですが、
連続送信防止の処理って入れられるのでしょうか?
WEBページのフォーム処理からだと、cookieで制御できると思うのですが
fsockopenは出来ないような気がしています。
455:nobodyさん
09/03/20 12:00:40
>>453
display_errors
error_reporting
>>454
内容を比較すればいいのでは?
456:nobodyさん
09/03/20 12:02:10
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>449
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
457:nobodyさん
09/03/20 12:06:26
小飼の正規表現はda.me..@docomo.ne.jpを通せないだろ
RFCに準拠するばかりで現実で使えないんじゃ同じようにクソ
458:453
09/03/20 12:31:15 MICYHS4W
>>455
ありがとうございます。
該当するコードに特にエラーなどは発生していませんでしたが解決しました。
配列を関数の戻り値の参照として受け取っていたためおかしな挙動をしていたようでした。
$pages =& plugin_ajaxtree_get_pages();
失礼いたしました。
459:449
09/03/20 12:38:12
docomoの非準拠アドレスを通すかとか、gmailの無限アドレスを通すかとかは、メールアドレス正規表現とは別の問題だろ?
実装の問題じゃない。ビジネスロジックの問題だ。何をどこまで許容するかは技術の問題じゃない。
コーディングする奴が勝手に決めてはいけない問題だし、従って前提条件が提示されないと「正しい」コードなんぞ書けっこない。
何が「正しい」のか、仕様が決まってないんだから当たり前だな。
「正しい」メールアドレスを「RF2822準拠」と定めるなら、PHPSPOTや百式のコードは明白に間違っていて、小飼のコードは正しい。
docomoの非準拠アドレスを許容しなければいけない、とか、gmailの無限アドを拒否しないといけない、という条件下なら小飼のコードは間違っているだろう。
実際、小飼の出力メッセージはちゃんと「RFCに準拠しているか」で出るだろ。
あのコードが解こうとしている判定問題は「RFCに準拠しているか」であって、「一般社会で通用するメールアドレスか」じゃない。
それをてめえらは勝手に問題を取り替えてガタガタ抜かしてるだけなんだよ。これだからPHPerは馬鹿だとか言われるんだ。
RFCに準拠していないアドレスが通ったり、準拠しているアドがNGだったら文句を言うべきだが、それ以外は筋違いだ。
460:nobodyさん
09/03/20 12:41:36
じゃなんで正規表現をblogに書いちゃいけないの?
461:nobodyさん
09/03/20 12:47:51
>>459
RFCに準拠してる正規表現はブログに書いてもOK
RFCに準拠してない現実に即した正規表現はブログに書いたらNG
ってことですね、わかります
462:nobodyさん
09/03/20 13:09:05
>>459ってブログの張本人だろ
463:nobodyさん
09/03/20 16:03:22
>>459
自分ルールを持ち出したのは「PHPer」とか言って悦に入っている人だよな。
っていうか誰この人?
464:nobodyさん
09/03/20 16:20:44
ほとんどの無料有料サービスの登録時にRFCに100%準拠されたメアドは使えない件
465:nobodyさん
09/03/20 16:21:47
._-0-9a-zA-Zぐらいしかたいていのサービス登録では使えない件
何が言いたいかというとRFC必死だな(笑)
466:nobodyさん
09/03/20 18:48:51
弾もPHPERも文末判定に$を使っているが
$は行末判定なので最後に改行コードが付いてても通ってしまう。
ちゃんと\zを使えよ
弾&phpspotともどもm9(^Д^)プギャー!
467:nobodyさん
09/03/20 18:51:14
$が末尾の改行コードに一致するのってPHPだけじゃなくて?
468:nobodyさん
09/03/20 18:56:31
preg_matchはperl互換だからそれはないだろ
469:nobodyさん
09/03/20 19:01:48
perlが死滅した、といっても、
ある程度のシェアを取った言語なので、
perlの正規表現の文法は他の言語にも
そのまま受け継がれていくわけだな。
つまり勉強したことが無駄にならず
再利用できると。
シェアととると、こういう「いいこと」があるんだよな。
470:nobodyさん
09/03/20 20:16:44
何年か前にperl厨が騒いでた
その上でどんなスクリプトでも走るエンジンみたいのどうなったんだよ
えーこら
471:nobodyさん
09/03/20 22:34:03 oZ8fGjsV
javascriptがオンかオフかの情報を知りたいのですがどのような方法が妥当かわかりません
以下のような方法も考えたのですがページを移動するか更新しないとクッキーを読めないので困ってます
どなたかアドバイスお願いいたします
javascriptでクッキーを発行する
↓
クッキーが読み込めたらjavascriptがオン・読み込めなければオフ
472:nobodyさん
09/03/20 22:44:55
>471
処理の順序を考えれば分かるが、無理。
473:nobodyさん
09/03/20 22:53:31
ajaxでやればできるでしょ
474:nobodyさん
09/03/20 23:15:48
そもそも、ページを移動も更新もしてない状態で、サーバ側でJavascript有効かどうか判断しなきゃ
いけない状況って何だろう?
475:nobodyさん
09/03/20 23:17:56
その状況を考えられないならこの業界で食えませんよ
476:nobodyさん
09/03/20 23:23:33
ajaxでリクエスト飛んできたらon、飛んでこなかったらoff
477:nobodyさん
09/03/20 23:42:53
>>475
なんで?
Ajax使う前提なら、こんなことで悩まんでしょ。
有効な時にメッセージ出したいなら、Javascriptで出せば良いし、使えない時にメッセージ出したいなら
NOSCRIPT使えばいいし。
トップページへのアクセスだけで、Javascriptを有効にしてるかどうかサーバ側に記録を取りたいとか、そんな感じ?
478:nobodyさん
09/03/20 23:59:59
>477
だとしても、JavaScript経由で鯖にアクセスさせるだけだしな。
PHPではできない、というのは正しい。
まあ、質問が抽象的すぎるんでなんとも言えん。どうして質問掲示板の類の質問者は情報を出し惜しみするんだか。
479:nobodyさん
09/03/21 00:11:32
>>478
それはいいがかり。
おまえだって18世紀にペストにかかったら
「ネズミが運んできた病原菌のせいで感染しました」
とは医者には報告しないはずだ
480:nobodyさん
09/03/21 00:49:23
たとえのほうがわかりづらいってどういうことよ
481:nobodyさん
09/03/21 02:16:36
www
482:nobodyさん
09/03/21 02:24:45
そうか?非常に分かりやすい例えに感じたけど
483:nobodyさん
09/03/21 02:34:45
479=482wwwww
484:nobodyさん
09/03/21 19:33:45 Kz7V9K+/
掲示板を作るのですが共同で作る場合、どのようなシステムを導入するといいですか?
485:nobodyさん
09/03/21 19:35:17
>>484
git
486:nobodyさん
09/03/21 22:18:16
サーバサイドのプログラムが永久ループしたらどうやって止めるんですか?
そういうのがあると、レンタルサーバ屋に怒られるんですか?
487:nobodyさん
09/03/21 22:29:13
コンセント抜けばおk
488:nobodyさん
09/03/21 22:35:15
>>486
30秒で止まる。
489:nobodyさん
09/03/21 22:39:17
設定次第だがデフォルトは30秒
490:nobodyさん
09/03/21 22:46:46
止めるのは鯖屋の仕事だから好きなだけ無限ループさせておk
491:nobodyさん
09/03/21 23:10:45
とっくに想定済みなんですね。
ありがとうございました。
492:nobodyさん
09/03/21 23:18:28
まぁ鯖潰したら損害賠償だけどな
493:nobodyさん
09/03/21 23:38:44
>>492
そんなヤワな鯖ねーよ
494:nobodyさん
09/03/21 23:40:05
>>492
ちょっと中級者ぶりたい年頃だけど外してるの図
495:nobodyさん
09/03/22 01:29:46
いきなり本番とかやらなければ普通起こさないと思うけど>無限ループ
496:nobodyさん
09/03/22 01:34:00
よくCMSなんか見てると、全てのファイルの頭に
/**
*
* @package hogehoge
* @version $Id: index.php 0000 2010-01-01 14:00:00Z hogehoge$
* @copyright (c) 2010 fugafuga
* @license URLリンク(opensource.org) GNU Public License
*
*/
こんなの見かけるけど、これは手動で書いてるんですか?
まさかね?
497:496
09/03/22 01:35:02
ID
498:496
09/03/22 01:35:33 pWqW8Yq7
また間違えたorz
ごめんなさい
499:nobodyさん
09/03/22 03:37:07
>>494-495
マジレスつまらん
500:nobodyさん
09/03/22 05:17:23
すいません。CMSなどはHTMLファイルを生成するんですよね
メニューに一項目増えた場合 全部のHTMLページを
書き換える処理ってしてるんですか?
501:nobodyさん
09/03/22 06:09:27
>>500
テンプレートにして動的にしてる場合が多い気がする。
スタティックなHTML吐くのはあまり見たことがない。
502:nobodyさん
09/03/22 06:19:05
>>501
つまりmod rewriteってことですか?
素人ですいません。
503:nobodyさん
09/03/22 06:19:37
mod_rewriteがどう関係あるんだ?
504:nobodyさん
09/03/22 06:22:33
つまりHTMLじゃないけれど、HTMLとしてって方法ですか?
自分はプログラムで呼び出すか、SSIしか思い浮かばないです
505:nobodyさん
09/03/22 06:23:55
プログラムで呼び出せば?
506:nobodyさん
09/03/22 06:25:11
CMSってHTMLファイルを作っていくイメージがあったんです
すいません。ただ、require include で呼び出したページは
グーグルランクつきにくいです
SSIにしてみたところ、それよりはわずかにつきやすかったです
CMSがHTMLファイルなら、どうやって外部からメニューを
呼び出しているかわからなかったので
507:nobodyさん
09/03/22 06:28:00
別に動的でもSEO考慮する方法はいくらでもあるべ?
508:nobodyさん
09/03/22 06:30:30
>>507
具体的に教えて下さい お願いします
もっどりライトは厳しい感じがしました 結果が
509:nobodyさん
09/03/22 06:31:26
結果がって?
510:nobodyさん
09/03/22 06:32:34
>>509
グーグルランクのつきが明らかに悪いです(個人の弱小HP)
そしてSSIに変えたところ、3つほどつきました
現在SSIのほうがPHPによる外部ページ呼び出しよりランクがつきやすいです
内部は全く変えてないです
511:nobodyさん
09/03/22 06:33:30
じゃSSIでいいじゃん
512:nobodyさん
09/03/22 06:37:40
(;^Д^) そうですか
513:nobodyさん
09/03/22 07:18:32
そう
514:nobodyさん
09/03/22 09:24:55
ひどい自演を見た><
515:nobodyさん
09/03/22 09:59:58
>>492=499
自分はマジレスじゃなかったことにしようとして外してるの図
516:nobodyさん
09/03/22 10:04:27
>>492がマジレスなわけないだろ。初心者は半年ROMれよ
517:nobodyさん
09/03/22 10:06:20
またその話かよ
A型はひつこいな
518:nobodyさん
09/03/22 10:11:46
ホントに鯖潰したら、普通に損害賠償だけどな。
519:nobodyさん
09/03/22 10:11:46
初心者(笑)は半年ROMれ(笑)よ
520:nobodyさん
09/03/22 10:24:48
普通は損害賠償とか面倒なことに発展する前に、凍結されたり追い出されたりする
Nucleusでアクセス解析いれたら劇重になって、翌日、鯖停止->強制解約になったよ。オレ
521:nobodyさん
09/03/22 10:24:54
>>515
図星で逆ギレの図
522:nobodyさん
09/03/22 10:56:19
>>492=499=521
m9
523:nobodyさん
09/03/22 11:33:37
粘着すぎる いつもむかむかしてるのかな
524:nobodyさん
09/03/22 11:39:35
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ
525:nobodyさん
09/03/22 11:46:58
>>484
バージョン管理システムを導入するといいです
>>496
いくつかのIDEでは/**と入れて改行すると自動で作ってくれます
EclipseのPHPプラグインあたりだと
最初に関数を定義してからその上に/**を入れて改行すると
下の関数を見て引数があったら@param
返り値があったら@returnを生成してくれます
その他については必要であったら自分で記述するか
デフォルトの値として設定可能なものなら設定するしかありません
526:nobodyさん
09/03/22 11:49:05 dhNIUg3n
多次元配列へのアクセスを動的にやりたいのですが、
どうすればいいですか?
get_multi_array($array,array('hoge','fuga','poge'))
→$array['hoge']['fuga']['poge']を取得
こういう動作をさせたいのです
527:nobodyさん
09/03/22 12:30:00
>>492=499=521=523=524
立場が悪くなって第三者のフリをしようとしてるけど外してるの図
528:nobodyさん
09/03/22 12:43:51
>>527
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ
529:nobodyさん
09/03/22 12:56:54
>>528
無視できない時点で同類だって教わらなかったの?
というより自演バレバレだよ初級者君(笑)
530:nobodyさん
09/03/22 12:57:11
おまえらケンカしろ byひきこもり塾っぽいの
いいんだよ byスレ回り先生
自作自演する若者はためが無い by湯浅誠
自作自演格差社会 〜492のレス能力格差がスレッドを引き裂く
>>528は、新自由主義者
何でも排除して、格差を作ろうとする
531:nobodyさん
09/03/22 13:10:43
>>529
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ
532:nobodyさん
09/03/22 14:07:27 ofSdd/CM
モバイルからなのでID固定できませんが質問です
"<a href='".$value."'>"などとしたときに
htmlspecialcharsだけでは変数にscript:〜が含まれていた場合に回避できませんが
変数の前に"URLリンク(sample.com)"とURLがあれば問題ないのでしょうか
実際Firefox,safariなどでは普通にnot foundになります
533:nobodyさん
09/03/22 14:09:38
>>526
こんなのどう?連想配列でも多分問題ないと思う。
<?php
function get_multi_array(array $a, array $keys) {
$tmp = &$a;
foreach ($keys as $key) {
if (! is_array($tmp) || ! array_key_exists($key, $tmp)) return null;
$tmp = &$tmp[$key];
}
return $tmp;
}
// 以下テスト
$array =array(
array(
array(1,2,3), array(4,5,6),
),
array(
array(7,8,9), array(11,12,13), array(14,15,16)
)
);
var_dump(get_multi_array($array, array(0, 1, 2)));
534:nobodyさん
09/03/22 14:32:22
>>529は見えない敵と戦ってるとみた
535:nobodyさん
09/03/22 14:33:52
こんな過疎板で煽り合って自分が上にしたい奴ってうつ病だろな
536:nobodyさん
09/03/22 15:07:18
>>535
よくぞ見抜いた・・
社会不適合者な俺万歳
537:nobodyさん
09/03/22 17:29:33 XWTxCtFo
test
538:nobodyさん
09/03/22 17:35:05 XWTxCtFo
<form action="log/200902.htm" method="POST">
<input type="text" name="title" value=""><br>
<textarea cols="80" rows="7" name="text"></textarea>
<input type="submit" value="send">
</form>
<?php
$title="<h2>".$_POST["title"]."</h2>";
$text='<div class="text">'.$_POST['text'].'</div>';
if ( get_magic_quotes_gpc()) {
$title = stripslashes($title);
$text=stripslashes($text);}
$text = nl2br($text);
$log = 'log/200902.htm';
$lock = 'lock.txt';
$lock_fp = fopen($lock,"w");
flock($lock_fp,LOCK_EX);
$old_log = file_get_contents($log);
$fp = fopen($log,"w");
fwrite($fp,$title);
fwrite($fp,$text);
fwrite($fp, $old_log);
fclose($fp);
flock($lock_fp,LOCK_UN);
fclose($lock_fp);
?>
これ、とあるサイトから引用してきたスクリプトなんですけど、どうやっても$_POSTの値を取得できずにlog/200902.htmの内容が<h2></h2><div class="text"></div>と内容が空になってしまいます。
POSTの値を取得するにはどうしたらいいんでしょう?どなたか知識のある方、ご教授下さい。
539:nobodyさん
09/03/22 17:37:44
とりあえず、<?php の直後で
var_dump($_POST);exit;
540:nobodyさん
09/03/22 17:39:58
それと form のアクションプロパティはそれでいいのか?>action="log/200902.htm"
自身に送るなら空白
541:nobodyさん
09/03/22 17:50:34
>>535
よくぞ見抜いた・・
社会不適合者な君万歳
542:nobodyさん
09/03/22 17:52:24 XWTxCtFo
早速ありがとうございます。var_dump($_POST);exit;としてみたのですがarray(0) { }としか表示されません...
formのアクションプロパティは合ってるかと思いますが…。log/200902.htmというファイルに書き込みたいので。
543:nobodyさん
09/03/22 17:55:25
formのactionには
データを渡すスクリプトのパスを書くんだよ
どのファイルに書き込むかとかは、
スクリプトの方で処理すること
$_POSTの中身が空の配列ってことは、
データが渡されてないってこと
544:nobodyさん
09/03/22 18:02:21 XWTxCtFo
あ!formのaction属性を空にしてみたらこんな表示が出ました。
array(2) { ["title"]=> string(4) "test" ["text"]=> string(4) "test" }
これはデータが渡されてるということなんでしょうか。しかしlog/200902.htmの中身は相変わらずです…。
545:nobodyさん
09/03/22 18:09:39
exitしてるからログは書き込まれないよ
それはそうとまずHTMLを理解しないと
546:nobodyさん
09/03/22 18:12:30 XWTxCtFo
すみません…。あまりにも無知でした。exitすると処理が終了するということはリファレンスサイトで見たはずなのに…。恥ずかしいです。
HTMLにも理解がありませんでした。重ね重ね恥ずかしいかぎりです…。
547:nobodyさん
09/03/22 18:17:48 XWTxCtFo
できました!ご教授下さった方のいう通りにしたらlog/200902.htmに書き込むことができました!
本当に無知な私にここまで親身になってくれてありがとうございました。本当に感謝します。
また何かわからないことがあったら自分で調べて、それでもわからなかったらまたこのスレにお世話になると思います。その時はどうか暖かい目で見てやってください…
548:nobodyさん
09/03/22 18:27:06
ログファイルがhtmってのなんだかな〜
549:nobodyさん
09/03/22 18:34:08 XWTxCtFo
はい。htmlにさせて頂きました...
550:nobodyさん
09/03/22 18:45:54
いやそういうことをいってんじゃないんだけど
まあいいや
551:nobodyさん
09/03/22 19:52:51
普通はログはテキストのまま、つまり記事本文だけを保持する。
例えば2chは、以下のようなテキスト形式でデータを保存している(本当は違うんだが、まあ割愛)。
nobodyさん<><>2009/03/22(日) 18:34:08 ID:XWTxCtFo<> はい。htmlにさせて頂きました... <>
そのログファイルの内容を読み込んで、HTMLとして整形して書き出すPHPで本文を表示させるわけだ。
HTMLで保持しない理由はいくつかある。パッと思いつくのは
柔軟性
例えば、表示されるHTMLを別の形にしたいとか、RSSも書き出したい、という時に再利用しづらい。
記事削除passをつけたいとか、データ保持先をDBにしたいとか、色んな拡張性が失われたりもする。
セキュリティ
本文に<script>alert('うけけけけけ');</script>と書かれたらどうなる?とか。
どちらにせよ対策は必要なのだが、ログをHTMLとして持っていると、どこで対策すりゃいいのかが曖昧になりやすい。
容量
無駄にデカくなる。大した問題じゃないが。
552:nobodyさん
09/03/22 20:56:06
実体参照化してからHTML化すれば?
553:nobodyさん
09/03/22 23:17:35
やり方にもよるかな
ログをhtmlとして書き出す掲示板はkentも作ってたな
554:nobodyさん
09/03/22 23:23:17
やり方にもよるって・・
ログをHTMLとして書き出しておくのは
論外といったら失礼かもしれないけど、
明らかに保守性なさすぎじゃないか?
555:554
09/03/22 23:29:53
書き出しておく・・じゃなくて
保持しておくだった
556:nobodyさん
09/03/22 23:30:00
テンプレートとログを分けておいて、記録するときにテンプレートを元にhtml化すればおkだけどな
557:nobodyさん
09/03/22 23:30:47
XMLみたいなもんと思えば、アリじゃないかとも思う。
一件一行で、ヘッダとフッタを除いた状態で保存するなら、そんなに保守性もわるくないと思うが。
558:nobodyさん
09/03/22 23:34:55
閲覧が多くて書き込みが少ないのならhtml化してもいいかな
559:nobodyさん
09/03/22 23:43:37
あめぞうスクリプト見れ
560:nobodyさん
09/03/22 23:49:52 cLpptsUH
現在自分が作成しているPHPとMySQlを使ったログイン認証システムで
穴がないか不安になってきたので、質問します。
要点のみを記載します。
・ID(又はメールアドレス)とパスワードをフォームに入力して、
MySQL内の情報を照合
・正しければトークン用のコードを発行し、ユーザ情報を更新
(テーブルのtokenフィールドに作成した値を追加)
・その他、セッション変数にはログイン時のUAとIPアドレスを代入
・各ページアクセス毎にセッション情報が正しいかをIFで調べる
(会員情報編集などの場合、ユーザIDとトークンコードが正しいか照合)
・パスワードはmd5で保存
と言うことをしています。他に「これもしろ」と言うことはありますでしょうか?
561:nobodyさん
09/03/22 23:50:51
ソースを見せるのが早い
562:nobodyさん
09/03/22 23:51:39
ID(又はメールアドレス)とパスワードをフォームに入力して、
MySQL内の情報を照合
(1)この時に、SQLインジェクション対策はされているのか?
563:nobodyさん
09/03/22 23:52:30
md5は破られるのでsha2にしたほうが無難
564:nobodyさん
09/03/22 23:52:40
>>560
そういうしつもんすると>>562みたいな質問がきりがなく出てくるのでソース出したほうが早い
565:nobodyさん
09/03/23 00:10:54
>>533
やっぱり再帰ですね
ありがとうございました
566:560
09/03/23 00:16:39
>>562
しています。まず入力値にhtmlspecialcharsをかけて
DBアクセス時にmysql_escape_stringをしています。
ソースに関してですが、莫大な量になるので掲載を控えます。
それにソースや構文の組み立てを聞きたいのではなく、
自分の足りない知識・誤っている知識を指摘していただきたく思い、質問しました。
567:nobodyさん
09/03/23 00:29:46
( ゚д゚)
568:nobodyさん
09/03/23 01:02:57
>>566
>まず入力値にhtmlspecialcharsをかけて
らめぇええええ
569:nobodyさん
09/03/23 01:35:27
>>565
否。ただのループ。
570:nobodyさん
09/03/23 02:53:59 RPfvHZ0v
test.txt
> 0123456789
test.php
> $fp = fopen("test.txt", "r");
> while(!feof($fp)) {
> print fread($fp, 1);
> flush();
> sleep(1);
> }
> fclose($fp);
test2.php
> $fp = fopen("test.txt", "w");
> fwrite($fp, "aaaaaaaaaa");
> fclose($fp);
>
> $fp = fopen("test.txt", "r");
> print fread($fp, 10);
> fclose($fp);
test.phpが走ってる最中にtest2.php走らせても
test.phpの出力にtest2.phpの書き換えは反映されなかった。
読み出しに関してはルーズな実装してもOKって事?
571:nobodyさん
09/03/23 05:27:55
flushされるタイミングの都合で、たまたまじゃないかなぁ。
572:nobodyさん
09/03/23 05:29:12
良く見たら明示的にflush は、してるのか。
ごめん。
573:nobodyさん
09/03/23 22:30:27
>>560とは別人で悪いんだけど、気になったからよこやり入れさせて。
>>568
ID(もしくはメールアドレス)は、必ずしもブラウザで表示するわけじゃないから、
・DB内の情報と照合する時 → mysql_escape_string(mysql_real_escape_string)
・ブラウザに表示する時 → htmlspecialchars
みたいにする、ってことでおk?
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'<'って保存されてしまうからっていうことかな。
見当違いだったらすまん。
574:nobodyさん
09/03/23 22:33:45
連続書き込みスマソ
>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。
575:nobodyさん
09/03/23 22:38:01
そうやって保存されてしまうからっていうのと、
保存されてしまうことによって再利用するとき不便になるからだね
576:nobodyさん
09/03/23 22:58:16
test
577:nobodyさん
09/03/23 23:07:14
>>575
なるほど、いい勉強になった。
ありがとう。
578:nobodyさん
09/03/23 23:45:08 uVBii4+5
サーバを再起動したらapacheのerr.logに
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?
579:nobodyさん
09/03/23 23:53:02
>>573-575
でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?
580:nobodyさん
09/03/24 00:01:55
どこでサニタイズするかは勝手だが、
100%ってことはないので出口でサニタイズしろってエロい人が言ってた
581:nobodyさん
09/03/24 00:17:34
サニタイズニダ!
582:nobodyさん
09/03/24 00:41:05
>>578
PHPのバージョンは?
DOS窓から、php -mや、php -iって打っても、エラー出る?
5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?
583:nobodyさん
09/03/24 04:21:02
すいません。PHP勉強して半年になります。順調に進んでいたのですが
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?
584:nobodyさん
09/03/24 04:25:00
そりゃechoですからね
出力だけしてくださいよ
585:nobodyさん
09/03/24 04:25:16
それは、君が>>1を読めない子ちゃんだから。
586:nobodyさん
09/03/24 04:26:30
すいません、なぜこれでバグになるかわからないんです
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )
587:nobodyさん
09/03/24 04:26:58
>>584
おまいさんは、輪をかけてドアホーみたいだけどな
588:nobodyさん
09/03/24 04:28:52
>>586
バグってないじゃん。仕様通り
文字列の1文字目を置換してる
589:nobodyさん
09/03/24 04:30:23
バグって増すよ
<?php
$a[0] = 'aaa';
$a[0][1] = 'jjjjk';
print_r($a);
Array ( [0] => aja )
590:nobodyさん
09/03/24 04:32:35
>>589
バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。
591:nobodyさん
09/03/24 04:34:04
>>590
そうなるんですか。知りませんでした。今までやってきて
そんな配列あったんですか 適当に使ってました
592:nobodyさん
09/03/24 04:34:50
>>591
マニュアルに書いてあるよ。
593:nobodyさん
09/03/24 04:35:22
自分は初心者なので、配列=箱としか書いてあるものをみたことが
なかったんです。助かりました>>1-589
594:nobodyさん
09/03/24 04:39:30
変数を array で初期化しないで、いきなり配列として使うのは、どうも生理的・本能的にダメ。
595:nobodyさん
09/03/24 04:42:07
arrayで初期化しても置き換えられますよ
自分初心者だったのでこんなのあったんだとびっくりしました
596:nobodyさん
09/03/24 04:46:27
残念ながら>>594が言ってるのは次元の違う話だ
PHP使いは適当がモットーだから気にしなくていい
597:nobodyさん
09/03/24 04:49:11
>>596
そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました
598:nobodyさん
09/03/24 07:45:46
2重配列って呼び方であってる?
599:nobodyさん
09/03/24 07:53:32
2次元配列じゃないよ。そのケース。
単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ
600:586
09/03/24 08:34:05
難しいなあそんなの出てこなかった
初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。
601:nobodyさん
09/03/24 08:34:37
そりゃ初心者本だからだろ
602:nobodyさん
09/03/24 08:52:05
>>589
バグ
>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345
603:nobodyさん
09/03/24 08:55:32
>>602
いや、だからそれとやってることは一緒だろ
604:nobodyさん
09/03/24 08:56:49
602が勘違いしてるんじゃないのかね
605:nobodyさん
09/03/24 09:01:48
コンパイラ言語はデータ型ちゃんと指定するから
静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている
606:nobodyさん
09/03/24 09:45:45 VfITkfEn
>>582
versionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました
C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。
C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、
607:586
09/03/24 19:06:44
誰かプロの人
$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい
608:nobodyさん
09/03/24 19:09:04
>>606
記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。
以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。
609:nobodyさん
09/03/24 20:03:31
>>607
>>1
610:nobodyさん
09/03/24 20:04:24
>>606
書いてないから確認しとくけどinclude_pathの設定は?
611:nobodyさん
09/03/24 20:09:50
>>607
置き換わる理由は仕様だから。それだけ。
$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";
$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}
echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";
612:nobodyさん
09/03/24 20:14:05
>>606
併せて、php.iniで、extension_dirがC:¥PHP¥extになってるか確認してみて。
613:nobodyさん
09/03/24 20:15:53
すまんinclude_path関係ないね
614:nobodyさん
09/03/24 20:36:16
>>606
phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。
以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。
615:nobodyさん
09/03/24 20:37:10
始めの頃ありがちw
616:nobodyさん
09/03/24 21:07:22 /zsLtnA9
クラスの数が多くなってきたので(__autoloadで読み込み)
複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします
617:nobodyさん
09/03/24 21:09:24
計れば良いのでは?
618:nobodyさん
09/03/24 21:18:30
>複数クラスを一つのファイルにまとめたら速くなるのではと
再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな
619:606
09/03/25 00:12:15 4yhBz/QX
みなさんたくさんのレスありがとうございます
>>612
そうなってました
>>614
C:\WINDOWS でした。正しいですよね…
>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな
620:nobodyさん
09/03/25 00:32:37
>616
ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。
ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。
621:nobodyさん
09/03/25 01:59:46
>>616
環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。
自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。
622:nobodyさん
09/03/25 11:16:26 yQlt60AA
PDOで永続接続を使っている場合、prepareを使うと2回目以降の実行が効率化するんでしょうか
それとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか
623:nobodyさん
09/03/25 11:18:39
prepareって接続してんの?
624:nobodyさん
09/03/25 15:06:05 Ijn9qBql
htmlspecialchars($var, ENT_QUOTES, 'utf-8')
でhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#〜;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?
625:nobodyさん
09/03/25 15:15:24
出力するときに&に置換すればいいじゃん
626:nobodyさん
09/03/25 16:45:47
フォームの処理でmethodがpostの場合、
一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?
header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。
627:626
09/03/25 16:47:05 7ip+uIiL
すみません、ID隠してました・・・
628:nobodyさん
09/03/25 17:24:35
>>626
ブラウザの仕様なのでPHPでどうこうできる問題じゃない
629:nobodyさん
09/03/25 19:52:08 Ut4OfJaE
俺のマシンはwinXPの32ビットで4Gのメモリを積んでます。
システムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。
スペックはアパッチ、PHP5
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4735日前に更新/244 KB
担当:undef