5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :nobodyさん:2006/12/21(木) 13:42:19 ID:???
PHPに関する質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ

2 :nobodyさん:2006/12/21(木) 13:42:50 ID:???
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
【PHP】下らねぇ質問はここに書き込みやがれ 28
http://pc8.2ch.net/test/read.cgi/php/1157284868/
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/

3 :nobodyさん:2006/12/21(木) 13:43:23 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/

4 :nobodyさん:2006/12/21(木) 13:43:52 ID:???
関連スレ
注:昔は本スレ(PHP質問スレ)というのが別にあったけど、今はここが本スレです。

◆超初心者を自覚してる方ははこちらへどうぞ
くだすれPHP(超初心者用)2
http://pc8.2ch.net/test/read.cgi/php/1164617202/

◆その他
http://pc8.2ch.net/php/subback.html
PHP関連スレは非常に多いのでこの中でブラウザのCTRL+F等で「PHP」を検索!

5 名前:nobodyさん[sage] 投稿日:2006/12/08(金) 04:24:36 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。

5 :nobodyさん:2006/12/21(木) 13:44:23 ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40  
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください

6 :nobodyさん:2006/12/21(木) 13:44:54 ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。
1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
目の前で生じている現象をそのまま具体的に書くなどもっての外。
事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
"どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
絶対に避ける。
8. 情報は小出しに。

「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。
まちがっても「エスパーの方,回答お願いします」
なんて痛い質問するな。つうか氏ね。

7 :1:2006/12/21(木) 13:52:35 ID:???
>>4で前スレの4+5を一緒に貼ってしまってる…。吊ってくる。

8 :nobodyさん:2006/12/21(木) 13:54:46 ID:???
>>1乙イ`

9 :nobodyさん:2006/12/21(木) 14:01:22 ID:???
すみません、何かfunctionを使ったらエラーが出るんです。
急いでいるので教えてくれませんか???

10 :nobodyさん:2006/12/21(木) 14:05:06 ID:???
>>9
私も急いでいるので答えられません。

11 :nobodyさん:2006/12/21(木) 14:06:18 ID:???
>>1

エスパーきぼんぬも入れてくれてありがとう。

>>9
急ぐのをやめればOK

12 :nobodyさん:2006/12/21(木) 14:09:25 ID:???
前スレでも書いたんだけどテンプレにこれもいれて欲しかった・・
過去ログが大量にあされるから、次スレでいれてくれ
http://makimo.to/2ch/pc8_php/index.html

13 :nobodyさん:2006/12/21(木) 14:17:09 ID:???
「年内で終了なんだよな」というのが気になったので、あえて入れないままにしました。ごめん。
今後は●持ち頑張れなのかもしれません。

14 :nobodyさん:2006/12/21(木) 14:22:37 ID:???
12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html

01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row["id"] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。

15 :軟式PHP:2006/12/21(木) 14:24:43 ID:???
require_once…使ってる('A')

16 :nobodyさん:2006/12/21(木) 14:33:31 ID:???
>>15
俺もだ・・・
これはrequireかincludeにかえたほうがいいのかな

17 :nobodyさん:2006/12/21(木) 14:52:49 ID:???
>>14
03と05が為になった。
10は?
後ろのidは定数?

18 :nobodyさん:2006/12/21(木) 14:53:11 ID:???
>>15
本とかwebでサンプル見ると、普通に使ってるよね。
>>16の言うとおり変えたほうがいいのかな?

19 :nobodyさん:2006/12/21(木) 14:54:12 ID:???
>>16
そらー、多重読み込みしないように気を遣って
無条件に読み込むようにすれば速いでしょう。
でも多数のincludeファイル間で相関があるなら
メンテナンス性を考慮するとonceが必要だと思うけどね。

明らかに多重読み込みを防止する必要が無い場面でまで
onceを使うなよ、って程度でいいんじゃないか?

20 :nobodyさん:2006/12/21(木) 14:56:07 ID:???
>>14
07が意外だ…str_replaceってそこまで遅いのか!?

21 :nobodyさん:2006/12/21(木) 14:58:00 ID:???
ページの最初にheaderとして使う場合はincludeでよさげかな

22 :nobodyさん:2006/12/21(木) 14:58:37 ID:???
じゃあおれが夜中ベンチマークとって調べてみるよ


23 :nobodyさん:2006/12/21(木) 14:58:50 ID:???
>>17
$row[id]と書いた場合、まずdefine定義の「id」を探して
それが無かった場合に"id"という文字列として扱われるから
その検索にかかる時間の話だと思われ。
無駄な検索処理を避けよう!ってのは02、03、04も同様かと。

24 :nobodyさん:2006/12/21(木) 15:00:53 ID:???
$data = array(
'1'=>array('type'=>'hoge', 'age'=>22),
'2'=>array('type'=>'foo', 'age'=>13),
...
);
こんな配列があった時、
$data[1]や$data[2]や$data[3]などをランダムに入れ替えたいのですがどのような方法があるでしょうか?
簡単に言うと
$data = array(
'1'=> array('type'=>'foo', 'age'=>13),
'2'=>array('type'=>'hoge', 'age'=>22),
...
);
こんな感じで、$data[$1]ここの$1以下をランダムで挿げ替えたいのです。
shuffle($data)ではできませんでした。。

25 :nobodyさん:2006/12/21(木) 15:10:12 ID:???
$msg = "MIME-Version: 1.0\n";
〜 省略 〜
$msg .= "From: $this->m_from\n";
$mp = popen("/usr/sbin/sendmail -f $this->m_from $this->m_to", "w");
fputs($mp, $msg);
pclose($mp);

今までメール送信するときはこの用にsendmailを使ってきたのですが、
qmailで同じようなことを行う方法をご存知ないでしょうか。
よろしくお願い致します。

26 :nobodyさん:2006/12/21(木) 15:22:11 ID:???
>>24
shuffleでできたけど・・・・

27 :nobodyさん:2006/12/21(木) 15:23:48 ID:???
>>25
そんな変なメール送信方法、使ったことありません。
むしろそんだけ単純な方法なら簡単にqmailに変えられるんじゃない?
qmailのsendmailラッパーを使えば見た目sendmailで中身qmailとかできるでしょ。

28 :nobodyさん:2006/12/21(木) 15:25:36 ID:???
mail関数あるのに・・・

29 :nobodyさん:2006/12/21(木) 15:26:43 ID:???
>>26
せっくっす

30 :nobodyさん:2006/12/21(木) 15:29:00 ID:???
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)

31 :nobodyさん:2006/12/21(木) 15:33:59 ID:???
>>30
自治厨うざい

32 :nobodyさん:2006/12/21(木) 16:04:28 ID:???
そういえばどこかに自作関数公開するスレなかったっけ?
こんなの作ったんだが使えるかな?
北緯東経より二点間の距離をメートルで返す

function gps($NA,$EA,$NB,$EB){

list($NA1,$NA2,$NA3,$NA4) = split("[.]",$NA);
list($NB1,$NB2,$NB3,$NB4) = split("[.]",$NB);
list($EA1,$EA2,$EA3,$EA4) = split("[.]",$EA);
list($EB1,$EB2,$EB3,$EB4) = split("[.]",$EB);

$q1 = round($NA1+(($NA2/60) + (($NA3.".".$NA4)/3600)),6).",+".round($EA1+(($EA2/60) + (($EA3.".".$EA4)/3600)),6);
$q2 = round($NB1+(($NB2/60) + (($NB3.".".$NB4)/3600)),6).",+".round($EB1+(($EB2/60) + (($EB3.".".$EB4)/3600)),6);

$NA = $NA1 + ($NA2 / 60) + ($NA3 / 3600) + ($NA4 / 3600000);
$EA = $EA1 + ($EA2 / 60) + ($EA3 / 3600) + ($EA4 / 3600000);
$NB = $NB1 + ($NB2 / 60) + ($NB3 / 3600) + ($NB4 / 3600000);
$EB = $EB1 + ($EB2 / 60) + ($EB3 / 3600) + ($EB4 / 3600000);


33 :続き:2006/12/21(木) 16:05:07 ID:???

$NA = 3.1415926535 * $NA / 180;
$EA = 3.1415926535 * $EA / 180;
$NB = 3.1415926535 * $NB / 180;
$EB = 3.1415926535 * $EB / 180;

$NA = $NA - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NA);
$NB = $NB - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NB);

$c = cos($NA)*cos($NB)*cos($EA-$EB)+sin($NA)*sin($NB);
$s = sqrt(1-($c*$c));
$t = $s/$c;
$z = atan($t);
$z = $z * 6369000;

if($z){
return $z;
}else{
return FALSE;
}
}

34 :nobodyさん:2006/12/21(木) 16:09:56 ID:???
>>14,20
ttp://jigen.aruko.net/archives/433/

35 :nobodyさん:2006/12/21(木) 16:21:03 ID:???
>>32
よくわかんないけどすげ〜
あなたのサイト教えて

36 :nobodyさん:2006/12/21(木) 16:23:35 ID:???
>>35
ごめん、まだサイト持ってないです
就職活動中だがポートフォリオない俺オワタwwww

----------------------------------------------------
(使用例)
//大阪
$osaka_n = "34.41.56.713"; //北緯
$osaka_e = "135.29.53.705"; //東経

//兵庫
$hyogo_n = "34.41.27.261"; //北緯
$hyogo_e = "135.11.50.825"; //東経

$result = gps($osaka_n,$osaka_e,$hyogo_n,$hyogo_e);
echo $result;
----------------------------------------------------

▼結果表示▼
27566.2781881

----------------------------------------------------

37 :nobodyさん:2006/12/21(木) 16:29:17 ID:???
あんまり利用頻度は低そうだけどすごいと思うよ

38 :nobodyさん:2006/12/21(木) 16:38:03 ID:???
>>23
解説ありがとう。
PHP暦長いつもりだけど、define定義の「ID」が未定義の場合、
”ID”という文字列として扱われることを知らなかったよ。

でも個人的にはいやな仕様だな。
バグの原因になるような気がする。

39 :nobodyさん:2006/12/21(木) 16:58:28 ID:/jd0802W
少しご質問。
foreachでA配列を回しDBにインサートしていっているのですが
A配列の最尾からインサートしていくという処理は可能なのでしょうか。



40 :nobodyさん:2006/12/21(木) 17:05:09 ID:???
>>39
自分に敬語使うようなやつには教えな〜い

41 :nobodyさん:2006/12/21(木) 17:16:31 ID:???
>>38
notice errorが出るから判るよ
E_NOTICE消してたらだめだけど

42 :nobodyさん:2006/12/21(木) 17:17:39 ID:???
>>39
array_reverse

43 :nobodyさん:2006/12/21(木) 17:19:18 ID:/jd0802W
>>40
A配列のcountをとってfor文から行う事で解決しましたん!

44 :nobodyさん:2006/12/21(木) 17:20:40 ID:/jd0802W
>>42
ありがとう
array_reverse 調べてやってみます!

45 :nobodyさん:2006/12/21(木) 17:45:07 ID:???
MySQL3.23で使っていたデータベースを
別PCの5.1のに移したら
phpMyAdminで構造のとこ見たら何かエラーでてる・・・
やっぱり同じバージョンで統一しておかなきゃダメなのかな
っていっても、既に3.23の配布は終了しているわけで

46 :nobodyさん:2006/12/21(木) 17:47:16 ID:???
>>41
thx
開発中はいつもE_ALLに指定してるので大丈夫そうだね。

47 :nobodyさん:2006/12/21(木) 18:00:53 ID:???
>>45
何かエラーじゃ全くわからんが
MySQL は 4.0 以前と 4.1 以降では全く別物

48 :nobodyさん:2006/12/21(木) 18:15:47 ID:???
>32
地球は完全球体じゃないという野暮なツッコミはなしですか

49 :nobodyさん:2006/12/21(木) 18:20:45 ID:???
>>48
なしです

50 :nobodyさん:2006/12/21(木) 18:59:59 ID:ZaC7YilI
log4php使ってる方いますか?
php5でも正常に使えるのでしょうか?

51 :nobodyさん:2006/12/21(木) 19:33:06 ID:???
>>47
そか、ありがと
3がDLできるとこってもうないのかねぇ・・・

52 :nobodyさん:2006/12/21(木) 21:07:30 ID:???
3どころか4.0自体がもう旧式だと思う・・・

53 :nobodyさん:2006/12/21(木) 21:08:45 ID:???
>>51
4.0.xであれば3との親和性は十分高いから、4.0.xをインストールするのが適切。
4.1以降でさえなければまず大丈夫じゃない?

54 :nobodyさん:2006/12/21(木) 21:39:49 ID:/jd0802W
えと、URLに付属するGETを削除する方法ってありますか。

セルフ.php?action=tatsunoko&id=pro

二回目はidを有効にしたくないのです!。


55 :nobodyさん:2006/12/21(木) 21:44:38 ID:???
セルフ.php?action=tatsunoko&id=pro

      ↓

セルフ.php

56 :nobodyさん:2006/12/21(木) 21:57:03 ID:???
>>54
2回目って何?
Locationヘッダで自分自身に1度飛ばしちゃえばいいのかなーって内容に見えるけど。

57 :nobodyさん:2006/12/21(木) 22:16:14 ID:o0k/ncWb
mysqlを4.1(rpm)に、phpを5.2(コンパイル)にアップしました。
phpinfoで確認すると、cliでは mysqlの Client API version が 4.1.22 となりますが
webブラウザから確認すると 3.23.58 となっています。
apacheモジュールとcliではmysqlクライアントは別のものを使うんでしょうか?
Client API versionを上げるにはどうしたらいいのでしょうか。

58 :nobodyさん:2006/12/21(木) 22:41:50 ID:???
入力→確認→送信
でセッション使ったんだが、クリアするのに
unset($str)でだいじょぶかな?
前スレにunsetはやめたほうがいいようなこと書いてたし

59 :nobodyさん:2006/12/21(木) 22:47:07 ID:???
だからunset使わず、$a="";や$a=array();等使えと何度いったら(ry

60 :nobodyさん:2006/12/21(木) 22:55:04 ID:???
>>58
根本的に間違っている気が…

61 :nobodyさん:2006/12/21(木) 23:15:17 ID:cxJGLCdv
すみません、最近XPにアパッチ入れてphpいじりはじめたのですが、
ほんのサンプルにしたがってphp書いたらタイトルが文字化けしました。

<html>
<head>
<title>サーチエンジン活用php</title></head>
<body>
test
</body>
</html>

これのheadタグ内に、<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC_jp">
を足しても、Shift_JISに変更しても、やはり文字化けします。

php.ini の mbstring.internal_encoding = EUC-JP をShift_JISに変更しても
化けるんですが、どこを直したらいいのでしょう?
すみませんが、ご回答よろしくお願いします。

62 :nobodyさん:2006/12/21(木) 23:21:33 ID:???
mbstring.http_output

63 :nobodyさん:2006/12/21(木) 23:32:31 ID:1NDthtg1
$int = 300;

変数$intには (int) 300 が代入されているとします。
これを、1から300まで一つずつ配列に入れたいのですが、どういうふうに
するのが一番スマートでしょうか?

そういう関数があれば一番良いとは思うのですが……。

余談: 書くときに「ずつ」なのか「づつ」なのか迷った。
   調べてみると「づつ」は歴史的仮名遣いらしい。今まで「づつ」って書いていたよ……。

64 :54:2006/12/21(木) 23:33:16 ID:???
>>55>>56
今みると自分でも意味不明でした。
今日は晩飯抜きの刑で明日に備えます。

65 :63:2006/12/21(木) 23:36:07 ID:1NDthtg1
例示:

array(300) {
  [0] => int(1)
  [1] => int(2)
  [2] => int(3)
:
:
  [298] => int(299)
  [299] => int(300)
}

こんな感じです。分かりにくいとは思いますがよろしくお願いします。

66 :nobodyさん:2006/12/21(木) 23:38:26 ID:cxJGLCdv
>>62
ありがとうございます、ちゃんと表示されました。

なんか、良く探したらこのページにも書いてあったんですが、
http://park1.wakwak.com/~ima/php_tips0001.html
Shift_JISで設定するのと、EUC_JPで設定するので何か決定的な
違いがあるのでしょうか?

文字コードの意味とか解説してる本とかあるでしょうか?
あ、自分でも探します。。

67 :nobodyさん:2006/12/21(木) 23:38:29 ID:???
>63
for($i=1;$i<$int;i++){
$intarray[]=$i;
}

68 :63:2006/12/21(木) 23:39:48 ID:1NDthtg1
>>67
やはりループさせるしかありませんよね。
ありがとうございました。

69 :nobodyさん:2006/12/21(木) 23:44:12 ID:???
ループしかおもいつかんかった。

70 :nobodyさん:2006/12/21(木) 23:46:59 ID:???
>>63
$array = range(1, $int);

71 :nobodyさん:2006/12/22(金) 06:25:33 ID:???
任意のセッション変数を破棄するときに、なぜunsetではダメなの?

俺がテストしてみたところ、unsetによって、
セッションファイルに記録されていた変数名とその内容(値)が
きっちり削除されていたので、問題ないと思うんだけど?

72 :nobodyさん:2006/12/22(金) 07:53:49 ID:???
>>71
unset($_SESSION)はだめよってことじゃないの

73 :nobodyさん:2006/12/22(金) 08:13:36 ID:???
>>72
なるほど、じゃあ例えば
unset($_SESSION['hoge']);
ならばOKってこと??

74 :nobodyさん:2006/12/22(金) 11:31:54 ID:???
>>73
マニュアルにあるからいいんじゃない
http://jp2.php.net/manual/en/ref.session.php
のExample 2
<?php
session_start();
// PHP 4.0.6とそれ以前では$HTTP_SESSION_VARSを使用してください
unset($_SESSION['count']);
?>


75 :nobodyさん:2006/12/22(金) 12:57:35 ID:???
curl_getinfoを使ってファイルの更新時間って取得できる?
マニュアルでそれぞれの項目の説明で違う事書いてあるんですけど・・
使ってみたらいいんでしょうけど、記述方法が間違っているのか値が取得できないんです。
正解を教えてください

76 :nobodyさん:2006/12/22(金) 15:34:26 ID:u4lBJyPy
$dataの中が"あああ","いいい\""と[\"]が余分に入っているデータがあるのですが、
これを消す(\"を空白に置換する)方法が分かりません。

$str=eregi_replace("[\"]","",$data);

としてみたのですが、全体の"まで消えてしまい、希望通りなりませんでした。
どうしたらいいのでしょうか?

77 :nobodyさん:2006/12/22(金) 15:40:20 ID:???
>>76
エスパーな俺はmagic_quoteの問題だと推測。
消す事を考える前に余計な文字が入る理由を考えよ。

78 :nobodyさん:2006/12/22(金) 15:41:38 ID:???
正規表現がちがくね?
「\\\"」 かな、試してみて

79 :76:2006/12/22(金) 15:45:45 ID:???
>>78
これです!\を消すのにどういう正規表現かわからなかったんです。
凄く参考になりました。ありがとうございました。

80 :nobodyさん:2006/12/22(金) 15:47:55 ID:???
>>77
(´・ω・)

81 :nobodyさん:2006/12/22(金) 17:12:02 ID:???
>>77
(´-ω-)

82 :nobodyさん:2006/12/22(金) 17:15:50 ID:FQdb0ydc
77 :nobodyさん :2006/12/22(金) 15:40:20 ID:???
>>76
エスパーな俺はmagic_quoteの問題だと推測。
消す事を考える前に余計な文字が入る理由を考えよ。

83 :nobodyさん:2006/12/22(金) 17:24:05 ID:???
77(*´・ω・)(・ω・`*)ネー

