2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 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を取得できません

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

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

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)