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

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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html

2 :1様:2007/02/22(木) 22:39:19 ID:???
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
【PHP】下らねぇ質問はここに書き込みやがれ 34
http://pc8.2ch.net/test/read.cgi/php/1165519374/
【PHP】下らねぇ質問はここに書き込みやがれ 35
http://pc10.2ch.net/test/read.cgi/php/1166676139/
【PHP】下らねぇ質問はここに書き込みやがれ 36
http://pc10.2ch.net/test/read.cgi/php/1168395610/
【PHP】下らねぇ質問はここに書き込みやがれ 37
http://pc10.2ch.net/test/read.cgi/php/1169644229/
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/

3 :1様:2007/02/22(木) 22:40:36 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

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

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

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

6 :nobodyさん:2007/02/22(木) 22:48:33 ID:???
乙鰈

7 :nobodyさん:2007/02/22(木) 22:54:32 ID:DRqW6V/h
PHPで画像にExif情報って書き込めますか?
Exifじゃなくてもコメントみたいなのを書き込められればいいんですが。

8 :nobodyさん:2007/02/23(金) 00:24:55 ID:kn9G5EQ+
table hoge
seq type
1  a
1  b
2  b
3  a
3  a
4  a

MySQLと絡めた質問なのですが、上のようなデータが格納されていたとき、
GROUPした後のseqの数(上の場合だと4)を取得したいのですが、どのようにすればいいでしょうか?
SELECT COUNT(*) FROM `hoge` WHERE `type`='a' GROUP BY `seq`
これではできませんでした。
このクエリをcountした数を現在は取得しています

9 :nobodyさん:2007/02/23(金) 00:26:39 ID:???
UTF-8だとたまにメールが文字化けします。
なぜでしょうか?

10 :nobodyさん:2007/02/23(金) 00:32:41 ID:???
>>8
PHPの質問なので sort ですね。

11 :nobodyさん:2007/02/23(金) 00:35:50 ID:awTHtUaF
初代PHP質問スレの過去ログURL教えてください。
昔の人がどんなことで悩んでいたのか勉強したいんです。
よろしくおねがいします。


12 :nobodyさん:2007/02/23(金) 00:37:28 ID:???
>>9はネタなのでスルーおながいします。
IDださないで質問する態度は釣りにしかみえない。

13 :nobodyさん:2007/02/23(金) 00:53:31 ID:DxH8hg7x
>>前972
>見た目に関するロジックは全部Smarty側でやってる。
>(htmlspecialcharsみたいなエスケープとかは除く)
そういう表示にのみ関係する処理こそSmartyで。
{$foo|escape:"html"}

14 :nobodyさん:2007/02/23(金) 00:56:27 ID:???
現在、
$a = "aaa\n";
$a .= "bbb\n";
$a .= "ccc\n";
の様な記述で、変数に複数行を代入しています。

質問なのですが、Perlの
$a=<<"EOB";
aaaa
bbbb
ccc
ddd
EOB
の様に、変数に複数行を一度に代入する方法はありませんか?

15 :14:2007/02/23(金) 00:58:21 ID:???
自己解決しました。

16 :nobodyさん:2007/02/23(金) 00:59:40 ID:mvdvT2ju
$s_id = "guest";
$s_pw = "guest";

この状態で

SELECT * FROM account WHERE id='$s_id', pass='$s_pw'

を実行すると

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass='guest'' at line 1

というエラーが発生します。

idもguestもあるのになぜこのようなエラーが出てしまうのでしょうか?

17 :16:2007/02/23(金) 01:00:50 ID:mvdvT2ju
追記です。
PHP 5.1.4
MySQL 5.0
WindowsXP

18 :nobodyさん:2007/02/23(金) 01:13:29 ID:???
exciteで訳せ

19 :nobodyさん:2007/02/23(金) 01:14:06 ID:???
>>16
ちゃんとしたコードだせ

20 :nobodyさん:2007/02/23(金) 01:16:57 ID:mvdvT2ju
合っていると思うのですが・・・
バグですかね?

21 :nobodyさん:2007/02/23(金) 01:38:23 ID:???
phpファイルの1行目にミスがあるだけだろw

22 :nobodyさん:2007/02/23(金) 01:41:55 ID:mvdvT2ju
>>21
特にそれらしいものは見つかりません。

23 :nobodyさん:2007/02/23(金) 01:43:16 ID:???
' pass='guest'' at line 1
    ↑なぜシングル?

24 :nobodyさん:2007/02/23(金) 01:43:58 ID:???
$s_id = "guest";
$s_pw = "guest";

こう書いてないで
$s_id = "guest";
$s_pw = 'guest";  ←こうやってないか?

25 :nobodyさん:2007/02/23(金) 01:46:01 ID:mvdvT2ju
>>23
$sql = "SELECT * FROM account WHERE id='$s_id', pass='$s_pw'";
だからです

26 :nobodyさん:2007/02/23(金) 01:48:46 ID:mvdvT2ju
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "root";
$dbName = "name";

function Do_MySQL($sql){
    global $dbHost,$dbUser,$dbPass,$dbName;

    $dbHandle = mysql_connect($dbHost,$dbUser,$dbPass);
    if ($dbHandle == False) {
        print ("#can not connect db\n");
        exit;
    }

    $dbLocate = mysql_select_db($dbName);
    if ($dbLocate == False) {
        print ("#can not connect db2\n");
        exit;
    }
    $result = mysql_query($sql);
    echo mysql_error();      ←ここでエラーを吐き出しています。
    mysql_close($dbHandle);
    return $result;
}
$s_id = "guest";
$s_pw = "guest";
$result = Do_MySQL("SELECT * FROM account WHERE id='$s_id', pass='$s_pw'");

正確にはこのように実行しています。

27 :nobodyさん:2007/02/23(金) 01:49:22 ID:mvdvT2ju
>>24
ダブルクォーテーションで囲っています。

28 :nobodyさん:2007/02/23(金) 01:58:20 ID:???
SELECT * FROM account

だけでやったらどうなる?

29 :nobodyさん:2007/02/23(金) 02:14:39 ID:???
つーかさ
WHERE id='$s_id' AND pass='$s_pw'

30 :nobodyさん:2007/02/23(金) 02:29:37 ID:???
SELECT * FROM account WHERE id='$s_id' AND pass='$s_pw'

カンマとかふざけてるのかと

31 :nobodyさん:2007/02/23(金) 04:48:20 ID:???
>>26
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "root";
$dbName = "name";
ここらへんは普通定数にしないか?
そしたらglobalなんてやる必要もないし。

32 :nobodyさん:2007/02/23(金) 04:55:38 ID:???
普通は定数にすべきじゃないけどな

33 :nobodyさん:2007/02/23(金) 05:34:19 ID:???
全部引数でいいよもう

34 :nobodyさん:2007/02/23(金) 06:28:51 ID:???
>>8
http://dev.mysql.com/doc/refman/4.1/ja/select.html
にあるSQL_CALC_FOUND_ROWSの説明を見るよろし。

35 :nobodyさん:2007/02/23(金) 08:27:49 ID:???
PHPの勉強に簡単な掲示板のプログラムを作っています。
mysql> CREATE TABLE KIJI(
-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
-> name VARCHAR(50),
-> mail VARCHAR(50),
-> naiyou VARCHAR(50),
-> PRIMARY KEY(id));

この様なテーブルがあって、ここから記事一覧を取得しようとしているのですが、
Fatal error: Call to a member function query() on a non-object in C:\Program Files\xampp\htdocs\sample_bbs\bbs.php on line 14
となってしまいます。
何かアドバイスいただけませんか?
--ソース抜粋--
$sql = <<<EOS
select id,namae,mail,naiyou from kiji
EOS;

//クエリ実行
$result = $con->query($sql);//ここが14行目
--ここまで--

環境:WindowsXP,XAMPP最新版

36 :nobodyさん:2007/02/23(金) 08:29:46 ID:???
ドンマイ

37 :35:2007/02/23(金) 08:55:48 ID:AmbF/Hk9
どうやらコネクション周りに問題があるようです。PEAR接続とmysql_connect接続とが混同されているのが問題みたいです。勉強してきます。

38 :虚弱PHP:2007/02/23(金) 09:18:26 ID:???
>>13
そういうのサニタイズ脳だと思うんだ。
いや、別にdefault_modifiers使ってもいいんだけど、
オレオレフレームワークの思想で、
ViewオブジェクトでSmartyアサイン直前にやってるの。

39 :nobodyさん:2007/02/23(金) 11:52:49 ID:???
>>35
クラスがインスタンス化されてないんじゃ

40 :nobodyさん:2007/02/23(金) 11:56:27 ID:???
>>39
インスタンス化されているけど、
コンストラクタがデフォルトになっているんじゃないか?

41 :nobodyさん:2007/02/23(金) 12:30:57 ID:???
>>9
メール処理じゃないけど、UTF-8とUTF-8Nの違いを知らなくて、どえらい悪戦苦闘したことがありました。
それ以来、PHPのスクリプトファイルは、UTF-8Nで保存するように意識しています。
UTFの「BOM」が邪魔してるって可能性は?


42 :nobodyさん:2007/02/23(金) 12:47:23 ID:???
>>26
SQL文を組み立てるときの処理についてですが、
SQLインジェクション対策として、プリペアードステートメント、プレースホルダーという仕組を利用した方がいいと思います。
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01.html

SQL文をプレースホルダー(=「?」)を使って、簡単にエスケープする関数が、PHPオンラインマニュアルで紹介されているから参考にされてみてください。
http://php.benscom.com/manual/ja/function.mysql-query.php
↑$phsにプレースホルダーに対応する文字列を配列で渡して使うようです。

43 :42:2007/02/23(金) 12:55:11 ID:???
>>26
あれ?URLが違ってた。

http://www.php.net/manual/ja/function.mysql-query.php#70686

function mysql_prepare ($query, $phs = array())を以下のように使います。

$s_id = "guest";
$s_pw = "guest";

$sql = "SELECT * FROM account WHERE id = ? AND pass = ?";
$phs = array($s_id, $s_pw);
$sql_prepare = mysql_prepare($sql, $phs);

$result = Do_MySQL($sql_prepare);

44 :nobodyさん:2007/02/23(金) 13:04:51 ID:???
>>38
出力するデータをどこでエスケープするか?
Smartyに渡す直前の段階でエスケープした値を、Smartyに渡すのが良いと思う。
テンプレートファイルに処理(ロジック)が乗っかっているのは、保守性が中途半端になりそうな予感。
テンプレートファイルは、DreamweaverでデザインをいじることだけできればOK

45 :nobodyさん:2007/02/23(金) 14:37:52 ID:???
mysqlでdeleteするときにjoinってできないんですか?

46 :虚弱PHP:2007/02/23(金) 14:51:30 ID:???
>>45
そういえばdeleteでjoinやったことないなぁ。
where句で繋げばいいんじゃない?

47 :nobodyさん:2007/02/23(金) 15:02:56 ID:???
MySQLにはFKがないからDELETEのJOINはないんじゃない?

48 :nobodyさん:2007/02/23(金) 15:19:41 ID:X1ZVe2VS
質問です。
複数の画像をアップロードするコードを書いたのですが、
長辺が1500px超える画像をアップするとうまく動きません。

photoshopで1600*1200の真っ白なファイル(76kb)をアップロードするとエラーになり、デジカメで撮影した1280*960の画像(250kb)をアップロードすると、普通にアップできます。

GDを使ってリサイズする処理が途中に入るのですが、その辺が原因でしょうか?

レンタルサーバでphp.iniでmemory_limitを16Mにしています。

よろしくお願いします。

49 :nobodyさん:2007/02/23(金) 15:28:18 ID:???
>>41
BOMなしで保存してます
が、たまに文字化けしてしまいます
ttp://www.res-system.com/item/500
この辺を読んでみたのですがUTF-8のメールで
文字化け自体は直らないことなのでしょうか?


50 :nobodyさん:2007/02/23(金) 15:40:02 ID:???
>>48
GDで画像処理はかなりメモリ食うからそうかもね
1600*1200だと32ビットカラーにしても8Mバイトになるからね
memory_limitあげたらいいんじゃないの


51 :nobodyさん:2007/02/23(金) 15:50:25 ID:ynqfDxVO
メールを配信するとき
UTF8からISO-2202-JPに変換する場合はmb_convert_encoding
で行うと変換できない文字でメールが切れてしまうのですが
日本語のメールを配信する場合、mb_convert_encodingを使って
変換するのが一般的なのでしょうか?
なにかよいライブラリがありましたら紹介していただけないでしょうか?



52 :nobodyさん:2007/02/23(金) 15:55:18 ID:qX2geE0Z
age

53 :nobodyさん:2007/02/23(金) 16:02:23 ID:???
>>47
JOINしたテーブルの値を条件としたDELETEとか出来ますよ。
JOIN先のテーブルの値は無理だけど、
適宜CASCADEとかでリレーション貼っておけば一緒に消えますね。

54 :nobodyさん:2007/02/23(金) 16:29:05 ID:???
>>53
どうやればいいんですか?
select * from table1 natural join table2 where table2.id = 10
でヒットするレコードを消すために
delete from table1 natural join table2 where table2.id = 10
と実行してみたのですが構文エラーが出て消せないんですよ


55 :nobodyさん:2007/02/23(金) 16:32:34 ID:???
>>54
LEFT JOJN

56 :nobodyさん:2007/02/23(金) 17:24:19 ID:???
left joinでも同じですね

57 :nobodyさん:2007/02/23(金) 18:23:22 ID:???
マニュアル読んだけどやっぱりInnoDBでFKつけないと無理じゃん。
delete join なんて聞いたことないしな。

58 :nobodyさん:2007/02/23(金) 18:28:52 ID:???
>>55
それ、なんていう命令?

59 :虚弱PHP:2007/02/23(金) 19:01:40 ID:???
delete from table1, table2 where table2.id=10 and table1.id=table2.id;
みたいな感じで行けないの?

60 :nobodyさん:2007/02/23(金) 20:20:02 ID:mvdvT2ju
携帯の固有IDを取得する方法とかないですか?
モバゲーのように自動的にログインさせたいのですが、
何か方法などはないのでしょうか・・・。

61 :nobodyさん:2007/02/23(金) 20:31:10 ID:???
>>60
http://pc10.2ch.net/test/read.cgi/hp/1141800196/l50

62 :nobodyさん:2007/02/23(金) 20:37:34 ID:mvdvT2ju
>>61
いってきます

63 :nobodyさん:2007/02/23(金) 20:43:31 ID:???
for($_SERVER as $key => $value){
echo "[".$key."] = ".$value."<br>\n";
}

これで一気に書き出せると思ったが無理だったorz

64 :nobodyさん:2007/02/23(金) 20:52:18 ID:???
forじゃ無理だろうそりゃ

65 :nobodyさん:2007/02/23(金) 20:56:00 ID:???
var_dump($_SERVER);
とか言って見るテスト

66 :nobodyさん:2007/02/23(金) 21:03:50 ID:mvdvT2ju
foreachと間違えてたwwwサーセンwwww

携帯でアクセスして、foreachでまわしたときは、
[HTTP_X_UP_SUMBO] = 携帯固定ID
が表示されたのですが、
直接 echo $_SERVER['HTTP_X_UP_SUMBO'];
だとページが表示されないのはなぜなのでしょうか・・・?

67 :nobodyさん:2007/02/23(金) 21:32:32 ID:???
>>66
スレ違い
ここは初心者が集まる全員初心者スレだ


68 :nobodyさん:2007/02/23(金) 21:34:10 ID:???
HTTP_X_UP_SUBNOじゃないかね

69 :nobodyさん:2007/02/23(金) 21:34:31 ID:???
>>66
ソース見してみ?

70 :66:2007/02/23(金) 21:42:15 ID:mvdvT2ju
>>67
俺も実務経験なしの初心者です

>>68
echo $_SERVER['HTTP_X_UP_SUBNO'];
にすると、「リクエストされたページは表示できません。」と出ます。

>>69
ソースは
<?
echo $_SERVER['HTTP_X_UP_SUBNO'];
?>
だけです。



71 :nobodyさん:2007/02/23(金) 21:47:35 ID:???
<? 
var_dump($_SERVER);
echo $_SERVER['HTTP_X_UP_SUBNO']; 
?> 
してみ?

72 :nobodyさん:2007/02/23(金) 21:48:45 ID:mvdvT2ju
>>71
var_dumpの45行と、最後のechoの個別IDが表示されました。
$_SERVER['HTTP_X_UP_SUBNO'];を実行するにはそれ以前に何か実行しておかないといけないのでしょうか?

73 :nobodyさん:2007/02/23(金) 21:52:00 ID:???
>>72
出力結果見してみ?

74 :nobodyさん:2007/02/23(金) 21:53:12 ID:mvdvT2ju
>>73
すまん、携帯だからコピペできない

75 :nobodyさん:2007/02/23(金) 21:55:35 ID:???
ナゼ携帯でそんなマンドクサイことやっているのか

76 :nobodyさん:2007/02/23(金) 21:56:34 ID:mvdvT2ju
>>75
>>60

77 :nobodyさん:2007/02/23(金) 21:56:48 ID:???
>>74
すまん、じゃあもう無理

78 :nobodyさん:2007/02/23(金) 22:12:34 ID:???
>>66
な?言った通りだろ?

79 :nobodyさん:2007/02/23(金) 22:24:37 ID:???
ちょっと前のレスで、出てた質問について疑問に思ったんだけど、
会員制のWEBでパスワードをスクリプト側で暗号化してDBに保存する
のって意味あるの?

DBサーバーが乗っ取られても大丈夫ということかもしれないけど、
DBサーバーが乗っ取られたらパスワードが分かろうと分かるまいと、
全てのデータが盗まれるわけだからもう終わりだよね?

80 :nobodyさん:2007/02/23(金) 22:27:54 ID:???
passを使い回してる人がいたりするからでね?

81 :nobodyさん:2007/02/23(金) 22:32:28 ID:???
DBサーバが乗っ取られるから暗号化するというより
システム上誤って(セキュリティの不備とか)パスワードが
盗まれたり漏れた場合に平文のパスワードが漏れるのと
不可逆暗号のパスワードが漏れるのとじゃ全然意味合いが違うっしょ

82 :nobodyさん:2007/02/23(金) 22:34:13 ID:???
>>79
管理者であってもユーザのパスを知る必要がないからだろ
もちろん暗号化には単方向アルゴリズムのを使う

83 :nobodyさん:2007/02/23(金) 22:38:47 ID:???
>>80-82
あ〜、なるほどね。サンクス。そういう意味か…
大手の企業サイトでも、結構パスワード再送機能で、再度同じパスワードが
送られてくるケースが多いけど、それは逆にそれらを全然考慮していないってことなのかな?

84 :nobodyさん:2007/02/23(金) 22:46:59 ID:???
>>83
実装に関してはユーザから見えないでしょ
勘違いしてると思うからこれを
ttp://php.benscom.com/manual/ja/function.crypt.php

85 :nobodyさん:2007/02/23(金) 23:24:13 ID:???
>>84
実装が見える見えないは関係ないだろうが。

パスワード再送が可能ということは、パスワードをハッシュ化してないか、
またが可逆暗号で保存しているということであり、
これは万が一のときに非常に危険である。

普通、サイトごとにパスワードを全部変えているという人は少ない。
だから、ほぼ絶対に復号できない方法、すなわちランダムSalt付きでのハッシュ化がベスト。

86 :nobodyさん:2007/02/23(金) 23:28:35 ID:???
ああ、同じパスワードの再発行か
ランダムの生成して送っといて変更してもらうっていう手とってるな

87 :nobodyさん:2007/02/23(金) 23:48:58 ID:???
銀行のシステムのように第二暗証とかまであったりすると高級感が出てくるよなw

88 :nobodyさん:2007/02/23(金) 23:51:21 ID:???
>>87 セキュリティーを強化すれば、利便性が悪化する。要はバランス。

89 :nobodyさん:2007/02/24(土) 00:04:43 ID:???
>>85
前にその話題を出したものなんですが

>ランダムSalt付きのハッシュ
これの使い方が良くわかりません。

これは、それぞれのユーザーのパスワードを暗号化するときに、
それぞれ別の文字を与えるということであってますか?

で、その与えた文字はどこに保存すればいいのでしょうか?
DBクラックされたらその文字もわかってしまうと思うのですが
別のところに保存しておくということが必要なんですか?

90 :nobodyさん:2007/02/24(土) 00:07:31 ID:???
非可逆保存で済むのはWebのみで閉じた単純なシステムだけでしょ。

91 :nobodyさん:2007/02/24(土) 00:24:00 ID:SolPpwuf
HTTP_X_UP_SUMBOって検索してもでてこないんですけどなんですか?

92 :nobodyさん:2007/02/24(土) 00:26:56 ID:???
日本では使われてないからじゃね?w

93 :nobodyさん:2007/02/24(土) 00:54:17 ID:???
HTTP_X_UP_SUBNO

94 :nobodyさん:2007/02/24(土) 01:18:32 ID:???
>>90
お前はPHPをweb以外のどんなシステムに使いたいんだ?ww
100字以内で回答せよ。

95 :nobodyさん:2007/02/24(土) 01:32:21 ID:???
>>89
ハッシュ化された文字列をばらつかせるために使うから一緒に持ってていい

>>94
共有するのはDBでしょ

96 :nobodyさん:2007/02/24(土) 01:35:00 ID:???
なんかここの面子で面白いPHPアプリ作れないかな
実用さとか追求せずに適当な感じで

97 :nobodyさん:2007/02/24(土) 01:37:42 ID:???
formにutnつければそれで終わりでしょうに

98 :nobodyさん:2007/02/24(土) 01:43:49 ID:i51GRfpk
MySQLでテーブルが複数個あるのですが、
これらのテーブルのフィールド名とか型とかを一括して取り出して表示したいんですけど、
なんか便利な関数かライブラリってありますでしょうか?

イメージとしては、配列の中身を整形出力するvar_dump()みたいな感じで、
テーブルの構造を整形出力して確かめたいんです。
今のところphpMyAdminを使って一つ一つのテーブルを手動で開いてカラム名とか確認してるので面倒で・・・

99 :nobodyさん:2007/02/24(土) 01:51:21 ID:???
mysql_fetch_field()

100 :nobodyさん:2007/02/24(土) 01:55:20 ID:TWO55K1R
指定した文字が最初に出た以前の文字を取得したいです

$sitei = 'C';
$str = 'ABCDEFG';
指定したCまでの文字 ABC と出力したい

101 :nobodyさん:2007/02/24(土) 02:07:07 ID:???
substr( $str, 0, strpos( "C" ) );

102 :nobodyさん:2007/02/24(土) 02:07:39 ID:???
substr( $str, 0, strpos( $sitei ) );

103 :nobodyさん:2007/02/24(土) 02:19:09 ID:/9A/DTQN
FCKEditorを掲示板に組み込むことを考えました。
もちろん、そんなことをすれば、穴だらけになります。

そこで、FCKEditorから受け取った値を正規表現を使って変換することを考えました。

例:
<p>→[p]
<strong>→[strong]
<table width="200" cellspacing="1" cellpadding="1" border="1">

[table---200---1---1---1]

tableタグも正規表現を使えば、上手く表現できそうな感じです。
その後でhtmlspcialcharsすれば、セキュリティ的にも問題ないと思います。
表示するときは、正規表現を使って逆に変換します。

質問は、上記のような事をやっている方・プロジェクトは無いですか?
便利なので、誰かやってそうな気がしますが。

104 :nobodyさん:2007/02/24(土) 04:12:21 ID:XQwWa3rh
変数に入ってる文字列からファイル名に使えない文字だけを置換したいのですが
htmlspecialchars() のように手軽にできるものありますか?

今は str_replace を使って個別に置換してるんですけど

$str = str_replace("/", "/", $str);

105 :nobodyさん:2007/02/24(土) 04:35:34 ID:???
>>104
ファイル名に使えない文字なんて、
ファイルシステムで変わるし、自分で関数作っちゃうのが早いんじゃないかな。

>今は str_replace を使って個別に置換してるんですけど
個別というと1個ずつおきかえてるのかな?
str_replaceはしらないけど、
preg_replaceなら配列に入れて全部いっぺんに置き換えれるよ。

106 :nobodyさん:2007/02/24(土) 05:22:30 ID:???
>>104
ファイル名に2バイトを使うのもいただけない。
ただの例なのかもしれないがエスケープするほうがいいよ

107 :nobodyさん:2007/02/24(土) 05:53:52 ID:???
>>106
ファイル名に2バイトなんて普通だろ。
1バイトしか使えないような馬鹿なOSがあるのかw
2バイト文字に神経質すぎだろ、オマエ

108 :104:2007/02/24(土) 06:02:24 ID:XQwWa3rh
>>105
対象の文字って結構たくさんあるんですかねぇ
preg_replace や strtr を使ってやってみます
先人が便利な関数作ってくれていないかなぁと

>>106
日本語ファイル名を扱うのでとりあえず
2バイト有りでやってみてます


109 :nobodyさん:2007/02/24(土) 06:29:00 ID:???
>>108
Shift JISだと表とかで失敗する
strtrだと1バイト->2バイトの置換は無理

110 :nobodyさん:2007/02/24(土) 06:35:27 ID:???
え?

111 :nobodyさん:2007/02/24(土) 06:38:12 ID:???
>>107
こういう奴がいると引き継いだ時苦労する。

112 :nobodyさん:2007/02/24(土) 07:17:27 ID:???
windowsしか使った事ないんだろ
ほっとけよ

113 :nobodyさん:2007/02/24(土) 07:54:50 ID:xkGH8kMq
おはようございます

>>97
utnつけてるHTMLを読み込まれるだけで良いのでしょうか?
アクセスしたら自動的にログインされた状態にしたいのです

114 :nobodyさん:2007/02/24(土) 10:51:52 ID:???
>>113
utnはDoCoMoのFOMAしか対応していない。 ユーザーが「端末情報を送信しますか?」とでるので、いいえと選択したら送信されず、自動ログインはできない。
HTTP_X_UP_SUBNOはauで、携帯本体で「端末情報送信する」に設定してる人のみ。
softbankは知らない。

115 :nobodyさん:2007/02/24(土) 11:25:55 ID:SolPpwuf
おねがいします。HTTP_X_UP_SUBNOはなんなのか教えてください。

116 :nobodyさん:2007/02/24(土) 11:39:47 ID:???
いくら下スレだからといってもgoogleくらい使おうよ

117 :nobodyさん:2007/02/24(土) 11:48:08 ID:???
ガタガタうるせーなw

118 :115:2007/02/24(土) 11:52:04 ID:???
自己解決しました

119 :117:2007/02/24(土) 11:56:52 ID:???
ポルターガイストでした

120 :nobodyさん:2007/02/24(土) 12:26:34 ID:???
|ω^)

121 :nobodyさん:2007/02/24(土) 12:34:10 ID:???
ってか、なんでいきなりutnとかの話になってるの??
>>97が突然その話を始めたわけだが。。。

122 :nobodyさん:2007/02/24(土) 13:24:08 ID:???
>>107
今日は釣れませんね

123 :nobodyさん:2007/02/24(土) 13:25:28 ID:???
昨日の夜からいる携帯厨だろ
HTMLタグ書くようにPHPコード書けば動くと思ってるのかもしれんぞw

124 :nobodyさん:2007/02/24(土) 13:34:14 ID:???
php5で以下のコードと結果はあってます?
php5って変数から変数への代入って参照渡しじゃなかったっけ?
それともオブジェクトのみの話?

$a = 100;

echo $a."<br>";



$b = $a;

echo $b."<br>";



$a = 'a';

echo $a."<br>";



echo $b."<br>";



100
100
a
100

125 :nobodyさん:2007/02/24(土) 13:43:29 ID:???
>>124
マニュアルくらい読もうぜ僕ちん。

ってかPHPがそんな仕様になったらえらいことになりそうだな

126 :nobodyさん:2007/02/24(土) 13:54:26 ID:???
>>125
PHP4は値渡し、PHP5は参照渡し

だよ

127 :nobodyさん:2007/02/24(土) 13:57:05 ID:???
>>126
んなわけねーだろボケが

128 :nobodyさん:2007/02/24(土) 14:21:28 ID:???
前スレでオブジェクト指向勉強始めたって書いた奴だけど、
のたうちまわった挙げ句カウンタができた。
多分ツッコミどころ満載というか、オブジェクト指向になりきれてないような気が。
誰かネ申な人アドバイスください。
ttp://sakuratan.ddo.jp/uploader/source/date33554.zip

わかんねーよお武家うtk指向。

129 :nobodyさん:2007/02/24(土) 14:38:52 ID:???
>>128
まだぜんぜん読んでないが
>$IPcount = "yes";
うーん(^ω^;)

130 :nobodyさん:2007/02/24(土) 14:41:23 ID:???
とりあえずもっと抽象度を高めたら?
あとyes/noの文字列じゃなくてtrue/falseや1/0使ったら?
$flagの意味もわからんけど

131 :128:2007/02/24(土) 14:48:41 ID:???
>>129 え、ひょっとしてもうダメッぷり発揮すか?
>>130
抽象度。ってなにy=ー( ゚д゚)・∵.

同一IPでも日付が変わってればカウントしたいので、
とりあえず$flagたててます。