84 :nobodyさん:2006/12/22(金) 17:24:40 ID:n9VSwh4k
データベースからデータを取得して表示する処理なんですが、一ページ
30件ずつにわけて表示することにしました。

SELECT * FROM `tbl_name` LIMIT 90, 30

ここで困ってしまったですが、次のページ(90件以降の30件)と
前のページ(90件以前の30件)をナビゲーションしなければならないことです。
私は、それぞれのページへリンクすることでこれを実現しようと考えたのです。

<a href="?page=2&amp;count=30">前のページ</a> :: <a href="?page=4&amp;count=30">次のページ</a>

ただ単に ($_GET["page"] + 1), ($_GET["page"] - 1) とやってもできるのですが、これだと
データが存在しないのに永遠とページが作られてしまうだけなので、次の30件、前の30件が
それぞれ存在する場合にこのリンクを表示するようにしたいと思っています。

こういう場合どうするのが一番効率的にできるのでしょうか。
できれば関数化して、ページがあれば TRUE 、なければ FALSE というのが良いと思っています。

85 :nobodyさん:2006/12/22(金) 17:28:35 ID:???
表示総数取得してページ計算したらいいだけじゃないの?
俺はこの方法だけど?

86 :nobodyさん:2006/12/22(金) 17:43:37 ID:n9VSwh4k
>>85
$result = mysql_query( "SELECT COUNT(*) FROM `tbl_name`" );
$row = mysql_fetch_row( $result );
$num_maxrows = (int)$row[0];

総数を取得して $num_maxrows に代入しました。
そこから、どういう式をつくればよいのかが分かりません。

かなり強引にやればできますが、普通はどういう式なのかを教えてくれると嬉しく思います。

87 :nobodyさん:2006/12/22(金) 18:38:23 ID:???
>>86
85じゃないが。
たとえば1ページ30件と仮定し、全部で100件のデータがあるとする。
その場合、ページ数*30 でページ終端の番号が出る。
4ページ目で 30*4=120 となり該当件数を超えるので終端であることがわかる。

そのため「(ページ番号 * 表示件数) >= 最大件数 の条件が成り立つとき、
次のページへの遷移を作成しない」という条件が成立する。
あとはがんばれ。

88 :nobodyさん:2006/12/22(金) 18:42:48 ID:???
蛇足
select でカウントを持ってくる場合、できるだけ pk の値を参照した方がいい。
若干だが負荷が下がる。
なけりゃあしゃあないが。

89 :nobodyさん:2006/12/22(金) 19:05:57 ID:???
>>88
プライマリキーかどうかより、検索で使用頻度の高いindexかどうかが肝心。
プライマリ設定であっても実際のプログラムで使用頻度が少ないものだと
count(*)の方がまだ高速だったりするよ。

90 :nobodyさん:2006/12/22(金) 19:14:51 ID:???
>>89
すま、まちがいた…<index と pk
まさに蛇足だった…。


91 :nobodyさん:2006/12/22(金) 20:17:08 ID:n9VSwh4k
>>87
おぉ、なるほど! とってもありがとう。

92 :nobodyさん:2006/12/22(金) 22:15:19 ID:???
<input type="text" name="a[b1]" value="1">
<input type="text" name="a[b2]" value="2">
<input type="text" name="d[e1]" value="8">
のようなデータをPOSTで受け取ると
それぞれ$a[b1][c1]、$a[b2][2]、$d[e1][8]のような形にし、
そこに同一の文字をセットしたいのですが、うまくいかずに困っています。

function alt_form($var, $set){
 foreach($var as $foo){
  foreach($foo as $key => $val){
   $tmp[$foo][$key][$val] = $set;  //$fooを入れることができずにerrorが出ます。
  }
  }
 return extract($tmp);
}
alt_form($_POST, "入れたい文字");

なにか解決策はないでしょうか?

93 :nobodyさん:2006/12/22(金) 22:37:33 ID:???
>>92
そもそも、input要素のname属性にブラケット( [] )はアリなんだっけ?
http://bakera.jp/hatomaru.aspx/ref/html/attribute/name@input

94 :nobodyさん:2006/12/22(金) 22:45:08 ID:???
name属性に[]は使えるよ name[] みたいにね
>>92のような使い方はしたことないけど

95 :92:2006/12/22(金) 22:49:17 ID:0IVErS6h
>>93
配列で受け取りたいときは、こうしないとできないと思って。
でもmixiのプロフィール変更の趣味の部分はname=hobbyで統一されてる・・
どうやって処理してるんだろう

96 :nobodyさん:2006/12/22(金) 22:58:12 ID:???
>>92
お前、なんかすっげー間違ってると思う。
仮にお前が考えてる通りに実現できたとしても、すごく効率の悪いやり方。
なんでそんな複雑なやり方にしたいの?

もっと頭使ってシンプルにしな。

97 :nobodyさん:2006/12/22(金) 23:02:24 ID:???

<input type="text" name="a[b1][1]" value="設定したい値">

98 :nobodyさん:2006/12/22(金) 23:21:53 ID:???
>>92
無茶苦茶な設計だな。

99 :nobodyさん:2006/12/22(金) 23:23:58 ID:???
>>92
おまえ学校でいじめられてるだろ

