【PHP】質問スレッドpart30【php】

このエントリーをはてなブックマークに追加
1nobodyさん
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
2nobodyさん:2005/10/25(火) 06:50:53 ID:Q4oGlTH3
前スレ
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/l50
【PHP】質問スレッドpart28【php】
http://pc8.2ch.net/test/read.cgi/php/1115281031/l50
【PHP】質問スレッドpart27【php】
http://pc8.2ch.net/test/read.cgi/php/1109857283/l50

関連リンク
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
3nobodyさん:2005/10/25(火) 06:51:24 ID:Q4oGlTH3
関連スレ
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/l50
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/l50
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/l50
【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/l50
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/l50
[PHP-users MLヲチ7]今日の質問でございめう
http://pc8.2ch.net/test/read.cgi/php/1109389031/l50
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/l50

関連板
データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
4nobodyさん:2005/10/25(火) 06:51:56 ID:???
【FAQ】
1. ブラウザに何も表示されないんだけど・・・
 → error_reporting、display_errors、log_errors
2. include/requireに?a=b&c=dのようなパラメータつけたい
 → できません
3. $a1,$a2,$a3...はどうしたら?
 → 可変変数・・・というかむしろ配列使え
4. echo "$arr['hoge']['fuga']"; がうまくいかない
 → {おっぱい括弧}でくくれ
5. echo?print?
 → echoはコンマ区切りで書ける。printは関数。パフォーマンスは気にするな
6. 値渡し・参照渡しのパフォーマンス
 → これまた気にするな
7. csvやtsvを扱いたい
 → まずはfgetcsv
8. ファイル入出力関数(fopen等)でリモートファイル扱う際の限界
 → fsockopenでソケット通信で解決
9. 一定時間ごとに何かしたい
 → cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
 → ImageMagick
11. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
12. クッキーの情報をユーザから隠したい
 → セッション使え、ただしクッキーとセッションは仕組みが違うから同じように扱うな
5nobodyさん:2005/10/25(火) 06:52:28 ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。
1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
  目の前で生じている現象をそのまま具体的に書くなどもっての外。
  事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
  「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
  「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
  "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
  「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
  示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
 絶対に避ける。
8. 情報は小出しに。

「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。
まちがっても「エスパーの方,回答お願いします」
なんて痛い質問するな。つうか氏ね。
6nobodyさん:2005/10/25(火) 06:54:26 ID:???
というわけで、予告通り立てました。
一応、前スレ(part29)へ来た質問にはそのまま答えるのもいいですが、なるべく誘導推奨ということで。
7nobodyさん:2005/10/25(火) 10:35:07 ID:???
ちょwww前スレ使い切ってないけどいいの?
8nobodyさん:2005/10/25(火) 11:26:54 ID:???
前スレがタイトルの付け方でくだ質との住み分けが
事実上できなくなってるのも現実だしな。
(この板落ちたら駄目だろ的スレの数が少ないので個人的には構わんかな)
9nobodyさん:2005/10/25(火) 11:32:58 ID:lrmwE9/Z
>>1
10nobodyさん:2005/10/25(火) 12:25:55 ID:???
>>7
前スレは>>8の通り、スレタイに「質問」という言葉が入っていないために書き込みが激減してしまった。
代わりに多くの質問者は「くだらねぇ*質問*はここで書き込みやがれ」へ集中。
事実、問題の前スレpart29とくだ質part7は同時期に立ったが、前スレがチンタラしてる間にpart11まで行ってしまった。
(レス数を比較すると、だいたい700:4600)

で、何が問題だったかと言うと、(向こうのスレでもチラホラ話題になったのだが)「くだらない」とは言えないような質問までくだ質に集中し、普段回答している側にとってもおそらく有益と言えるような質問・回答のやりとりまで、くだらない話題に埋もれてしまったこと。
あと漏れ個人としては、くだ質の方では似たような質問が何度も何度も繰り返されているにもかかわらず、回答者も同じような受け答えを何度もしているように感じた。

まあ、前スレ埋まってないのに混乱の元だと思うかもしれないが、ちょっと質問しに2chに来たって感じの香具師らは、前スレには質問という言葉が入っていないので目にも留まらないと思われ。そういう意味で混乱はさほど無さそうに思う。
くだ質の伸びから察するに、ちょっと2chに質問しに来るって感じの香具師がおそらく大半なのだろうし。
11nobodyさん:2005/10/25(火) 12:49:45 ID:???
>>1乙!
12nobodyさん:2005/10/25(火) 13:50:57 ID:???
>>10
把握した.

part29 にこっちへの誘導リンクを貼ったほうが良くない?
13nobodyさん:2005/10/25(火) 14:30:40 ID:???
>>12
OK、貼ってきたよん。
14nobodyさん:2005/10/25(火) 14:51:02 ID:???

スレタイに「質問」と入れなかったりテンプレを端折った前スレの1が悪い
あとはくだ質の次スレあたりで関連スレのテンプレ貼ればokかな
15nobodyさん:2005/10/25(火) 16:31:17 ID:???
IMAP,POP3,NNTP関数に前に受信したメールは受信しないなんて都合の良い機能はないんだよね?
1615:2005/10/25(火) 16:41:18 ID:???
またはメールサーバーがそのメールを受信した時間を取る方法はないのでしょうか?
17nobodyさん:2005/10/25(火) 23:23:54 ID:???
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
18nobodyさん:2005/10/26(水) 02:33:24 ID:???
>>15
何がしたいのかよくわからんが、時間ならimap_headerとかで取れるけど
19::2005/10/26(水) 23:20:59 ID:AWxDLnDH
相対パスを取得できるようにしたいのですが、
どんな方法があるのでしょう?
20nobodyさん:2005/10/27(木) 00:10:43 ID:???
>>19
意味がわかりません。
21nobodyさん:2005/10/27(木) 00:17:40 ID:fD/gCp91
>>19
何をどこを基点としたときの相対パスを取得したいのですか。
22nobodyさん:2005/10/27(木) 00:18:48 ID:???
日本語がおかしかった
どこを基点とした何の相対パスを取得したいのですか。 かな。。
2319:2005/10/27(木) 00:44:02 ID:w9P0Ohds
すいません。
自分でも意味がわからなかった。

実行するスクリプトを基点として、同じ鯖上にある任意のディレクトリ
(例えばpublic_htmlとか)の相対パスを取得したいのですが。

しかし、これもわからない気がする。
24nobodyさん:2005/10/27(木) 01:31:30 ID:???
>>23
具体例を挙げてみて。
25nobodyさん:2005/10/27(木) 03:24:28 ID:???
>>19
とりあえず聞くけど

function relpath($fullpath) ...

って感じで、http://example.com/abc/def.phpの中で
relpath("/path/to/the/public_html")を呼ぶと "../.." を返し、
relpath("/path/to/the/public_ftp")を呼ぶと "../../../public_ftp" を返す
ってことでおk?
(ドキュメントルートが /path/to/the/public_html であるとする)
2619:2005/10/27(木) 07:47:24 ID:w9P0Ohds
25
その通りです。
あの日本語が理解されて嬉しいです。

相対パスから絶対パスを取得する関数は見つかったのですが、
相対パスを取得する関数は見つからなかったので。
27nobodyさん:2005/10/27(木) 08:19:06 ID:Xytq/Hms
下の様にGDライブラリを使用し、画像を縮小したのですが
とても荒く感じます。
<?php
list($width,$height)=getimagesize("img/php/20040218.jpg");
$src=@imagecreatefromjpeg("img/php/20040218.jpg");
$dst=imagecreatetruecolor(149,103);
imagecopyresized($dst,$src,0,0,0,0,149,103,$width,$height);
imagejpeg($dst,"img/php/20040218small.jpg");
?>

もう少しきれいにサムネイルしたいのですが、どのような方法が
あるのでしょうか?
28nobodyさん:2005/10/27(木) 08:40:56 ID:???
>>26
自分で関数書くしかないね。
explode("/", $path)で区切ったりしてひたすら書くべし。

>>27
imagejpeg(□, □, 100)で品質を100にする。
あと、GDに不満を感じたときは>>4の10も検討。
29nobodyさん:2005/10/27(木) 08:54:42 ID:???
>>27
どうでもいいことだが、GD系の関数名は無駄に長いので、
getImageSize
とか
imageCreateFromJpeg
のように大文字をからめて書くことをお勧めする
(PHPのクラス名・関数名・定数名はdefineの3番目の引数にtrueを指定しなかった場合を除いて大文字小文字の区別はされない)
30nobodyさん:2005/10/27(木) 09:12:55 ID:???
>>28さん
imageJpeg(□, □, 100);
にしてみたところ、少し改善された気がします。
XREAもImageMagickに対応しているようなので、試してみます。

>>29さん
大文字小文字って区別されないんですね!
次からは見やすくなるように、区別して使っていこうと思います。

朝から質問に答えていただき、ありがとうございました。
31nobodyさん:2005/10/27(木) 16:25:35 ID:???
//index.php
$uho = "ウホッ!";
<a href="ahya.php">リンク</a>


//ahya.php
echo $uho;


リンクで呼び出した先のPHPで、呼び出し元のPHPの中で宣言した変数$uhoを
参照する方法って無い?
32nobodyさん:2005/10/27(木) 16:31:55 ID:???
>>31
無い。やり方教えて欲しかったら、まずは>>1見れ。
33nobodyさん:2005/10/27(木) 16:32:11 ID:???
>>31
$_SESSIONか$_GET
34nobodyさん:2005/10/27(木) 16:36:14 ID:???
>>33
俺なら$_SESSION使う
35nobodyさん:2005/10/27(木) 16:38:52 ID:???
ページ間でデータをやり取りする方法は
・cookie
・session
・フォームかリンクに埋め込む
・ファイルかDBに保存
・shmop(環境依存)
などがある。
3619:2005/10/27(木) 16:43:43 ID:bGM1JPpO
>>28
わかりました。
explodeを使って何とか作ってきます。
どうもありがとうございました。
3731:2005/10/27(木) 16:44:24 ID:Ar3CFaXZ
>>32
スマソ・・・。というわけで
    ∧_∧  / ̄ ̄ ̄ ̄
  ∧( ´∀`)< あげ
 ( ⊂    ⊃ \____
 ( つ ノ ノ
 |(__)_)
 (__)_)

>>33-35

$_GETだとリンクのところに

<a href="ahya.php?$uho">リンク</a>

としないといけないわけか・・・。
これはちょっと面倒かな。

cookieだと閲覧者がブラウザの設定で有効にしてくれないと意味がないと。

DBは運用していないから除外。

となると残るはsessionかなぁ・・・使い方はよく分かってないが。
38nobodyさん:2005/10/27(木) 16:44:50 ID:???
PHPつーかWebの基本だよね。こんなことも考えつかないなら、この先やっていけるのだろうか?
3931:2005/10/27(木) 16:50:00 ID:???
>>38
仕事じゃない。
単なる趣味のサイトだよ。
40nobodyさん:2005/10/27(木) 16:54:31 ID:???
はいはい

- - - - - - - - - - - - - - - - - キリトリセン - - - - - - - - - - - - - - - - -

次の方ドゾー
4131:2005/10/27(木) 16:57:00 ID:???
ま、待て。もちつけ
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
42nobodyさん:2005/10/27(木) 17:26:39 ID:???
>>37
セッションも結局はセッションIDをクッキーに保存するかRLに埋め込むかになる
4331:2005/10/27(木) 17:30:08 ID:???
う〜む・・・、意外と難しいものだな、おい。
44nobodyさん:2005/10/27(木) 17:36:58 ID:???
>>43
作ってみれば案外簡単だと思うよ

セッションとかクッキーとかでググって簡単なサンプル探してみては?
45nobodyさん:2005/10/27(木) 18:41:32 ID:???
DBアクセスぐらいまでの基本的なところは
だいたいできてる気分なんですが、
フレームワーク作るとかさらに上のステップに
あがるのに適切な本とか方法とかありますか?

プロジェクトとかに参加してないとなかなか
レベルアップの機会がなくて・・・
46nobodyさん:2005/10/27(木) 19:44:57 ID:???
>>45
それを聞いているようじゃ次のステップなんて・・・・
47nobodyさん:2005/10/27(木) 19:46:45 ID:???
>>45
オープンソースとか,簡単に入手できる他人が書いたコードを読んでみる.
自分の作りたいものを作ってみる.
48nobodyさん:2005/10/27(木) 19:48:08 ID:???
>>45
まずは作りたいと思ってるジャンルの、貴方の場合はフレームワーク、
それを色々使ってみてからじゃ米か。その上で不満とか良いところを
感じながら自分のプロダクトに盛り込む。
49初心:2005/10/28(金) 11:34:21 ID:???
環境php5 Apache2 mysql4 WindowsXP
InsertやDeleteなどのsql文は問題なく動きます、ですがMAXやMINを下記参照で使うと期待した値が帰ってきませんでした。
期待した値としてはフィールド AutoNumber のint(4)型です。

$con=mysql_connect("********","*******","*******");
if(!$con){
print("era-");
}
mysql_select_db("test",$con);
//AutoNumberはPrimaryで作りました
$sql="select MAX(AutoNumber) FROM sogo";
$kekka=mysql_query($sql,$con);
$row=$kekka+1;
print("<HR> $kekka <BR> $row <BR>");
mysql_free_result($kekka);
mysql_close($con);
//結果
//Resource id #3
//4
ご教授のほどお願いします。
50nobodyさん:2005/10/28(金) 11:42:47 ID:???
>>49
$kekkaは Resource id とあるように、SQLの結果へのリソースを返す。
で、実際の値は取得したリソースidを使って mysql_result()とかで取得する。
51nobodyさん:2005/10/28(金) 11:47:03 ID:???
>>49
結果セットの取り扱い方法が間違っているな。
ちょっと変数の命名が変だけど、オマイさんが示したコードに無理矢理当てはめてみると
こんな感じになる。

$sql="select MAX(AutoNumber) as maxvalue FROM sogo";
$result=mysql_query($sql,$con);
$recordset = mysql_fetch_array($result, MYSQL_ASSOC);
$kekka=$recordset['maxvalue'];
$row=$kekka+1;
print("<HR> $kekka <BR> $row <BR>");
mysql_free_result($result);
52初心:2005/10/28(金) 12:02:45 ID:???
早々のお返事ありがとうございます。
nobodyさん
先ほど>>49の例で試したところ期待した値が帰ってきました。
内容理解にがんばってみます。
53初心:2005/10/28(金) 12:03:30 ID:???
>>52のアンカーミスです><;
54nobodyさん:2005/10/28(金) 13:04:04 ID:???
>>53
意味わかんね
55nobodyさん:2005/10/28(金) 14:36:12 ID:???
>>54
初心に変わってエスパーの俺が解説しよう
>>52の(レスに書いた>>49の)アンカー(は>>51の)ミスです><;
56nobodyさん:2005/10/28(金) 14:37:50 ID:???
エスパーカコイイ
57nobodyさん:2005/10/28(金) 20:06:41 ID:???
>>55
いや、エスパーパワーの使いどころ、そこじゃないし…
58nobodyさん:2005/10/31(月) 21:52:19 ID:IQWjtyLi
環境PHP4 Apach1.3 MYSQL4 WINXP

質問:セッションIDが引き継げていない?

ttp://www.stackasterisk.jp/tech/php/php03_06.jsp
上記サイトを参考にしてローカルで試しています。

<<<<ここから>>>>
<?
session_start();
if (!isset($count)) $count=0;
session_register("count");
$count++;
?>

<html>
<body>
あなたは <?= $count ?> 回目の訪問です。
<a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">カウントを増やす</a>
</body>
</html>
<<<<ここまで>>>>

試したソースは上記です。何回更新しても1回目のままです。

不審に思いifをちゃんと括弧でくくったりif内でechoさせたり色々試すと、
どうも!isset($count)が毎回trueを返して$count=0;を実行している模様。
elseをつけたり{}でくくりしっかりした書式にしても変らず。
windows\tempの中を覗いてみたらちゃんと変数はありました。

ご教授お願いします。
59nobodyさん:2005/10/31(月) 22:00:44 ID:???
マニュアル嫁と言うべきだろうか?
60nobodyさん:2005/10/31(月) 22:08:21 ID:???
>>58
そのサイトは
>この章で扱う PHP のバージョンは、PHP 4.0.3pl1 とします。 
なのに,
>>58 はPHP4.2以上を使ってるから.
6158:2005/10/31(月) 22:31:17 ID:IQWjtyLi
うー。ざっとしか目を通してないのでよく分からないんですが、
>PHP 4.2.3とそれ以前のバージョンのみに関係する問題があります。
> session_register()により新しいセッショ ン変数を登録する場合、
>グローバルスコープのエントリと $_SESSIONのエントリは、
>次の session_start()まで同じ値へのリファレンスとは なりません。
> すなわち、グローバル変数への修正は、$_SESSION のエントリには反映されません。
>PHP 4.3では修正されています。
ここいら辺の話でしょうか?
違うんであれば大体どの辺見ろとか言ってもらえると嬉しいです。
6258:2005/10/31(月) 22:32:00 ID:???
あ、あげちゃってごめんなさい。
63nobodyさん:2005/10/31(月) 22:46:11 ID:???
・register_globals でググる
・新しいサンプル(PHP4.3.x,PHP4.4.x)を探す
64nobodyさん:2005/10/31(月) 22:48:27 ID:???
session_register()なぞ使っているサンプルなんか捨てちまえ
65nobodyさん:2005/11/01(火) 00:48:13 ID:cLPN4r6c
配列のチェックボックスで質問があります。

<input type="checkbox" name="test[]" value="1">
<input type="checkbox" name="test[]" value="2">
echo $_POST['test'][0];
echo $_POST['test'][1];

で期待通りに動作します。
しかし、[] がないサンプルを見かけました。

<input type="checkbox" name="test" value="1">
<input type="checkbox" name="test" value="2">
echo $_POST['test'][0];
echo $_POST['test'][1];

私の PHP4.4.0 の環境だと最後にオンになっている value しか表示されません。
PHP5 の環境だと OK ということなのでしょうか?
66nobodyさん:2005/11/01(火) 03:36:49 ID:???
>>65
5でも同じ
[]が無い時は$_POST['test']だけ返って来る
67nobodyさん:2005/11/01(火) 05:52:12 ID:XOKgx8G4
マルチバイト関数について質問です。

HPを移転させたら
Fatal error: Call to undefined function: mb_convert_encoding() in /home/hideaki/hideaki/mail.php on line 103
というエラーが出るようになってしまいました。
サーバによって違うものなのでしょうか?

phpinfo();
の結果をはっておきます。
http://www.1st-web.org/info.php

対処法など教えてください!お願いします。
6815:2005/11/01(火) 07:24:14 ID:???
>>67
読んで字のごとく
69nobodyさん:2005/11/01(火) 07:29:02 ID:???
>>67
mbstring=sharedになっているのでスクリプトの先頭で
dl("mbstring.so");
とやってみる。
70nobodyさん:2005/11/01(火) 08:46:02 ID:???
>>65
どこに載っていたサンプルか、言ってみ
71nobodyさん:2005/11/01(火) 08:48:29 ID:???
array_pop(explode(':',$conf)); ってするとエラーになるんだね
Fatal error: Only variables can be passed by reference

はじめて気づいた・・・
7265:2005/11/01(火) 09:13:05 ID:???
>66
レスありがとうございます。
PHP5でも一緒ですか。

>70
ttp://www.lastcraft.com/form_testing_documentation.php
ここの下の方です。
73nobodyさん:2005/11/01(火) 09:37:51 ID:???
>>72
そのページのサンプルに
 <input type="checkbox" name="test" value="1">
 <input type="checkbox" name="test" value="2">
で送られたデータを
 echo $_POST['test'][0];
 echo $_POST['test'][1];
という形式で受け取っている、とはどこにも書いてないだろ。
勝手に脳内補完するなよ。
74nobodyさん:2005/11/01(火) 09:48:05 ID:???
>73
レスどうもです。
こちらのページ以外にもあったのですが、そちらは個人のサイトなので書いてないです。

配列のチェックボックスは、何通りの受け取り方があるのでしょうか?
7573:2005/11/01(火) 10:07:33 ID:???
>>74
鬱陶しい奴だな。自分で調べる気がないのなら素直に [] を付けりゃいいだろ。
配列もクソもPOSTデータを受け取る「方法」は一つ。
受け取ったデータをPHPが自動的に$_POSTに格納してくれているだけ。以下で確認しろや。

-- test.html --
<FORM action="test.php" method="post">
<input type="checkbox" name="test" value="1">
<input type="checkbox" name="test" value="2">
<input type="submit" value="send">

-- test.php --
readfile('php://input');
76nobodyさん:2005/11/01(火) 10:19:40 ID:???
なんだかんだ言いつつ,丁寧にコード用意してくれる73萌え
77nobodyさん:2005/11/01(火) 10:25:22 ID:???
>76
でも、質問の答えになってなく空回りしてるのがワロス
7865:2005/11/01(火) 10:34:07 ID:???
>75
どうもありがとう。
方法はひとつなのですね。

ttp://www.lastcraft.com/form_testing_documentation.php
自前でパースするのが前提のサンプルのようですね。
すっきりしました。
79nobodyさん:2005/11/01(火) 11:52:29 ID:???
ちょっと質問です。
ftpでファイルを持ってくるのに
-----
for($i=0;$i<$max;$i++)
 file_get_contents("ftp://user:[email protected]/foo".$i.".txt")
-----
って感じで複数のファイルを取得してるんですが、10%弱の確率で
 331 password required for user
のエラーが返ってきます。
毎回起きてるならまだ分かるんですが、起きたり起きなかったりと
結果が不安定なので、何が悪いのかさっぱりな状態です…。

何か解決策はないものでしょうか?
(環境:php-4.3.11/Linux)
80nobodyさん:2005/11/01(火) 12:22:52 ID:???
>79
$max がデカイとか?
ログファイルは?
81nobodyさん:2005/11/01(火) 12:43:24 ID:7nOS7Rx3
htaccessを利用して、あるファイルを必ず読み込む方法が
あると聞いたのですが、実際の方法を教えてください。
82nobodyさん:2005/11/01(火) 12:49:18 ID:???
つ [ auto_prepend_file ]
83nobodyさん:2005/11/01(火) 12:55:51 ID:???
>>81
auto_append_file
これ以上のクレクレならくだ質逝け。
84nobodyさん:2005/11/01(火) 12:57:05 ID:???
>>81
悪い、後から足してどうすると。
auto_prepend_file
が正解。
85nobodyさん:2005/11/01(火) 12:57:33 ID:???
>>79
FTPサーバ側の設定かなんかじゃない?
再接続を繰り返しまくったらそういうエラーを返すように設定されてるとか。
fsockopenでつなげて、接続を保ったままgetで取得してみたら?
86nobodyさん:2005/11/01(火) 13:37:29 ID:???
すみません。以下のperlをPHPでかいたらどうなりますか?

my $argv = shift @ARGV;
my $browser = LWP::UserAgent->new;
my $url = 'http://www.hogehoge.jp/cgi-bin/hogehoge.cgi';
my $response = $browser->post($url ,
[
foo => '2ch' ,
bar => 'orz',
file => [
undef, 'test.txt',
Content_Type => 'text/plain',
Content => $argv]
] ,
Content_Type => 'form-data'
);

die " Error!", $response->status_line unless $response->is_success;
print $response->content;
87nobodyさん:2005/11/01(火) 13:41:15 ID:???
>>86
HTTP_Request を使う.

Perl→PHPの専用のスレがあったと思うけど?
8879:2005/11/01(火) 14:22:49 ID:???
レスありがとうございます。

>>80
$maxは今の所、最大6
該当エラーログの全文は
-----
Warning: file_get_contents(ftp://[email protected]/foo.txt): failed to open stream: FTP server reports 331 Password required for user.
in script.php on line 53
-----
と、こんな感じです。ホスト名あたりは実際のから置き換えてますが、その前後に
他のエラーは無いです。

>>85
fsockopenってことは、自前でFTPのコマンド出さないといけないんですよね?
出来ればその方法は避けたかったんですが、他に方法がなさそうだったら、
それで試してみます。
サーバー側の設定に関しては、これから調べてみます。
ちなみに、サーバーはProFTPD使ってます。
89nobodyさん:2005/11/01(火) 17:03:45 ID:???
前スレが埋まったので再度質問させていただきます

foreach ($arr as $val) {
 …
}

で $arr が空の時 warning が出てしまうんですが
みなさんどう対処していますか?
empty()とかで最初に調べるのはあまりしたくないんですが。
90nobodyさん:2005/11/01(火) 17:06:20 ID:???
「下らねぇ」スレが埋まってしまったので

995 名前:nobodyさん[sage] 投稿日:2005/11/01(火) 16:39:53 ID:???
セッションをURLに埋め込みたいんだが

<a href="./ahya.php?<?= SID ?>">リンク</a>

なぜかahya.phpへのURLにセッションIDが付与されない。
何か書きミスでもある?

だが

998 名前:nobodyさん[sage] 投稿日:2005/11/01(火) 16:52:25 ID:???
>>995
SIDが未定義とかエラーはでてないのけ
session_start()してる?

うん、ちゃんと冒頭でやってるよ

999 名前:nobodyさん[sage] 投稿日:2005/11/01(火) 16:59:51 ID:???
待て待て、セッションの渡し方がおかしい。

え、どこが?
91nobodyさん:2005/11/01(火) 17:19:39 ID:???
えちょ?
9290:2005/11/01(火) 17:22:45 ID:???
きになったから

<?php echo SID; ?>

してみたんだが見事に何も表示されなかった。
session_start()すれば勝手に挿入されるんじゃなかったっけ?>>SID
93nobodyさん:2005/11/01(火) 17:36:11 ID:???
>セッションIDがセッションクッキーに適切にセットされている場合には空文字列が入る。
なんて記述がマニュアルにあるが、これに該当してない?
94nobodyさん:2005/11/01(火) 17:38:45 ID:???
session_id();ではあかんのか?
95nobodyさん:2005/11/01(火) 17:40:18 ID:???
>>92
SIDが定義されるのは、
・cookie未使用
・cookie使用時は、一番最初の1回のみ
だと思うけど?

常に取得したければ、session_id()を使う


9690:2005/11/01(火) 17:49:39 ID:???
>>93-95
ウホッ(;´Д`)!
IEのクッキーをONにしているとSIDには変数が設定されないのか!

となると

<a href="./ahya.php?<?= SID ?>">リンク</a>

は、

<a href="./ahya.php?<?= session_id(); ?>">リンク</a>

に変えればいいのかな?
9795:2005/11/01(火) 17:59:57 ID:???
>>96
<a href="./ahya.php?<?= session_name()."=".session_id(); ?>">リンク</a>
だと思う。


9890:2005/11/01(火) 18:50:54 ID:???
>>97
お、ちゃんとURLに反映されたよ、ありがとう( ´∀`)ノ

ところでahya.php側でセッションを受け取るわけだけど、こちらで再度session_start()って宣言する必要
あるの?それとも$_GET['PHPSESSID']で直接session_id受け取って代入しちゃって良いのかな?
99nobodyさん:2005/11/01(火) 18:54:10 ID:???
>>96 >>98
お前さぁ、少しは自分でやってみるって発想はないのか?
100nobodyさん:2005/11/01(火) 18:59:46 ID:???
(´・ω・`)ショボーン
10179:2005/11/01(火) 19:13:47 ID:???
>>85
サーバー側にそれらしき設定は無かったです。
あと、クライアント側を改造してリクエストの間隔を10秒
あけてみても結果は変わらず。

ソースのftp_fopen_wrapper.cまで見てみたんだけど、なんで
この状態になるのかがさっぱり。
telnet使って再現実験やってみても、再現しなかったし…

引き続きどなたか思い当たる事があれば、情報をください(´・ω・`)
10290:2005/11/01(火) 20:33:52 ID:???
>>98
> ところでahya.php側でセッションを受け取るわけだけど、こちらで再度session_start()って宣言する必要
> あるの?それとも$_GET['PHPSESSID']で直接session_id受け取って代入しちゃって良いのかな?

自己レス。
さっきクッキーオフにして試してみたら、URLにsession_idをPHPSESIDに渡すだけで正しく
セッションが引き渡されていたよ、受け取り側ではGETとか使って細工したわけではないのに。
なんか不思議ぃ〜ヽ(´ー`)ノ
103nobodyさん:2005/11/01(火) 21:40:54 ID:???
>>102 ワザとらしい例だが以下の実験で理解されたし。

--- 1.php ---
<?php
session_name('mysessionid');
session_start();
$_SESSION['test'] = 123;

$name = session_name();
$id = session_id();
echo "<a href=\"2.php?{$name}={$id}\">next</a>"
?>

--- 2.php ---
<?php
//session_name('mysessionid');  ワザとコメント
session_start();
echo $_SESSION['test'];
?>
10490:2005/11/01(火) 23:23:04 ID:???
>>103
2.phpで session_start(); するとき、

a) session_name('ほげほげ');
b) クッキー
c) URL

の優先順位でセッションを見つけていくというわけね。

で、今2.phpではa)がコメントアウトされていて、クッキーもオフにしているから
URLを参照しに行ったと。URLの引数の中でとある変数名ととある値の
組み合わせが、あらかじめストアされていたセッション名とセッションIDに
合致していたらセッションを引き渡すというのかな?

逆に言うと悪い奴があてずっぽでセッション名とセッションIDを当ててしまったら、
URLにその値をぶち込むことで他人のIDになりすましたりすることもできると・・・
105nobodyさん:2005/11/01(火) 23:48:55 ID:2mWy/qga
ImageMagickでの文字の描画について

(【PHP】下らねぇ質問はここに書き込みやがれpart12 からきました)

ImageMagickをPHPから使用しています。(さくら:Apache.1.3 FreeBSD)