うあ、住人がたでも「?」なコーディングしてるらしい('A`)

132 :nobodyさん:2007/02/24(土) 15:17:35 ID:???
細かいところは見なかったことにして

Counterというクラス名なのに、カウンター固有のロジックはほとんどクラス外にあるし。
staticなfunctionをまとめてるだけだから、クラスのインスタンスを作る意味ゼロだし。

133 :nobodyさん:2007/02/24(土) 15:19:15 ID:???
関数をclass{}で囲っただけじゃねーかw

134 :nobodyさん:2007/02/24(土) 15:21:16 ID:???
>>128
カウンタだから、必要なメソッドはカウントアップと
各データ取得だけでよいよ後は隠して
インターフェイスこんな感じで

class Counter
{
var $_logdir = '';
var $_options = '';

function Counter($logdir = './log/', $options = array()) {}
function setLogDirectory() {}
function setOptions() {}
function countUp() {}
function getCountTotal() {}
function getCountToday() {}
function getCountYesterday {}
function getLastAccess() {}
function _write() {}
function _read() {}
}

135 :nobodyさん:2007/02/24(土) 15:21:56 ID:???
インデントもいい加減だしコーディングスタイルも統一されてない。
見てて気持ち悪い。

136 :nobodyさん:2007/02/24(土) 15:26:03 ID:???
>>127
>んなわけねーだろボケが

ttp://f3.aaa.livedoor.jp/~matukazu/php5/php5_hensu.php
ttp://blog.so-net.ne.jp/nakagami/2005-11-10

137 :128:2007/02/24(土) 15:46:46 ID:???
>>132-133
やっぱ全然オブジェクト指向になりきれてないすか…。
ベタ書きとそう変わらないorz

>>134
ありがとです。
とりあえずその示してくれた型に入れて作り直してみます。

>>135
きっとよくわかってないことの裏返しですorz

やっぱりわかったようでわかってなかったようで…。
ググって、ちょっとしたら作り直します。

138 :nobodyさん:2007/02/24(土) 15:47:31 ID:???
>>136
124で変数から変数への代入は値渡し?参照渡し?
125でそんなわけない
126でPHP4は値渡しだよ、PHP5は参照渡しだよ
127でんなわけねーだろボケ
136で意味不明なリンク

やっぱりボケだったようで


139 :nobodyさん:2007/02/24(土) 15:49:33 ID:???
>>137
あのね、わかってないんだったらコード書く前に基礎を学んだほうがいいと思うよ
言われたことそのまま取り入れても、なぜそうするのかが分かってないだろ?
そもそも「〜〜」すればオブジェクト指向になるってもんじゃないし。

140 :nobodyさん:2007/02/24(土) 15:57:31 ID:26WGt2h1
phpでパス関連はdifineでするのが良いでしょか

それともDBの中に入れちゃっても大丈夫かな
保存ディレクトリまでのパスとかURLとか
皆さんどうしてますか?

TABLE1
商品カテゴリ   URL      パス          ページimg         (略
事務用品     ttp://ry    /usr/html/jimu   /user/html/img/jimu
パソコン用品   ttp://ry   /usr/html/paso   /user/html/img/jimu

TABLE2
商品名 商品カテゴリ
机     事務用品
モニタ    パソコン
棚     事務用品
鉛筆    事務用品

結果セットテーブル
商品名   URL      パス          ページimg         (略
机    ttp://jimu/ry   /usr/html/jimu   /user/html/img/jimu
モニタ  tttp://paso/ry   /usr/html/paso   /user/html/img/paso
棚     ttp://jimu/ry   /usr/html/jimu   /user/html/img/jimu
鉛筆    ttp://jimu/ry   /usr/html/jimu   /user/html/img/jimu

結果セットを foreachで 表示やら各種処理です。
アドバイスお願いします。



141 :nobodyさん:2007/02/24(土) 16:04:08 ID:???
相対パスだけ入れとけば?

142 :nobodyさん:2007/02/24(土) 16:07:35 ID:???
>>138
無知をさらすなよw

143 :nobodyさん:2007/02/24(土) 16:15:52 ID:???
あのね、ここは
素人が質問して、
素人が答えるスレ
わかってるか?

144 :nobodyさん:2007/02/24(土) 17:08:56 ID:???
よく言うと、みんなで助け合おうって事です。

145 :nobodyさん:2007/02/24(土) 17:50:20 ID:???
>>144
いいこというね。

146 :nobodyさん:2007/02/24(土) 18:04:12 ID:C5SeaRxM
サーバ上の画像ファイルのパーミッションを
変更したいのですがchmod()、ftp_chmod()以外でも可能でしょうか?
環境はwinのPHP5です

147 :nobodyさん:2007/02/24(土) 18:10:30 ID:???
>>146
Windowsにパーミッションはありません。 ので、変更は出来ません。 さらにchmod,ftp_chmod以外ではパーミッションの変更はできません。


148 :nobodyさん:2007/02/24(土) 18:19:53 ID:???
>>147
hint: 読み取り専用属性

149 :nobodyさん:2007/02/24(土) 18:26:14 ID:???
>>148
http://php.benscom.com/manual/ja/function.chmod.php
注意: この関数は Windows 環境にはまだ実装されていません。



150 :nobodyさん:2007/02/24(土) 18:37:48 ID:wnb8mZxA
http://jsgt.org/mt/archives/01/cat_eo.html

このページにあるようなアクセス推移をグラフするスクリプトがほしいんですが、
公開されてるところはないでしょうか?ライブラリなどがわかれば知りたいです。
スクリプトは英語でもOKです。

151 :nobodyさん:2007/02/24(土) 18:55:25 ID:???
$var に全角文字が含まれているかどうか、
の判断ってどのようにすればいいでしょうか。

152 :115:2007/02/24(土) 19:13:46 ID:???
>>151
strとmbstrの長さと比較する。

USキーボードで認識されちまった…アンダーバーどこだ!!

153 :nobodyさん:2007/02/24(土) 19:23:32 ID:???
その発想はなかったわw

154 :nobodyさん:2007/02/24(土) 19:48:25 ID:???
>>150
そのサイトで公開されてねーの?

155 :nobodyさん:2007/02/24(土) 19:48:26 ID:???
>>150
「php グラフ ライブラリ」でググルだけで相当出て来るんだが

156 :nobodyさん:2007/02/24(土) 20:31:35 ID:YJBwbPsK
1、id passを自由に記入して登録してもらい、
2、その後、ログインする機能をつけたいと思っています

1でフォームを通じてデータベースに登録するところまではできました

2ではどうしたらいいのでしょうか 
ログインするページで、データベースから登録された全てのIDパスを読んで、フォームに入れられた情報が合致するかどうかをチェックしているのでしょうか?

157 :nobodyさん:2007/02/24(土) 20:34:15 ID:???
whereでID探してPassの整合性をチェック

158 :nobodyさん:2007/02/24(土) 20:34:18 ID:???
select * from idとpass入れたテーブル
where id=入力されたid
and pass=入力されたpass

159 :nobodyさん:2007/02/24(土) 20:44:34 ID:YJBwbPsK
>>157-158
すばやい解答ありがとうございます!

プログラムど素人で、phpは勉強し始めて一ヶ月でわからないことだらけですが、
すごく面白いですね
ここのスレの人たちも親切ですし、すごくやる気がでてきます

本当にありがとうございました

160 :nobodyさん:2007/02/24(土) 20:46:43 ID:YJBwbPsK
>>157-158
すばやい解答ありがとうございます!

プログラムど素人で、phpは勉強し始めて一ヶ月でわからないことだらけですが、
すごく面白いですね
ここのスレの人たちも親切ですし、すごくやる気がでてきます

本当にありがとうございました

161 :nobodyさん:2007/02/24(土) 20:55:06 ID:???
何で二回言ったん?

162 :nobodyさん:2007/02/24(土) 21:41:31 ID:???
>>161
僕は>>159-160ではないが、サーバの調子が悪いみたい。

163 :nobodyさん:2007/02/24(土) 21:45:33 ID:???
>>161 
僕は>>159-160ではないが、サーバの調子が悪いみたい。 

164 :162 ◆4M/QOnfmpY :2007/02/24(土) 21:53:21 ID:???
ありゃ、どうやら本当のようだな。
どうなってんのよおぃ……

165 :nobodyさん:2007/02/24(土) 23:05:59 ID:???
ん?
かける?

166 :nobodyさん:2007/02/24(土) 23:16:39 ID:???
ん? 
かける? 

167 :nobodyさん:2007/02/25(日) 01:05:09 ID:gfMJR4ri
PHP初心者です よろしくお願いします
dbから取り出すプログラムを組みたいのですが
エラーが出てしまうのでよろしくお願いします。
16:$con=mysql_connect("localhost","y","p","test1");
17:$query="select*from db;";
18:$res=mysql_query($con,$query);
19:
20:while ($row=mysql_fetch_array($res)){
21:print('<tr><td>'.$row["id"].'</td><td>'.$row['db'].'</td><tr>');
22:}
23:mysql_free_result($res);
24:mysql_close($con);

エラー内容
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Program Files line 18
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files line 20
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Program Files line 23
取りあえず以上なんですがよろしくお願いします。

168 :nobodyさん:2007/02/25(日) 01:15:25 ID:/w8sKU8x
PEARスレより誘導されてきました。

Authについて質問です。
MySQLにパスワードと名前を入れておいて、そこを読み取って認証するという
単純な認証を試しに作ってみたのですが、どうも巧く行きません。

具体的には、どのような入力をしても、以下の「MyAuth.php」のswitch($status)でdefaultが選ばれてしまうので、困っています。
どなたか、アドバイスをください。

以下のURL先がソースコードです。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29230

169 :nobodyさん:2007/02/25(日) 01:17:44 ID:???
>>167
まずDBに接続出来ていない。

mysql_connect("localhost","y","p","test1")
の条件で本当に接続できるか確認。

出来ているなら、mysql_connectのマニュアル読んでさらに確認。

170 :nobodyさん:2007/02/25(日) 01:22:57 ID:???
mysql_query
(PHP 4, PHP 5)

mysql_query ? MySQL クエリを送信する

説明
resource mysql_query ( string query [, resource link_identifier] )

171 :nobodyさん:2007/02/25(日) 01:24:26 ID:???
$query="select*from db;";
がおかしいだけだな。


$query="select * from db";
にして味噌



172 :nobodyさん:2007/02/25(日) 01:26:16 ID:???
>>168
var_dump($status);

173 :168:2007/02/25(日) 01:29:01 ID:???
>>172
>var_dump($status);

string(0) ""
でした。

174 :nobodyさん:2007/02/25(日) 01:32:16 ID:???
だったらdefaultになるの当たり前やん

175 :168:2007/02/25(日) 01:33:36 ID:???
string(0) ""になる原因に何が考えられるのか、
どのようにその原因を探せば良いのかが分からないのです。

176 :nobodyさん:2007/02/25(日) 01:39:09 ID:???
$status をたどっていくしかないと思うが・・

177 :168:2007/02/25(日) 01:45:18 ID:???
無知な上に、理解力が無くて申し訳ないのですが、
$statusをたどるという事の意味がよくわからないです。
Auth.phpのコードを読むという事でしょうか?

178 :nobodyさん:2007/02/25(日) 01:50:06 ID:???
PEAR使ったことないぺーぺーだが
"loginFunction"ってのはログイン画面だけを書く場所じゃないの?
その後に認証されてるかどうかをチェックしていくようだが
http://www.phpbook.jp/pear/pear_auth/index.html

179 :nobodyさん:2007/02/25(日) 01:52:00 ID:???
>>177
ドキュメントでも読めばいいじゃん

180 :nobodyさん:2007/02/25(日) 01:53:06 ID:???
俺PEARって使ったことないんだけど便利なの?
ログインごときでハマるぐらいなら使わないほうがよっぽど早いと思うが。

181 :178:2007/02/25(日) 01:58:53 ID:???
読み進めていったらその書き方で"loginFunction"に色々書くみたいね
statusに何も入らないって事はセッションが確立できてないとか?
とりあえずさっきのURLの奴を最初から順に追ってくべきだと思うが

182 :168:2007/02/25(日) 02:15:30 ID:???
>>178
先ほどのURLの文書は参考にさせていただきます。
今のところ、MySQLを動作させていない状態でも挙動が一緒なので、
きっと、データベース周りがおかしいのだと思います。
しかし、PEAR::DBを使ったデータベース接続は問題が無いので、
なかなか、問題点の予想がつきません。


>>179
http://pear.php.net/manual/ja/package.authentication.auth.php
は、一通り目を通したつもりなのですが、原因が分かりませんでした。
再読してみます。

>>180
便利だと聞いて、使ったら痛い目に遭ってます(三日ほど
勉強と思って、使ってみているつもりです。



183 :nobodyさん:2007/02/25(日) 02:23:47 ID:0G38USQn
定数とかロケールの設定とか例外ハンドラーなど
システム全体で使う物を定義したphpをいちいち全php(というか実際には一番下の)
にrequire_once書かないで、自動的に読み込む方法ってありますか?

DBにアクセスする基底クラスとか、いろんな場所から使う物にrequire_onceしとけば
たいてい、読み込むだろうけど、なんか管理しづらいというか、
「ああ、ここには読み込まれてないのか」的なエラーは面倒なので
あったらお願いします。


184 :nobodyさん:2007/02/25(日) 02:28:11 ID:???
>>183
Ctrl+C → Ctrl+V

185 :168:2007/02/25(日) 02:30:37 ID:???
.htaccessに
<IfModule mod_php.c>
php_value auto_prepend_file "hoge.php"
<IfModule>
って入れればOKだったはず。

適当なURLが見つからないが、
http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess
あたりを参考にしてください。

186 :185:2007/02/25(日) 02:42:09 ID:???
訂正。スラッシュ入れ忘れてた。

.htaccessに
<IfModule mod_php.c>
php_value auto_prepend_file "hoge.php"
</IfModule>

だった。

187 :185:2007/02/25(日) 02:44:48 ID:???
訂正。数字入れ忘れてた。
グダグダやな。

PHP4なら
.htaccessに
<IfModule mod_php4.c>
php_value auto_prepend_file "hoge.php"
</IfModule>

だった。

PHP5なら、5で。

188 :nobodyさん:2007/02/25(日) 02:56:59 ID:???
>>182
PEARが便利に感じないなら、無理に使う事はない。
取捨選択自分でしないと

189 :183:2007/02/25(日) 03:53:14 ID:0G38USQn
>>187
ありがとうございます

とうぜんですがphp.iniでもいけるみたいですね。
.htaccessを使えばディレクトリ単位で変えられますね

ふむ。便利だ。
ありがとうございました。

どうでもいいけど。phpの公式日本語マニュアルが出ない・・・
まあ、他にもいろいろあるから良いけど。


190 :nobodyさん:2007/02/25(日) 06:03:56 ID:t/+ZOEaw
質問です

www.x.com と secure.x.com で一つのクッキーやセッションを共有することはできますか?
やり方を教えてください

よろしくお願いします

191 :nobodyさん:2007/02/25(日) 06:11:50 ID:t/+ZOEaw
190ですが補足します
完全な共有でなくても、擬似的に共有したような状況にできる方法があったら
ご教授ください



192 :nobodyさん:2007/02/25(日) 06:22:31 ID:t/+ZOEaw
連投スミマセン

フォームにデフォルトで " と ' を含む文を表示させたいのですが崩れてしまいます・・・
フォームの中の " ' をちゃんと表示させる方法はありますか?

193 :nobodyさん:2007/02/25(日) 07:23:40 ID:???
>>190
is_numeric

194 :190:2007/02/25(日) 08:18:49 ID:t/+ZOEaw
>>190は自己解決しました
>>192をご存知の方、よろしくお願いします。



195 :nobodyさん:2007/02/25(日) 08:36:48 ID:???
\

196 :nobodyさん:2007/02/25(日) 08:39:16 ID:???
特殊キャラ

197 :nobodyさん:2007/02/25(日) 10:47:00 ID:???
>>194
phpじゃなくてhtmlの話だな
既に二人が答えてるけど、マジッククオート関係を調べれば意味がわかると思う

198 :nobodyさん:2007/02/25(日) 13:31:33 ID:???
$str_m = "あああ";
echo "結果$str_m";

例なんですが、↑は大丈夫で↓は駄目です。

$str['m'] = "あああ";
echo "結果$str['m']";

そこで中括弧で括るとOKな事は分かったんですが、
{$str['m']} 、 ${str['m']} 両方動作するのですが、どっちがいいのでしょうか?
echo "結果".$str['m']; にしろってのは無しの方向でお願いします。

199 :nobodyさん:2007/02/25(日) 13:39:54 ID:???
どっちがいいかはどんなプログラムかによって変わるのでお答えできましぇーん

200 :nobodyさん:2007/02/25(日) 13:49:17 ID:???
>>198
どっちでもいいよ意味は同じ
むしろパーサからしたら echo "結果" . $str['m'];
の方が早いだろうしダブルクォート内に
変数を入れ込まないと相当読みづらくなるっていう
場合でもない限り俺は最後のスタイルで書く

201 :198:2007/02/25(日) 14:05:36 ID:???
ありがとうございます。
ぐぐっても分からなかった(検索キーワード的にも難しかった)のでスッキリしました。

速度に関しては、以前から連結が最速というのは知ってますが、
実際はヒアドキュメント内で$_SERVER['']などの記述をどうしようか模索してました。

出力部がスクリプト内に点在しているのが管理的にも嫌だったので、
変数にためて最後に出力したり、ヒアドキュメントなど利用しているのですが、
そもそもその方法が駄目なのかなとも思います。

最後に>>200さんの改行スタイルを解析中です。

202 :nobodyさん:2007/02/25(日) 14:11:11 ID:0G38USQn
>>200に一票
早いって言うのは
}を見つけるまでそれが変数だとPHPが解らないからって感じかな?
まあ、微々たるモンだろうけど。

それにクォート内の色が変わるエディタを使っていたら
一番下のやり方が見やすいし。

たしかに一度ドットで抜けて、また戻ってって面倒なときあるけどね。
どうしても{}を使うなら{$hoge}が見やすいかな?

203 :182:2007/02/25(日) 14:31:00 ID:???
>>188
おっしゃる通りです。
どうしても無理なら、あきらめます。

204 :nobodyさん:2007/02/25(日) 14:39:11 ID:???
echo "結果" , $str['m'];の方が早いって聞いたけど、ホント?

205 :nobodyさん:2007/02/25(日) 14:54:51 ID:???
えー、カンマ?ピリオドで連結が最速じゃね?

206 :nobodyさん:2007/02/25(日) 15:08:59 ID:???
結果<?php echo str['m'];?>
これで十分

207 :nobodyさん:2007/02/25(日) 15:13:27 ID:???
単純なのならいいけど、 <? ?>で全部区切るのは相当読みづらいと思うが。

208 :nobodyさん:2007/02/25(日) 15:15:35 ID:???
負荷削減

209 :nobodyさん:2007/02/25(日) 15:17:02 ID:???
>>206
そんな全角スペースで動作すると思ってんのか貴様ー!!

210 :nobodyさん:2007/02/25(日) 15:17:32 ID:???
俺はカンマで追加していく派。
ついでに言うと$output .= ってやってって最後にどんと。

zen-cartだったかな?
<? ?>で書いてあってすげー読みづらかった…
しかも同じようなコード繰り返してるし。

211 :nobodyさん:2007/02/25(日) 15:18:40 ID:???
この板でずうずうしい奴が常駐するスレ一覧

【おまえらに作らせよう】
http://pc10.2ch.net/test/read.cgi/php/1172328149/

【恥を知れ】
http://pc10.2ch.net/test/read.cgi/php/1161784348/

【著作権ってなんですか?】
http://pc10.2ch.net/test/read.cgi/php/1162123400/

【口だけクン】
http://pc10.2ch.net/test/read.cgi/php/1170317609/

【Mr.へりくつ】
http://pc10.2ch.net/test/read.cgi/php/1171955922/

212 :nobodyさん:2007/02/25(日) 16:29:35 ID:???
すごく・・・・どうでもいいです

213 :nobodyさん:2007/02/25(日) 16:29:38 ID:???
デザイナーといっしょに仕事したことがないやつがたくさんいるな

214 :nobodyさん:2007/02/25(日) 16:30:44 ID:???
smartyとかテンプレート知ってるだけで鼻高々ってのもどうかと思うが

215 :nobodyさん:2007/02/25(日) 16:41:44 ID:???
おれはsmartyをパソコンにインストールできるだけで偉いと思ってるぜ!

216 :nobodyさん:2007/02/25(日) 16:55:06 ID:XAraiK/y
ユーザーが自分で投稿したコメントを編集できる掲示板を作っています
そこで質問です

フォームで改行された場合、 str_replaceで\r\nを<br>で置き換えます
投稿された文章を見る場合だけなら問題ないのですが、
投稿したコメントを編集しようとした場合、<br>タグが出てきますよね

編集の際、
普通に書き込む時と同様に、<br>を表示させないようにするためにはどのようにすればいいのでしょうか

217 :nobodyさん:2007/02/25(日) 16:59:33 ID:???
俺がやっている仕事ではデザインは仕様で既にきまっているから
デザイナーの入る余地はない。
っていうかデザイナーの絡む仕事って言うのやったことない

218 :nobodyさん:2007/02/25(日) 16:59:50 ID:???
>>216
DBには投稿されたまま保存して
画面上に表示するときだけ<br>に変換する
textareaに表示するときはそのまま表示

219 :nobodyさん:2007/02/25(日) 17:21:26 ID:???
掲示板作っているのですが、投稿された文の文字コードチェックをすべきでしょうか?
if (mb_detect_encoding($str) != 'EUC-JP') {
  mb_convert_variables('EUC-JP', mb_detect_encoding($str), $str);
}
これ必須だったりします?別になくてもおk?

220 :nobodyさん:2007/02/25(日) 17:30:21 ID:???
君のシステムでは
1.異なった文字コードで投稿される場合があるのか
2.異なった文字コードを変換して保存する必要があるのか
による

221 :nobodyさん:2007/02/25(日) 17:53:25 ID:???
素朴な疑問なんだけど、コメント箇所ってどういう風に書いてる?
俺は今まで

/*入力確認*****************/

〜ソース〜

/*DB登録処理***************/

〜ソース〜

みたいに書いてたんだけど、なんか分かりづらい気もして。
気にする事はないだろうけど、、綺麗なソースを書きたいので、気になりました。

222 :nobodyさん:2007/02/25(日) 17:56:49 ID:???
>>221
zendやpearのコーディング規約でも見るがよろし

223 :nobodyさん:2007/02/25(日) 18:00:13 ID:???
>>222
そんなのあるのかー。ググって見ます。ありがとです。

224 :nobodyさん:2007/02/25(日) 18:01:35 ID:???
PEARっぽく無理して英語で書いて、
グダグダになるに$1

225 :nobodyさん:2007/02/25(日) 19:31:15 ID:XAraiK/y
>>218
なるほど!
ありがとうございます

226 :nobodyさん:2007/02/25(日) 19:45:40 ID:eI7feJlv
PHPスクリプトを公開していらっしゃる作者さんへ質問です。
どこのレンタルサーバを使われていらっしゃいますか?
あと、PHP4とPHP5のスクリプト互換性は合った方がいいですか?

227 :nobodyさん:2007/02/25(日) 19:59:22 ID:???
仕事で鯖からなにからこっちで立ち上げるのなら5で。
レン鯖をつかうような掲示板とかのちょっとした小物だったらphp4で書いてる。

よく使うレン鯖は今んと頃軽くて使い勝手が良いので勘弁。

228 :nobodyさん:2007/02/25(日) 20:57:21 ID:???
>>221
Para poder salvar mi servidor de todo ese

229 :190:2007/02/25(日) 20:58:19 ID:IYDfC2eT
>>197
説明不足ですみません
htmlspecialcharsで変換するのは知っていますが、ユーザーがフォームに " ' を入れた場合、それを
修正してもらうためにもう一度 フォームの中に " や ' が表示された状態で画面を再表示させたいの
です。

フォームのvalueにhtmlspecialcharsで修正した値を入れると、"e;などの文字列がフォーム内に直接
表示されてしまいますよね。しかしhtmlspecialcharsで修正しないと " のせいでフォームが途中で途切れ
てしまいます。これをなんとかしたいのです。

230 :190:2007/02/25(日) 20:59:42 ID:IYDfC2eT
>>229の "e; は &quot; の誤りです


231 :nobodyさん:2007/02/25(日) 21:00:18 ID:???
>>229
マジッククオートは調べたか?

232 :nobodyさん:2007/02/25(日) 21:08:21 ID:???
>>231
マジッククォートはoffだし、onでもフォーム内にバックスラッシュが表示されるだけでしたが。
そうではなくて、例えばユーザーがフォーム内に「Arcator"bar"Baalouse」と入力したら、まったく
同じものが修正要求のメッセージと共に表示されないと困るのです。

233 :nobodyさん:2007/02/25(日) 21:10:16 ID:???
htmlspecialcharsの引数をもうちょっとよく調べれば解決するんじゃね

234 :nobodyさん:2007/02/25(日) 21:11:51 ID:???
フォーム内で&quot;表示したら普通に”になるんでないの?

235 :nobodyさん:2007/02/25(日) 21:13:59 ID:???
症状をもっと最初に丁寧に書け
何をどうしたくて現状どうなってるのかサッパリわかんねえ

236 :nobodyさん:2007/02/25(日) 21:20:20 ID:IYDfC2eT
つまり
$val = "&quote;";
<input type="text" name="test" value="{$val}">
↑これでは変換前の実体参照がそのまま表示されるだけですね
$val = '"';
<input type="text" name="test" value="{$val}">
↑これでもフォームが途中で途切れてしまいますね

フォームのデフォルトバリュー内に " や ' が混在するとき、どうすれば正常な
表示が可能なのか、というのが質問の趣旨です。マジッククォートやhtmlspecialchars
では、この問題を解決できないと思うのですが。

237 :nobodyさん:2007/02/25(日) 21:26:20 ID:???
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ

238 :nobodyさん:2007/02/25(日) 21:29:18 ID:???
>>236
> ↑これでは変換前の実体参照がそのまま表示されるだけですね
されない。

以上。

239 :nobodyさん:2007/02/25(日) 21:30:57 ID:???
>>238
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ


240 :nobodyさん:2007/02/25(日) 21:33:14 ID:???
quoteじゃなくて
quotって事か?
何言ってるのか本当に意味わからん

241 :nobodyさん:2007/02/25(日) 21:39:37 ID:CDvbRnfg
関数の説明で 戻り値 の説明(@param string ... のように)をしたいのですが
戻り値がオブジェクト(http://jp2.php.net/manual/ja/language.types.object.php)の
型名はどうなるのでしょうか?

それから、PHPの標準関数はどこに定義されているのでしょうか?
見てみたいのですが、見られますか?

242 :nobodyさん:2007/02/25(日) 21:44:55 ID:???
@param
じゃ引数じゃないか?

@return foo
だと思うが

243 :nobodyさん:2007/02/25(日) 21:47:23 ID:???
@return objectでいいんでないの?
PEARの書式でもながめてみたら?

関数はPHPのソースにあるでひょ
Cで書かれてるはずだけど

244 :nobodyさん:2007/02/25(日) 21:56:00 ID:???
>>241
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.return.pkg.html

245 :241:2007/02/25(日) 21:57:24 ID:???
Ooooooooooops!!
@returnでした。

>>243
なるほど。素直に'object'ですね。
参考にPEARを覗いてみます。

>関数はPHPのソースにあるでひょ
>Cで書かれてるはずだけど
grepで検索して覗いてみます。
ありがとうございました。

246 :nobodyさん:2007/02/26(月) 01:29:31 ID:MqypCXgA
ちょっと行き詰まったので、質問します。mysqlと絡んだ内容です(php4.4.2、mysql4.0.27)。

テーブル名:list_table
-----------
id | name |
-----------
1 | tato |
-----------
2 | hanako|
-----------

これをWEBフォームよりnameを一括変更するのが目的です。
やり方としては全レコードをmysql_fetch_assocで抽出し、
フォーム部分<input name="name" type="text">のvalue部分に表示させ、
そのフォーム部分の名前を変えて送信すれば、データベースのレコードも変わる、という感じです。

各個人を一人ずつ変える事なら出来たのですが、
一括変更がなかなか出来ません・・・。
どなたかお知恵をお貸し下さい。
宜しくお願いします。

次に現在の内容を晒します。


247 :246:2007/02/26(月) 01:30:02 ID:MqypCXgA

//php該当部分抜粋
$editFormAction = $_SERVER['PHP_SELF'];
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "edit")) {
$updateSQL = sprintf("UPDATE list_table SET name=%s WHERE id=%s",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['id'], "int"));

mysql_select_db($database_MyDB, $MyDB);
$Result1 = mysql_query($updateSQL, $MyDB) or die(mysql_error());
}

//フォーム部分抜粋
<form method="post" name="edit" action="<?php echo $editFormAction; ?>">
<?php do { ?>

<?php echo $row_Recordset['id']; ?>
<input type="text" name="name" value="<?php echo $row_Recordset['name']; ?>">
<input type="hidden" name="id" value="<?php echo $row_Recordset['id']; ?>">

<?php } while ($row_Recordset = mysql_fetch_assoc($Recordset)); ?>

<input type="submit" value="送信"><input type="hidden" name="MM_update" value="edit">
</form>

如何でしょうか?
宜しくお願いします。

248 :nobodyさん:2007/02/26(月) 01:37:37 ID:???
複数行のデータが送られてくるのにUPDATEを1回しか発行してないぞ

249 :nobodyさん:2007/02/26(月) 01:51:29 ID:???
>>247
var_dump($_POST['name'])

250 :nobodyさん:2007/02/26(月) 03:32:17 ID:???
初めて知ったけど、includeやrequireに括弧は付けないんだね。
include "hogehoge.php"; ってことか。

251 :nobodyさん:2007/02/26(月) 03:33:57 ID:???
このすれれべるひきいwwwwwwwww

252 :nobodyさん:2007/02/26(月) 04:15:30 ID:???
>>251
こういうのが沸いてくるからな

253 :nobodyさん:2007/02/26(月) 04:15:31 ID:???
メールのヘッダ情報において、「詐称できないもの」って、
Received:の経路情報だけ?

他にも詐称が不可能なヘッダ情報ってある??

254 :nobodyさん:2007/02/26(月) 04:58:19 ID:7mBYKw3T
正規表現の中に変数を含めることって出来ますでしょうか?

たとえば、
$var = "abc";
preg_match('/^aaa{$var}zzz/', $str, $result);
のように、$varを正規表現の中に入れて中身を展開させたいのですが・・・

255 :nobodyさん:2007/02/26(月) 05:02:33 ID:???
自分で試せ

256 :nobodyさん:2007/02/26(月) 05:02:35 ID:???
なんでまずやってみないの?
アホだろ

257 :nobodyさん:2007/02/26(月) 05:42:18 ID:???
>>254
何故、変数展開させたい文字列をシングルクォートで括るか。

258 :nobodyさん:2007/02/26(月) 05:49:25 ID:???
ヴァカしかいねーのな

259 :nobodyさん:2007/02/26(月) 05:58:24 ID:???
質問者の10割と回答者の9割がアホ
それがここの仕様

260 :254:2007/02/26(月) 05:59:13 ID:7mBYKw3T
>>255-256
254で記載したコードで試したうえで出来ないので質問いたしました。

>>257
あっ、すいません、ここには手打ちで書いたのでうっかりシングルにしちゃいましたが、
実際のソースのほうではダブルで括ってます。

でも正規表現では{}は意味を持つので、変数を囲うのに使えないし・・・

261 :nobodyさん:2007/02/26(月) 06:04:57 ID:???
>>260
使えるって。先に変数展開されてから関数に渡されるんだから。
試してもいないで言ってるだろう、お前。
つか、正規表現の「{}」って何?

262 :261:2007/02/26(月) 06:12:37 ID:???
あ、前の表現の回数指定か。忘れてた >「{}」
でも問題ないよ。たとえば
$s = "aaaabbbcccddd";
$x = "bbb";
print preg_replace("/a{3}{$x}c{2}/", "ZZZ", $s);
というコードで結果は
aZZZcddd
ってなるから。

263 :nobodyさん:2007/02/26(月) 06:43:34 ID:xTDxI0kc
MySQLのテーブルtableのレコードnameには a?b が入ってます

$name = "a'b";
select * from table where name = '$name';
PHPでこれを実行するとちゃんとname = a'bが取得できます。

しかしこれは
select * from table where name = 'a'b';なわけで、危険なのでは?と思い質問しました。

magic_quotes_gpc は Offです。
問題なしでしょうか?

264 :263:2007/02/26(月) 06:46:01 ID:xTDxI0kc
>MySQLのテーブルtableのレコードnameには a&#39b が入ってます
↑半角&#39bです。

265 :nobodyさん:2007/02/26(月) 07:09:31 ID:???
a'bなんてname入れんな

266 :nobodyさん:2007/02/26(月) 07:27:19 ID:???
>>263
問題あります1スレに10回は出る質問なので
上を探せばでてきます

267 :nobodyさん:2007/02/26(月) 07:31:17 ID:???
>>265
は?

268 :nobodyさん:2007/02/26(月) 07:33:25 ID:???
>>263
> PHPでこれを実行するとちゃんとname = a'bが取得できます。
どう実行したのか具体的に書いてよ。
単にライブラリの方で自動エスケープしてくれただけじゃないの?

269 :nobodyさん:2007/02/26(月) 07:38:00 ID:???
>>263が何らかのwebサービスを開始したら、ぜひ教えてほしい。
そしたら、速攻でSQLインジェクションやってあげるから。

270 :nobodyさん:2007/02/26(月) 07:40:24 ID:???
>>263
> select * from table where name = 'a'b';なわけで、危険なのでは?と思い質問しました。
危ない以前にSQLシンタックスエラーで実行できない。

271 :263:2007/02/26(月) 07:47:26 ID:xTDxI0kc
ちょっと略しました。申し訳ないです。
正確には
$name = "a'b"; ではなく
$nameはPOSTまたはGETで送られたa'bです

272 :263:2007/02/26(月) 07:52:29 ID:xTDxI0kc
>$nameはGETで送られたa'bです
↑GET

273 :263:2007/02/26(月) 07:59:42 ID:xTDxI0kc
あ、違いますね。
間違いです。勘違いしてました。
忘れてください。

274 :nobodyさん:2007/02/26(月) 08:00:52 ID:???
>>272
>>266

275 :nobodyさん:2007/02/26(月) 08:55:20 ID:???
>>190
htmlspecialchars($変数, ENT_COMPAT, EUC-JP);
第二引数をつけないと脆弱性がある。 190が悩んでるような"や'を入力された場合のことね。
http://au.php.net/manual/ja/function.htmlspecialchars.php

276 :nobodyさん:2007/02/26(月) 09:01:08 ID:???
>>275
オーストラリア在住ですか?

277 :nobodyさん:2007/02/26(月) 09:11:49 ID:???
>>246
<input type="text" name="name" value="<?php echo $row_Recordset['name']; ?>">

<input type="text" name="name[<?php echo $row_Recordset['id']; ?>]" value="<?php echo $row_Recordset['name']; ?>">
にする。

で、$_POST['name'][1]〜$_POST['name'][最後]までループで回して、毎回UPDATEする必要がある。

246のソースのままじゃ、1人分しか対応できない。
<input type="hidden" name="id">は消す。

mysql_select_db($database_MyDB, $MyDB);
foreach ($_POST['name'] as $key => $value) {
$updateSQL = "UPDATE list_table SET name = '" . $_POST['name'] . "' WHERE id = " . ($key + 1);
$Result1 = mysql_query($updateSQL, $MyDB) or die(mysql_error());
unset($updateSQL);
}
でいいんじゃないかな。

一括で変換したい場合は、フォーム1つの中で、idとnameの組み合わせをレコード数分見つけられないといけないから、作り方に工夫が必要。 1フォーム1レコードだったらhiddenでidとか埋め込めるけどね。

278 :275:2007/02/26(月) 09:13:50 ID:???
orz
ENT_QUOTESだ。

279 :nobodyさん:2007/02/26(月) 10:53:00 ID:???
>>271
普通に考えたらGETだろうとPOSTだろうと「a'b」は「a'b」のままなんだが、
ひょっとしてテーブルに格納されてるのも検索で使った入力値も
「a'b」じゃなく「a&#39b」だって話か?
画面で見ると where name='a'b' に「見える」というだけで実は where name='a&#39b' ?

じゃあ一体何の問題が言うんだね、君は。

280 :nobodyさん:2007/02/26(月) 11:11:07 ID:???
文字コードやら文字エスケープ程度でつまずく奴は何やっても駄目

281 :nobodyさん:2007/02/26(月) 11:59:30 ID:???
どこかで自分のソースをチェックしてくれるサイト・もしくはサービスって無いかな?
HTMLの書き方についてはネットでも自動チェックできるところがあるけど、
PHPについては、どういう書き方が正しいのか?処理がスムーズに行われるのか?
について、いつも悩む。書き方によってパフォーマンスも違うだろうし。

282 :nobodyさん:2007/02/26(月) 12:18:42 ID:???
>>281
プログラムとHTMLは違う。
PHPは構文エラーがあれば教えてくれるんだし。

コーディングなら、他人が書いたソースでも読んでみて
参考になるところがあれば、どんどん真似をして自分のものにしなさい。
コーディング規約を読んでみるのもよし。

283 :nobodyさん:2007/02/26(月) 12:19:04 ID:???
>>281
HTMLだって文法チェックはしてもデザインの良し悪しなんてチェックはしてくれないのだよ。

284 :nobodyさん:2007/02/26(月) 12:19:19 ID:???
Perlなら↓とかあるのはあるんだが
ttp://www.e777.co.jp/perlcw/perlcw.html

まあIDE使ったほうが良さげ

285 :284:2007/02/26(月) 12:20:51 ID:???
な、なんだお前ら!
昼休み暇だからって被りすぎだろ コラー!

286 :nobodyさん:2007/02/26(月) 12:21:45 ID:???
>>284
文法チェックだけなら
php -l ソースファイル
でいいじゃん。

287 :nobodyさん:2007/02/26(月) 12:44:43 ID:eLbz34G2
皆さんphp4で開発する時、クラスを多用します?

288 :nobodyさん:2007/02/26(月) 12:59:51 ID:???
サッカーやる時、ボールよく蹴ります?って聞いてるようなもんだよそれは

289 :nobodyさん:2007/02/26(月) 13:04:35 ID:???
http://localhost/test.php?keyword=
これをそのまま?と表示させたいときどうしたらいいでしょうか?

290 :nobodyさん:2007/02/26(月) 13:06:58 ID:???
そうなのね。
関数でべた書きしてました・・
出直してきます。

291 :289:2007/02/26(月) 13:07:28 ID:???
http://localhost/test.php?keyword=♥
これをそのまま♥と表示させるにはどうしたらいいですか?

292 :nobodyさん:2007/02/26(月) 13:08:29 ID:???
>>289
愛が必要です

293 :nobodyさん:2007/02/26(月) 13:15:59 ID:blVK8UOL
1つのファイル上で「入力」→「確認」→「完了」を行い、
それぞれの用途に合わせたテンプレートを読み込む仕様にしたいと思っています。

例えば、最初にアクセスした時にform.phpというテンプレートを読み込むとします。
必須項目をすべて入力したら、次のconfirm.phpを読み込む。
入力してなかったら、form.phpを再度読み込んでエラーをフォームの上に表示する。

ここまではよくあるパターンだと思うのですが、入力エラーの場合
最初に入力した内容もリセットされます。
form.php内のフォームを
<input name="test" type="text" value="<?=$_POST["test"]?>">
とすれば元の入力値も表示されますが、ラジオボタンやチェックボックスの場合は
このような方法は使えません。

そこで質問ですが、確認を入力フォーム上で行う場合、どのような
構築の仕方・ソースの書き方をすればいいのでしょうか?

294 :289:2007/02/26(月) 13:16:10 ID:???
>>292
おもしろいけど・・・

295 :289:2007/02/26(月) 13:23:26 ID:???
>>293
sessionでもよいかと

296 :nobodyさん:2007/02/26(月) 13:24:31 ID:???
>>293
フォーム内容をポストの際にセッションに入れてから
判定処理

297 :289:2007/02/26(月) 13:27:51 ID:???
http://localhost/test.php?keyword=♥
これをそのまま♥と表示させるにはどうしたらいいですか?
<?php
$keyword = $_GET['keyword'];
echo $keyword;
?>
これだとうまくいきませんでした

298 :nobodyさん:2007/02/26(月) 13:29:24 ID:???
XAMPP使っている人いますか?

299 :nobodyさん:2007/02/26(月) 13:29:55 ID:???
使ってるよ

300 :293:2007/02/26(月) 13:33:31 ID:???
>>295-296
テキストボックスやテキストエリアの場合、それでもいいのですが、
チェックボックスやラジオボタンの場合は、どうするのでしょうか?

if ($_POST["items"]=="あああ") {
echo <input name="items" type="radio" value="あああ" checked="checked" />
} else {
echo <input name="items" type="radio" value="あああ" />
}

みたいなのを数だけ用意するのでしょうか?
でも、それだとソースが増えすぎる気が。。

301 :289:2007/02/26(月) 13:42:03 ID:???
checkedだけ変数に入れてもよいかと

if ($_POST["items"]=="あああ") {
$aaa = "checked";
}
echo <input name="items" type="radio" value="あああ" $aaa />

302 :293:2007/02/26(月) 13:53:37 ID:???
>>301
じゃ、テキストボックスが10個あったら

if ($_POST["items"]=="あああ") {
$aaa = "checked";
}

を数だけ用意する事になりますよね?それだとソースが増えすぎる気が・・。
(それが普通の書き方なら、分かるのですが・・・

303 :293:2007/02/26(月) 13:54:11 ID:???
じゃ、テキストボックスが10個あったら

じゃ、チェックボックスが10個あったら

すみません、書き間違いです。

304 :289:2007/02/26(月) 14:06:39 ID:???
switch($items){
case "あああ" : $aaa = " checked"; break;
case "いいい" : $iii = " checked"; break;
case "ううう" : $uuu = " checked"; break;



}
増えすぎますね でもこれしかわかりません ごめん
詳しい人いたらよろしくです
>>297の質問もよろしくです

305 :nobodyさん:2007/02/26(月) 14:17:13 ID:???
おいらはフォーム関連はHTML_quickformで処理してる。
投稿された、及びセッションからの値を 
デフォルト設定arrayに流してるなあ

306 :nobodyさん:2007/02/26(月) 14:28:15 ID:???
チェックボックスの値の保持&再現か・・・うーん。
そのHTML自体をPHPで生成して、checkedにしたい項目だけ置換して使うとか?

307 :293:2007/02/26(月) 14:35:58 ID:???
>>305-306
ありがとうございます。
自分でも色々考えたりググったりしているのですが、
どうしても問題が解決しません。

今回のケースでは「登録時」ですが、「編集時」はどうなるのか?
とか考えると、SESSIONで保持する方法は合わないと思うんです。

フルコントローラぽっく、ひとつのファイル上でテンプレートを読み込む
形を考えてるのですが、現状では難しそうなので、個々のファイルに
アクセスする方法に変えた方がいいかもしれませんね。

308 :nobodyさん:2007/02/26(月) 14:40:54 ID:???
>>297
rawurlencode( "♥" );


309 :289:2007/02/26(月) 14:58:22 ID:???
<?php
$keyword = $_GET['keyword'];
$keyword = rawurlencode( "$keyword" );
echo $keyword;
?>

>>308
ありがとうございます だめでした・・・

310 :nobodyさん:2007/02/26(月) 15:03:13 ID:???
>>309
ちがうよ。元のURLをエンコードしないと。
http://localhost/test.php?keyword=%26hearts%3b

311 :nobodyさん:2007/02/26(月) 15:06:40 ID:???
>>293
多次元配列にしてループで回せばいいじゃん
配列の配列で$valueと$checkedの値もってさ

312 :nobodyさん:2007/02/26(月) 15:22:45 ID:???
xxx.php?mode=regist&type=form (入力
($_get[type]==form){$tpl='form.php'}
白紙表示 :セッション[formdata]が在ればセッションから表示

ポスト->セッションへ格納

xxx.php?mode=regist&type=confirm (確認画面表示
($_get[type]==confirm){$tpl='confirm.php'}
エラー戻りはエラーメッセをセッション[error等]へ格納してformへ、 OKで完了はcomplateへ

xxx.php?mode=regist&type=complate (完了
保存処理&リダイレクト等

編集は
xxx.php?mode=modify&type=
(略
こんな感じじゃないのかねえ
なんとでもできそうな・・

<文法適当です

313 :289:2007/02/26(月) 15:24:13 ID:???
>>310
違います 説明が下手でごめんなさい 元のURLは
http://localhost/test.php?keyword=♥
で ♥と表示させたい です

314 :nobodyさん:2007/02/26(月) 15:28:06 ID:???
>>313
無理だよそんなの。URLのパラメータの仕組みを理解してください

315 :nobodyさん:2007/02/26(月) 15:30:18 ID:???
>>293
結局の所
チェックボックスの再現問題のみ?

316 :289:2007/02/26(月) 15:53:41 ID:???
>>314
無理ではありません
一応正規表現で置換するとできます
特殊文字全部置換しろってことでしょうか?

317 :nobodyさん:2007/02/26(月) 16:00:25 ID:???
>>316
RFC1738を参照: http://www.faqs.org/rfcs/rfc1738

URIに含むことが許されていない文字は、全てRFC1738に基づいて
URLエンコードしなければならない。

もちろん「?」もそのままではURIに含むことができないので、URLエンコード
する必要がある。rawurlencode("?") の結果をパラメータに指定するだけ。

318 :317:2007/02/26(月) 16:01:37 ID:???
&harts; が 「?」に化けた。
脳内変換しておいてくれ。

319 :nobodyさん:2007/02/26(月) 16:05:19 ID:???
>>304
>>293=>>297かよ
checkboxの話はどうなったんだ
ったく手当たり次第に思いつくまま質問しやがって

320 :293:2007/02/26(月) 16:08:21 ID:???
>>311-312
ありがとうございます。セッションに関してですが、
if (isset($_POST["name"])) {
$_SESSION["name"]=$_POST["name"]; //フォームの数だけ用意
}
みたいな感じになるのでしょうか?
それとも一括でポストをセッションに格納するのでしょうか?
>>315
自分で検討してみたところ、チェックボックスやラジオボタンについては

if (isset($_POST["name"]) {
$checked = "checked=checked";
}else{
$checked="";
}

みたいなのでいけました。(チェックボックスなら配列に入れてarray_search)
ただ、あまりスマートじゃありませんね。求める方法としては
312さんが書かれているような方法が最適だと思っています。
}

321 :293:2007/02/26(月) 16:09:32 ID:blVK8UOL
>>319
いえ。自分はひとつの事しか質問してません。
それにパラメーターにハートは無理だと思いますし・・。

322 :nobodyさん:2007/02/26(月) 16:10:05 ID:Sd3D9dFc
クラス内で定義された関数をコールするには $this->関数名(...) でできる
と思ったのですが、「Fatal error: Call to undefined function」が返ってきます。
どうすればできるのでしょうか? PHPのバージョンは PHP 4.4.4 です。

class MyClass
{
    function foo()
    {
        return "にゅるぽ";
    }

    function bar()
    {
        echo $this->foo()
    }
}

323 :nobodyさん:2007/02/26(月) 16:11:52 ID:???
>>316
そりゃ、QueryStringから抽出すればできるけど
そういう質問じゃないだろ。だったらURLエンコードするべき。
そんなURLが来るようなら元のURLを作ってる部分のバグ。
ためしに&heartsでググったらURLがどうなるかやってみろ。

324 :291:2007/02/26(月) 16:22:03 ID:???
>そりゃ、QueryStringから抽出すればできるけど
>そういう質問じゃないだろ。

最初からそういう質問ですけど・・・
URLはエンコードされてることくらいわかってるつもりですごめんなさい

325 :nobodyさん:2007/02/26(月) 16:27:21 ID:???
>>324
>最初からそういう質問ですけど・・・

自分で書いた>>297のソース見てみろよ。
普通にGETパラメータから取得しようとしてるじゃんか。
あれでやるならURLエンコードするしかないし
QueryStringから抽出するなら正規表現なり、substrなりご自由に。

>URLはエンコードされてることくらいわかってるつもりですごめんなさい

わかってるやつが書く文章とは思えない。「されてる」んじゃなくて「する」んだから。

326 :nobodyさん:2007/02/26(月) 16:37:08 ID:???
盛り上がってきました

327 :291:2007/02/26(月) 16:42:02 ID:???
>>325
QueryStringで取得してもGETで取得してもrawurlencodeするでしょ

>ためしに&heartsでググったらURLがどうなるかやってみろ。
URLはエンコードされてることくらいわかってるつもりですごめんなさい

googleに「されてる」と言う意味です

328 :nobodyさん:2007/02/26(月) 16:48:37 ID:???
>>327
何度も言うけど、URIに含まれてはいけない文字は、URLエンコード
する必要があるんだってば。

パラメータで指定する際に、
http: //localhost/test.php?keyword=%3F (Shift-JISの場合)

329 :291:2007/02/26(月) 16:53:57 ID:???
>>328
わかってます 何度も言うけどそれはわかってます
しかしもし特殊文字を入れられたときそれをちゃんと表示させたいのです
完璧を求めちゃいけませんか?


330 :nobodyさん:2007/02/26(月) 16:54:01 ID:???
>>327
>QueryStringで取得してもGETで取得してもrawurlencodeするでしょ

この文章も意味がわからないし・・・

1.$_GET["target"]で取得する

 元のテキストをrawurlencodeしてください

2.QueryStringから取得する

 $_SERVER["QUERY_STRING"]を使って
 正規表現、strpos、substrなどで抽出してください。

これのどちらかです。好きなほうを選んでください。
個人的にはrawurlencodeするのをそこまで渋る理由がわからない。


331 :291:2007/02/26(月) 17:06:08 ID:???
>>330
違います URLに特殊文字を直接入力されたとき
置換するとそのまま表示できるので
特殊文字全部を置換しなければいけないのでしょうか?

特殊文字全部を置換するとできますが、他に簡単な方法はないのでしょうあk?

332 :nobodyさん:2007/02/26(月) 17:06:44 ID:???
>>329
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    < 完璧を求めちゃいけませんか?
    |      |r┬-|    |      
     \     `ー'´   /      
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

333 :nobodyさん:2007/02/26(月) 17:10:01 ID:???
>>331
フォームからの入力じゃなくて
URLをエンドユーザーにいじらせるの?新しいなw

334 :nobodyさん:2007/02/26(月) 17:12:40 ID:eLbz34G2
皆さんアドバイス下さい!

PHPからmySQL等でDB取得する際にSQL文が必要ですが、

1,パターンに応じてPHPでSQL文を色々と生成して一つの取得関数からdataを取る
2,取得関数を沢山つくりそれぞれで取得

検索やら、WHERE後の条件が複雑な時、皆さんどうしてますか!

335 :291:2007/02/26(月) 17:15:38 ID:???
ようするに
ttp://ja.wikipedia.org/wiki/PHP♥
これは特殊文字全部置換してるの?と疑問に思ったので

フォームからもURLからもいけるって楽じゃないですか

>>334
1,パターンに応じてPHPでSQL文を色々と生成

336 :nobodyさん:2007/02/26(月) 17:16:22 ID:???
>>334
テスト的にコンソールからSQLを実行するときに
コピペだけで済んでラクだから2

337 :246:2007/02/26(月) 17:17:50 ID:nxJeXNNs
返事が遅くなりました。
>>248
>>249
ヒント、ありがとうございます。
なるほど、確かに1回しか発行してませんね・・・。
機能している個別の修正フォームを使い回した為、
その部分は問題ないと思いこんでおりました。

>>277
詳しいご説明、ありがとうございます。
自宅に戻り次第、試してみます!
一括で変換する場合は注意が必要と、勉強させてもらいました。
ありがとうございました。

338 :nobodyさん:2007/02/26(月) 17:19:45 ID:???
>>335
やっぱりURLパラメータじゃないじゃん。substrしなよ、簡単でしょ。

339 :291:2007/02/26(月) 17:23:22 ID:???
>>338
substrですか? ちょっと意味がわかりません
詳しくお願いします

340 :nobodyさん:2007/02/26(月) 17:33:39 ID:???
>>339
<?php
  //$requestURI = $_SERVER["REQUEST_URI"];
  $requestURI = "http://ja.wikipedia.org/wiki/PHP♥";
  $lastIndexOfSlash = strrpos( $requestURI, "/" );
  echo substr( $requestURI, $lastIndexOfSlash+1 );
?>


341 :nobodyさん:2007/02/26(月) 17:34:31 ID:???
>>335
それはPATH_INFO使ってるかApacheのmod_rewriteじゃないかと思う

342 :nobodyさん:2007/02/26(月) 17:36:14 ID:???
くそ、Janeで化けた

<?php
  //$requestURI = $_SERVER["REQUEST_URI"];
  $requestURI = 'http://ja.wikipedia.org/wiki/PHP♥"e;';
  $lastIndexOfSlash = strrpos( $requestURI, "/" );
  echo substr( $requestURI, $lastIndexOfSlash+1 );
?>


343 :nobodyさん:2007/02/26(月) 18:14:53 ID:???
>>342
また君か…

344 :nobodyさん:2007/02/26(月) 18:15:13 ID:???
>>342
おまえは何がしたいんだ

345 :nobodyさん:2007/02/26(月) 18:27:30 ID:???
質問です。

ページを表示した際、
<!--kokotitle-->と記した箇所を、任意のページタイトルに置き換える様に

$title = str_replace('<!--kokotitle-->', $pagename, $title)

とPHPを記述したのですが、Yahoo、googleなどの検索エンジンで
タイトル部分を読み取ってくれません。
ロボットはPHPを実行してはくれないのでしょうか?
ご教授お願いします。

346 :nobodyさん:2007/02/26(月) 18:34:15 ID:???
>>345
<?php
  $pagetitle = "下らねぇ質問はここに書き込みやがれ 40";
...
?>



<html>
...
<?= $pagetitle ?>
...
</html>

googleかなにかではGETでidっても文字使ったのは極力使うなと言われてるかな
hogehoge.php?id=777

347 :345:2007/02/26(月) 18:38:47 ID:???
>>346
idに文字は使ってません。
テンプレート型のアルバムで
<title><!--kokotitle--></title>
このタイトルが可変部分で、表示した時にタイトルが置き換わる様になってるんです。

ちなみに$pagetitleが含まれてるのが別スクリプトなので、
<title><?include("../../../../../title.php"); print $pagetitle?></title>
といちいちincludeしなきゃいけないのも何だか負荷かかりそうですね。

348 :nobodyさん:2007/02/26(月) 18:46:10 ID:???
>>347
ひょっとしてそれはギャ(ry

>>346は1つのファイルの中に記載
phpの場合はhtmlとphpが共存できる
<?php ... ?>の部分はphpで処理されてそれ以外はhtml

349 :nobodyさん:2007/02/26(月) 18:51:54 ID:???
ん?別ファイルじゃダメな理由は?
例えばSMARTYだとタイトルきちんとなってない?

350 :nobodyさん:2007/02/26(月) 18:54:44 ID:???
思うに
<!--
これ使うから表示されないんじゃね?

351 :291:2007/02/26(月) 19:26:00 ID:???
もういいです。

352 :nobodyさん:2007/02/26(月) 19:34:14 ID:???
>>351

>>339-340で抽出できたんじゃないの?

353 :nobodyさん:2007/02/26(月) 19:51:42 ID:FYsfyk0l
zendやpearにもあるインデントでタブの使用をすすめないのはなぜでしょうか?
タブのほうが楽なんですけど理由があるなら空白に移りたいです

354 :nobodyさん:2007/02/26(月) 19:54:46 ID:???
>>353
見る人のタブのインデントサイズによって見え方が変わるから

355 :nobodyさん:2007/02/26(月) 20:25:31 ID:???
なるほど、それなりの理由があるのですね。
ありがとうございます。

356 :nobodyさん:2007/02/26(月) 20:36:32 ID:Sd3D9dFc
class MyClass
{
    function foo()
    {
        return "にゅるぽ";
    }

    function bar()
    {
        echo $this->foo()
    }
}

同一クラス内で定義されたメンバにアクセスしたいのですが
$this->関数名() や self::関数名() では「Fatal error: Call to undefined function」が返ってきてしまいます。

どうすればできるのでしょうか?
PHPのバージョンは PHP 4.4.4 です。

357 :nobodyさん:2007/02/26(月) 20:44:23 ID:???
echo MyClass::foo();
こうならできるんですか……

358 :nobodyさん:2007/02/26(月) 20:48:14 ID:Sd3D9dFc
>>357
それならできます。

が、あるスクリプトのソースを読んでみたら
$this->関数名() や self::関数名() が使われていました。
その関数は同一クラス内でコールされた関数です。

ちなみに self::関数名 だと「Fatal error: Undefined class name 'self'」が返ってきます。

359 :nobodyさん:2007/02/26(月) 20:51:56 ID:???
undefinedなら普通に関数名間違えてるだけじゃないの

360 :nobodyさん:2007/02/26(月) 20:54:37 ID:P0Om59/A
for($ore=0;$ore<100;$ore++){
if($ore==50) die;
}

361 :nobodyさん:2007/02/26(月) 20:56:06 ID:Sd3D9dFc
>>359
それが何度も見直したし、関数名をコピー&ペーストしてみたんですが
やはり結果は同じです。関数名は間違えていないと思います。

そのあるスクリプトというのが、PHP5で書かれているとあったので
$this->関数名() や self::関数名() は PHP4.4.4 では使えないのかしら?

362 :nobodyさん:2007/02/26(月) 20:58:27 ID:???
とりあえずテストした原文そのまま張った方が早いんじゃなかろうか

363 :nobodyさん:2007/02/26(月) 21:05:54 ID:???
echo $this->foo()のセミコロンが抜けてるあたりからして
実際のコードとは違うんだろうな

実は タ イ ポ なんじゃないか?

364 :nobodyさん:2007/02/26(月) 21:06:58 ID:Sd3D9dFc
>>356 をテストしたら
「Fatal error: Call to a member function on a non-object」が返ってきました。

うーん、素直に クラス名::関数名() でアクセスするしかないか……。

365 :nobodyさん:2007/02/26(月) 21:09:07 ID:???
クラスnewしてないとかそういうオチじゃなかろうな

366 :nobodyさん:2007/02/26(月) 21:09:15 ID:Sd3D9dFc
>>363
すみません。

でも、実際のコードを貼ると何百行にもなってしまいます。
しかもそのクラスはincludeされる方なので……。

367 :nobodyさん:2007/02/26(月) 21:10:21 ID:Sd3D9dFc
>>365
それかも知れません。
詳細情報をお願いします。

368 :nobodyさん:2007/02/26(月) 21:12:56 ID:???
>>356
の下に
$obj_myclass = new MyClass();

$obj_myclass->bar();
追加して php -f test.phpしたら にゅるぽ って普通に出るが
WinBinary php 4.4.5

369 :nobodyさん:2007/02/26(月) 21:13:17 ID:???
>>367
$hoge = new MyClass();
$hoge->foo();

370 :nobodyさん:2007/02/26(月) 21:13:34 ID:???
>>367
工エエェェ(´д`)ェェエエ工

371 :nobodyさん:2007/02/26(月) 21:20:54 ID:???
なんだかどっと疲れが出たぜ…

372 :nobodyさん:2007/02/26(月) 21:24:09 ID:Sd3D9dFc
なるほど、MyClass::bar() のように静的にアクセスするのではなく
new でオブジェクトを生成しないと、$this->関数名() でコールできないんですね。

今度はうまくいったみたいです。
ありがとうございました。

373 :nobodyさん:2007/02/26(月) 21:43:00 ID:lOqD3fXr
すいません質問です

ユーザーが自由に登録できるフォームで、半角英数しか使わせたくないのですが、
/や\などの記号を禁止するにはどうしたらいいのでしょうか?
strstrで特定の記号を含むかどうかチェックしていくのでしょうか?

374 :nobodyさん:2007/02/26(月) 21:58:57 ID:???
>>373
正規表現使うか、ctype_alnum()を使う
フォームでJavaScriptでチェキするとコスト削減になる(PC)

375 :nobodyさん:2007/02/26(月) 22:09:53 ID:lOqD3fXr
>>374
すばやい返答ありがとうございます
ジャバスクリプト使えないので、ctype_alnum()を調べてみます

ありがとうございました

376 :375:2007/02/26(月) 22:14:04 ID:lOqD3fXr
>>374
ctype_alnum()で一発でできました
本当にありがとうございます

あなたが今晩良い夢を見られますように

377 :nobodyさん:2007/02/26(月) 22:51:50 ID:bnCsMm+y
初めましてよろしくお願い致します。
$con=mysql_connect("localhost","us","pas","test1");
$query="select*from kate;";
$res=mysql_query($con,$query);
while ($row=mysql_fetch_array($res)){
print('<tr><td>'.$row["id"].'</td><td>'.$row['name'].'</td><tr>');
}
mysql_free_result($res);
初めてのPHPで、データベースからidとnameを取り出したしたいんですが
以下のようなエラー表示がされます
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in
が表示されます。
自分で調べてみたのですが良くわからなくなってしまって・・・
よろしくお願いします。

378 :nobodyさん:2007/02/26(月) 22:59:43 ID:???
>>377
はじめましてじゃないし。>>167>>169
引数が多すぎてDBに接続できてない。

379 :345:2007/02/26(月) 23:00:34 ID:???
>>345の問題原因分かりました。
http://******.jp/test.php?a=orangeだとtitleがorange、
http://******.jp/test.php?b=rangeだとtitleがrange
と置き換えられる様に組んでたんですが、
検索エンジンではどうやら?以降が無視されて
全部クエリー無しのtest.phpで認識されちゃうみたいです。

これは静的ページを作る以外どうしようも無いんでしょうか?

380 :345:2007/02/26(月) 23:07:37 ID:???
以下の方法で自己解決しました;
ttp://blog.tanaka-cs.com/archives/2004/09/post_11.html
お騒がせしました皆さん。
おやすみなさい。

381 :nobodyさん:2007/02/26(月) 23:17:25 ID:7mBYKw3T
フォームからアップされた画像、またはメール添付で来た画像を
そのまんまファイルとして保存するときに注意するべきことってありますか?
特にセキュリティ的な観点で。

JPEGはいろいろ埋め込めるとかいう情報を聞いたので不安になって。
あと画像に偽装したexeファイルとかがありうるのか??とか。

382 :nobodyさん:2007/02/26(月) 23:43:39 ID:???
>>377
自分で調べてみたとのことですがまずどう調べたのかを教えてください

383 :nobodyさん:2007/02/26(月) 23:45:53 ID:???

これって怖くねーか?
何のアプリなの?
ttp://www.phppro.jp/phptips/archives/vol28/#2

384 :nobodyさん:2007/02/27(火) 00:03:09 ID:???
>>378>>382
氏ね

385 :nobodyさん:2007/02/27(火) 00:10:08 ID:???
>>384
死ねボケ

386 :nobodyさん:2007/02/27(火) 00:23:44 ID:vlBw/BNp
ある文字から一文字を取得する正規表現を書いたのですが配列が無駄に作られてしまいます。

自分が求めている結果はArrya([0]=>a)なのですが、配列の中に配列ができてしまいます。
どなたかご教授お願いいたします。

$str="abcdefg";
preg_match_all("[a]",$str,$hensu);

$hensuの中身
Array(
[0] => Array([0] =>a)
)



387 :nobodyさん:2007/02/27(火) 00:56:25 ID:???
>>386
一文字あるかどうかなら preg_match のほうがいいんじゃね。
んであれば preg_match が1を返すから

if(preg_match("[a]",$str)){
print "aあるよ!";
}

でいいんじゃない?
いまいち使用目的が分からんから的外れかもしれんけど。

388 :387:2007/02/27(火) 00:58:01 ID:???
見つけた回数数えたいなら、preg_match_allの返り血も見つけた回数返すからそっちでもいいと思うけど。

389 :nobodyさん:2007/02/27(火) 01:19:31 ID:???
>>386
それがpreg_match_allの機能だが。
自分の無知を棚に上げて無駄とかほざくんじゃねぇカスが。
関数リファレンスみてパラメータや関連関数を使えばお望みの出力が得られるんじゃね。

390 :386:2007/02/27(火) 01:19:51 ID:vlBw/BNp
preg_matchだとArrya([0]=>a)という結果ができました。ありがとうございます。
preg_match_allだと無駄に配列ができてしまうのですが解決策はないでしょうか?

正規表現で結果を配列に取得したときにArrya([0]=>a)としたいのですがなかなか解決しないっす。

391 :nobodyさん:2007/02/27(火) 01:22:03 ID:???
>>384-385>>389があぼ〜んされてる

392 :nobodyさん:2007/02/27(火) 01:36:16 ID:???
>>390
無茶言うな

393 :nobodyさん:2007/02/27(火) 01:43:59 ID:???
>>390
自分でCで関数書くので無い限り、道具に自分を合わせるべきだと思う。
そこにこだわる必要性も感じないし。
柔軟に考えたほうがいいんじゃない。

394 :nobodyさん:2007/02/27(火) 01:45:55 ID:???
>>381
なにかの本に、「画像ファイルは拡張子がついてても信用するな!」って
書いてあった(気がする)。

395 :nobodyさん:2007/02/27(火) 02:44:34 ID:???
>>381
>>394
まずその脳みその脆弱性にパッチを当てて下さい。

396 :nobodyさん:2007/02/27(火) 03:42:18 ID:kRyot4Bb
2バイト文字をエンコード?(言葉違ってたらすみません)したいのですが、
http://ja.wikipedia.org/wiki/ウィキ
を、
http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD
といった感じにするには、どのような関数を使えば実現できるのでしょうか?

397 :nobodyさん:2007/02/27(火) 03:55:44 ID:???
>>396
http://jp.php.net/manual/ja/function.rawurlencode.php

398 :nobodyさん:2007/02/27(火) 04:12:48 ID:UeI7w9y/
file_exists()ってURLだと機能しないんだね。何年もphp使ってるけど今日はじめて知ったよ。
それで、家にある本しらみつぶしに調べたけどどの本にもそんな注意書きないんだよね。
php.netのマニュアルにも明確に書かれてないし。。
file_exists()がURL指定ではダメで、fopenなら大丈夫って言う境界線は何なんだろう。

399 :nobodyさん:2007/02/27(火) 04:15:31 ID:LoXhV5hd
DBをMySQLやめてSQLiteにしたほうが速度が出るとかってあります?
DBサーバーがクソ遅いれんさばを借りてしまったんです。


400 :nobodyさん:2007/02/27(火) 04:25:48 ID:???
>>399
ここのスレタイ知っています?

401 :nobodyさん:2007/02/27(火) 06:18:42 ID:L7ggisbu
半角二十字前後、2500行程のファイルを処理したいのですが、これはPHPで扱う上で大きすぎる物でしょうか?

プログラミング歴が浅く、自分が扱うファイルが大きい方なのか小さい方なのか検討が付きません。
もし大きすぎるようであればファイルを分割する等して対処しようと思っています。

402 :nobodyさん:2007/02/27(火) 06:27:14 ID:???
>>390
allは複数の結果を一発で取得するために用意されてる機能なんだから
配列の配列じゃなきゃ意味がないじゃない。
なんでallにこだわるの?

403 :nobodyさん:2007/02/27(火) 06:28:45 ID:???
>>401
ごく普通かと。

404 :nobodyさん:2007/02/27(火) 06:47:33 ID:L7ggisbu
>>403
普通ですか、有難う御座います。
そのまま処理する事にします。

405 :nobodyさん:2007/02/27(火) 07:10:57 ID:???
すみません、質問です。
phpにアップロードされたJPGファイルを複製して
サイズを変更した上でサーバーに保存するみたいな機能ってありますか?

たとえば画像掲示板とかって、書き出し時にAタグのwidth属性とかで
縮小版を表示⇒クリックして元のサイズの画像表示してますけど、
縮小版ではなく、完全にオリジナルとは別の小さいサイズの画像を表示させるとか
出来たらいいなぁと思ってるんですが、、
phpで無理なら、他のやり方ってありますか?

406 :nobodyさん:2007/02/27(火) 07:30:08 ID:???
>>405
GDとか使えるようになってれば簡単にできるよ。
マニュアルのこの辺参照。
ttp://www.php.net/manual/ja/ref.image.php

407 :390:2007/02/27(火) 07:51:20 ID:vlBw/BNp
う〜ん、仕様なら仕方ないですよね。
allを使わず、preg_matchで求めてる結果になるよう挑戦してみます

408 :nobodyさん:2007/02/27(火) 08:02:11 ID:???
>>407
仕様っつーか、マッチするもの全部(複数個)取得→match_all()、1件だけ→match()と
使い分けるものなのに、何故わざわざ1件のみの取得にallを使おうとするのかが意味不明。
そもそも元のコードで
$str="abcdefg";
preg_match_all("[a]",$str,$hensu);
とあったけど、
$str="abcadefg";
preg_match_all("[a]",$str,$hensu);
という内容だったらどういう結果が返ってきて欲しいわけ?

409 :nobodyさん:2007/02/27(火) 08:40:27 ID:???
>>406
おお、ありがとうございます。
助かりました!

410 :nobodyさん:2007/02/27(火) 08:50:18 ID:???
>>395
お前は氏んだほうがいいよwww
こういう馬鹿なド素人ばかりだから、システムの脆弱性はいつまでも無くならない。

411 :nobodyさん:2007/02/27(火) 08:54:52 ID:vlBw/BNp
すみませんでした。
乗せたコードの$strに入っているaは一つだけですが、
複数存在した場合Array([0]=>a,[1]=>a,[2]=>a・・・)のような結果を期待しております。
match_allですと配列の中にまた配列というふうに多重になってしまい期待した通りにはならないアドバイスを受けました。


412 :nobodyさん:2007/02/27(火) 09:43:40 ID:???
$hensu[0]で扱えばいいんじゃね?

413 :nobodyさん:2007/02/27(火) 10:09:43 ID:???
>>411
ふーん。
じゃあ、
$str="abcadabefg";
preg_match_all("(a)(b)",$str,$hensu);
の場合は?

414 :nobodyさん:2007/02/27(火) 10:13:35 ID:???
>>411
preg_match_all("[a]",$str,$hensu);
$hensu = $hensu[0];
でいいんじゃないかな。

415 :nobodyさん:2007/02/27(火) 10:38:27 ID:dFVIrde4
変数の中身見て振り分けで。 :D

416 :nobodyさん:2007/02/27(火) 10:40:02 ID:???
foreachで回せ!

417 :虚弱PHP:2007/02/27(火) 11:07:41 ID:???
>>372
staticメソッドとか、インスタンスとか勉強した方がいいと思うよ。

>>374
javascriptでのチェックはユーザーの利便さのためであって、
サーバー側でのチェックがいらなくなるわけじゃない。
再チェック絶対必要。

>>379
本題とは関係ないけど、ひとまずXSSされないように気をつけてね。

>>399
ベンチマークをとりましょう(ローカル環境でね)。
SQLiteの方が速い場合はあるよ。

418 :nobodyさん:2007/02/27(火) 11:46:50 ID:???
よく使う変数名について解説・表示しているサイトってないですかね?

どういう変数名を付ければいいか悩んで
なかなか進まない時があります…。

419 :nobodyさん:2007/02/27(火) 11:59:02 ID:???
カコイイ変数名を考えてるだけで一日が終わってしまう事ってよくあるよね〜

420 :nobodyさん:2007/02/27(火) 12:04:00 ID:???
>>418
・普通に英語にする
・わからなかったら辞書引く
・ライブラリやフレームワークのソースをたくさん読んでみる

421 :nobodyさん:2007/02/27(火) 12:08:20 ID:???
$result にするか $res にするか迷うよね〜♪

422 :nobodyさん:2007/02/27(火) 12:08:22 ID:???
上部で 
/*  変数名+番号:顔写真
    変数名+番号:身分証写真 */

って感じでコメント付けちゃってるな
コード使い回すときに便利良いかなとおもって。

423 :nobodyさん:2007/02/27(火) 12:20:35 ID:???
そういえばコメントの付け方も迷うよな。

/**
* 会員登録
*/

とかするのが、コーティング規約なんだろうけど、これだとわかりづらいしな。。


424 :nobodyさん:2007/02/27(火) 12:27:56 ID:???
>>418
仕事でやっていないなら、変数名なんて、自分が分かりやすいのをつければいいだけど。
昔、VBの変数名を日本語でやっている人もいたけど、それで分かりやすければ、それもありかと。
仕事でなら、プロジェクト内のネーミング規約を作るはずだから、それに従えばOK。

425 :nobodyさん:2007/02/27(火) 12:28:42 ID:???
>プロジェクト内のネーミング規約を作るはずだから

作るものなの?

426 :nobodyさん:2007/02/27(火) 12:29:33 ID:???
作らないものなの?

427 :424:2007/02/27(火) 12:32:25 ID:???
>>425
>作るものなの?
普通は作るよ。
たまにドキュメント不要論を声高に主張する人がいる現場だと、
作らないこともあるけど、違う人がソースを読む時に、混乱する。バグの元。
同じつづりなのに、全く違う意味を持ってたら、読みにくいでしょ。

428 :nobodyさん:2007/02/27(火) 12:34:15 ID:???
>>427
ある程度の構築仕様書は作るんだけど、ネーミングは作ってないな。
最初にネーミングを考えて作るより、作りながら考えた方が早いと思って。

が、実際に悩むもんな〜

429 :nobodyさん:2007/02/27(火) 12:36:13 ID:???
揉めるのが変数に型名を入れるかどうか。
この変数は見た目でブーリアンとか分からない!とかかんとか。

430 :nobodyさん:2007/02/27(火) 12:39:05 ID:???
クラスやメソッド、定数の命名規約はあるけど、さすがに変数の規約は経験ないなぁ。
命名規約っていっても、キャメルケースとか、特定のPrefixをつけるとかそんなもんだけどね。


431 :nobodyさん:2007/02/27(火) 12:41:48 ID:???
作ってて後から変数名を変えたくなるの、結構あるもんな。

最初はnameだけにしてた箇所も、後からc_name(会社名)とかm_name(会員名)
に分けたいとか言った場合とかさ。

なんしか、悩むべき箇所だよな

432 :424:2007/02/27(火) 12:42:42 ID:???
>>428
俺は、詳細設計の段階で変数となりそうなものを、ピックアップしてリストにしちゃうけど、
# クラス設計の際にクラス名、メソッド名で使うから、その流れで。
その後は、情報を共有してなるべく統一するように心掛けるって感じかな。
設計段階で、全て割り出せエスパーはいないから。

>>429
VBだとプリフィックスでstrとかblnとかつけるけど、javaやphpはつけないなぁ。
javaはコンパイラでエラーがでるから早期に分かるけど、phpはバグの時に気付く...orz

433 :nobodyさん:2007/02/27(火) 12:44:04 ID:2btkWh5g
ini_setの質問です php5.1.6
でかい動画のアップロードをしようと思っています。ini_setで↓POSTとUPLOADを変えようと思っても、変わらないのです…メモリーは変わりますが…
ini_set('post_max_size', '500M');
ini_set('upload_max_filesize', '450M');
ini_set('memory_limit', '500M');
phpinfo();

マニュアルを見る限り、少なくともupload_max_filesizeは変わるはずなんです…
upload_max_filesize "2M" PHP_INI_PERDIR PHP <= 4.2.3では、PHP_INI_ALL
post_max_size "8M" PHP_INI_PERDIR PHP <= 4.2.3 では PHP_INI_SYSTEM。 PHP 4.0.3 以降で利用可能。
ttp://jp2.php.net/manual/ja/ini.php

php.iniの方を変えれば勿論大丈夫ですが、流石にアタック食らったりしたら…と言うことで、一部だけ変えたいのです。何故変更できないかご存知の方いませんか?;;

434 :nobodyさん:2007/02/27(火) 12:45:59 ID:???
ネーミング規約はないなあ
せいぜい大文字を使う場合とか_を使う場合とか
そのへんのフレームワークと同じ程度

ちょっと長いクラスを書くと関数名が被って
面倒になってxxxxx1とかつけちゃって読みにくいったら

435 :nobodyさん:2007/02/27(火) 12:51:29 ID:???
それに動作も書くと余計に長くなる。
例えば、「会員用のプロフィールにある名前」
とか言う場合だったら $member_profile_nameとか、$m_profile_nameとか
$memberProfileNmaeとかになるだろうけど、いかんせん長い。

だから434みたいに数字付けるけど、たしかにわかりにくい。

436 :nobodyさん:2007/02/27(火) 13:05:03 ID:???
Cとかコンパイル言語は変数名長くても気にしないんだけどPHPはどうなの
長いと少し遅くなるのか(といっても誤差範囲だろうけど)

>>433
PHP_INI_PERDIR は .htaccessまで ini_setじゃ無理

437 :nobodyさん:2007/02/27(火) 13:06:33 ID:???
>>433
両方ともPHP_INI_PERDIR
ini_setからは変えられない

438 :nobodyさん:2007/02/27(火) 13:27:51 ID:???
>>435
だんだん長くなってきて、むかついてきて、
そのうち $member_profile_name_getを
$m_p_n_g1 とかやっちゃって余計に分からなくなる。

439 :nobodyさん:2007/02/27(火) 13:30:37 ID:???
>>438
あるあるwww

440 :nobodyさん:2007/02/27(火) 13:31:47 ID:2btkWh5g
>435>437
ありがとうございます
でも、 PHP <= 4.2.3では、PHP_INI_ALL
って、php4.2.3以上では、ALLで何処でも変更可能って、解釈してたんだけど、違いますか?


441 :nobodyさん:2007/02/27(火) 13:34:04 ID:2btkWh5g
>440
取り消す… ごめん、不等号読めてなかった。。。w
素直にiniいじります

442 :nobodyさん:2007/02/27(火) 13:36:12 ID:???
POSTのデータをPHPに渡す時、
外部サーバからデータを送信されるのを防ぐのに一番適切な方法は何ですか?

当初リファラでチェックしてたんですがi-modeでエラー出るみたいで。

443 :nobodyさん:2007/02/27(火) 13:59:30 ID:???
>>442
携帯の時だけリファラチェック外せば?

444 :nobodyさん:2007/02/27(火) 14:08:33 ID:???
やっぱりリファラでチェックするのが一番いいって事ですか?

445 :nobodyさん:2007/02/27(火) 14:10:16 ID:???
もっと自分に自信を持てよ

446 :nobodyさん:2007/02/27(火) 14:12:35 ID:???
自分がやってる事がほかの人と同じかどうか気になるってなんだろうね
日本人気質か
セッション使うとか、いろいろやり方はあるだろ

447 :nobodyさん:2007/02/27(火) 14:14:35 ID:???
>>445-446
一番セキュリティにいい方法は何かなと意見仰いだだけなのに何でそこまで言われるのか…orz

448 :nobodyさん:2007/02/27(火) 14:16:48 ID:???
受けたw

449 :nobodyさん:2007/02/27(火) 14:22:53 ID:???
「××使うとか色々あるだろ?」とか言うのは
知識だけ知ってて実際のやり方は知らない
所謂知ったかぶりの典型
日本人気質か

450 :nobodyさん:2007/02/27(火) 14:25:41 ID:???
携帯(docomo)でエラーがでているという時点で
セッションも潰れるのは確定。
もちろんプロキシ変数もだめ。
携帯も使えてなるべくセキュアにというのなら
携帯のみ別ルーチンしなければならない。

451 :nobodyさん:2007/02/27(火) 14:27:47 ID:???
ドコモでセッション駄目だったっけ?
リファラーやクッキーは怪しいけどセッションは通ったような。

452 :nobodyさん:2007/02/27(火) 14:28:51 ID:???
「意見を仰ぐ」という用法はおかしい

453 :nobodyさん:2007/02/27(火) 14:30:19 ID:???
で、携帯以外での方だけど確実って言える方法はまずないです。
ある程度自分で決めて実際にやっていったら良いと思う。
リファラを抜けるくらい必死な奴だとちょっとした串チェックも
抜けてくるので焼き鳥等でブラックリスト化するってくらいかな

454 :nobodyさん:2007/02/27(火) 14:32:36 ID:???
なるほど。どうもです。

455 :nobodyさん:2007/02/27(火) 14:33:26 ID:???
また日本語に五月蝿いやつか

456 :nobodyさん:2007/02/27(火) 14:35:38 ID:2KFAKokD
>>353-354
それはいつも思うんだが、タブ(の幅)っつうのはエディタの設定でしょ?
そのプロジェクトのルールで、タブ幅は4文字分って決めればいいだけの話じゃない?
空白ははっきりいって効率が悪い。

457 :nobodyさん:2007/02/27(火) 14:36:10 ID:???
>>451
もしかしたらクッキーとまちがいたかも…
以前docomoでクッキーかセッションかで渡したら
んなもんないぞゴルァっていわれたのしか覚えてないんだ
適当言ってゴメン

458 :nobodyさん:2007/02/27(火) 14:46:26 ID:???
>>456
同意! 前の会社は半角スペース2文字だった
確かに見た目はそれなりに良いとは思うが面倒くさくてたまらんかった・・・・
しかしながら、ソース内のテーブル定義を編集する時
カラム毎の複数行にわたる部分コピペとかでは楽だった。

459 :nobodyさん:2007/02/27(火) 14:46:44 ID:???
ドコモはリファラとクッキーは駄目
クッキーが駄目なんでURLに付加するセッションなら可

460 :nobodyさん:2007/02/27(火) 14:51:11 ID:???
>>459
ああ、URLに何もくっつけないでとばしてたからか…

461 :nobodyさん:2007/02/27(火) 15:03:41 ID:???
>>442
優しい俺が教えてやろう。
お前がやろうとしてることは「CSRF対策」と本質的に同じだ。
したがってCSRFについてググれ。

462 :虚弱PHP:2007/02/27(火) 15:48:20 ID:???
>>456
タブ幅とインデントを区別しないと
4インデント、8タブとか使ってるような
Emacsユーザーに「は?」とかムカつく反応されるぞw

463 :nobodyさん:2007/02/27(火) 16:12:33 ID:???
>>456
別にそのプロジェクトだけだったらそれでいいんじゃない
ただアンカー先の話題はpearやzfの話だろ
公開ライブラリみたいに不特定多数が使う場合は
環境によって見え方が変わらない方がベターって事
あとスペースで効率が悪いのは
スペース設定のタブ使ってないからじゃないの
それこそエディタ設定の話

464 :nobodyさん:2007/02/27(火) 16:27:36 ID:???
まぁ文句はコーディング規約に言えという事で

465 :nobodyさん:2007/02/27(火) 16:28:49 ID:???
まぁエディタだけでソースを見る訳じゃないからね。
lessでちょっとだけ見たいときもあるし、csvwebとかから見ることもある。
diff -u で作ったパッチをわざわざエディタで確認することは滅多にないけど、
良く見る情報だからズレるとちょっとイヤかな。

そんなわけで分割スペース派


466 :nobodyさん:2007/02/27(火) 17:58:47 ID:???
GNU-GPL-Q3(オープンソースなquake3エンジン)使えば一括インストーラーになってインストールもラクチンになるよな!
なんて夢を一瞬見ました。

467 :nobodyさん:2007/02/27(火) 18:35:29 ID:???
>>434
そうやって意味の無い数字で名前つけるのはやめれ
引継ぎが発生すると後から面倒見るやつが地獄を見る
そうでなくても未来の自分は他人と同じ

>>435
クラスを使えばそんな名前付ける必要は出ないんじゃ

468 :nobodyさん:2007/02/27(火) 19:00:42 ID:DCSYlRNJ
指摘されてこちらに来ました。

どなたかご存知でしたらご教授下さい。
$_POST に渡される文字列で "." が "_" に自動的に置換されてしまいます。
Apache もしくは PHP の設定かと思うのですが、良く分かりません。
原因をご存知でしたら教えて下さい。
よろしくお願いします。

469 :nobodyさん:2007/02/27(火) 19:56:31 ID:???
>>468
http://jp.php.net/manual/ja/language.variables.external.php

470 :nobodyさん:2007/02/27(火) 21:13:50 ID:WfwsS845
http://www.php.net/manual/ja/ref.simplexml.php
の例えば”例 2102. 値を設定する”で、
$xml->movie[0]->characters->character[0]->name = 'Miss Coder';
ってあるんですけど、
[0]って必要なんでしょうか?

471 :nobodyさん:2007/02/27(火) 21:33:32 ID:???
必要ないです

472 :nobodyさん:2007/02/27(火) 21:45:20 ID:???
サンプルのXMLの場合はmovieもcharacterも1つだからどっちでも値は取れる
ただ映画情報のXMLでmovieとcharacterのエレメントは
複数登録されるようなフォーマットのイメージだから
そういう取り方をしてるのかと

473 :nobodyさん:2007/02/27(火) 21:47:50 ID:???
関数内の global って、
多次元配列変数を指定した場合、その配列内の3次元以上のものは
取得できないのでしょうか?

関数内で print_r してみると、
配列変数内の、3次元以上のものが表示されません。

474 :nobodyさん:2007/02/27(火) 22:02:59 ID:???
*recursion*してるだけじゃない?

475 :nobodyさん:2007/02/28(水) 00:12:30 ID:???
>>473
普通に関数外のものと同じものが得られるはずだが。
サンプルコード出せる?

476 :nobodyさん:2007/02/28(水) 01:22:24 ID:???
>>474-475
ありがとうございます。呼び出し元自体が関数で、
そこに global で呼び出していないのが原因でした。
凡ミス恥ずかしい限りです。ただ、

function func1() {
  global $test; // これを書いていなかった

// 〜配列の生成処理等〜

  $test["items"] = $_tmp["items"]; // これのみ二次元配列の代入
  $test["prices"] = $_tmp["prices"]; // 一次元配列の代入
  $test["data"] = $_tmp["data"]; // 一次元配列の代入
print_r($test); // 正常に出力
Test_Class::viewArray(); // global $test; print_r($test); を処理
}

のような処理をしていたのですが、最後の処理で、$test["items"] の配列のみ
出力されないのが理解できませんでした。(多分どこか自分の書き方がおかしいのだと思いますが・・)
とりあえず、ありがとうございました。

477 :nobodyさん:2007/02/28(水) 03:23:13 ID:NIuJbHw3
pngやjpeg画像などを、GD関数を使ってリサイズし、サムネイルを作る場合の質問です。

たとえば縦横サイズをある任意の値(元の半分とか)にリサイズした場合、
たしかにピクセルサイズは指定した通りになるのですが、ファイルサイズ(バイト数)が増えてしまいます。
普通、サイズが小さくなればファイルサイズも小さくなると思うのですが。。。
たとえば240*192で4374バイトのpng画像を120*96にリサイズしたら、8094バイトになってしまいます。
これはどうにかならないのでしょうか??

ちなみにソースは、レッツPHPの写メールBBSのthumb_create関数をほぼそのまま借りました。

478 :nobodyさん:2007/02/28(水) 04:14:19 ID:???
>>477
pngで出力してるなら、
imagepngのqualityパラメータで調整。
PHP4ならzlibのデフォルトの圧縮レベルが使われる。

jpegで出力してるなら、
画像パターンによってはファイルサイズが大きくなる事もある。
imagejpegのqualityパラメータを下げてもいいけど、たぶん激しく汚くなる。
jpegの仕様だから仕方ない。

479 :nobodyさん:2007/02/28(水) 04:17:42 ID:???
phpの画像生成ってやっぱり普通の処理に比べて負荷かかるの?
レンタル鯖使ってるからわからん

480 :nobodyさん:2007/02/28(水) 05:06:04 ID:NIuJbHw3
>>478
> imagepngのqualityパラメータで調整
特に調整してないのでデフォルト値になっていると思います。PHP4です。
デフォルト設定(100%?)で、ファイルサイズが大きくなってしまうものなんでしょうか?

なお、PNGでもJPEGでもどちらでも、なぜか見た目のサイズは小さくなってるのにファイルサイズは増えてしまいました。
もちろん元の画像サイズがかなり大きい場合にはこの限りではないのですが、
「元の画像サイズが小さい&サムネイル化した画像と元画像との差が小さい」という条件では、
このような逆転現象(?)になってしまうようです。

481 :nobodyさん:2007/02/28(水) 05:45:30 ID:mYjvryh6
Win9x、PHP4です。

キー入力があったかを調べる標準関数
みたいなのがありましたら教えてください。

コンソールプログラムならkbhit、
ウィンドウズプログラムならWM_KEYDOWNみたいなのです。

482 :nobodyさん:2007/02/28(水) 06:02:21 ID:???
まずはクライアントサイドとサーバサイドの用語から覚えろ。
話はそれからだ。

483 :nobodyさん:2007/02/28(水) 06:04:57 ID:???
>>481
なんか斬新な質問だな
javascriptでやれば?

484 :481:2007/02/28(水) 06:20:21 ID:mYjvryh6
>>482>>483
ありがとうございます。

phpの内容はhtmlに変わるので無理っぽいですね。
ボタンの送信みたいなのを使えば代用はできるかもしれませんが。
→のボタンをチェックした状態で送信したら
キャラクターが右に移動した状態で再読み込み、みたいな。

jsは構文チェックしてくれるエディタが見つからなかったので、
すっ飛ばしてphpを勉強していました。

485 :nobodyさん:2007/02/28(水) 06:32:05 ID:???
PHPだけでできるわけがない。自分でエクステンション作ってやるなら別だが

486 :nobodyさん:2007/02/28(水) 08:34:19 ID:???
>>477
元のPNGが8ビットで縮小版が24ビットになってる
とか

487 :nobodyさん:2007/02/28(水) 09:33:59 ID:???
>>469
ありがとうございます。
見てみます。

488 :nobody:2007/02/28(水) 10:46:21 ID:???
「ページの有効期限切れ」で困っています。
(環境)IE6、WinXP-sp2、Apache、PHP5

画面A(検索画面)でPOST実行し、画面Aに結果表示した後、
画面A内のリンクから画面Bに遷移し、画面Bから
画面Aにブラウザの戻るをしたら、ページの有効期限切れとなってしまいます。
ケスケやFireFox、Operaでは発生せず、IEだけです。
PUKIWIKIの対策ページを参考にしましたが、解決しません。
何か解決方法や参考サイトがあれば、宜しくお願いします。
セキュリティ上どうしようもないのでしょうか?
解決したような事を書いてるHPも複数あるので、なんとか
なると思っていますが。。。


489 :488:2007/02/28(水) 10:51:23 ID:???
書いててなんですが、板違いのような気がするので移動します
ごめんなさい。。^^;

490 :nobodyさん:2007/02/28(水) 10:54:32 ID:???
新たにHPを開設しようと思っているのですが、phpとjavaで迷っています。
大手の銀行や上場企業のサイトを見るとjavaがほとんどですが、
phpって企業サイトには向かないのでしょうか?

私は数人の会社なので、どっちでもいいのかもしれませんが、
javaに比べてphpだとセキュリティーとかに不安があるとか、
処理速度が遅いとかっていうことがあるのでしょうか?

491 :nobodyさん:2007/02/28(水) 11:05:38 ID:???
>>490
セキュリティーは関係ない。JAVAに比べてphpはメモリー関係で融通が効かないから。
大規模になればなるほど、その辺がまず問題なるが、アクセスが多くなるほど、phpはクラッシュして不安定になる。
小規模ならphpで十分だ。JAVAは運用がその分面倒だし。

492 :nobodyさん:2007/02/28(水) 11:12:32 ID:???
数人の会社ならPHPで十分。いろんな面で敷居が低いから。

493 :nobodyさん:2007/02/28(水) 11:14:58 ID:???
セキュリティは設定とプログラムの問題だからどうでもいいけど
処理速度は遅いと思うよジャヴァと比べたら

494 :nobodyさん:2007/02/28(水) 11:55:52 ID:???
>>488
ここらへんとか
http://www.glamenv-septzen.net/pukiwiki/index.php?PHP%2F%A1%D6%A5%DA%A1%BC%A5%B8%A4%CE%CD%AD%B8%FA%B4%FC%B8%C2%C0%DA%A4%EC%A1%D7%C2%D0%BA%F6#content_1_1
http://memo.xight.org/2006-06-13-2

495 :nobodyさん:2007/02/28(水) 11:59:42 ID:???
>>493
そらぁ何台もアプリケーションサーバがあるようなシステムではJavaだろうけど、
一台のホストにWebサーバもデータベースもぶちこむ安システムならPHPもそう負けないだろ。


496 :nobodyさん:2007/02/28(水) 12:01:10 ID:???
何をやるかによる。会社HPだったらHTMLだけで十分なわけだし。

497 :nobodyさん:2007/02/28(水) 12:15:02 ID:???
PHPで作って*.jspをPHPでパースでいいよもう

498 :nobodyさん:2007/02/28(水) 12:22:00 ID:???
>>497
話をちゃんと聞けよw
今は、PHPとPHP研究所とどっちがいいか言ってんだろ。

499 :nobodyさん:2007/02/28(水) 12:41:26 ID:NIuJbHw3
>>486
> 元のPNGが8ビットで縮小版が24ビットになってるとか

GD関数ではビット数を調べたり、変換させたりが出来るのでしょうか?
ざっとマニュアルを見たところ、ビット数に関する記述は見つかりませんでした。。。

500 :nobodyさん:2007/02/28(水) 12:42:45 ID:???
ちょっと聞きたいんだけどSmartyのデリミタ何にしてる?
参考までに教えてほしい。

501 :nobodyさん:2007/02/28(水) 12:42:55 ID:mYjvryh6
win9x、php5.2.0(先ほどのは違っていました)、apache2

ローカルサーバーでクッキーの実験をしているんですけど、
以下のようにしても何も表示されません。
原因を教えてください。
output_bufferingをonにして警告を出なくはさせました。

<?php
setcookie ("Test_Cookie", "syuturyoku", time() + 3600);
echo $_COOKIE['Test_Cookie'];
setcookie ("Test_Cookie", "", time() - 3600);
?>

502 :nobodyさん:2007/02/28(水) 14:12:33 ID:???
>>501
何も表示されなくて当たり前。
setcookieはレスポンスヘッダに値を書く命令。
$_COOKIEはリクエストヘッダから読まれた値。

503 :nobodyさん:2007/02/28(水) 14:35:16 ID:???
youtubeのRelatedVideoの仕組みがわからないんだけど、どういう風に表示してるのかな?

投稿されてからある程度だったビデオは他の動画からのリファラとかクリックでカウントすればできそうだけど、
投稿されたばかりのビデオとかはどうするんだろ・・・。



504 :nobodyさん:2007/02/28(水) 14:38:06 ID:???
リファラでやってんのかよ・・・

505 :nobodyさん:2007/02/28(水) 15:08:01 ID:Y6O44be+
質問です。
ブログの最新記事を表示させてるのですが
<?php get_archives('postbypost', '10','custom' ,'<li>' ,'</li>'); ?>
これで記事は取得できるんですが
取得した記事の後に時間を表示させたいのですがどう組み合わせたらいいのか
教えて下さい。
<?php the_time('Y.m.d H:i') ?>
時間取得は上記で取得してます。

試行錯誤したのですが組み合わせができなくて困ってます。
助けて下さい。

506 :nobodyさん:2007/02/28(水) 15:12:00 ID:???
>>505
なんなんだお前は。
独自関数が入ったコードで、さも当たり前のように質問するな。
それで回答できる超エスパーは存在しないぞ。

507 :nobodyさん:2007/02/28(水) 15:12:12 ID:???
>>505
get_archives なんて標準関数は無くない?
何の質問をしてるか分かりにくい。

508 :nobodyさん:2007/02/28(水) 15:17:12 ID:dDErVMbV
知っている関数が問題だと思うのですが、とあるサーバーでフォームで簡体字を渡したいです

html(UTF8)入力⇒html(UTF8)一部文字化け、となります。
最初は日本語でも文字化けしていたのですが
調べたらEUCで受け渡しているようです。

とりあえず渡れされたものを、EUC⇒UTF8で日本語や繁体時など普通の字は元に戻るのですが
簡体字はEUCで渡す時点で?に文字化けしてるようで対処しようがありません。

受け渡しをUTF-8に統一したいのですが
どういった指定方法があるのでしょうか?
.htaccessに
php_value default_charset utf-8
php_value mbstring.internal_encoding UTF-8
など書いて見ましたが何も変わらず・・・
mb_language("uni");
mb_internal_encoding( UTF-8 );
とかも・・・


509 :nobodyさん:2007/02/28(水) 15:19:26 ID:???
>>508
それは、単に化けているんじゃなくて、フォントがないだけ。
繁体字は、MingLIUだぞ。

510 :505:2007/02/28(水) 15:25:24 ID:Y6O44be+
すいません。wordpressのブログ改造でした。
独自仕様なのわかりませんでした。
すいません;;

511 :nobodyさん:2007/02/28(水) 15:38:23 ID:???
>>510
それが分からないようなら、PHPの基礎から勉強できる書籍でも買って勉強してください。

その部分のソースを張れば誰か答えてくれるかもしれません。
またはwordpressを知ってる人が答えてくれるかもしれませんが・・。

512 :nobodyさん:2007/02/28(水) 15:45:35 ID:miuFrXG1
table1からaddress1とaddress2の重複を取り除きたい
select address1 from table1 union select address2 from table1
このSQLをPHPでmysql_fetch_arrayするとエラーがでます。

エラー:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

しかしデータベースを直接操作するとエラーは出ずうまく取得できます。
なぜでしょうか?

513 :nobodyさん:2007/02/28(水) 15:47:29 ID:???
>>512
多分SQLが失敗してる。

514 :512:2007/02/28(水) 15:58:14 ID:miuFrXG1
ええと
2つ以上のレコードから重複を取り除きたい

コード 住所1 住所2
1 東京都 中央区
2 東京都 新宿区
3 大阪府 中央区

住所1は東京都と大阪府
住所2は中央区と新宿区
を取り出したいのです。
1つのレコードなら
select distinct address1 from table1
で取得できますが2つ以上の場合どのようにすれば取得可能でしょうか?


515 :nobodyさん:2007/02/28(水) 16:00:20 ID:???
>>514
質問以前に、個人情報をこういう匿名掲示板で出してはいけないことは分かるよね?

516 :nobodyさん:2007/02/28(水) 16:04:18 ID:???
>>515
笑わせんな
麦茶吹いたじゃねr−か

517 :nobodyさん:2007/02/28(水) 16:04:22 ID:???
>>510
<?php get_archives('postbypost', '10','custom' ,'<li>' , the_time('Y.m.d H:i').'</li>'); ?>

518 :nobodyさん:2007/02/28(水) 16:10:20 ID:???
>>509
UTF-8で受け渡しのする他のサーバーでは文字化けしないので
使用しなければならないサーバーでEUC渡しになってしまうようです。

その段階で?になっているので、内部エンコーダーを
レンタルサーバーなりの範囲で変えればいいと思うんですが
何をいれても変化がなく・・・(うけつけない?)



519 :505:2007/02/28(水) 16:11:53 ID:Y6O44be+
>>511
phpサイトを見て勉強してきます。
丁寧にありがとうございます。

>>517
神様ありがとうございます。
本当に助かりました
感謝です!

520 :509:2007/02/28(水) 16:12:51 ID:???
>>518
そういうことか。
おれも中国語扱っているから分かるが、それなら、プログラムの先頭で
mb_internal_encoding("UTF-8");
を使え。それで、解決だ。

521 :nobodyさん:2007/02/28(水) 16:34:28 ID:???
>>520
mb_internal_encoding("UTF-8");
        ・・・・
print_r(mb_detect_encoding ( $name ,$arr, TRUE ));


EUC-JP

なぜでしょうorz

522 :nobodyさん:2007/02/28(水) 16:42:38 ID:???
>>521
$nameがEUC-JPだから
$name = mb_convert_encoding($name, "utf-8", "euc-jp");
rint_r(mb_detect_encoding ( $name ,$arr, TRUE ));
でどう

523 :nobodyさん:2007/02/28(水) 16:46:21 ID:???
ソースがEUCだから

524 :nobodyさん:2007/02/28(水) 16:50:06 ID:???
>>512
unionって列の名前が異なっててもいいの?

select address1 from table1
union
select address2 as address1 from table1

だったらどう?

525 :514:2007/02/28(水) 16:50:24 ID:miuFrXG1
自己解決するしかないみたいなので、がんばってみます。
ありがとうございました。

526 :514:2007/02/28(水) 16:52:49 ID:miuFrXG1
>>524
同じエラーがでますた。

527 :nobodyさん:2007/02/28(水) 16:59:12 ID:???
>>522
今のところ後ろの方は
そういう感じで集計しているのですが
結局?は?のままなのです。
そして.htaccessで、変換関連は拒絶されました・・・

528 :nobodyさん:2007/02/28(水) 17:02:06 ID:???
コンソールとかphpMyAdminからはSQL通るの?
それ通らなければSQLのエラー。ちなみにMySQL3ではunion使えないよ。

529 :nobodyさん:2007/02/28(水) 17:02:10 ID:???
>>526
SELECT DISTINCT address1,address2 FROM table1
でいけない?

なんのDB使ってるか分からんからなんとも言えんけど;

530 :nobodyさん:2007/02/28(水) 17:04:11 ID:???
あと、group byも検討してみたら。
なんかsqlだけなのでスレ違いな気もするけど。

531 :nobodyさん:2007/02/28(水) 17:09:21 ID:AnB9SYoh
今月の月数(例えば二月の2)を
テキストボックスの初期値にできるんでしょうか?

532 :nobodyさん:2007/02/28(水) 17:09:53 ID:???
>>531
出来る

533 :514:2007/02/28(水) 17:12:03 ID:miuFrXG1
>SELECT DISTINCT address1,address2 FROM table1
重複を取り除けません

>SELECT address1,address2 FROM table1 GROUP BY address1
address2を取得できません

534 :nobodyさん:2007/02/28(水) 19:54:21 ID:???
>>512,514
まず
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
は直ったの?SQLの問題じゃないし
mysql_fetch_arrayの引数が適当なリソースじゃないってエラー
;
$result = mysql_query(....);
$row = mysql_fetch_array($result);
mysql_queryのリターンを指定してるかい?

535 :nobodyさん:2007/02/28(水) 19:54:23 ID:???
てst

536 :nobodyさん:2007/02/28(水) 20:00:26 ID:???
test

537 :nobodyさん:2007/02/28(水) 21:18:42 ID:???
配列のキー操作について質問です。
現在、$array[0]=a $array[1]=b $array[2]=c
となっています。

これらのキーをそれぞれプラス1して、
$array[1]=a $array[2]=b $array[3]=c;
…としたいのですが、どうやったらいいでしょうか?
標準関数一発で出来そうな関数は無かったので質問しました。

538 :nobodyさん:2007/02/28(水) 21:29:47 ID:/OxDoLcN
hoge.dat の中身
ほげほげ,ほげ\n
もげもげ,もげ\n

PHP
$fx = fopen("hoge.dat", "r");
while (!feof($fx)) {
 $str = fgets($fx);
 trim($str);
 $elem = explode(",", "$str");
 $print "$elem[0] $elem[1] ";
}
fclose($fx);

結果
ほげほげ ほげ
もげもげ もげ

期待する結果
ほげほげ ほげ もげもげ もげ

というわけでtrim関数が期待通り動いてないみたいなんですが
俺のせいですかorz

539 :nobodyさん:2007/02/28(水) 21:33:57 ID:ZCmQSNG7
そんな糞みたいな処理を標準関数で用意しろというほうがどうかしてる

540 :481, 501:2007/02/28(水) 21:49:59 ID:mYjvryh6
ありがとうございます。

>>502
できました。

>>485
$_COOKIEでロードし変化させてsetcookieでセーブ
みたいなのを考えていたんですけど、
呼び出す順番に制約があるので無理っぽいです。
エクステンションというのも調べてみます。

541 :nobodyさん:2007/02/28(水) 23:11:57 ID:???
オブジェクト指向で作っていくときクラスの数が大量になると思うけど、
クラスフォルダ(classes等)の中でさらに機能ごとに分類して設置したりしてる?

542 :537:2007/02/28(水) 23:24:41 ID:???
自己解決しました

543 :537:2007/02/28(水) 23:37:16 ID:???
>>538
hoge.datの
ほげほげ,ほげ\n
は本当に\nだけ?

544 :nobodyさん:2007/03/01(木) 00:07:48 ID:???
$str = trim($str);
とか

545 :nobodyさん:2007/03/01(木) 00:15:29 ID:???
>>514
住所1 重複不可
住所2 重複おk

ってことかな?
既存のデータベースに対する操作ならEXISTSあたりでできそうだけど
新規にテーブル作ってつっこむならコードと住所1をプライマリキーに

546 :nobodyさん:2007/03/01(木) 00:35:17 ID:d9i72hOu
php5です。
ユーザー関数functionの引数の型の
指定の仕方がありましたら教えてください。

547 :nobodyさん:2007/03/01(木) 00:38:55 ID:a/RduvQD
掲示板の文字表示の制限をする処理で悩んでいます。
どんな場合でも10行以上の表示をさせない為には
どうすれば実現できますか?(最後の行には[続き]リンクを入れる)
mb_strpos関数で\nを検索して、改行数をカウントする方法で
やっていますが、これだと改行いれずに文字を多く書かれてしまうと
スルーされます。改行と文字数をいっぺんにカウントする
関数を作っていますが、複雑でよくわからなくなってきました。
何か良い方法や解説しているサイトなどあればご紹介お願いします。

548 :nobodyさん:2007/03/01(木) 00:40:03 ID:???
>>546
受け取ってから関数内でif文とgettype使う

549 :nobodyさん:2007/03/01(木) 00:46:26 ID:???
>>547
投稿した文字の改行を取り除いて、指定した文字数ごとに改行いれればいいんじゃない?

文字ごとに切り抜いていって配列に格納して、countで10以上なら10までは表示して以降は[続き]リンクを
続きリンクはview?id=1002&mode=allみたいな感じで普通の閲覧(10行までの表示)と全て表示を切り替える

550 :nobodyさん:2007/03/01(木) 00:49:16 ID:???
>>514
鯖移転で返せなかったが
二回SQL発行でいいんじゃね

551 :547:2007/03/01(木) 00:57:40 ID:a/RduvQD
>>549
レスありがとうございます。
なるほど〜改行とった後で文字列のカウントですか〜
いや〜まったく思いつきませんでしたw
解決できそうです。ありがとうございました!

552 :481, 546:2007/03/01(木) 02:05:12 ID:d9i72hOu
>>548
分かりました。ありがとうございました。

後、自分は>>481でもあります。
キー入力でのキャラの移動は無理でしたが、
フォームとクッキーを使ってならできました。
ただ、遅すぎて実用は難しそうです。

うpローダーがtxtでアップしても内容がhtmlになってしまうみたいなので、
ソースは表示→ソースで確認してください。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3719.txt

553 :547:2007/03/01(木) 02:05:28 ID:a/RduvQD
一旦解決しましたが、改行も入力したまま反映したいと思い
再度考え直しました。以下の方法で実現できそうです。
1列の文字数を30と仮定して、30文字までを抜き出し
mb_strpos関数で改行を探し、あった場合、その位置までを
変数に格納、次のmb_strpos開始位置を改行のあったところから
30文字分を抜き出し検索、改行がなかった場合、抜き出した文字全てを
変数に格納、これを10回繰り返し、まだ文字が残っていた場合、
[続き]リンクを入れて終了。
しかし問題もありそうです。ブラウザの文字の大きさはそれぞれ違うし、
人によっても大きさを変えています。その場合の対処が
できそうもありませんが、それはそれとして置いときますw
あと、mb_strpos関数の挙動が不審なのも気になりますが、
文字コード等の問題かな?ま〜置いときますw
一応、事後報告として。。。^^;

554 :nobodyさん:2007/03/01(木) 02:47:30 ID:???
俺は単に文字数だけで切ってるな
改行も投稿内容のうちってことで
携帯ユーザーに多い改行しない投稿も携帯らしさってことでね

555 :nobodyさん:2007/03/01(木) 06:33:32 ID:???
昨日このスレ見てたら、いきなり人が多いとかいって、
スレッドが消えちゃったんですが、掲示板に戻るで戻ったら、
このスレが再度見つかりました。これって何??
俺だけ?!

556 :nobodyさん:2007/03/01(木) 06:38:46 ID:???
板移転

557 :nobodyさん:2007/03/01(木) 06:59:15 ID:???
>>547
trim()は標準でスペースもタブも\rも削除するから多分大丈夫
>>538
Perlやってるやつが良く陥る罠

558 :547:2007/03/01(木) 09:28:54 ID:???
>>554
文字数だけってことは



って感じに入れられると、場合によってはすごい行数を
使ってしまう場合がありますよね?
それが嫌だったので、なんとかしようと思ってました。
全く手付かずで、1日悩んでしまいました ><

559 :nobodyさん:2007/03/01(木) 09:39:17 ID:???
>>558
そもそも
「どんな場合でも10行以上表示させない」
とかいう要求が無茶すぎるのでは。

560 :547:2007/03/01(木) 09:47:05 ID:???
>>559
投稿する人に負担になってしまうかもしれませんね〜^^;
でも投稿文字制限は1000文字なんですが、558のようにやると
すごい行数を表示してしまうので、やはりなんとかしたいですねw
行数を増やそうかな。。。

561 :nobodyさん:2007/03/01(木) 10:02:39 ID:???
・1行あたりの最大文字数
・N行までの改行数制限
・全体の最大文字数
でそれぞれ制限かけたら?

562 :nobodyさん:2007/03/01(木) 10:34:22 ID:???
1文字1文字改行するような荒らしまがいのやつの画面に
1000行表示されたところで自己責任だろ。そういうバカなユーザーは切り捨てろ

563 :538:2007/03/01(木) 10:39:56 ID:mfeLki9Q
>>544
これでうまくいきました。
ありがとうございました。

>>557
ご指摘の通りPerlやってるやつです。
本当にあり(ry

564 :nobodyさん:2007/03/01(木) 10:44:44 ID:???
本文を改行コードでexplode。
配列10個のstrlenの合計が規定値より多ければ字数で。
少なければ改行コードで。
ってのはどう?

565 :547:2007/03/01(木) 11:06:34 ID:???
>>561
文字数の制限というより、改行の制限ですね。
文字は1000文字以内ならいくらでも問題ないですが、
改行がいっぱい入れられて、行数を稼がれることが問題です。
>>562
荒し対策は難しいですね〜^^;
レスポンスを考えると、今作ってる処理はforの中にfor文があって、
さらにifが多数。。。ほんとはやりたくないんですが。。
>>564
良さそうですね!改行コードでexplodeは素晴らしいかもw
もう少し煮詰めてみます。ありがとうございます!


566 :nobodyさん:2007/03/01(木) 11:18:41 ID:???
亀ですが、>>386の場合って$strに特定の1文字が存在する場合なので
別に正規表現使わずにstrpos()でするのが最適ですよね?

567 :nobodyさん:2007/03/01(木) 11:35:01 ID:???
>>566
特定の1文字が何回含まれているか、になると
strposの場合ループ処理になるから微妙かな。
関数で一発処理できる場合はその方が速いことも多々ある。

568 :547:2007/03/01(木) 11:43:08 ID:???
以下のように考えてみました。
1列の文字数を30と仮定して、
>>546 さんの言われた改行コートでexplodeして配列格納。
配列ごとに、30文字以内ならそのまま表示用変数に文字格納して、
改行カウントを+1し、30文字より大きければ、
その時の改行カウント×30を300から引いた数値Aと比較し、
大きければその数値Aまでを表示して[続き]リンク表示して終了。
数値Aより少なければ、表示用変数に配列の文字を格納して、
(配列の文字数÷30)+0.99=改行カウント(整数部)とする。
改行カウントが10超えて配列に文字が残っていれば、
[続き]リンク表示して終了。

なんとかいけそうな感じです^^
mb_strpos関数が不審だったので、explodeでの処理はテストも減るし
大助かりですw ありがとうございます!


569 :547:2007/03/01(木) 11:43:50 ID:???
>>546ではなくて>>564でした^^;

570 :軟式PHP:2007/03/01(木) 11:46:21 ID:???
substr_countはいらない子ですか。

571 :547:2007/03/01(木) 12:02:51 ID:a/RduvQD
>>570
私に言っていただいてると仮定して。。w
substr_count関数を使うということは、300文字までに
改行が10個あればそこまでを表示して、なければそのまま表示する。
という処理に使えますね。。。。あれ?使えるのかなw
9個なら30文字、8個なら60文字まで、1個なら270文字まで、
今まではこの関数だと、強制10行処理はムリと思ってましたがw
。。。しばらく考えます。レスありがとうございます!

572 :nobodyさん:2007/03/01(木) 12:05:18 ID:KfGKDn9N
mb_eregですが

事務系<br>
IT系<br>
サービス・接客系<br>
介護・福祉系<br>
工場・作業系<br>
その他<br>

という物が入っている変数から
"サービス・接客系"をマッチさせようとすると、なぜか検知しません。
中身を変えて "サビス・接客系"で
erge("サビス" というように ー を抜かすとマッチするんですが
いったいどういうことでしょう?



573 :547:2007/03/01(木) 12:09:24 ID:a/RduvQD
>>570
私に言ったのでなければ、すいませんw
substr_count関数だと最後の改行位置が分らないので
やはりムリと思います。いや〜昨日から悩みっぱなしですw

574 :566:2007/03/01(木) 12:32:50 ID:???
>>567
ありがとうございます。
ttp://selfkleptomaniac.org/archives/44
この辺り読んでstrpos()が最適だと思いました。

そして567さんは日本語の理解力が足らないなとも思いました まる

575 :nobodyさん:2007/03/01(木) 12:37:06 ID:???
>>571
>>386の場合だろ。お前は関係ない。

576 :547:2007/03/01(木) 13:09:15 ID:a/RduvQD
>>575
やはり。。すいません^^;

577 :虚弱PHP:2007/03/01(木) 13:18:48 ID:???
>>572
SJIS??

578 :nobodyさん:2007/03/01(木) 14:00:04 ID:Ji+dT1nk
>>576
いや、この場合アンカーを付けない奴が悪い。君の対応は紳士的だと思うよ。

579 :質問 ◆Hx0p2cgJeA :2007/03/01(木) 14:19:40 ID:???
ある本に「インスタンス化は、一般的に負荷の大きな処理です」と書いて
あったのですが本当ですか?

580 :nobodyさん:2007/03/01(木) 14:22:11 ID:???
>>579
メモリ確保とかメンバ変数初期化とかコンストラクタ検索して実行とか
やること多いからな。

581 :547:2007/03/01(木) 14:25:27 ID:a/RduvQD
>>578
どうもです^^
でも自分の勘違いが周りも勘違いさせる可能性があるので、
一種の荒らしかもしれませんw

582 :質問 ◆Hx0p2cgJeA :2007/03/01(木) 14:28:54 ID:???
>>580
では、一度インスタンス化したら、クラス内や関数内で
もう一度インスタンス化しないほうがよいのですね?

583 :虚弱PHP:2007/03/01(木) 14:44:43 ID:???
>>582
どんな負荷要求があるのか…。

ひとまずインスタンスが使いまわせるなら、
Singletonパターンのようなもの使ったりすればいいと思う。
本来使いまわせないものを使いまわそうと工夫するぐらいなら、
パフォーマンスを犠牲にした方がマシだと思う。

PHPでのインスタンス化ってそんなに負荷かかるかな?

584 :nobodyさん:2007/03/01(木) 15:11:33 ID:???
Arrayとそんなに変わらないと思うよ。なんか中身は似てるし。 array()がどんだけ遅いかはまぁ、自分の環境でテストするしかない。

585 :nobodyさん:2007/03/01(木) 16:42:43 ID:???
>>574
>>390

586 :nobodyさん:2007/03/01(木) 17:36:06 ID:???
上のほうでも似たような質問がありますが、
URLが正当なものかチェックするプログラムを書いているのですが、
URLに含めてはいけない文字列があったらfalseを返すか、
全てエンコードしてtrueを返すかどちらがいいのでしょうか?

587 :nobodyさん:2007/03/01(木) 17:40:08 ID:???
>>586
目的による

588 :nobodyさん:2007/03/01(木) 17:44:06 ID:WjIfG4Om
画像処理で、↓のようにしたいのですが、どうするのが適切でしょうか?
http://up2.viploader.net/pic/src/viploader425975.jpg

589 :nobodyさん:2007/03/01(木) 17:46:03 ID:???
>>588
グロ警報

コラだと思って気にしない事にする・・

590 :586:2007/03/01(木) 17:46:54 ID:???
目的は2chのようにリンクをはったら、
リンク先を確認する画面を出したいのですが、
その際にURLが不正だったらエラーを出して何もしないか、
エンコードしたURLを出して、
確認してクリックしてくださいというような
メッセージを出すかといった感じです。

591 :nobodyさん:2007/03/01(木) 17:51:56 ID:???
>>588-589
???と思いながら3回ほど上下左右に視線を動かしてみたが、
どこがどうなのか分からなかった
もう見ない方がいいのか

592 :547:2007/03/01(木) 17:52:28 ID:a/RduvQD
掲示板の10行のみの強制表示に成功しました〜^^
forではなくてdo〜whileだったりと多少誤差はあるものの、
>>547 で書いたとおりにほぼ作りました。
レスくれた皆さんありがとうございました!

593 :547:2007/03/01(木) 17:54:18 ID:a/RduvQD
>>547 じゃなった >>568 です。すいません^^;

594 :nobodyさん:2007/03/01(木) 18:08:05 ID:???
インスタンス化による負荷など、相対的に大きいだけで、絶対的には気にするほどじゃない。

いったい一度にどれだけの同時アクセスがあるんだ、と。
そんなレベルで悩んでるということは、たいしてアクセスの無いサイトを運営してると思われる。
だったら、負荷がどうのこうのとか悩む前に、アクセスアップを悩むほうが先じゃないか、と。

595 :nobodyさん:2007/03/01(木) 18:36:55 ID:???
>>588
バカみたい。

列車に跳ねられたらそんなもんじゃすまないぞ。
もっとぐちゃぐちゃになるからね。

596 :nobodyさん:2007/03/01(木) 19:08:13 ID:7eZkn0sw
タグの中にPHPの処理結果を反映させることってできませんか?
$_GET内によってリンク先などを変えたりする場合に
<a href=hoge.php?$_GETの内容>hoge</a>のようにできると条件分岐が必要なくなるので便利なのですが。

597 :nobodyさん:2007/03/01(木) 19:09:42 ID:???
>>595
知りたくも無い人もいるし、いらんレスしないで下さい

598 :nobodyさん:2007/03/01(木) 19:19:39 ID:???
>>590
ここでアンケートとってるの?
好みの問題だろ

599 :nobodyさん:2007/03/01(木) 19:21:07 ID:???
それほどグロくない。

600 :nobodyさん:2007/03/01(木) 19:23:02 ID:???
>>596
<a href=hoge.php?<?= $_GET['argv'] ?>>

601 :nobodyさん:2007/03/01(木) 19:24:30 ID:???
>>596
それくらい出来ないと使えない言語ってことになる。

602 :nobodyさん:2007/03/01(木) 19:25:08 ID:???
>>599
想像力の問題
見えてるものしか評価しないなら想像力が乏しいかと

603 :nobodyさん:2007/03/01(木) 19:25:45 ID:???
>>596
いいから入門本読んできてください

604 :nobodyさん:2007/03/01(木) 19:39:40 ID:???
>>602
ニヤニヤしながらコラ作ってるピザデブしか想像できません

605 :nobodyさん:2007/03/01(木) 19:54:37 ID:???
>>604
そのワンパターンな思考がとb(ry

606 :574:2007/03/01(木) 20:03:48 ID:???
>>585
俺は390ではないんだが。

>>602
想像力とか関係ないだろ、単に免疫の問題

以下質問どうぞ

607 :nobodyさん:2007/03/01(木) 20:09:32 ID:???
皆さんには糞スレ化した罰として画像合成のルーチソを書いてもらいます

608 :nobodyさん:2007/03/01(木) 20:16:33 ID:???
>>607
言いだしっぺが書く法則

609 :nobodyさん:2007/03/01(木) 20:47:37 ID:lXqb5ag8
IP から 県名とか国名を求めるのには
どうやればいいのですか?

610 :nobodyさん:2007/03/01(木) 20:48:35 ID:???
国はまだしも県名を取得できるのは一部のプロバイダだけだ

611 :nobodyさん:2007/03/01(木) 20:49:39 ID:???
>>609
IPアドレスをwhoisで検索する。whoisを利用するには、PEARを使うのが一番早い。

612 :nobodyさん:2007/03/02(金) 00:13:48 ID:???
hoge@hoge.hogeというメールアドレスにメールが来た場合、
内部的にセッション入りの登録ページURLを返信してくれる

といった機能を
XREAで
実装したいのですが可能でしょうか?

613 :nobodyさん:2007/03/02(金) 00:27:46 ID:???
どこにphpと関係してるんだ?

614 :nobodyさん:2007/03/02(金) 00:41:54 ID:???
>>612
できるんじゃない?
POP3でhoge.hogeのメールを受信してくればいいんでしょ。

615 :nobodyさん:2007/03/02(金) 00:57:43 ID:???
>>614

かんちがいしてない?

616 :nobodyさん:2007/03/02(金) 01:11:13 ID:???
>>615
そう?
メールの送信先が@xrea.comでなく任意のhoge.hoge相手なら
.forwardやaliasesも使えないだろうから、
1.POP3でxreaサーバからhoge.hogeサーバのメールを受信
2.メールのFrom:を見て規定のフォーマットのメールを送信
っていうPHPスクリプトをcronで起動するって感じになりそな気がするけど。
(hoge.hogeからxrea.comにメールを自動転送する手もあるけど)

617 :nobodyさん:2007/03/02(金) 01:45:09 ID:BzmNP0/K
>>607
配列にある全ての画像を合成するプログラムなら組んだ

618 :nobodyさん:2007/03/02(金) 02:12:38 ID:2TC1CsXh
当たり確率1/12を2000回試行してちょうど180回当たりを引く確率を出す式をご伝授頂けないでしょうか。

619 :nobodyさん:2007/03/02(金) 02:21:34 ID:???
宿題は自分でやれ

620 :nobodyさん:2007/03/02(金) 02:30:59 ID:???
C[2000, 180]・(1/12)^180 (11/12)^1820

621 :nobodyさん:2007/03/02(金) 02:34:08 ID:2TC1CsXh
宿題?学生でも無いリーマンです。パチスロでの設定看破に使おうと思いまして

622 :nobodyさん:2007/03/02(金) 02:35:31 ID:2TC1CsXh
>>620
これをそのまま
echo C[2000, 180]・(1/12)^180 (11/12)^1820;
で表示されますか?今テスト環境が無いのですぐ確認出来ませんので…

623 :nobodyさん:2007/03/02(金) 02:35:35 ID:???
確率を求めたいの?式を求めたいの?

624 :nobodyさん:2007/03/02(金) 02:37:25 ID:???
愛を求めたいの

625 :nobodyさん:2007/03/02(金) 02:43:38 ID:???
>>622
数式も分からんやつが看破プログラム作ろうとか考えるなよ。
最初から大金積んで人に作ってもらえ。

626 :nobodyさん:2007/03/02(金) 02:51:15 ID:???
>>622
>これをそのままecho

orz あまりのバカぶりに萎えた

627 :nobodyさん:2007/03/02(金) 02:54:57 ID:???
マルチ乙
http://pc11.2ch.net/test/read.cgi/php/1145308869/585


628 :nobodyさん:2007/03/02(金) 02:55:48 ID:2TC1CsXh
式がわかってても、PHPでその式を使うにはどうやって書いたらいいか分からないってことなんだけど…
その表現として>>622みたいなこと書いたんですが。

629 :nobodyさん:2007/03/02(金) 02:56:28 ID:2TC1CsXh
マルチというかCGIじゃ無理そうだからPHPに流れてきたんだけど。

630 :nobodyさん:2007/03/02(金) 02:58:42 ID:???
マルチがバレルと急に偉い口調なった件

631 :nobodyさん:2007/03/02(金) 02:59:59 ID:???
>>629
つまりマルチってことね
perl でできないわけないと思うけど

632 :nobodyさん:2007/03/02(金) 03:20:39 ID:???
>>628
君は基本的な勉強からやり直しなさい。
それじゃ結局「仕様作成とそのコーディングまで全部書いてください」と言ってるだけだ。

633 :nobodyさん:2007/03/02(金) 03:40:41 ID:???
>>628
式は分かってんの?
分かってんなら最初から書けよ。
俺らに無駄な労力を強いる気か

634 :nobodyさん:2007/03/02(金) 03:52:35 ID:2TC1CsXh
計算は出来ます、約1.77%で合ってると思うのですが。
ただ、PHPでこの計算をする方法が全く検討つかないので。
たとえば10の3乗を出す、程度の計算なら思い浮かびます。
$a = pow(((12*1/2)+(2*2)),3)
自分で書けるのはこのくらいの式でして…pow()も最近覚えたばかりです。

635 :nobodyさん:2007/03/02(金) 03:59:13 ID:???
マルチに対するコメントはないのか?

636 :nobodyさん:2007/03/02(金) 04:03:00 ID:2TC1CsXh
マルチって、Perlの仕様とかをここで聞いてる訳じゃないし何でそこまで責められなきゃなんないのさ…
まして向こうでは式の事なんか触れてもいないし。

637 :nobodyさん:2007/03/02(金) 04:13:51 ID:???
はい乙、迷惑なのでもう書き込みやめてください

638 :nobodyさん:2007/03/02(金) 04:25:40 ID:???
ID:2TC1CsXhは50万円払ってからモノを言え。

639 :nobodyさん:2007/03/02(金) 04:28:37 ID:???
どうでもいいけどシミュレーションはJavaScriptにしろよ。

640 :nobodyさん:2007/03/02(金) 09:20:42 ID:DDcuD0TE
PDO覚えるのマンドクセ('A`)

641 :634:2007/03/02(金) 10:51:36 ID:???
何でこんな人を見下した発言する人ばっかなんですかね?
そんなに偉いんですか?優越感に浸りすぎじゃない?
マルチどうこうってのは完全にただの言いがかりだし。いくら何でも暗すぎ。
なんかスレ全体見ても、いくら教える側とは言え態度でかすぎだろ。
タメ口で話すとか、そういうんじゃなくて、知らないってだけでバカだのアホだの、
中には死ねとかいう発言まであるし。何でPC得意な奴って攻撃的なんだ?このスレは異質

642 :nobodyさん:2007/03/02(金) 10:58:19 ID:???
前にこのスレでも話題になってたデザインパターンの本買ってみたけど結構良かったよ.前半のほうは。

643 :nobodyさん:2007/03/02(金) 11:03:39 ID:???
>>642
もう少し詳しく
俺も買ってみようか迷ってる。

644 :nobodyさん:2007/03/02(金) 11:26:53 ID:???
>>641
そんなに不満があるなら自力で調べろよww
そんな「攻撃的で異質」なヤツらにわざわざ質問してないでさ、自分で考えなよw

645 :nobodyさん:2007/03/02(金) 11:28:16 ID:???
>>641
別人だとは思うが一応答えとくか。>>618の質問の内容からして

テンプレから飛んでマニュアルさえ見れば済むような内容。
仮に誰かがその式を教えたとしてもその後に1から10まで質問してくるとしか
思えないようなスキルの無さがレスの端々に伺える。
丸投げ風な質問内容。

逆に最近でいうと>>547みたいな質問者にはみんなちゃんと答えている。
自分で先ず基本的なところを勉強してからくるか丸投げ板にいくといいよ

646 :nobodyさん:2007/03/02(金) 11:49:22 ID:???
特定の部分の require_once がまれに
Warning: failed to open stream : No such file or directory
を吐き、確認してもファイルパスは合っており、
試しに require に変更すると一時的に収まるのですが、
その後少しまた開発していると、今度はその require が同じエラーを吐き、
require_once に戻すと収まる始末。暫くするとまたエラーで変更の繰り返し・・

これなんでしょうかね?
PHP 5.2.1 on FreeBSD 6.1(VMware)

647 :nobodyさん:2007/03/02(金) 12:13:07 ID:???
マルチうんぬんについては完全に言いがかりだなw
ちょっと引いた

648 :nobodyさん:2007/03/02(金) 12:16:34 ID:???
http://pc11.2ch.net/test/read.cgi/php/1164617202/233
よろしくです

649 :nobodyさん:2007/03/02(金) 12:50:50 ID:???
>>648
コードUP

650 :nobodyさん:2007/03/02(金) 13:46:07 ID:???
>>646
どうしてもじゃないなら2007/2/14リリースの
こなれてないバージョンなんて使わないほうがいい。

651 :648:2007/03/02(金) 14:00:11 ID:???
>>649
これで再現できるかと

$socket = fsockopen ($host, $port);
fwrite ($socket, $req_hdr . $req_body);
// socket_set_timeout ($socket, $sec);
do {
 $dat = fread ($socket, $rbufsize);
 $res_data .= $dat;
} while (strlen ($dat));
fclose ($socket);

652 :nobodyさん:2007/03/02(金) 14:20:16 ID:???
$enc = mb_detect_encoding($body);
if($enc != 'SJIS') {
  $body = mb_convert_encoding($body, 'SJIS', $enc);
}

投稿された文字列が
mb_detect_encodingで'SJIS'以外だった場合、
mb_convert_encodingで文字コードを'SJIS'に変換してDB保存したいのですが
mb_detect_encodingがうまく作動せず、英文だとASCIIと日本語だとFALSEを返してきます。

ちゃんとSJISを返す(SJISの場合)ようにできないのでしょうか?


653 :nobodyさん:2007/03/02(金) 14:22:43 ID:???
>>652
何でもかんでもsjisに変換すれば良いよ
あとdetectは使い物にならない。

654 :nobodyさん:2007/03/02(金) 14:29:03 ID:???
>>653さん
返レスありがとうございます。
$body = mb_convert_encoding($body, 'SJIS', 'auto');
をかければOKということでしょうか?

>あとdetectは使い物にならない。
そうなんですか(^^;
多用してました…

655 :nobodyさん:2007/03/02(金) 14:41:25 ID:???
>>650
およ? PHP5.2.1はバレンタイン・デー時点での
最新安定版なんじゃないの?

さっき桜鯖にインストールしたばっかりなのに (;_;)

656 :nobodyさん:2007/03/02(金) 14:46:56 ID:???
>>655
つまり最新バージョンにバグが混入してても情報が少ないということ。>2007/2/14 5.2.1

657 :nobodyさん:2007/03/02(金) 14:58:17 ID:???
>>656
なるほど。でも、とりあえず無事に動いているみたいなので
私はこのままにしておきます。
「『動いているならそのままにしろ』が鉄則」と誰かが言っていたので。

何か問題があったらPHP5.1.xくらいにしてみます。

658 :nobodyさん:2007/03/02(金) 15:00:14 ID:???
ああ、ちなみに:
>>646 ≠ (>>655>>657) です。

659 :虚弱PHP:2007/03/02(金) 15:06:31 ID:???
>>646
>>650
FedoraCore5+PHP 5.2.1で動かしてるけど、
問題は起きてないなぁ。

アクセラレーターとか入れてない??

660 :646:2007/03/02(金) 15:33:32 ID:???
みなさん、レスありがとうございます
>>659
特にいれてないですね
$php -v
PHP 5.2.1 with Suhosin-Patch 0.9.6.2 (cli) (built: *)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

先日、開発環境の PHP 4.4.* をアップしてから症状が出だしたので、
やっぱりこちらの環境の PHP 5.2.1 の問題なんですかねぇ
自分のスクリプトの書き方がまずいどうこうの問題ではなさそうですし

もう少し様子をみてみます、どもでした

661 :nobodyさん:2007/03/02(金) 15:40:14 ID:???
PHPのソースから差分を抜き出して自分で比較でいいよもう

662 :nobodyさん:2007/03/02(金) 16:06:07 ID:???
function test()
{
static $a = 0;
}

とういう具合に、static変数に初期値を設定するのはOKでしょうか?

663 :nobodyさん:2007/03/02(金) 16:31:19 ID:SAy252Rv
宜しくです
XAMPPを使ってDBを作って遊んでるんですが
PHPプログラムを動かすと文字化けするのですが?
ttp://phpspot.net/php/ 等で試したのですが・・・
UTF-8 でも駄目で路頭に・・・


664 :nobodyさん:2007/03/02(金) 16:34:03 ID:???
>>663
;my.cnf
skip-character-set-client-handshake

665 :nobodyさん:2007/03/02(金) 17:07:33 ID:???
ID:2TC1CsXh鹿馬…


666 :nobodyさん:2007/03/02(金) 17:18:39 ID:SAy252Rv
664有難うです。

667 :虚弱PHP:2007/03/02(金) 17:47:43 ID:???
>>660
そっか。
Suhosinパッチが当たってるね。
FreeBSDって標準でパッチ当たってるんだっけ?
問題切り分けのために、
できるならパッチが当たっていないPHPでテストした方がいいと思う。

668 :nobodyさん:2007/03/02(金) 18:26:29 ID:???
皆さんお久しぶりです。元気で頑張っていますか。
下山伸二です。
あれから、色々引越しなどもありましてphpの勉強が進んでいないのですが、
なんとか自分のHPらしいものができあがりました。感謝感謝です。
また、ここで勉強させて頂きますので、どうもお手柔らかにお願いします。
今日は、これから出かけますので、この辺で。

669 :nobodyさん:2007/03/02(金) 18:38:14 ID:???
asdf0002asdf.jpg
こんな文字列データから数字のみ取り出すのはどうしたら良いですか。
eregだとマッチはするのだけれども、その文字のみ取るというのが出来ません。
アドバイスお願いします。

670 :nobodyさん:2007/03/02(金) 18:41:21 ID:???
>>668 おぉぉ、ご無沙汰!
HP出来たんだ。まぁ、頑張れよ。よかったら見せてくれぃ。

671 :nobodyさん:2007/03/02(金) 18:45:26 ID:Q6VSKbxP
$array[]の中に、配列$valueの値をAND区切りで入れたいんですが、

for ($i=0;$i<count($value);$i++){
$array[] .= $value[$i];
$array[] = implode(" AND ",$array[]);
}

エラーが出ます。どうすれば良いでしょうか。

672 :nobodyさん:2007/03/02(金) 18:49:09 ID:???
>>671
どういう配列状態でほしいのかもわからない

673 :nobodyさん:2007/03/02(金) 18:52:36 ID:???
foreach ($Array as $val) {
for ($i=0;$i<count($value);$i++){
$array[] .= $value[$i];
$array[] = implode(" AND ",$array[]);
}

}

674 :nobodyさん:2007/03/02(金) 18:56:23 ID:???
>>672

675 :nobodyさん:2007/03/02(金) 18:57:25 ID:???
>>671
$array = implode(' AND',$values);


676 :671:2007/03/02(金) 18:59:21 ID:???
要は小配列を大配列の一つにしたいという感じです

>>675
それやると
Warning: implode(): Bad arguments. in /public_html/test.php
が大量に…

677 :nobodyさん:2007/03/02(金) 19:03:36 ID:???
小配列大配列からして意味不明

678 :nobodyさん:2007/03/02(金) 19:05:20 ID:???
>>669
$filename = "asdf0002asdf.jpg";
$number = preg_replace("/.*?([0-9]+).*?\.jpg/", "$1", $filename);

679 :nobodyさん:2007/03/02(金) 19:10:09 ID:w2JedoDo
サニタイズについて質問です。

フォームの内のタグを排除する為に
$_POST = array_map("strip_tags",$_POST);
としているのですが、これだとタグを排除するだけで、<とか"は排除出来ません。
普通はhtmlspecialcharsを使うのでしょうが、これを使うと配列内の値は
適応されずに、エラーになりました。

フォームからの値を一括でサニタイズする場合、どういう書き方をするのが
一番ソースが少なく、最適だと言えるのでしょうか?

680 :669:2007/03/02(金) 19:10:26 ID:6EETpm2C
>>678
ありがとう!!

681 :nobodyさん:2007/03/02(金) 19:12:51 ID:???
>>679
これぞサニタイズ脳。
入力値をサニタイズするんじゃなくて、
入力内容はそのまま受け取って
出力値をサニタイズするんです。

682 :nobodyさん:2007/03/02(金) 19:13:18 ID:???
>>679
サニタイズ言うな

683 :nobodyさん:2007/03/02(金) 19:20:47 ID:???
PHP4.3系での質問です。宜しく御願いします。
$aの配列の中身がこうなっています。

( 1=A, 1=B, 2=A, 2=K, 2=D, 3=SS, 3=AX, 4=A…)

この時、
(1=A / 1=B) + (2=A / 2=K / 2=D) + (3=SS / 3=AX) + (4=A …
という様に数字ごとに一組になる様に置き換えたいのですが、
いい方法ありますか?

ややこしくてすみません。

684 :679:2007/03/02(金) 19:21:54 ID:???
>>681
$name=htmlspecialchars($_POST["name"]);

こういうことですよね?でも、これだと必ずhtmlspecialcharsを付けないと
行けなくて、ソースが増えすぎると思うのですが・・。

685 :nobodyさん:2007/03/02(金) 19:21:56 ID:???
>>679
サニタイズ脳に答えるなんて親切だろ?

preg_replace("/\'|\"|\&|\<|\>/", "", $str);

686 :nobodyさん:2007/03/02(金) 19:28:28 ID:???
>>679
高木さんのこのエントリーでも読んで少し勉強してきな。
http://takagi-hiromitsu.jp/diary/20051227.html

687 :nobodyさん:2007/03/02(金) 19:31:09 ID:???
サニタイズ言うな言うな

688 :虚弱PHP:2007/03/02(金) 19:34:20 ID:???
>>684
array_walk_recursive()

689 :nobodyさん:2007/03/02(金) 19:35:51 ID:???
嫌サニタイザー多いな。
コーディングスタイルなんて人それぞれだろ?

690 :679:2007/03/02(金) 19:36:16 ID:???
>>685-688
みなさんありがとうございます。
いただいたソースとURLを参考に勉強します。

691 :nobodyさん:2007/03/02(金) 19:52:02 ID:???
>>689
サニタイズ言うな黙れ

692 :nobodyさん:2007/03/02(金) 19:53:35 ID:???
>>683
配列を回してそれぞれの要素に対して内容を判別して新たに配列を組みなおせば?

693 :nobodyさん:2007/03/02(金) 19:54:21 ID:g1P/5yv2
PHPで主成分分析をしたいんですが、フリーで使えるライブラリを
ご存知の方いませんでしょうか?
行列計算に関しての情報が全然見つからなくて困っています。
下らない質問ですいません…。

694 :nobodyさん:2007/03/02(金) 19:55:17 ID:???
>>693
検索した?

695 :nobodyさん:2007/03/02(金) 19:59:25 ID:???
>>693
主成分分析ってどういう分析なの?

696 :683:2007/03/02(金) 20:01:52 ID:???
>>692
すみません、ちょっとよくわかりません。
私が考えていたのはif文を使って、
数字が同じなら / で区切り、数字が変わったら )+( で区切る様にする
という感じですが、その数字の判別をどうやってやるのかよく分からなくて、、、

697 :nobodyさん:2007/03/02(金) 20:05:58 ID:???
>>694レスありがとうございます!

はい、PHPのマニュアルから探しはじめて、PEAR、PECL、
検索エンジンでも探したのですが見付かりませんでした…。
ごめんなさい。

>>695
クロス集計したデータを要約する統計的分析です。
いろんな項目を集約して、分類できそな値を見つけるのが目的です。
ttp://www5.ocn.ne.jp/~shinya91/csm/331csm_multi.html

698 :nobodyさん:2007/03/02(金) 20:06:21 ID:???
>>696
1=A
とかっていうのは文字列なのかしら?

699 :nobodyさん:2007/03/02(金) 20:07:01 ID:???
ヒント:配列とキー

700 :683:2007/03/02(金) 20:09:53 ID:???
>>698
そうです。
1-A,2-B,2-X,3-AB…
という感じで「半角数字=文字」の束がコンマ区切りで格納されています。

701 :nobodyさん:2007/03/02(金) 20:12:29 ID:???
=でexplode

702 :nobodyさん:2007/03/02(金) 20:14:47 ID:???
>>700
左辺も右辺も重複する場合があるって言うのが結構面倒そうですね

703 :683:2007/03/02(金) 20:17:38 ID:???
>>700
1=A,2=B…イコールの誤りですすみません
explodeすると
1,A,2,B,2,Cという感じにバラバラになってしまうので余計やりにくい様な

704 :nobodyさん:2007/03/02(金) 20:20:07 ID:???
カンマなら配列要素の区切りだと思うだろ常識的に考えて

705 :nobodyさん:2007/03/02(金) 20:20:40 ID:???
テンプレも読めない奴は氏ね、帰れ

706 :683:2007/03/02(金) 20:32:41 ID:???
すいません、死にます;;

707 :nobodyさん:2007/03/02(金) 20:33:07 ID:???
$test = [];
for ($i = 0; $i < count($arr); $i += 2) {
$test.push({key: MODEL[$arr[$i]], val: $arr[$i+1]});
}
すべてカンマ区切りならこうすれば結構やりやすいんじゃないかと。

708 :nobodyさん:2007/03/02(金) 20:36:45 ID:???
>>697
pearやpeclも調べてないんだったら厳しいね。(っていうか調べてたんなら最初から書いてね)
やり方分かってるなら自分でモジュール作ってみたら?
他の人も助かるかもしれないし。

709 :nobodyさん:2007/03/02(金) 20:44:33 ID:???
>>708
ってか、投稿前に調べておくなんて常識だろw
調べないで投稿する方が異常なんだよ。つまりお前は異常。

710 :683:2007/03/02(金) 20:44:33 ID:???
先頭が必ず数字なので、正規表現使って先頭の数字を変数に入れて、
その数字が変われば次の処理にいく、という感じにしたいと思います。

711 :nobodyさん:2007/03/02(金) 20:46:59 ID:???
>>709
死ねボケ

712 :nobodyさん:2007/03/02(金) 21:17:48 ID:g1P/5yv2
>>708
書き忘れてすみませんでした。

ライブラリは無さそうですか…。残念ですが、自分で作ることにします。
PEARとPECLに登録されるようがんばります。
わざわざレスありがとうございました。

713 :nobodyさん:2007/03/02(金) 22:43:15 ID:iNFjaYc/
MySQL 4.0を使用している環境でWebアプリを構築する場合、
PHP側が文字コードをMySQLの設定文字コードに合わせないといけないのでしょうか?

PHPのinernal encodingをEUC-JP、MySQLの設定文字コードをSJISにすると、
正常に検索が行えませんでした。
(LIKE %日本語% を発行すると、一部しか拾って来ませんでした。)

714 :nobodyさん:2007/03/02(金) 22:55:46 ID:???
>>713
>>664

715 :nobodyさん:2007/03/02(金) 22:55:57 ID:???
エンコーディング合わせろって話ではなくて?

716 :nobodyさん:2007/03/02(金) 23:00:08 ID:???
>>713
検索前に検索文字列を変換しとけばいいじゃん

717 :713:2007/03/02(金) 23:13:02 ID:iNFjaYc/
3件も回答ありがとうございます。

>>714 さん
レンタルサーバで、MySQLの設定をいじることができません。

>>715 さん
PHPの内部エンコーディングをMySQLの設定文字コードに合わせたくないという事です。

>>716 さん
追加したデータは、EUC-JPで入っています。
INSERT時も内部エンコーディングEUC-JPのPGを使っているので、
データ自体、EUC-JPになっています。
ですので、検索時だけ対処しても駄目だと思います。

718 :nobodyさん:2007/03/02(金) 23:19:02 ID:???
>>717
SJISのデータベースにEUCのデータを格納するんじゃねEEEEEEE
あなた馬鹿ですか。

719 :nobodyさん:2007/03/02(金) 23:19:07 ID:???
>>717
接続時に SET CHARACTER SET ujis; とか

720 :713=717:2007/03/02(金) 23:31:13 ID:iNFjaYc/
>>718 さん
馬鹿です。
本番環境のエンコーディングが今まで分からなくて・・・

>>719 さん
MySQL 4.0だから、その手は使えません。
それで、最初の質問で「MySQL 4.0を・・・」と書きました。
皆さんは、どうされていたのか、知りたいと思いまして。

やはり、SQL投げる度に(INSERTもSELECTも)、
文字コードの変換を書く必要がありそうですね。
データ量が10万件規模なので、面倒だと思いましたが、
仕方ないようですね。

721 :nobodyさん:2007/03/02(金) 23:37:28 ID:???
>>720
これはもうPHP全然関係なくて、さすがにMYSQL内部でがエンコードが違うと
likeで部分一致を試みようと思ってもうまく処理できないんだよ。
諦めてデータベースの中身を1度入れ替えるべし。

722 :713=717:2007/03/02(金) 23:40:16 ID:iNFjaYc/
>>719 さん
失礼しました。
SET NAMESではないですね。
ただ、それを実行すると、
#1115 - Unknown character set: 'ujis'
となります。
SHOW VARIABLES LIKE 'character%'
とすると、
latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
となるのですが・・・

723 :nobodyさん:2007/03/02(金) 23:41:26 ID:???
>>722
MySQL4.0以下ならPHPのmbstringで文字コード変換してからinsert。
これが基本。

724 :713=720=722:2007/03/02(金) 23:44:26 ID:iNFjaYc/
親切な回答ありがとうございます。

>>721 さん
なるほど。エンコードが違うと、部分一致がうまく処理されないんですね。

>>723 さん
何か上手いやり方があるかと思いましたが、地道にするしかありませんね。

皆さんのおかげで、無事、解決しました。
mb_convert_encodingで文字コード変換します。
ありがとうございました。


725 :nobodyさん:2007/03/03(土) 03:03:11 ID:fjJSaYh6
すんません
ZendFrameworkの板から流れてきたんですけど、どうやら問題はPDO関係っぽいので
こちらにおじゃまします。

postgresqlでPDO使ってる人いますか?

接続は

$db=new PDO('pgsql:dbname=testdb user=user');

であってますよね?これでつなげるし、クエリーも出せて結果も受け取れるんですけど
ZendFrameworkを使って接続すると、apache(httpdのuser)君にはそんな権限はありませんって
エラーが出て、どうやら、ユーザーを認識していない様子。

で、ソースをいじって、PDO接続するところを上記のように(ZF使う前からずっとこれでつなげてました)
変えたら、接続できて、その他のメソッドも動きました。

あちらでも指摘されたんですがPHPのマニュアルには
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
と出てるんですよね。でも、このまま頭をpgsqlに変えると、apache君〜のエラーが出ます。
ちなみに、httpdの実行ユーザーをDBの接続ユーザーと同じ名前にすると接続できたりします。

ttp://www.php.net/manual/ja/ref.pdo-pgsql.connection.php
ここを見ると、postgresqlは違うような表記になってますけど、
これって、つなぐDBによって表記が変わるようなしろもんじゃないですよね?

長文失礼しました。
ご指摘ありましたらお願いします。

726 :nobodyさん:2007/03/03(土) 03:06:51 ID:???
>>725
変わる代物です。例えば

MySQL : mysql:host=[HostName];dbname=[DatabaseName];charset=[MySQL Charset]
PostgreSQL : pgsql:host=[HostName] port=[PortNumber] dbname=[DatabaseName] user=[UserName] password=[Password]
SQLite3 : sqlite:[DatabaseFileName]
SQLite2 : sqlite2:[DatabaseFileName]

727 :725:2007/03/03(土) 03:08:17 ID:???
追記
PHP5.2.1
postgreSQL8.2.3
apache2.2.2
です。

エラーは
SQLSTATE[08006] [7] FATAL: role "apache" does not exist
です。(権限はないじゃなくて、いませんでした。勘違いですOTZ)

728 :nobodyさん:2007/03/03(土) 03:13:14 ID:fjJSaYh6
>>726
即レスサンクス

やっぱりdbによって違うんですか。
ってことは、ZendFrameworkのバグでしょうか?

あっちでも書いたんですけど^^;
いくら試用段階とはいえこんなコアな部分にバグあって
誰も気づかないはずないですよね?

もうちょっといろいろ試してみます。
引き続き何かありましたらレスお願いします。

729 :nobodyさん:2007/03/03(土) 04:38:49 ID:???
>>728
必要な情報がDB毎に異なる部分だからこの辺は
統一されている必要性があるとも考えてもいないんじゃない?
バグでなく「仕様」かと。

730 :nobodyさん:2007/03/03(土) 05:35:56 ID:???
>>725
DSNの指定はDBごとに異なるものだけど、userとpassについては
第二引数、第三引数に指定することで各種DB共通に処理できる。

$db=new PDO("pgsql:dbname=testdb", "user");
で動かんか?

731 :nobodyさん:2007/03/03(土) 07:31:57 ID:???
>>683
<?php
$array = array( "1=A", "1=B", "2=A", "2=K", "2=D", "3=SS", "3=AX", "4=A" );
$str = "";
$i = 0;
// sort($array);
foreach ($array as $val) {
$num = (int)$val;
if ($num == $i) $str .= " / " . $val;
elseif ($num > $i) {
if ($i == 0) $str .= "(" . $val;
else $str .= ") + (" . $val;
$i = $num;
}
else exit("Error");
}
$str .= ")";
echo $str;
?>

732 :nobodyさん:2007/03/03(土) 07:47:18 ID:???
$array = array( "1=B", "2=A", "2=K", "2=D", "3=SS", "3=AX", "4=A", "1=A",); 
だったらだめじゃん

733 :nobodyさん:2007/03/03(土) 08:19:04 ID:???
sortFunc($m,$n){
$m=(int)$m;
$n=(int)$n;
if ($m == $n){
return 0;
}else if ($m > $n){
return 1;
}else{
return -1;
}
}

sort($array,'sortFunc')

734 :nobodyさん:2007/03/03(土) 08:23:48 ID:???
sortFunc($m,$n)→ function sortFunc($m,$n)
sort($array,'sortFunc') →usort($array,'sortFunc')

735 :nobodyさん:2007/03/03(土) 08:24:37 ID:???
なーんかダサイコードだな

736 :731:2007/03/03(土) 08:24:45 ID:???
>>732
数字はあらかじめソートして配列が作ってあるのが前提です
並べ替えてよいのなら
sort($array, SORT_NUMERIC );
にしてください

737 :nobodyさん:2007/03/03(土) 08:29:42 ID:???
出力が決められた文字列として出す事が前提だから
どうしてもださくなるわな

738 :nobodyさん:2007/03/03(土) 10:51:15 ID:???
>>735みたいのは結局自分でかけない奴

739 :nobodyさん:2007/03/03(土) 10:53:33 ID:???
なんか沸いたぞw

740 :nobodyさん:2007/03/03(土) 11:18:40 ID:???
>>739
>なんか沸いたぞw
この場合の「わいた」は「沸いた」ではなく「湧いた」ではないでしょうか。
ご確認のうえ、訂正をお願いします。


741 :nobodyさん:2007/03/03(土) 11:26:05 ID:???
functionを使った関数の書き方って
function hogeHoge($name,$type,$format);

出力側は、hogeHoge("名無し","テキスト","");

みたいな感じですよね?なんか他所で
function hogeHoge($name,$type[,$format]);
こういう書き方を見たのですが、こういう書き方って出来るんですか?

742 :nobodyさん:2007/03/03(土) 11:29:27 ID:???
なんか湧いたぞw

743 :nobodyさん:2007/03/03(土) 11:30:13 ID:???
>>741
どこで見たの?

744 :nobodyさん:2007/03/03(土) 11:33:08 ID:???
>>741
Parse error: syntax error, unexpected '[', expecting ')' in C:\home\php\test.php on line 3
人に試させるなよ

745 :nobodyさん:2007/03/03(土) 11:33:15 ID:???
マニュアルだろ

746 :nobodyさん:2007/03/03(土) 11:35:10 ID:???
>>741
PHPマニュアルか
[, 変数 ]は省略可能を表している記号だ

747 :741:2007/03/03(土) 11:43:10 ID:???
>>746
マニュアルです。省略可能という事は、
hogeHoge("名無し","テキスト");

こう書けるって事ですか?ただこれをすると
Missing argument 4 for hogeHoge(), というようなエラーが出ました

748 :nobodyさん:2007/03/03(土) 11:51:03 ID:???
ソースを晒したほうが早いです。

749 :nobodyさん:2007/03/03(土) 11:51:13 ID:???
>>747
関数定義するとき省略可能なようにする
function hogeHoge ( $name, $type, $format = "")
{
echo $name;
echo $type;
if ($format) echo $format;
}


750 :741:2007/03/03(土) 11:57:25 ID:???
>>749
意味分かりました。ありがとうございました。

751 :nobodyさん:2007/03/03(土) 12:35:53 ID:Z8h+tc0/
クラス外にある設定ファイル上の変数を、クラス内から使いたい場合ってどうすればいいんでしょうか。。
下記のような方法では、無理でしょうし。

* hoge.php

require_once 'settei.php';

Class Hoge
{
function sample(person){
echo $name[person]."さんです。";
}
}

* settei.php

$name = array(1=>"taro",2=>"jiro",3=>"saburo");

752 :nobodyさん:2007/03/03(土) 12:46:09 ID:???
定数かglobalじゃ駄目なん?
とクラスが使えない俺が言ってみる。

753 :nobodyさん:2007/03/03(土) 13:16:08 ID:???
PHP5なら
static $name = array(1=>"taro",2=>"jiro",3=>"saburo");
にして
settei::name[$person]
でアクセス

PHP4なら
define( "name", array(1=>"taro",2=>"jiro",3=>"saburo") );
にして
name[$person]
でアクセス

検証はしてないのでたぶん



754 :nobodyさん:2007/03/03(土) 13:31:19 ID:???
サニタイズの高木の話、べつに悪いとは思ってないけど、
htmlspecialcharsでも悪くはない。

高木の言うことを鵜呑みにするのは初心者ですか?

755 :nobodyさん:2007/03/03(土) 13:33:41 ID:2CUy4PID
PHP4.4.6リリースあげ

756 :725:728:2007/03/03(土) 13:40:25 ID:fjJSaYh6
>>729
>>730
レスありがとうございます

すいません。わかりました。
passwordを省略すると、そのエラーが出るようです。

しかもZendFramework版のほうで指摘されてたのに見逃してたみたいです。
まじでごめんなさいOTZ

いいわけ:でも、エラーの出方が紛らわしいと思いません?^^;

ありがとうございました。

757 :nobodyさん:2007/03/03(土) 13:57:33 ID:2CUy4PID
PHPマニュアルのページから目次以下の関数名と説明書き↓を取得したいのですが、
余計なものまで取得したり、配列がぐちゃぐちゃになって困ってます。
どこを手直ししたらよろしいのかご教授お願いいたします。

【取得したい内容】
apache_child_terminate ? このリクエストの後にApacheプロセスを終了する


virtual ? Apache サブリクエストを実行する
【ここまで】
(計14行文)



<?php
$url = "http://www.php.net/manual/ja/ref.apache.php";
$subject = file_get_contents($url);
$subject = mb_convert_encoding($subject,"EUC-JP","auto");

$patten = "[(<dt>)+(.*)(</a></span>)+]";
preg_match_all($patten, $subject, $set);

echo"<pre>";
print_r($set);
echo"</pre>";

?>

758 :nobodyさん:2007/03/03(土) 16:18:07 ID:cG1UPfnL
PHP4です。
300行ほど並んだCSVファイルから、ランダムで1行だけを取り出し、
その列のデータを配列$arrayに入れる方法を教えて下さい。

759 :nobodyさん:2007/03/03(土) 16:24:01 ID:???
>>758
どこまで書いたの?

760 :nobodyさん:2007/03/03(土) 16:24:39 ID:???
これは釣よ

761 :nobodyさん:2007/03/03(土) 16:25:32 ID:???
$file=file("CSVファイル");

srand((float) microtime() * 10000000);
$array = array_rand($file);

762 :nobodyさん:2007/03/03(土) 16:26:28 ID:cG1UPfnL
>>759
$file = "data.csv";
$file = @fopen($file);
$array = array($file);
$close;

でストップしてます

763 :nobodyさん:2007/03/03(土) 16:27:36 ID:???
>>762
マニュアルでfopen関数のとこ見るといいよ

764 :nobodyさん:2007/03/03(土) 16:31:58 ID:???
>>757
$patten = '[<dt>(.+?)</dt>]'; 

765 :nobodyさん:2007/03/03(土) 16:32:35 ID:???
すいません、>>761の通り
$file = "data.csv";
srand((float) microtime() * 10000000);
$array = array_rand($file);
とした時、$arrayには行数が入りますよね?

766 :nobodyさん:2007/03/03(土) 16:33:07 ID:???
>>765
マニュアルでarray_rand関数のとこ見るといいよ 

767 :nobodyさん:2007/03/03(土) 16:36:11 ID:???
>>757
HTML化される前のSGMLを使った方がいいんじゃまいか?

<refentry id="function.apache-child-terminate">
 <refnamediv>
  <refname>apache_child_terminate</refname>
   <refpurpose>このリクエストの後にApacheプロセスを終了する</refpurpose>
てな感じにXMLの形式で書かれている。

元ネタはCVSで取得するしか無いが、まぁ難しいもんでもない。
今のように毎回本家に負荷を掛けるより、一回チェックアウトしてローカルファイルとしてやったほうがいいべ。
cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -d phpdoc-ja/reference

768 :nobodyさん:2007/03/03(土) 16:38:47 ID:???
>>763>>766
理解しました。
$file[$array]で出力するとうまく一行だけ取り出せました。

ありがとうございました。

769 :nobodyさん:2007/03/03(土) 16:51:04 ID:2CUy4PID
>>764さんのご指摘の箇所を修正しました。
しかし全部14行取得できません。悩みます。

>>767さんのおっしゃること通りですが、私には勉強不足な点がございますので調べてみます。

770 :nobodyさん:2007/03/03(土) 16:53:18 ID:2CUy4PID
結果はります。
Array([0] => Array
(
[0] => apache_child_terminate ? このリクエストの後にApacheプロセスを終了する
[1] => apache_get_modules ? ロードされた Apache モジュールのリストを取得する
[2] => apache_get_version ? Apache のバージョンを取得する
[3] => apache_getenv ? Apache の subprocess_env 変数を取得する
[4] => apache_note ? Apacheリクエスト記号(note)を取得/設定する
[5] => apache_request_headers ? HTTPリクエストヘッダを全て取得する
[6] => apache_reset_timeout ? Apache の書き込みタイマーをリセットする
[7] => apache_setenv ? Apacheサブプロセスの環境変数を設定する
[8] => ascii2ebcdic ? ASCIIからEBCDICに文字列を変換する
[9] => ebcdic2ascii ? EBCDICからASCIIに文字列を変換する
[10] => getallheaders ? 全てのHTTPリクエストヘッダを取得する
[11] => virtual ? Apache サブリクエストを実行する
)
[1] => Array
(
[0] => apache_child_terminate ? このリクエストの後にApacheプロセスを終了する
[1] => apache_get_modules ? ロードされた Apache モジュールのリストを取得する
[2] => apache_get_version ? Apache のバージョンを取得する
[3] => apache_getenv ? Apache の subprocess_env 変数を取得する
[4] => apache_note ? Apacheリクエスト記号(note)を取得/設定する
[5] => apache_request_headers ? HTTPリクエストヘッダを全て取得する
[6] => apache_reset_timeout ? Apache の書き込みタイマーをリセットする
[7] => apache_setenv ? Apacheサブプロセスの環境変数を設定する
[8] => ascii2ebcdic ? ASCIIからEBCDICに文字列を変換する
[9] => ebcdic2ascii ? EBCDICからASCIIに文字列を変換する
[10] => getallheaders ? 全てのHTTPリクエストヘッダを取得する
[11] => virtual ? Apache サブリクエストを実行する
)
)

771 :nobodyさん:2007/03/03(土) 17:03:44 ID:???
$patten = '[<dt>(.+?)</dt>]s'; とか

772 :nobodyさん:2007/03/03(土) 17:25:28 ID:???
>>771さんのやりかたで14行取得できましたが、配列の最初に関係ないものを取得してしまいました。
アドバイスいただきありがとうございます。

773 :nobodyさん:2007/03/03(土) 19:19:38 ID:Z8h+tc0/
file_get_contentsで失敗した時には〜みたいな処理をphp4でしたいのですが、マニュアルには
のってませんでした。可能でしたら、お教え下さい。。

file_get_contents("http://www.yahoo.comcomcom") <= 404エラー
rescue
exit

みたいな。rubyでいう。

774 :nobodyさん:2007/03/03(土) 19:22:21 ID:???
マニュアルくらい読めよ・・・

失敗した場合、file_get_contents() は FALSE を返します。


775 :nobodyさん:2007/03/03(土) 19:24:16 ID:???
if(file_get_contents("http://www.yahoo.comcomcom"){
print "大成功!";
}

776 :773:2007/03/03(土) 19:34:42 ID:Z8h+tc0/
さんくす!

777 :773:2007/03/03(土) 20:11:37 ID:Z8h+tc0/
Warning: file_get_contents(
"http://www.yahoo.comcomcom"): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

ためしてみたんですが、WARGINGは出ますねぇ。。

778 :nobodyさん:2007/03/03(土) 20:26:54 ID:???
>>777
あー、カッコ足りなかった

779 :nobodyさん:2007/03/03(土) 20:27:56 ID:???
あー、違うかもな
とにかく自分でソース確認しましょうね。

780 :nobodyさん:2007/03/04(日) 00:54:24 ID:/sugyBqZ
>>664 すいません今度はそれでも駄目でした・・・
my.cnfの[mysqld] に
skip-character-set-client-handshake
を貼り付ければいいわけですよね?
うん〜 

781 :nobodyさん:2007/03/04(日) 02:01:20 ID:74jdPdk8
ifや何もないブロックでも、関数と同じく、
ブロックが閉じる時に変数は破棄されますか?

if(***) {
$hoge;
}

{
$foo;
}

function Bar() {
$bar;
}

782 :nobodyさん:2007/03/04(日) 02:04:10 ID:???
俺、夢見てるのかな

783 :nobodyさん:2007/03/04(日) 02:55:29 ID:j6Pq8T7o
PHP5にて、クラス自体へのアクセスを制限する方法はありますか?
例えば、クラスAは、クラスBからはnewできるが、クラスCからはnewできない、などです。
packageやfriendクラスの概念が無いので正攻法では無理だと思うのですが、
何か擬似的な方法がありましたらご教授下さい。

784 :nobodyさん:2007/03/04(日) 03:05:39 ID:???
自作関数の中で、switchにてcase分けし、あるcaseの場合にはそこで
関数から抜け出したい(関数内に書かれているその後の処理をしたくない)のですが、
どうやって任意のポイントで関数から抜け出したらいいでしょうか?

breakとかじゃないし・・・
exitだとプログラム全体が終わっちゃうし・・・

785 :nobodyさん:2007/03/04(日) 03:06:41 ID:???
return

786 :nobodyさん:2007/03/04(日) 03:07:10 ID:???
return

787 :nobodyさん:2007/03/04(日) 03:07:53 ID:???
>>785は俺

788 :nobodyさん:2007/03/04(日) 03:15:48 ID:???
>>785>>786
えっ、returnって値を返すだけじゃなくて、関数から抜けられるの!?
知らなかった・・・

今までいちいち
return $hoge;
exit;
とかって書いてた・・・orz

789 :nobodyさん:2007/03/04(日) 03:32:00 ID:???
exitしたらそこでスクリプト終了だよ。
その直前でreturnしてるから、exitまで行ってないけど。

790 :nobodyさん:2007/03/04(日) 04:11:57 ID:???
>>781
関数以外のブロックはスコープを隔てません。

>>783
定義したクラスは全てグローバルな同一の名前空間に押し込まれるので、できません。
いや、無理すればできるかもしれないけど、むしろ設計や命名規則などをうまく構築すべき。

無理な方法@コンストラクタの引数に特定のクラスのオブジェクトを渡し、不正なオブジェクトだったら例外投げたりエラー吐いたり。
無理な方法AクラスAを無理やりクラスBの親クラスにすれば、AのprotectedなメソッドにはCからアクセスできないので、そこでしかnewできないようにする。
無理な方法Bコンストラクタ内で、debug_backtraceで直前にどこのメソッドにいたのか調べる。

791 :nobodyさん:2007/03/04(日) 04:50:35 ID:???
$this->hoge -> hogeArr($str);

こんな感じのことしたいのですがどのようにすればいいでしょうか?


792 :nobodyさん:2007/03/04(日) 05:34:39 ID:???
$this->hoge = new HogeClass;

793 :nobodyさん:2007/03/04(日) 05:35:43 ID:???
>>788
>>えっ、returnって値を返すだけじゃなくて、関数から抜けられるの!?
同じ事を言っている事に気付かないのは、俺も共感は出来る。

794 :nobodyさん:2007/03/04(日) 05:40:06 ID:???
まぁそういう発想もあるのかと勉強になった

795 :nobodyさん:2007/03/04(日) 05:41:50 ID:???
>>780
SQL再起動したのか?
後質問するならバージョンとかもちゃんと書けよ。
「PHPプログラムを動かすと文字化けする」ってのも実は良くわからんし。

796 :nobodyさん:2007/03/04(日) 06:02:43 ID:???
>>788
まあ、問題は return と exit の挙動を理解しないで書いてることだな。

797 :781:2007/03/04(日) 06:44:40 ID:74jdPdk8
>>790
ありがとうございます。

798 :nobodyさん:2007/03/04(日) 06:44:57 ID:qW7P3ujl
ファイルのパーミッション変更について質問です。
今、パーミッションが「0600」のtest.gifというファイルがあるとします。
このとき、rootでSSHログインし、以下のような内容のPHPスクリプトを実行します。
$file = '/home/httpd/(省略)/test.gif';
chmod($file, '0644');
すると、なぜかtest.gifのパーミッションが、「0644」ではなく「1204」になってしまいます。

どうしてこうなるのでしょうか・・・??
スティキービットを立てろなんて命令してないのに。。。

799 :nobodyさん:2007/03/04(日) 06:56:26 ID:???
サーバ名も挙げずによく質問できるな。
その図太い神経だけは認めてやるw

800 :nobodyさん:2007/03/04(日) 07:00:50 ID:qW7P3ujl
>>799
サーバ名と言いますと・・・??
もしかしてOSのことでしょうか?

OSはLinuxです。
PHPは4.3.1です。

801 :791:2007/03/04(日) 07:03:53 ID:???
お願いします…

802 :798:2007/03/04(日) 07:04:46 ID:qW7P3ujl
追記です。
直接シェルから
chmod 644 test.gif
と入力してやれば、期待通りの結果(0644)になります。

それなのに、なぜかPHPのchmod()だと「1204」になってしまいます。

803 :nobodyさん:2007/03/04(日) 07:15:38 ID:???
>>798
0644ってのは8進数値なんだからシングルクォートで括っちゃダメだよ。

804 :nobodyさん:2007/03/04(日) 07:16:46 ID:???
>>801
>>792

805 :798:2007/03/04(日) 07:50:53 ID:qW7P3ujl
自己解決しました・・・と思ったら、
>>803さん、ありがとうございます。

そうですね、そこに気づかずにハマってしまいました。。。


806 :nobodyさん:2007/03/04(日) 07:59:54 ID:???
>>801
792はシカトですかそうですか

807 :nobodyさん:2007/03/04(日) 08:54:39 ID:???
>>806
シカトというかもれも分からない・・・

808 :nobodyさん:2007/03/04(日) 09:12:08 ID:???
$this = new this();
$hoge = new hoge();
$this->hoge = $hoge

$this->hoge->hogeArr();

809 :nobodyさん:2007/03/04(日) 10:16:05 ID:???
$thisに代入は無理だろ常識的に考えて・・・

810 :nobodyさん:2007/03/04(日) 10:32:46 ID:???
クラス内じゃなきゃいけんじゃね

811 :nobodyさん:2007/03/04(日) 10:33:53 ID:???
やってみればいいんじゃね

812 :nobodyさん:2007/03/04(日) 11:20:24 ID:???
>>648

813 :nobodyさん:2007/03/04(日) 11:22:22 ID:???
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
SOHOやフリーでWeb制作してる奴 二十人目 [Web制作]
【漢検】 漢字検定2級スレ part2 【2級】 [資格全般]
【アフィゴマ疑惑】Smart-C Part2【濃厚?】 [Web収入]
【支払遅延】Ads by Goooooogle Part77【奢れる者】 [Web収入]
▲漢字検定って意味ある資格?▲ [教育・先生]

814 :nobodyさん:2007/03/04(日) 11:29:01 ID:???
>>791
で、何をしたいの?

815 :nobodyさん:2007/03/04(日) 11:41:06 ID:???
漢字検定3級なら余裕

816 :nobodyさん:2007/03/04(日) 12:31:40 ID:VcUPN6gu
教えてください。
配列の添え字に日本語って使ってもいいのでしょうか?

いや、実際やってみたら使えるんで便利だと思ってるんですけど
英数字の添え字以外はなじみがなくて。

817 :nobodyさん:2007/03/04(日) 12:43:12 ID:???
PHPのマルチバイト関数とか見てると、マルチバイトの添え字のテストなんてまともにやって無さそうだし怖い。
SJISでなんて怖くて出来ないし

とか色々考えると俺には出来ないな

818 :nobodyさん:2007/03/04(日) 12:46:50 ID:???
別にいいんでない?文字コードにさえ気をつければ

819 :816:2007/03/04(日) 13:25:09 ID:???
ありがとうございます。
まあ怖いのはそうなんですがwどうせ商用じゃないし利便性が勝るので気をつけて使います。

820 :nobodyさん:2007/03/04(日) 13:35:23 ID:J36PC9WX
変数の受け渡しについてなのですが、
あるファイルで
 function hoge(){
   $hoge = $_POST['hoge'];
 }
としておいて、別ファイルから
hoge();
で呼び出しをしてそれ以降の処理で$hogeを使うのはムリでしょうか?
一度試してみたのですがうまくいってなくて。
できないものなのでしょうか?

821 :nobodyさん:2007/03/04(日) 13:38:27 ID:???
 function hoge(){
   $hoge = $_POST['hoge'];
   return $hoge;
 }
  ↓
としておいて、別ファイルから
  ↓
 $hoge = hoge();
  ↓
それ以降の処理

822 :nobodyさん:2007/03/04(日) 13:39:08 ID:???
普通にできると思います

823 :nobodyさん:2007/03/04(日) 13:40:13 ID:???
function hoge(){
    global $hoge;
    $hoge = $_POST[?hoge?];
}
hoge();
echo $hoge;

824 :820:2007/03/04(日) 14:03:12 ID:???
>>821-823
ありがとうございます
こんなに早く教えていただけるなんてびっくりしました;

変数の数が少ないときはreturnを使って、
変数の数が多い場合はglobalを使うのが良さそうですね!
どうもありがとうございました!がんばります!

825 :nobodyさん:2007/03/04(日) 14:21:51 ID:???
>>816
配列の添え字とか、DBのフィールドに日本語とか
プログラマとして上を目指すなら今のうちに止めたほうがいいな。

趣味程度なら他人に迷惑かけなければ利便性重視でおk

826 :nobodyさん:2007/03/04(日) 16:14:39 ID:???
この関数名に日本語使ってるコード渡されて
どこからもってきたのか聞いたら某大手自動車メーカー経由だった
あほか

827 :nobodyさん:2007/03/04(日) 16:26:49 ID:???
function getShouhin(){
  return $this->shouhin;
}
ぐらいならいいけど
function getShouhin(){
  return $this->商品;
}
とか
function 商品取得(){
  return $this->商品;
}
は死刑だな

828 :nobodyさん:2007/03/04(日) 16:44:52 ID:???
しっかりとしたポリシーがあれば日本語でもいいんじゃないの?
そういうことができる仕様になってるわけだから。

でも、俺はめんどうでやっかいなだけだと思うから、
そういう変なポリシーは持たない!

829 :nobodyさん:2007/03/04(日) 17:14:35 ID:???
まあポリシーの問題とかじゃなくてさ、ム業界全体で考えると
コードにマルチバイト使用できる「機能」がないほうが速度とか角度とか色々いいだろ

830 :nobodyさん:2007/03/04(日) 17:21:07 ID:BeWvury2
削除機能付のゲストブックを作っています

投稿された内容を、一行づつ書き込む(一つの投稿ごとに改行して同じテキストに書き込む)
見るときは、そのテキストから、file()で格納した配列をforeachでループさせる
これで書き込まれた内容と、それに対応する行番号が取得できましたが、
任意の行を削除するにはどうしたらいいのでしょうか?

831 :nobodyさん:2007/03/04(日) 17:21:39 ID:???
>>827
2バイト日本語は当然ダメだけど、
1バイトでローマ字日本語は完全に許して欲しいなぁ・・・

832 :nobodyさん:2007/03/04(日) 17:22:04 ID:???
クラスについての質問です。
複数のクラス間で同じもの共有したのですが、

class Super
{
  function Super()
  {
    $this->time = time();
  }
}
class Sub1 extends Super
{
}
class Sub2 extends Super
{
}

a = new Sub1;
print a->time;
sleep(1);
b = new Sub2;
print b->time;

例えば上のような形で、同じtimeの値を共有する方法はありますか?

833 :829:2007/03/04(日) 17:34:22 ID:???
>>831
うーん、それはカッコ悪いってのはあるけど俺的には許容範囲
$str1, $str2 よりはマシだよな

834 :nobodyさん:2007/03/04(日) 17:41:37 ID:???
requireする文字コードEUC-JPのhtmlファイルをまとめて
SJISに文字コード変換したいのですが、どのようにすればいいでしょうか?


835 :nobodyさん:2007/03/04(日) 17:50:37 ID:???
>>834
手間ひまかけてじっくり煮込む

836 :nobodyさん:2007/03/04(日) 17:53:26 ID:???
>>834
サクラエディタで開いて保存しなおせ

837 :834:2007/03/04(日) 18:04:54 ID:???
>>835-836
内部的にはEUC-JPにしたいので表示だけSJISにしたいんです。


838 :783:2007/03/04(日) 18:15:01 ID:j6Pq8T7o
>>790
遅ればせながら、ありがとうございます。
debug_backtrace方式は目からウロコでした。
濫用しない程度に特攻してみます。

839 :834:2007/03/04(日) 18:28:40 ID:???
自己解決しました

840 :834:2007/03/04(日) 18:55:48 ID:???
>>839
いやな性格してるね〜、市ね

841 :834:2007/03/04(日) 19:01:21 ID:???
>>840
偽者乙
プゲラw


842 :nobodyさん:2007/03/04(日) 19:02:22 ID:???
3秒でわかったけど確認してないから晒しはやめとくううう
ってか、EUCからSJISニ変換したところで無駄に重くなるだけだからやめとけ

843 :nobodyさん:2007/03/04(日) 19:02:43 ID:KchkAUoC
質問させてください。
サーバーOS:Windows XP SP1
PHPver:5.1 build 2600
GDのバージョンは2です。
本文:
以下のようなソースを書きました。
$image = imagecreatefrompng('./images/3.png');
imagepng($image);
imagedestroy($image);
$image = imagecreatefrompng('./images/2.png');
imagepng($image);
imagedestroy($image);
望みとしては、3の次に2が横並びで表示するようにしたいのですが、位置の指定方法がまったくわかりません。
それぞれのpngファイルの名前は数の番号を表しています。
この例だと
32
と表示してほしいのですが、
3
としか表示されません。
ファイルじたいをpngファイルとして認識させたいのですが、他に方法があるのならそれでもかまいません。
どうかよろしくお願いします。
なおサーバーのファイルは自分で設定できる立場にあります。他のDLLを導入するなどは可能です。

844 :nobodyさん:2007/03/04(日) 19:36:24 ID:???
echo '32';

というのは下らない冗談で、
とりあえずマニュアルでそれぞれの関数のページ見れば解決すると思うよ

845 :nobodyさん:2007/03/04(日) 20:06:30 ID:???
わかりました
関係の関数含めて見直します。

846 :843:2007/03/04(日) 20:07:00 ID:KchkAUoC
すいません
すごく間違えました。
>>845は私です・・・

847 :nobodyさん:2007/03/04(日) 20:07:03 ID:???
>>833
そうそう、無理に英語にしたり、数字つけただけの変数よりも
ローマ字のほうが分かりやすいことも多々あるからさ。

俺は英語+日本語ってのもよく使うよ。
たとえば、$text_hozon とかねw

848 :nobodyさん:2007/03/04(日) 20:52:41 ID:???
以下のテキストからsubjectの中身だけを取り出すにはどうしたらいいでしょうか?
$str = 'To: <test@test.net>
Subject: =?ISO-2022-JP?B?WxskQiUkJXMlVyVsJTklOCVjJVElcxsoQiAbJEIlQCUkJTglJyU5GyhC?=
=?ISO-2022-JP?B?GyRCJUgbKEJdGyRCPzc0KSVpJUMlNyVlISobKEIgGyRCIVgbKEJQRU5UQVggSzEw?=
=?ISO-2022-JP?B?RBskQiE/GyhCSzEwMEQbJEI0MEE0JSwlJCVJIVkkWyQrGyhCVmlzdGEbJEJCUBsoQg==?=
=?ISO-2022-JP?B?GyRCMX4kRyQtJGtCZzt2RTUhIhsoQm1peGkbJEI1IUc9M2hNUSVQGyhC?=
=?ISO-2022-JP?B?GyRCJSQlViVrIUQbKEIgbW9yZSBhbmQgbW9yZRskQiEqGyhC?=
Date: Fri, 2 Mar 2007 12:20:19 +0900';
↓以下のような正規表現だとSubjectの2行目の分までは取得できましたが、3行目(n行目)以降をどうやってマッチさせましょう・・・
preg_match("/^Subject:\s*(.*)\s*(\s*.*)\s*/mi", $str, $res);
$subject = mb_decode_mimeheader(join('', $res));

849 :848:2007/03/04(日) 20:54:54 ID:???
あっ、書き込んだらタブが削除されちゃいましたが、
実際にはSubject:の2行目以降の行頭にはそれぞれタブが一つずつ入っています。
改行コードは\nです。
要するに一般的なメールのヘッダです。

850 :nobodyさん:2007/03/04(日) 20:58:59 ID:???
>>849
http://jp2.php.net/preg_match

851 :nobodyさん:2007/03/04(日) 21:05:21 ID:???
>>830
任意の行の内容を改行で上書きすればいいんでないの
指定行を削除する関数でも作っといた方が後々便利かもね

CかC++ならリスト使ってポインタ繋ぎ変えてセルを消せばいんだけどね

>>832
bのコンストラクタで参照渡しかグローバル変数

852 :nobodyさん:2007/03/04(日) 21:05:58 ID:???
>>848
なんだか面倒くせぇことやろうとしてるな。2行目以降は無視しちゃえば?w

>>850
難易度的に、マニュアル見て解決できるレベルじゃないだろww

853 :nobodyさん:2007/03/04(日) 21:07:50 ID:???
>>848
TABでsplit

854 :nobodyさん:2007/03/04(日) 21:10:36 ID:???
>>853
メールのヘッダって、subject以外にもTABが入りうる箇所ってたくさんあるから、
「TABでsplit」だけではダメな気が。

まず最初にsubjectに関係するn行だけを取り出せれば、その後TABでsplitもアリだけどね。

855 :nobodyさん:2007/03/04(日) 21:19:35 ID:???
preg_match_allは?

856 :nobodyさん:2007/03/04(日) 21:22:23 ID:???
>>848
つまりアレか、subjectの行数がn行ある(何行になるのか決まってない)のが問題…ってことでいいのか??
行数が決まってれば簡単なんだろうけど、ややこしいな。

857 :nobodyさん:2007/03/04(日) 22:18:45 ID:???
あのぉ、「PHP」って何の略ですか?

858 :PHP: Hypertext Preprocessor:2007/03/04(日) 22:21:38 ID:???
>>857
ぐぐくれカス!!
http://www.googkle.com/search?hl=en&q=PHP

859 :nobodyさん:2007/03/04(日) 22:50:42 ID:???
>>858
googkle

860 :nobodyさん:2007/03/04(日) 22:53:34 ID:???
>>848
PEARのMail_mimeDecode使った方がいいかと

require_once 'Mail/mimeDecode.php';
$str =
"To: <test@test.net>
Subject: =?ISO-2022-JP?B?WxskQiUkJXMlVyVsJTklOCVjJVElcxsoQiAbJEIlQCUkJTglJyU5GyhC?=
\t=?ISO-2022-JP?B?GyRCJUgbKEJdGyRCPzc0KSVpJUMlNyVlISobKEIgGyRCIVgbKEJQRU5UQVggSzEw?=
\t=?ISO-2022-JP?B?RBskQiE/GyhCSzEwMEQbJEI0MEE0JSwlJCVJIVkkWyQrGyhCVmlzdGEbJEJCUBsoQg==?=
\t=?ISO-2022-JP?B?GyRCMX4kRyQtJGtCZzt2RTUhIhsoQm1peGkbJEI1IUc9M2hNUSVQGyhC?=
\t=?ISO-2022-JP?B?GyRCJSQlViVrIUQbKEIgbW9yZSBhbmQgbW9yZRskQiEqGyhC?=
Date: Fri, 2 Mar 2007 12:20:19 +0900\n\n";
$mime = new Mail_mimeDecode($str, "\n");
$result = $mime->decode();
$subject = $result->headers['subject'];
mb_internal_encoding('ISO-2022-JP');
$decoded = mb_decode_mimeheader($subject);
var_dump(mb_convert_encoding($decoded, 'UTF-8', 'ISO-2022-JP'));

[インプレスジャパン ダイジェスト]新刊ラッシュ! 『PENTAX K10D/K100D完全ガイ ド』
ほかVista対応できる大事典、mixi機能活用バイブル… more and more!

861 :nobodyさん:2007/03/04(日) 22:55:11 ID:???
>>857
1."PHP:Hypertext Preprocessor"
2."Personal Home Page Tools"
3."Peaceand Happiness through Prosperity"
好きなの選べ

862 :nobodyさん:2007/03/04(日) 23:00:32 ID:MKGA7vNq
フォーム入力の確認画面の出力なのですが。
・いたずらや悪意のある入力を防ぐ
・マジッククオートで2バイト文字が変にエスケープされて文字壊れしない渡し方は

<input type="hidden" name="company" value="<? echo urlencode( $company ); ?>">
<? echo htmlspecialchars( $company ENT_QUOTES, なになに); ?></td>

で完成なのでしょうか?
htmlentitiesは、どういうときに使うものなのでしょう…

863 :nobodyさん:2007/03/04(日) 23:08:46 ID:???
>>862
valueの中もhtmlspecialcharsだよ。urlencodeは<A>タグリンク中の文字列に使う。

864 :nobodyさん:2007/03/04(日) 23:09:17 ID:???
>>862
なんでhiddenのvalueにurlencode?
両方ともhtmlspecialcharsでいい
マジッククォートでおかしな動作してほしくなかったらOFFにすればいい
htmlentitiesは全て実体参照に変換したい時に使う

865 :nobodyさん:2007/03/04(日) 23:27:26 ID:gHI9abtc
>>795
SQLの再起動はしました
バージョンはXAMPPで
Apache 2.2.4
MySQL 5.0.33
PHP 5.2.1 & PHP 4.4.5
phpMyAdmin 2.9.2
で  PHP5です

866 :nobodyさん:2007/03/04(日) 23:47:20 ID:MKGA7vNq
>>863 864
レスありがとうございます。
valueの中身もhtmlspecialcharsだと
文字コードに変わったまま渡され
メール送信したり、比較一致処理ができなかったりしないでしょうか?





867 :nobodyさん:2007/03/04(日) 23:48:11 ID:???
>>860
PEARのMail_mimeDecodeだと、マルチバイト処理にやや不安あり、って噂を聞くけどね。
あと添付ファイルがあるときも面倒になる可能性があるとか無いとか。

868 :nobodyさん:2007/03/05(月) 00:00:52 ID:???
>>866
HTMLのエスケープは送信時に自動的にアンエスケープされて元通り。
その上でURLエンコードがブラウザによって自動的になされる。

869 :nobodyさん:2007/03/05(月) 00:16:18 ID:???
>>868
メール送信やprintしてみましたが、元に戻っているのですね
.htaccessが禁止されていて
マジッククオートが有効固定で文字がおかしくなる時はどうすればいいでしょう?
今まではがんばってエンコードでして英数字で渡していました。

870 :nobodyさん:2007/03/05(月) 00:22:34 ID:???
>>866
エンコードは送信データの受け側でどうとでもすればいいのでは?

871 :nobodyさん:2007/03/05(月) 01:03:29 ID:???
>>869
get_magic_quotes_gpc()を判別してマジッククォートONのときは
stripslashes_array()等を使ってGET、POSTデータからクォートを除去。

872 :nobodyさん:2007/03/05(月) 01:14:41 ID:???
requireする文字コードEUC-JPのhtmlファイルをまとめて
SJISに文字コード変換したいのですが、どのようにすればいいでしょうか?

873 :nobodyさん:2007/03/05(月) 01:27:28 ID:???
>>872
事前に変換して保存しとくんじゃダメなのか?

874 :nobodyさん:2007/03/05(月) 03:28:33 ID:???
>>865
skip-character-set-client-handshakeあたりで検索して
コーヒーでも飲みながらゆっくりと落ち着いて色々試してみれ

それでも解決しないなら何をしてどうなったかの詳細を書いてみるが良いよ。

875 :nobodyさん:2007/03/05(月) 07:46:06 ID:???
>>865
ちなみにDBにはどんな文字コードで格納してて
PHPシースはどんな文字コードで書いてて
HTMLはどんな文字コードで出力してて
ブラウザのエンコードはどの文字コードが選択されてるんだ?

876 :nobodyさん:2007/03/05(月) 11:03:28 ID:???
シース

877 :nobodyさん:2007/03/05(月) 12:45:40 ID:VUeVfNbT
PHPで簡易アクセス解析作ろうと思っているんだがアクセスしてきた人の
国を判別する方法ってあるとおもう?よくアクセス解析で都道府県別統計
を取ってくれる物があるけどあんな感じで国別統計というのもとってみたい
なと思ったわけ。

878 :834:2007/03/05(月) 12:51:21 ID:???
都道府県てとれるの?そうだとしたら4−6桁目?

879 :nobodyさん:2007/03/05(月) 12:57:56 ID:???
>>832
別に共有変数をもつため専用のクラスを作るとか

880 :nobodyさん:2007/03/05(月) 12:58:52 ID:???
>>877
トップレベルドメインで判断すれば?

881 :nobodyさん:2007/03/05(月) 13:06:15 ID:???
>>877
Whoisサーバでググればでるよ
>>878
無料で公開されてるかどうかは俺もしらないがある。


882 :nobodyさん:2007/03/05(月) 13:13:06 ID:???
ひどいサイトを見つけたよw

ttp://www.s-center.net/

ここなんだがブログのシステムはDrupal(ttp://drupal.jp/)
使ってるんだが著作権部分を自分の名前にしちゃってるよ

でもfavicon消し忘れ^^;
ttp://www.s-center.net/misc/favicon.ico

しかもTOPに乗っているテキストエディタ Messiahの添付画像は
Drupalのソース(苦笑

883 :nobodyさん:2007/03/05(月) 13:20:25 ID:VUeVfNbT
>>880
>>881
.jpとかだったら日本って分かるんだろうけど.comだったらどこの国かはわからないんじゃない?

884 :nobodyさん:2007/03/05(月) 13:27:37 ID:???
PCと携帯で見れる日記を作っているのですが
2chやBBSなんかでPC用ページを直リンクされた場合とか考えると、
携帯用の実行ファイルを用意するよりも、
どのPC用ページにアクセスしても、そこから振り分けて携帯用ページが表示させるようにした方がいいのかな。
意見聞かせてください。

885 :nobodyさん:2007/03/05(月) 13:33:47 ID:aOtmvd4t
AぺーじからBページが呼び出されたら、
AページのURLはHTTP_REFERERで取得できますが、
Bページ(現在表示されているページ)のURLを取得する方法はありますか?


886 :nobodyさん:2007/03/05(月) 13:38:43 ID:???
>>883
whoisのDBを使うんだよ。

>>884
携帯用と分ける方がソースの可読性は下がるけど効率的ではある。
どうせPCと携帯の違いはhtmlコード部分、クッキー部分くらいだと思うし。

887 :nobodyさん:2007/03/05(月) 13:55:59 ID:???
882ってさDrupa著作表示消して使ってるってことは
過去に作ったとか自慢げに書いてあるキーロガーとか諸々の糞アプリはフリーのコード盗用から微妙に拡張って感じだろうな
酷いけどまだガキだから仕方ないか

888 :nobodyさん:2007/03/05(月) 15:27:28 ID:???
>>884
やっぱりドメインもスクリプトも分けたほうがいいと思う。
たとえばwww.hoge.com(PC用)とm.hoge.com(携帯用)で、それぞれスクリプト用意ね。

なぜなら、最近は携帯でもフルブラウザとかでPC用ページを見たい人もいるだろうから、
「携帯でPCサイトにアクセス→勝手に携帯サイトに飛ばす」ってのは、
ありがた迷惑に感じる人もいるんじゃないのかな。
フルブラウザを搭載してない携帯ならむしろその方がいいんだろうけど。

889 :nobodyさん:2007/03/05(月) 15:41:05 ID:???
XREAで
s900.xrea.comのDBに
s901.xrea.comからPHPで接続したいのですが可能でしょうか?
可能な場合、
mysql_connect('localhost', 'mysql_user', 'mysql_password');
このlocalhostの部分はどのような書き方になるでしょうか?

890 :nobodyさん:2007/03/05(月) 15:41:08 ID:???
>>882
これはひどいなw
ドメインでmixi内検索したら見事に出てきたよ
ttp://mixi.jp/show_friend.pl?id=1368531

891 :nobodyさん:2007/03/05(月) 15:52:40 ID:???
>>886
>>888
意見有難う。
なるほど、フルブラウザってものがあったね。定額になったし普及するのだろうか。
実行ファイルから分ける方向でやってみます。

ちなみに、後者の携帯ページを表示というのは、リダイレクトするのではなく
スクリプト内で携帯とPCの表示方法なんかを振り分けて、同じURLでどちらでも見られると言うのを考えていました。

892 :nobodyさん:2007/03/05(月) 16:02:01 ID:???
>>888
フルブラウザかどうかはUAで判別出来るんじゃ無いかな・・。

893 :nobodyさん:2007/03/05(月) 16:09:23 ID:???
>>889
XREAではlocalhost以外の接続は出来なかったと思う
つまり接続は不可能

可能な場合は普通にホスト名を書けばいい
mysql_connect('s900.xrea.com', 'mysql_user', 'mysql_password');

894 :nobodyさん:2007/03/05(月) 16:25:04 ID:???
>>882
whoisったらドメインはVDの名義になってるね
レン鯖板で祭ってやれば?w

895 :nobodyさん:2007/03/05(月) 16:32:44 ID:???
>>891
>リダイレクトするのではなくスクリプト内で携帯とPCの表示方法なんかを振り分けて
何にせよ、ユーザーが任意に好きなほう(PCサイトか携帯サイトか)を選べたほうが便利かと。

>>892
今すでに発売されてる機種だけを考えるならそれでもいいけど、
今後の新機種まで考えると、その都度いちいちUA判定の処理を追加・訂正しなきゃならんから、俺はUAは一切見ない。
っていうか現状でも見てない。複雑すぎて面倒くさいから。
あくまでもIPで携帯かどうか判定してる。

896 :nobodyさん:2007/03/05(月) 16:38:19 ID:???
>>893さん
ご丁寧にありがとうございますm(_ _)m
接続できるかはXREAに直接聞いて見ます。

結果はここに書いたほうがいいでしょうか?

897 :nobodyさん:2007/03/05(月) 16:39:31 ID:???
接続できないよ。
俺も聞いたけど、セキュリティのほにゃほにゃでだめだって。

898 :872:2007/03/05(月) 16:43:21 ID:???
>>873
内部的にはEUC-JP、表示だけSJISにしたいのです。(携帯端末のため&内部SJISは危険ぽいので)
そこでEUCのhtmlファイルをSJISに変換して表示させる方法をお教えください。

今考え付くのは、
1.htmlファイルをfile_get_contensで$strにいれてmb_convert

2.eval?(使い方不明…)

899 :nobodyさん:2007/03/05(月) 16:43:52 ID:???
DBを外からアクセス出来るようにしたら、一般公開化する奴が絶対出てくるだろうし・・

900 :nobodyさん:2007/03/05(月) 16:44:52 ID:???
>>898
そもそもrequireするhtmlって意味分からない。
PHPにすればいいんじゃなくて?

901 :nobodyさん:2007/03/05(月) 17:03:46 ID:???
>>898
あと一週間くらい、もっと良い解決法を考えてみろ。

ヒント:どの時点でSJISに変換するのがベストか?

902 :nobodyさん:2007/03/05(月) 17:04:43 ID:???
>>897さん
ありがとうございます。
やっぱりだめですか(>дμ)…
>>899さん
他の方に迷惑になりますもんね…
DB内の広告を共有したいと思ったのですが残念(;Ω;)

903 :nobodyさん:2007/03/05(月) 17:18:30 ID:???
>>895
IPの方が面倒じゃない?
公式コンテンツとかならIP追加とかで告知は来るけど、勝手サイトには来ないし、
そもそも情報が非常に遅い。
それに、携帯なら基本仕様があるから、SoftBank みたいに社名でも変わらん限り、
UA は原則変わらんよ。
今は基本6種だったかな?
IPの追加と、UAの基本仕様変更だと、圧倒的にIPの追加の方が多いから、
俺はUAにしてる。
セキュリティとかで考えるなら両方かな。


904 :nobodyさん:2007/03/05(月) 17:39:16 ID:???
>>903
>圧倒的にIPの追加の方が多いから

そうかな?? どれくらいの頻度か知ってる??
あと、IPなら公式サイトのIPリストから自動で取ってくるスクリプト書けばいいし・・・

905 :872:2007/03/05(月) 17:44:42 ID:???
>>901
もう生え際がハゲるくらい考え、悩んでるんですが…

906 :nobodyさん:2007/03/05(月) 17:50:52 ID:JwWe6FJR
$array=array("2000","2000","2001","2001","2001","2002",2002");

という配列のデータがあったとして、出力時に重複値を消して

2000,2001,2002

のみ表示するにはどうしたらいいのでしょうか?

907 :nobodyさん:2007/03/05(月) 17:53:45 ID:???
>>902
>>DB内の広告を共有したいと思ったのですが残念(;Ω;)
XMLとかで共有すればいいじゃね。
別にテキストだろうが、CSVだろうが何でもいいとは思うけど。

目的をハッキリ理解してないので的外れかもしれないが。

908 :nobodyさん:2007/03/05(月) 17:54:44 ID:???
>>906
マニュアル嫁
http://jp2.php.net/manual/ja/function.array-unique.php

909 :906:2007/03/05(月) 18:04:58 ID:???
>>908
すみません。ありがとうございます。

910 :nobodyさん:2007/03/05(月) 18:09:53 ID:???
>>905
俺なんか特に悩みも無いのにハゲが進行してきてるんだが・・・orz

911 :nobodyさん:2007/03/05(月) 18:20:13 ID:???
>>907さん
>XMLとか
XML (μдμ○)…わかなにゃ…
勉強してみますね
googleアドみたいに分類してるのでDBじゃないと難しいなぁって思って(>д<;)

912 :nobodyさん:2007/03/05(月) 18:31:32 ID:???
>>911
規模が大きいならDBからXMLで吐き出すのが多い
小規模ならXMLだけで十分

913 :nobodyさん:2007/03/05(月) 18:47:22 ID:???
あ・あとPHP限定なら serialize 関数でもいいかもね。

914 :nobodyさん:2007/03/05(月) 19:36:19 ID:???
>>882
キーロガーなんて公開してる辺り、危ねぇガキだなww

学校はどこかな?ww

915 :nobodyさん:2007/03/05(月) 19:45:56 ID:???
>>914
あなたと同じ高卒ですww

916 :nobodyさん:2007/03/05(月) 19:47:55 ID:???
自演うぜえ
消えろカス

917 :nobodyさん:2007/03/05(月) 19:54:38 ID:???
>>915
中卒の間違いじゃねえのww

918 :nobodyさん:2007/03/05(月) 20:00:03 ID:???
まだ卒業してねぇだろ。
どんな祭になるのか楽しみだなw

919 :nobodyさん:2007/03/05(月) 20:09:02 ID:???
顔文字からしてリア厨くさいのがいる

920 :nobodyさん:2007/03/05(月) 20:11:50 ID:???
>>919
2ちゃんで学歴を聞いてくるやつは
低学歴なんだよな

921 :nobodyさん:2007/03/05(月) 20:14:21 ID:???
>>919
おっさんくさいレスだなw

922 :nobodyさん:2007/03/05(月) 20:18:42 ID:???
自演うぜえ
消えろカス

923 :nobodyさん:2007/03/05(月) 20:25:53 ID:???
自演うぜえ
消えろカス

924 :nobodyさん:2007/03/05(月) 20:40:31 ID:???
実務経験の無い引きこもりは使えない。

925 :nobodyさん:2007/03/05(月) 20:49:34 ID:???
だな、この世界では学歴よりも実務経験の方が物を言う。

926 :nobodyさん:2007/03/05(月) 20:52:55 ID:???
でも、算数・数学の出来ないプログラマは使えない。マジで。

927 :nobodyさん:2007/03/05(月) 20:55:27 ID:???
引きこもりのプログラマはカスだからな。

928 :nobodyさん:2007/03/05(月) 21:14:08 ID:???
ヒューマンスキルがないプログラマは使えない

929 :nobodyさん:2007/03/05(月) 21:17:31 ID:???
あと嘘つきはダメだね。
ばれなきゃ何をやってもいいって考えの馬鹿は使えない。
仕事上で必ず問題を生む。

930 :nobodyさん:2007/03/05(月) 21:39:53 ID:???
文字が、マルチバイト文字列かどうか
調べる方法はありませんか?

931 :nobodyさん:2007/03/05(月) 21:39:56 ID:???
自演うぜえ
消えろカス

932 :nobodyさん:2007/03/05(月) 21:41:14 ID:???
あるある。ajaxかせめてjsはわかるよね?
って聞いたら「分かります」っていうから
じゃあここの表をポップアップウィンドウででるようにしといて
っていったらそれはやったことありませんとか抜かしやがった
分からないなら分からないでそう言えばいいし
それくらいネット探せばすぐみつかるだろってオモタ。
数学は中学程度で十分だし大卒の奴に限ってこんなんが多いよ(サンプル1人だがな)

933 :nobodyさん:2007/03/05(月) 21:46:22 ID:???
日本語でおk

934 :nobodyさん:2007/03/05(月) 21:47:23 ID:???
右からやってきたものを左へ受け流すぜ!

935 :nobodyさん:2007/03/05(月) 22:00:55 ID:???
>>934
日本共産党乙

936 :nobodyさん:2007/03/05(月) 22:02:47 ID:???
>>934
ムーディかつやま?

937 :nobodyさん:2007/03/05(月) 22:07:18 ID:???
from right to left

938 :nobodyさん:2007/03/05(月) 22:34:05 ID:???
>>932を縦読みすると、

「あっじっ分そ数」

何か意味のある言葉かと一瞬オモテシマタ・・・

939 :nobodyさん:2007/03/05(月) 23:57:09 ID:peb4Wfoi
くだすれPHP(超初心者用)2にも書き込ませて頂いたのですが、
こちらでも質問させて頂きます。

postfix => php PEARで解析 => 送信者に自動返信を出す

までは出来ているのですが、

postfix => php PEARで解析 => 外部ファイルもしくはMySQLに送信者アドレスを記録 => 送信者に自動返信を出す

としたいのです。

ですが、外部ファイルをオープンもしくはMySQLに接続した時点で止まってしまうようです。

環境は

phpinfo()のコピーですが

OS MacOSX 10.4.8
Apache/1.3.33 (Darwin) PHP/5.1.6
MySQL Client API version 5.0.24a

でターミナルでphp -v を実行すると
PHP4.4.4(Cli)

と出ます。

マルチで申し訳ありません。
ご教授宜しくお願い致します。

940 :nobodyさん:2007/03/06(火) 00:10:21 ID:???
申し訳ありませんって…
分かっててやるなよボケが

941 :nobodyさん:2007/03/06(火) 00:16:00 ID:Crrd1LQs
くだすれPHP(超初心者用)2で誘導を頂いたので書き込ませて頂きました。
こちらの方が人が多いということですので。

申し訳ないです。

942 :nobodyさん:2007/03/06(火) 00:16:06 ID:???
原因は設計ではなくソースにあり。
ソースも見せないエスパーな質問じゃ答えがかえってくるわけなかろう。

943 :nobodyさん:2007/03/06(火) 00:22:05 ID:???
>>939
>>ですが、外部ファイルをオープンもしくはMySQLに接続した時点で止まってしまうようです。
って時点で何らかのバグのような気がするんだけど・・

944 :nobodyさん:2007/03/06(火) 00:54:28 ID:Crrd1LQs
require_once("Mail/mimeDecode.php");
$source = file_get_contents("php://stdin");
/*ブラウザで確認の時はコメントアウト
if(!$source) {
exit();
}*/
$MySQL['HOST'] = 'localhost';
$MySQL['USER'] = 'user';
$MySQL['PASSWORD'] = 'password';
$MySQL['DATABASE'] = 'database';
$mylink = @mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']) or exit('ERROR');
$sql = "SET NAMES sjis";
mysql_query($sql);
mysql_select_db ($MySQL['DATABASE']) or exit('ERROR');
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), mb_internal_encoding(), "auto");
/*メール送信で確認の時はコメントアウト
$from = 'from@domain.ne.jp';*/
$query = "INSERT INTO testtable VALUES(NULL,'$from')";
mysql_query($query,$mylink);
$to = $from;
$title = "test title";
$body = "test body";
$from = "From: test@domain.ne.jp";
mb_internal_encoding("SJIS");
mb_language("japanese");
mb_send_mail($to, $title, $body, $from);

945 :nobodyさん:2007/03/06(火) 00:57:01 ID:Crrd1LQs
すいません、改行規制でひっかかってました。

>>942
ありがとうございます。
上記ソースです。

ブラウザでアクセスするとMySQLにちゃんと書き込まれ、from@domain.ne.jpにメールもきます。
MySQL部分を消して空メールすると、ちゃんと返信メールは返ってきます。
ですが、MySQL部分を使用するとMySQLにも書き込まれず、メールも返ってきません。
ご教授宜しくお願いします。


946 :nobodyさん:2007/03/06(火) 01:04:30 ID:???
>>944
exit の上の行に
print "exit!";
って単体で実行するとどうなる?

947 :nobodyさん:2007/03/06(火) 01:12:37 ID:Crrd1LQs
>>946
ありがとうございます。

/*ブラウザで確認の時はコメントアウト
if(!$source) {
print "exit!";
exit();
}*/

コメントしたままでブラウザ実行
exit!表示されず。
MySQL書込み○ from@domain.ne.jpにメール○

コメント外してブラウザ実行
exit!表示されました。
MySQL書込み× from@domain.ne.jpにメール×

948 :nobodyさん:2007/03/06(火) 01:21:14 ID:???
というわけで問題箇所は分かったわけだな

949 :nobodyさん:2007/03/06(火) 01:24:53 ID:???
>>945
なんでブラウザで確認する?
しかも違うバージョンのPHPで。

テスト用のメールメッセージ(test.eml)を用意して、
cat test.eml | php nantoka.php
とかしてエラーメッセージの有無を確認してみたら?

950 :nobodyさん:2007/03/06(火) 01:27:42 ID:Crrd1LQs
>>948
ブラウザで実行した場合は$sourceが空になると思うのでコメントアウトしてたのですが、
その部分が問題なのでしょうか。

exit部分をコメントアウトしたままメール送信してみましたが、やはり書込みされません。
どこが問題なのでしょうか?

951 :nobodyさん:2007/03/06(火) 01:31:03 ID:???
どこまで実行してるのか確認すりゃいいじゃん

952 :nobodyさん:2007/03/06(火) 01:31:17 ID:???
>>950
いままではexitで終了してて
コメントアウト後は $source が取得できなくて駄目ってわけじゃなくて?

953 :nobodyさん:2007/03/06(火) 01:53:51 ID:Crrd1LQs
>>949
ありがとうございます。
エラー出ました。
「ERROR」としか出なかったんですが、原因追求の方法とかありますでしょうか?

>>951
ありがとうございます。

>>952
どうも違うようです。すいません。

954 :nobodyさん:2007/03/06(火) 02:00:06 ID:???
>>953
は?んでどこが問題だったんだ?
mysql_connectの部分か?だったらエラー出力制御外せばいいだろ

955 :nobodyさん:2007/03/06(火) 02:00:51 ID:???
>>953
@mysql_connect
の@を消すと?

956 :nobodyさん:2007/03/06(火) 02:02:42 ID:???
それの意味分かってないなら使わないほうがいいよ

957 :nobodyさん:2007/03/06(火) 02:10:21 ID:Crrd1LQs
>>954
すいません、ボケてました。
mysql_connect()の部分で接続できていないようです。
can't connect MySQL Server through socket

>>955
@消してみましたが、同じエラーが出ます。



958 :nobodyさん:2007/03/06(火) 02:15:08 ID:Crrd1LQs
ちょっとソケット確認してきます。ありがとうございました。

959 :nobodyさん:2007/03/06(火) 02:19:40 ID:???
なんでPHP5のほうのcli使わないんだろう・・・

960 :nobodyさん:2007/03/06(火) 02:32:44 ID:???
WEBがphp4でphp5のCLIって出来るの?

961 :nobodyさん:2007/03/06(火) 03:19:58 ID:???
php導入後のテストとしてphpinfo()を実行したいのですが
ttp://tune.ache-bang.com/~vg/outitem/up/img/14288.jpg
の様にエラーが出てしまいます。
php4ts.dllはsys32フォルダ、iniはWINDOWSフォルダにコピーし、
iniの設定も終えています。
何が原因なのでしょうか?

962 :nobodyさん:2007/03/06(火) 04:03:46 ID:tnKCXHfh
文字列中の漢字やかな、記号などの字種を判別したいのですが、2バイトコードでの判別の方法がわかりません。
色々ググッてみたんですが、情報が少ないのか検索の仕方が悪いのか見つかりませんでした。
文字コードはsjisで、8141が「、」とかそういうやつです。

もしコードの判別以外でも字種を判別できる方法があれば教えてください。


963 :nobodyさん:2007/03/06(火) 05:30:48 ID:???
>>962
その説明だとやりたい事が全然分からない。
漢字か平仮名か知りたいって事?

ここの下のほうの関数群でも見てみたら?
http://www.php.net/manual/ja/ref.mbstring.php

964 :nobodyさん:2007/03/06(火) 07:14:47 ID:AIqpdY9i
for文でのparseエラーが取れないのですが、どこが間違っているのか教えてもらえませんか?

実現したい処理は、
$hoge1fuga, $hoge2fuga, $hoge3fuga, $hoge4fuga
に入力されている1or2の値によって、
$hoge1fuga_, $hoge2fuga_, $hoge3fuga_, $hoge4fuga_
にそれぞれ"男"or"女"の文字列をいれるというものです。

for($i=1 ; $i <= 18 ; $i++){
switch($hoge.$i.fuga){
case "1":
$hoge.$i.fuga_ = "男"; break;
case "2":
$hoge.$i.fuga_ = "女"; break;
}
}


エラーは4行目の"="でParse errorがでてしまっています。


965 :nobodyさん:2007/03/06(火) 07:22:41 ID:???
ぱーすえらー,なんちゃらを予測してたけどなんちゃらがあるからエラーだよ,って教えてくれてるだろ

966 :nobodyさん:2007/03/06(火) 07:28:43 ID:???
>>964
> $hoge.$i.fuga_ = "男";
なんだこりゃ。

967 :nobodyさん:2007/03/06(火) 07:31:16 ID:???
>>964
> $hoge1fuga, $hoge2fuga, $hoge3fuga, $hoge4fuga
> に入力されている1or2の値によって、
> $hoge1fuga_, $hoge2fuga_, $hoge3fuga_, $hoge4fuga_
> にそれぞれ

そういう変数名を組み立てるなら

> $hoge.$i.fuga
→${"hoge".$i."huga"}
> $hoge.$i.fuga_
→${"hoge".$i."huga_"}
って書かなきゃダメだ。

できれば変数名を動的に組み立てるのではなく、配列変数を使った方が便利だぞ。

968 :nobodyさん:2007/03/06(火) 07:39:01 ID:???
>>964
なんで素直に配列を使わないんだ


969 :nobodyさん:2007/03/06(火) 07:41:34 ID:???
javascriptに汚染されすぎ

970 :nobodyさん:2007/03/06(火) 07:57:50 ID:FqlqnUfZ
ttp://www.php.net/manual/ja/language.oop5.decon.php
ここに親クラスのコンストラクタは自動で呼ばれない的なこと書いてあるけど
この仕様って変わりました?
parent::__construct();
してないのに動いてるっぽいのですけど・・・

971 :nobodyさん:2007/03/06(火) 08:04:39 ID:???
>>970
変わってないよ
子クラスにコンストラクタが無いんじゃね?


972 :nobodyさん:2007/03/06(火) 08:09:16 ID:???
横やりだが、子クラスにコンストラクタがないと親クラスのコンストラクタが呼ばれちゃうの?

973 :nobodyさん:2007/03/06(火) 08:11:21 ID:???
>>970
コードUP

974 :nobodyさん:2007/03/06(火) 08:13:47 ID:???
ところで
>下位互換性を維持するため、PHP 5 が指定されたクラスの __construct() 関数をみつけられない場合には、 
>古い形式のコンストラクタ関数、つまり、そのクラスの名前と同じ関数が探されます。 
これ上位互換じゃね?


975 :nobodyさん:2007/03/06(火) 08:23:20 ID:???
上位互換なら常にクラスと同名の関数をコンストラクタとして呼ぶと思う。

976 :nobodyさん:2007/03/06(火) 08:27:07 ID:???
下位互換って旧バージョンでも動作する仕様のことじゃないのかな。

977 :nobodyさん:2007/03/06(火) 08:28:50 ID:???
PHP5でもPHP4で作成したクラスが問題なく使えますよってことと理解したけど。
その場合は「上位互換」


978 :nobodyさん:2007/03/06(火) 08:35:57 ID:???
PHPはアンスコ使いすぎて汚い言語になってきてるな

979 :970:2007/03/06(火) 08:49:11 ID:???
みんな朝からレスサンクス

子クラスにコンストラクタがないと親クラスのコンストラクタが呼ばれるけど、
子クラスにコンストラクタがあった場合、親クラスのコンストラクタは呼ばれませんよって事ですか?

public function __construct(){
    parent::__construct();
}
ってやってるのよく見かけるけど、私と同じ勘違い
もしくは、コード見やすく?するためなのかな?

ちなみにZendFramworkのソース見ててあれって思ったもので

class oya
{
public function __construct(){
echo 'OyaClassConst';
}
}

class ko extends oya
{

}

new ko;

です

980 :nobodyさん:2007/03/06(火) 08:52:09 ID:???
しまった。一行抜けた
>ちなみにZendFramworkのソース見ててあれって思ったもので
の後に、「自分で試したのは」

ZFにあんなコードはないです・・・w

981 :nobodyさん:2007/03/06(火) 09:00:04 ID:???
>>970
C++とかでも普通は基底クラスのコンストラクタは先に呼び出されるだろ
例19.8の動かしたらわかるじゃん
In BaseClass constructor
In BaseClass constructor
In SubClass constructor

982 :nobodyさん:2007/03/06(火) 09:13:08 ID:???
>>961
たしかPECLモジュールのバージョンが異なってる時に出たと思う
日付的にPHP4にPHP5用のDLL使ったんじゃね

983 :虚弱PHP:2007/03/06(火) 09:22:33 ID:???
>>972
> 注意: 子クラスがコンストラクタを有している場合、親クラスのコンストラクタが
> 暗黙の内にコールされることはありません。

確かに微妙な書き方だけど、
子クラスにコンストラクタがなければ親のコンストラクタが暗黙の内にコールされる。

984 :nobodyさん:2007/03/06(火) 09:32:26 ID:???
有してなければ暗黙の内にコールされるてことね

985 :nobodyさん:2007/03/06(火) 09:39:33 ID:qe8jfVyG
ハッシュのベストな生成方法を教えてください。
昔ランダムな文字列をどうとかこのスレでいってたきがするのですが、
読み飛ばしていたので記憶が曖昧で・・・。

986 :虚弱PHP:2007/03/06(火) 11:30:49 ID:???
>>985
ベストかどうかはわかんないけど、
PHP5で手軽にやるなら
SHA512+Salt(ワンタイムのランダム文字列)
ってのが強いハッシュになると思う。
ランダム生成したSaltとSHA512でハッシュされた値を
両方とも保存。

987 :nobodyさん:2007/03/06(火) 11:42:59 ID:???
そんなの古い

988 :nobodyさん:2007/03/06(火) 11:57:47 ID:???
>>987
古くない

989 :962:2007/03/06(火) 12:57:04 ID:tnKCXHfh
>>963
説明下手でしたね^^;
簡単に言えばその通りです。

マニュアル見てみたんですがよくわからなくて。
$strという変数に「あ」という文字が入ってる場合、それを16進数に変換して評価したいんです。
できればソースを書いていただければありがたいです。

990 :nobodyさん:2007/03/06(火) 13:09:02 ID:NArlJJZA
php warningの内容を変数にいれることってできますか?

991 :nobodyさん:2007/03/06(火) 13:17:24 ID:???
>>987
古いとか言うだけならバカでもできる。
分かるならちゃんと回答してやろうぜ。新しいのキボンヌ。

992 :nobodyさん:2007/03/06(火) 13:29:36 ID:???
>>986
>>988
>>991

自演乙。

993 :nobodyさん:2007/03/06(火) 13:35:06 ID:???
>>990
http://jp.php.net/manual/ja/ref.errorfunc.php#ini.track-errors

994 :nobodyさん:2007/03/06(火) 13:36:48 ID:VT7d92zR
>>987=992
分かった分かった。ID出しといてやるよ。
困ったら自演乙うざいよ。うだうだ言ってねーで新しいのさっさと出せよ。

995 :nobodyさん:2007/03/06(火) 13:46:18 ID:???
>>994
自演を認めた馬鹿発見

996 :nobodyさん:2007/03/06(火) 13:48:34 ID:???
>>995
いや俺は991だけだが…?

997 :991:2007/03/06(火) 13:51:15 ID:VT7d92zR
専ブラのせいでsageちまった。
とりあえず988は知ったかぶりということでいいかな。さっきから答える気ないし。
「古い」と言ったんだから新しいのを言わないと古いかどうか分からんだろ。
新しいのを言ってくれさえすれば問題ないよ。

998 :nobodyさん:2007/03/06(火) 13:51:44 ID:???
>>996
必死ww

999 :nobodyさん:2007/03/06(火) 13:52:19 ID:???
VIPでやれ

1000 :nobodyさん:2007/03/06(火) 13:54:15 ID:???
1000かよ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

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

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