100 :92:2006/12/22(金) 23:31:02 ID:0IVErS6h
(´;ω;`)ウッ
出直してきます

101 :nobodyさん:2006/12/22(金) 23:33:45 ID:???
>>95
チェックボックスの値の渡され方が判らないときはGETメソッドでリクエスト見てみ
渡された値の根本的な処理法が知りたい場合はperlの解説サイトとか見てみ


102 :75:2006/12/22(金) 23:37:44 ID:???
curl_setopt
CURLOPT_FILETIME = TRUE を設定すると、ドキュメントの更新日時を取得しようと試みます。 この値を取得するには、curl_getinfo() で CURLINFO_FILETIME オプションを用います。
curl_getinfo
CURLINFO_FILETIME" - ドキュメントを取得するのにかかった時間。 取得できなかった場合は -1

正解を教えて〜ヒントだけでも頂戴
値自体が出てこないからわかんないんです

103 :92:2006/12/22(金) 23:48:19 ID:0IVErS6h
>>101
上書きされると思ってたんですけどそうではないんですね。
勉強になりました。
ありがとうございます。

104 :nobodyさん:2006/12/22(金) 23:51:19 ID:???
>>102
"CURLINFO_FILETIME" - Remote time of the retrieved document, if -1 is returned the time of the document is unknown
だから誤訳じゃないの

とりあえず、手をうごかせ

105 :92:2006/12/22(金) 23:52:23 ID:0IVErS6h
それと自分は前のすれ?で
フォームの確認画面からどうやってその値を維持するのか質問していたものです。
で結局自分で間違った方法でできたと勘違いしてしまいまして
今、やり直そうとしているところです。
入れたい文字にcheckedを入れてみようと思っていたんですが
間違ってるみたいなので別の方法考えて見ます。

106 :nobodyさん:2006/12/23(土) 00:24:01 ID:k4+RqfGZ
便乗で悪いんだけど
登録内容の修正画面とかでフォームの値を再現するときって、
sessionなりhiddenなりで渡して、○○だったらchecked表示〜ってやつを全部繰り返すしか方法ないの?
POSTリクエストした内容ってどこかに残ってないのかね。javascriptのhistory.back()でもだめだし・・・

107 :nobodyさん:2006/12/23(土) 00:33:03 ID:???
>○○だったらchecked表示〜ってやつを全部繰り返すしか方法ないの?

単に配列をループで回せばいいだけじゃん。
これならチェックボックスの数がいくつになろうともコードは変わらない。

108 :nobodyさん:2006/12/23(土) 00:33:17 ID:???
POSTリクエストした内容に何を期待してるの?

109 :nobodyさん:2006/12/23(土) 00:44:24 ID:???
>>107
具体的なサンプルか何かある?

110 :nobodyさん:2006/12/23(土) 02:29:46 ID:???
>>109
考えればすぐ作れるレベルじゃないの?と思う上に
具体的なサンプル示すには質問の方が具体性無さ杉

基本形は
foreach($_POST as $key => $value) {
修正画面用のFORM組み立て処理
}
かと思うけど。

111 :107:2006/12/23(土) 02:41:39 ID:???
>>109
自分で考えもせずにすぐサンプルとか言うのはバカの証拠だぞ。

あと、>>110も指摘している通り、お前が具体的に何をやりたいのか
サッパリ分からないので、サンプルを示しようがない。

112 :nobodyさん:2006/12/23(土) 04:09:26 ID:???
具体的なサンプルってのは具体例を挙げよということではなく、
実際に何らかのサンプルを挙げよ、って意味だよ。
実際例とか無いの?できるできるっていう抽象的な話だけ?
というわけでよろしく。

113 :nobodyさん:2006/12/23(土) 04:12:25 ID:???
>>112
自分で考えもせずにすぐサンプルとか言うのはバカの証拠だぞ。

あと、>>110も指摘している通り、お前が具体的に何をやりたいのか
サッパリ分からないので、サンプルを示しようがない。

114 :nobodyさん:2006/12/23(土) 05:00:27 ID:???
>>112
普段から具体例見ながらコーディングなんてやってないから
いきなりサンプル探してきてくれって言われても困る。
>>110のforeachじゃサンプルにならんのか?

115 :nobodyさん:2006/12/23(土) 05:02:52 ID:???
考えればすぐ作れるレベルだし、そうじゃないならいい勉強になる例題だと思う。
どっかからソース拾ってきて眺めてみるって勉強法はいまどきはやらないのかな。

$inputdata = $_POST["inputdata"]; #過去に入力されたプルダウンのvalue
$arr = array(); #プルダウンメニューの(連想)配列
print "<select name=\"pulldown\">\r\n";
foreach($arr as $key => $value)
{
print "<option value=\"$key";
if($key == $inputdata) print " checked";
print ">$value</option>\r\n";
}
print "</select>\r\n";

htmlホニャラララとか打つのめんどいから省いた。
動くか試してもいないけどよかったらどうぞ。

116 :nobodyさん:2006/12/23(土) 05:04:08 ID:???
>>106
ひょっとしてこの質問って、
POSTで送信→確認画面(ここにリンク)→クリックで修正画面
って構成になってるとき、リンクにパラメータとか一切つけないで
修正画面を組み立てるにはどうするのか?って話?

そういう話ならセッションかhiddenで修正画面に全POSTデータを
渡さないと無理だと思うよ。当たり前だけど。

117 :115:2006/12/23(土) 05:04:23 ID:???
あー、見事に間違えてるや。まあ動かせばすぐわかるレベルだし
まあいいか。。。

118 :nobodyさん:2006/12/23(土) 05:12:56 ID:???
>>112
お前なぁ、バカな上に、その偉そうな態度は何なんだよ?
氏んだほうがいいよ。

119 :nobodyさん:2006/12/23(土) 05:54:23 ID:???
UTF-9でコードを書いています。
メールを送信すると、UTF-9で書かれたメールが送信されるため、
文字化けしてしまいます。
どのようにしたら、文字化けを防ぐことができるのでありましょうか?

120 :nobodyさん:2006/12/23(土) 06:31:06 ID:???
UTF-9、ですか。
http://www.ietf.org/rfc/rfc4042.txt // 4月1日に出されがちなRFC

今のPHPはRFC4042に対応してません。たぶんこの先も対応しないような気がします。
http://www.php.net/manual/ja/ref.mbstring.php#mbstring.supported-encodings

UTF-8Nでコード書いて変換かけずに charset=UTF-8 で送りつけたり
より無難にISO-2022-JPへ変換して charset=ISO-2022-JP で送るようにしたら
文字化けを防ぐことができるのかもしれません。Content-Transfer-Encodingにもご注意を。

121 :nobodyさん:2006/12/23(土) 07:02:52 ID:???
>>119
mb_convert_encoding()でヘッダ、本文を個別に変換してからメールするか、
mb_send_mail()でお任せ変換をかけてメール送信までやってもらうか。
ただ、mb_send_mail()はPHPのバージョンによってはバグってることがあるので
過信は禁物。楽だけど。

122 :nobodyさん:2006/12/23(土) 08:22:06 ID:U3EbhbvS
朝っぱらから下らないかも知れない質問で悪いんだが…

php.iniのsession.use_trans_sid設定についてマニュアル読んだんだが
「透過的なセッション IDの付加をするかどうか」の、“透過的”ってどーゆー事?
IPアドレスかなんかで他人と重複しないsidを割り当てる、みたいな事?

123 :nobodyさん:2006/12/23(土) 08:27:46 ID:???
>>122
PHPで表示する各リンクやフォームに自動的にセッションIDパラメータを付加する、って意味。

これがOFFで相手がクッキーを使えない端末が相手の場合は、
プログラマが自分でリンクやフォームにセッションID値を埋め込む必要があるけど、
これをONにしとけばPHPが自動判別して(相対パスで自サイト内へのリンクの場合に限り)
全部のリンク・フォームに自動的にパラメータをHTMLの中に埋め込んでくれるようになる。
それを「透過的な付加」と表現している。(セッションIDの値が透過的なわけじゃないよ)

124 :122:2006/12/23(土) 08:57:59 ID:???
なるほど。
すごく丁寧なお答えを頂けたお陰で頭の中がすっきりしました。
session.use_only_cookies=1で運用しようとしてる自分には必要ない機能かな。
でも、得体の知れない物が1個減ってよかったです。
本当にありがとうございました。

125 :nobodyさん:2006/12/23(土) 11:26:59 ID:???
>>112
書店へGO(図書室&図書館でもいいぞ)

126 :nobodyさん:2006/12/23(土) 11:50:16 ID:???
ファイルフォームに適当なファイル名打って、POSTで取得した$_FILES['hoge'][tmp_name]って
そのファイルパスが存在しなくても何らかの一時ファイルを開く?
ファイルの存在チェックをfopenするあたりでやってエラーならPOST元のページに値を返したいんだけど、
fopen失敗すらしないからどう処理すればいいのかと・・・

127 :nobodyさん:2006/12/23(土) 12:26:32 ID:???
>>126
fopenのモードによる。"r"なら失敗するけど"w"なら作っちゃうからダメでしょ。
ファイルの存在チェックは普通file_exists()とis_file()の組み合わせで行うものだと思うけど。

128 :nobodyさん:2006/12/23(土) 13:28:29 ID:???
n a b c ←フィールド名
-------
1 o t t
2 o u t
3 s p p
4 s o p
5 s q p

上記のようなデータベースのテーブルがある場合に
cフィールドの値が異なるものだけ1行ずつ取得したい、
つまり上の場合、1と3のaフィールドの値(oとs)だけ取得できれば良い、
という場合、スマートな取得方法はあるでしょうか?

思いついたのは、全行一旦配列として取得して、
cが重複する値を含む配列は重複分を削除(unset)、
なんですが、
これだとデータ量が多い場合にメモリを食って、すごい無駄な作業が多いかな
と思っています。

129 :128:2006/12/23(土) 13:29:12 ID:???
書き忘れてました、ちなみに mysql 使ってます。

130 :nobodyさん:2006/12/23(土) 13:32:38 ID:???
>>128
SQLでできるからDB板でSQLの質問してくるといいよ。

131 :128:2006/12/23(土) 13:38:16 ID:???
>>130
レスサンクスです、
PHP側の処理で何か良い方法ないかなと思ってます。
SQL文をカキカキいじるのが非常に苦手なので・・・。

ただ、実際どんな記述になるのかさっぱり分からないので、
DBで聞かせてもらおうと思います。
ありがとうございます。

132 :nobodyさん:2006/12/23(土) 13:39:31 ID:???
というか、DBでできることは全部DBにやらせるのはパフォーマンス向上とともに
余計なバグ増やさないポイント。


133 :nobodyさん:2006/12/23(土) 15:40:51 ID:ECUJ+Mwa
君たち、ちょっといいかな。
返信機能付掲示板の子レスはどのようにログに書き込めばいいのだね?
忙しいだろうけどこの質問のために時間割いて教えたまえ。

134 :nobodyさん:2006/12/23(土) 15:43:08 ID:???
どのスレに質問しようか迷った末、ここでさせてください。
微妙にすれ違いだったらすいません。

fedora5を使っていてphpを5.2.0にあげてみました。
無事make installできて問題なく動いてるのですが、
pear install ***
をやると
PHP Warning: PHP Startup: ldap: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0

Warning: PHP Startup: ldap: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
というWarningが出るようになりました。

その後pearのインストールもできるし、その他の動作にも今のところそれほど問題もないようなのですが
ちょっと気になりましたので、ご存じの方いましたら、このWarningの意味、回避方法等、教えていただけると助かります。

ちなみにphp.netでldapのマニュアルを見てみましたが、いまいち何をするものかわからず(DB関連?)、
話の種に--with-ldapでコンパイルしなおしてみましたが、状況は変わりませんでした。

135 :134:2006/12/23(土) 15:46:07 ID:YVUy+5Yq
ああ、いつもsage消すの忘れる・・・
JD使ってるんですけど、デフォルトでsageになっちゃうもので

136 :nobodyさん:2006/12/23(土) 16:40:35 ID:???
>>134
LDAPのIモジュールとPHPのAPIのバージョンが違ってるからじゃないの


137 :nobodyさん:2006/12/23(土) 17:20:42 ID:???
>>133
僕はDB使ってるのでなんとも。

138 :nobodyさん:2006/12/23(土) 17:22:20 ID:???
サーバー上のファイルをダウンロードさせる流れなのですが、

window.open('download.php?no=123');
で開いた先のdownload.phpで
header("Cache-Control: private");
header("Content-Disposition: attachment ; filename=" . mb_convert_encoding($this->get_name(),"SJIS","EUC-JP"));
header("Content-Length: ".$content_length);
header("Content-Type: application/pdf");
としています。

このやり方だと別ウィンドウに空白ページが表示されたのち、ダウンロード確認ダイアログが出るのですが、
ダイアログ上のボタンを操作した後に、空白ページの方が消えずに残ってしまいます。
どうにかダイアログの「開く」[保存する」を生かしたまま自然と消す方法無いものでしょうか?


139 :nobodyさん:2006/12/23(土) 17:50:18 ID:???
>>138
window.openしないで現在画面で同じことすればよい

140 :134:2006/12/23(土) 21:52:31 ID:YVUy+5Yq
>>136
ありがとうございます
yum list installed | grep php
したらphp-ldapもふくめ、5.1.6のパッケージがインストールされていました。

こいつを消して、インストールしなおしたら、出なくなりました。
すっきりしました

どうもです

141 :nobodyさん:2006/12/23(土) 23:44:22 ID:XutG8yPr
>>133
親スレNoとレスNoを書き込み内容と一緒に保存すりゃいいだろ。

142 :nobodyさん:2006/12/24(日) 00:45:19 ID:+LXDPeGu
セッション関数を用いないとセッションはできないのでしょうか?
自作でセッションを行い事はできないのですか?

143 :nobodyさん:2006/12/24(日) 01:06:55 ID:DO1hDjYZ
>>142
できるよ。
ユニークなID生成してクッキーに持たせて各クライアントを識別するって感じ。
ただ、あんまり知識なしでやると、セキュリティに脆弱なものになってしまうことも
あるかもしれない。もっとも標準のも使い方やバージョンによっては危ないですが

144 :nobodyさん:2006/12/24(日) 01:09:19 ID:???
>>192
セッション関数と同じことをやればできるよ。
車輪をもうひとつ発明するの?

145 :142:2006/12/24(日) 01:27:27 ID:???
phpがバージョンアップされて仕様が変更されても対処できるようにしたいんです。
独自仕様で挑戦してみます。ありがとうございました。

146 :134:2006/12/24(日) 02:10:04 ID:muKXaag1
もうひとつお願いします。

configureの時に
--with-imap=shared,/usr/local/imap-2006e --with-imap-ssl
と、sharedを付けて後読みにしようと思ったのですが、うまくいきません。
imap.soというのが/usr/lib64/20060613に出来るので、
iniに
extension_dir =/usr/lib64/20060613
extension=imap.so
と書いてみましたが、ONになりません。(なんのエラーも出ません)

dl('imap.so');
も試してみましたが、パスは通ってるのですが
「これはextensionファイルではありません」っぽいエラーがでて動きません。

ちなみに=shared,を外してコンパイルすると
問題なく動きます。

何か解決策がありましたらお願いいたいします。
いちおう
Apache/2.2.2 (Fedora)
PHP Version 5.2.0
です


147 :nobodyさん:2006/12/24(日) 02:31:29 ID:???
まちがいなくここで聞いても解決しないと思われ。
他板で聞いたほうがマシ

148 :nobodyさん:2006/12/24(日) 02:43:21 ID:???
おまえらのPHP理解度<<<<<<<超えられない壁<<<<<<150の理解度

149 :nobodyさん:2006/12/24(日) 03:26:00 ID:???
s/おまえら/148/

150 :nobodyさん:2006/12/24(日) 03:46:39 ID:pn7eEEmF
文章を改行毎に配列に格納してくれる関数ってありませんでしたっけ?

151 :nobodyさん:2006/12/24(日) 04:03:49 ID:JTHPmry9
>>150
$array = split("<br>",$var);

改行って<br>?\n?

152 :151:2006/12/24(日) 04:17:58 ID:???
$array = split(array("\r","\n","\r\n","<br>","<br />"),$var);
これでいいや

153 :nobodyさん:2006/12/24(日) 05:14:21 ID:???
>>144
> 車輪をもうひとつ発明するの?

よくそういうこと言い出す人いるけど、汎用的な関数を使うより独自に用途に適した関数作ったほうが動作も速いし安定するわけ。
そして汎用的なものと違い機能が限定される & 独自開発なものだとブラックボックス化する ということによりセキュリティも向上する。

あ、もちろんセキュリティに関しては、セキュアなコーディングができない人が書くと逆効果だけどね。

分かりやすく Perl にたとえると、use CGI; use Encode; を外して独自に Cookie取得とかフォームデコードのロジック書くだけで、
一般的な掲示板なら 30%以上のリソース削減ができる。



154 :nobodyさん:2006/12/24(日) 05:26:53 ID:???
自分ひとりで書くならそれでいいけどチームでやる場合はねえ。
リーダー「このプロジェクトではセッション関数の使用は禁止です。
     弊社の独自クラスを使ってください」
っていわれたら普通に萎えるな。挙動を勉強するのメンドクセ。

155 :nobodyさん:2006/12/24(日) 05:31:01 ID:???
>>154
Cとかでコーディングする場合は普通は独自クラスだらけだけど・・・


156 :nobodyさん:2006/12/24(日) 06:03:35 ID:???
>>153
俺もそうだ。
既存のDAOやフレームワークがあっても自分で作りたくなってしまう。
作り方も知らないで使いたくないし、そんなに多くの機能はいらないし、内容が分からないと何か不安になる。

157 :nobodyさん:2006/12/24(日) 07:27:06 ID:???
>>153
>独自に用途に適した関数作ったほうが
の時点で車輪じゃないよ。

べつに車輪を発明するのが悪いとはいわない。でも、本当に必要か考えないと。
とくに、セッションやセキュリティ関連については、下手が作るとろくなことはない。

158 :nobodyさん:2006/12/24(日) 07:34:19 ID:???
おまえらのウンチクを語るスレじゃねーんだよ。

159 :nobodyさん:2006/12/24(日) 08:11:47 ID:???
犬小屋を作ったこともない人が、家を建てる。
車輪を作ったこともない人が、クルマを作る。
どちらも不可能ではないだろうけど、俺はそうしたくない。

俺だったらクルマを作る前に、まずは車輪やハンドルなどの各パーツを
拙くてもいいから自分で作ってみて、構造や原理、挙動などを体得する手法を選ぶ。
もちろん、その時は上手な先人のモノを参考にしながらね。

そんで、自分で車輪を再発明してみて原理が理解できたら、そこで初めて、
他人が作った「もっと優秀な車輪」を採用してクルマを組み立てるな、俺なら。

160 :nobodyさん:2006/12/24(日) 09:14:45 ID:???
どういう仕組みで動いてるかちゃんと理解するために解析したり、
自分で作ってみたりするってのは別にいいと思う。

ただまあ、どんな技術も土台になる技術や他の技術を利用した上で
成り立ってるもので、それらをすべて自分でまかなうってのは非現実的。
他人が作ったライブラリとか一切信用できないならPHP自体使えないし。
まあ程度問題だし、かけられる時間がどのくらいかによるし、結局
好き好きなのかな。

>>155
C初心者だけど、あれってライブラリかなり使わないかね。
ApacheだとコアやモジュールはAPR使うし。
そもそもクラスって使えたっけ。

161 :nobodyさん:2006/12/24(日) 09:49:25 ID:???
おまえのグチをきくスレでもない

162 :92:2006/12/24(日) 10:19:08 ID:c6yKDW/O
>>92です。
ヒントを元に作ってみましたので、報告に来ました。
おかしいところがあればご指摘ください。
$center = array('sugaku_1' => array('数学T・A','数学T','受験しない'),
       'kokugo' => array('国語','受験しない'));
foreach($center as $subject => $select){
 foreach($select as $key => $val){
  echo '<input type=radio ';
  echo 'name='.$subject.' ';
  echo 'value='.$key.'';
  if(isset($_POST) ){
   if($key == $_POST[$subject]){
    echo ' checked';
   }
  }else{
   (int)$last = (int)count($select) - 1;
   if($key == $last){
    echo ' checked';
   }
  }
  echo '>'.$val.'<br>'."\n";
 }
}


163 :nobodyさん:2006/12/24(日) 10:44:15 ID:???
すでにある物を改良したり、似たようなものを作るのは「発明」なんかじゃねーだろ。


164 :nobodyさん:2006/12/24(日) 11:25:20 ID:???
独自クラスを強制するのは構わんから、
100%仕様書通りにしてくれ。
一般的なモジュールはググればバグレポートも出てくるが、
独自クラスはそれも無い。
それも踏まえてドキュメントを用意しろ。

165 :nobodyさん:2006/12/24(日) 12:09:29 ID:???
>>163
Wikipediaででも「車輪の再発明」でもしらべてみろ

166 :nobodyさん:2006/12/24(日) 12:24:40 ID:???
>>142
それなりに枯れてるPHPlibのセッション機能を参考にするといいと思うよ。

167 :nobodyさん:2006/12/24(日) 15:16:43 ID:???
入力文字列からJavaScriptや意図しない関数を除外したいのですがなにかヒントはありませんか?


168 :nobodyさん:2006/12/24(日) 15:36:29 ID:???
すべてのタグを無効化する
htmlspecialchars()

script タグの中に出力するのは論外

169 :nobodyさん:2006/12/24(日) 16:15:53 ID:JTHPmry9
クリスマスだし、独りで過ごす俺に何かプログラム組んでやってくれないか(´;ω;`)

170 :nobodyさん:2006/12/24(日) 17:08:13 ID:???
print_r($Xmas);

ほれ

171 :nobodyさん:2006/12/24(日) 17:09:57 ID:JTHPmry9
>>170
何も表示されない・・・・・(´;ω;`)ブワッ

172 :nobodyさん:2006/12/24(日) 17:10:50 ID:???
PHP 注意: 変数が定義されていません
(´;ω;`)ブワッ