フォントはインストールされているものではなく、
/home/hoge/fonts/
というフォルダを作りttfファイルを入れているだけです。

<?php
$convert = "/usr/local/bin/convert";
$text = "Japan日本語";
$text = mb_convert_encoding($text, "UTF-8", "SJIS");
$font = "/home/hoge/fonts/ipam.ttf";
passthru("convert -encoding UTF-8 -size 620x100 xc:transparent -font $font -pointsize 72 -draw \"text 20,65 $text\" test.png");
?>

のように$tectの部分が「英語+日本語」なら表示されるのですが、
$text = "日本語";
のように「日本語のみ」の場合文字を描画することができません。

どこが悪いのでしょうか?
106nobodyさん:2005/11/02(水) 00:10:22 ID:???
>>105
ImageMagickで日本語は無理じゃない?
GDで元になる画像作って、必要ならImageMagickで加工するってのがいいのでは?
107前スレ999:2005/11/02(水) 01:00:17 ID:???
勘違いしてたら悪いけど

ナンチャラをonにすると勝手にリンクにPHPSESSIDを入れてくれる機能があるから、それを使ったらどうかといいたかった。
たしかsession.use_trans_sid。
10890:2005/11/02(水) 01:05:29 ID:???
>>107
自鯖では設定は変えられるんだけど今同時に使ってるレン鯖ではoffに設定されているみたい。
というわけでリンクに入れる方法で試してみるよ。
10990:2005/11/02(水) 01:14:17 ID:???
>>103
ん、実際にテストしたら予想と違った( ゚Д゚)
2.phpを次のように書き換えたんだが

--- 2.php ---
<?php
//session_name('mysessionid');  ワザとコメント
session_start();
echo $_SESSION['test'];
print "session_name = " . session_name() . "<br>";
?>

表示されるsession_nameはPHPSESSIDのままだった。
ちなみに「わざとコメント」の行のコメントを外すと'mysessionid'という
文字が表示された。

URLで渡したとき
echo "<a href=\"2.php?{$name}={$id}\">next</a>"
じつは2.phpでは$nameの部分は全く無視している(見ていない)?
110nobodyさん:2005/11/02(水) 01:23:23 ID:???
すいません。ちょっと教えてください。
現在さくら専用鯖RH9 apache2.0.40 PHP4.2.2です

前任者が作ったサイトがあるんですが
HTMLスキンファイルをPHPで読み込ませ、index.phpに表示させるように
なってるんですが、何も表示されない(白紙=読み込まない)ので
困っています。
従来はちゃんと動いていたのですがphp.iniの設定(memory_limit=32M)
とpostgres.confを変更しpostgresとapacheを再起動したところ
上記症状になってしまいました。
該当のPHPエラーログは Allowed memory size of 16 bytes exhausted (tried to allocate 84 bytes) in Unknown on line 0
となっており、該当ホームディレクトリには.htaccessで
DirectoryIndex index.html index.php
php_flag log_errors On
#php_flag display_errors Off
php_value error_log "/home/sites/site1/web/php_logs/error_log.txt"
#php_value memory_limit "16M"
AddDefaultCharset EUC-JP
#AddType application/x-httpd-php .htm
memory_value)
と記述してあります。どなたか解決の糸口をご教示くださいませんでしょうか。何卒よろしくお願いします。
11190:2005/11/02(水) 01:24:27 ID:???
>>103
たびたびスマソ
「ワザとコメント」のままだとsession_id自体が引き渡されないね。

つまり受け取る側はsession_nameとURLの$nameが一致してないと
セッションの引き継ぎは行われないってことなんだね。
112nobodyさん:2005/11/02(水) 01:29:04 ID:???
>>109
いい加減ウザいんだけど・・・。
てか、ちょっと考えればわかるだろ。

1.phpにてsession_name()でセッション名を定義しても、それが有効なのはスクリプト内、
つまり 1.php 実行中のみ。

2.phpにとってみれば、いきなり mysessionid = hogehoge とか渡されても、
これが「セッションIDを引き渡している」と分かるわけがない。
2.php でセッション名を定義していなければ、セッション名はデフォルトの"PHPSESSID"になる。
(※php.ini や .htaccess で定義していない場合)

> echo "<a href=\"2.php?{$name}={$id}\">next</a>"
> じつは2.phpでは$nameの部分は全く無視している(見ていない)?

ヒント: echo $_GET['mysessionid'];


113nobodyさん:2005/11/02(水) 01:35:17 ID:???
> いい加減ウザいんだけど・・・。

くだらんスレもフカーツしたしそちらに帰りまつ
。・゚・(ノД`)・゚・。
114nobodyさん:2005/11/02(水) 01:40:13 ID:???
>>110
くだらねぇ。
memory_limitの設定間違えて16byteに設定してしまって、メモリが足りないって怒られてるだけだろ。
英語がわからないなら辞書引けボケ
次からはくだしつで質問しろ。
115nobodyさん:2005/11/02(水) 01:45:56 ID:???
(´-`).。oO(今度はこっちがくだしつみたいに・・)
116nobodyさん:2005/11/02(水) 03:14:55 ID:???
>>115
大丈夫だ。前スレよりはくだらなくない。
117nobodyさん:2005/11/02(水) 07:40:57 ID:???
>>110
せっかくエラーをログしても読まないんじゃ意味ない
118105:2005/11/02(水) 08:37:47 ID:k7ixpa6e
>>106
ありがとうございます。
> ImageMagickで日本語は無理じゃない?
日本語が含まれている文字が、表示されるのに日本語のみが表示できないのが不思議で…
やっぱり無理なんでしょうか?

> GDで元になる画像作って、必要ならImageMagickで加工するってのがいいのでは?
一応こちらの方向でも進行しています。
119nobodyさん:2005/11/02(水) 10:03:45 ID:???
あれ?php5になってからmbstringあたりの設定変わった?
120nobodyさん:2005/11/02(水) 10:07:49 ID:???
>>119
PHP-users ML の 27259 辺りに関係のあることが書いてあるかもしれない
121nobodyさん:2005/11/02(水) 13:59:03 ID:???
とあるページのカウンタを回さないように読み込むことは出来ますか?
カウンタは上の方にあるので、カウンタを超えた行から読み込みたいのです。
122nobodyさん:2005/11/02(水) 14:12:51 ID:VM69hIe2
PHPに重大な脆弱性が見つかったみたいだけど、
具体的に言うと、どんな不具合?
$_GLOBALSが上書きされる??

http://www.hardened-php.net/index.76.html
123nobodyさん:2005/11/02(水) 14:51:14 ID:???
>>121
何で読むの?
124nobodyさん:2005/11/02(水) 15:33:17 ID:???
>>121
とあるページのカウンタの仕様による。
ちなみにPHPでかかれているページについては、PHPで特別な処理をしていない限り、
HTTPでrange指定しても最初から全部処理して全部かえすぞ。
125nobodyさん:2005/11/02(水) 15:52:15 ID:???
>>122
ファイルアップロードフォームの名前をGLOBALにするとやばいらしい
126nobodyさん:2005/11/02(水) 15:55:28 ID:???
>>123
理由かな。どうやらカウンタの回り具合で訪問者をチェックしてるみたいなので、
回さずに見れる方法はないかなーと思いまして。

>>124
ソースを見たら<img src="counter?fafafa:ffc34c">とありました。
cgiに渡すもんじゃないのか・・・
127nobodyさん:2005/11/02(水) 15:56:14 ID:???
>>122
これの本質は
 GLOBALSを使ってる時は、どこで上書きされるか分からんから気をつけろ!
って所じゃないの?
以前のバージョンでは外からGLOBALSを上書きする方法もあるから、
ここで示されてるPEARの仕組みと組み合わせると、任意の関数を呼ばれる事になる。

ちなみに、外からGLOBALSを上書きできるのは、4.3.10より前か
4.4.1より前、それ以降は既に修正済みのようです。
128nobodyさん:2005/11/02(水) 16:08:37 ID:???
>>122
とりあえずPHP5.0.4での簡単な例。php.iniでregister_globals = Onにしないと発生しない。
今時、register_globals = Onにしているのもどうかと思うが、レンサバなんかだと気軽にOffにはできないのかな。

[test.html]
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="GLOBALS">
<input type="submit" value="submit">
</form>

[test.php]
<?php
print_r($GLOBALS);
?>
129nobodyさん:2005/11/02(水) 16:28:35 ID:???
シンボルテーブルへのリンクが失敗するのは分かったが
インジェクションの仕方が分からん。上書きはできないんじゃないの
130nobodyさん:2005/11/02(水) 16:38:58 ID:???
すまん分かった。
131nobodyさん:2005/11/02(水) 16:50:53 ID:???
>>126
それならブラウザを画像を表示しないように設定にすればいいよ
132nobodyさん:2005/11/02(水) 17:12:31 ID:???
>>126
理由じゃないよ。
なにで読み込むのかな?
133nobodyさん:2005/11/02(水) 18:45:29 ID:???
質問です。

配列の要素にヒアドキュメントを使うことはできますでしょうか?

$array = array(
'key1' => 'value1',
'key2' => <<<EOV
value2
EOV;
);

としたところ、

PHP Parse error: parse error, unexpected ';', expecting ')'

と怒られてしまいました。
文法的にNGなんすかね…

宜しくお願いします。
134nobodyさん:2005/11/02(水) 18:59:14 ID:???
>>133
EOV;のセミコロンをはずそう
135133:2005/11/02(水) 19:02:32 ID:???
>>134

レス有難うございました。
問題なくいけました。

お恥ずかしい。。。
136nobodyさん:2005/11/02(水) 19:44:21 ID:???
preg_match で正規表現に変数を使いたいんですが
$regex = '[0-9]';
preg_match( '/^($regex)+$/o', $str );
がうまく動いてくれません。

みなさんは正規表現に複数の変数を含めるときどうしてますか?
137nobodyさん:2005/11/02(水) 19:54:36 ID:S6YoA3Rv
>>136
正規表現に変数なんてつかったことないけど、
「.」で連結してみてもダメ?