173 :nobodyさん:2006/12/24(日) 17:31:27 ID:???
形が有るモノが全てではないんです。






174 :167:2006/12/24(日) 17:42:12 ID:???
>168
ありがとうございます。
var flag = false; function disableSubmit() { if (flag) { return false; } flag = true; if(document.seform.soushin) { document.seform.soushin.disabled = true; } return true; }
こんなタグ?スプリクト?が混じるんですけど・・
htmlspecialchars() で除外できますか?
記述ミスしてるのかなぁ〜除外できないんですけど・・

175 :nobodyさん:2006/12/24(日) 17:47:29 ID:???
>>174
<script>とかonclick=とかに出力しなければ実行されないから
それだけ気をつければ問題ないでしょ。

htmlspecialchars()は関係ない。
<script>がきたら<script>に変換してくれるだけ。

176 :nobodyさん:2006/12/24(日) 17:51:48 ID:???
うわ、やらかした。
 <script>がきたら&lt;script&gt;に変換してくれるだけ。
が正解。

177 :167:2006/12/24(日) 18:25:38 ID:???
ありがとうございます。HTMLの変換だけですよね
データ取得→データベース(MYSQL)→再利用
こんなのをやりたいのですが、データの中にスプリクトが混入するのでデータベースに入力出来たり出来なかったり
挙動不信なんです。

解決のヒント下さい


178 :nobodyさん:2006/12/24(日) 18:40:37 ID:???
フォームからの入力されるとき   →   生のまんまいれる = <script>hogeohoge</script>
 ↓
データベースから取り出すとき   →   生のまんま扱う = <script>hogeohoge</script>
 ↓
HTMLに吐き出すとき       →   変換する = &lt;hogehoge&gt;

これで特に問題ないかと。

179 :nobodyさん:2006/12/24(日) 19:24:59 ID:???
>>175-176 >>178

絶対駄目。
典型的な脆弱な処理だよそれ。

http://openmya.hacker.jp/hasegawa/public/20061209/momiji.html を見れば分かるが、


→ それ見えない文字で
IE では HTML 中に含まれるヌル文字(0x00)は、完全に無視される。

<s(0x00)cript>

IE では HTML 中に含まれる 0x0B や 0x0C はスペースと同意に扱われる。

<script(0x0B)>

<s (0x0C)onmouseover="...">

Firefox 1.5.0.4 以前のバージョンでは、BOM (U+FEFF; ZERO WIDTH NO-BREAK SPACE) は無視される。

<s(BOM)cript>

MFSA 2006-42: UTF-8 ページで BOM を使ったクロスサイトスクリプティング
<http://www.mozilla-japan.org/security/announce/2006/mfsa2006-42.html>

例えばこんなのもあるし。

180 :178:2006/12/24(日) 19:31:27 ID:???
>>179
なんでスペースの話になってるの?
<script>タグをまるごと変換するんじゃなくて、
 < を &lt;
  に
 > を &gt;
に変換するっていう基本的な話だよ。


181 :167:2006/12/24(日) 19:49:53 ID:???
HTMLだけであれば関数でなんとでもなるんですけど・・


182 :179:2006/12/24(日) 20:02:34 ID:???
>>180
そういうことだったか。

<script> を <hogehoge> に、みたいにscript要素ばっかりを取り出してたから
タグ利用可能掲示板での危険な要素の使用禁止でもやってるんかと誤解しちまった

183 :nobodyさん:2006/12/24(日) 20:20:13 ID:???
>>178
DBに入れるときとHTMLを表示するときにエスケープっしょ?

184 :nobodyさん:2006/12/24(日) 21:18:11 ID:???
>>165
車輪の再発明は既にあるのにそれを知らない、関知しないのが前提。
だからわざわざ「改良」と言っているのだ、脊髄反射イクナイぞ。


185 :nobodyさん:2006/12/24(日) 21:19:32 ID:???
mixiにログインして、毎回日記をチェックするのが大変なので、
ログイン→見たい人の1週間以内の日記をピックアップ→表示
みたいな、mixiでRSSリーダーみたいなことをしたいのですが、
どういう処理を書けばいいのか悩んでいます。
どなたか知恵をお貸し下さい。

186 :nobodyさん:2006/12/24(日) 21:19:33 ID:???
質問です
POSTやGETで送られたデータをまとめて処理したいのですが
やり方がわかりません。
よろしくお願いします。

187 :nobodyさん:2006/12/24(日) 22:07:27 ID:???
>>185
「作ってください」ならスレ違い。
やってて分からない事があったのなら、分からない箇所をもっと具体的に書いてくれ。

>>186
$_REQUEST

188 :nobodyさん:2006/12/24(日) 22:09:04 ID:???
186じゃないけど
PHPマニュアルでREQUESTある?
探しても見つからないんだが

189 :nobodyさん:2006/12/24(日) 22:14:09 ID:???
>>188
定義済みの変数
ttp://www.php.net/manual/ja/language.variables.predefined.php

どこに目を付けているのかと小一時間。
マニュアルもろくに読めないと苦労するぞ・・

190 :186:2006/12/24(日) 22:18:15 ID:???
>>187さんありがとう。

たとえば$_REQUESTの配列すべてにtrimしたいのですが
foreachでできますでしょうか?
やってみたけどできなかったので、よろしくお願いしますです。
ちなみに$_REQUESTと$_POSTは同じでしょうか?

191 :nobodyさん:2006/12/24(日) 22:21:24 ID:???
>>190
>>189にマニュアルのURL貼ってるから、$_REQUESTが何か確認してくるといい

192 :186:2006/12/24(日) 22:27:17 ID:???
>>191
ありがとうございます
$_REQUESTを小一時間勉強してきますです。

193 :nobodyさん:2006/12/24(日) 22:28:49 ID:???
うわー
俺今まで送られてきたデータ全て
$dt1 = $_POST['dt1'];
$dt2 = $_POST['dt2'];
$dt3 = $_POST['dt3'];

とかやってたわ
こんな簡単な方法があったんだな

194 :186:2006/12/24(日) 22:57:26 ID:???
え?$_POSTと$_REQUESTの違いがよくわからない…

195 :nobodyさん:2006/12/24(日) 23:00:18 ID:???
>>194
print_r($_POST)
print_r($_REQUEST)

196 :186:2006/12/24(日) 23:04:28 ID:???
>>195
はい。でも必要ないデータなので$_POSTでいいのでは?
>>193さんが言ってる意味がよくわからないのは俺だけでしょうか?
ちなみに$_REQUEST使うより$_POSTや$_GET使ったほうがいいとどこかに書いてありましたが。。


197 :193:2006/12/24(日) 23:06:14 ID:???
送られてきたのを簡単に全部各配列に入れるんだよね?

198 :186:2006/12/24(日) 23:13:23 ID:???
>>197
そうっすね
でもそれは$_POSTでも同じだし、結局取り出すのではないでしょうか?

199 :nobodyさん:2006/12/24(日) 23:19:43 ID:???
>>198
foreach($_POST as $key=>$value){

$$key = $value;

}

これじゃいかんの?

200 :nobodyさん:2006/12/24(日) 23:25:27 ID:???
ドルマーク二つって何?

201 :nobodyさん:2006/12/24(日) 23:28:14 ID:???
>>198
$_REQUESTは$_GETや$_COOKIE, $_POSTなどを全部纏めた配列。
添え字の重複は設定されている優先順位に基づいて処理

積極的な使用は推奨されてなかったと曖昧に記憶してる

>>200
変数の値を変数名として使用

202 :nobodyさん:2006/12/24(日) 23:34:40 ID:???
>>200
$abc = "test";
$$abc は $test

203 :200:2006/12/24(日) 23:37:52 ID:???
ありがとう!
これ使うと複雑になりそう、どの変数が存在するかとかでロジック作れそうではあるが・・

204 :nobodyさん:2006/12/25(月) 00:37:40 ID:???
よくわからんが
extract($_POST);
でいいんじゃないの?

205 :nobodyさん:2006/12/25(月) 02:04:07 ID:???
 | |            | |            |┃| :|
 | |            | |            |┃|i | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |            | |      ガタガタ |┃| < そうと聞いちゃお・・・・
 | |            | |______|ミ | .i.| | あれ?開かない・・・
 | | ̄ ̄ ̄ ̄ ̄ ̄| |            |┃|:. ,| \____________
 | |            | |            |┃| i|
 | |            | |            |┃| :|
 | |            | |            |┃|i |
 | |            | |            |┃|, :.|
 |_|====――●==|_|______|┃| i|_______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄

206 :テンプレ貼りミスった>>1です。ごめんなさい。:2006/12/25(月) 02:40:27 ID:???
extract($_POST) とか extract($_GET) の話はテンプレ>>4の7番め参照。
part16・826氏の説明がわかりやすくて、しばらくまるごとテンプレ採用されてた。以下引用。
-----
extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。

207 :186:2006/12/25(月) 05:46:20 ID:???
みなさんありがとうございます。
勉強になりました。楽なやり方あったんですね。
ちなみにフォームから送られたデータはどのような処理をしたらいいでしょか?
trim
htmlspecialchars
mb_convert_kana($value,"KVa");
これくらいで十分でしょうか?
よろしくお願いします。
(しかしここは勉強になるなぁ)

208 :nobodyさん:2006/12/25(月) 07:06:34 ID:pCOFjbSe
用途による。好きにすれ。

209 :nobodyさん:2006/12/25(月) 09:04:14 ID:???
>>206
っていうかさ、本題から外れるんだけど、
セッションにパスワードを保存する意味ってあるのかな??
ログインフラグを立てておけば済む話なのでは。。。

210 :nobodyさん:2006/12/25(月) 09:25:20 ID:???
>>209
それを言い出すと他にも突っ込みどころ満載になっちゃうから

211 :nobodyさん:2006/12/25(月) 09:53:19 ID:rDGXp0bv
mixiで携帯から日記投稿するために、、専用の投稿アドレスが
割り振られますよね??

で、この各個人別の投稿専用アドレスにメールを送ると日記投稿されるわけですが、
このとき、mixi側では当然受信と同時になんらかのスクリプトが動作してるんでしょうけど、
アドレス毎に.forward(とか.qmailとか)を設定してるんでしょうか?
もちろん設定作業はスクリプトで自動化されてるでしょうけども、けっこう無駄っちゃ無駄ですよね?

こういうときに、もっとうまく、一つの.forward(.qmail)設定しとくだけで、
全てのある特定のメールたち(たとえば日記投稿用メアドに来たヤツだけ…とか)を処理するには
どうしたらベストなやり方だと思いますか?

とりあえず俺が思いついたのは、日記投稿専用のサブドメインを作って、そこに来たヤツを全部一つの.forwardで処理する…みたいなの。
たとえば〜〜@nikki.hoge.comなら、〜〜の部分が何であれ、process@nikki.hoge.comに転送して、それの.forwardに書かれたパイプ処理をさせるとか。

212 :nobodyさん:2006/12/25(月) 09:58:57 ID:???
メールを直接スクリプトに渡せばいいんでない?

213 :nobodyさん:2006/12/25(月) 10:50:33 ID:???
>>212
論点ずれまくり。
っていうかそんなことは誰でも分かっている。
>>211をよく読め。

>>211
ミクシィはよく分からんけど、そのサブドメ方式でいいんでないの?

214 :nobodyさん:2006/12/25(月) 10:58:04 ID:???
>>213
失礼しましたw

215 :nobodyさん:2006/12/25(月) 13:53:24 ID:G8V0+xwB
最近2ちゃんが重いんですけど全部FOXさんが導入したスクリプトのせいでしょうか?

216 :nobodyさん:2006/12/25(月) 14:19:56 ID:???
FOXに聞け

217 :nobodyさん:2006/12/25(月) 14:33:27 ID:???
>>216
お前

218 :nobodyさん:2006/12/25(月) 14:34:19 ID:SBWHAYMt
始めまして、質問です。
$str = " ... $lt;span class=.....>hogehoge</span> ....";
こんな文字列から正規表現をつかって hogehoge の部分だけを取り出したいのですが、
どうしたらよいでしょうか?

219 :218:2006/12/25(月) 14:37:03 ID:SBWHAYMt
すみません、訂正です。
$str = "... <span class=\".....\">hogehoge</span> ....";

220 :誘導:2006/12/25(月) 14:43:28 ID:???
>>219
正規表現 part 3
ttp://pc8.2ch.net/test/read.cgi/tech/1156413899/l50

正規表現
ttp://pc8.2ch.net/test/read.cgi/unix/1039165754/l50

221 :nobodyさん:2006/12/25(月) 15:41:46 ID:???
PHP プログラムでたまに変数が @$hogehoge[$hagehage] などと
いう使い方で出現するプログラムを見たことがあるのですが、
Perl じゃなくて PHP でも @ って何か特殊な意味があるのでしょうか?

222 :nobodyさん:2006/12/25(月) 15:56:01 ID:???
>>221
エラー制御演算子
http://www.php.net/manual/ja/language.operators.errorcontrol.php

余談になるが、酔っぱらっているんだかボケているんだかよくわかんないが
じじぃが道に倒れていたので、俺が声かえてやったら「うぇらぁぁーおあ」って大声だしやがった。
もうぜったい人に親切なんかしないからな。

223 :nobodyさん:2006/12/25(月) 16:21:16 ID:???
>>222
じじぃに@でも付けとけw

224 :nobodyさん:2006/12/25(月) 17:02:34 ID:???
どうやってするの?

225 :nobodyさん:2006/12/25(月) 17:24:04 ID:???
今まで勉強してたのはCで、つい最近webproやりたいなと思ってHTMLとCSSやってるんだけど、みんなはやっぱり
HTML・CSS→PHPの順で学んだの?

226 :nobodyさん:2006/12/25(月) 17:33:24 ID:???
K*NT -> HTML/CSS -> PHPの順が基本。


227 :nobodyさん:2006/12/25(月) 17:43:09 ID:???
ファミリーBASIC→N88BASIC→アセンブラ→C→VB→VC→Java→PHP→CSS
HTMLは基本文法以外は必要なときに見ているだけで、
あんまり、いつ学んだかは意識したことないなぁ。

228 :nobodyさん:2006/12/25(月) 17:57:12 ID:???
Java なんかやるやつはばかです。

229 :nobodyさん:2006/12/25(月) 18:50:42 ID:???
Javaは馬鹿な俺には書けません。

230 :nobodyさん:2006/12/25(月) 20:07:39 ID:???
機械語→PHPの順

231 :nobodyさん:2006/12/25(月) 20:40:14 ID:???
>>226
ワラタww
「とほほ」も付け加えるべし。

232 :nobodyさん:2006/12/25(月) 22:10:54 ID:3ON9VEdM
少しスレ違いですいません。
XMLHttpRequestについて勉強しているのですが、
PHPで複数回レスポンスを送信するにはどうすればいいのでしょうか?
受信できるかどうかわかりませんが、

while ($a <= 10) {
 //$aを送信するとして、ココの記述が知りたい
}

という状態です。
よろしくお願いします。



233 :nobodyさん:2006/12/25(月) 22:24:25 ID:???
10回のレスポンスをどうやってブラウザで受け取るんだ???
10個の値を書いてXML1回で渡すんじゃダメなの?

234 :nobodyさん:2006/12/25(月) 22:26:45 ID:???
Firefoxで、アンカータグのラベル機能に関するバグ発見。

URLが http://example.com/hoge.php?x=10&y=20#label
のように引数の後にラベルがつく形になっているとき、
hoge.phpが出力するHTML内に<a name="label"></a>があっても、
そこにジャンプしてくれない・・・というバグです。

(ちなみにIEでは上記のやり方でしっかり飛ぶので、IEまたはFirefoxの仕様なのか
それともバグなのか、ハッキリしないけど)

235 :nobodyさん:2006/12/25(月) 22:28:00 ID:???
>>225
HTML・CSSとPHPの間にJavaScriptをはさむのが主流。
漏れの場合は、HTML・CSSの次にXMLとFlashをやって、今PHP勉強中って感じ。
ActionScriptも多少かけるんで、JavaScriptもそれなりにいけるかなー

236 :nobodyさん:2006/12/25(月) 22:32:08 ID:???
>>231
とほほ -> HTML/CSS -> K*NT -> Perl -> 一旦全て忘れて -> Perl -> Le*'s -> PHP -> 一旦全て忘れて -> PHP

237 :nobodyさん:2006/12/25(月) 22:32:33 ID:FViFZp7L
file_get_contentsで読み込みたいURLの一部に$gggを代入するには
どうすれば良いのでしょう?
例えば、$gggが1234で http://abc.jp/test.php?r=1234
というURLにしたい場合、

<?php

$ggg = 1234

file_get_contents
("http://abc.jp/test.php?r=$ggg");

?>

にすると、$gggの部分が無視されてしまいます。

238 :nobodyさん:2006/12/25(月) 22:35:45 ID:???
おいwwww
ひろみちゅがコンドーム買ってるぞ。
清純な彼のイメージが(つД´)

239 :nobodyさん:2006/12/25(月) 22:35:51 ID:???
>>235
そうなんだ・・。本屋とか行くとPHP&MySQLっていう本を良く目にするんだけど、PHP勉強すると同時にMySQLも勉強した
ほうがいいのかな。



240 :nobodyさん:2006/12/25(月) 22:43:33 ID:3ON9VEdM
>>233
XML1回で渡すのはだめなんです。
どうやっても受け取れないもんなのでしょうか?

241 :nobodyさん:2006/12/25(月) 22:48:06 ID:???
>>238
ユンケルローヤルA買ってるし
やる気満々?

242 :nobodyさん:2006/12/25(月) 22:48:27 ID:???
>>240
そしたらクライアントのJavaScript側でループすべきだよ(10リクエスト10レスポンス)
どうにもループさせる理由がわからんが・・・

243 :nobodyさん:2006/12/25(月) 22:57:22 ID:???
>>234
>firefoxでバグ

むぅ、たしかにIEだと成功するが、FFだとダメだな。。。
ちなみに俺のFFは最新の2.0.0.1だが、そっちは?

244 :232:2006/12/25(月) 23:35:04 ID:3ON9VEdM
>>240
ループさせる理由は、WebアプリでDB操作(INSERT/UPDATE)をするためなんです。
なので実際は10回どころか千・万単位のリクエストになります。
画面なしのバックグラウンドで動かすわけにはいかない、という条件です。
推定処理時間は数分です。
その処理時間の間に何か表示させたいと思っています。

無理な場合は、NowLoading...みたいな感じで処理中表示のajaxを使うつもりですが、
出来たらプログレスバーを作りたいと思ってajax、XMLHttpRequestについて勉強していました。

1リクエスト複数レスポンスというのは無理なんでしょうか、、、

245 :nobodyさん:2006/12/25(月) 23:37:29 ID:???
何のために ajax があるというのか

246 :nobodyさん:2006/12/25(月) 23:44:44 ID:???
>>244
だったら1件1件レスポンス返す必要ないでしょ。
DB更新するのと画面に何か表示させたいのは別の話。

247 :234:2006/12/25(月) 23:54:14 ID:???
>>243
当方の環境は、IE6.0、Firefox1.5と、2.0です。
Firefoxはどちらでもダメでした。
これって既知のバグなんでしょうか?

248 :nobodyさん:2006/12/25(月) 23:56:57 ID:???
>>234
仕様だヴぉけ。htmlとphpの基礎をもう一度勉強してこいクズ

249 :nobodyさん:2006/12/26(火) 00:03:48 ID:???
どの仕様?

250 :nobodyさん:2006/12/26(火) 00:09:52 ID:???
仕様ならしょうがないね

251 :nobodyさん:2006/12/26(火) 00:52:31 ID:???
>>248
html も php も全然関係ないじゃん

query 文字列の後に hash がくるのは正しい URL だし
それで常にジャンプできないようであれば
Firefox の不具合でしょ

252 :nobodyさん:2006/12/26(火) 01:12:54 ID:???
実装してないだけで不具合っていうのもどうかと。
まぁバグだと思うならレポート出せばいいよ。

253 :nobodyさん:2006/12/26(火) 01:16:09 ID:???
実装すべきなのを実装していないのもバグでしょ
けど、それらしい情報ないな


254 :nobodyさん:2006/12/26(火) 01:17:21 ID:???
アンカーを実装してないって不具合ってレベルじゃねーだろ。
未完成といわれても仕方ない。
でも本当に本当なの?ちょっと信じられないのだが。
俺はFF入れてないからわかんないけどaタグの書き方とか間違ってない?

255 :nobodyさん:2006/12/26(火) 01:32:04 ID:???
別に問題なくジャンプするよ。

256 :nobodyさん:2006/12/26(火) 01:33:02 ID:???
俺もそんなバグ情報はいくら検索しても出てこなかった。
でも自環境でテストしてみたら、
たしかにFFのアンカーラベル機能は死んでる様子。

257 :nobodyさん:2006/12/26(火) 01:40:34 ID:???
俺も簡単な実験をやってみた。

具体的には、test.php(ひたすら改行して、縦に長〜いページを出力するだけのスクリプト)で、
出力するHTMLの一番下(BODY閉じタグの直前)に、<a name="#label"></a>と記述。

この状態でtest.php#labelにFFからアクセスしても、ページ下部のラベルには飛ばない。
>>234はクエリ文字列のあとにラベルを付けた状態らしいが、俺はクエリ文字なしでも同じ結果だった。

258 :nobodyさん:2006/12/26(火) 01:41:46 ID:???
>>257
拡張子を.htmlに変えたらどうなる?

259 :nobodyさん:2006/12/26(火) 01:45:49 ID:???
> name="#label"
id="#label"


260 :nobodyさん:2006/12/26(火) 01:46:27 ID:???
こんなんみつけた。name属性じゃなくてid属性でやってみてー

目的地アンカーの最適化
http://www.seo-equation.com/reference/cat17/end_anchor
>旧来の HTML では、a要素の name属性にアンカー名を付与して
>ウェブページ内の特定箇所をリンク先として参照できるようになる
>目的地アンカー(終点アンカー)が一般的に良く使われていますが、
>XHTML1.1 では、name属性は完全に廃止され、
>旧来の目的地アンカーのテクニックは利用できません。
>本文書では HTML4 の仕様から新たに登場した id属性を指定することで、
>これを代替する手法を解説します。


261 :nobodyさん:2006/12/26(火) 01:56:39 ID:???
PHP利用メモリってどの位が適当か計算方法とかってありますか?
多分デフォルトのメモリ量では確実に不足してると思われるんですけど・・

262 :nobodyさん:2006/12/26(火) 01:58:20 ID:???
script.php?name=value#label Firefox/1.5.0.9

<p id="label">なんたらかんたら</p> 飛ぶ。日頃使ってる。
<a name="label">ここへ飛べ</a> 昔、こうしてた。飛ぶ。
<a name="label"></a> さっき試した。飛ぶ。
<a name="#label"></a> IE6: なぜか飛ぶ/Fx: 飛ばない。

で、なんでFxスレなんですか。

263 :nobodyさん:2006/12/26(火) 02:07:00 ID:???
FireFoxは完璧です。
バグだと疑うならまずはIEを疑ってください。

と信者が申してました。

264 :nobodyさん:2006/12/26(火) 02:13:18 ID:???
>>261
やったこと無いけど、一番重そうなページで memory_get_usage とか
memory_get_peak_usage を使ってメモリの使用量を測定し、想定する
同時接続数を掛けてみてはどうか?


265 :232:2006/12/26(火) 02:29:42 ID:K7ycYnW/
>>246
すいません。書き方が悪かったので訂正します。

ループさせる理由は、WebアプリでDB操作(INSERT/UPDATE)をするためなんです。
なので実際は10回どころか千・万単位のリクエストになります。
画面なしのバックグラウンドで動かすわけにはいかない、という条件です。
推定処理時間は数分です。
その処理時間の間に、進み具合が分かるプログレスバーを表示させたいと思っています。

-----
元の書き込みのwhileは別例になります。
DBとか書かないほうが説明しやすいかと思いまして、、、
動作としましては、

Javascriptからの1リクエスト、

----- ループ -----
PHPからのレスポンス送信
↓↑
Javascriptでのレスポンス受信
-----------------

が可能かどうかが知りたかったんです。
これが出来れば処理状況表示のプログレスバーも出来そうな気がするので、、、
よろしくお願いします。


266 :nobodyさん:2006/12/26(火) 02:42:30 ID:???
やっぱりそれならレスポンス受信する分、リクエスト飛ばすしかないよ。
こんな感じじゃない?すげー重くなりそうだけど。

function insertDB(){
  for( i=0; i<100; i++ ){
    Ajaxでサーバに i 件目を格納させるリクエストを飛ばす;
    成功したらプログレスバーのwidthを+1pxする;
  }
}

267 :nobodyさん:2006/12/26(火) 02:55:40 ID:???
setTimeout() か setInterval() 使いたまえよ

てかここって php のスレだよね

268 :nobodyさん:2006/12/26(火) 03:03:50 ID:???
>>265
最初の一件のリクエストで何万件だかの SQL を発行
進捗とともに状況をファイルに書き出す
ajax で一定時間ごとにファイルを読みに行く

そんな難しいことじゃない

けど 232 はもっと勉強が必要だと思う

269 :nobodyさん:2006/12/26(火) 03:06:04 ID:???
>264
ありがとうございます。
メモリの設定値はphp.iniを変更するだけでいいですよね?
大丈夫かなぁ

ちなみに関数の使い方はマニュアルをみたのですがなんか理解しずらいっす

270 :nobodyさん:2006/12/26(火) 03:14:54 ID:???
htmlとphpが=だと思ってるやつは池沼。バグ云々の話だクズども

271 :nobodyさん:2006/12/26(火) 04:47:51 ID:???
>>270
日本語でおk

272 :nobodyさん:2006/12/26(火) 05:09:35 ID:???
的外れの回答をしたうえに謎の捨てゼリフか

273 :nobodyさん:2006/12/26(火) 09:30:48 ID:???
>>238,241
女性用剃刀も買ってる。
パイパン&ソーセージでソフトSMかな。

274 :nobodyさん:2006/12/26(火) 09:43:15 ID:???
俺も初めてのヒゲ剃り母ちゃんの使ってたから、
女性用のほうが慣れてるぜwww

でもパイパンにするのにあのカミソリじゃ危ない希ガス・・・

275 :nobodyさん:2006/12/26(火) 10:09:13 ID:???
パイパンにしたいなら、男性用電動シェーバーのヒゲトリマーで全体を短くしてからにするとラク。

276 :nobodyさん:2006/12/26(火) 11:10:06 ID:???
パイパンにするのにPHPはいらないだろ!

277 :nobodyさん:2006/12/26(火) 11:37:45 ID:???
vipのクソスレコレクションを作りたいんですが
自動的にスレを保存するにはdatファイルにアクセス・読み込み・保存でよろしいのでしょうか?
datファイルとはお金をかけないと不正アクセス禁止法にひっかかるのでしょうか?

278 :nobodyさん:2006/12/26(火) 11:40:07 ID:???
親クラスのアクセス制限は子クラスで変更できないって書いてあるけど(コメントのところ)
なんでだろ?他の言語では広げるのはできないけど、狭めるのはできるよね?
http://php.justdn.org/manual/ja/language.oop5.visibility.php

PDOのコンストラクタはpublic → 継承したSingletonクラスでpivateにしたい。

279 :nobodyさん:2006/12/26(火) 11:52:40 ID:UoOJj1FX
教えて下さい。

登録サイト(mixiなど)でみかける住所フォームで、
都道府県を選択したら自動でその市区郡が選択できるようになるのがありますが、
PHPで同様なことをしたいのです。
どうしたらよいでしょうか?

参考になるコメント、助言お願いします。

280 :nobodyさん:2006/12/26(火) 11:54:33 ID:???
>>279
PHPでは不可能です。
javascriptをご利用ください。

281 :nobodyさん:2006/12/26(火) 11:55:26 ID:???
>>279
配列に都道府県を入れる

foreachで吸い出す

282 :nobodyさん:2006/12/26(火) 11:57:24 ID:???
>>278
できないのは仕様ですと言われればそれまでだからな・・・。

余談だけどPHPでシングルトンやるなら、結局は実行時にしかチェックされないってことも考えるといいかも。
たとえコンストラクタをprivateにしても、phpの場合は実行時にnewをして初めてエラーが出る。
だからJavaでコンパイル時にチェックさせるような実装を真似る必要はなくて、コンストラクタをpublicにしかできなくても、例えばクラス外からnewされたら例外を投げる、みたいなやり方で十分だと思う。
もしくは継承ではなく、コンポジションにする(PDOのインスタンスをプロパティとして持つ)って手もあるんじゃないかな。

283 :nobodyさん:2006/12/26(火) 11:59:15 ID:???
>>279
非同期でやるならJavaScriptだけどmixiは画面遷移してるね。
都道府県が選択されたらonChangeでPostして都道府県IDを飛ばすだけだな

284 :279:2006/12/26(火) 11:59:21 ID:???
的はずした・・汗

都道府県を選択

次のページへ移動

市区群表示

じゃだめか?

285 :nobodyさん:2006/12/26(火) 12:04:01 ID:TexWR+4f
postから受け取った値をhiddenでまわす処理をセッションで行いたいのですが、
hiddenをつかおうがセッションを使おうが、一回はpostされるわけですよね?
postの中身を改ざんされる恐れがあると思うんですが、
予防法などありましたらアドバイスお願いいたします。

286 :279です:2006/12/26(火) 12:07:27 ID:???
>>283
>>284
なるほど。
やってみます。ありがとうございます。

287 :nobodyさん:2006/12/26(火) 12:18:22 ID:???
>>285
postで何を受け取りたいの?

288 :nobodyさん:2006/12/26(火) 12:24:47 ID:???
甘い思い出

289 :nobodyさん:2006/12/26(火) 12:28:10 ID:???
なら時間とともに美化(改竄)されるのはしょうがないね。

290 :nobodyさん:2006/12/26(火) 14:05:13 ID:Jf/WWK78
1,234,567みたいにカンマをつける書式に数値を文字列に変換する方法を教えてください

291 :nobodyさん:2006/12/26(火) 14:16:47 ID:???
>>290
number_formatのこと?

292 :nobodyさん:2006/12/26(火) 14:40:10 ID:???
おれはドブネズミですか?

293 :278:2006/12/26(火) 15:01:13 ID:???
>>282
的確な返答ありがとう。確かにもっともな話ですね。
あんまり考えないことにする(笑)

294 :nobodyさん:2006/12/26(火) 16:00:44 ID:???
phpでプログラム作ってみたから、ライセンス認証を取り入れて公開してみようと思うんだけど、
どこかライセンス認証に向いてるシステム作ってるサイトしらない?
自分で作ってもいいんだけど、既存のものがあるなら見てみようと思ってさ。

295 :nobodyさん:2006/12/26(火) 16:03:11 ID:???
>>294
一言余計。
自分で調べな