preg_match( "/^(".$regex.")+$/o", $str );
138nobodyさん:2005/11/02(水) 19:58:33 ID:???
>>136
正規表現がどうこうではなくて、PHPでの文字列の扱い(' と " の違い)を
勉強しなおした方がいいのでは?
139nobodyさん:2005/11/02(水) 20:36:08 ID:???
ダブルクォートで囲むと変数の内容に置き換わる。
シングルクォートで囲むと変数の内容に置き換わらない。
って、なんでいえないのかなあ。
呆れるわ
140nobodyさん:2005/11/02(水) 20:46:08 ID:???
※PHP4.4.1は変数の扱いが変更されているそうです。
バージョンUPすると現行のアプリが動作しない可能性大ですので十分お気をつけて。

実際にはどの部分なのかな?
後気になるのが・・・
実際にアップデートした時に影響がどのくらい影響がでるのかが気になる・・・
対応しなきゃならないんだが・・・$GLOBALS使ってる箇所は全部直せってコトなんか・・・
そこが言及されてなくて今調べてる・・・orz
141nobodyさん:2005/11/03(木) 01:57:40 ID:???
>※PHP4.4.1は変数の扱いが変更されているそうです。
×変数→○定数
142nobodyさん:2005/11/03(木) 02:53:13 ID:???
>>140
ついでに空の変数を、foreachで回そうとするとエラーが出るようになる。
これのせいで4.3.11のパッチあてたの使ってる。

つか今回の問題騒ぎすぎじゃないか。
彼らが思っている程PEARは普及してないし
register_globalsはoffになっているのではないだろうか。
143nobodyさん:2005/11/03(木) 04:47:39 ID:???
世の中にはメンテされていないサーバーが結構あると思われ
それらの中には古いPHPが稼動していたり、
スクリプトを書き換える事ができずにregister_globalsがonのままだったり・・・

$GLOBALSはよく使うけど、使わない方がいいのかな?
でも、globalで似たような問題が出てこないとも限らないし、
かと言って関数実行時に必要な変数を全て渡すのもナンセンスな気がするし
144nobodyさん:2005/11/03(木) 08:23:01 ID:???
パッチ上がっていたけどWIN環境での当てかたが分からない('A`)
誰か知っている方ご教授お願いします・・・
145nobodyさん:2005/11/03(木) 09:39:22 ID:???
>>144
パッチはPHP本体のソースコード(C言語で書かれている)に対して当てるものなので、
PHPのソースコード(phpの本家サイトでの表記を使うと「Complete Source Code」)をダウンロードし、
それに対してpatchコマンド(Windowsにもあるのか?)か
パッチファイルの中身を参考にしながら手動で書き換えて、それをコンパイル・リンクすればおk。

んでも、コンパイルする環境は整っているのかい?
参照 ttp://www.php.net/manual/ja/install.windows.building.php
146nobodyさん:2005/11/03(木) 15:05:23 ID:xJeFN8dM
質問があります。大まかに以下のような継承関係があるとします。

class A {
  public static function factory() {
    return new <CLASSNAME>();
  }
}

class B extends A {
  :
}

B::factory()という呼び出し方をした時に<CLASSNAME>と表記した部分がBになるようにする良い方法はありますか?
今のところA::factory("B");のように引数にクラス名の文字列を渡すしか思い浮かびません。
(これだと生成したオブジェクトに対して、if ($obj instanceof A) のようなチェックなど、余分なものが必要です)
B::factory()で何とかならないものでしょうか?
147nobodyさん:2005/11/03(木) 17:54:47 ID:???
ああこれ__class__で親クラスの名前が返っちゃうんだよね
限りなくバグっぽいけど修正されない

サブクラスにクラス名を返すインターフェイスを強要してもいいけど
ファクトリなんだからきっちりオーバーライドするべきじゃないの
148nobodyさん:2005/11/03(木) 17:59:24 ID:???
いやバグじゃないか
get_class($this)に相当する別の定数は欲しいなあ
149nobodyさん:2005/11/03(木) 18:39:09 ID:???
質問を書こうと思ったけどやめた。
お前らに頼ってたらいつになっても上達しない。
自分でやるから用はねーよ!!!
150nobodyさん:2005/11/03(木) 20:25:52 ID:???
(´・ェ・)
151nobodyさん:2005/11/03(木) 20:45:53 ID:???
>>149
ごめんにゃあ>w<
152nobodyさん:2005/11/03(木) 23:51:31 ID:???
php-usersのメーリングリストみたいに、
届いたメールを表示させることは可能ですか?
153nobodyさん:2005/11/04(金) 00:35:35 ID:???
>>152
意味不明な日本語なり
154nobodyさん:2005/11/04(金) 01:01:56 ID:???
4.4.1、もろに来たよ。18時間悩んだが、結局4.4.0に戻した。影響範囲がハッキリしないと
危ない。FreeBSDだが、まず一部のrequireが利かなくなったがinclude_pathで全て指定
すると利くようになった。しかし子プロセスがexit signal Bus error (10)で落ちる。

extensionからzlib.soを外すと落ちなくなるが、is_dirが問答無用でfalseを返すようになる
などなど。

ところがWin32版PHP4.4.1では同じアプリケーションが、全く変更しないでも、問題なく
動作してしまう。
155136:2005/11/04(金) 12:10:20 ID:???
>>137,138,139

うわーすっごいボンミス。。。
ダブルクオートしたら動きました。。。
くだらない質問に答えてもらってありがとうございました。

ひとつ疑問なんですが、先に変数を展開してくれるんですね。
/^$regex+$/
/^{$regex}+$/
でも同じ動きしたので。
156nobodyさん:2005/11/04(金) 12:33:17 ID:???
ん、
""の中の$変数を解釈(展開)するのが渡された関数ではなく、
phpのパーサであることを考えれば当然の動作では?
157nobodyさん:2005/11/04(金) 12:50:23 ID:???
""内の$を変数として選り分けるのはパーサじゃなくてレクサだけどね。
と揚げ足をとってみるテスト。
158nobodyさん:2005/11/04(金) 15:02:09 ID:???
>>157
参考になる(+1)
159nobodyさん:2005/11/04(金) 15:04:55 ID:???
レクサって初めて聞いた・・・
160nobodyさん:2005/11/04(金) 16:45:40 ID:???
レクサって何??
161nobodyさん:2005/11/04(金) 16:51:13 ID:???
○レクサ ← ア が入る
レクサ○ ← ス が入る
162nobodyさん:2005/11/04(金) 16:54:04 ID:???
163nobodyさん:2005/11/04(金) 21:35:57 ID:Q83NQbMF
アホが前スレあげやがったのでageときます
164nobodyさん:2005/11/05(土) 00:08:24 ID:w/1ugKYJ
趣味サイトなのですがPHPしか使えないサーバーでした
ページ毎のアクセスランキングを設置したいのですが何処かにPHPカウンターの配布とかありますか?
1から勉強しなおさないと出来ませんでしょうか・・・PHP全く知らないです(マニュアル読みましたけどまだ半分位も理解できてないですし
ググってもそれらしいものが見当たりませんでした、鯖の仕様はPHP4のsafemodeらしいです
165nobodyさん:2005/11/05(土) 00:19:53 ID:???
ぐぐりがたらない
166nobodyさん:2005/11/05(土) 00:22:11 ID:???
      _______                     __
    // ̄~`i ゝ                    `l |
    / /        ,______   ,_____    ________  | |  ____ TM
   | |     ___ // ̄ヽヽ // ̄ヽヽ (( ̄))   | | // ̄_>>
   \ヽ、   |l | |    | | | |    | |  ``( (.  .| | | | ~~
      `、二===-'  ` ===' '  ` ===' '  // ̄ヽヽ |__ゝ ヽ二=''
                         ヽヽ___//   日本
         ______________  __
         |                    | |検索|←をクリック!!
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ̄ ̄
         〇ウェブ全体  ◎日本語のページ
167164:2005/11/05(土) 00:28:06 ID:EXt1uRpt
判りました
有難う御座います
ググり続けてきます
168nobodyさん:2005/11/05(土) 00:33:26 ID:???
>>166
それだと元のページに戻るだけかと
昔は何もない検索結果っぽい画面に移行したんだけど、バグだったんだろうな
169nobodyさん:2005/11/05(土) 01:44:21 ID:???
♪スプラピ>(・∀・)入(・∀・)<スプラパ♪スプラピ(゚д゚)ぷぅぅぅ〜

         ウェブ イメージ グループ ディレクトリ
         ______________  _____
         |トンネル               | |Google検索|    検索オプション
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ̄ ̄ ̄ ̄ ̄    表示設定
        ◎ウェブ全体から検索  〇日本語のページを検索

トンネルぐぐってぐぐって〜
170nobodyさん:2005/11/05(土) 02:49:09 ID:???
(・∀・)b そろそろおしま〜い

(・∀・)ノ~~~ バイバーイ♪
171nobodyさん:2005/11/05(土) 06:11:01 ID:???
教育実況民がこんなところにも…
172nobodyさん:2005/11/05(土) 08:48:34 ID:???
教育実況民きもすぎる
173nobodyさん:2005/11/05(土) 12:00:25 ID:???
     ヽ:::::::::::::::::::::::::::::::::::
 高 テ|:::::::::::::::::::::::::::::::::::
 け .ン |ーノノーヽ⌒ヽ:::
 | シ|ノ ノ  ノ  ノ:::
. じ  ョ|  ; ;;;;;;;/ヽヽ::
  ゃ ン|  ;;     ;;|::::
 ん   |  :::/⌒ヽ ;;; |:::::
     |  ;;/ O ヽ;; |::::::
     / υ '''';;;;ー´ |:::::
_ _ノ::         |::::::
::::::V::::::::::::  ヾ      |:::::::::
:::::::::::::::: ;;,, ,,, )   i  |:: |
 :::::::::::::::......      し |::/
   _____    .|
   |ー――――|   /
   |_____|   /
    ,,,,,,,,,,,,,,,,,,,,,   /
\         /
  \____/
174nobodyさん:2005/11/05(土) 12:05:07 ID:???
>>173
ごめん、面白くない。
175nobodyさん:2005/11/05(土) 16:21:46 ID:???
$_SESSION['xxx']
だけ生存期間を短くしたいのですが、
どうすればいいのでしょうか
誰かお願いします
176nobodyさん:2005/11/05(土) 16:54:41 ID:???
>>175
手製のガーベージコレクタを動かして
短い期間で消す。
177nobodyさん:2005/11/05(土) 18:25:59 ID:???
すいませんがアカウント作成まわりで質問があります。

1.メールアドレスを入力して送信
2.メールにURLが表示
3.URLをクリックするとアカウント登録完了

としたいのですが、URLを

***.php?[メールアドレス][日時][アドレスと日時のハッシュコード]

という風にしてハッシュの整合性をチェックして
アカウント作成、という風にしたら
何か問題があると思いますか?
ハッシュが解読されない限り大丈夫だとは思うんですが、何か心配です
178nobodyさん:2005/11/05(土) 18:26:47 ID:???
日時が入ってるのは、期限を1日とか決めたいからです
179nobodyさん:2005/11/05(土) 18:36:03 ID:???
ハッシュの元を含めるのはどうかと思う
180nobodyさん:2005/11/05(土) 18:48:45 ID:???
うーん、でもAさんとBさんが同時に仮登録した場合
どっちかを見分ける必要がありますよね

鍵付きのハッシュで鍵を長くしても駄目でしょうか
181nobodyさん:2005/11/05(土) 19:12:30 ID:???
>>180
1.メールアドレスを入力させる
2.ユーザはメールアドレスを入力しPOSTする
3.システムがメールアドレスからハッシュを取得する
4.システムはハッシュ値と日付をどこかに保存する(DBとか)
5.システムが
 http://example.com/hoge.php?[ハッシュ]
 を含んだメールを入力されたアドレスに送信する。
6.ユーザが上記のアドレスにアクセスする
7.システムは保存されたハッシュを検索する
以下略
182nobodyさん:2005/11/05(土) 19:29:17 ID:???
ハッシュのアルゴリズムってmd5使ってる? sha1? オリジナル?
183nobodyさん:2005/11/05(土) 19:43:57 ID:???
>181
なるほど。
177さんではありませんが勉強になります。
184nobodyさん:2005/11/05(土) 22:10:21 ID:???
今回のヴァージョンアップってさー
GLOBALSに外部ユーザーからの値を受け取らないように組んでればOK
ってことだよね
若干騒ぎすぎな気がする。
185nobodyさん:2005/11/05(土) 22:20:31 ID:???
ヒント:騒いで不安を煽った後で、「セキュリティ強化キャンペーン」を実施し、小遣いGET
186nobodyさん:2005/11/05(土) 22:48:28 ID:???
>>182
md5('a')
187nobodyさん:2005/11/05(土) 22:58:28 ID:???
最初プギャーってやってるのかと思った
188nobodyさん:2005/11/05(土) 23:09:30 ID:???
'a' とか単純な数値の md5 値をググると大量にヒットするよね
189nobodyさん:2005/11/05(土) 23:17:36 ID:???
PHPに深刻な脆弱性が見つかったと聞いて飛んできました。
190nobodyさん:2005/11/05(土) 23:18:44 ID:???
>>189
もう終わったよ
191nobodyさん:2005/11/05(土) 23:20:54 ID:???
PHP が
192nobodyさん:2005/11/05(土) 23:42:15 ID:???
>>186
> >>182
> md5('a')

m9('A')
193nobodyさん:2005/11/05(土) 23:53:12 ID:???
>>182
md5の結果を自前で適当に変換してる
md5そのままだと、それっぽいのがなんだかな〜って気がするので
194nobodyさん:2005/11/06(日) 02:19:18 ID:???
コマンドラインで実行されたのと
サーバ上で呼び出されたのとを
区別する方法ってありませんでしょうか?
195nobodyさん:2005/11/06(日) 02:34:36 ID:???
>>194
php_sapi_name()かisset($argv)あたりかな
196nobodyさん:2005/11/06(日) 02:44:47 ID:???
>>195
$argv は php.ini の register_argc_argv が On なら CLI じゃなくてもありますよ。(CLI では強制 On)
CLI + Apache モジュールなら php_sapi_name() 関数か PHP_SAPI 定数で判別できますね。
CGI としてインストールされてるなら判定用の環境変数を仕込むのがいいんじゃないかと。
197nobodyさん:2005/11/06(日) 03:44:17 ID:???
>>192
>>>186
>> >>182
>> md5('a')
>>
>m9('A')

m9(^Д^)
198nobodyさん:2005/11/06(日) 15:31:18 ID:???
メール送信フォームを作るときに、
メール本文はどこで定義していますか?

メール本文に受け付けたクエリを載せるとしたら
やっぱりそのプログラム内部に .= とか ヒアドキュメントとかで
書くしかないのかな?

メール本文だけ外部ファイルにして、
requireしようかと思ったけどなんか違う。
外部ファイルをevalしようかと思ったけどこれもまたなんか違う。
やっぱり本文に書くのみ!?
別変数で定義しておいて、
あとから参照しようとしても上と同じことになるし…

Perl使ってたときは、外部ファイルにして
クエリ載せるところは正規表現で全部置換してたんだけどなぁ
199nobodyさん:2005/11/06(日) 15:42:09 ID:???
>>198
日本語で喋ってくれ。頼む
200nobodyさん:2005/11/06(日) 15:42:46 ID:???
>Perl使ってたときは、外部ファイルにして
>クエリ載せるところは正規表現で全部置換してたんだけどなぁ
じゃあそすればいいじゃない。
つうか、別に正規表現使わなくてもできるよね。
201nobodyさん:2005/11/06(日) 15:43:46 ID:???
>>198
どうしっくり来ないのか判らないんだけど、漏れは外部ファイルに置いて
文字列に取り込んでる。

$message = file_get_contents('mailtemplate.txt');
202198:2005/11/06(日) 15:51:28 ID:???
>>199

駄文申し訳ない。別に問題ないことなんだけど、
周りはどうしてるのかなーと気になっただけです。

>>200

PHPらしく考えると、正規表現を使うよりは
変数展開の方がいいかなーと勝手に思ってしまったです。
そうなると外部ファイルに持つ方がしんどくなるので…

>>201

メール本文がクエリによって可変でないなら
file_get_contentsがスマートですね。
可変になったらどうしてます??
203201:2005/11/06(日) 15:51:34 ID:???
>>201
ありゃ。後半が切れた…
で、$message内のキーワードをstr_replaceで置換して本文を生成。
204198:2005/11/06(日) 15:54:49 ID:???
>>203

なるほどどうもです。
PHPだと <?=$hoge?> で変数展開できるのに
変数毎に置換することを考えると
ちょっとしっくり来ないんですよね。
(どうでもいいことか…
205201:2005/11/06(日) 16:11:54 ID:???
>>204
あ〜、なるほど。しっくり来ないのはその辺なんすね。
HTMLファイルなんかもそうだけど、テンプレートはあくまでもテンプレートであって
必ずしもPHPプログラマがいじる物とは限らないので、PHP色は排除してる。
もう少し具体的に書くと、こんな感じ。
これがベストとは思わないけど、ウチではこうやってるよ、ということで。
実際にはサニタイジング、文字コード変換等やっているので、その辺のツッコミはなしよ。

---mailtemplate.txt(テンプレートファイル)---
送信者:#FROM#
タイトル:#TITIE#
ご質問内容:
#MESSAGE#

---php---
$message = file_get_contents('mailtemplate.txt');
$message = str_replace(
 array('#FROM#', '#TITLE#', '#MESSAGE#'),
 array($_POST['from'], $_POST['title'], $_POST['message']),
 $message);
mb_send_mail(SUBJECT, $message, ...);
206nobodyさん:2005/11/06(日) 16:27:23 ID:???
>>205
なるほど、非常に参考になります。

外部ファイルの置換文字列自体を
<?=?>等のPHP変数にして、
本体からrequireしてしまえば
いいかなとも思ったんですが、
本体見ないと何してるのかわからないんすよね…

ってrequireじゃダメか…
となるとeval…となるとエスケープがめんどい。。

201さんのやり方が一番いいかもしれないすね
207198:2005/11/06(日) 16:27:53 ID:???
206=198 デス…
208nobodyさん:2005/11/06(日) 17:28:47 ID:???
<?php =$hoge ?>にこだわる?意味がわからんが
require使いたければ

$hoge = "aaa";
$piyo = "bbb";
としておいて

require "orz.php";

----- orz.php
....
{$hoge}さまへのメール
{$piyo}のお知らせ
-------
とかでいいじゃね?
209208:2005/11/06(日) 17:31:56 ID:???
ちと補足つか舌足らずごめん

---- orz.php
$mail_body = <<<EOF

{$hoge}さまへのメール
{$piyo}のお知らせ
-------
ということね^^;
210nobodyさん:2005/11/06(日) 19:14:21 ID:???
そんな時、ob_*使えば、良いじゃない。
211198:2005/11/06(日) 21:25:54 ID:???
>>209

レスありがとうございます。

<?=?>にこだわっているというよりは、
PHPらしさにこだわっているってことでしょうか(汗

確かにrequireだと、ヒアドキュメントとかになっちゃうんですよね。
(そうなるとあまり外部にする旨みがなくなってしまうかな…)
212nobodyさん:2005/11/06(日) 21:32:52 ID:???
include/requireを使うなら>>210の言うとおり、
ob_*を使って任意の変数に取り込めばいい
phpコードを含められるって利点くらいしかなさそうだけど。
213198:2005/11/06(日) 21:39:10 ID:???
>>210,212

レスありがとうございます。

なるほど、ob_* って手もありましたね。
ただここまでくると、PHPコードで展開するか
既定文字列を置換するかどっちかですね。

今までどおりプログラム本体にヒアドキュメントが
一番楽でシンプルかな…

ありがとうございます
214nobodyさん:2005/11/07(月) 00:19:44 ID:VYJqOcB8
PHPでHTMLを解析して、HTML内の特定位置の情報(テキストやタグの
アトリビュートの値)を抽出するようなライブラリはないでしょうか。
PerlだとTemplate::Extractというのがあるようです。
ttp://naoya.dyndns.org/~naoya/mt/archives/000833.html
XML_HTMLSaxでも実現可能そうですが、Template::Extractのように
ルール定義だけで抽出できるようなのを探しています。
215nobodyさん:2005/11/07(月) 16:30:23 ID:QyO81Mjh
あげ
216nobodyさん:2005/11/07(月) 19:07:15 ID:???
PHPぁぷろだや双葉などのGDを使用する画像掲示板スクリプトを
設置したのですが、GDは入っているのにGDを使う部分だけ動作しません。
GDを動かすにはどのようにすればいいでしょうか。ご教授願います。

環境は Vine Linux , Apache1.3 , php 4.4.1 です。
217nobodyさん:2005/11/07(月) 19:12:44 ID:???
>>216
>GDを使う部分だけ動作しません。
エラーが出てると思われるので、まずはそれを提示すること。
218nobodyさん:2005/11/07(月) 19:13:03 ID:???
エスパー出動願います.
219nobodyさん:2005/11/07(月) 19:14:51 ID:???
>>216
>GDは入っているのに
phpinfo(); で本当に入っているか確認されましたか?
220nobodyさん:2005/11/07(月) 19:34:47 ID:O90JEyy/
fopen()

@fopen
の違いってなんでつか?
221nobodyさん:2005/11/07(月) 20:12:54 ID:???
>>217
CGIの方ではGDが入っているかを判別して使わないようにしているようです。
どうやらPHPでGDが認識されてないみたいです。
>>219
やってみましたが駄目でした。
GD自体はapt-getを使用してインストールしました。
222nobodyさん:2005/11/07(月) 20:18:55 ID:???
>>220
よっ、そこの兄ちゃん。
騙されたと思ってマニュアルのfopen()のところ見てみ。
223216:2005/11/07(月) 20:34:32 ID:???
phpinfo();の結果です。
ttp://rep2.net/up/data/630.txt
224nobodyさん:2005/11/07(月) 20:49:47 ID:???
>>223
gdの文字を探しても見つからないから、
鯖の中にGDライブラリは存在するが、PHPと連携できるようになっていない。って所かと。
vineのrpmってこんなさっぱりしたconfigureなのかなぁ。。。
自力でconfigureするなら、--with-gd(必要なら=DIR)てな感じでgdを使うよーって指定してあげてください。
225nobodyさん:2005/11/07(月) 20:52:04 ID:???
>>233
GD拡張が入ってないね。
パッケージ構成良く判らないけど、php4-gdとかない?
226nobodyさん:2005/11/07(月) 21:01:33 ID:???
>>233
GD入ってるの確かならライブラリ入ってるPATHを
ld.so.confに念のため追加して
./configure --with-gd=PATH 追加してmake してみたら?

227nobodyさん:2005/11/07(月) 21:03:59 ID:???
>>233
インストールできたらphpinfoで↓が出るはず。
gd
---------------------------------------
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled

Jpeg GIF Freetype などのライブラリも入れるの忘れるなよ。
228nobodyさん:2005/11/07(月) 21:05:10 ID:???
やけに親切だなww
229nobodyさん:2005/11/07(月) 21:13:03 ID:???
ボキもお役に立ちたいので、windowsを消去してvineをインストールしている所です。
230nobodyさん:2005/11/07(月) 21:19:54 ID:???
rpmで楽せずにソースコンパイルしる!
231nobodyさん:2005/11/07(月) 22:27:26 ID:vt3MtPM6
Quickformにて、セレクトボックスの値を受け取る場合

$form->addElement('select ', 'address[]', '東京都中央区');
$form->addElement('select ', 'address[]', '東京都千代田区');
$form->addElement('select ', 'address[]', '東京都新宿区');
$form->addElement('select ', 'address[]', '東京都渋谷区');
と書きたいのですが、当然[]がsmartyの方でエラーになってしまい、使えません。
何かよい方法ありますか?
232nobodyさん:2005/11/07(月) 22:33:23 ID:???
>>231
$form.address.0.
だったかな.....外してたら須磨
233nobodyさん:2005/11/07(月) 22:37:12 ID:???
そんな風にひとつひとつ追加しないとだめだったっけ・・・?
234nobodyさん:2005/11/07(月) 22:37:33 ID:vt3MtPM6
ありがとうございます。

235nobodyさん:2005/11/07(月) 22:56:57 ID:vt3MtPM6
できれば$form.address.0と一つ一つ指定していかずに書きたいのですが、何か方法ありますか?
236nobodyさん:2005/11/07(月) 23:29:36 ID:+B+7rA33
1: $strXml = "http://example.com/test.xml";
2: $strXsl = "./test.xsl";
3: $obj=xslt_create();
4: $result=xslt_process($obj,$strXml,$strXsl);

xmlファイルをローカルに置いてやってみるとエラーもなく動くのですが
↑のように他のサーバーにあるXMLを読み込もうとすると
Warning: Sablotron error on line 1: XML parser error 4: not well-formed (invalid token) in /test.php on line 4
というエラーが出てしまいます
解決策がありましたらお願いします
237216:2005/11/08(火) 00:17:30 ID:???
>>224-227
色々試してみましたが、どうもうまくいきませんでした。

path指定無しのGD付き指定configureだと状況変わらずだし。
path指定してみたら今度はファイルが足りませんと。むずかしいなあ。
まだやってない方法もあるのでまた試してみます。

レスしてくださった皆様ありがとうございました。
238nobodyさん:2005/11/08(火) 01:27:12 ID:???
gdはPHPバンドル版を使って、他のライブラリはパスを明示するのが吉。
Linuxよく知らないんだけど/usrに色々入ってると仮定して、こんな感じで。(パスは適宜読み替えてね)
--with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-freetype-dir=/usr/X11R6 --enable-gd-native-ttf
239nobodyさん:2005/11/08(火) 13:44:53 ID:SGMtFQHw
preg_replace("/\{$/", "", $line);

で 末尾の{が、

preg_replace("/\{.*\}$/", "", $line);

で { hogehoge;} が消えてくれないんだけど、何か間違ってる?
240239:2005/11/08(火) 13:46:30 ID:SGMtFQHw
あ、アスタの前のピリオド消えてます。すいません。
241nobodyさん:2005/11/08(火) 13:52:23 ID:???
>>239
俺のとこでは消えたけど。
ダメならこうしたら?
preg_replace("/\\{\$/", "", $line);
preg_replace("/\\{.*\\}\$/", "", $line);
242239:2005/11/08(火) 14:40:48 ID:SGMtFQHw
すんません。初歩的ミスで、preg_replaceの結果を
変数に受け取ってませんでした(汗

ありがとうございました。
243nobodyさん:2005/11/08(火) 14:41:50 ID:???
>>242
perl使いがよくやるミスだなw
244nobodyさん:2005/11/08(火) 14:57:23 ID:???
>>235
テンプレ側

{foreach from=$form.address item=element}
{$element.html}
{/foreach}
24586:2005/11/08(火) 15:30:56 ID:???
再POSTすみません。
以下のPerlをPHPにしたいのですが、
とりあえず
>>87さんのおかげで(遅レスすみません)
PHPでPOSTメソッドで送信を行うには
HTTP_requestを使えばよいというのがわかったのですが、
cgiプログラムに ファイル 'test.txt'を
渡す部分がPHPでどう書けばよいのかが
分かりません。
よろしくお願いします。

my $argv = shift @ARGV;
my $browser = LWP::UserAgent->new;
my $url = 'http://www.hogehoge.jp/cgi-bin/hogehoge.cgi';
my $response = $browser->post($url ,
[
foo => '2ch' ,
bar => 'orz',
file => [
undef, 'test.txt',
Content_Type => 'text/plain',
Content => $argv]
] ,
Content_Type => 'form-data'
);

die " Error!", $response->status_line unless $response->is_success;
print $response->content;
246nobodyさん:2005/11/08(火) 15:51:28 ID:???
247"php include"で調べましたが、よく分かりません。:2005/11/08(火) 16:09:10 ID:KaRV4LV5
php単独で動くrssリーダーのmagpierssをいじり、
ssiでインクルードして表示させることは出来るようになりました。

<?php
error_reporting(E_ERROR);
require_once './rss_fetch.inc';//設定ファイル
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

$url = 'hogehoge.rdf'; //rssのありか
$rss = fetch_rss($url);
$title = $rss->channel['title'];

echo "<h2><a href=\"$url\">$title</a></h2>\n";
foreach ($rss->items as $item ) {
echo "<dl>\n";
$title = htmlspecialchars($item['title']);
$description = htmlspecialchars($item['description']);
$url = htmlspecialchars($item['link']);

$time = $item[dc][date];
$time = Rtrim("$time","\+09:00");
$time = StrTr("$time","T-"," /");

echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd> ($time)</dd>\n";
echo "</dl>\n\n";
}
?>

これをphpで実行させ、表示するとなるとどうすればよいのでしょうか。
つまり、ssiの<!-- #include virtual="./xxx.php" -->に相当する手法を知りたいです。
<? php include=('xxx.php')?>ではうまくいきません。どなたかご教示ください。御願いします。
248nobodyさん:2005/11/08(火) 16:33:26 ID:???
釣?

つ【マニュアル】
249nobodyさん:2005/11/08(火) 16:55:03 ID:???
>>245
HTTP_Request

void addPostData(string name, string value [, bool preencoded])

PEAR_Error addFile(string name, string file_path [, string content-type])

addFileが呼ばれると自動的にmultipart/form-data形式になる
250245:2005/11/08(火) 16:59:14 ID:???
>>249
ありがとうございます。
251247:2005/11/08(火) 17:49:51 ID:KaRV4LV5
>>248
あ、すみません。
.htaccessの設定がおかしいみたいです。
他のディレクトリでは普通にphpのincludeで出来ました。
お騒がせしました...orz
(でもおかしい設定は無いと思うのだけれど・・・
phpinfoさえも出来ないディレクトリってなんでだろう・・・)
252247:2005/11/08(火) 17:52:50 ID:KaRV4LV5
あ、まさか相対パスの記述がそもそも
無理なんじゃ・・・同一ディレクトリだったら問題ないし。
ああ・・・
253nobodyさん:2005/11/08(火) 17:59:05 ID:???
>>252
単にCGIが実行できるディレクトリが別鯖に分離されてるだけじゃないの?
254247:2005/11/08(火) 18:08:09 ID:KaRV4LV5
>>253
ありがと。
おそらくそれかも。
すれ違いなのでこのあたりで・・・
255247:2005/11/08(火) 18:13:54 ID:KaRV4LV5
>>253
その通りでした。
正常に動作しました。
お騒がせしてスミマセンでした。
256216:2005/11/08(火) 22:01:33 ID:???
ソースコードからのインストールは色々試しましたが、自分の力不足か
結局GDをうまく認識できませんでした。
そこで、最初のRPMによるインストールを見直すことにしました。
php pear を最初に入れて次にphp apache1 を入れるように二段階に手順を別けて
インストールしたところ、きちんとGDを認識してくれました。

自分のやり方が間違ってたようで、ご迷惑おかけしました。
257nobodyさん:2005/11/09(水) 00:59:47 ID:???
ファイル処理をするに際しサーバー内のみで通用する絶対パスを使って
ファイルを指定してきました。その結果ブラウザに表示させたいファイル、
ここでは例としてjpgファイルとします、が得られたとします。

/usr/local/public_html/pic/sample.jpg

この形式のままimgタグに当てはめてもブラウザには表示されません。
ブラウザに表示できるようなパスの形式に変換する方法、あるいは
関数はありますか?
258nobodyさん:2005/11/09(水) 01:06:41 ID:???
/usr/local/public_html/がホームディレクトリなら
/usr/local/public_html/を削ればいいじゃん
方法くらいPHPのマニュアル見ればわかるだろ。

しかし/usr/local/public_html ってのは普通はあり得ない設定だよな。
259nobodyさん:2005/11/09(水) 01:07:25 ID:???
>>257
HTML上では
<img src="image.php">
のような形でPHPファイルを参照させておいて、image.phpでそのJPEGファイルを取得して表示させる。
sample.jpgだけでなく、色々なファイルを表示させたい場合は
表示したいファイル名を
image.php?file=hoge.jpg
のようにimage.phpの引数に渡してあげて画像ファイルを取得する。
260257:2005/11/09(水) 01:17:04 ID:???
>>258
> /usr/local/public_html/がホームディレクトリなら
> /usr/local/public_html/を削ればいいじゃん

はい、まず初めに考えたのがその方法なんですが、環境が違うとき、
たとえばレンタル鯖にアップする前、自宅鯖で表示確認を行いたいときなど

/usr/local/public_html/

の部分が一般的には違うので、その環境に依存する違いをどう吸収させようか
という点で詰まってしまいまして。その鯖のホームディレクトリをはき出して
くれる関数があれば実現できるんでしょうが・・・

> しかし/usr/local/public_html ってのは普通はあり得ない設定だよな。

これは単なる仮定です^^;)

>>259
> <img src="image.php">
> のような形でPHPファイルを参照させておいて、image.phpでそのJPEGファイルを取得して表示させる。

なるほど、ImageCreateのような描画関数はサーバーの絶対パスを引数とする点を活用
しようというわけですね。そっちのほうから攻めると意外と解決は簡単かもしれませんね。
261257:2005/11/09(水) 01:56:55 ID:???
> その鯖のホームディレクトリをはき出して
> くれる関数があれば実現できるんでしょうが・・・

自己レスですが、ルートにPHPファイルを置いて、その中で
__FILE__なりで絶対パスを吐かせればサーバー毎の環境の
違いを吸収できそうですね。
262nobodyさん:2005/11/09(水) 02:14:51 ID:???
>>257
というかそんな面倒なことで鯖互換とか考えるくらいなら
相対で書けばいいじゃないか
アプローチが間違ってない?
263nobodyさん:2005/11/09(水) 02:27:31 ID:???
>>260
>/usr/local/public_html/
>の部分が一般的には違うので
環境に依存する部分だけ設定ファイルに記述して
必ずそれをincludeしたら?
264nobodyさん:2005/11/09(水) 02:32:23 ID:???
どうしても(システムファイル上での)絶対パスを使いたいなら、
define("MY_APP_HOME","/usr/local/public_html/"); として、
MY_APP_HOME . 'pic/sample.jpg' のように使うとか。
265nobodyさん:2005/11/09(水) 02:58:37 ID:???
こんなかんじ?

 echo "<img src=\"".htmlpath(getcwd())."/hoge.jpg">;

function htmlpath($relative_path) {
  $realpath=realpath($relative_path);
  $htmlpath=str_replace($_SERVER['DOCUMENT_ROOT'],'',$realpath);
  return $htmlpath;
}
266nobodyさん:2005/11/09(水) 03:16:36 ID:???
>>265
hoge.jpgがphpと同じ場所かそれ以下にあればそれでいいけど、そうじゃない場合は困るね
ていうかそこまで手間かけるなら>>262だと思う
267265:2005/11/09(水) 03:17:02 ID:???
265をちょと修正
htmlpath(getcwd()) getcwd()は不要だた。"./"でおk

それと
>/usr/local/public_html/
>の部分が一般的には違うので、その環境に依存する違いをどう吸収させようか
が気になったので一言
ブラウザからはDocumentRoot以上は見えないのでブラウザにとって / が一番上=DocumentRoot
ブラウザの/pic/hoge.jpg = サーバの/usr/local/public_html/pic/hoge.jpgだから
DocumentRoot以下を同じ構成にしておけば問題ない。
268265:2005/11/09(水) 03:20:06 ID:???
>>266
/usr/local/public_html/が本番、テスト機で違うからということと
画像はサーバの絶対パスがわかってるから問題ないんじゃね?
269nobodyさん:2005/11/09(水) 03:27:14 ID:???
ま、確かに>>257を見る限りDocumentRootを理解できてなさそうではあるな
つか俺この質問どこかで見たことあるぞ?
270nobodyさん:2005/11/09(水) 03:29:57 ID:???
>>268
つか画像をphpで処理するわけでもないのに絶対パス指定する意味が全然分らん
>>257が激しく勘違いしてるとしか思えない
271nobodyさん:2005/11/09(水) 03:44:14 ID:???
public_html以上のパスを変えれば表示されるってんなら
DocumentRoot以下の構造は同じってことだろ
なんでこんな面倒くさい話になってるの?
272265:2005/11/09(水) 04:18:19 ID:???
よく読み返したら258でそのまんま回答でてるし

<丶`∀´><asahi-netとキムチは寄生虫ニダ
273257:2005/11/09(水) 14:16:28 ID:???
>>262
> 相対で書けばいいじゃないか
> アプローチが間違ってない?

PHPのスクリプトとjpegファイルの場所が全く違うものでして
その違いを吸収させるために楽な絶対パスを使ってきました。
でも最終的にブラウザに表示するには相対パスでやりくり
したほうが楽そうですね。

相対パスで記述できないか見直してみます。
274nobodyさん:2005/11/09(水) 14:32:37 ID:???
>>257はまだ何か勘違いをしているような気がするなぁ。
例えば
http://hoge1.com/img/image.jpg
http://hoge2.com/img/image.jpg
各鯖内のhtmlで<img src="/img/image.jpg">と記述すれば表示できる。
DocumentRoot以下を絶対パスで表記してるからね。

ローカルの絶対パスなんて使う余地すらないんだけど、
phpの中で加工でもしてるの?
275257:2005/11/09(水) 15:02:34 ID:???
>>274
> ローカルの絶対パスなんて使う余地すらないんだけど、
> phpの中で加工でもしてるの?

はい、PHPの中でいじってるからです。
各ファイルのパスを取得する変数が返してくる値が大概
絶対パスなものでして・・・
276nobodyさん:2005/11/09(水) 15:08:34 ID:???
>>275
> 各ファイルのパスを取得する変数が返してくる値が大概絶対パス

ここの時点で設計がマズイと思われ
277nobodyさん:2005/11/09(水) 16:31:10 ID:5u1IiLDs
PHPを最近勉強はじめました。
しょっちゅうコードを間違えてエラーばっかりでハァハァしてるんですが、
そんな私に何かアドバイスください お願いします。
278257:2005/11/09(水) 16:36:09 ID:???
もう少し詳細に各ファイルの配置を記載しますと、

/usr/local/public_html/nikki1/index.php       本文
/usr/local/public_html/nikki1/pic/sample1.jpg  写真
/usr/local/public_html/script/image.php     写真を装飾して表示させるプログラム

こんな感じです。本文から写真のリンクをクリックすると写真に各種装飾を施して
表示させます。そのプログラムがimage.phpなんですがそいつに写真を渡すに際し

../image.php?file=/nikki1/pic/sample1.jpg

のようにドキュメントルートから記述して渡せば何の問題もありません。
ただここでは
/nikki1/pic/
という比較的階層数の少ない例にしましたが、もっと込み入って複雑かつ長ったらしい
名前の階層になったり、表示させる写真が一枚ではなく大量の写真を掲載するとき
などドキュメントルートから指定するのは大変煩わしいです。それに何らかの事情で
nikki1
の名前を変えたりしたら写真のリンクは全て書き直さなければならなくなりますよね。

そこでindex.phpと写真(sample1.jpg)の相対パスは変わらない点に注目してindex.phpでは
../script/image.php?file=./pic/sample1.jpg
のように相対パスのまま写真を指定できないものか、というのが出発点です。
279nobodyさん:2005/11/09(水) 16:52:22 ID:???
>>278
単純に

$path = "/nikki1/pic/";

と記述して、ファイル名の前に$pathを書けばいいだけでは?
280nobodyさん:2005/11/09(水) 16:56:27 ID:???
>>278
だとしたらおまい>>257の質問自体がおかしいぞ。
アレだと「phpで生成したhtmlで、タグにローカルの絶対パス指定しても
表示されないのだがどうすれば」としか読めない。
画像そのものをphp通したもの表示するなら根本的に話が変わってくる。

で、それなら<img src="../script/image.php?file=./pic/sample1.jpg">にしておいて

<?php define('PATH_DOCROOT','/usr/local/public_html(←ここは鯖依存)'); ?>

とか書いたphpを最初にincludeして使えよ。他は共有できる。
281257:2005/11/09(水) 17:17:36 ID:???
>>279
そうですね・・・、その場合ですと

image.php?file=<?php echo $path ?>sample1.jpg

とかなるわけですね。

>>280
> /usr/local/public_html(←ここは鯖依存)

この部分は($_SERVER['DOCUMENT_ROOT'])を使えばうまく鯖依存を消せるかもしれませんね。
282nobodyさん:2005/11/09(水) 17:31:18 ID:???
>>281
普通は
image.php?file=sample1.jpg
みたいにファイル名だけ送るけどね
ファイルへのパスは共通の設定ファイルに書いてそれぞれのスクリプトでincludeするとか
283nobodyさん:2005/11/09(水) 17:40:29 ID:???
なんだか頑固な人だな
配布しようとしてるなら最初から見直した方がいいよ?
284nobodyさん:2005/11/09(水) 18:19:59 ID:???
あの…よろしければ。
入門書のサンプルプログラムにあったのですが
<form action="hogehoge"> でhogehogeは.cgiや.phpなどになるのは分かります。
その本では<form action="<?=$_SERVER["PHP_SELF"]?>" 〜 >になってました
"<?="と"?>"の部分は何故必要なのでしょうか?
それと別のサンプルではhogehogeのところが"<?=$_SERVER["PHP_SELF"]?key=hoge>"というのもありました。
確かにそれでは変数で"$key"を使っているのですがこの記述もどう理解すればいいのか分かりません。
"?"は何かのタグやコマンドなどの簡略形なのかもしれないとは思うのですが…。
どなたかお教えくださいませm(_ _)m
285nobodyさん:2005/11/09(水) 18:22:16 ID:???
>>284
もう一度入門書を最初から読み直してみな
286>>284:2005/11/09(水) 18:27:40 ID:???
優しく言うと
<?= hogehoge ?>
は <?php echo hogehoge ?>の略
$_SERVER["PHP_SELF"] は自PHPスクリプトのURLを格納している変数

これでわからないならもう一度はじめから入門書読みな
287nobodyさん:2005/11/09(水) 18:28:00 ID:???
ユーザが手作業で書き換えたっていいじゃない
だって手を使うと頭がよくなるっていうもの
288nobodyさん:2005/11/09(水) 18:31:35 ID:???
<?php
<?=
<?
289nobodyさん:2005/11/09(水) 20:16:19 ID:???
オマイラ、
<?php
以外はshort_open_tagなんかの設定環境によって使えない場合があることも言っとけ。
290nobodyさん:2005/11/09(水) 20:17:46 ID:???
<?php を必ず使うようにすればおk
291284:2005/11/09(水) 21:09:20 ID:???
>>285-290
大変ありがとうございますm(_ _)m
やっぱりBASICでPRINTを"?"と略したりするのと同じようなものだったのですね。
ぶっちゃけ使っている入門書はソフトバンクの"PHPによるWEBスーパーアプリケーション"なんですが
いきなりこの書式を使っている部分がありましたので面食らいました。
ところで"<?=$_SERVER["PHP_SELF"]?key=hoge>"は"<?=$_SERVER["PHP_SELF"];key=hoge;?>"と書くべきだと思うのですが
この部分はどうなっているのでしょうか…
292nobodyさん:2005/11/09(水) 21:42:37 ID:???
>>291
それがやろうとしているのは、
「$_SERVER["PHP_SELF"] と 文字列"?key=hoge" を連結したものを出力」 でそ?
文字列部分は、URI表記でいう所のquery。 $_GETで取り出すやつ。
293nobodyさん:2005/11/09(水) 22:13:05 ID:???
>>291
本を読んでるのに,その本のことをここで聞かないといけないなんて・・・
その本は燃やしてしまったほうがいいかもしれないね.

コードの実行環境はないの?
いろいろ試しながらのほうがいいかと.PHPのマニュアルも参照しつつ.
294nobodyさん:2005/11/09(水) 22:42:36 ID:Rf4f8pCB
404エラーページをPHPで自作しています。
リファラーを記録するスクリプトを作ろうと思ってGoogleで検索したのですがどうしても
解決しませんでした。

ユーザが、404.phpにアクセスした時のリファラーを「referer.dat」に
記録したいのです。

知ってる方いましたらお願いします。
途中で挫折:(http://www.geocities.jp/nullpo_de_ga/source.txt )
295294:2005/11/09(水) 23:44:37 ID:Rf4f8pCB
すみません、自己解決しました。
296nobodyさん:2005/11/09(水) 23:59:37 ID:???
ハァ?
297nobodyさん:2005/11/10(木) 00:53:20 ID:???
たった2分で自己解決か・・・。
298nobodyさん:2005/11/10(木) 08:12:19 ID:Vd5L+S6A
質問場所がちょっと微妙なんですけど、
フォームで同じ名前を指定してsubmitした後に配列にいれてます。

-------
<input type="checkbox" name="hoge[]" value="hogehoge1">
<input type="checkbox" name="hoge[]" value="hogehoge2">
<input type="checkbox" name="hoge[]" value="hogehoge3">

-------
 for($i=0;$i<count($_POST['hoge']);$i++){
  $temphoge =$_POST['hoge'][$i];
  ・・・処理
 }
-------
としてたんですけど、チェックボックスをJavaScriptで全部チェックしようと
思った場合、
<input type="button" name="allchk" onclick="document.form1.hoge[1].checked=true;" value="全てにチェック"><br>
<input type="button" name="allchk" onclick="document.form1.hoge[].checked=true;" value="全てにチェック"><br>
<input type="button" name="allchk" onclick="document.form1.hoge.checked=true;" value="全てにチェック"><br>
といずれにしてもエラーになってしまいます。
PHPで、POSTで受け取ったものを配列に入れる方法って他にありませんか?
また、両方の処理を実現させるいい方法があれば教えていただけませんでしょうか?
299nobodyさん:2005/11/10(木) 09:10:43 ID:???
>>298
onclickの中でループで一つ一つチェックしたら?
300nobodyさん:2005/11/10(木) 09:19:39 ID:???
document.form1["hoge[]"][i].checked // iは0から2
でアクセスできる
301教えてください:2005/11/10(木) 09:49:12 ID:GWhi70M+
PHPで他のHPを自分のHPの一部(TOPなど)に表示させるにはどのようにして
やればいいのでしょうか?

HTMLではフレームを使えば取得できるのですが・・・。

PHPではどのように書けば取得できるか教えてください。
初心者ですいません。検索してもうまくヒットできませんでした
302nobodyさん:2005/11/10(木) 09:53:52 ID:???
>>301
file_get_contents("http://〜")てこと?
303301:2005/11/10(木) 09:56:34 ID:GWhi70M+
レスありがとうございます。
>>302さんそうです! それで取得したいんですが
HTMLの表示させる部分にはどのようなタグを記述すればいいんでしょうか?
304nobodyさん:2005/11/10(木) 09:57:59 ID:???
>>303
echoで丸ごと表示できるけど、そんなんでいいの?
305301:2005/11/10(木) 10:01:44 ID:GWhi70M+
具体的にしたい例を申し上げます

index.html(これがメインのHPだとします)
kousin.html(こちらが更新履歴を出力するHPです)

このkousin.htmlをindex.htmlに表示させたいんです。
kousin.htmlを更新すればindex.htmlに反映がされるので
phpでこれをどうやればできるのかを教えて頂きたいです。
306nobodyさん:2005/11/10(木) 10:01:45 ID:???
>>301
あれか、最近流行のフィッシング詐欺。
307nobodyさん:2005/11/10(木) 10:02:00 ID:???
>>301
つーか、フレームでそのまま表示させればいいやん。
308nobodyさん:2005/11/10(木) 10:03:10 ID:???
>>305
includeする。
ただし、httpもできる設定にする。
309301:2005/11/10(木) 10:06:27 ID:GWhi70M+
>>308
ありがとうございます。そちらの方を勉強させてもらいます。
アドバイスくれてありがとうございます!

>>307
嫌です;;かっこわるいのでw

>>306
悪い人ですね。。。
310nobodyさん:2005/11/10(木) 10:09:09 ID:???
>>309
悪い事たくらんでるのはお前だろ
311301:2005/11/10(木) 10:09:16 ID:GWhi70M+
<!--#include file="ファイル名" -->
ssiですね!
こんな簡単な方法があったんですね。
312301:2005/11/10(木) 10:11:13 ID:GWhi70M+
>>310
自分はMMOのサイト作成で使おうと思ってます。
MMOの公式サイトの更新やお知らせを自分のHPで表示できるようにも
しようと考えてました。(自分のサイトの更新履歴もです)
313nobodyさん:2005/11/10(木) 10:18:32 ID:???
>>311
PHPにSSI混ぜるのはお勧めしないな。
314301:2005/11/10(木) 10:31:13 ID:GWhi70M+
わかりました。諦めたほうがいいんですね;;
でもssiで取得する方法などを教えてくれてありがとうございました。
興味がわいたので勉強してきます。
315nobodyさん:2005/11/10(木) 10:47:22 ID:???
ん?308のincludeってPHPのincludeじゃないの?
316nobodyさん:2005/11/10(木) 11:21:50 ID:???
つかその表示方法は問題ないのか?
他人のコンテンツを自分のコンテンツと混同させるような
表示方法になると思うんだが・・・
317301:2005/11/10(木) 11:34:56 ID:GWhi70M+
MMOのサイトに連絡済みです。許可もらってますよ。
318nobodyさん:2005/11/10(木) 12:36:38 ID:???
>>315
もちろんそう。
319nobodyさん:2005/11/10(木) 12:44:07 ID:???
XREAのレンタル鯖を使用していて質問があります。
セーフモードで外部ファイルのインクルードってできないのでしょうか?
セーフモードがインクルード関連のメソッドの使用を禁止してるのは解りますが
何か解決策はないものでしょうか・・・外部ファイル指定できないのは痛杉。


ためしに <? include( "echo.php" ); ?> としてみた結果は以下の通りです。

Warning: main(): open_basedir restriction in effect. File(/php/bin/echo.php) is not within the allowed path(s): (.:/virtual:/tmp:/usr/local/lib/php) in /virtual/hogehoge/public_html/index.php on line 2
Warning: main(/php/bin/echo.php): failed to open stream: Operation not permitted in /virtual/hogehoge/public_html/index.php on line 2
Warning: main(): Failed opening '/php/bin/echo.php' for inclusion (include_path='.:/usr/local/lib/php') in /virtual/hogehoge/public_html/index.php on line 2

phpinfo() で解るセーフモード関連の値は以下の通りです。

Configure Command       --enable-safe-mode'
safe_mode           On
safe_mode_exec_dir      /usr/local/php/bin
safe_mode_gid         Off
safe_mode_include_dir     /usr/local/lib/php
safe_mode_allowed_env_vars  PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH
PHP_PREFIX          /usr/local
LD_LIBRARY_PATH       :/usr/local/mysql/lib/mysql:/usr/local/pgsql/lib
320301:2005/11/10(木) 13:07:13 ID:???
自分もxreaです;;
できませんでした。。。
だからどっかに移動しないとだめです。
ドメインと有料プランなのに

PHPのincludeで自サイトのURLを指定して取り込みされることは非常に負荷が掛かりますので、極力おやめください。
場合よっては制限させていただくことがございます。
http://72.14.203.104/custom?q=cache:Ju5uWRscdtkJ:sb.xrea.com/showthread.php%3Ft%3D10180+include&hl=ja&ie=UTF-8&inlang=ja

ここに書いてましたよ
321nobodyさん:2005/11/10(木) 13:15:52 ID:???
>>302-303
を見ると、なんも分かってないよな。コイツ。
結局、成りすましサイト作ろうとしてるようにしか見えない。

<?php
echo file_get_contents("http://〜");
?>
<!-- 以下 自サイトのHTML -->
322301:2005/11/10(木) 13:23:43 ID:???
321
神!ありがとん!
323nobodyさん:2005/11/10(木) 13:37:56 ID:???
>>320
ん?xreaってPHPの使用に何か制限欠けてるんだっけ?
324nobodyさん:2005/11/10(木) 13:38:46 ID:???
>>301
既に、>>301において自分で解法を書いているのに何をウダウダ…

>HTMLではフレームを使えば取得できるのですが・・・。

PHPでフレーム下記だしゃいいじゃん。
ページ内にってんならiframe。
いずれにしてもHTMLのタグでこと足りるだそ。
325301:2005/11/10(木) 15:12:51 ID:???
>>324
フレームだとソース見られて成りすましがばれるからだめなんです
326nobodyさん:2005/11/10(木) 15:26:59 ID:???
>>299-300
ありがとうございました。>>300さんの方法でできましたー
327nobodyさん:2005/11/10(木) 15:49:15 ID:???
>>325
え?成りすましがばれないようにやりたいの?
たとえサイトに溶け込ませるような表示をするにしても、引用元のバナーかリンクくらい貼っときなよ。
他人のものを自分のものであるかのように使うのはイクナイ

ちなみに方針としては、file_get_contentsとかで取得したものを正規表現で必要な部分だけ抜き出してechoで表示、ってのがおそらくチミのやりたいことにマッチする希ガス。
あとは、一度取得した情報はなるべくキャッシュしておいてHEADメソッドで更新チェック+再取得するかどうか分けたりする等の効率を図るとか(そのほうが相手側のサーバの負担もちょっと減る)。
まあ徐々にスキルアップしていってくれ。
328301:2005/11/10(木) 15:51:57 ID:GWhi70M+
>>325は、偽者ですIDだしておきます。
329301 ◆F4BkeOen4w :2005/11/10(木) 15:53:05 ID:GWhi70M+
巡回してなかったら本当ひどいことする人いますね。
人として最低ですよ。罰があたるでしょう。
330nobodyさん:2005/11/10(木) 16:16:21 ID:???
痛ッ!!痛いよ

つかおまいXREAスレとマルチだろ
331nobodyさん:2005/11/10(木) 16:49:18 ID:???
厨発見!
332nobodyさん:2005/11/10(木) 18:56:59 ID:???
うはww妙に伸びてると思ったら、痛いの湧いてたwww
333nobodyさん:2005/11/10(木) 20:09:24 ID:???
>>319>>320
俺xreaだけど普通にできるよ?
つかエラーメッセージ見ると全然違うところのecho.phpを開けようとしてるっぽいんだけど。
<? include( "./echo.php" ); ?> でもダメ?
334320:2005/11/10(木) 23:21:19 ID:???
>>333
あ、構成が違ってました。
public_html
 ├ index.php
 └ php
    └ echo.php
こんな感じで、index.php から echo.php をincludeする時、
include("/php/echo.php");
としてもエラーになってしまいます。

今XREAで話題の
ttp://itpro.nikkeibp.co.jp/article/NEWS/20051102/223939/
ttp://pc8.2ch.net/test/read.cgi/hosting/1130539792/
この騒動が原因であると信じたい…
XREA有料申し込んで1ヶ月しかたってないけど(しかも1年契約)
解約して制限ユルユルのロリポにいこうかな
335nobodyさん:2005/11/10(木) 23:31:32 ID:???
<?php include("./php/echo.php"); ?>
336nobodyさん:2005/11/11(金) 00:03:08 ID:???
URLに文字列を渡しているんですが、

<a href="test.php?files=ソ連">リンク</a>

test.php側でURL経由でわたされた$filesを表示させると

print_r($_GET['files']);

結果は >> ソ\連

と、カタカナのソの字の後に\マークが入ってしまいます。
いろいろ試した結果、引き渡す文字数や内容には関係なく、
カタカナのソがあればその後に無条件で\マークが付与
されてしまうようです。

受け取り側のtest.phpで\マークを除去するようプログラムを
組めば回避は出来ますが、どこか腑に落ちません。なぜ渡した
文字のうち”ソ”の字だけ\マークがついてしまうのでしょうか?

※もしかしたらソの字以外にも\マークが付く文字があるのかも
  しれませんが試していないので何とも言えません。
337nobodyさん:2005/11/11(金) 00:06:55 ID:???
>>335
(;゚,_ゝ゚)・・・何回くらい死ねばいいですか?
338nobodyさん:2005/11/11(金) 00:11:37 ID:???
>>337
もっかいコピペしてやってみれ(・∀・)
339nobodyさん:2005/11/11(金) 00:15:22 ID:???
>>336
それはロシアの陰謀です。
340nobodyさん:2005/11/11(金) 00:27:58 ID:???
>>336
まず、URLに使って良い文字と使っちゃいけない文字がある。
どういう文字が使えるかは、「RFC3986」でググって調べてみそ。
で、そういう文字はrawurlencode()を使って、使って良い文字に変換するようにする。(URLエンコード)

次に、shift-jisで「ソ」という文字は2byte目に 0x5c (= \) が含まれる。
他にも、「表、十」あたりもそう。
0x5cは特殊な意味を持つので、GET・POST・COOKIEにそれが含まれる場合に
自動的にエスケープする仕組みがPHPに組み込まれている。
エスケープされた結果、特殊な意味を持つ\では無く、\という文字そのものを表すようになる。
" "の中で \ を使う時に、 "\"" てな感じにするのを思い出してもらえば分かり易いかと。
これは、マニュアルの php.iniのmagic_quotes_gpc あたりを参照。
341336:2005/11/11(金) 00:42:14 ID:???
>>340
php.iniのmagic_quotes_gpcをoffに変更することでソの字も問題なく
表示できるようになりました。助かりました、ありがとうございます。
342nobodyさん:2005/11/11(金) 01:29:15 ID:???
分ってるのかな('A`)
343nobodyさん:2005/11/11(金) 01:34:37 ID:???
>>342
「言ってる事は分からないけど、設定変更したら動きました!」だと思われ
344nobodyさん:2005/11/11(金) 02:25:24 ID:???
結局>>320>>335で解決したの?
xreaのせいじゃないってこと?
345nobodyさん:2005/11/11(金) 03:54:37 ID:???
最近はくだ質の方がまともだな
346nobodyさん:2005/11/11(金) 05:46:54 ID:???
そうか?どっちもどっちじゃね?w
347nobodyさん:2005/11/11(金) 09:39:02 ID:???
>>340
> >>336
> " "の中で \ を使う時に、 "\"" てな感じにするのを思い出してもらえば分かり易いかと。

この部分なんか変じゃない?
348341:2005/11/11(金) 13:49:18 ID:???
こ、これだけじゃなんかまずいですかね(;^-^)?
349nobodyさん:2005/11/11(金) 13:56:37 ID:???
>>348
何のための設定かしらべてごらんよ
350nobodyさん:2005/11/11(金) 14:04:19 ID:???
>>347
"\"" じゃなくて "\\" だーね。
351nobodyさん:2005/11/11(金) 14:18:50 ID:???
>>347 >>350
いや
" "の中で " を使う時
と言いたかったんだと思う
352340,350:2005/11/11(金) 15:42:16 ID:???
>>351
布団をパタパタされたので急いでいた。
エスケープならなんでも良かった。
今は"\\"の方が良かったと後悔している。
353nobodyさん:2005/11/12(土) 18:23:07 ID:???
URLにセッション名とセッションIDを埋めてページ間のデータのやりとりを
しているんだけどOperaだと問題なくセッションを共有できるのにFireFoxだと
うまく共有できない(セッションIDが変わっている)

両方のphpファイルではちゃんと先頭で
session_start();
しているしなにがいけないんだろう?

OperaとFireFoxでプログラムの組み方変えなきゃならないの?
354353:2005/11/12(土) 19:29:46 ID:???
徐々に状況が判明してきた。
PHPの設定パラメータ「session.use_trans_sid」が0に指定されていると想定し、

/* index.php */
session_start();
print "session_id = " . session_id();

<a href="session.php?<?=SID?>">リンクA</a>
<a href="no_session.php">リンクB</a>
/* index.php */


/* session.php */
session_start();
print "session_id = " . session_id();
/* session.php */


/* no_session.php */
session_start();
print "session_id = " . session_id();
/* no_session.php */

上記の3つのファイルを用意する。
index.phpにて「リンクA」をクリックすると表示されるセッションIDは同じである。(当然)
そのあとブラウザの戻るボタンを押しindex.phpに戻ってきてから次に「リンクB」を
クリックする。するとなぜかURLでセッションを引き渡してないにもかかわらず同じ
セッションIDが表示されるのである。

次に順番を変える。indexphpにて先に「リンクB」をクリックして(当然セッションIDは違う)、
それから「戻る」ボタンをおして戻ってきて、次に「リンクA」をクリックするとなぜかindex.php
で表示されたセッションIDと違うのである。URLでセッションを引き渡しているにもかかわらず。
355nobodyさん:2005/11/12(土) 19:30:37 ID:???
バカはさっさと死ね
356353:2005/11/12(土) 19:31:59 ID:???
以上がOperaとFireFoxで生じた現象である。

そこで問題なんだが先に「リンクB」を押してしまったとしても、
ブラウザの戻るボタンを押してindex.phpに戻ってきてから「リンクA」をクリックしたとき、
セッションIDがindex.phpのそれと等しくするよう(セッションが引き継がれるよう)にする
方法は無いだろうか?
357nobodyさん:2005/11/12(土) 19:39:21 ID:???
セッションIDなんて飾りです。エロイ人にはそれが分からんのです。
問題はデータが渡せているかいないかだべ。
358353:2005/11/12(土) 19:44:43 ID:???
エロイんですか、そうですか('A`)・・・
359nobodyさん:2005/11/12(土) 20:38:02 ID:???
>>297

>>294,>>295どこが2分?
目が腐っちゃったのかな?
360nobodyさん:2005/11/12(土) 20:45:50 ID:???
>>353
>するとなぜかURLでセッションを引き渡してないにもかかわらず同じ
>セッションIDが表示されるのである。

実はクッキーで渡してたりして
361nobodyさん:2005/11/12(土) 22:43:06 ID:???
use_trans_sidを1にすりゃすむのに。
362353:2005/11/13(日) 01:08:33 ID:???
>>360
クッキーがオンのときでもURLでセッションを引き渡していなければ
引き渡されないようにする方法って無いんだっけ?

index.phpが表示されるたびにsession_idをrenewできればいいのかな?

>>361
レンタル鯖('A`)・・・
363nobodyさん:2005/11/13(日) 02:31:35 ID:???
$str = "hogehogehogehoge";
foreach ($str as $ch) {
switch ($ch) {
case ...
}
}
のように、文字列を一文字ずつ処理したいのですが、どういうふうにしたら良いですか?
上記のように書くとInvalid argument supplied for foreach()と言われてしまいます。
364363:2005/11/13(日) 02:33:28 ID:AK9WWUo7
あ、ageなきゃいけなかったんですね。すみません。
365nobodyさん:2005/11/13(日) 02:39:31 ID:???
>>363
アルファベットだけでいいのなら、$str[] で個々にアクセスできるから、for文を使うとか。
マルチバイトならmb_substr()をクルクル回す。
366nobodyさん:2005/11/13(日) 03:01:28 ID:???
>>363
もしforeachが使いたいなら、str_split(PHP5)やpreg_splitなどで配列にしてしまう手もあるね。
マルチバイトの場合mb_splitでは一文字ずつに区切れないので365のようにmb_substr使うのが最善かな。
367363:2005/11/13(日) 03:06:15 ID:AK9WWUo7
>>365-366
どうもありがとうございます!
foreachに直接文字列は使えないんですね。
参考になりました。
368nobodyさん:2005/11/13(日) 03:12:09 ID:???
>>363
ちなみにPHPでは文字列の部分文字に角カッコ[]でアクセスするのは非推奨らしい。
中カッコ{}を使うべし。$str{$i}みたいに。
C系やJavaなんかに慣れてると[]でアクセスできた方が気持ちいいけどね。
Zend的には文字列と配列は混同すべきでない、って立場らしい。
363のようなforeachに対する混同をなくすためっていう意味あいもあるのかな。
個人的にはforeachで文字列も回せたほうが気持ちいいんだが。
(需要の有無は別として)
369363:2005/11/13(日) 03:31:27 ID:AK9WWUo7
>>368
参考になります。

すみません、もう一つ質問なんですが、PHPでクロージャのようなものは実現できませんか?
370nobodyさん:2005/11/13(日) 03:52:48 ID:???
>>369
関数を無名で定義したいという意味ならPHPでは無理。
ただ、可変関数を使えば関数へのアクセスを変数に格納したり引数で渡したり別の関数の返り値にするなどの模倣はできる。
$f = "strlen";
echo $f($f); // 6を表示
このとき関数名を文字列で持ちまわす必要があるので、匿名の関数という考えがPHPにはない。
371nobodyさん:2005/11/13(日) 03:59:57 ID:???
>>370
嘘イクナイ。
http://jp.php.net/manual/ja/function.create-function.php
まあ、使いづらいというか書きづらいものではありますが。
372370:2005/11/13(日) 04:19:17 ID:???
>>371
本当だ。こいつぁ知らなんだ。d
確かにリテラルとして書けないので使いづらそうではあるなw
373nobodyさん:2005/11/13(日) 04:28:06 ID:???
つーかよく見たら無名じゃないんだな。_lambda_1みたいな名前がつくのね。関数名を文字列として記憶しておく意味では可変関数と一緒か。
evalに近い保守性の低下を招きそうなところが難点だね。
利点は関数の名前を自分で考えなくていいってことくらい?
374363:2005/11/13(日) 04:49:35 ID:AK9WWUo7
>>370-373
ありがとうございます。本当に勉強になります。
まだまだ自分の勉強不足を思い知らされました。
色々と奥が深そうですね。どうもありがとうございました!
375nobodyさん:2005/11/13(日) 05:37:38 ID:rUB5/Vi+
phpの新バージョンっていつでる?mbstring関連のバグが非常にうざい
376nobodyさん:2005/11/13(日) 05:44:07 ID:???
function shori()
{
$a1["data"] = 大きなデータ1
$a2["data"] = 大きなデータ2
$a1["ref"] =& $a2;
$a2["ref"] =& $a1;
unset($a1);
unset($a2);
}

shori(); // 1回目
shori(); // 2回目

このようなコードで1回目の処理が終わったところで占有されていたメモリは解放されます?
解放されないとしたらどう対処すべき?
$a["ref"]は実際には別の関数で隠蔽してたりして、解放時にアクセスするのは避けたい場合もあるのでunset($a["ref"])ができるとは限らない状況なんです。
377nobodyさん:2005/11/13(日) 07:32:49 ID:???
PHPを始めてみようと思うのですが。
2chを見ているとPHPはプログラミング初心者向けのような印象です。
PHPのプロフェッショナルの方々から見るとどのような見解ですか?(得られるものはどれくらいありますか?)
一応C++とJavaScriptとVBの経験がありますけど、PHPの用語など自分にはかなり高度に見えるのですが。
できれば中高生向けの解説HPや本など教えてもらえると思います。
PHP以外にもサーバサイドインタフェースが取り扱いできる言語があったらいいのですが。
378nobodyさん:2005/11/13(日) 08:14:36 ID:???
>>374
PHP5でイテレータ使ってみた。微妙w
class StringIterator implements Iterator {
private $chars, $pos, $len;
public function __construct($utf8_str) {
$this->chars = preg_split('/(.)/su', $utf8_str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$this->len = count($this->chars);
$this->pos = 0;
}
public function __toString() { return implode('', $this->chars); }
public function current() { return $this->chars[$this->pos]; }
public function key() { return $this->pos; }
public function next() { $this->pos++; }
public function rewind() { $this->pos = 0; }
public function valid() { return $this->pos < $this->len; }
}

$str = new StringIterator('【PHP】質問スレッドpart30【php】');
echo $str, "\n"; // echo $str->__toString() . "\n";
foreach ($str as $char) {
echo $char, "\n";
}
379nobodyさん:2005/11/13(日) 09:03:04 ID:???
>>378
なるほど。発想的にけっこう面白いんじゃないかな。
JavaでいうStringTokenizer、STLでいうstringstreamに通じるものがあるね。
洗練させればforeachでちょっとした字句解析なんてのもできそう。
foreach ($str as $token) ...
ってな感じで。
380nobodyさん:2005/11/13(日) 09:07:43 ID:???
>>375
具体的に何がうざい?

>>376
そんなもん自分でベンチとりやがれ

>>377
まにゅある
381nobodyさん:2005/11/13(日) 09:10:53 ID:???
php5ならArrayIteratorを継承したほうが楽だよ
382nobodyさん:2005/11/13(日) 09:13:29 ID:???
SPLの組み込みイテレータのキーって実体は何よ。
383nobodyさん:2005/11/13(日) 09:18:44 ID:lJ8slral
 <?php
//設定
$yourname = $_POST['name'];
$file=fopen("name.dat","r");
while($row=fgets($file,1024)){
    if(eregi('($yourname)[a-z0-9./_\-]+',$row,$data)){
        print($data[0]."<br />");
    }
}
fclose($file);
?>

ユーザがフォームに文字例入力して[送信]ボタンを押すと
上のプログラムが[name.dat]中から既出を検索してくれるプログラムを作りました。
これで正規表現の検索が出来ると思ったのですが、なぜかprintしてくれません。

どこか悪いところでもあるのでしょうか?
お願いします。
384nobodyさん:2005/11/13(日) 09:48:26 ID:???
>>382
整数だけど。

>>383
まずはパターンの部分をシングルクォートではなくダブルクォートに。
$rowには改行も含まれているので、たぶんtrimか何かで削除すべきでは?
あとはそのname.datの一行に含まれるデータがどういう形式かわからないと何とも言えない。
[a-z0-9./_\-]+ってのがすごく奇妙なんだが。
385nobodyさん:2005/11/13(日) 09:51:42 ID:???
>>383
なぜくだ質スレで回答をもらっているのにここに来る?
FAQにすら載らない基本中の基本を分かっていないのなら、
マニュアルの「言語リフアレンス」の項目を音読することをお奨めする。
386nobodyさん:2005/11/13(日) 10:06:17 ID:???
( ´д)ヒソ(´д`)ヒソ(д` ) オクサンマルチラシイワヨ イヤーネ
387nobodyさん:2005/11/13(日) 10:10:45 ID:???
断ってから移ってんだから別にいいんじゃねーの?
388nobodyさん:2005/11/13(日) 10:13:26 ID:???
一応マルチではないんだが。。。
くだ質ではスレ違いで、こちらのスレが妥当と判断した理由が判らない。
内容からするとくだ質の方が適していると思うが。
それと、元のままだと$yournameの内容が展開されないよ、って教えて貰っているのに
そのまま同じ質問をするのも理解不能。
389nobodyさん:2005/11/13(日) 10:13:30 ID:???
どうして「くだ質」から普通の質問スレッドへ階級が上がってるんだ?
逆なら分かるが、向こうからこっちにくるのは許せない。
だめ。
390nobodyさん:2005/11/13(日) 10:15:43 ID:???
' → "
終了
391nobodyさん:2005/11/13(日) 10:17:18 ID:???
>>383、巣へお帰り。ここはお前の住む世界じゃないのよ...
 by ナウシカ
392nobodyさん:2005/11/13(日) 10:23:17 ID:???
うーん、俺的にはどっちのスレでもいいと思うんだが、向こうの440へのレスとして440の内容が理解できてないっていう意思表明はしてるわけだし。
まあ答えてもらった手前、礼の一つくらいしてから移動するべきだったってのはあるかもね。
つーか384で答えた手前、何か立場が微妙なボクチン。
393nobodyさん:2005/11/13(日) 10:29:46 ID:lJ8slral
ごめん、向こうで何か展開されないとか答え貰ったんで
スレ違いかなぁ・・・と思ってここ来ました。
マルチのつもりではなかったのですが…

アドバイス参考に頑張ってみます。
ありがとうございました。
394nobodyさん:2005/11/13(日) 10:31:53 ID:???
>>393
展開されないという書き込みをどう理解したのか
素直に390をやってみれ
395nobodyさん:2005/11/13(日) 10:35:09 ID:???
念のため書いときまーす

【基本ルール】
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry

>>1より一部引用)
396nobodyさん:2005/11/13(日) 10:56:11 ID:AK9WWUo7
>>370の可変関数に関しての質問です。
http://www.php.net/manual/ja/functions.variable-functions.php
こちらに可変メソッドの例があるのですが、「あるオブジェクトのあるメソッド」を変数に格納しておく方法はないでしょうか?
つまり、$foo->Variableというメソッドの"Variable"という情報だけではなく、$fooも一緒に変数に代入することはできませんか?
397nobodyさん:2005/11/13(日) 10:58:14 ID:???
おいおい
ただの変数だろ
398nobodyさん:2005/11/13(日) 11:02:50 ID:???
以下のようにforeach内で$mlを追加すると、追加された配列は処理されないように
思うのですが、こういう時はwhileで書くべきなのでしょうか?

foreach($ml as $list){
time() = 123456 && $ml[] = time();
echo $list;
}
399nobodyさん:2005/11/13(日) 11:04:08 ID:lJ8slral
>>394
おk。ありがとうございます。

>>395
僕が荒しだと言うのですか?
400395:2005/11/13(日) 11:09:26 ID:???
>>399
わりわり。おまいさんのことじゃないよ。

>>397
Variableってのがメソッド名なのでは?

>>398
foreachが回す配列は$mlの一時コピー。
むしろどういう動作を期待しているのかがようわからん。
401nobodyさん:2005/11/13(日) 11:26:46 ID:???
>>400
変数のコピーなのですね
ありがとうございます
ディレクトリリストを作ろうとしています
402nobodyさん:2005/11/13(日) 13:30:05 ID:???
>>396
つ array($foo, "Variable")
403nobodyさん:2005/11/13(日) 16:38:26 ID:nIgwwwAk
質問がございます。
php.iniの設定が上手くいきません。

環境は
windowsXp
php5.0.5
mysqlserver5

php.iniはC\windowsフォルダ
に入れています。

php5ts.dllもsystem32に入れています。

php.iniファイルの extension系の";"
は参考書通りにはずしています。
404nobodyさん:2005/11/13(日) 16:50:14 ID:???
>>403
Webサーバは何?
つーか何がどううまくいかないの?
405nobodyさん:2005/11/13(日) 16:58:56 ID:???
>>403

>そもそもphpinfo()で表示されるphp.iniはあってるのかね。

>>extension=php_mysql.dllが有効にならず。
>>mysql サポートが enabledになりません。
>どうやって確認したんだか。

>mysql4.1以降はphp_mysqli.dllですがな。

とりあえずム板でもらったレスにも反応してやってくれ
406nobodyさん:2005/11/13(日) 17:33:00 ID:???
エスパーさん、出番です
407nobodyさん:2005/11/13(日) 17:36:08 ID:???
-k restart
408nobodyさん:2005/11/13(日) 17:37:22 ID:???
スクリプトに点数つけてください。よろしくお願いします。
<?
// EX) value
$startcolor='012345';
$endcolor='0000FF';
$str='あいうえおかきくけこ';

// 文字列→配列
$str = stripslashes($str);
$strcount = mb_strlen($str,"SJIS");
for($i=0;$i<$strcount;$i++) $strarray[] = mb_substr($str,$i,1,"SJIS");

/********** 色をRGBにで10進数に変換 *********/
//開始色
$startcolor = mb_convert_kana($startcolor,"a","SJIS");
$startcolorarray = preg_split('//', $startcolor, -1, PREG_SPLIT_NO_EMPTY);
$startcolorR16 = $startcolorarray[0].$startcolorarray[1];
$startcolorG16 = $startcolorarray[2].$startcolorarray[3];
$startcolorB16 = $startcolorarray[4].$startcolorarray[5];
$startcolorR10 = hexdec($startcolorR16);
$startcolorG10 = hexdec($startcolorG16);
$startcolorB10 = hexdec($startcolorB16);
//終了色
$endcolor = mb_convert_kana($endcolor,"a","SJIS");
$endcolorarray = preg_split('//', $endcolor, -1, PREG_SPLIT_NO_EMPTY);
$endcolorR16 = $endcolorarray[0].$endcolorarray[1];
$endcolorG16 = $endcolorarray[2].$endcolorarray[3];
$endcolorB16 = $endcolorarray[4].$endcolorarray[5];
$endcolorR10 = hexdec($endcolorR16);
$endcolorG10 = hexdec($endcolorG16);
$endcolorB10 = hexdec($endcolorB16);
409つづき:2005/11/13(日) 17:37:52 ID:???
/********** 色をRGBにで10進数に変換 *********/
$Rwidth = @round( ( $startcolorR10 - $endcolorR10) / $strcount,0);
$Gwidth = @round( ( $startcolorG10 - $endcolorG10) / $strcount,0);
$Bwidth = @round( ( $startcolorB10 - $endcolorB10) / $strcount,0);

/************* 結果作成 *************/
for($i=0;$i<$strcount;$i++){
$Rcolor = $startcolorR10 - ( $Rwidth * $i);
$Gcolor = $startcolorG10 - ( $Gwidth * $i);
$Bcolor = $startcolorB10 - ( $Bwidth * $i);
$Rcolor16 = @dechex( $Rcolor);
$Gcolor16 = @dechex( $Gcolor);
$Bcolor16 = @dechex( $Bcolor);
if(strlen($Rcolor16)==1) $Rcolor16 = "0".$Rcolor16;
if(strlen($Gcolor16)==1) $Gcolor16 = "0".$Gcolor16;
if(strlen($Bcolor16)==1) $Bcolor16 = "0".$Bcolor16;
$result.="<font color='#{$Rcolor16}{$Gcolor16}{$Bcolor16}'>{$strarray[$i]}</font>";
}
?>
410nobodyさん:2005/11/13(日) 17:40:15 ID:???
ワロスw
411nobodyさん:2005/11/13(日) 17:45:34 ID:???
2点
412nobodyさん:2005/11/13(日) 17:47:35 ID:???
>>411
ながったらしい汚い物を書いてしまったのはあやまる。すまなかった。
マジレスするが、なんで2点?
413nobodyさん:2005/11/13(日) 18:54:29 ID:???
点数は適当だが

突っ込みどころだらけで何とも言い難い…
最低でも
・バグ
・無意味に1文字ずつ切り取り(ヒント:substr)
・同じ処理はarray_map()や自作関数
の改善はやってくれ。
414nobodyさん:2005/11/13(日) 18:54:54 ID:???
>>412
「ながったらしい汚い物」だからだろ。何が疑問なんだ。
あとせめて「何をするスクリプトか」くらい書けよ。
415nobodyさん:2005/11/13(日) 19:29:49 ID:???
>>414
$strを$startcolorから$endcolorにグラデーション表示
以外と分からないもの?
416nobodyさん:2005/11/13(日) 19:32:23 ID:???
>>413
サンクス!
最後の$result簡単に作るために
substr()無意味ではないと思うんだけど、、
違うやり方が見つからん。
417nobodyさん:2005/11/13(日) 19:37:59 ID:???
ビットシフトしろ
418nobodyさん:2005/11/13(日) 20:34:30 ID:???
>>416
R,G,B を配列にするだけでも随分と見やすくなると思うのだけど。
〜略〜
/********** 色をRGBにで10進数に変換 *********/
$startcolor = mb_convert_kana($startcolor,"a","SJIS"); //必要?
$endcolor = mb_convert_kana($endcolor,"a","SJIS");   //必要?
$startcolor10 = array(/* R, G, B*/);
$width = array(/* R, G, B*/);
for ($i = 0; $i < 3; $i++) {
  //開始色
  $color16 = substr($startcolor, $i * 2, 2);
  $startcolor10[$i] = hexdec($color16);
  //終了色
  $color16 = substr($endcolor, $i * 2, 2);
  $endcolor10 = hexdec($color16);
  //減色幅
  $width[$i] = @round( ( $startcolor10[$i] - $endcolor10 ) / $strcount,0);
}
/************* 結果作成 *************/
$result = '';
for($i=0;$i<$strcount;$i++){
  $color16 = array(/* R, G, B*/);
  for ($x = 0; $x < 3; $x++) {
    $color10 = $startcolor10[$x] - ( $width[$x] * $i);
    $color16[$x] = @dechex($color10);

    //$color10が -1 の時、FFFFFFFF になってしまうので下記の方がいいと思われ
    //if(strlen($color16[$x])==1) $color16[$x] = "0".$color16[$x];
    $color16[$x] = substr("0{$color16[$x]}", -2);
  }
  $result.="<font color='#{$color16[0]}{$color16[1]}{$color16[2]}'>{$strarray[$i]}</font>";
}
419nobodyさん:2005/11/13(日) 21:08:16 ID:???
>>415
中身見て判断しろって時点でナメきっている
420nobodyさん:2005/11/13(日) 21:36:49 ID:???
>>418
2人ともくだスレでやってくれ
421nobodyさん:2005/11/13(日) 21:41:53 ID:???
RGBの処理なんてイディオムだと思ってたけど最近そうでもないんだな。
422nobodyさん:2005/11/14(月) 00:51:37 ID:???
>>421
ビットシフトのこと?
まあPHPで書くのに色情報を24ビット(or 32ビット)に押し込まなきゃならん理由がないからな。
とくにRGBをそれぞれ独立にオーバーフローなども考慮した計算したい場合、シフトと逆シフトが余計なステップ踏むことになる。
よほどメモリの食い方に問題がある場合以外はあえてビットシフトしないじゃない?
423nobodyさん:2005/11/14(月) 01:02:02 ID:???
PHPでPHPを処理することはできませんか?
424nobodyさん:2005/11/14(月) 01:10:21 ID:???
eval()
425nobodyさん:2005/11/14(月) 01:14:58 ID:???
>>423
include
426nobodyさん:2005/11/14(月) 01:57:55 ID:???
evalすごい><
まだ使い方わかってないけど希望が見えてきました。
includeも頑張ります。
ありがとうございました。
427nobodyさん:2005/11/14(月) 08:24:50 ID:???
>>422
いやRGBって書いてあるじゃん
428nobodyさん:2005/11/14(月) 08:33:12 ID:???
ああぐぐり方を間違ったとか?
429nobodyさん:2005/11/14(月) 08:44:08 ID:???
>>421>>422>>427
のエスパー会話を誰か翻訳してくれないか?
430nobodyさん:2005/11/14(月) 08:49:53 ID:???
RPGについて
431nobodyさん:2005/11/14(月) 08:58:58 ID:???
別にビットマップ扱おうってわけじゃないんだし
人間様に分かりやすい10進数が最凶伝説
432nobodyさん:2005/11/14(月) 09:00:43 ID:???
16進法の方が書きやすいと思うよ
433nobodyさん:2005/11/14(月) 09:06:27 ID:???
人間様…
434nobodyさん:2005/11/14(月) 09:12:53 ID:3QndTAPn
ログイン認証について質問です。
今のところ、ユーザー名とパスワードが送信された場合にデータベースを検索し、正しいユーザー名とパスワードだった場合に
$_COOKIE['login'] = md5($username . time());
のような形にしているのですが、ユーザーがログインの状態を保ったまま別のページにアクセスした場合に、そのユーザーが元々どのユーザーだったのかを判別する方法がわかりません。
$_COOKIE['login'] = $username . time();
のようにそのままクッキーに書き込むと、何らかの方法でクッキーをのぞき見することが出来てしまった場合に情報の漏洩が起こってしまいます。
ユーザー情報を復元するにはどうしたら良いですか?
435434:2005/11/14(月) 09:14:25 ID:3QndTAPn
環境を書き忘れました。
Linux Apache1.3.33 PHP5.0.5です。
それと、自宅のWindowsXP PHP5.0.5だと、クッキーの情報が読めないことがあります。
原因がわかる方、いらっしゃいましたらご教授お願いします。
436nobodyさん:2005/11/14(月) 09:17:31 ID:???
md5の値をファイル名にしてそこにユーザ名などのデータを入れとくと
クッキーからユーザ情報などを復元できる

ていうようなのを勝手にやってくれるのがPHPのセッションだと思うんですけど
437nobodyさん:2005/11/14(月) 09:24:12 ID:???
くだ質レベルだな
438nobodyさん:2005/11/14(月) 09:54:52 ID:???
$_COOKIEに放り込んでいる時点で破ってくれって言ってるようなものだしね
439434:2005/11/14(月) 10:27:02 ID:???
>>436 >>438
返答ありがとうございます。
なるほど。そこそこ手間をかけないといけないのですね。
セッションに関してはセキュリティ上問題ないのでしょうか?
ログイン認証を行うにはURLに直接埋め込む方法とクッキーを用いる方法の大きく2通りがありクッキーを用いる方法がより安全である、ということを(どこで見かけたのか忘れてしまったのですが・・・)聞いたことがあります。
(うろ覚えなので間違ってたら申し訳ございません)
440434:2005/11/14(月) 10:28:01 ID:???
>>437
すみません。精進します。
441nobodyさん:2005/11/14(月) 10:34:11 ID:???
>>439
>クッキーを用いる方法がより安全である
そりゃその2つだけを単純に比較した場合の話。
自分でも書いてるが、認証の実装方法のほうが影響は大きい
セキュアな認証を実現する手段はググれば結構見つかるのでは?
442nobodyさん:2005/11/14(月) 10:52:57 ID:???
>>439
SIDを丸投げされた時の対応を忘れなければ良いと思う
443434:2005/11/14(月) 11:03:03 ID:???
>>441
なるほど、定番みたいな方法はないのですね。
実際、WebメールなんかのログインではURLに情報を埋め込んでいるようですし、何がよくて何がまずいのかの理解に苦戦してます。
もう少しググってみようと思います。

>>442
すみません。SIDを「丸投げ」というのはいったい・・・。
ググってみたところ、SIDというのはユーザーを識別するための番号のことだと思うのですが。
間違っていましたらご指摘お願いします。

あと、クッキーの情報がうまく読めないのですが理由はわかりますでしょうか?
444nobodyさん:2005/11/14(月) 11:08:29 ID:???
>>443
うまく読めない……では分からない。
具体的に、どうクッキーに書き込んで、
それを読み出そうとすると、どうなってしまうのか、
具体的に書かないと。

445434:2005/11/14(月) 11:25:27 ID:???
>>>444
ご指摘ありがとうございます。
大まかにですが、以下のようなコードを使っています。

// login.php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// ユーザー名とパスワードをデータベースにて照合
$_COOKIE['login'] = md5($username . time());
header("Location: home.php");
}

これで、ロケーション先のhome.phpで$_COOKIE['login']の値を取得することができません。
(おそらく空白が入っています)
何か原因は思い当たりますでしょうか?
446445:2005/11/14(月) 11:28:47 ID:???
少し言葉足らずでしたので付け加えさせてください。
上記の$usernameはデータベースにて照合する際に$_POST['username']から値を代入してあります。
447nobodyさん:2005/11/14(月) 11:34:44 ID:???
>>446
つーか、setcookieは?
448nobodyさん:2005/11/14(月) 11:37:35 ID:JySqj704
<?php
for($lp=0;$lp<=100;$lp+1)
{
echo"$lp \r\n";
}
?>

↑の様に書くと、「0」を無限に書き出すのですが。何か間違ってますか?
ど素人ですいません。
449nobodyさん:2005/11/14(月) 11:39:30 ID:???
>>448
for($lp=0;$lp<=100;$lp++)
もしくは
for($lp=0;$lp<=100;$lp=$lp+1)
では?
450nobodyさん:2005/11/14(月) 11:40:41 ID:JySqj704
>>449

ホントすいません。

これはマジ自己嫌悪ですわ。
451nobodyさん:2005/11/14(月) 11:41:32 ID:JySqj704
>>449
ありがとう御座いました。
俺、あほ過ぎ・・・
452nobodyさん:2005/11/14(月) 11:41:37 ID:???
opcodeレベルで解析してベンチとってる人いる?
453446:2005/11/14(月) 11:51:35 ID:???
>>447
まさにその通りです。
setcookieと$_COOKIEの使い分けは十分注意していたはずだったのですが、迂闊でした・・・。
どうもありがとうございます。助かりました。
454nobodyさん:2005/11/14(月) 12:06:29 ID:???
http://www.answers.com/
ここのサイトみたいに、http://www.answers.com/keyword
のような形でパラメータをファイル名のようにつけてアクセスするようなサイトにするにはどういう風にしたらよいですか?
455nobodyさん:2005/11/14(月) 12:18:02 ID:???
>>454
php.netでもできるな
http://www.php.net/phpinfo

それはともかく、phpinfo()の出力を眺めれば分かるかも
456nobodyさん:2005/11/14(月) 12:21:34 ID:???
まず以下のコードを見てください。
function search(& $all, & $key, $left = 0, $right = count($all))
{
if ($left == $right) return false;
$middle = floor(($left + $right) / 2);
list($number, $value) = explode("\t", $all[$middle]);
if ($value == $key) return $number;
else if ($value > $key) return search($all, $key, $left, $middle);
else return search($all, $key, $middle, $right);
}

データファイルを検索する関数なのですが、
PHP Parse error: syntax error, unexpected '(', expecting ')' in c:\php\search.php on line 2
と言われてしまいます。
どのように変更すればできますか?
457nobodyさん:2005/11/14(月) 12:22:05 ID:???
>>454
mod_rewrite
458nobodyさん:2005/11/14(月) 12:25:49 ID:???
>>454
PATHINFO
459nobodyさん:2005/11/14(月) 12:26:53 ID:???
>>456
right = count($all)
がまずいんじゃねーの?
460nobodyさん:2005/11/14(月) 12:27:59 ID:???
>>453
つか、$_COOKIEでも$_POSTでも、うまく取得できなかったら、
それぞれの配列がどうなっているかチェックする。

print_r($_COOKIE)
とか
var_dump($_COOKIE)
とかさ。

461nobodyさん:2005/11/14(月) 12:28:47 ID:???
>>456
くだ質でやれよ
462nobodyさん:2005/11/14(月) 12:29:19 ID:???
ちまちまエコーしてないで
HTTPの応答をフックしてみたほうが速いぞ
463456:2005/11/14(月) 12:32:25 ID:???
>>459
たぶんそうだとおもいます
464456:2005/11/14(月) 12:36:39 ID:???
呼び出すときに$number = search(file('data.dat', 'xxx');みたいに省略して書くので、何とかなりませんかね?
465下質レベルだ・・・:2005/11/14(月) 12:53:01 ID:???
>>464
そんなもんアルゴリズムで解消しろよ

function search(& $all, & $key, $left = 0, $right = FALSE)
{
if ($right === FALSE) $right=count($all);
466nobodyさん:2005/11/14(月) 12:57:05 ID:???
わからない五大理由
1 読まない
2 調べない
3 試さない
4 理解力が足りない
5 人を利用することしか頭にない ←>>456
467nobodyさん:2005/11/14(月) 13:00:39 ID:???
ただの馬鹿だろ?
解答してる奴もいっしょに死んで来いよ
468nobodyさん:2005/11/14(月) 13:03:48 ID:???
市ね市ね言うなよ!
世界じゃ3秒に一人死んでるんだよ!
469456:2005/11/14(月) 13:15:30 ID:???
>>465
THXです!!
できました!!

と、思ったら肝心の検索がうまくいかないとです。
もう頭限界…
470nobodyさん:2005/11/14(月) 13:20:07 ID:???
>>468
もっと凄い勢いで死んでるぞ
471nobodyさん:2005/11/14(月) 13:36:12 ID:???
自分の書いたコードではないんだが、数MBのデータを渡したりしているので何もかもが参照渡しになっていた。
それがボトルネックになっているのではと睨んで、とりあえず値渡しの場合と実行速度を比較してみたんだが、なんと一部を値渡しにしたほうが圧倒的に速くなった(比にして数百〜数千倍)。
釈然としないながらも値渡しのほうに修正しておいたが、一般論に反するので原因究明のためにopcodeを出してみた。
あいにくopcodeの仕様を定義している資料が見つからなかったために、結局悶々としている状態。
どなたかopcodeの仕様に関する資料はお持ちではないですか?
472453:2005/11/14(月) 13:54:18 ID:3QndTAPn
>>460
さらなる情報、どうもありがとうございます。
便利な関数があるのですね。とても参考になりました。
473nobodyさん:2005/11/14(月) 14:05:14 ID:???
$param = 'デカイデータ';
foo($param);

↓爆速
function foo($param) {
$var = $param;
}

↓爆遅
function foo(&$param) {
$var = $param
}

PHPはメソッド内で変更がなきゃデフォで参照渡し
上の場合は参照→参照
下のは参照→値コピー

逆に

↓爆遅
function foo($param) {
$param .= 'hoge'
}

↓爆速
function foo(&$param) {
$param .= 'hoge';
}
474nobodyさん:2005/11/14(月) 14:08:46 ID:???
>>472
便利な関数がある……って、もう少し基本を学びましょうよ。
475471:2005/11/14(月) 14:24:39 ID:???
>>473
御見それしました。
ここまで予想外にして明快な回答が返ってくるとは驚きました。
opcodeの情報探しをしていた時間がまるで夢のよう。
どうもありがとうございました。
476nobodyさん:2005/11/14(月) 14:45:47 ID:???
>>473
ちまちました細かいつっこみ入れると
>PHPはメソッド内で変更がなきゃデフォで参照渡し
に勝手になるわけではなく、「値渡しだけど実質上参照渡しと変わらない」というだけだったりもする。
477nobodyさん:2005/11/14(月) 14:47:16 ID:???
>>456 >>469
どーせtrimしてないだけだったりして
478nobodyさん:2005/11/14(月) 14:47:46 ID:???
それがリファレンスカウンティング・クォリティ
479nobodyさん:2005/11/14(月) 14:52:06 ID:???
opcodeって要はPHPのバイトコードのことだよね?
確かに情報公開されてないな。
480nobodyさん:2005/11/14(月) 15:48:26 ID:???
>>479
つ[ZE2のソース]

公開されてないってより、まとまったドキュメントになってない。
zendのとこで質問すると、別に隠蔽してる訳でもないので
普通に回答あるけど、ZEのソース読んでることが前提だから敷居はそれなりに。
まあ内部のことを余り気にするのも良し悪しだけどね。
(Javaなのに気にしないとならないケータイPGなので...)
481nobodyさん:2005/11/14(月) 16:16:49 ID:???
ざっと見た感じopcodeの使用箇所はZendディレクトリ内で分散されてるな。マクロの名前とか意味不明じゃん。
拡張モジュールの書き方なんかはマニュアルに載ってるけど、ZEのソース読んでるの前提ってまさか
こ れ を 全 部 読 め と ?
482nobodyさん:2005/11/14(月) 16:23:50 ID:???
それぐらい読めないようなやつが手を出すのは
ま だ は や い ってことじゃね?
483nobodyさん:2005/11/14(月) 16:36:05 ID:???
あのコード見てそれぐらいとか言える奴ワロス
484nobodyさん:2005/11/14(月) 16:43:30 ID:???
APCでも憤死者がでそうな勢いだったしな。
485nobodyさん:2005/11/14(月) 16:49:46 ID:D+CBz70Z
キリストですが何か質問がありますか?
486nobodyさん:2005/11/14(月) 16:51:16 ID:???
>>482
難しくて読めないんじゃなくて、汚くて読めないの。
おまいはまずLispの処理系くらい作れるようになってから来ようね。

>>484
APCで憤死者って?
487nobodyさん:2005/11/14(月) 17:48:30 ID:???
>>485
クリスマスがウザイんですけど、なんとかなりませんか?
488nobodyさん:2005/11/14(月) 17:50:21 ID:???
>>485
クリトリスがクサイんですけど、なんとかなりませんか?
489nobodyさん:2005/11/14(月) 17:57:48 ID:???
>>486
APC3が安定するまでにずいぶんと時間がかかったことかな?
eAcceleratorも一から書き直してるってサイトに書いてあるけど、完遂できるかちと心配。
PHP6ではOpcode Cacheが本体につく予定なんだよね?
490nobodyさん:2005/11/15(火) 00:53:24 ID:EuotBK4K
早急に教えてもらえますか?
ブラウザに以下の説明が出ます。
Unable to connect to PostgreSQL
server: unknown host name: localhost
port=8040
dbname=testdb2
user=testuser2

OSはfedoraCore4 php5 apache2を使用しています。
ポストグレ側の設定がおかしいのでしょうか?
わかる方、お願いします。
491nobodyさん:2005/11/15(火) 01:18:48 ID:???
>>490
それのドがphp?
492nobodyさん:2005/11/15(火) 01:19:20 ID:???
ドコが
493nobodyさん:2005/11/15(火) 01:20:49 ID:???
>>490

>>5をよく読んでくれ
494490:2005/11/15(火) 01:24:09 ID:EuotBK4K
>>493
いま、確認してみます。

495490:2005/11/15(火) 01:27:26 ID:EuotBK4K
というか、急いでるんです。
わかる方いませんか?
496nobodyさん:2005/11/15(火) 01:29:13 ID:???
>>490
少し落ち着け。それだけじゃ何も分らん。
まず何をしようとしてその表示が出るのか、
急になったのか最初からなのか。
俺らはお前の鯖見れないんだからよ。
497nobodyさん:2005/11/15(火) 01:29:29 ID:???
>>495
>>5の5を取り合えず嫁
498nobodyさん:2005/11/15(火) 01:31:57 ID:???
夜中に釣りかよ
熱心だね
499nobodyさん:2005/11/15(火) 01:33:09 ID:???
エスパー光臨待ち
500490:2005/11/15(火) 01:35:16 ID:EuotBK4K
config.phpの中身が、
<?php
if(ereg("config.php",$_SERVER["PHP_SELF"]))
{
exit();
}
define("DB_HOST","localhost");
define("DB_PORT",8040);
define("DB_NAME","testdb2");
define("DB_USER","testuser2");
define("DB_PASS","abcd1234");

define("DB_CONN","host=" .DB_HOST
."port=" .DB_PORT
."dbname=" .DB_NAME
."user=" .DB_USER
."password=" .DB_PASS);
?>
501490:2005/11/15(火) 01:36:10 ID:EuotBK4K
500続き、
3-4-1.phpの中身が、
<?php
require("config.php");
$db=pg_connect(DB_CONN);
header("Content-Type:text/plain;Charset=EUC-JP");
if($db==FALSE)
{
echo " not connect db?n " ;
}
else
{
echo "database connect ok?n" ;
}
?>
です。
何か間違っていますか?
502nobodyさん:2005/11/15(火) 01:37:56 ID:???
>>500-501
いや、お前な、マジで少し落ち着け。
そのconfig.phpって何のスクリプトに内包されてる奴よ?
自作じゃないだろ?

で、「急になったのか最初からなのか」はどうなのよ?
最初からならpsqlが動いてるかどうか確認しろ。
503nobodyさん:2005/11/15(火) 01:39:40 ID:???
$hoge==FALSEとか使ってるスクリプト見ると吐き気を催す
504nobodyさん:2005/11/15(火) 01:41:23 ID:???
つか課題くさいなこれ
505490:2005/11/15(火) 01:43:26 ID:EuotBK4K
最初からです。
/user/local/apache2/bin/apachectl start
pg_ctl -o "-i"
で動作中です。しかし>>490掲載 エラーです。
localhostの意味がよくわかりません。
書籍を参考に勉強中です。
506nobodyさん:2005/11/15(火) 01:46:38 ID:???
localhostってソースにあるっしょ。これが見つからないといっている
ポートがデフォルトじゃないけどいいの?

>>define("DB_HOST","localhost");
>>define("DB_PORT",8040);
507490:2005/11/15(火) 01:47:45 ID:EuotBK4K
define("DB_HOST","localhost");
に問題があるのでしょうか?
設定がよくわかりません。
ポストグレの設定に問題あるのか、
PHPの設定に問題があるのか。。。
508nobodyさん:2005/11/15(火) 01:48:10 ID:???
>>506
ポートは合ってるよな?
DBとユーザーは作成済みだよな?
509490:2005/11/15(火) 01:49:09 ID:EuotBK4K
>ポートがデフォルトじゃないけどいいの?
とは、なんでしょうか?
どう設定すればいいのでしょうか?
よくわからないもので..
510nobodyさん:2005/11/15(火) 01:50:00 ID:???
あ、間違えた。>>505宛ね・・・つか被ったorz

>>507
おまえさ、急ぐ必要なさそうだからちょっとじっくり勉強しなおせ
511490:2005/11/15(火) 01:50:02 ID:EuotBK4K
>>508
はい。作成済みです。
512nobodyさん:2005/11/15(火) 01:52:55 ID:???
DBサーバとphpが動いているサーバは同じでOK?
513490:2005/11/15(火) 01:55:34 ID:EuotBK4K
/home/xxxxx/pgsql
/user/local/apache2
にインストールしています。
はい。同じサーバです。
514nobodyさん:2005/11/15(火) 02:03:52 ID:???
psql -l
は動く?
515490:2005/11/15(火) 02:05:05 ID:EuotBK4K
はい。うごきます。
516490:2005/11/15(火) 02:06:10 ID:EuotBK4K
phpinfo();
も大丈夫なんですが、pgsqlはエラーで、ダメみたいです。。。
517nobodyさん:2005/11/15(火) 02:07:32 ID:???
俺はもう降りる。やってられん。
518490:2005/11/15(火) 02:09:41 ID:EuotBK4K
>>517
いろいろありがとうございました。
ちょっと自分で本屋に行って勉強してみます。
ほんとに感謝します^^
では。
519nobodyさん:2005/11/15(火) 02:15:58 ID:???
急いで無ぇーw
520nobodyさん:2005/11/15(火) 02:16:01 ID:???
もう見てないかな
portを5432
にしてどうかな?
521nobodyさん:2005/11/15(火) 02:23:55 ID:???
はたから見てるとポートが怪しんだけど、わざわざ8040ってするぐらいだから
合ってんだろうなぁ。試しに、
psql --help
としてヘルプを出してみたときに、-p オプション説明のところに
defaultが書いてあると思うが、どうなってる?

いっそうの事、port=8040を渡さずに接続してみるのも手か?
522nobodyさん:2005/11/15(火) 02:31:57 ID:???
localhostもportもよくわがんねってぐらいだからな〜
わざわざポートを変えるかって気もするけど。

pg使ったこと無いんだけど、portが開いてなくても
unknownになるですかね?
523521:2005/11/15(火) 02:55:51 ID:???
>>522
そなだ。

> server: unknown host name: localhost

ポートどころか、それ以前の問題っぽいな。
でも、localhostがunkownって...
524nobodyさん:2005/11/15(火) 03:39:25 ID:2PUyzd2z
テンプレは読みましたが、質問の仕方がわからない程の初心者です。

DBの内容が
フィールド 1,2、3、4
レコードの内容 1=(A,B)
         2=(C,D)
         3=(E,F)
         4=(G,H)
だとすると、今の知識ではHTMLに書き出すとき、
A,B
C,D
E,F
G, H
と表示できるのですが、
C,B
E,D
G,F
と情報を斜めに表示するにはどうすればいいのでしょう? 
525nobodyさん:2005/11/15(火) 03:47:34 ID:???
>>542
>>テンプレは読みましたが、質問の仕方がわからない程の初心者です。
日本語を勉強することをおすすめします。


フィールドとかレコードとか理解してる?
テーブルをExcelみたいな表形式で表現してみなよ
526nobodyさん:2005/11/15(火) 04:03:26 ID:???
>>524
どっち?

  1 2 3 4  (←フィールド1からフィールド4)
1 A C E G  (←レコード1)
2 B D F H  (←レコード2)

  1 2      (←フィールド1とフィールド2)
1 A B      (←レコード1)
2 C D      (←レコード2)
3 E F      (←レコード3)
4 G H      (←レコード4)
527524:2005/11/15(火) 04:10:48 ID:2PUyzd2z
>>525
>>テンプレは読みましたが、質問の仕方がわからない程の初心者です。
テンプレは理解できても、PHPは理解できてないから上手く表現できないかもしれない。って言いたかったです><

>>526
後者です
528nobodyさん:2005/11/15(火) 04:14:25 ID:???
>>526
レスありがとうございます。
フィールド→0843
レコード1→BAKA
レコード2→AHO
となっています。
529nobodyさん:2005/11/15(火) 04:38:47 ID:???
>>524
phpが理解っていうよりプログラム言語一般の理解不足って感じがするけど

フィールドの2つ目はなんか入ってる必須&エラーとか考えずだけど

$result = mysql_query("select f1,f2 from table order by ?");
$f2 = "";
while ($row = mysql_fetch_array($result)) {
 if ($f2 == "") $f2 = $row["f2"];
 else {
   echo $row["f1"].",".$f2."<br>\n";
   $f2 = $row["f2"];
 }
}
でどう?
530524:2005/11/15(火) 05:35:05 ID:2PUyzd2z
出来ました!どうもありがとうございました
531nobodyさん:2005/11/15(火) 05:36:04 ID:???
お前遅くというか、早いって言うかなんかがんばってるなw
532nobodyさん:2005/11/15(火) 06:53:34 ID:???
>490
ひさびさに ワロスww


期待の大型新人ですね。
いいなあ、みんな。また、あえるかなw
533408:2005/11/15(火) 10:08:42 ID:???
>>418
遅くなりました。超ありがとうございます。
534nobodyさん:2005/11/15(火) 11:33:49 ID:0AfHumhW
>>503が$hoge==FALSEはダメといってますが
こういう記述ってまずいんでしょうか。
自分も普通に使ってるときがあるんですが
どのような記述がよいのでしょうか。
535nobodyさん:2005/11/15(火) 11:40:56 ID:???
>>534
!$hoge
とか?
536nobodyさん:2005/11/15(火) 11:44:30 ID:???
うそん
もうちっとマトモな理由だと思ってROMしてるんですが…
537nobodyさん:2005/11/15(火) 11:47:05 ID:???
>>534
$hoge = 0;

$hoge = "";
の時の動作をどうするかですね
$hoge == FALSE
だと$hoge が0や""でも該当するので好きではない
普通は
$hoge === FALSE
を使う
538nobodyさん:2005/11/15(火) 11:50:07 ID:???
phpとmysqlで住所録みたいなのを作っています。
ロリポップを借りているのですが、データベースをいじるときに
phpmyadminではなく、直接クエリを発行するにはどうすればいいですか?
コマンドプロンプトでできますか?
539nobodyさん:2005/11/15(火) 11:54:56 ID:???
>>538
phpのmysql関数じゃだめなの?
540nobodyさん:2005/11/15(火) 11:55:16 ID:???
>>538
ちーっとは自分で調べようね
541nobodyさん:2005/11/15(火) 11:57:59 ID:???
まぁ今回は優しく教えてあげよう

コマンドプロンプトって書いてるからwin版だと仮定して
c:\mysql\bin\mysql

いじょう
542nobodyさん:2005/11/15(火) 12:00:11 ID:???
>>537
ほーーー
そんな記述方法があったとは勉強になりました。

でも503の言う吐き気のコードが直前のソースの、

$db=pg_connect(DB_CONN);

if($db==FALSE)
{

}

だとしたら、pg_connect()の返り値はFALSEかresouce型だから、0とか空文字とか
って可能性は無いしとりあえずは問題無いんじゃないのでしょうかと聞いてみる
543nobodyさん:2005/11/15(火) 12:07:34 ID:???
>>541
ロリポってWindowsサーバーなの?
544nobodyさん:2005/11/15(火) 12:11:10 ID:???
>>537
ありがとうございます。
よく解りました。
545nobodyさん:2005/11/15(火) 12:12:09 ID:???
>>538
なぁ、マジメに聞くんだが、オマイはその質問がPHPと関係あると思ったから
このスレに書き込んでるんだよな?
どういう判断で、関係あると思ったのか教えてくれまいか。
546nobodyさん:2005/11/15(火) 12:12:20 ID:???
>>543
ひぃぃ 見落としてたわ
まぁでもわかるでしょ。これでわからなければ一から出直せと。。。
547nobodyさん:2005/11/15(火) 12:14:19 ID:???
>>546
つか、PHPとMySQLで住所録みたいなのを作っていて、
どうしてこういう質問なのだろう、ってとこだよな。
「作っていて」じゃなくて「作ろうとして」なんだとは思うが。

548nobodyさん:2005/11/15(火) 12:18:48 ID:???
まぁphpMyAdminでもSQL直打ちはできるんだが。
最近、くだスレの方がまともな質問が多い気がするのは気のせい?
549nobodyさん:2005/11/15(火) 13:42:35 ID:???
>>548
自分の質問がくだらない質問だとわからない奴ほど、くだらない質問をするからでしょうね
550nobodyさん:2005/11/15(火) 17:43:42 ID:BTJCOqzC
FedoraCore 4
MySQL 4.1.14
PHP 5.0.4    を使ってます。

<?PHP
$conn = mysql_connect("localhost", "usr","pass");
mysql_select_db("kisop", $conn);
$res = mysql_query("SHOW TABLES",$conn);
if($res == TRUE){ print("データ獲得に成功しました。");
}else{ print("失敗"); }
?>

とやっても、ページが真っ白になるだけでMySQLに接続できません。
usrはきちんと作られており、また、PHPもSQL接続以外は問題なく動いています。
また、ODBCからの接続は問題なかったりします・・・
何が悪いのか、心当たりある方、ご教授ください。
551nobodyさん:2005/11/15(火) 17:51:23 ID:???
>>550
とりあえず
error_reporting(E_ALL);
552nobodyさん:2005/11/15(火) 17:51:35 ID:???
全角スペースらしきものが見えるが
エラー無視ってるわけじゃないだろうな
553nobodyさん:2005/11/15(火) 18:02:11 ID:???
>>550
真っ白なページが表示されるのは、PHPレベルでのエラーが発生していると思われるので
MySQLがどうこうは関係ないはず。
php.iniかスクリプトで設定して、エラーをブラウザに表示させるところから始めよう。
スクリプトで設定する場合は、先頭に以下を記述。
ini_set('display_errors', true);
error_reporting(E_ALL);

それ以降の話だけど、$res を == TRUE で判定するのは危ないと思われ。
$res === FALSE(=== 3つであることに注意)の方が安全。
554nobodyさん:2005/11/15(火) 18:04:15 ID:???
いや、エラー取得しろよ
555nobodyさん:2005/11/15(火) 18:15:27 ID:???
>>551,553
ありがとうございました。

エラーを表示させたところ、
$conn = mysql_connect("localhost","usr");
の行にエラーがあるとのこと・・・

となると、やはりホスト名やユーザ名が怪しい・・・?

/etc/sysconfig/network の HOSTNAMEではなく、localhost固定ですよね?

どちらも実験しましたが、やはりダメでした・・・
556nobodyさん:2005/11/15(火) 18:16:56 ID:???
>>555
何てエラーだ?
557nobodyさん:2005/11/15(火) 18:17:57 ID:???
>>555
ちゃんと解釈できてないならエラーを略すな
558550:2005/11/15(火) 18:19:46 ID:???
>>556-557
すみませんすみません。

Fatal error: Call to undefined function mysql_connect() in /var/www/html/simple_connect.php on line 8

というエラーでした。
559nobodyさん:2005/11/15(火) 18:20:43 ID:???
ワロス。バカすぎるww
560nobodyさん:2005/11/15(火) 18:23:17 ID:???
(´-`).。oO(なんでだろ?)
561nobodyさん:2005/11/15(火) 18:24:02 ID:???
いつから
 くだスレのレベル >>> 本スレのレベル
になったんだ。
562nobodyさん:2005/11/15(火) 18:28:02 ID:???
このスレが出来たころからでしょうか、、、
563nobodyさん:2005/11/15(火) 18:28:32 ID:???
で、今朝は何食った?
564nobodyさん:2005/11/15(火) 18:28:49 ID:???
yumでphp-mysqlを拾っておいで
http://jp2.php.net/mysql
565nobodyさん:2005/11/15(火) 18:33:39 ID:???
礼儀正しい態度と質問内容の落差が切ないな
FC4使ってるけど最初から入ってた希ガス
566550:2005/11/15(火) 18:41:12 ID:???
>>564
MySQLはきちんと入れてますが、いまだに原因がわかりません。涙

mysql> select user,host,password from mysql.user;
+------+-----------+------------------+
| user | host | password         |
+------+-----------+------------------+
| root | localhost | xxxxxxxxxxxxxxxxx    |
| usr | 192.% | xxxxxxxxxxxxxxxxx     
| usr | localhost |            |
+------+-----------+------------------+

きちんとユーザつくられているのに・・・涙
567nobodyさん:2005/11/15(火) 18:43:32 ID:???
>>550
あのな、>>558のエラーはphpにmysqlの拡張モジュール組み込まれてないせいなの
phpinfoで確認した後、>>564読んで出直しておいで
568nobodyさん:2005/11/15(火) 18:44:41 ID:???
ここは釣りを楽しむスレだったんですねwww
569nobodyさん:2005/11/15(火) 18:47:41 ID:???
>>566
なんか釣りのような気もしてきたが…

[PHP] <---> [PHPのMySQLモジュール] <---> [MySQL]

オマイさんのシステムには、[PHPのMySQLモジュール] がインストールされていない、
またはインストールされているが、使用するように設定されていない。
今時の Linux の状況は漏れは知らんが、>>564 氏の書かれた yum とかで
インストールできるんぢゃマイカ。
570nobodyさん:2005/11/15(火) 18:48:01 ID:???
>>567
ありがとうございました。
拡張モジュールが不足していたんですね。汗

お騒がせ致しましたm(_ _)mペコリ
571nobodyさん:2005/11/15(火) 18:48:30 ID:???
PHP自分でコンパイルした?
572nobodyさん:2005/11/15(火) 18:53:43 ID:???
5.0.4だからrpmでしょ
573550:2005/11/15(火) 18:55:28 ID:???
>>571
いえ、rpmで自動的にやりました・・・
問題ありましたか??汗
574nobodyさん:2005/11/15(火) 19:02:07 ID:???
次は
Fatal error: Call to undefined function mb_convert_encoding() in . . .
575nobodyさん:2005/11/15(火) 19:06:07 ID:???
>>565
FC4公式rpmだとphp-mysqlパッケージで別。
576nobodyさん:2005/11/15(火) 19:21:38 ID:???
次に、取得したデータが文字化けするという相談が来る予感。
577nobodyさん:2005/11/15(火) 19:23:23 ID:???
エラーばっかりで涙が出てきました。
PHPにはもっと寛大な心を持って欲しい。
578nobodyさん:2005/11/15(火) 19:51:01 ID:???
寛大だからエラーがあっても動いてんだろ
つーかデバッグはエラー出してやれよ
思わぬ落とし穴にはまるぞ
579nobodyさん:2005/11/15(火) 20:02:35 ID:???
PHPに型とか強制して、違ってたら大量エラーで叱ってくれる機能が欲しい。
580nobodyさん:2005/11/15(火) 20:15:05 ID:PU11Oeig
call_user_funcで関数を呼び出してるプログラムがあるのですが、
grepで調べてみると、その関数名を持つ関数がやたらと
たくさんあります。
その場合のcall_user_funcで呼び出される優先度ってどういう
決まりがあるのでしょうか?
581nobodyさん:2005/11/15(火) 20:20:51 ID:???
>>580
関数を2回定義したらFATAL ERROR。(オーバーロードもできない)。
grepでひっかかったのって呼び出しじゃないの?
582nobodyさん:2005/11/15(火) 20:23:23 ID:???
あるいは
class A { function hoge() {} }
class B { function hoge() {} }
class C { function hoge() {} }
ってオチかと
583nobodyさん:2005/11/15(火) 20:24:56 ID:???
if ($foo) { function hoge() {} }
else { function hoge() {} }
もありうるな(あんまないかw)
584580:2005/11/15(火) 20:28:05 ID:???
>>581
早速のレスどうもです。


別ファイル[ファイルX]に記述されてるのを呼び出してるんですけど見てたら
そのファイル[呼び出し元B]自体がrequire_onceで、
他のファイル[呼び出し元A]に呼ばれてるます('A`)

[呼び出し元A]の中ではrequire_onceで10個ぐらいよびだしてるので
その中のいずれかで、call_user_funcで呼び出してるファイルを
さらに呼び出してるぽいかも。
こういう階層にするのってPHPで一般的なのかな?

grepでひっかかったのは
function 呼び出し関数名(){
ってなってるのでたぶん間違ってないと思います。
本来なら、関数名だけで判断できるように同じ関数名は避けるべきっすよね?

もうちょっと調べてみますー。おかげで考えがまとまりました。
ありがとうございましたー。<m(_)m>
585580:2005/11/15(火) 20:29:45 ID:PU11Oeig
>>582-583
おお、書いてる間にさらにレスが!ありがとうございます。
classは使ってないぽいです。
if文の中で関数定義なんてできるんすね。
phpって結構なんでもありだなぁ・・・。
586nobodyさん:2005/11/15(火) 20:34:45 ID:???
よくわからんけど、
require_once()は、スクリプトの実行時に同じファイ ルが複数回読み込まれ、評価される可能性がある場合に、
関数の再定義や 変数値の再代入といった問題を回避するために一回だけ読み込ませるため に使用します。
(マニュアルより)

も覚えとくといいかも
587nobodyさん:2005/11/15(火) 20:34:48 ID:???
次スレは爆笑質問集にスレタイ変更だな
588550:2005/11/15(火) 20:49:22 ID:???
みなさんのお陰で、どうにかphp-mysqlを入れることができました。

rpm -ihv http://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/i386/php-mysql-5.0.4-10.5.i386.rpm

本当に有難う御座います。
589nobodyさん:2005/11/15(火) 20:53:08 ID:???
>>587
ツマンネ
590580:2005/11/15(火) 20:59:15 ID:???
requireで呼び出してるファイル名を動的に変えて、呼び出す関数自体は
同じ名前にして処理をかえるような仕掛けでした。
人のソースはやっぱ仕掛けがわかりにくいです('A`)
どうも、お騒がせしますた。

>>587
初心者の質問なんてそんなもんじゃ?
591nobodyさん:2005/11/15(火) 21:07:42 ID:???
592490:2005/11/15(火) 21:21:35 ID:bjEKtblW
490です。
psql --help の一部です。
Connection options:
-h HOSTNAME specify database server host (default: local socket)
-p PORT specify database server port (default: 5432)
-U NAME specify database user name (default: xxxx)
-W prompt for password (should happen automatically)
上記に合わせて、config.phpを変更しました。が、ダメでした。。。
configの書き方と設定の仕方がわるいのでしょうか?
PHPですか、postgreSQLの設定ですか?
どうしたらいいですか?急いでいます!わかる方,お願いします。
593名無し募集中。。。:2005/11/15(火) 21:26:58 ID:???
configの書き方や設定の仕方じゃなくて
掲示板への質問の仕方が悪いんじゃない?
594nobodyさん:2005/11/15(火) 21:35:19 ID:???
育ちが悪い
595532:2005/11/15(火) 21:35:33 ID:???
>592
キタノ?
本物キターーーノ?
ワクテカw
596nobodyさん:2005/11/15(火) 21:37:32 ID:???
まだ聞くかw
597nobodyさん:2005/11/15(火) 21:37:53 ID:???
誰か暇な奴相手してやってくれ

>>493-495の流れで
>というか、急いでるんです。
と言い出し、挙句の果てには
>>518-519
>ちょっと自分で本屋に行って勉強してみます。
等と戯けた事を言い出す始末だけどna
(つか本を買おうという気もまるでなし('A`))
598nobodyさん:2005/11/15(火) 21:37:58 ID:???
期待の大型新人キタ━━━━━━(゚∀゚)━━━━━━ !?
599nobodyさん:2005/11/15(火) 21:39:49 ID:???
さぁ盛り上がってまいりました
600nobodyさん:2005/11/15(火) 21:47:24 ID:???
>>592
今日は、キチガイのオンパレードだな…

1) postgresへの接続は具体的なコードは?、コードはオマイが書いたのか?
2) configの書き方うんぬんと書いてあるが、configとは何?、内容は何?

>>490 のカキコより
3) エラーメッセージが "unknown host name: localhost" と表示されているが該当マシンで ping localhost はOK?
4) port=8040 となっているが、postgresの初期設定では 5432 のはず。オマイが変更しているのか?
5) 該当マシンで以下を行うと正常に接続できる?
  psql -hlocalhost -p8040 -Utestuser2 -dtestdb2
  psql -h127.0.0.1 -p8040 -Utestuser2 -dtestdb2
  psql -hlocalhost -p5432 -Utestuser2 -dtestdb2
  psql -h127.0.0.1 -p5432 -Utestuser2 -dtestdb2

後、急いでる、急いでるってバカの一つ覚えみたいにわめくな。
急いで解決したければ、質問の仕方から考え直せ。
601490:2005/11/15(火) 22:01:24 ID:NEc3YLTa
ping localhost 動いてます。
psql -hlocalhost -p8040 -Utestuser2 -dtestdb2
psql -h127.0.0.1 -p8040 -Utestuser2 -dtestdb2
は接続拒否でした。残り2つの-p5432の方はOKです。
config.php
<?php
if(ereg("config.php",$_SERVER["PHP_SELF"]))
{
exit();
}
define("DB_HOST","localhost");
define("DB_PORT",5432);
define("DB_NAME","testdb2");
define("DB_USER","testuser2");


define("DB_CONN","host=" .DB_HOST
."port=" .DB_PORT
."dbname=" .DB_NAME
."user=" .DB_USER);
?>
602nobodyさん:2005/11/15(火) 22:06:15 ID:???
>ping localhost 動いてます。

>は接続拒否でした。残り2つの-p5432の方はOKです。

おいおいこれが釣りじゃなく本気ならやべーぞお前技術者向いてないよw
603nobodyさん:2005/11/15(火) 22:13:57 ID:???
>>490
ここまでしつこい&知らないと逆に感心するなw

define(."DB_CONN","dbname=" .DB_NAME );

一度これだけでやってみれ、portは5432な
つか本買わないんだったらマニュアル読めや
604nobodyさん:2005/11/15(火) 22:16:29 ID:???
やはり一味も二味も違うな
605600:2005/11/15(火) 22:18:14 ID:???
>>601
ポート8040ってのはどこから出てきたんだ…
その状況だと >>490 の時点とはエラーメッセージが変わってるんじゃないのか?

1) 念のため聞くが、WEBサーバー(PHPが動作しているサーバー)とpostgresが動作している
  サーバーは同じサーバー?
2) 現在のエラーメッセージは?
3) 接続パラメータにパスワードがないが、パスワードなしでOK?
4) 先のカキコで聞いたが、無視しやがるので再度。postgresへ接続する部分の具体的なコードは?
606nobodyさん:2005/11/15(火) 22:20:00 ID:???
回答をもらってるのに部分的にスルーって時点で釣りか、精神的にアレなんじゃないのか・・・
607nobodyさん:2005/11/15(火) 22:21:25 ID:???
>>605

4)は501あたりじゃね?昨日と同じなら
608nobodyさん:2005/11/15(火) 22:27:04 ID:AP0zNwzy
PHPでheader("Content-type: image/png")のように画像を出力しています。
通常の画像〜.pngなどはサーバー側で更新されていなければ再取得せずにキャッシュが使われますが、PHPで書いてある場合にはどのようにしたら同じような挙動をさせることができるでしょうか?
609nobodyさん:2005/11/15(火) 22:29:05 ID:???
よく考えりゃテンプレも読めなきゃレスも読めてないんだから
参考書とかマニュアルなんて読めるわけが無いよな
610nobodyさん:2005/11/15(火) 22:29:49 ID:???
>>608
ブラウザに依るから何とも言いようが無い
611608:2005/11/15(火) 22:32:05 ID:???
>>610
むむー、そうなのですか。IEとFirefoxが大半だと思うので、この2つだけでも何とかなりませんか?
612490:2005/11/15(火) 22:34:07 ID:NEc3YLTa
>>603
ありがとうございます。
>>603
これでいいでしょうか?
config.php
<?php
if(ereg("config.php",$_SERVER["PHP_SELF"]))
{
exit();
}
define("DB_NAME","testdb2");
define("DB_CONN","dbname=" .DB_NAME);
?>
結果ですが、ダメみたいです。
<br /><b>Warning</b>:
pg_connect()
[<a href='function.pg-connect'>
function.pg-connect</a>]
Unable to connect to PostgreSQL server: FATAL:
user "nobody" does not exist
---------------------------------------------------
613490:2005/11/15(火) 22:34:33 ID:NEc3YLTa
test1.php
<?php
require("config.php");
$db=pg_connect(DB_CONN);
header("Content-Type:text/plain;Charset=EUC-JP");
if($db==FALSE)
{
echo " not connect db?n " ;
}
else
{
echo "database connect ok?n" ;
}
?>
614nobodyさん:2005/11/15(火) 22:38:35 ID:???
>>611
Last-Modifiedで何とかならんかな?
615nobodyさん:2005/11/15(火) 22:39:06 ID:???
490はもうスルーしようよ
616nobodyさん:2005/11/15(火) 22:45:26 ID:???
>>608
rfc嫁
last-modifiedとif-none-matchをみてレスポンス返せばいいが
HTTP1.1に準拠するのは結構面倒だぞ
617608:2005/11/15(火) 22:55:52 ID:???
>>614
header("Last-modified: 〜")のようにすればいいのですね。

>>616
if-none-matchというのもこれから調べてみます。

ありがとうございました。
618nobodyさん:2005/11/15(火) 22:57:48 ID:???
>>617
違う。304レスポンス/ステータスを返す
Web鯖がやってるのと同じことをする
ところで下のほうにくだスレがあるの見えてる?
619nobodyさん:2005/11/15(火) 22:58:47 ID:???
>>615
釣りか、知能が異様に低いかのどっちかだな。

前者なら良いが、もしも後者なら490が不憫で・・
620600:2005/11/15(火) 22:59:11 ID:???
>>607
サンクス。>>490 からのスレを全部読んでいなかった漏れが悪かった。
で、全部読んだら脱力した…。今回とほとんど同じ流れじゃん。
>>490 からすると同じ事を何度も聞きやがって、と思うかもしれんが
聞かれてもしょうがないよな…
スマンが、この件からは離脱するわ。付き合いきれん。
621nobodyさん:2005/11/15(火) 23:02:48 ID:???
>>616
つ if-modified-since
622nobodyさん:2005/11/15(火) 23:05:27 ID:???
>>620
一つだけ言っておこう。

「おまいは別に悪くないぞ」
623nobodyさん:2005/11/15(火) 23:07:42 ID:???
>490

test1.php
<?php
$db=pg_connect("dbname=testdb2 user=testuser2");
if($db==FALSE) {
echo "NG";
} else {
echo "OK";
}
?>

なら、どうよ?
624nobodyさん:2005/11/15(火) 23:11:07 ID:???
>>490
user "nobody" does not exist
なんだと思う?
気づけよ┐(´ー`)┌

#623をやって、今度はパスワでエラーかもw
625nobodyさん:2005/11/15(火) 23:14:58 ID:???
ダメなのはなんとなく理解しているが、
どうしてダメなのかはサッパリ分かってないし、分かろうともしていない
626nobodyさん:2005/11/15(火) 23:18:02 ID:???
このまま尻切れトンボで収束して、明日はまた最初からだな。
急いでいるみたいだから、みんな準備しとけよ。
627nobodyさん:2005/11/15(火) 23:18:41 ID:???
>>625
昨日も相手したんだけどねぇ
ぷっスマの時間なので後は頼んだw
628nobodyさん:2005/11/15(火) 23:51:35 ID:???
期待の大型新人もぷっすまかな?

”ある意味”こっちのほうがレベル低いよねw

明日こそ旨く伝えられるようにがんばるぞ!
629nobodyさん:2005/11/15(火) 23:55:07 ID:???
じゃあ、期待の大型新人はこちらで育成よろしく。
PostgreSQLスレでは、育てきれません。
630nobodyさん:2005/11/16(水) 00:21:48 ID:???
>>629
イヤン。お持ち帰り下さいませ。
631nobodyさん:2005/11/16(水) 00:31:30 ID:???
>>549が正論だな
下質スレは下質スレなりにレベルを保つって事だな
632nobodyさん:2005/11/16(水) 03:49:50 ID:???
くだスレどこがまともなの?
633nobodyさん:2005/11/16(水) 03:53:16 ID:???
期待の新人君が沸いて楽しいぞ
634nobodyさん:2005/11/16(水) 06:55:21 ID:???
phpizeって何ですか?
635634:2005/11/16(水) 07:44:56 ID:???
すみません他のスレに行きます。
636nobodyさん:2005/11/16(水) 08:01:21 ID:???
>>635
他の星へ行け
637nobodyさん:2005/11/16(水) 11:27:45 ID:???
くだらない質問なんだろうなぁと思う奴は控えめ→くだ質へ→控えめなので丁寧に質問→丁寧故に回答を得る→結果的に良質なスレへ
638nobodyさん:2005/11/16(水) 12:30:06 ID:???
なんか妙にくだスレをヨイショしたがってる池沼がいるな。
全体的によく見比べれ。つーか低脳はくだスレに帰れ。
639nobodyさん:2005/11/16(水) 12:34:04 ID:???
↑みたいなレスが増えると糞スレになってくる。
質問と回答以外書き込まなければいいと思うよ。
640nobodyさん:2005/11/16(水) 12:35:10 ID:???
念のため書いときまーす

【基本ルール】
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry

>>1より一部引用)
641nobodyさん:2005/11/16(水) 13:59:29 ID:???
echo ってなんですか?
642nobodyさん:2005/11/16(水) 14:11:46 ID:???
643nobodyさん:2005/11/16(水) 14:20:49 ID:pHA2FDGy
配列に関する質問です。
数値をキーとする配列(キーそのものにはあまり意味はないです)に含まれる値だけを取りだして、それをキーとするにはどのようにしたらよいでしょうか?(検索効率を上げるため)
生成された配列の値は使用しないので何でもよく、(キーにするという性質上)重複は削除するものとします。
何か案をお持ちの方いらっしゃいましたらよろしくお願いします。
644nobodyさん:2005/11/16(水) 14:32:10 ID:???
array_combine
645nobodyさん:2005/11/16(水) 14:48:02 ID:???
>>643
案っていうか、オマイさんが言ったことをゴリゴリと書いても大した手間ではないだろうに。
確かにPHPの関数を使った方が短く書けるだろうけど、それに拘るのなら自分で PHP マニュアルの
array_xxxx 関係を読めばいいのではないのか?
多分、array_values、array_combine 辺りで可能だと思う。
646nobodyさん:2005/11/16(水) 14:51:21 ID:pHA2FDGy
>>644
レスありがとうございます。
実はarray_count_valuesで一発だったようです。
array_combineも便利そうですね。
どうもありがとうございましたm(_ _)m
647nobodyさん:2005/11/16(水) 15:03:11 ID:???
セッションの管理について詳しく書いてるとこない?
648nobodyさん:2005/11/16(水) 15:47:45 ID:???
>>647
マニュアル読んだ?
>>1読んだ?
649nobodyさん:2005/11/17(木) 00:40:21 ID:???
490の大型ルーキー今晩こなかったなあ。

生活にハリがなくなったよ。しょぼーん。
650nobodyさん:2005/11/17(木) 00:56:25 ID:???
>>649
をを、そういえばこなかったな。
651nobodyさん:2005/11/17(木) 01:20:25 ID:???
そのうちまた来るさ。
652nobodyさん:2005/11/17(木) 03:25:55 ID:V06oZKlx
任意の正規表現に対して、その正規表現がマッチする文字列をランダムに生成する方法がわかりません。
たとえば$pattern = "/[0-9]{1,2}[A-Za-z]{3,4}/";なら
51TuAG
8ntQb
93dzL

のように複数の文字列をランダムに生成する形です。
どなたかご教授いただけますでしょうか?
653nobodyさん:2005/11/17(木) 03:59:17 ID:???
性器表現道場へ逝け
654652:2005/11/17(木) 04:47:47 ID:V06oZKlx
すみません。正規表現そのものの質問ではなく、与えられた正規表現に対するPHPを用いた処理の仕方の質問です。
うまく伝えられなかったようなので申し訳ありません。
655nobodyさん:2005/11/17(木) 04:59:32 ID:???
>>654
いきなり"."がくるかもしれなくて"["もくるかもしれなくて
その場合どこかに"]"があって……
と考えてコードを書けばええやん。
パターンがもっと限定されてるなら、それはそれでやりようあるし。
656nobodyさん:2005/11/17(木) 06:15:07 ID:???
>>652
やりたいことがよくわからんが、uniqid か何かで出した文字列に
preg_replaceで s/[^任意の正規表現]//g やればええんちゃう?
運が悪いと1文字も残らないかもしれないけど
657nobodyさん:2005/11/17(木) 06:16:49 ID:???
うわ、文字位置まで限定か。
だったら配列に使える文字入れてrandとかで一文字ずつ決めちゃった方が簡単でしょ
658nobodyさん:2005/11/17(木) 09:33:53 ID:???
>>654
ランダムな文字列生成関数を作って、
それが正規表現にマッチするまでぐるぐる回したら?
重くはなるかとは思うが。。。
659nobodyさん:2005/11/17(木) 09:36:29 ID:???
658よりは、657の一文字づつランダム決定の方が軽そうね
660658:2005/11/17(木) 09:44:54 ID:???
ただ、それだと同じ文字列がでやすくなるかなぁとは思うけど
気にしないならいいや
661nobodyさん:2005/11/17(木) 09:46:33 ID:???
>>660
そうなの?
確率的には同じような気がするけど
662nobodyさん:2005/11/17(木) 10:31:12 ID:???
そか
そう言われれば確率的には同じだな。。。
663nobodyさん:2005/11/17(木) 12:02:09 ID:???
Mysqlで新しいデータから参照するにはどうしたらいいのでしょうか?
掲示板を作成していて古い順に並ぶので
664nobodyさん:2005/11/17(木) 12:06:12 ID:???
OrderBy

ってか、それはPHPの質問かと小一時間
665nobodyさん:2005/11/17(木) 16:20:31 ID:???
>>663
DESC
666nobodyさん:2005/11/17(木) 16:28:45 ID:???
こんな椰子が作成する掲示板って怖いな。
667nobodyさん:2005/11/17(木) 16:33:19 ID:???
SQLインジェクションされたい放題になる予感
668nobodyさん:2005/11/17(木) 16:34:30 ID:???
>>663
PHPでやるなら全部配列に入れてrsort()
669nobodyさん:2005/11/17(木) 16:37:22 ID:???
DB使う意味ねぇ〜
670nobodyさん:2005/11/17(木) 16:38:27 ID:???
ファイルアクセスよりは早いと思うよ(ぷ
671nobodyさん:2005/11/17(木) 16:44:22 ID:???
HAHAHA ナイスジョーク
672nobodyさん:2005/11/17(木) 16:49:11 ID:???
673nobodyさん:2005/11/17(木) 16:57:20 ID:???
(ノ∀`)アチャー
674nobodyさん:2005/11/17(木) 17:03:24 ID:???
そのサイトのトップページに
 PHPをバージョンアプしましょう!
 PHPに重大な脆弱性
 PHPに関するセキュリティ情報
とあるのがまたなんとも言えず。。。

ところで「バージョンアプ」って。
675nobodyさん:2005/11/17(木) 17:06:59 ID:???
意味は通じるだろ
676nobodyさん:2005/11/17(木) 17:13:24 ID:???
>>674
掲示板も非常に芳ばしい感じです
677nobodyさん:2005/11/17(木) 18:46:51 ID:???
いまPHP勉強中なんですが>>672のソースはどこがまずいんでしょうか。
678nobodyさん:2005/11/17(木) 18:53:57 ID:???
>>677
>>667の対策をしていない
679nobodyさん:2005/11/17(木) 19:00:18 ID:???
680nobodyさん:2005/11/17(木) 19:12:16 ID:???
レッツも長いことPHP使ってる(ないのか?)んだから
公開してるサンプルソース全部見直したらいいのに...
初心者が真に受ける率が高いって判って放置してんのかな。
681677:2005/11/17(木) 19:29:31 ID:???
>>678,679
ありがとうございます。

クエリに使用したりするユーザーからの入力データを、
stripslashesなどでエスケープしておけばいいということでしょうか。
たとえば
if (get_magic_quotes_gpc()) {
�$id = stripslashes($id);
}
で大丈夫みたいなことを聞いたのですが、
実際どうなのでしょうか。
682nobodyさん:2005/11/17(木) 19:32:22 ID:???
683nobodyさん:2005/11/17(木) 19:34:38 ID:???
なんか、根本的に分かってない気がするな
684nobodyさん:2005/11/17(木) 19:55:58 ID:???
そんな気がする
>>681
この場合、>>679のリンク先で説明されているような状況を防ぐ手段を講じて
いないのが問題で、少なくともstripslashes()は目的に適っていないよ。

〜すればいい、と言う事を盲目的に覚えるんじゃなくて、
何を何の為にするのか理解しておかないと墓穴掘るよ
685nobodyさん:2005/11/17(木) 20:08:33 ID:???
679の記事とその連載全回分を熟読すべきだ。
熟読する価値はあるぞ681程度の認識しかないなら。
686nobodyさん:2005/11/17(木) 20:38:50 ID:???
>>672もこの前のKEN●のsendmailみたいな運命か…
687nobodyさん:2005/11/17(木) 20:45:41 ID:???
stripslashesでは駄目だとマニュアルに書いてある。(SQLiteの方だったかも)
MySQLならmysql_escape_string
またはPearのDB.phpでquoteSmart
688nobodyさん:2005/11/17(木) 23:59:01 ID:???
つか、キャラクタはpreg_replaceで文字コードに置換してしまえ
689nobodyさん:2005/11/18(金) 08:58:35 ID:???
>>687
今のおすすめはmysql_real_escape_string
690nobodyさん:2005/11/18(金) 09:09:04 ID:???
691nobodyさん:2005/11/18(金) 12:16:05 ID:???
-- チラシの裏 --
SQLインジェクションでドキッとした。
で、自分のプログラム見たら、DB Connect のクラスでSQLインジェクション対策が隠蔽されてた。
ホッとした。
---------------
692nobodyさん:2005/11/18(金) 15:51:56 ID:s0p1oegi
すみません。少しスレ違いかもしれませんがお聞きします。
RFCを自分なりに読んでみているのですが、これらの情報はPHPを使うのに必要なのでしょうか?
また必要ならば、どのような場面で必要になるのでしょうか?
693nobodyさん:2005/11/18(金) 16:02:50 ID:???
>>692
かなりスレ違いですが、そもそも貴方がRFCを読み出した動機は何ですか?
694nobodyさん:2005/11/18(金) 16:08:06 ID:???
>>692
RFCが必要とされる局面
695nobodyさん:2005/11/18(金) 16:12:05 ID:???
>>692
アメリカンジョークに例えるとだな、
・PHPを使える - 英単語・熟語・文法を知っている
・RFCを読んでいる - ジョークの理解するための歴史的背景・風俗を知っている
・RFCは知らないがスクリプトを作成できる - 毎回、「おまえのかみさんだったよ」で終わる。
・RFCに基づいたPHPスクリプトを作成できる - アメリカンジョークを自作できる
696nobodyさん:2005/11/18(金) 16:17:39 ID:???
RFCって必要になった時点で読むものでしょ。
697692:2005/11/18(金) 16:38:29 ID:s0p1oegi
>>693
色々なサイトを見て勉強しているのですが、PHPの説明の中にRFCを参照のようなことがいたるところに書いてあったからです。

>>694
どのような局面で必要とされるのでしょうか?

>>695
ごめんなさい。まだRFCに精通していないのでうまく理解できませんでした。

>>696
なるほど。必要になるときが来るのですね。
例えばどのようなことを実現するために必要になりますか?
698nobodyさん:2005/11/18(金) 16:44:07 ID:???
>>697
このレスの仕方はつい最近見たような気がするが・・・。

RFCが何かは知ってて読んでるんだよね?
699nobodyさん:2005/11/18(金) 16:47:26 ID:???
>>697
RFCを全部理解してからphp組むなんてのは、広辞苑全部呼んでから作文するのと同じ。
組んでいる途中で必要になったらRFCの該当文書を見ればいいだけ。
でもおまえが何組んでるかも知らんのに「必要になるとき」なんて答えようが無い。
700nobodyさん:2005/11/18(金) 16:58:51 ID:???
>>698
みんなで釣られてしまえ
701nobodyさん:2005/11/18(金) 17:42:29 ID:???
>>697
>色々なサイトを見て勉強しているのですが、PHPの説明の中にRFCを参照のようなことがいたるところに書いてあったからです。

だから、どんな説明の時に参照するって書いてあったんだ。
その説明の部分で、それ以上詳しいことが必要なら参照すりゃいいだろ。
702692:2005/11/18(金) 17:47:58 ID:s0p1oegi
そうなのですか。わかりました。
http://www.spencernetwork.org/memo/tips-3.php
ここに出てくるContent-typeやContent-lengthといったものが
ftp://ftp.isi.edu/in-notes/rfc2068.txt
RFCに載っていたので、このようなプログラムを自在に書けるようになるために必要な情報だと思いました。
そうなるとRFCを理解しなければそれを必要になる場面に出会うことすら難しいため、一歩進んだプログラミングの習得ができない気がしてしまいます。
みなさんはきっとそういう逆境を乗り越えたのですね。
できたらその時の思考プロセスを話してもらえませんか?
703nobodyさん:2005/11/18(金) 17:54:47 ID:???
>>702
そもそもRFCが何か理解しているかい?
704nobodyさん:2005/11/18(金) 17:56:54 ID:???
RFCという釣餌
705nobodyさん:2005/11/18(金) 18:02:29 ID:???
>>702
オマイ自身が答えを書いているじゃん。

PHPで作成された簡易HTTPクライアントのサンプルがあって
このようなプログラムを自在に書けるようになるために必要な情報だと思いましたので
RFCを理解しようとしています。

オマイの思考プロセスは上記で正しい。他人に聞く必要はない。
以上
706nobodyさん:2005/11/18(金) 18:13:07 ID:???
以下
707nobodyさん:2005/11/18(金) 18:18:42 ID:???
思考経過の妥当性がアプリオリに決定されるわけないじゃん
708nobodyさん:2005/11/18(金) 18:37:57 ID:???
>>702
アンケートは自分のサイトでやってくれる?
709nobodyさん:2005/11/18(金) 18:40:36 ID:???
まぁまぁ、まぁまあ、

マーライオン       , ―‐ 、
             /r‐' ,ェェr‐..、
               | l |   ____Y)........
               | l ヽ  ┴‐┬'''''''''' ::::.........
               | l  l `ー‐1      ::::::::.......
             7レヘ!    /        ::::::::::::.....
             l |. |    /           :.:.:.:::::...
             /7ーー7777!             :.:.:.:::::....
            T--l⌒ヽ{ l               :.:.:.:.::::::...
               |vv'レ⌒!'ー!                :.:.:.:.::::::...
              |vv'ヽソー1                 :.:.:.:.::::::.
           _ヽVVVー7__               :.:.:.:.:::::..
         ,〜〜〜〜〜〜〜ヽ  ヽ、             :.:.:.:.:.:..::..
        ∠二二二二⌒二二二二二二ユ            :.:.:.:.:.::::::...
710nobodyさん:2005/11/18(金) 19:52:41 ID:AXpGNMBT
DIVタグで#top #left #right #mainとレイヤーを分けて、index.phpを作り、
その際、#top #left #rightのところのタグが他のページのphpで使いまわしになるので,
それぞれをtop.php、left.php、right.phpとして、includeして見やすい様にしたのですが
これはセキュリティとかphpの使い方として、問題あるんでしょうか?
一応、使えてはいるんですが、心配で。
711nobodyさん:2005/11/18(金) 20:00:01 ID:???
>>710
その内容から判断する限り問題はないと思う。
ただしtop.phpとかに直接アクセスされる可能性を考慮すべし。
712710:2005/11/18(金) 20:17:09 ID:AXpGNMBT
>>711
ありがとうございます。
top.phpとかには直接アクセスされないように配慮してみます。
713nobodyさん:2005/11/18(金) 20:17:25 ID:???
1.呼び出し側のindex.phpでdefine使って定義。
2.呼び出される側では、definedで定義済みかチェック。
3.もし未定義であれば、不正な呼び出しとしてエラー吐くなり何なりやって終了

-index.php-
<?php
define('_VALID', '');
include('top.php');
?>

-top.php-
<?php
defined('_VALID') or die ('Error msg');
echo 'top.php';
?>
714nobodyさん:2005/11/18(金) 21:54:44 ID:???
プロクシ規制を考えているのですがサンプルになるようなものを
配布しているサイトをご存知ないでしょうか?
プロクシリストを更新するものではなく逆引き等によって制限できる
物を探しております
715nobodyさん:2005/11/19(土) 12:34:18 ID:???
エスパー呼ぶ?
716nobodyさん:2005/11/19(土) 14:04:33 ID:???
>>715
エスパーだけど、何か用?
717nobodyさん:2005/11/19(土) 14:10:57 ID:???
>>716
なら頼んだ
718nobodyさん:2005/11/19(土) 15:00:44 ID:???
むしろ今必要なのは一休ではないか
719nobodyさん:2005/11/19(土) 15:09:54 ID:???
>>714
で、それとPHPとなんの関係が?
720nobodyさん:2005/11/19(土) 15:25:59 ID:???
なに休んでんだよ
721伊東:2005/11/19(土) 17:56:46 ID:???
エスパーですけど何か?
722nobodyさん:2005/11/19(土) 18:26:19 ID:???
エスパーさん、俺の名前当ててください。
723エスパー伊藤:2005/11/19(土) 18:28:38 ID:???
キンコツマンだろ?
724nobodyさん:2005/11/19(土) 18:34:06 ID:???
>>723
なぜ分かった?
しかも、投稿日の数字(18:28:38)が素晴らしい!

流石エスパーさん!!
725nobodyさん:2005/11/19(土) 18:39:41 ID:???
何が素晴らしいんだ?
726nobodyさん:2005/11/19(土) 18:43:23 ID:???
自演がだろ
察しなさい
727nobodyさん:2005/11/19(土) 18:47:53 ID:???
>>723の投稿日時を見よ。
728nobodyさん:2005/11/19(土) 20:38:03 ID:???
その日時のどこが素晴らしいのかと
729nobodyさん:2005/11/19(土) 21:07:14 ID:???
空気読めてない
730nobodyさん:2005/11/19(土) 21:15:21 ID:???
質問スレなんだから、あまりネタにレスつけんなよ・・・
731nobodyさん:2005/11/19(土) 21:27:45 ID:???
質問する時、くだ質とこのスレのどちらで聞けばいいか迷うよね。
でも、「くだらない」かなんて分かるもんでもないし…

なんだか統一しても良くなってきた。。
732nobodyさん:2005/11/19(土) 21:43:22 ID:???
おいらは質問した事が無いのでその辺りの葛藤はよく分からんが、
くだ質スレで答える時には基本的な部分も含めて回答し、
こっちではその辺りをすっ飛ばして答えるようにしている。
そうすると自然と向こうではくだらない質問にだけ答えるようになり、
こっちではくだらない質問はマニュアル嫁と思って答えなくなる。
733nobodyさん:2005/11/19(土) 22:03:21 ID:???
>>732
なるほどね。
734nobodyさん:2005/11/19(土) 23:16:53 ID:???
ここで聞いていいのかわからんのですが、
ホスティング業者で複数のPHPのヴァージョンを使えるような
ところってないですか?
たとえば、
フォルダ1 PHP4.3.11 register globals=on
フォルダ2 PHP4.4.1 register globas=off
みたいな感じで使い分けたいんですけど・・・
735nobodyさん:2005/11/19(土) 23:30:53 ID:???
>>734
レンサバ板いったほうがいいんじゃね?
736nobodyさん:2005/11/20(日) 00:59:57 ID:???
>>731
つか単純に

マニュアル読める人はこっち
マニュアルに不慣れな人はあっち

でいいじゃん。
そうすりゃ本スレはマニュアルに載ってないor見つかりにくい内容、くだスレはマニュアルレベル(=初心者レベル)になるし。
本スレもくだスレも次スレ立てるときは1にそれを明示するべき。
737nobodyさん:2005/11/20(日) 02:22:49 ID:???
>>736
大丈夫。ここに質問しに来るような奴は最初から>>1なんて読まない。
738nobodyさん:2005/11/20(日) 02:34:26 ID:???
質問しに来る奴が読まなくても>>731みたいなときに読めばいい
739nobodyさん:2005/11/20(日) 02:45:19 ID:???
回答側がガタガタいったって仕方ない。それが質問スレの宿命。
740nobodyさん:2005/11/20(日) 02:51:24 ID:???
>>739
質問スレの宿命って何?
741nobodyさん:2005/11/20(日) 02:52:27 ID:???
お前にはあの★が見えないのかい?
742nobodyさん:2005/11/20(日) 02:57:43 ID:???
エスパーか!?エスパーなのか!?
743nobodyさん:2005/11/20(日) 02:59:07 ID:???
>>1なんか回答側の予防線として使えるんだから書きたいだけ書いときゃいいじゃん
744nobodyさん:2005/11/20(日) 05:20:34 ID:???
どうせなら、むしろこっちに
中級以上
とか書くと、初心者はくだ質にいくんじゃね?
745nobodyさん:2005/11/20(日) 05:42:38 ID:???
>>744
「中級」じゃ何のことだかわからなくないか?
むしろマニュアルきちんと読んだ上でググった上での質問ならこっちに来た方がいい希ガス。
本スレとくだスレの関係を双方にはっきり書いておくのは同意。
746nobodyさん:2005/11/20(日) 05:47:17 ID:???
判断基準の明記だね。
現状だと質問者が自分の脳内でくだらないかどうか判断してるんじゃない?
あと、スレの雰囲気も重要だと思う。
向こうとこっちじゃ空気が違うから。
初めてWebprog板を覗いた人には関係ないけど、
何度も質問してるような人は雰囲気でスレを選ぶんじゃないかな。
747nobodyさん:2005/11/20(日) 05:48:08 ID:???
くだすれの存在意義=くだらない質問書く奴の隔離誘導先
748nobodyさん:2005/11/20(日) 05:52:25 ID:???
くだらないかどうかのボーダーライン:

マ ニ ュ ア ル 読 め る ・ グ グ れ る

で決定の方向ですか?
749nobodyさん:2005/11/20(日) 06:02:52 ID:???
>>746
実際ここのスレとむこうのスレでどっちに書くか選んでる奴がいるのかどうか知らないが(731以外w)、レベル的には別れていたほうがわかりやすいだろうね。
もし分ける必要がないとしたら1つのスレにまとめた方がいいってことだし。
750nobodyさん:2005/11/20(日) 06:35:46 ID:???
751748:2005/11/20(日) 07:05:55 ID:???
>>1に何書いたって馬鹿は馬鹿なんだからその都度誘導が必要。
その時>>1が説得力+便利になるだけの話。
752744:2005/11/20(日) 07:06:50 ID:lMDh+9MV
>>745
スレタイトル名で判断できないとダメだって。
くだ質する奴なんて>>1-10なんて読まない奴が多いんだし。

スレタイに中級とか上級とかかいとけば
>むしろマニュアルきちんと読んだ上でググった上での質問
でない場合は心理的に入りづらいだろ。

あと、くだ質を隔離扱いじゃなくて、初心者用っていう位置づけなら
初心者歓迎とかスレタイにつけたほうがいいと思われ
753nobodyさん:2005/11/20(日) 07:29:39 ID:???
スレタイ変更は同意。
くだ質は隔離でいいと思うけど。
初心者歓迎スレがいると思うなら立てたらいいじゃん。
俺は別にいらんと思うけど。
とりあえず次のスレタイは何がよかっぺ?
754nobodyさん:2005/11/20(日) 07:33:53 ID:???
それよりまたスレが出来てしまったぞ。

暇なPHP上級者が初心者の質問に答えるスレ
http://pc8.2ch.net/test/read.cgi/php/1132434138/

PHP質問スレって何個あるんだよwwwwwwwww
755nobodyさん:2005/11/20(日) 07:38:08 ID:???
>>752
つーか本スレ入りづらくしてどうすんの?
756nobodyさん:2005/11/20(日) 09:19:02 ID:???
>>755
ちゃんと嫁。
レベル別に分けろって書いてるの
757nobodyさん:2005/11/20(日) 09:35:01 ID:???
レベルはどのように分けるの?
レベル別に分けるというなら細かく規定しないと意味ないよ。
758nobodyさん:2005/11/20(日) 10:16:23 ID:???
>>736はどうよ?
759nobodyさん:2005/11/20(日) 12:57:52 ID:???
なんかもう完全に質問者側の立場そっちのけだな
760nobodyさん:2005/11/20(日) 14:00:32 ID:???
別にこのスレは質問者側のものでも回答者側のものでもないのでルールさえ守れば何を書いても自由だよ
761nobodyさん:2005/11/20(日) 14:46:31 ID:???
レベル、レベルと言ってる奴ほど、実はたいしたレベルではないという罠
762nobodyさん:2005/11/20(日) 16:28:55 ID:Tn2gjfrX
phpでそのディレクトリのファイルを拡張子順にソートするにはどうすればいいんですか?
763nobodyさん:2005/11/20(日) 16:36:15 ID:???
>>762
いろいろとやり方があると思うが、
・拡張子別に配列(s)に取り込む。
・それぞれの配列に対してソートをかける。
つーのが直感的に分かり易くていいんジャマイカ?
764nobodyさん:2005/11/21(月) 00:41:50 ID:???
>>762
効率的じゃないけど短く書くなら
$files = ファイル名の配列
$tmp = array();
foreach ($files as $file) $tmp[$file] = strrchr($file, ".");
asort($tmp);
$files = array_keys($tmp);
765nobodyさん:2005/11/21(月) 01:42:09 ID:???
>>761
みんな低いなりに頑張ってるんだよ
766nobodyさん:2005/11/21(月) 17:02:24 ID:???
そうだよ、誰だって通る道なんだよ。
767nobodyさん:2005/11/21(月) 21:08:48 ID:???
http://www.php.net/manual/ja/language.oop.newref.php
(PHP 4以降ではリファレンスカウンティングを使用しているため、)参
照ではなくコピーを返すことで性能が低下することはありません。逆に
多くの場合、参照を使うよりも単純にコピーを使った方が良い結果とな
ります。これは、参照の作成には時間がかかりますが、コピーの作成に
は理想的には時間が全くかからないからです。(ただし、大きな配列ま
たはオブジェクトでその一つが変更されると、次々に参照先の他の要素
に参照先に波及するといった場合を除きます)

newする時&=はしない方が良いのでしょうか?
768nobodyさん:2005/11/21(月) 22:26:54 ID:???
phpを利用して、フォームに入力した内容を
mailto アンカーのbodyに送るにはどうしたらいいですか?
769nobodyさん:2005/11/21(月) 22:32:52 ID:???
>>768
PHPは鯖で動くもので、mailtoスキーマはブラウザ側で動くもの。
web制作板に誘導したい所だけど、もうちょっと詳しく書かないと罵倒されて終わりと思われ。
770nobodyさん:2005/11/21(月) 22:34:03 ID:???
<form action="mailto:">
だったかな?
PHPで出来るわけない。
771768:2005/11/21(月) 22:45:56 ID:???
言葉足らずで申し訳ございません。
現在、sendmailを使ってメールフォームを作っているのですが、

フォームに記入した文字をメーラーにて送信
1.フォームに記入して、画面下の送信ボタンを押してもらう。
2.1の内容を画面表示する確認画面。
3.2の画面の送信ボタンを”mail to” のボタンに変更
 <a href="mailto:[email protected] ?Subject=無題&body=[なにがし](引数)[なにがし]">メールを送る</a>

のようなことをできると知人から聞いたのですが、
詳しいやり方が分かりません。
今は、知人に聞くこともできず、
いろいろ調べていたところです。

このような方法は、無理なのでしょうか?
よろしくお願いします。
772nobodyさん:2005/11/21(月) 22:49:08 ID:???
>>771
言葉足らずというよりも知恵足らず…
もう少し、頭は使ったほうがいい。
というより、まずはフォームに入力したものを画面に表示するところから。
(ってか、それが出来れば問い自体が終了か…)
773768:2005/11/21(月) 22:52:48 ID:???
>772
有り難うございます。
ただ、現在、sendmailを使ったメール送信は機能しております。
それを、mailtoを使ったものに変更したいんです。
フォームに入力したものを画面に表示することはできています。
774nobodyさん:2005/11/21(月) 22:54:29 ID:???
>>771
"<a href="mailto:...略" を echo で出力してやるだけのことなんだが…
"フォームから入力" → "確認画面" → "送信" でメーラーが開いてユーザーが送信するって変ぢゃまいか?
メール送信フォームとして、ホントに正しいのか?
775762:2005/11/21(月) 23:22:32 ID:Aq1woluR
>>763-764
おくれましたがとってもありがとうございました。
776nobodyさん:2005/11/21(月) 23:24:29 ID:???
こういう感じにしたいんじゃないかな。

フォーム表示 form.html bodyを入力

確認画面 confirm.php
<form method="mailto:〜">
<input type="hidden" name="body" value="<?= $_POST['body'] ?>">
<input type="submit">
</form>
んでも、できないね。コレ。
777nobodyさん:2005/11/21(月) 23:31:13 ID:???
>>773
いみわかんねぇな…
フォームの入力内容を画面に表示できるのなら、
<a href="mailto:[email protected] ?Subject=無題&body=[なにがし](引数)[なにがし]">
の「なにがし」をその内容にすれば良いだけだろうに。
・・・まてよ?ひょっとして「urlencode」が知りたいのか?
それとも釣りか?
778nobodyさん:2005/11/21(月) 23:39:42 ID:???
>>767
コンストラクタで何してるか判らないクラスは
与り知らない場所で勝手にコピーされると問題になるかもね。
コンストラクタ内で register_shutdown_function してる時とか。
しっかり参照で受け取っておきましょう。
779nobodyさん:2005/11/22(火) 03:42:47 ID:???
>>777
さすがにそこまでエスパーしなくていいのでは?
もしかすると、文字列結合とかができないんじゃないの?
780nobodyさん:2005/11/22(火) 04:37:13 ID:S56rw+w2
スレタイに「エスパー常駐」とか「トンデモ質問箱」とか書いて隔離したほうがとオモタ。
781773:2005/11/22(火) 09:41:40 ID:???
いろいろ有り難うございます。
一応、

<form action="mailto:[email protected]?Subject=ああ&body=
<?php
foreach($_POST as $key=>$var) {
echo($key." --- ".$var."\n");
}
?>
" method="POST">
以下略

という形で、一応希望の動作にはなりました。
ただ、メーラーに送る際、\nが認識されずに
改行がうまくいきません。
どうしたらいいでしょうか?
782773:2005/11/22(火) 09:51:16 ID:???
解決しました。
783nobodyさん:2005/11/22(火) 10:01:00 ID:???
ひょっとしてmailtoで開くメーラの本文に、フォーム上で編集した本文を入れた状態で立ち上げたいとか
784nobodyさん:2005/11/22(火) 10:01:39 ID:???
>>781
PHPの話じゃなくてhtmlの話なんで、そっちを勉強なさい。
つ[RFC2368,RFC1738]

ま、RFCに準拠した動作をしないソフトはMS製に限らず多くある訳だが
785nobodyさん:2005/11/22(火) 14:26:59 ID:NrH69ETF
PHP5でnamespaceが却下された理由ってどなたかご存知ですか?
実用上の話題ではなく興味上の話題で申し訳ないのですが。
Web上でソースを見つけることができなかったので教えていただけると幸いです。
786nobodyさん:2005/11/22(火) 14:42:53 ID:???
>>785
php.internalsの過去ログを漁れば見つかると思うけど、確かZeevの鶴の一声で却下。
6での導入が再検討されてるみたいね。
http://news.php.net/php.internals
787nobodyさん:2005/11/22(火) 14:46:06 ID:???
確かパフォーマンスが著しく悪化したからとか何とかだった希ガス
788nobodyさん:2005/11/22(火) 15:24:10 ID:???
そうそう、で今のCVS HEADでは改善されてるんだっけ?
789785:2005/11/22(火) 15:37:58 ID:NrH69ETF
>>786-788
レスどうもありがとうございます。
とりあえず>>786さんのリンクを漁ってみます。
量が膨大ですね(^^;
namespaceでパフォーマンス悪化ですか。
それよりも実装を優先して欲しかったですね。
PHPのパフォーマンスってコンパイル時よりも実行時の方がウェイトが高そうですし。
(測ったことないですが・・・)
PHP6で実装されることを切に願うばかりですね。
790nobodyさん:2005/11/22(火) 15:44:05 ID:S56rw+w2
大規模サーバではパフォーマンスの方が大事だろうよ。
PHPなんて採用されてなんぼだし。
791nobodyさん:2005/11/22(火) 15:57:58 ID:???
>>789
スクリプト言語だし。
792nobodyさん:2005/11/22(火) 17:50:59 ID:???
>>790
namespace導入でPHP採用をやめるとこがあるほどパフォーマンス落ちするものですかな?
それなりにOOできるんだしnamespaceくらいあってほすぃ
793nobodyさん:2005/11/22(火) 19:40:06 ID:???
環境(すべて/usr/local配下にinstall)
OSX10.4.3
PHP.5.0.5
Apache2.0.55
sqlite3.2.7

初心者お約束の郵便番号データをsqliteコマンドから
流し込んでdbを作成して

define('DB', '/path/to/zip_db');
$db = sqlite_open(DB, 0666) or die(DB . " DBが開けません!¥n");

としたんですが

PHP Warning: sqlite_open(): file is encrypted or is not a database

と怒られちゃいました。zip_dbのファイルは確かにpathの位置にあります。
PHPは--with-eqliteと--enable-sqlite-utf8をつけてコンパイルしてます。
どーしてこうなってしまうのでしょうか?

phpからsqlite_open()で動的に作成したdbがsqliteコマンドからは
encryptedと言われるのは判りましたが、同じ仕様だとphpからsqliteを
使う場合は常に動的に作成しないとダメということでしょうか?
794nobodyさん:2005/11/22(火) 19:47:28 ID:???
>>793
PHP5はSQLite Ver2系にしか対応していないので、Ver2系をインストールして
データベースを再作成する。
または、PDOではVer3系に対応しているので、PDOをインストートルして
PDO経由でデータベースを扱う。
795nobodyさん:2005/11/22(火) 19:55:38 ID:???
>>794
ぬおっ!?そうだったのですか…勉強不足でした。
勉強してきます。ありがとうございました
796nobodyさん:2005/11/22(火) 22:07:48 ID:4gN/7PSO
MagpieRSSを使って、自分のブログのRSSをPHPで別サイトに表示しているのですが、
現在は、見出し・概要・本文を表示しているのですが
これを
見出し・概要・「本文の画像」のみ
という風に表示したいのですが、
だれかコード書いてくれませんか?
797nobodyさん:2005/11/22(火) 22:57:04 ID:???
>>796
いくら出す?
798nobodyさん:2005/11/22(火) 23:08:09 ID:???
>>796
このスレは、こんなカスのカキコもOKなのか…
799nobodyさん:2005/11/22(火) 23:13:20 ID:???
なんでも有りだな。このスレ。
くだスレと分ける必要もないんじゃね?
800nobodyさん:2005/11/22(火) 23:34:38 ID:4gN/7PSO
だからコード書いてくれよ
801nobodyさん:2005/11/23(水) 00:15:29 ID:???
もう二度とコードが書かれることはあるまい
802nobodyさん:2005/11/23(水) 00:37:33 ID:???
自演乙
803nobodyさん:2005/11/23(水) 02:40:35 ID:???
804nobodyさん:2005/11/23(水) 06:16:23 ID:???
20万までなら出す
805nobodyさん:2005/11/23(水) 06:18:26 ID:???
そしてすかさず引っ込める
806nobodyさん:2005/11/23(水) 07:08:11 ID:???
>>804-805
・・・何?ワロスとか書いたらいいの?

最近、馬鹿が多いから俺みたいにネタ
にレスつけんのやめような
807nobodyさん:2005/11/23(水) 07:36:08 ID:???
まあ俺は続けるんだけどなw
808nobodyさん:2005/11/23(水) 10:31:32 ID:???
朝ご飯何食った?
809nobodyさん:2005/11/23(水) 10:38:03 ID:???
ナットースト
810nobodyさん:2005/11/23(水) 11:35:16 ID:???
ハニートースト
811nobodyさん:2005/11/23(水) 12:25:23 ID:???
ジャムマーガリン
812メール送信したい:2005/11/23(水) 12:50:40 ID:???
こんにちは、いまサイトを自分で作成しているのですが、メール送信のところが
うまくいきません。
検索サイトで見つけたメールフォームから送信までのテンプレを3種類ほど試しましたが、
ひっかかっている箇所の修正ができません。
テスト環境はアパッチ2・php5です、メールフォームの必要事項は氏名・メルアド・件名・
本文の四項目です。
いいテンプレございましたら教えて下さい。
できれば携帯で使えるものがいいです。
813nobodyさん:2005/11/23(水) 12:53:24 ID:???
>>812
うまくいかないってのは具体的にどういうことなんだ?
814nobodyさん:2005/11/23(水) 12:55:26 ID:???
>>812
オマエみたいな質問の仕方も知らん奴はくだすれに行けよ
815nobodyさん:2005/11/23(水) 12:56:05 ID:???
>>796
【 スクリプト改造依頼スレ 】(丸投げ) part4
http://pc8.2ch.net/test/read.cgi/php/1127916965/
816nobodyさん:2005/11/23(水) 12:57:26 ID:???
>>812
つ[<a href="mailto:[email protected]">メール送信</a>]
817nobodyさん:2005/11/23(水) 14:35:19 ID:???
Array
(
[0] => abc
[1] => def
[2] => ghi
)
で、array[$i]に g が含まれている、いないの場合分けってどうやればいいんですか???
818nobodyさん:2005/11/23(水) 14:47:25 ID:???
>>817
forで回してereg_match
819nobodyさん:2005/11/23(水) 14:54:23 ID:???
含まれるか含まれないかで処理を変えたいだけなら foreach の中で if すりゃいいわけだけど
そうではなくて、こういうこと?
$a = array("abc", "def", "ghi", "jkl", "mno");
$b = preg_grep("/^[^g]+\$/", $a);
var_dump($a, $b, array_diff(array_keys($a), array_keys($b)));
820nobodyさん:2005/11/23(水) 15:07:03 ID:n7W1uJ4U
あふぉな質問かもしれないです、
exec()でsshで操作させようと思うのですが、
ssh許可されているサーバでしかもちろん使えませんよね?
あふぉですまそ。
exec()でコマンドなんかは呼び出せるからどうなのかなと思いまして。
821nobodyさん:2005/11/23(水) 15:09:35 ID:???
>>820
アフォなのは良くわかったからもう少し文章を整理してくれないか
822nobodyさん:2005/11/23(水) 15:11:29 ID:???
>あふぉな質問かもしれないです
いえ、あふぉ、そのものです
PHPの勉強の前に日本語学校に通ってください
823かにたま ◆kani39TDoc :2005/11/23(水) 15:36:38 ID:qoUPjdNn
824nobodyさん:2005/11/23(水) 16:05:55 ID:???
filemtime()を使ってファイルが最後に変更された時間を表示させてます。
他のサーバーでは正しく動いたんですが、自鯖では上手くいきません。
ディレクトリは正しい時刻が取れるんですがファイルの時刻が、
1970/01/01 09:00:00になってしまいます。
php.iniの設定かと思うんですが、何処を変更したらいいでしょうか。
825nobodyさん:2005/11/23(水) 16:13:32 ID:???
本当ならどういう時刻が表示される筈なの?
826nobodyさん:2005/11/23(水) 16:16:52 ID:???
>>824
バーカバーカw
死んでしまえwwww
827nobodyさん:2005/11/23(水) 16:30:24 ID:???
>>820
うん。

>>824
まず環境書かないと。あとエラーは何も表示されてないの?
828nobodyさん:2005/11/23(水) 18:00:07 ID:???
ftp_connect() とかを使いたいのですが、
セキュリティの関係上SSLを通したいと考えています。
この場合どのような方法をとれば良いでしょうか?
そのphpをSSL通して動かしただけではftp部分はセキュアには
なりませんよね?
829nobodyさん:2005/11/23(水) 19:14:24 ID:???
>>828
ポートフォワーディング
830nobodyさん:2005/11/23(水) 19:32:28 ID:???
>>826
>>828
ごごめんなさい。表示したいディレクトリのパスが間違ってましたごめんなさい。
831828:2005/11/23(水) 21:58:12 ID:???
>>829

レスありがとうございます、
phpでポートフォワーディングを実現することは可能なのでしょうか?
かなり難解そうな気がしますが・・・
832nobodyさん:2005/11/23(水) 22:43:19 ID:???
>>830
おまいは俺の知り合いのような気がする。
833nobodyさん:2005/11/24(木) 00:54:16 ID:1FyGYiu1
>>828
peclでssl2ライブラリがある。
PHPマニュアルにも載ってるよ。
漏れは挫折した・・・

ポートフォワーディングはルータでやればいいのではないかと・・・
834nobodyさん:2005/11/24(木) 03:52:03 ID:???
すいません質問があります。

PSQLのtimestamp型の列を扱う
標準関数ってありますか?

2005-11-11 10:00:00

2005-11-12 11:00:00
の時間を比較して差を出したり
他にもそういう関係の関数ってありませんでしょうか

自分で作るしかありませんか?
835834:2005/11/24(木) 03:52:40 ID:???
上はPHPのでの話です
836nobodyさん:2005/11/24(木) 05:35:36 ID:???
>>834
つ strtotime
837nobodyさん:2005/11/24(木) 06:10:16 ID:???
いや、DBでやれよ
838nobodyさん:2005/11/24(木) 08:25:39 ID:oCc1MCAs
いちいちDBでやってたら遅いPHPがますます遅いよ(w
839nobodyさん:2005/11/24(木) 12:44:27 ID:???
もしかしてDBにどうやって日付が格納されてるのか知らないのかこの馬鹿
840nobodyさん:2005/11/24(木) 12:56:22 ID:???
DBでやった方が遅いのか。。。。初めて知ったぞ

よければ遅くなる根拠となる資料さらしてくれませんか?
841nobodyさん:2005/11/24(木) 13:58:57 ID:???
>840
なんにも知らないんだなw
842nobodyさん:2005/11/24(木) 14:24:01 ID:???
>>841
レス番が間違ってるようだが?
843nobodyさん:2005/11/24(木) 14:53:18 ID:???
もう後に引けなくなっちゃったんだね。カワイソス。
844nobodyさん:2005/11/24(木) 15:07:38 ID:???
>>836
ありがとうございます。
解決しました。
845nobodyさん:2005/11/24(木) 15:35:44 ID:???
解決するなよw
846nobodyさん:2005/11/24(木) 15:58:11 ID:oCc1MCAs
>>840
よければPHPで処理した方が遅くなる根拠となる資料さらしてくれませんか?
847nobodyさん:2005/11/24(木) 16:00:01 ID:???
>>846
日本語わかる?
848841:2005/11/24(木) 16:07:44 ID:???
>846
ほんとですよね。

馬鹿の一つ覚えでDBで実行ですかw
ワロスワロス
849nobodyさん:2005/11/24(木) 16:52:06 ID:???
Select文で引っ張るときに変換するのが早いんじゃないのか?
850nobodyさん:2005/11/24(木) 19:32:49 ID:???
PostgreSQLのDBのオープンからクローズまでの
排他制御って保障されていますか?

DBのオープン
  ↓
テーブルから値をロード
  ↓
インクリメント
  ↓
テーブルに保存しなおす
  ↓
DBのクローズ

この間に別プロセスが割り込むような事はありますか?
851nobodyさん:2005/11/24(木) 19:44:24 ID:???
んなもんトランザクションかければええやん
852nobodyさん:2005/11/24(木) 20:45:03 ID:???
少しつつかれた位でなさけない奴だな
853nobodyさん:2005/11/25(金) 07:55:34 ID:???
特定のidをふったURL
http://xxx.xxx/index.php?no=1のうようなもの
をクリックして飛んできたかどうかをチェックして、
ログに残すにはどうしたらいいですか?
854nobodyさん:2005/11/25(金) 08:30:25 ID:???
URLが規定通りかチェック
 ↓
IDを取得
 ↓
ログに書き出し
こんな感じかしら?
855nobodyさん:2005/11/25(金) 09:23:04 ID:???
>>854
それだとURL直叩きでもカウントしちゃうんでない?
856853:2005/11/25(金) 09:34:23 ID:???
>854さん、>855さん
有り難うございます。

やりたいことは、
メールに、
http://xxx.xxx/index.php?no=***
(***以下はそれぞれ別の番号)

を記載して、
そのリンクを、クリックしたかどうかを判別したいんです。
857nobodyさん:2005/11/25(金) 09:46:24 ID:???
>>856
で、どこで先に進めなくなってるの?
基本的に>>854のようにやりたい事をどんどん細かく分割していって、
それがPHPの構文や関数にまで分割できたら、それで動作するプログラムになってるよ。
858nobodyさん:2005/11/25(金) 09:48:09 ID:???
んじゃまぁURL直叩きは許容範囲ってことでいいんかな。
番号の振り方を、パッと見では分からないようにしておいたほうがよさそうだね。
id部分をオリジナルのエンコード方法で暗号化しておいてPHP側でデコードするって感じかな。

整数番号を順番に振ってるだけだと、URL直叩きでの不正アクセスURLが簡単に想像できちゃうしね。
859853:2005/11/25(金) 09:52:03 ID:???
>>857
no=***
以下を書き出すことができないんです。
860858:2005/11/25(金) 09:53:12 ID:???
>>858
んじゃまぁURL直叩きは許容範囲ってことでいいんかな。

はい。それは、かまわないです。
861nobodyさん:2005/11/25(金) 09:58:03 ID:???
>>859
$_GET['no']
862nobodyさん:2005/11/25(金) 10:03:06 ID:???
書き出せないってのは

http://xxx.xxx/index.php?no=***のHTMLの「no=***」の部分が書き出せない のか
取得したID番号をログファイルに書き出せない のか
それともID番号が書き出し処理を行うPHP内部で取得できていない のか

どれ?
863nobodyさん:2005/11/25(金) 10:05:58 ID:???
セッションを使うのが一番簡単
864nobodyさん:2005/11/25(金) 11:17:15 ID:???
>>853

Apacheを使ってて、Apacheのログ設定をいじる権限を持っているのなら、
Apacheのログ書き出しを、環境変数使って制御するのが、手っ取り早いかも。

つまり
http://xxx.xxx/index.php?no=
を含むアクセスだけ、書き出したログを、現在の通常のログとは別に吐かせるとか。
そんなようなことを昔やってる例を聞いたことはあるので、できるとは思うが、細かい
ところは分からないので、方法はApache関係のスレで聞いてみると良いかと。
865nobodyさん:2005/11/25(金) 11:24:12 ID:5q1+9u/g
フォーム先のページは更新ボタン押すと再試行がでますが、
再試行しなくても更新できるようにできませんか?

更新ボタンをページ内に値を送るフォームにしようかと思ったんだけどよくわかりません。
866nobodyさん:2005/11/25(金) 11:39:19 ID:???
>>865
フォーム先つーか、POSTされたページを再読込する時には、
POSTしたデータを送信しなければならず、その際にはユーザに許可(再試行ダイアログ)を得なきゃいかん、
つーRFCがあったよーな。番号は忘れた。
POSTの処理が終わった後でheader("location: 〜")とか使って別のページをGETさせればよい。
867nobodyさん:2005/11/25(金) 12:15:43 ID:???
>>865
method="GET"
868865:2005/11/25(金) 12:32:19 ID:???
できました。どうもありがとうございました。
869812:2005/11/25(金) 13:19:25 ID:d0dndc1R
816さんできました、ありがとうございます。
それと、質問のしかたが悪いという指摘がありましたが、試したテンプレは
好意で公開してくれているようなモノだったので、詳細を省きました。
一応サイト管理者には質問のメールを出しましたが、回答がいつになるかわから
らかったので、ここで質問させてもらいました。
870nobodyさん:2005/11/25(金) 13:25:04 ID:???
>>869
おまえ、つくづくアホだな。もう来るなよ。
871nobodyさん:2005/11/25(金) 13:49:17 ID:???
質問させてください
実行してるファイルのURLのフルパスを調べるにはどうしたらいいでしょうか?
872nobodyさん:2005/11/25(金) 13:52:45 ID:???
>>871
・マニュアルを調べたか、google検索したか(調べたキーワード)
873nobodyさん:2005/11/25(金) 13:53:39 ID:???
>871
getFulltin("FULL_PATH");

>872
知らないならすっこんでろよ
874nobodyさん:2005/11/25(金) 13:57:29 ID:???
>>871
872のいうことももっともだが、
ま、一度phpinfo()でも実行してみろ。
875871:2005/11/25(金) 14:03:58 ID:???
ええと、サーバーのフルパスはわかるのですが
URL(アドレス)のフルパス
強いて言えばhttpなのかhttpsなのかが知りたい。のです。
876nobodyさん:2005/11/25(金) 14:05:40 ID:???
とりあえずだな、マニュアルも読まない、自分で検索もしないバカは
くだスレに行けってことだ。
877871:2005/11/25(金) 14:09:10 ID:???
すみません
解決しました・・・
878871:2005/11/25(金) 14:09:12 ID:???
>876
だ〜か〜ら〜、ここで調べてるんじゃないですか。
知らないのならだまっててください。

>873
すみませんエラーになってしまいます。
もう少し、ご教授ください。
879871:2005/11/25(金) 14:13:27 ID:???
>>878
僕の名を語って発言しないで。。。
880nobodyさん:2005/11/25(金) 14:15:54 ID:???
>>871
httpかhttpsかは$_SERVER["SERVER_PROTOCOL"]をチェック。
ホスト名+ポートはHTTP_HOSTでもいいがHost:を送らないお馬鹿なブラウザにも対応したいならSERVER_NAMEとSERVER_PORTで。
あとはREQUEST_URIをつなげてやればよさげ。
881nobodyさん:2005/11/25(金) 14:16:08 ID:???
getFulltinが使えないみたいなんですけど
882nobodyさん:2005/11/25(金) 14:16:10 ID:???
>871
てかよ〜
解決したんならどう解決したのか書けよ
つくづく自分勝手なやつだな”お前”はよ!!!
883nobodyさん:2005/11/25(金) 14:17:49 ID:???
>>881
使えないときのエラーメッセージはなんだった?w
884871:2005/11/25(金) 14:20:14 ID:???
マニュアル読めだの
googleで調べた検索キーワード言えだの言われたら

おしえる気にもなりません
885881:2005/11/25(金) 14:20:21 ID:???
NullPointerExtension
って表示されてます orz
886nobodyさん:2005/11/25(金) 14:21:33 ID:???
>>883
こうですぅ
Fatal error: Call to undefined function getFulltin() in - on line 1
887nobodyさん:2005/11/25(金) 14:23:43 ID:???
>>884
そういうのだけは一人前だな。
888nobodyさん:2005/11/25(金) 14:24:13 ID:???
>>886
書いてある通りだろw
889nobodyさん:2005/11/25(金) 14:25:06 ID:???
>886
ヒント: extensions
890nobodyさん:2005/11/25(金) 14:25:43 ID:???
>>888
どうしたら使えるようになりますか?
891871:2005/11/25(金) 14:27:47 ID:???
ヒント:getFulltinなんてどうやっても使えないよ
892nobodyさん:2005/11/25(金) 14:29:11 ID:???
げっとふるてぃん?
893nobodyさん:2005/11/25(金) 14:29:16 ID:???
>891
また、無様な喪前かw
extensions で出来るんだよ。
どうやっても使えないとか嘘書くな。
894nobodyさん:2005/11/25(金) 14:37:52 ID:0/Y2pKf/
ふるちん
895nobodyさん:2005/11/25(金) 14:39:30 ID:???
フルチン ブ〜ラブ〜ラ♪
896nobodyさん:2005/11/25(金) 14:40:49 ID:???
>>893
なんていうextensionsか教えてください
おねがいします
897893:2005/11/25(金) 14:43:12 ID:???
>896
答え: 872, 876
898nobodyさん:2005/11/25(金) 14:45:02 ID:???
>>896
つかgetFu..をぐぐってみろよw
899nobodyさん:2005/11/25(金) 14:52:41 ID:???
飽きてきた
900nobodyさん:2005/11/25(金) 14:55:32 ID:???
おまんこ(><)
901nobodyさん:2005/11/25(金) 15:03:37 ID:???
Eclipse2.0で使えるphpEclipseってありますか?
902nobodyさん:2005/11/25(金) 15:04:09 ID:???
PHPってEUCで書く事が前提ですよね。

携帯用のサイトを作りたくて、
出力をShift_JISにしたいんですが
どうするのが一番スマートでしょうか。

誰かお願いします。
903nobodyさん:2005/11/25(金) 15:07:09 ID:???
>>902
EUCで書いて、Shift_JISで出力する。
904nobodyさん:2005/11/25(金) 15:10:25 ID:cPOkvRIi
文字コード変換すると消える場合も有るけどな(w
905nobodyさん:2005/11/25(金) 15:11:02 ID:???
>>902
スクリプトはeucで書いてhttp出力はshift-jisにしてみてはどうでしょう?
マルチバイト関数あたりに詳しく書いてあります。
906nobodyさん:2005/11/25(金) 15:12:48 ID:???
>>902
> PHPってEUCで書く事が前提ですよね。

まじで?
907nobodyさん:2005/11/25(金) 15:14:44 ID:P+tdb1H/
>901
あるお

>906
なんも知らん奴だなw
908nobodyさん:2005/11/25(金) 15:16:42 ID:???
UTF8で書いてます。
909nobodyさん:2005/11/25(金) 15:24:24 ID:???
>>907
僕もUTF-8なんですが、そういった情報はどこにありますか?
910nobodyさん:2005/11/25(金) 15:27:07 ID:???
>>905
mb_convert_encodingの存在はしっていますが、
もしかしてこれの事を言ってたりしますか?

出力の各行ごとにこの関数をかますのは
ちょっとスマートではないなあと思ったもので。
911nobodyさん:2005/11/25(金) 15:30:09 ID:???
>>910
php.ini
912nobodyさん:2005/11/25(金) 15:30:47 ID:???
すいません解決しました
913nobodyさん:2005/11/25(金) 15:36:09 ID:???
誰だよおまい
914nobodyさん:2005/11/25(金) 15:36:57 ID:???
おれだよ、おれ
915nobodyさん:2005/11/25(金) 15:41:16 ID:???
よ、久しぶり
916nobodyさん:2005/11/25(金) 15:47:52 ID:???
超期待してDoCoMo絵文字をUTF-8/16に変換したら化けた。ウボァー
絵文字変換テラムズス
917nobodyさん:2005/11/25(金) 15:57:46 ID:???
ドコモとauは変換元エンコーディングをCP932にすれば楽勝。
ボーダフォンは鬱になるけど。
918nobodyさん:2005/11/25(金) 16:00:41 ID:???
>>907
探してみたけど、ここでダウンロード出来ますか?
ttp://www.phpeclipse.de/tiki-index.php?page=PHPeclipse+Installation+for+Eclipse+2.1

リンクが見当たらない…。
sourceのsnapShotって何ですかね?
919nobodyさん:2005/11/25(金) 16:26:35 ID:???
あにょ
5.1出たけど、使ってみた感じどうですか?
920nobodyさん:2005/11/25(金) 16:52:06 ID:???
>>919
PDOで重いPEAR::DB使わなくてすむ
921nobodyさん:2005/11/25(金) 19:22:06 ID:???
>>902
mbstring.script_encoding
922nobodyさん:2005/11/25(金) 19:28:29 ID:???
特定の日付の○ヶ月後を求める処理がどうしてもうまくいかないので質問させてください。
PHP4.3とmysqlを使用しています。

全体の流れとしては、請求予定日(年,月,日)を選択して、さらに支払いの選択(当月0,翌月1,翌々月2)をします。
最終的にDBに書込む日付は請求予定日に支払いの選択で選択した値を足したものにしたいと考えています。

$transfer = $_POST["transfer"];
で、月を進めたい数を取得しています。(0,1,2のみ)

$transfer_m = mktime(0,0,0,$claim_m + $transfer);
$transfer_fin = date("Y-m-d",$transfer_m);
こんな感じで、タイムスタンプにして、足してみたのですが、年を繰り越してくれなかったりします。
$claim_mというのは、請求予定日の月の値です。

どなたかご享受ください。
923nobodyさん:2005/11/25(金) 19:31:32 ID:???
>>922
きょう‐じゅ〔キヤウ‐〕【享受】
[名](スル)受け入れて自分のものとすること。受け入れて、味わい楽しむこと。
924nobodyさん:2005/11/25(金) 19:41:49 ID:???
>>922
つか、mkdateに年のパラメーターわたしてないじゃん。
それに、単純に足したら$claim_mが12で、$transferが2だったら、
14になるでしょうに。
そういうところを考えてみたら?
925nobodyさん:2005/11/25(金) 20:10:51 ID:???
>>922
>>mktime
>>引数は右から順に省略することができます。省略された引数は、 ローカルの日付と時刻に従って、現在の値にセットされます。

請求予定日が今月じゃないんだろ?ケチらずにセットしろや
$transfer_m = mktime(0,0,0,$claim_m + $transfer, $claim_d, $claim_y);
月が14になってもだいじょうぶ
926nobodyさん:2005/11/25(金) 20:11:24 ID:???
>>922
とりあえずマニュアル嫁
つ[strtotime]
927922:2005/11/25(金) 20:18:15 ID:???
みなさんありがとうございます。
>>925さんの書いた通りで、ばっちりできてしまいました。
お騒がせしました。ありがとうございます。
928nobodyさん:2005/11/25(金) 20:19:33 ID:???
マニュアルって本になってないの?
モニタで読むの疲れる。
929nobodyさん:2005/11/25(金) 20:32:17 ID:???
>>926
ありがとうございます。
解決しました。
930nobodyさん:2005/11/25(金) 20:33:21 ID:???
解決するなよw
931nobodyさん:2005/11/25(金) 21:51:39 ID:???
>>928
印刷しろ
932nobodyさん:2005/11/25(金) 21:58:49 ID:???
php4の出始めの頃は本の半分くらいをマニュアルに費やしていたものが
結構多かった気がするが、最近はそうでもないのかな?
というか、もれの訳した部分の印税をくれ... orz
933nobodyさん:2005/11/25(金) 22:00:08 ID:???
リファレンス系はあいかわらずマニュアルの採録だろ
海外のはどうかしらんが
934nobodyさん:2005/11/25(金) 22:02:47 ID:???
紙のマニュアルはすぐ古くなるから無駄
ってマニュアルには書いてあるな
935nobodyさん:2005/11/25(金) 23:09:32 ID:???
PHPバージョンアップしてみた!!
Warning: mktime() expects parameter 4 to be long, string given in path
というエラーが4つ目のパラメータって「25」だけど何でだ・・・
936nobodyさん:2005/11/25(金) 23:15:30 ID:???
マニュアルって訳してるやつがヴァカだから読みにくい
937nobodyさん:2005/11/25(金) 23:19:37 ID:???
>>934
それはそれで趣があっていいよ
938nobodyさん:2005/11/25(金) 23:20:06 ID:???
PDOはまだ実験的モジュールなんだね

ttp://www.php.net/manual/ja/ref.pdo.php
939nobodyさん:2005/11/25(金) 23:20:48 ID:???
>>935
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
四つ目は何でしよう?
940名無し募集中。。。:2005/11/25(金) 23:24:25 ID:???
941nobodyさん:2005/11/25(金) 23:25:58 ID:???
>>939
0から数えてdayだよね?
1から数えるのか・・月か(--;
前のバージョンの時は普通に動いてたんだけどなぁ
942941:2005/11/25(金) 23:31:59 ID:???
>>939
直りました(^^;ありがとうございます。
5.1.0はNovだと変換してくれなくなったみたいですね。
943nobodyさん:2005/11/26(土) 07:44:30 ID:???
>>938
翻訳が追いつかないのですよ
ttp://www.php.net/manual/en/ref.pdo.php
944nobodyさん:2005/11/26(土) 08:34:30 ID:???
>>940
needleとheystackの順番でいつもマニュアル確認するんだよね。
関数作るときに統一して欲しかった。
945nobodyさん:2005/11/26(土) 11:09:59 ID:???
PDOって結局さ・・・DB別にあった関数を1つの関数にまとめただけだよね?
最初はPDO独自に統一した書式を用いてPDOで指定したデータベース用に
自動変換してくれるのかと想った・・・



946nobodyさん:2005/11/26(土) 11:39:30 ID:???
PDOよりもPDOでないSQLite3モジュールを標準で入れて欲しいよ。
947nobodyさん:2005/11/26(土) 12:15:11 ID:???
PDOの利点って何ですか?
PEARで済むような気がするんですが。
948nobodyさん:2005/11/26(土) 12:24:56 ID:???
>>947
PEARを使わなくてもPDOで済む
ってのが利点だわなwww
949nobodyさん:2005/11/26(土) 12:42:13 ID:etbGZx3w
rand()は必ずランダムな数を返すと考えても問題ありませんか?
950nobodyさん:2005/11/26(土) 12:43:48 ID:???
>>947
PEARよりは明らかに軽くて速いだろう
951nobodyさん:2005/11/26(土) 13:01:45 ID:???
>>917
sugeeeeeeeeeeeeeeeeee!!!!
SJIS→CP932で化けなくなりました!
ありがとうございます神様!
952nobodyさん:2005/11/26(土) 13:02:21 ID:???
>>950
なるへそ
953nobodyさん:2005/11/26(土) 13:30:34 ID:???
>>949
「『必ず』ランダムな値を返す」とは限りません
使用状況にもよるけど、少なくとも「必ず」ではありません
ランダムと考えても差し支えない値は返しますが。
詳しくはコンピュータで生成する乱数に付いての文献を参照すると良いかと

ただ、スクリプトの組み方によっては毎回同じ値を返すこともありますが
これは論外と言う事で
954nobodyさん:2005/11/26(土) 15:06:35 ID:???
PostgreSQLのtimestamp型の値を消去したいんですが、
update table_name set time = ''
だと構文エラーが出ました
どうすればいいんでしょうか。
955nobodyさん:2005/11/26(土) 15:21:52 ID:???
>>954
それのどこがPHPの質問なんだ?
956nobodyさん:2005/11/26(土) 15:24:30 ID:???
''は文字列でんがな。
NULLでいいんでないの?
957956:2005/11/26(土) 15:24:55 ID:???
うは、PHPのしつもんじゃねーじゃんっ
958nobodyさん:2005/11/26(土) 15:26:00 ID:???
PHPとphp、どっちが正しい表記ですか?
ジャバはJava(TM)らしいですが
959nobodyさん:2005/11/26(土) 15:29:03 ID:???
>>958
http://www.php.net/
みる限りはPHPじゃないかと。
960nobodyさん:2005/11/26(土) 15:29:28 ID:???
>>956
ありがとうございました。
できました。
961nobodyさん:2005/11/26(土) 15:38:26 ID:???
>>959
でもこれはphpなんだよなw
http://static.php.net/www.php.net/images/php.gif
962nobodyさん:2005/11/26(土) 17:19:02 ID:s+fJvnn4
mysql_fetch_row と mysql_fetch_array
はどっちが高速に処理できますか?
963nobodyさん:2005/11/26(土) 17:44:36 ID:???
>>961
それはあくまでも意匠だから。
ま、商標はとってないと思うけど。
964nobodyさん:2005/11/26(土) 18:14:17 ID:???
>>962
row

だが、そんな事は、アプリケーション作ってみて”遅かったら”考えな。
普通は、”気にする必要”なんざ無い。

つう事でarray使っとけ。objectなんかも便利だぞ。
965nobodyさん:2005/11/26(土) 18:18:15 ID:???
どっち使ってもアプリ全体からすれば微々たる差だったりするしね。
それなら便利な方を使えばいい。
966nobodyさん:2005/11/26(土) 19:02:47 ID:???
mysql_fetch_arrayにもMYSQL_ASSOCとMYSQL_NUMとMYSQL_BOTH があって(ry
967nobodyさん:2005/11/26(土) 19:27:18 ID:???
968nobodyさん:2005/11/26(土) 21:28:39 ID:IDnBQloT
array_uniqueした後の配列の形
[0]=>"apple"
[1]=>"apple"
[2]=>"apple"
[3]=>"orange"
[4]=>"orange"
だと
[0]=>"apple"
[3]=>"orange"
ってなるけど
[0]=>"apple"
[1]=>"orange"
ってするのに便利な方法はありますか?
969nobodyさん:2005/11/26(土) 21:32:47 ID:???
PHP5.0.5でmp3のID3を取得するにはどうすればよいでしょうか?
というか、できますか?
970nobodyさん:2005/11/26(土) 21:34:31 ID:???
すいません、検索しながら質問したんですが、それっぽいものを見つけました。
おじゃましました…
971nobodyさん:2005/11/26(土) 21:42:43 ID:???
>968
keyでソートしてvalueを新しい配列に1つずつ突っ込む
972nobodyさん:2005/11/26(土) 21:51:40 ID:???
>>968
その例だとキーを持っていないのだから、array_uniqueの後にarray_valuesを呼べばいいんじゃない?

$a = array('apple', 'apple', 'apple', 'orange', 'orange');
$b = array_values(array_unique($a));
print_r($b);
973nobodyさん:2005/11/26(土) 22:13:44 ID:7JFl6nk6
ブラウザでボタンが押されたときにインポートや集計処理を行いたいのですが、
かなり重いためタイムアウトを起こしてしまいます。
execで集計用PHPを呼んでも、処理が終わるまで次のページが表示されないのですが
完全に裏で、現在のブラウザでの読み込みとは切り離した形で、この処理を走らせることはできますでしょうか?
最悪、set_time_limit( 0 )でタイムアウトを消すことも考えていますが、
できれば
ボタンを押す---→「集計中、しばらくお待ちください」ページ表示
         →表示用PHPとは切り離された集計処理実行
のようなことをしたいです。
974nobodyさん:2005/11/26(土) 22:16:02 ID:???
まず処理が軽くなるような工夫を模索する
975nobodyさん:2005/11/26(土) 22:30:16 ID:???
>>973
マニュアル読め
976968:2005/11/26(土) 22:30:37 ID:???
>>971
>>972
サンクスです!
array_valuesって使えない関数だと思ってたらそう言う使い方があったんですね。
977nobodyさん:2005/11/26(土) 22:32:49 ID:???
>>973
ググれ
978nobodyさん:2005/11/26(土) 22:35:45 ID:???
ググれば
979nobodyさん:2005/11/26(土) 22:37:49 ID:???
>>973
>execで集計用PHPを呼んでも、処理が終わるまで次のページが表示されないのですが
それが間違ってるよ。exec関数が悪いのじゃなくて、execで実行している命令文が悪い。
命令文がちゃんとなってれば、処理をサーバに丸投げ出来るよ。
くだスレじゃなくてこっちに投げてるので答えは言わない。
あとは頑張ってググれ。
980nobodyさん:2005/11/26(土) 22:41:17 ID:???
ごみくず解答乙
981nobodyさん:2005/11/26(土) 22:42:16 ID:???
そろそろ次スレが欲しいじゃないかな
982nobodyさん:2005/11/26(土) 22:44:04 ID:???
もう1000な季節になったのか。
983973:2005/11/26(土) 22:48:05 ID:7JFl6nk6
>>974
処理を軽くすればどうにかなるようなデータ量と構成じゃないのでもうあきらめてます。

>>975-979
調べてみてexecで何とかなるとでたけど、実際やってみると
execの中の処理が終わるまでブラウザも読み込み中のままだったから、
ほかに何かあるかと思って書き込みましたが、やり方が悪かったみたいですね。
もう少し愚具ってやり直してみます。
984nobodyさん:2005/11/26(土) 22:51:10 ID:???
あのー
もしかしてー
駄洒落ですか?
985973:2005/11/26(土) 22:58:07 ID:???
ただたんに変換ミスです、意味はないです。
execのマニュアル読み直してみましたが、「注意」のほうで裏でのやり方書いてありました。
"> /dev/null"あたりをくわえればいいんですね
986nobodyさん:2005/11/26(土) 23:11:03 ID:???
これでしょ駄洒落>>982
νスレマダー?(・∀・ )っ/凵⌒☆
987nobodyさん:2005/11/26(土) 23:13:05 ID:???
栓ならZEND買収
988nobodyさん:2005/11/26(土) 23:14:32 ID:???
>>980
なんだそのウンコレスは・・・・。

>>985
正解だぉ
989nobodyさん:2005/11/26(土) 23:16:21 ID:???
999ならマシンボデー
990nobodyさん:2005/11/26(土) 23:20:25 ID:???
>>988
何の役にも立たず無駄にリソースを消費するものをごみというんだ
分かるな? チラシの裏にめもっておくといいぞ
991nobodyさん:2005/11/26(土) 23:21:10 ID:???
まだ埋めるな
992nobodyさん:2005/11/26(土) 23:21:41 ID:RrZMXKgC
ume
993nobodyさん:2005/11/26(土) 23:23:30 ID:???
次はくだスレでお会いしましょう。。
994nobodyさん:2005/11/26(土) 23:23:59 ID:???
埋まりそうw
995nobodyさん:2005/11/26(土) 23:25:55 ID:???
スレ立ておつ
996nobodyさん:2005/11/26(土) 23:30:00 ID:???

│┌─┐
│└→|
└──┘
   ∧∧  ?
   (,,゚Д゚)
  /  |  
〜OUUつ
997nobodyさん:2005/11/26(土) 23:46:49 ID:???
ERROR:新このホストでは、しばらく(ry

orz
998nobodyさん:2005/11/26(土) 23:52:17 ID:???
|д゜)・・・998
999nobodyさん:2005/11/26(土) 23:53:19 ID:???
俺も無理だった。↓のやつお願い。
1000nobodyさん:2005/11/27(日) 00:07:44 ID:eBvjdczp
【PHP】質問スレッドpart31【php】
http://pc8.2ch.net/test/read.cgi/php/1133017632/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。