296 :nobodyさん:2006/12/26(火) 16:50:16 ID:???
>>295
そういうケチを付けるだけの情報量ゼロないちゃもんもいりませんから。


とかいうとお前もなと不毛な鸚鵡返しが返ってくると↓↓↓↓↓↓↓↓

297 :nobodyさん:2006/12/26(火) 16:54:22 ID:???
煽り合いはよくないよ^^

298 :nobodyさん:2006/12/26(火) 17:17:40 ID:???
文字列から、0x00 やら BOM やらといった
不要な文字を除去したいのだけど
str_replaceにはどう書けばいいのでしょうか?


299 :nobodyさん:2006/12/26(火) 17:22:37 ID:???
>>298
$str = str_replace(array("0x00", "BOM"), "", $str);

300 :298:2006/12/26(火) 17:30:33 ID:???
いやいやいやいや。
そのものではなくて、文字コード0x00とUTF-8のBOMという意味です。

301 :nobodyさん:2006/12/26(火) 17:40:21 ID:fFhrPh3D
現在、PHP上から、サーバPCの電源断するVBSを使用しようとしていますが上手くいきません。

VBSファイルの内容は、
Set objSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}").InstancesOf("Win32_OperatingSystem")
For Each objSystem In objSystemSet
objSystem.Win32Shutdown 8
Next

という割と有名なやつです。poweroff.vbsで保存されております。

PHP上の呼び出しは、
$ret = system("C:\**********\poweroff.vbs");

となっております。
PHP上で実行すると、確かにシャットダウンは開始するのですが、
画面が暗転してシャットダウンが途中で止まったり、
ログイン時のダイアログが表示されたり、たまに完全にシャットダウンされたりします。

ちなみに直接VBSを呼び出すと無事シャットダウンされます。

OSはXP、Apache1.3.28+PHP4.4.2です。

何か原因があるのでしょうか?

302 :nobodyさん:2006/12/26(火) 18:10:25 ID:???
chmのphpマニュアルの文字化けはいつになったら治りますか?

303 :nobodyさん:2006/12/26(火) 18:38:36 ID:Jf/WWK78
>>291
そそそ、それでした!!
ありがとうございまーす

304 :nobodyさん:2006/12/26(火) 20:37:52 ID:???
>>302
おまえの環境をみなおしたほうがいいよ。
おれは文字化けない。

305 :232:2006/12/26(火) 20:53:02 ID:???
>>268
そういう手法は全く考えてませんでした。
ズバリな回答ありがとうございました!

> けど 232 はもっと勉強が必要だと思う
(´・ω・`) がんばります

306 :nobodyさん:2006/12/26(火) 21:18:27 ID:???
2ちゃんねるのdatファイルからタイトルを取得したいのですが、
ログのどこみたらのってますか?

307 :nobodyさん:2006/12/26(火) 21:34:01 ID:???
>>306
スレ違いも甚だしい

308 :nobodyさん:2006/12/26(火) 22:21:43 ID:???
>>306
ヒントをやるから自分でみつけろ

1. http://pc8.2ch.net/php/dat/1166676139.dat
2. 「<>」で区切ってある


しかし2ちゃんねるはデータベースを用いないのな。

309 :nobodyさん:2006/12/26(火) 22:47:18 ID:???
5つ目にありました。ありがとうございました。


310 :nobodyさん:2006/12/27(水) 00:49:17 ID:uQ88JK/1
ケーキ食べたいんですけど、どこのコンビニのケーキがいいですか?

311 :nobodyさん:2006/12/27(水) 00:51:59 ID:???

            ∩_ 
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /


312 :nobodyさん:2006/12/27(水) 00:58:17 ID:0HWbicIg

$tit ="この部分";
//〜〜
$Yow ="この部分";
//~~
//~~~^^
$ok ="この部分";
//〜〜

このように記述されてるPHPの「各""(ダブルクォーテーション)の中」に
「文字を書き込み」、かつ「""の中身」に既に文字が入っていれば
「上書きして文字を書き込む」PHPを作成したいのですがどうすれば良いでしょうか


313 :nobodyさん:2006/12/27(水) 01:00:16 ID:???
意味わかんね

314 :nobodyさん:2006/12/27(水) 01:02:35 ID:0HWbicIg
指定されたファイルの文章中の

$tit ="この部分と";
//〜〜
$Yow ="この部分と";
//~~
//~~~^^
$ok ="この部分";
//〜〜

に特定の文字を書き込むPHPを作成したいのですがどうすれば良いでしょうか

315 :nobodyさん:2006/12/27(水) 01:06:46 ID:???
下記のコードをShift_JISで保存して実行すると
<?php
mb_internal_encoding("UTF-8");
$str = 'あaいiうuえeおoかkaきkiくkuけkeこkoさsaしshiすsuせseそsoたtaちchiつtsuてteとto';
echo mb_substr(mb_convert_encoding($str, 'UTF-8', 'SJIS'), 0, 10);
echo "\n";
echo mb_convert_encoding(mb_substr($str, 0, 10), 'UTF-8', 'SJIS');
?>
結果が

あaいiうuえeおo
あaいiうu

となります。mb_substrの返り値が違うのは
Shift_JISは1〜2byteのみで表現するのでbyte数で返してもほとんど支障はない
UTF-8は1〜6byteで表現しbyte数で返すと文字数が少なすぎる場合があるので文字数で返す
ということでいいんでしょうか?

316 :315:2006/12/27(水) 01:07:45 ID:/UATDQ7l
ID忘れました。

317 :nobodyさん:2006/12/27(水) 01:18:25 ID:???
例題
ノロが怖いので丁寧にチンチンを洗ったら気持ちよくなりました。
ノロって気持ちいいんですね。

上の条件を満たす関数を作りなさい。
優秀賞はノロウィルス一年分贈呈


318 :nobodyさん:2006/12/27(水) 01:26:54 ID:uQ88JK/1
いまカミナリがなってます。
パソコンが壊れた場合、phpがインストールできなくなるのでしょうか?

319 :nobodyさん:2006/12/27(水) 01:31:01 ID:???
>>318
はい。
使い物にならなくなるので、粗大ゴミに出してください。

320 :nobodyさん:2006/12/27(水) 02:04:27 ID:???
>>314
置き換えたい文字列をあらかじめ __hogehoge__ とかにしておいて、
すべて変数$beforeにいれておき

$after = str_replace( $before, "__hogehoge__", "書き込みたい文字列" );

321 :nobodyさん:2006/12/27(水) 02:47:16 ID:???
>>320
ありがとうございます

322 :nobodyさん:2006/12/27(水) 02:56:36 ID:???
switchっていうのは、
ifとelseifのみの、elseがない条件文のようなものという認識であってますか?

323 :nobodyさん:2006/12/27(水) 02:59:17 ID:???
あってない

324 :nobodyさん:2006/12/27(水) 03:31:32 ID:???
初心者のとき以外switch文なんか書いてないしこれからも書くことはないだろう。
なんかメリットあるのか?

325 :nobodyさん:2006/12/27(水) 03:38:49 ID:???
OS のネイティブアプリとかで
message (イベント)を処理するときに使う
if 文で書くと冗長になる

326 :nobodyさん:2006/12/27(水) 03:56:17 ID:???
条件 a の時に処理 1 を
条件 b の時に処理 1 と 2 をなんて時に使う
if 文で書くと
同じことを複数書くか(メンテナンス性が最悪)
if 文を増やすか(速度的なペナルティがある)するしかない

Web アプリではあまり使わないけれども

327 :nobodyさん:2006/12/27(水) 08:39:13 ID:???
あぁ、冬休みになったんだなぁ…

328 :nobodyさん:2006/12/27(水) 10:08:35 ID:???
switchを絶対使わないって何かgotoみたいなアレかねw

329 :nobodyさん:2006/12/27(水) 10:19:29 ID:???
PHPのswitch文は便利じゃん。
別にデメリットがあるわけでもなし、
使わんとかいう理由がわからん。

…と、思ったんだけど、
自分のソース見たら使ってなかったw

330 :nobodyさん:2006/12/27(水) 12:34:33 ID:???
男なら全部if~else

331 :nobodyさん:2006/12/27(水) 12:39:10 ID:???
男なら配列で済ますか、関数ポインタ

332 :nobodyさん:2006/12/27(水) 12:40:45 ID:???
男ならPHPなんかやるやよw

333 :nobodyさん:2006/12/27(水) 12:58:56 ID:???
>>315
echo mb_convert_encoding(mb_substr($str, 0, 10), 'UTF-8', 'SJIS');
だと文字コードが違うのでmb_substrが正常に動作しないだろ

echo mb_convert_encoding(mb_substr($str, 0, 10, "sjis"), 'UTF-8', 'SJIS');

334 :nobodyさん:2006/12/27(水) 13:18:19 ID:OjKZeNpj
$as = "/*";
$ad = "*/";
include("summary.php");
include("chmary.php");
$as;
include("この部分");
$ad;

変数によって、コメントアウトさせようとしているのですが
うまく行きません、どうすればいいのでしょうか

335 :nobodyさん:2006/12/27(水) 13:24:24 ID:???
>>334
普通にif文でスキップしてはいかがでしょうか?

336 :nobodyさん:2006/12/27(水) 13:44:44 ID:???
>>334
すごいことを考えるもんですね
コメントはプログラム実行前のParserで処理されるから不可能だよ

337 :nobodyさん:2006/12/27(水) 13:46:37 ID:???
>>335->>356
失礼しました、ありがとうございます


338 :nobodyさん:2006/12/27(水) 13:47:02 ID:???
>>334
それじゃなんにも出力してないだろうが!

339 :nobodyさん:2006/12/27(水) 13:58:36 ID:???
>>338
前後の記述部分を
端折っただけなのです

340 :nobodyさん:2006/12/27(水) 14:22:53 ID:???
PHPの勉強を始めようと思って色々調べてみたら
XAMPPというソフトが紹介されていました。
そのソフトは一括で色々なものがインストールできる見たいなんですが
自分は今のところPHPとApacheとMySQLしか使う予定は無いのです。

それでもXAMPPをインストールする価値というのはあるのでしょうか?
それとも別々にインストールしたほうがいいと思いますか?

341 :nobodyさん:2006/12/27(水) 14:23:41 ID:???
バナーをクリックしたらカウントアップされるというのを
作ろうとしているのですが、PHPだけで出来ますでしょうか?
アクセスカウンターみたいな形ではなく、あくまでバナークリックです。

ご存じの方は設計のアドバイスをいただければ助かります。

342 :nobodyさん:2006/12/27(水) 14:28:54 ID:0HWbicIg
<form method="post" action="form_d.php">
でform_d.phpとform_d2.phpの両方へデータを送りたいときは

<form method="post" action="form_d.php">
<form method="post" action="form_d2.php">

と記述するしかないのでしょうか


343 :nobodyさん:2006/12/27(水) 14:38:27 ID:???
>>342
そういう書き方ってHTML的にいけたっけ?恐らく駄目な気が・・。

それよりも受け取る側を2つに分けたら?

344 :nobodyさん:2006/12/27(水) 14:41:51 ID:???
>>343
度々すみません受け取る側を2つに分けるというのは具体的にはどう記述すれば
いいのでしょうか、

345 :nobodyさん:2006/12/27(水) 14:44:18 ID:???
>>340
XAMPPの説明呼んで、使いたいと思わなければ個別にインストール。

>>342
1クリックで1リクエストが基本。
form_d.phpにリクエストして、
form_d2.phpへは、form_d.phpからPOSTしてやれば?

346 :nobodyさん:2006/12/27(水) 14:45:30 ID:???
>>345
本当にありがとうございます。

347 :nobodyさん:2006/12/27(水) 15:41:06 ID:???
>>340
後から掃除するのが大変だから、
必要なものだけインストールしな。
設定の手間なんかは一緒だから。
動作テスト用だろうし、1回構築すればいいだけだからね。

348 :nobodyさん:2006/12/27(水) 17:16:19 ID:omeCjei1
self の説明はマニュアルのどこら辺にありますでしょうか?

349 :nobodyさん:2006/12/27(水) 18:04:37 ID:???
クラスとオブジェクトってとこ。

350 :nobodyさん:2006/12/27(水) 18:08:13 ID:???
chmod("ファイル名",777);と指定すると
Warning: chmod(): Operation not permitted in 〜
と出てしまいパーミッションの変更に失敗してしまいます。

原因をご存知の方が居りましたらご教授お願いします。


開発環境 : FedoreCore5
PHP : PHP Version 4.3.10
Server API: Apache 2.0 Handler


351 :nobodyさん:2006/12/27(水) 18:30:23 ID:???
>>350
0777

352 :315:2006/12/27(水) 18:30:53 ID:/UATDQ7l
>>333
レス遅れてすみません
文字コード指定すればよかったんですね
ありがとうございます。

353 :nobodyさん:2006/12/27(水) 18:55:18 ID:???
検索システムについての質問です
15個くらい検索項目がある検索システムを作らないといけないんだけど、
ポストされたデータがNULLじゃなかったら、SQL文にOR繋いで、(name LIKE '%{$_POST['name']}%') みたいな感じで増やしていけばいいですか?


354 :nobodyさん:2006/12/27(水) 19:40:48 ID:???
>>353
その質問のどこがPHPなんだ

基本的な考え方はそれでいいと思うよ。
そんなにたいしたことのない検索なら。

355 :nobodyさん:2006/12/27(水) 19:50:59 ID:???
>354
ごめん、POST以外は確かにSQLの質問だったな…
高等な検索ってどうしますお?

356 :nobodyさん:2006/12/27(水) 19:55:47 ID:???
高等な検索って何さ?

357 :nobodyさん:2006/12/27(水) 20:01:29 ID:???
「たいしたことのない検索」の反義語かなw

358 :nobodyさん:2006/12/27(水) 20:06:52 ID:???
たった15個
15個も

359 :nobodyさん:2006/12/27(水) 20:26:06 ID:???
ORでつなげたSQL文をimplodeとかで生成すりゃ十分じゃね?

360 :nobodyさん:2006/12/27(水) 20:37:13 ID:???
5個くらい、ORで繋げたLIKE咬ますと、量にもよるが結構もっさりしねぇ?


361 :nobodyさん:2006/12/27(水) 20:40:54 ID:???
>>360
そりゃ、どう考えてもPHPのせいじゃねーな

362 :nobodyさん:2006/12/27(水) 20:45:16 ID:???
>361 尿意
implodeでもいいし、気合でつなげてもいいし、ただ10項目位のOR LIKEは、否定的だなぁ
SQL的に重くなるね

363 :nobodyさん:2006/12/27(水) 20:54:43 ID:???
いっそのことPL/SQLとかストアドプロシジャ使ったら?

364 :nobodyさん:2006/12/27(水) 20:57:44 ID:???
>>353
エスケープしないの?

365 :nobodyさん:2006/12/27(水) 21:16:45 ID:???
>354>358>359>360>362>363
皆さんありがとうございました。
とりあえずimplodeで作ってみます〜
もっさりしたら、ストアドプロシージャーも視野に入れますが… 
一万行データあって、18列…
量つなげるのはやばそうですねぇ… 作って、酷かったらまた考えて見ます〜

>364
エスケープ? ぁぁ外側に「” ”」で囲っているので、大丈夫かと…ってことかな?

366 :nobodyさん:2006/12/27(水) 21:17:54 ID:???
>>365
実に馬鹿
ヒント:SQLインジェクション

367 :nobodyさん:2006/12/27(水) 21:37:08 ID:???
なるほどねぇ。。。
ZFのサニタイズらしい機能使ってて、最近全く気にしてなかった〜

368 :nobodyさん:2006/12/27(水) 22:43:08 ID:???
サニタイズって年寄りをターゲットにした悪質設備会社だっけ?


369 :nobodyさん:2006/12/27(水) 23:42:17 ID:???
全ページ共通のメニューをphpに書き出して、外部化しようと
ttp://neta.ywcafe.net/000372.htmlを参考にしています。

メニューで現在表示しているページには、class="here"などを付加させたいのですが、
どういう風に条件をつけたらいいかアドバイス頂けないでしょうか?

今みているページのファイル名のみ(ルートからのアドレスを取得する関数はあったのですが)を取得する方法なんかありますか?

370 :nobodyさん:2006/12/27(水) 23:50:15 ID:???
basename

371 :350:2006/12/28(木) 09:52:55 ID:???
>>351
chmod("ファイル名",0777);
の間違いでしたm(_ _)m

fedoreのセキュリティの設定辺りが
関係していそうな気がするのですが
一通りググって見たのですが
関連した記事が見つからなかったので
質問させていただきました。

372 :nobodyさん:2006/12/28(木) 10:17:06 ID:???
>>371
このどれかに該当しないの?

注意: カレントのユーザは PHP を実行しているユーザです。 これは普通のシェルや FTP アクセスでのユーザとはたいてい違います。 たいていのシステムでは、ファイルの所有者のみがそのモードを 変更可能です。

注意: この関数では、 リモートファイル を使用することはできません。これは、処理されるファイルがサーバのファイルシステムによりアクセスできる必要があるためです。

注意: セーフモード が有効な場合、操作しようとしているファイルあるいは ディレクトリの UID(所有者)がスクリプトの実行ユーザと同じかどうかを PHP がチェックします。さらに、SUID・SGID や sticky ビットを 設定することはできません。

373 :nobodyさん:2006/12/28(木) 11:40:40 ID:DqIHSsqd
初歩な質問ですが正規表現で
[0-9a-zA-Z]で英数字にマッチするのですが
これプラス「-」にマッチするものってどう記述したらいいですか?
よろしくお願いします。

374 :nobodyさん:2006/12/28(木) 11:43:35 ID:???
プラスの意味がよくわからないけど、バックスラッシュでエスケープすればいいんじゃないかな。

375 :nobodyさん:2006/12/28(木) 11:46:11 ID:DqIHSsqd
半角英数字と「-」にマッチするモノを抽出したいのです。
バックスラッシュ試してみます。

376 :nobodyさん:2006/12/28(木) 11:46:26 ID:???
>>375
[0-9\-] とか。
というか、それは正規表現スレがあるのでそちらでどうぞ。

377 :nobodyさん:2006/12/28(木) 11:51:52 ID:DqIHSsqd
スレ違いなのですね。
ありがとうございました。

378 :373:2006/12/28(木) 12:26:20 ID:DqIHSsqd
正規表現のほうでPHPで聞けと言われたのですが・・・
376さんが言ってるような表現になると思うのですが何故か上手くいきません。
「-」記号が入ってないときは上手くいくのですが・・・。

379 :あぼーん:あぼーん
あぼーん

380 :nobodyさん:2006/12/28(木) 12:44:18 ID:???
>>378
あら、そいつは失礼。
問題なければ、対象の文字列(可能ならその部分のソースも)をさらした方が早く回答もらえるかも。
俺もそんなにやってるわけじゃないけど…。

381 :nobodyさん:2006/12/28(木) 12:55:16 ID:???
>>378
ダブルクォーテーションでくくってるんじゃね?
ってか、ソースコピペすること。

382 :nobodyさん:2006/12/28(木) 13:01:51 ID:???
>>378
"/[0-9\-]/"
"/[-0-9]/"
とか確か先頭に置けばエスケープなしでもいけた気が

383 :nobodyさん:2006/12/28(木) 13:30:43 ID:???
[0-9\x2D]

384 :373:2006/12/28(木) 13:36:49 ID:DqIHSsqd
$prot = BC-K-o58tB;
$proto = ereg_replace("[0-9a-zA-Z]{10,10}","成功",$proto);
こういう感じです。

385 :373:2006/12/28(木) 13:40:18 ID:DqIHSsqd
10文字検索したいのですが-が間に入っているから上のソースではマッチしません。
さっき教えてもらったように[\-0-9a-zA-Z]{10,10}とかも試して見ました。

386 :nobodyさん:2006/12/28(木) 13:47:35 ID:???
>>384
1・一行目が「prot」なのに、置き換え対象が「proto」になっている
2・文字列として定義するなら BC-K-o58tB は 「"」か「'」で囲む。

で、とりあえず [0-9a-zA-Z\-] として動いたよ。

387 :nobodyさん:2006/12/28(木) 13:48:20 ID:???
-が入っても10文字なの?

388 :nobodyさん:2006/12/28(木) 13:49:14 ID:???
>>387
スルーしてくれ

389 :373:2006/12/28(木) 13:53:57 ID:DqIHSsqd
$proto = "テストBC-K-o58tB";
$proto = ereg_replace("テスト([0-9a-zA-Z\-]{10,10})","成功\\1",$proto);
で動作しません・・・。
$protoを"テストBCaKao58tB"にすると動作するのですが・・・。

390 :nobodyさん:2006/12/28(木) 13:57:36 ID:???
動作確認済み
<?php
$proto = "テストBC-K-o58tB";
$proto = ereg_replace("テスト([0-9a-zA-Z\-]{10,10})","成功\\1", $proto);
echo $proto;
?>

391 :nobodyさん:2006/12/28(木) 13:59:08 ID:???
>>389
そのソースをまるっとコピペして動作した。
それで動作しないなら、おまいの環境が悪いかと。

392 :373:2006/12/28(木) 14:00:25 ID:DqIHSsqd
すみません。動きました。少し別の所に問題があったようです。
みなまさ本当にお世話になりました。

393 :nobodyさん:2006/12/28(木) 14:04:49 ID:???
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /
これだけ教えてくれた人がいるのに
「少し別のところ」も書かないなんて。


394 :nobodyさん:2006/12/28(木) 14:11:07 ID:???
はいはい冬休み冬休み

395 :nobodyさん:2006/12/28(木) 14:15:53 ID:e+ebdVG/
@

396 :373:2006/12/28(木) 14:16:52 ID:DqIHSsqd
あまりに恥ずかしかったのでw
実は、
$proto = ereg_replace("テスト([0-9a-zA-Z\-]{10,10})・・・([0-9a-zA-Z]{10,10})","成功\\1", $proto);
でして後部のほうに\-を入れてなかったのです。
でも基本的に\-を入れると言うのはここの皆さんのおかげでわかりましたので。
後部にもう一つ同じ箇所があってそこを修正していませんでした。
皆さん本当にありがとうございました。

397 :nobodyさん:2006/12/28(木) 14:21:22 ID:???
>>373
なるり。
まあそういうケアレスミスはよくある事だからがんばりやー。
恥かしくてもそういうのを書いておいたほうが、後々のためになるから出来るだけよろしゅう。


398 :nobodyさん:2006/12/28(木) 17:51:58 ID:Qv14/Bkx
sessionのセキュリティの話で、
セッションIDの他に推測されない値をCookieに入れておくみたいな話があるけど、
これは、どういう攻撃を避けるためなのかな?

399 :nobodyさん:2006/12/28(木) 17:55:27 ID:???
もし仮にPHPのセッションIDの生成方法が解読されても安全

400 :nobodyさん:2006/12/28(木) 19:00:29 ID:???
任意の桁数で連番をつけるにはどうすれば良いですか。
1,2,3-10-100-1000を
0001,0002,0003-0010-0100-1000といった感じです。


401 :nobodyさん:2006/12/28(木) 19:11:08 ID:???
>>400
sprintf

402 :nobodyさん:2006/12/28(木) 20:45:37 ID:???
掲示板のログファイルに最適なのは何ですか?
csv? xml? ただのテキスト?

403 :nobodyさん:2006/12/28(木) 20:58:48 ID:???
.dat

404 :nobodyさん:2006/12/28(木) 20:58:53 ID:???
>>402
MYD

405 :nobodyさん:2006/12/28(木) 21:04:46 ID:???
>>402
HTML

406 :nobodyさん:2006/12/28(木) 21:19:14 ID:???
>>402
php

407 :nobodyさん:2006/12/28(木) 21:20:57 ID:???
ログファイルなら、コンマ区切りのテキストファイルが良いと思ふ。
## 俺はいつもデータベースを用いているからな……。

408 :nobodyさん:2006/12/28(木) 22:17:43 ID:???
>>402
cgi

409 :nobodyさん:2006/12/28(木) 23:58:55 ID:w/qu4zo9
文字列を
%98%37みたいに変換できる関数なかった〜?

410 :nobodyさん:2006/12/29(金) 00:04:23 ID:???
>>409
urlencode

411 :nobodyさん:2006/12/29(金) 00:08:29 ID:YLaIusHS
ありがとー

412 :nobodyさん:2006/12/29(金) 00:25:48 ID:UI+BpgQS
画像ファイルをbase64エンコードして保存しました。
それを元に戻してブラウザに出力するには、「Content-Type: image」のヘッダを吐いて
base64デコードした文字列をechoで出力する....という単純な処理でいいの?

413 :nobodyさん:2006/12/29(金) 00:28:08 ID:???
>>412
いいよ。
つか、何故そんな簡単なことを実際にやって確かめないの?

414 :nobodyさん:2006/12/29(金) 00:28:13 ID:???
>>412
やってみたら?

415 :nobodyさん:2006/12/29(金) 00:32:01 ID:UI+BpgQS
>>413-414
ご回答、ありがとうございます。

>何故そんな簡単なことを実際にやって確かめないの?

いや、やってみたことはやってみたんですよ。
もちろんうまく出力することはできたんですが、なんだかこれでいいのかなって。
自分流で強引な方法なのかもと不安になってしまったんです。

すみませんでした。

416 :nobodyさん:2006/12/29(金) 00:37:55 ID:1uYyFHrL
マルチバイトの関数を私用するとエラーが出ます。
いろんなサイトでmbstringの設定方法を参考にしましたがだめです。
バージョンで動作が違うとかありますか?

417 :nobodyさん:2006/12/29(金) 00:43:48 ID:???
>>415
ハッシュとって同一か確かめてみたら?

>>416
エラーを書こう

418 :nobodyさん:2006/12/29(金) 01:29:16 ID:???
mysql_escape_string($item);
mysql_escape_string($table);
$sql = "select $item from $talbe";
としなくても
$sql = "select $item from $talbe";
mysql_escape_string($sql);
でも同じですよね?

寝ずにずっとやってたら頭回らなくなってきた orz

419 :nobodyさん:2006/12/29(金) 01:39:25 ID:???
PEAR::DBで指定クエリーでのデータの行数だけ
取得する方法ってありますか?
クエリーで一回格納してそれをnumRows()する方法
$rs=$db->query($sql);
$rs->numRows();
では、データ量が多い場合にメモリ無駄に食いますよね
それを避けて、行数のみ取得したいと考えてます。

420 :nobodyさん:2006/12/29(金) 01:41:38 ID:???
$num = $db->getOne("select count(culum) from...");

421 :nobodyさん:2006/12/29(金) 01:43:10 ID:???
>>402
とりあえずブラウザでみれないようなファイルに

>>418
$item に " が含まれていたらどうなるのだね?

上は正しい SQL 文になるが
下は SQL インジェクションの餌食になるよね

422 :nobodyさん:2006/12/29(金) 01:46:14 ID:???
>>419
SELECT COUNT(*) FROM TABLENAME;

423 :nobodyさん:2006/12/29(金) 02:25:43 ID:zzjbblat
アンケートシステムを作っているのですがどうしても解決できない問題があるのでお願いいたします。
1.質問文、項目は管理者が自由に増やしたり削ったりできる
2.質問が1の時もあれば5つのときもある(管理者次第)
3.複数選択も管理者が選択できる
以上の機能でMySQLにユーザが選んだデータを入れていくのですがこのようにクエリがまったく予測できないのでどのように入れたらいいか見当もつきません。。
今、考え付くのが
一つのチェックに1行作るくらいです。。

お力お貸しくださいm(_ _)m

424 :nobodyさん:2006/12/29(金) 02:49:10 ID:???
>>421

>下は SQL インジェクションの餌食になるよね

ならなくね?

425 :nobodyさん:2006/12/29(金) 03:03:07 ID:???
>>423
質問テーブル(親)−質問項目テーブル(子)−回答選択肢テーブル(孫)

回答テーブル
 質問ID
 質問項目ID
 回答選択肢ID

>>424
下のは文字列を扱うSQLが実行できないだろ
select password from user_master where userid='hogehoge'
↓escape
select password from user_master where userid=\'hogehoge\'


426 :p2037-ipbf13souka.saitama.ocn.ne.jp:2006/12/29(金) 03:27:47 ID:???
規制解除

427 :nobodyさん:2006/12/29(金) 08:35:57 ID:???
>>403-408
遅くなりましたが答えてくれてありがとう。
ぶっちゃけ拡張子はどうでもいいんですけどね。
csvとxmlには、ファイルを扱う専用の関数があるみたいなので、
ログの管理がしやすいのかな?なんて思っただけなので。
DBが使えない環境でも使えるようにしたいので、
407さんの助言通り、csvをテキストとして処理したいと思います。

428 :nobodyさん:2006/12/29(金) 09:04:48 ID:???
>>419
確かめずに書くけど、PEAR::DBのnumRows();って、
DBによって実装が違ったような…。
MySQLだと SELECT count(*) WHERE ・・・
を投げてたと思う。


429 :428:2006/12/29(金) 09:12:28 ID:???
間違ってた…。
ネイティブの関数だから、メモリは関係ないかも。
DB側の実装によるんじゃないかな。

430 :nobodyさん:2006/12/29(金) 10:34:00 ID:JQJ1UMkF
<html>
<head>
<?php
$encoding = "EUC-JP";
$str = '<meta http-equiv="Content-Type" content="text/html; charset='.$encoding.'">';
echo $str;
?>
<title>あいうえお</title>
</head>
<body>
<p>あいうえお</p>
</body>
</html>


として表示させると、文字化けします。(このスクリプト自体がShift_JISで保存してる為)
そこで、mb_convert_encodingを使ってみたのですが、

echo mb_convert_encoding($str, 'EUC-JP');
echo mb_convert_encoding($str, 'EUC-JP', 'Shift_JIS');
echo mb_convert_encoding($str, 'EUC-JP', 'auto');

などとやっても文字化けしたままでした。

根本的な解決は、このファイルをEUCとして保存するしかないのでしょうか?
それとも何か使い方が間違ってるだけなのでしょうか?
どなたかお助けください。

431 :nobodyさん:2006/12/29(金) 10:39:09 ID:???
PHPってシングルクオートでも動くんだ。知らなかった。ためしにこれはどう?

$str = '<meta http-equiv="Content-Type" content="text/html; charset='.$encoding.'">';

$str = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$encoding."\">";


432 :430:2006/12/29(金) 10:54:04 ID:JQJ1UMkF
>>431
レスありがとうございます。
それでもだめみたいでした。

ファイル自体をEUCで保存すれば文字化けはしませんでしたが、
$encodingの値はいつでも変えれるようにしたいので、
その都度コードを指定して保存しなおすのは大変なので、
どうにかしたいのですが、どなたか宜しくお願いします。

433 :nobodyさん:2006/12/29(金) 11:08:48 ID:???
>>430
ブラウザはで表示されてる?

434 :nobodyさん:2006/12/29(金) 11:10:55 ID:???
なんだ、内部コードじゃなくてHTML部分の静的な文字列のことか。
それだったらファイルをShift_JISで書いたときは $encoding = "Shift_JIS";
それだったらファイルをEUC-JPで書いたときは $encoding = "EUC-JP";
にしなきゃダメじゃない?

435 :nobodyさん:2006/12/29(金) 11:12:22 ID:???
>>432
>ファイル自体をEUCで保存すれば文字化けはしませんでしたが、
>$encodingの値はいつでも変えれるようにしたいので、
>その都度コードを指定して保存しなおすのは大変なので、
意味がわからない。
EUCで保存すれば問題ないならそれでいい気がするのだが

つかそういう設定は普通define使うだろ?

436 :430:2006/12/29(金) 11:36:44 ID:JQJ1UMkF
>>434
内部コードっていうのがよくわからなくて・・・
HTMLの文字コードとは違うものなんですね。
混同してすみませんでした。

>>435
ちょっと説明すると長くなるのですが、
実はhtmlのDoctypeからhead間を出力するクラスを作っています。
自分の作ってるPHPは、
どれもhtmlのbody間の使いたいところでincludeする形になっていて、
単体ではhead間などは出力しないようになっています。
そこで、単体でも使えるように、そんなクラスを作っているのですが、
今まで作ってきたスクリプトの、保存した際の文字コードが違ってたりして、
上のスクリプトのencodingの値を変えないと、文字化けしてしまうのです・・・
ファイルの文字コードは、時期ごとに変わっているので、
(Shift_JIS→EUC-JPときて、今はUTF-8を使っています。)
いちいちファイルをチェックしなくても、どの文字コードがだいたいわかります。
数が多いので、できれば統一したくないというのが理由です。

説明がわかりづらいかもしれませんが、
不可能なようなので、あきらめて全て統一する方向にしたいと思います。

437 :nobodyさん:2006/12/29(金) 11:57:06 ID:ttVITF9r
Smartyの質問ですがよろしいでしょうか?
PHP→Smartyに $common_template_dir として "/path/to/" を設定します。
で、インクルードファイルとして"/path/to/header.tpl"を読み込みたいのですが、
下記の方法では(もちろん)うまくいきません。
(変数名自体がかわっちゃうから当たり前ですよね)
{include file="$common_template_dirheader.tpl"}

{include file="/path/to/header.tpl"}
となるように記述したいのですが、どうしたらいいのでしょうか?

438 :nobodyさん:2006/12/29(金) 12:35:59 ID:???
>>436 は 自分のしたいこと・しなければならないことがわかっていないような気がする。
そもそもMETAタグを文字コード変換してどうしようというのか。

たぶん、問題はphp.iniのdefault_charsetじゃないかと推測するが。

439 :nobodyさん:2006/12/29(金) 13:07:19 ID:???
ファイルの中から日本語を検索するには、mbstringが有効じゃないとだめなのですか?
調べても、しっかり説明されているところが見つかりません。
あいかわらずマルチバイト系の関数はないってエラー吐くし、解説サイト全然役に立たない。

440 :nobodyさん:2006/12/29(金) 13:48:22 ID:???
>>437
assainにいれちゃえばいいのでは。
php側
$smarty->assign('include_tpl', '/path/to/header.tpl');

tpl側
{$include_tpl}

441 :nobodyさん:2006/12/29(金) 13:50:49 ID:???
440です
違う気がしてきた。sryネ

442 :nobodyさん:2006/12/29(金) 14:46:57 ID:???
>>439
mbstring系の関数がないなら…
Windows系→php.iniでmbstringを有効に
Linux系→./configureオプションに--enable-mbstring --enable-mbregex を追加してリビルド

443 :nobodyさん:2006/12/29(金) 14:56:00 ID:???
かなり下質かと思いますが、、ずっと気になっているので質問です。

みなさんは、ファイル名やフォルダ(ディレクトリ)名の付け方って
特にこだわっていたりしますか?

ファイル名の場合はそれぞれの用途や名称を元にしたらいいのですが、
フォルダ名を付ける時、どういう名前がわかりやすいのか悩む時があります。
例えば、どのコンテンツにも使うものやfunctionファイルなど。
(commonとかmoduleとかにしていますが、、)

気にする必要はないと思いますが、ファイル名・フォルダ名の付け方について
混乱しない・汎用性の高い付け方があったら教えて下さい。

444 :nobodyさん:2006/12/29(金) 14:56:45 ID:???
CSRFって、Referが取得できるなら、それをチェックするだけで、万事OK?

445 :nobodyさん:2006/12/29(金) 15:01:28 ID:???
>>444
全然だめ

446 :nobodyさん:2006/12/29(金) 15:11:37 ID:???
>>445
何がダメなのかを教えていただければ、これ幸い。

447 :446:2006/12/29(金) 15:13:39 ID:???
実際のところReferは取れないこともあるし、
SESSIONを使ったサイトしか作るつもりが無いので、
セッションに前画面の情報を入れて(Referの代替程度の話)
更新系の画面ではそれをチェックするぐらいでいいかなぁと。

448 :nobodyさん:2006/12/29(金) 15:16:42 ID:???
>>446
CSRFの何がどう危険なのか、その仕組みを全く理解してないようだな。
まずその仕組みを徹底的に調べろ。

で、とりあえずリファラのチェックは全く対策にならない。
なぜなら、いくらでも偽装できるから。

449 :nobodyさん:2006/12/29(金) 15:18:21 ID:???
mixiの「ぼくはまちちゃん事件」も徹底研究しろボケ。
postkeyがあってもCSRF脆弱性を無くせなかったmixiを反例にすべし。

450 :446:2006/12/29(金) 15:19:53 ID:???
>>448
なるほど。
たぶん>>447の方法だと偽装はできなくなるはずだから、大丈夫そうかな。

451 :446:2006/12/29(金) 15:24:28 ID:???
逆にpostkeyの必要性があまりわかっていない…orz
セッションIDのみより暗号強度が強くなるという認識程度。

>>447の方法だと、あとはセッションハイジャックの問題になると思ってるんだけど…。

452 :nobodyさん:2006/12/29(金) 15:48:32 ID:1NnWPd/m
パスワードの暗号化について質問です。

いくつか調べたところ、crtptを使うのが一般的みたいですが、
これだと復元出来なくなるので、「パスワードを忘れた人に再送信」
などのシステムが作れなくなります。

しかし、暗号化しないとDBを使ってもセキュリティ的によく無いとも聞きます。
こういう場合、どうしたらいいのでしょうか?

453 :nobodyさん:2006/12/29(金) 15:54:22 ID:???
「パスワード登録」→「ssl通信」→「データベース保存」
「データベースにパスワード問い合わせ」→「ssl通信」→「パスワード再送信」

454 :nobodyさん:2006/12/29(金) 15:58:30 ID:???
>>452
パスワード忘れた人には、古いパスワードを捨てさせて、
新しい仮パスワードを発行するのが、普通じゃない?
で、ユーザーから本パスワードに変更してもらう。


455 :452:2006/12/29(金) 16:02:34 ID:???
>>454
ありがとうございます。やっぱりそれしかないんですかね。。

あと、それなら「管理者が管理するシステム」でも
古いパスワードは捨てて、再設定する方式になりますよね?

目で見て確認出来ないのは辛いですが、そのようにシステムを変更します。

456 :nobodyさん:2006/12/29(金) 16:03:18 ID:???
>>453
パスワードを生のまま保存してるのか?
なんと恐ろしいことを・・・

普通はMD5ハッシュ化して保存。

457 :nobodyさん:2006/12/29(金) 16:06:10 ID:???
>>453でいいじゃん。なんでスルーされてるのか疑問なんだが

458 :nobodyさん:2006/12/29(金) 16:20:37 ID:???
>>442
既存の環境が悪さしてるかと思って、Windowsクリーンインストールしたマシン用意したが同じ結果。
PHP4でも5でも動いてくれない。

459 :nobodyさん:2006/12/29(金) 16:20:46 ID:???
管理者だろうが、他人のパスワードを見れるのは問題だよ。

460 :446:2006/12/29(金) 16:29:17 ID:???
>>449
mixiがpostkeyがあってもダメだったのは、
postkeyが固定だったことと、
他の脆弱性でpostkeyが漏れたからじゃないのかな??

461 :nobodyさん:2006/12/29(金) 16:42:06 ID:???
>>448
> なぜなら、いくらでも偽装できるから。
典型的に間違ったこといってるね。
被害者がリンクを踏んだりした被害者の Referer を偽装することは、
【ブラウザに脆弱性が無い限り】 できない。

ちなみに、つい最近 Flash にその脆弱性が発見されたが、すぐ修正版が公開されたし、
Referer 関係の脆弱性はそこまで多くない。



462 :nobodyさん:2006/12/29(金) 17:00:32 ID:???
>>461
おたくが言うところのブラウザは脆弱性だけがリファラが偽装の手段なの
PHPでもheader関数で簡単にリファラ偽装できるけど

463 :461:2006/12/29(金) 17:04:58 ID:???
>>462
ほんとに分かってないね。
Referer はクライアントが送信できる任意の情報だから簡単に偽装できるよ、そりゃ。

でも CSRF ってなんだか分かってる?

おまいさんが言ってる Referer を偽装できる人は 悪意のあるWebサイトの管理者のことだよね。
CSRF対策の被害者は 【悪意のあるリンクをクリックした人】 であり、その人が自ら Referer を偽装する動機はないわけ。

php の header 関数を利用して、悪意のあるページを閲覧した第三者が送信する Referer を偽装する方法があったら教えてくれ。


464 :nobodyさん:2006/12/29(金) 17:32:35 ID:???
今現在そのページを何人の人が見てるかが知りたいのですが、
セッションを使えばいいんですよね?

465 :nobodyさん:2006/12/29(金) 17:49:34 ID:???
> Referer を偽装できる人は 悪意のあるWebサイトの管理者のことだよね
ちがうよ

私の場合CSRFとかの意図は無いが普通にリファラを制御しながらブラウジングするけど

466 :nobodyさん:2006/12/29(金) 17:54:04 ID:e5ul8+TJ
すんごいくだらない質問だとおもうんですが詰まってます。お助け!

$dataC[$i][$c] = str_replace("(9)","$123_0123",$dataC[$i][$c]);

のようにして、ある文字列の中にある(9)を$123_0123という文字列におきかえたいんですが$をエスケープする為に\$としてみたのですが$しか表示されません。
いろいろためしてみたのですが、どうも混乱してきました。$をエスケープすれば文字列としてあつかわれるんじゃないんでしたっけ?
アドバイス御願いします。

467 :nobodyさん:2006/12/29(金) 18:06:43 ID:e5ul8+TJ
↑ですが、
$dataC[$i][$c] = str_replace("(9)","$123_0123",$dataC[$i][$c]);


$dataC[$i][$c] = str_replace("(9)","$ABC_0123",$dataC[$i][$c]);

にしてください。そこの変数名名前がやばかったんで、ダミー入れたら数字のみにしてしまいました。

468 :461:2006/12/29(金) 18:11:05 ID:???
>>465
そういうことか。
つまり、普段から Referer を偽装してブラウジングしている人が悪意のあるリンクをクリックした場合に、そのRefererを偽装している人が保護されないということね。
それなら正しいわ。

ただ、Referer については RFC で定義されているので (「送信しない」という選択肢は認めている。)、 RFC に反する通信を行っている人 かつ
Referer をデフォルトで偽装するブラウザは無いに等しい のでそれを保護する必要があるのかは疑問だけど。

逆に言えば、クライアントは Referer の送信を拒否する権利がある (RFCでも認められている) ので、そういった正当な通信までもをエラーで拒否するのは
アクセシビリティ上の問題があるけどね。(ちなみに、W3Cの文法チェックステッカーや多くのSSL検証シールはそれやってる。)


469 :nobodyさん:2006/12/29(金) 18:23:29 ID:???
>>466
$ を \$ にしてみる前にマニュアル読もう。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.single
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.double

470 :nobodyさん:2006/12/29(金) 18:28:09 ID:e5ul8+TJ
>469

う…おはずかしい。
”を’にすればよいだけでした。
感謝します。
ありがとう。

471 :nobodyさん:2006/12/29(金) 19:50:57 ID:e5ul8+TJ
すいません。又質問なのですが
$dataC[$i][$c] = str_replace("(9)",'$ABC_0123',$dataC[$i][$c]);

によって、ある文字列の中の特定の文字が置換されDBに格納されました。

そのDBに入った文字列のなかにある$ABC_0123をecho等で書き出すときに変数に戻すにはどうすればよいでしょうか?
DBはmysqlです。
sqlから呼び出した文字列はどのような扱いになっているのでしょうか?
宜しくお願いします。

472 :nobodyさん:2006/12/29(金) 21:13:46 ID:???
>>471
mysql関数を使う前にマニュアル読もう
http://jp.php.net/mysql_query
http://jp.php.net/manual/ja/function.mysql-fetch-array.php

473 :nobodyさん:2006/12/29(金) 21:23:29 ID:e5ul8+TJ
たびたびすいません。なるほど、特別な戻値になってるわけですね。
SQLから戻ってきた文字列は中にどのような関数や変数を入力してもそのまま出力されることから、恐らく''で囲ったのと同じ文字列として扱われているようです。

実験的に

$AAP = str_replace('BB_0123',"$BB_0123",$AAP);

のように呼び出した文字列に対して置換をおこなうと展開されるようになりました。
ありがとうございます。

ただ、全ての変数および関数に対して置換をおこなうのはどうも効率がわるいきがします。
''でかこった文字列を""でかこった文字列に変換する良い方法はないでしょうか?

よろしくお願い致します。

474 :nobodyさん:2006/12/29(金) 21:28:34 ID:???
>>473
そもそもDBに格納するデータにPHPコード(変数とか関数とか)を入れるのが
根本的におかしいと思うんだが、何でまたそんな妙な設計にしてるのさ

475 :nobodyさん:2006/12/29(金) 21:35:19 ID:e5ul8+TJ
>474 さん
携帯対応のシステムなのですが、絵文字のライブラリー群はすでにあり、その仕様が

$aaa_123の変数が有る場所にはアクセスしてきた携帯キャリアに併せた絵文字コードに変換して送信する。
という仕様なんです。

で、DBの中に直接変数をいれておけばあとはecho等で吐き出せば全キャリア絵文字対応になる予定だったんです。

で、一番最初に御聞きさせて頂いたようにDB入力時にまず変数が文字列として入らない事に躓いて

次に、DBからひっぱってきた変数が展開されない事に躓いてると。
そういう訳なんです。絵文字なんで全置換プログラムなんて書くと量も多いし、負荷も心配で。

なにか良い知恵が会ったらアドバイス頂きたいです。

476 :nobodyさん:2006/12/29(金) 22:32:08 ID:???
eval使えば?

477 :nobodyさん:2006/12/29(金) 22:50:22 ID:???
requireとかincludeって連続で使う場合、
require('hogehoge.php');
require('hagehage.php');
みたいので当ってると思うんだけど、これをスマートに一文で表記する方法とかないかな?

478 :nobodyさん:2006/12/30(土) 01:30:51 ID:???
>>477
必要なファイルをrequireしてるphpファイルをrequireする。
とか、セットという概念を作ってrequireするとか。
特定の文字列を渡したら、特定のファイルを複数requireしてくれる関数を作るとか。

479 :nobodyさん:2006/12/30(土) 01:32:22 ID:???
>>475
serializeとかの関数で作り直せないか考えてみたら

480 :nobodyさん:2006/12/30(土) 01:38:20 ID:???
>>475
PHPの変数を展開させたりなんかしないで普通テンプレートみたいな形でやるんじゃないの

481 :nobodyさん:2006/12/30(土) 02:04:59 ID:???
文字列にマルチバイトが含むか含まないかチェックする関数ってなかったっけ?

135 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)