【PHP】下らねぇ質問はここに書き込みやがれ 65at PHP
【PHP】下らねぇ質問はここに書き込みやがれ 65 - 暇つぶし2ch2:nobodyさん
08/02/24 21:03:50
【簡易FAQ】 (1/3)
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → URLリンク(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プログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり

3:nobodyさん
08/02/24 21:04:03
【簡易FAQ】 (2/3)
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_~()が手軽。複雑なパターンはpreg_~()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  URLリンク(www.faqts.com)
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.を参照

4:nobodyさん
08/02/24 21:04:16
【簡易FAQ】 (3/3)
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください

5:nobodyさん
08/02/24 21:04:30
関連リンク
■本家マニュアル   URLリンク(www.php.net)
■日本PHPユーザ会 URLリンク(www.php.gr.jp)
■PEARマニュアル  URLリンク(pear.php.net)
■メーリングリスト   URLリンク(ns1.php.gr.jp)
■ZFマニュアル    URLリンク(framework.zend.com)

(以下英語)
■Smarty       URLリンク(smarty.php.net)
■Zend本家      URLリンク(www.zend.com)
■Zend Framework  URLリンク(framework.zend.com)
■php | architect   URLリンク(www.phparch.com)
■Smartyマニュアル URLリンク(smarty.php.net)
■PECL本家(英語) URLリンク(pecl.php.net)

6:nobodyさん
08/02/24 21:05:01
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 64
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 61
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 62
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 61
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 60
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 59
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 58
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 57
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 56
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 55
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 54
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 53
スレリンク(php板)

7:nobodyさん
08/02/24 21:23:37
>>1 死ね。何回テンプレ間違えたら気が済むんだ?

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

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 64
スレリンク(php板)

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

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

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

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

8:nobodyさん
08/02/24 23:43:55 u17cTLyd
質問です

redhat 8
apache 2.0.40
PHP Version 4.2.2

下記のようにメインルーチンでfopenをして、そのファイルハンドラを
関数に引き継いだ場合、関数側でそのファイルハンドラに対して、書き込みができないのですが、
これは仕様でしょうか?


//メインルーチン
<?
if (!($fno = fopen("dbg.txt", 'w'))) {
die;}
//関数コール
Au($fno);
//関数
function Au($fno){
fputs($fno, hoge);
}

fclose($fno);

?>





9:nobodyさん
08/02/24 23:50:24
>>8
普通に動くが・・・


10:8
08/02/25 00:18:18 67ayJX2Z
>>9

逆にパラメータの引き継ぎをしなければ、ファイルアクセスできないのですか?

11:nobodyさん
08/02/25 00:23:45
パラメータ渡さないと何に書き込むか解らんだろ
直近のファイルポインタに対して書き込みたいとかってーなら
クラス化とかして俺俺クラス作れば良い

12:8
08/02/25 00:30:18 67ayJX2Z
>>11
了解しました
サンクス子

13:nobodyさん
08/02/25 00:44:33
ひとまず前スレ埋めような
スレリンク(php板)

14:nobodyさん
08/02/25 00:45:30
  シュッ
      シュッ
 シュッ   ハ,,ハ  シュッ
 ハ,,ハ彡( ゚ω゚ ),ハ
( ゚ω゚ )彡ミ( ゚ω゚ ) お断りします
_(__つ/ ̄ ̄ ̄/_
  \/      /

15:nobodyさん
08/02/25 12:05:43
                    ___
               , 二¨-―-- 、`丶、
               /_ ..-―-.. 、十ヽ\
            //::.::,:.:.:./::/::.::.l::.::`ヽ、\ヽ
               〃::/:::/:.:.:/::/::.:/::|::.:、:.::.::ヽ ハ `、
           l::.:::l:: ,':l:::/::/::.:/::;小:::l::ト、::.:V l ヽ
            {::.:::|:::l::|::l::/::.:/::/:/:_j⊥l::ヽ:!}  \
.           ハ::.::l:::|┼く:/::/ /'´ノ ヽ:∨::.:l |  /
           〈 l::.:|:::l::|∠、ノ   , =≡V::.::/|/
           ヽヘ::ヽ::V⌒゙  ,   "゙ / :::,'  l〔    下らねぇ質問は
           /rヘ::\ ゛゛ rーヘ  彡: /  /:::Y⌒i  ここに書き込みやがれ
            l冫/ }`ヽミヽ、ヽ、ノ, イ:`7十/::.::.:l |  ですぅ
           // /:::_rヘ_`二√ __〉/  レヘ::}  |
             //  ,'/夕r==、∨---/、/ f==ミフ  厂ト、
.        //  〃r7,イ|   >トマ ̄〉 7ヽ厶ィ {ヽ 」__/ / 〉
     , -‐'7/ /:.rク/ {ニ=彳/ ハ ∨,  / ̄:{八_‐-┴勹
   /   /  /: :/7/  /,イ/ / /、/_ /: : : :|:厶 `^´ 人
   ヽ冫< /   {: : :Y〈__ //〃 ,' / 7ヽ ,仆、: : :|| : :`¨¨´: :冫、

16:nobodyさん
08/02/25 14:32:22
>>13
半年ROMってろ

17:nobodyさん
08/02/25 19:54:35 VX5+CaAR
簡単なグラフを出力したいのですが、GDやMing(Flash)ライブラリがインストールされていません。
他にグラフを出力する良い方法はありませんか?
CSSとかHTMLのimg要素を使って、HTMLのソースを動的に出力する方法しか思い浮かびません。
他にもっと何か方法があれば教えてください。

18:nobodyさん
08/02/25 20:00:32
>>17
棒グラフなら<hr>で代用可能

19:nobodyさん
08/02/25 20:01:45 igqyKmSz
質問です。
header()関数の前でechoとかで文字列を出力しています。
仕様上header()関数の前でechoで出力しているもの(テンプレートのヘッダー)は出力しないようにするのは無理なんですが、
header()関数が呼び出されたらheader情報をクリアしてからheader()関数を実行するようにはできないでしょうか?


20:nobodyさん
08/02/25 20:06:03
>>19
> 仕様上header()関数の前でechoで出力している
仕様を見直した方が良いと思うよ。

21:nobodyさん
08/02/25 20:09:46 igqyKmSz
>>20
テンプレート側で、ヘッダーとフッターを標準で出力するようにしています。
ボディーが動的に変わるようにしており、問題が起こっているところがボディーで呼び出しているheader関数のところなんです。
仕様を見直したほうが、ということは、作り直しということですか?


22:nobodyさん
08/02/25 20:13:05
phpの何たらっつー設定で回避できたはず。

ところでそういう「ヘッダー+コンテンツ+フッター」じゃなくて
「総枠組み+コンテンツ」とかいう方式なんて言ったっけ?そっちのほうがいいんじゃね。

23:nobodyさん
08/02/25 20:16:13
PHP: 出力制御 - Manual
URLリンク(jp.php.net)

仕様上出力しないようにするのが無理なら無理だけどな

24:nobodyさん
08/02/25 20:23:18
>>21
header()で何を出力してるの?

25:nobodyさん
08/02/25 20:44:03 igqyKmSz
>>23
ありがとうございます。
ちょっとサーバの設定を見直してみます。

>>24
header()関数で出力しているものはサーバ上のファイルです。

header ("Content-Disposition: attachment; filename=".$file);
header ("Content-type: application/octet-stream")
readfile ("file/".$file);
exit;

上記を実行する前にテンプレート側のヘッダーを呼び出してしまっているので、
ダウンロードするデータの中にはテンプレート(ヘッダー)+ダウンロードファイルとなってしまっている状態です。


26:25
08/02/25 21:29:37
とりあえず出力系のものは全て1つの関数にまとめ、bodyを呼び出すときに作成した関数を呼び出し引数を与え、テンプレートを出力することで回避できました。
回答して下さった方々、ありがとうございました。


27:nobodyさん
08/02/25 21:33:03
mbstring.script_encodingはスクリプトの文字コードだと思うんですが、
mbstring.strict_encodingというのは何なんですか?


28:nobodyさん
08/02/25 21:34:01
>>7

29:nobodyさん
08/02/26 22:39:54 AjWFGOA4
file_get_contentsなどで取りに行ったファイルが404だったり503だったりした場合
そのレスポンスコードを判別する方法はありますか?

30:nobodyさん
08/02/27 03:39:18
>>29
できないですね。
レスポンスを取得したいならHTTPリクエスト投げたほうが良いかと

31:nobodyさん
08/02/27 06:04:23 1t015U4G
・2つのサービス(A,B)で同じDB(同じユーザ情報)を参照
・ドメインは異なる

この場合、Aにログインした状態でBにアクセスすると自動的にログインが
行われるようにしたいのですが、どのようにしたらいいのでしょうか?
よろしくお願いします。

32:nobodyさん
08/02/27 06:16:41
>>31
dbでsession管理するとか
dbにログイン情報持たせるとか

33:31
08/02/27 07:34:17
>>32
ありがとうございます。
重ねてすみませんが、DBにセッションを格納する場合、
ドメインが違うとsession_idが異なってしまうみたいなのですが
どうしたらいいのでしょう、、、

34:nobodyさん
08/02/27 08:01:59
DBにセッションを格納するんならsession idが変わっても問題無いだろ。

35:nobodyさん
08/02/27 08:16:25 sItN3geE
質問します
あるディレクトリに特定の文字列で名前が始まるJPGがあるか確認したいんですが
どうしたらいいでしょう?

20080227_100で始まるファイル名を例にして教えてください
よろしくお願いします

36:nobodyさん
08/02/27 08:26:02
>>31
ログイン中かどうか程度の情報ならクッキーに入れとけば?

37:nobodyさん
08/02/27 08:37:38
>>35
glob('dirname/20080227_100*.jpg')
とか。

38:nobodyさん
08/02/27 08:46:09
>>36
異ドメインだと言っている

39:35
08/02/27 08:56:42
>>37
おおおっ こういうやり方かぁー
きっと正規表現の基礎なんですね ありがとう、勉強します

40:nobodyさん
08/02/27 09:38:03
正規表現以前だよ。Linuxも勉強したほうがよい

41:29
08/02/27 11:31:12
>>30
了解です。ありがとうございます。

42:nobodyさん
08/02/27 12:06:56 YQJ5tlSl
php://stdinで取得できる入力って、
スクリプトが実行されている間はいつでも取得できるのですか?

43:nobodyさん
08/02/27 12:15:22
終盤は取得できない

44:nobodyさん
08/02/27 13:16:40
function foo(&$obj) { $obj->data = 123; }

という関数に対して、

foo($obj); と foo(&$obj); で
呼び出すのでは結果が違うんですね。
意味がわかりません。

45:nobodyさん
08/02/27 13:22:18
>>44
同じに見えるけど、どう結果が違うの?
PHP5.2 WinXP

class Boo {}

$obj1 = new Boo();
foo($obj1);
print_r($obj1);

$obj2 = new Boo();
foo(&$obj2);
print_r($obj2);

function foo(&$obj) {
$obj->data = 123;
}


46:nobodyさん
08/02/27 13:33:28
>>44
>>7

47:nobodyさん
08/02/27 13:41:47
pho4と5ではそこらへん挙動が変わってる
でも呼び出す側でfoo(&$obj);ってする事は
無いと思うんだけど

48:nobodyさん
08/02/27 14:34:18
おかしいなぁ。確かに、$thisと&$thisで挙動が変わっているんだよ。
PHP4ね。フレームワークでいろいろ実行される一部分の処理だから
具体的にどこが問題なのかわからないや。

49:nobodyさん
08/02/27 15:20:59
CakePHPの問題だったよ。
PHP4でoverloadを使ったとき(多くのクラスで使われている)の問題。
バグなのか仕様なのかわからんけど。

class A extends overloadable {
function foo(&$obj) {
$obj->value=2;
}
}
class B {}

$a = new A();
$b = new B();
$b->value=1;
$a->foo($b);

print_r($b);

これを実行すると1が表示される。
$a->foo($b); を $a->foo(&$b) ; に変更すると
2が表示される


50:nobodyさん
08/02/27 15:33:09
CakePHP部分を取り除いて通常のPHPにしました。

これと似たような問題?バグであり回避は不可能なのかな?

php4で overload() して __call() を定義するとリファレンスで返せなくなる?
URLリンク(blog.livedoor.jp)

class A {
function foo(&$obj) {
$obj->value=2;
}

function __call($method, $params, &$return) {
return true;
}
}
overload('A');
class B {}

$a = new A();
$b = new B();
$b->value=1;
$a->foo($b);
print_r($b);

51:nobodyさん
08/02/27 15:37:55 lCPSweHG
どうにも不可解な事が起こったのでお時間ある方試していただけないでしょうか?
(長文なので3つに分けます。コード部分は2つです。すいません)
コードをさらします。UTF-8で保存してください。

session_start();
if(!isset($_SESSION['test'])){
$_SESSION['test'] = array(
array("name"=>"ほげ","age"=>32,"date"=>"2008-02-27 13:03:24.999999"),
array("name"=>"ふが","age"=>23,"date"=>"2008-02-27 13:03:24.333333"),
array("name"=>"おおおええええ","age"=>23,"date"=>"2008-02-27 13:03:24.999999"),
array("name"=>"文字化け","age"=>25,"date"=>"2008-02-27 13:03:24.333333"),
array("name"=>"最新","age"=>26,"date"=>"2008-02-27 13:03:24.111111"),
array("name"=>"ぼえぼえ","age"=>32,"date"=>"2008-02-27 13:03:24.666666"),
array("name"=>"おろろろ","age"=>25,"date"=>"2008-02-27 13:03:24.111111"),
array("name"=>"おえ","age"=>26,"date"=>"2008-02-27 13:03:24.666666"),
);
}
$order = array("age"=>SORT_DESC,"date"=>SORT_ASC);
_2KeySort($_SESSION['test'], $order);
$temp = $_SESSION['test'];
foreach($temp as $key=>$value){
$value['name'] = mb_convert_encoding($value['name'], 'SJIS', 'UTF-8');
$temp[$key] = $value;
}
echo "<pre>";
print_r($temp);
echo "</pre>";
echo "<pre style='background-color:#EEEEEE;'>";
print_r($_SESSION);
echo "</pre>";
//続く>>

52:51
08/02/27 15:38:37 lCPSweHG
//51の続き
function _2KeySort(array &$array, array &$columns_order){
$array_sort = array();
$array_order = array();
$i=0;
foreach($columns_order as $column => &$order){

if(!array_key_exists($column,reset($array))){
require_once 'Sd/Exception.php';
throw new Sd_Exception("ソートに指定されたキー[{$column}]がありません。");
}

foreach ($array as $key => &$row)
$array_sort[$i][] = $row[$column];

$array_order[$i] = $order;
++$i;
}

array_multisort($array_sort[0], $array_order[0], $array_sort[1], $array_order[1], $array);
}

53:51
08/02/27 15:39:26
>>51の続き
①まず、セッションに配列を保存。
②セッションの配列をソート
③セッションを別の変数に代入し文字コードを変換。
④代入した変数とセッションを表示

という流れです。
なぜか、セッションのデータも文字コードが変わってしまいます。しかも、全部ではありません。うちの環境では「おえ
」だけがUTF-8のままです。なので、表示の度に、めちゃめちゃに文字化けしていきます。

ちなみに、ソートする関数をコメントアウトすると、セッションの文字コードは変わらなくなります。
$temp = $_SESSION['test']というのは参照ではなく値のコピーですよね?
ソートする関数で、参照渡しにしなくていいところもありそうですが、それ以前に、セッションの文字コードに影響が出るのはおかしくないでしょうか?

実際には、Zend_Frameworkと、出力部分にSmartyを使用した、そこそこ大きなアプリで起こったことなのですが、
いろいろ試して、やっとここまで問題を切り分けました。

ソートする関数の参照渡しをやめるか、セッションに保存する前にSJISに変換して、出力の度に変換するのをやめれば
この問題は解決できるのですが、根本的な解決というか、理解になっていないので、気になります。たすけてください。
PHP Version 5.1.6です。

長文すいません。

54:nobodyさん
08/02/27 15:47:14
なんで肝心なとこだけ書かないの?
わざわざ回答者が全部見ると思う?

55:51
08/02/27 16:05:29
今、またいろいろ試してたのですが

ソートする関数内で、
array_multisortの為に、ソート対象カラムの配列を作るところのforeachで
foreach ($array as $key => &$row)

foreach ($array as $key => $row)
と参照をやめると、文字化けしないようです。
ここはソート対象カラムの配列のために、代入してる場所なので参照にする必要はなかったです。

なんかarray_multisortまわりか、参照渡しのバグっぽくないですか?

>>54
すいません。
これでもかなり問題を切り分けて、まとめて、要点のみ書いたんです。
ソースをそのまま実行できるように書いたほうが、いいのかなあ、なんて・・

せめて、53を最初に書いたほうがよかったかな。

読むのうざいと思いますが、そこを何とかお願いします

56:nobodyさん
08/02/27 16:06:20
>>51
たぶんmb_convert_encoding出来て無いんだと思う。

mb_language('Japanese');
$value['name'] = mb_convert_encoding($value['name'], 'SJIS', 'auto');

こうするとどうなる?

57:nobodyさん
08/02/27 16:09:21
autoはダメだろjk
ってか、なんでまたID隠し始めたんだ?51は

>>55
> なんかarray_multisortまわりか、参照渡しのバグっぽくないですか?
自分のソースをまず疑え
とPHPのえらい人が言ってました

どこで文字化けが起きてるかprint_rなどで各場所で文字化けがおきていないかチェックしたら?

58:nobodyさん
08/02/27 16:19:18
>>57
ダメだけど、ひょっとしたら自動変換してたら、と思って。

59:nobodyさん
08/02/27 16:48:18
未だに jk とか使ってる奴いるんだな。
生きてて恥ずかしくないか?

60:nobodyさん
08/02/27 17:05:32
j 女子
k 高生



61:nobodyさん
08/02/27 17:06:25
「常識的に考えて」

62:nobodyさん
08/02/27 17:27:05
>>61
KYは知っていたけどね。
おぢさん、初めて知ったよ。
ありがとう。早速今度の会議で使ってみるよ。

63:nobodyさん
08/02/27 17:31:36
危険予知は現場労働の基本だからな。

64:nobodyさん
08/02/27 17:33:00
>>62
おじさんごめんね
これ2ch発なんだ

65:nobodyさん
08/02/27 18:00:03
>>64
これがKYの良い例

66:nobodyさん
08/02/27 18:03:18 n+zWmSsJ
WindowsXP
apache 2.2
PHP Version 5.25

URLリンク(www.standpower.com)

↑ここを見て導入しました。

ファイル名 info.php

<?php
$hello="Hello World";
print ($hello);
?>

を作って
URLリンク(localhost)
を見てみると、「このファイルをダウンロードしますか?」となってinfo.phpをダウンロード
するかどうかのウィンドウが出てきます。どこか間違っているのでしょうか。

67:nobodyさん
08/02/27 18:06:22
Apacheの設定がおかしいんだろうから、とりあえず Apacheのエラーログ見れ。

68:nobodyさん
08/02/27 18:14:24
なんと分かりやすい

69:66
08/02/27 18:21:44
>>67

httpd.confの書き換えが間違っていたようです。
ありがとうございました。

70:51
08/02/27 18:29:48 lCPSweHG
>>56
$value['name'] = 'hogehoge';
でも元のセッションが変わってしまします。(同じく一部を除いて)

>>57
文字コードを変換してるforeachのなかで、元のセッションかわちゃってます。
IDは隠したわけじゃなく、連続で上げたら怒られるかなとおもって、sageにしちゃいました。


ためしに5.2.5が入ってるサーバーで試したら元のセッションは一切変わらず、問題なく動きました。
サーバーの設定かもしれませんが、基本php.iniはデフォルトのままで、.htaccessで設定してるので
見比べた感じ原因と思われるような違いはありません・・・

71:nobodyさん
08/02/27 18:38:00
欧文ならマトモに動作するんだよね?
sessionファイルをtmpから引きずり出して覗いて見るのは、さすがにキツい?

72:nobodyさん
08/02/27 20:26:06
解説サイト見てもよくわからんのですが
ログファイルを使ったページ分割のロジックはどういうものなんでしょうか?
記事数を1ページ辺りの記事表示数で割って表示しますよね。
その後の前のページに戻るとかのロジックがまったくよくわかりません。
スーパーグローバル関数のGETとか使うんですよね?

73:nobodyさん
08/02/27 20:30:05
>>7

74:nobodyさん
08/02/27 20:40:28
>>72
どこの解説サイト見てんの?

75:nobodyさん
08/02/27 21:25:22
URLリンク(www.phppro.jp)
ここなんですがユーザー関数とかに構造が分離されてて
自分の作りたいモノに流用すると複雑怪奇になりすぎて・・・

76:nobodyさん
08/02/27 22:10:24
前のページに戻る機能は現在のページから1引いた数をアンカーに付ければいいだけだと思うが。
そういう話じゃない?
全74件あって10件ずつ表示するなら、ページ5でリクエストが来たら41~50件目の内容を、ページ4では31~40件目の内容を取得すればいい。
ページごとに独立して考えればそんなに難しくないと思うけども。

77:nobodyさん
08/02/27 22:17:53
そのページ5で指示が来た時に該当件数を表示する
書き方がよく・・・・・・・
すべての投稿数数えて一ページあたりの表示数で割って
それから具体的にどうするんでしたっけ?
単に基礎知識足りなさ過ぎるだけなのか
頭が猛烈に足りないのか・・・・・・
htmlなら直感的にイメージ出切るぐらいまでそこそこわかるんですが
こういう二重、三重のロジックだとどうしても思考停止状態に陥ってしまうんですよね・・

78:nobodyさん
08/02/27 22:27:56
例えば総ページ数を番号で出すには
全体の投稿数を1ページ辺りの投稿数で割り余り分のためにページをプラス1して
表示するんですよね?
今度は表示したリンクをクリックした後に該当の投稿行をピックアップするように
またプログラムを用意すると・・・・あああ、ややこしい。

79:nobodyさん
08/02/27 22:35:21
君は向いてないね

80:nobodyさん
08/02/27 22:36:30
だと思います・・・・・
直感的なデザイン畑の人間ですし・・・・・

81:nobodyさん
08/02/27 22:38:42
はなむけに現在のページ数の受け取り方だけ教えてもらえませんか。

82:nobodyさん
08/02/27 22:41:10
>>7

83:nobodyさん
08/02/27 22:41:49
<?php

$page = $_GET['page'] ? $_GET['page'] : 1;

$all = countArticles();
$one = 10;

$start = ($page - 1) * $one + 1;
$end = $page * $one;

$articles = getArticles($start, $end);

こんな感じ?検証してないけど

84:nobodyさん
08/02/27 22:51:20
$allPages = cell(($all / $one));

echo "<p>総記事数は $all 件です</p>";
echo "<p>全部で $allPages ページあります</p>";
echo "<p>現在 $start 件目~ $end 件目を表示しています</p>";
for($i=1; $i<$all; $i+=10){
if ($i == $page) {
echo '<a href="?page='.$i.'">['.$i.'] </a>';
} else {
echo '['.$i.'] ';
}
}

ついでにこんな感じ

85:nobodyさん
08/02/27 22:56:10 rbJ5iPpD
DBに保存してある画像のバイナリデータ(形式はjpeg,gif,png)をリサイズしたい場合はどうすればよいのでしょうか。
php4.3のGD入ってます

一旦ファイルに保存してimagecreatefromjpegとかするしかないのでしょうか。
そんな馬鹿な。

86:nobodyさん
08/02/27 22:56:22
間違えた。最後のfor文は素直に
for($i=1; $i <= $allPages; $i++){
でokだ。
全ページ数を使わないで出力するなら$iのインクリメント用と記事数比較用の2変数使えばできる。まぁ蛇足だが。

87:nobodyさん
08/02/27 22:57:21
>>85
お怒りはごもっともですが
現在、この世界のいたるところで
あなたの言う『ばかなこと』が起きています

88:nobodyさん
08/02/27 22:59:30 rbJ5iPpD
めっけた。
imagecreatefromstring

これでいい気がしてきた。

89:nobodyさん
08/02/27 23:17:29
課題だとか勉強用だとかじゃなければ素直にそのへんのpager使えばいいのに

90:nobodyさん
08/02/28 00:03:25
WebARENA SuiteX
PHP5
で、次のアップロードスクリプトを設置しています。
URLリンク(hellogirls.myphotos.cc)

Suite2 PHP4の時は問題なく動作していたのですが、SuiteXにしたらアップロードファイルにつけるコメントに日本語が含まれていると文字化けするようになりました。
色々、調べてみましたがちんぷんかんぷんで解決策がわかりません。
この辺りのソースをいじれば良さそうな気がするのですが…

どなたかアドバイスやヒントでもいいのでいただけないでしょうか。
PHPやCGIの設置はできるけど、プログラムの具体的なことは何も理解できてません。
こんな私ですがどうかよろしくお願いします。

コメント
<input type="text" size="45" name="com" value="'.($c_comu ? $input_comment : '').'">

//ファイルリスト表示
if($c_com) echo '<td class="column_comment">'.$com.'</td>';

//項目読み取り
list($id,$ext,$com,$host,$now,$size,$mtype,,$orig,,$img_width,$img_height) = explode("\t",$logline);

91:nobodyさん
08/02/28 00:13:47
>>90
めんどくさいから見てないけど少なくとも出されてるソースは関係ない。
スクリプト改造依頼スレがあるからそっちいくよろし。

スレリンク(php板)
スレリンク(php板)
この辺かな

92:nobodyさん
08/02/28 00:22:13
PHP4からPHP5の仕様変更が文字化けの原因みたいで、それでこちらのスレに誘導されてきたのですが。
改造スレに行ったら、それは改造ではなくPHPの仕様の問題だからPHPスレで聞けと言われそうです。

93:nobodyさん
08/02/28 00:46:33
>>90
PHP4.4.x(PHP5では動作確認していません)
と書いてあるので諦めろ……

ソースみたけど、PHP4に依存してる場所はなさそうだったけどね。
form_upload_file.phpをいじってるのなら、文字コードがSJISになっていないか確認。
きちんとEUC-JPになっているか?

ログファイルをエディタで開いて見て、EUC-JPで文字化けしないかどうか。

そのあたり確認して報告しろ。 寝るのでまた明日。

94:nobodyさん
08/02/28 06:33:06
ありがとうございます。

form_upload_file.phpはEUC-JPになっていました。
ログファイルを確認したところ、日本語で文字化けしているコメント部分もログファイルではまだ文字化けしていませんでした。

ログファイルを読み出して表示するまでの過程で文字化けがおこっているようです。

95:nobodyさん
08/02/28 09:55:35 OSai0GdG
PEAR::DBを使ってデータをINSERTする作業をしているのですが、
debug_backtrace();の部分で、エラーが出ます。
数万~数十万ほどINSERTを繰り返すループなのですが・・・

96:nobodyさん
08/02/28 11:14:01 hOKfamSR
質問です。
CentOS5のディストリビューションを使って環境構築したのですが、画像やファイル情報をphpを使用して、PostgreSQLにbyteaでコミットをする時にmemory_limitが不足する現象が起きています。

<確認している現象>
・2MBの画像のコミット時にはmemory_limitに53MB以上が必要
・4MBの場合は、128MB以上
・8MBの場合は、400MB以上
といった具合です。

<環境>

OS :CentOS5
WEB:Apache/2.2.3 (CentOS)
PHP:PHP Version 5.1.6
DB :PostgreSQL8.1.9

windowsやRedhatで同じphpなどで構成し、モジュールを実行した際には8MBのファイルでもデフォルトのmemory_limitの設定である16MBで問題なくコミットできました。
他の環境でも検証していきますが、この原因って何が考えられますでしょうか。

97:nobodyさん
08/02/28 11:50:28
質問です。

$word = $_GET[WORD];
$word = mb_convert_encoding($word,"SJIS","UTF-8");

PHP5(WebARENA SuiteX)なのですが、大部分はこれでデータの受け渡しは問題あり
ません。

しかし、"90's"を受け渡す際に"90\'s"になってしまいます。stripslashesを使え
ば解決できることはできるのですが、今度はこれを使うと"ソニー"を受け渡す際
に文字化けしてしまいます。

"90's"も"ソニー"も問題なく受け渡す方法を教えていただけないでしょうか。

98:nobodyさん
08/02/28 11:53:14
>>97
>>7

99:97
08/02/28 11:59:15 AxRhgNfU
>>98
申し訳ない。「自分のIDを表示させること。」というのを見逃してました。

100:nobodyさん
08/02/28 12:00:27
>>99
php.iniの設定でクオートが自動でされる設定になってるんじゃまいか?
auto_magic_quoteだっけ?

101:nobodyさん
08/02/28 12:02:50 z722MoHc
URLリンク(niwango.jp) にある

現在の評価は
Good![2] Bad![0]

的なPHPってどんな仕組みなんだろ・・・

102:nobodyさん
08/02/28 12:12:19 AxRhgNfU
SuiteXは共有サーバーなのでphp.iniをいじれないんですよ…。
何かプログラム的に逃げる手があればいいのですが…。


103:nobodyさん
08/02/28 12:13:59
PHP内で一時的にPHP.iniの設定を変更できるini_set()関数がある

104:nobodyさん
08/02/28 12:49:43
>>100
magic quotes gpc じゃないか?

>>103
>magic_quotes_gpcは 実行時にセットしても反映されないことに 留意してください。
って書いてあるけど、できるの?
URLリンク(www.php.net)

stripslashes してから UTF-8に変換しても化けるのかな?よくわからん。

105:nobodyさん
08/02/28 12:53:22
たぶん受け取る前に書けばできるはず
不安だったらhtaccessで設定すればいいし・・・

106:nobodyさん
08/02/28 12:57:37
>>105
受け取る前っていつ?
PHPのモジュールが呼び出された時点では $_GET / $_POST に値が設定されてるんじゃないの?

107:nobodyさん
08/02/28 13:15:22
試したけど、やっぱムリじゃね。(PHP5.2 WinXP)

ini_set('magic_quotes_gpc', 'Off');
print_r($_GET);

マニュアル見ると

magic_quotes_gpc
 PHP_INI_PERDIR
 PHP <= 4.2.3 では PHP_INI_ALL。PHP 6.0.0 で削除。
URLリンク(jp2.php.net)

ってなってるけど、PHP4はPHP_INI_ALLだから出来たという事なのかな。
値の参照時にでも処理してたんだろうか。これもよくわからん。


108:nobodyさん
08/02/28 13:16:55 AxRhgNfU
皆さんお昼休みなのにありがとう。SuiteXは個人で使っているので、家に帰ってから色々と試してみます。

>>103
その発想なかったです。試してみますね。

>>104
順番を変えるのもちょっとやってみますね。

>>105 >>106
受け渡し前はごく普通のHTMLです。
<form action="XXXX.php" method="get" name="form1">
<input type="text" name="WORD">
モジュールが呼び足された時点で値が設定されてしまいますね。

109:nobodyさん
08/02/28 13:22:10 AxRhgNfU
>>107
PHP4(WebARENA Suite2)の時にはこれだけで動いてました。

$word = $_GET[WORD];
$word = stripslashes($word);

文字化けもなく不要な"\"も出てきませんでした。PHP4では逆にmb_convert_encoding
でエンコード変換すると文字化けしてしまってました。

110:nobodyさん
08/02/28 15:48:07 SiLzRmwx
mb_send_mailをして受け取ったメールを見ると、行間が1行ぐらい空きます。
サーバはEUCなので、
mb_language("Japanese");
mb_internal_encoding("EUC-JP");

という指定を入れています。どうしてこうなるのでしょうか?

111:nobodyさん
08/02/28 15:49:46
改行コードが入ってるからじゃね?

112:110
08/02/28 16:01:23 SiLzRmwx
>>111
改行コードを取り除くのに、↓を入れたのですが、特に変わりません。。

$body = str_replace("\r", "\n", str_replace("\r\n", "\n", $body));

113:nobodyさん
08/02/28 16:07:18
>>112
取り除いてねーじゃん
置き換えてるだけじゃねーか

str_replace(array("\r\n", "\r", "\n"), "[改行]", $body);
みたいにして、BODYの中での改行なのか他で改行入ってるのか調べてみれ

114:nobodyさん
08/02/28 18:38:26
>>101
vote.php?id=17685&value=1

115:nobodyさん
08/02/28 18:41:37
このスレ来ると和むな~

116:nobodyさん
08/02/28 19:31:54
すみません。助けてください。
HTMLとPHPとがまじったファイルがあるんですけど、シンタックスエラーがでます。
どうやら '}' をひとつ抜かしてしまったみたいなんですが、どこで抜かしてしまったかがエラーメッセージからは分かりません。
ファイルはHTMLとPHPとが混ざった500行を超えるファイルです。
正直、どうやって探せばいいのかわかりません。
こんなとき、みなさんどうしてますか。

117:nobodyさん
08/02/28 19:34:58
対応する括弧が強調表示されるエディタを使ってチェック

118:nobodyさん
08/02/28 19:36:01
エディタ(自分の場合はEmacs)使ってインデントつける。

119:108
08/02/28 19:53:20 s0/KCSkK
>>104
108ですが家に帰ってきました。
そして、順番を変えてmb_convert_encodingの前にstripslashes置いたら
ちゃんと動作するようになりました!

$word = $_GET[WORD];
$word = stripslashes($word);
$word = mb_convert_encoding($word,"SJIS","UTF-8");

104さん本当にありがとうございました。
あと他にコメントいただいた皆さんもありがとうございました。

120:nobodyさん
08/02/28 20:22:44
>>116
ファイルから PHP だけを抜き出して調べるというのはどう?
URLリンク(d.hatena.ne.jp)
HTMLとPHPが入り交じっているから見つけるのが難しいのであって、HTMLを消してPHPだけにできれば、けっこう簡単に見つかるかもよ。


121:nobodyさん
08/02/28 21:00:56 UIzvtCsy
PHPのクラスについて理解が深くないのですが、
PHP5.1.6で以下のコードを書いたときの疑問です。
class Stack {
  public function getInstance() {
    return new Stack();
  }
}

$stack = Stack::getInstance();
の様に、static宣言されずに::を使ってメソッドにアクセスできるのはなぜですか?

122:nobodyさん
08/02/28 21:02:53
>>121
PHPがアバウトだから

123:nobodyさん
08/02/28 21:03:18
>>121
PHP4との互換性のため。
ただしstaticつけると Stack::getInstance() はOKでも $stack->getInstance() はエラー。


124:nobodyさん
08/02/28 21:06:14 UIzvtCsy
>>122
それは日ごろ確かに感じます。こだわりがないって。

>>123
staticをつけなくてもstaticに呼び出されているんですか?

125:nobodyさん
08/02/28 21:23:56
試してみりゃすぐ分かるがな

126:nobodyさん
08/02/28 21:42:59
掲示板のフォームから内容受け取って
150個のログ以上は消すと言うロジックはみなさんどうしてます?
file()で全ログ格納してからarray_unshiftで新しい内容を挿入、
その後forを使って何かするんでしょうけどそこが具体的によくわかりません。

>>84
ありがとうございます、
おかげさまでできました。
本当に感謝です。

127:nobodyさん
08/02/28 21:52:28
>>124
>staticをつけなくてもstaticに呼び出されているんですか?

yes

PHPでは static に呼び出すのも、static じゃない呼び出しも、どっちも同じ。
たんに、static な呼び出しだと $this にアクセスできないというだけ。

128:nobodyさん
08/02/28 22:11:56
staticで呼び出す方が遅い訳だが

129:nobodyさん
08/02/28 23:06:49 CZGTxiZs
あらやだ、ホントだ
PHP 5.2.3

class foo
{
  var $buf = null;
  function foo() { $this->buf = 100; }
  function static_func() { return 100; }
  function member_func() { return $this->buf; }
}

-- call foo::static_func 10000 * 1000
min: 0.0476429462433
max: 0.0605020523071
ave: 48.9423131943
-- call foo->member_func 10000 * 1000
min: 0.0209789276123
max: 0.0423769950867
ave: 21.8284888268

なんで?

130:nobodyさん
08/02/28 23:42:39 psOQg9xE
PDOでfetch()を使うとfetchAll()を使うように怒られるのがむかつく。
仕様なんですか?

131:nobodyさん
08/02/29 00:07:06
過去のいきさつはよくわからないのだけど
magic_quote_gpcとかregister_globalsとか
過去の遺産も簡易FAQに入れたがいいのかなぁとか思った。

個人的には今更そういう設定のサーバがあること自体が不思議なんだけど
99を見る限りまだ生きてるっぽいし
逆に、そういう動作があるっていうのを知らない人が増えてきた今だからこそ
問題だとか思うんだ。

というわけで解説よろしく


132:nobodyさん
08/02/29 00:15:13
解説じゃないけど。

>個人的には今更そういう設定のサーバがあること自体が不思議なんだけど

PHP5 では magic_quote_gpc はデフォルトで On だからなぁ。

133:nobodyさん
08/02/29 00:20:59
PHPの設定で
magic_quote_gpcというものがあって、
これがONであるとPOSTとかGETの中身は渡された先で勝手にクオートされます。

面倒なのは、同じスクリプトでもサーバーのPHPの設定によって
挙動が異なってしまうことです。

これを防ぐためには、
自サバならばPHP.iniのmagic_quote_gpcをoffにしてください。
そうでないならば、
$_POST,$_GET配列をまず最初に処理する関数を作り、その中に

if(get_magic_quote_gpc()){
として、各要素をstrip処理すれば良いと思います。
ini_set()はなにやらオススメできないようです。


134:nobodyさん
08/02/29 00:26:04
最後の2行が随分曖昧だな

135:nobodyさん
08/02/29 00:30:05
>>134 めんどくなった。
ついでに俺130なんで誰か答えてくれ。

136:nobodyさん
08/02/29 00:39:04
怒られるって誰に?上司に?

137:nobodyさん
08/02/29 00:44:55
PDOに怒られます。
Uncaught exception 'PDOException' with message
'SQLSTATE[HY000]:
General error: 2014
Cannot execute queries while other unbuffered queries are active.
Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.'

と言われます。

138:nobodyさん
08/02/29 00:46:34
コードがおかしいんだべ。

139:nobodyさん
08/02/29 00:47:38
いくつも仕事を同時にさせるな、ボケって言われてるだけじゃないの?

140:nobodyさん
08/02/29 00:50:06 lB4w3WIe
誰もなったことないの?
誰もPDO使ったことないってことか?
そこをfetchAll()にすると直るんだけど、
fetchAllって名前から想像つくと思うけど全行読むから
メモリもったいないかと思って。


141:132
08/02/29 01:06:54
>>133
偉いっ!!すばらしいっ!!結婚して!!!当方マンションもち。

もっと単純に

自分でPHP.ini触れるんならmagic_quote_gpcはoff
触れないんだったら全てのスクリプトで(なんだっけ)せれ
質問はその後だ

みたいに強制的でもいいのかでもとか思った。


142:nobodyさん
08/02/29 01:42:07
「誰もなったことない」 ⇒ 「誰もPDO使ったことない」
素晴らしい推論能力をお持ちのようで。

まぁそんなことはさておき、コード出してみたら?恐らく普通とは違う書き方してるんだろうし。

143:nobodyさん
08/02/29 02:06:51 lB4w3WIe
$rs=$db->query("SELECT UNKONAME FROM UNKOTABLE WHERE UNKO_ID=1");
$unko=$rs->fetch();
echo $unko["UNKONAME"];

$rs2=$db->query("SELECT UNKONAME FROM UNKOTABLE WHERE UNKO_ID=2");
$unko2=$rs2->fetch();
echo $unko2["UNKONAME"];

みたいな感じにSQLを2回やるとなんか怒られます。
fetchAllにして、1個しかない結果セットを$unko[0]["UNKONAME"]
とかやって取り出せるんだけどね。

144:nobodyさん
08/02/29 02:07:51 lB4w3WIe
分かると思うけど$dbはPDOのインスタンスです

145:nobodyさん
08/02/29 02:23:09
PDOはよく知らんが、このあたりの話じゃないの?
URLリンク(jp2.php.net)


146:nobodyさん
08/02/29 02:38:03
URLリンク(jp2.php.net)
PDO->query() を次にコールする前に 結果セット内の全てのデータを取得しない場合、そのコールは失敗します。
PDOStatement->closeCursor() をコールし、 次に PDO->query() をコールする前に PDOStatement オブジェクトに
関連付けられたリソースを解放してください。

147:nobodyさん
08/02/29 02:43:19 lB4w3WIe
>>145>>146
ありがとうございました。

148:nobodyさん
08/02/29 09:47:17
static
○ Object::obj();
× $obj->obj();
○ $this->obj();

public
○ Object::obj();
○ $obj->obj();
○ $this->obj();

protected
× Object::obj();
○ $obj->obj();
○ $this->obj();

private
× Object::obj();
× $obj->obj();
○ $this->obj();

これでおk?

149:nobodyさん
08/02/29 10:50:21
>>148 だめー
大体にしてメソッド名をobjにするなややこしい。
コンストラクタかと思うじゃねーか。
そもそもそういう理解の仕方じゃまずいぞ。

privateなメソッドというのは「class hoge{}の外からのアクセスは完全にNG」て意味。
中からなら$this->やObject::obj()でアクセス可能って意味だ。外から$thisなんてことはできないので$obj->objかObject::objを使うことになるけど、
それらのアクセスはprivateじゃ無理よってこと。

protectedは継承したクラスもアクセス可能という意味。だから、class fuga extends hoge{}はhogeのprotectedなメソッドを
$thisとかObject::objで扱うことができるってこった。だが当然インスタンス生成してのアクセスである$obj->objは不可能だし、
外部からのObject::objも不可能。

publicは外からのアクセスもできる。$thisだろうとObject::objだろうとOKだ。

staticは上記3つとは別な概念。上記3つは同時に存在できないが、こちらはpublic staticのように併存OKだ。
staticなメソッドは、「外部からそのクラスのインスタンス生成なしで呼び出すことのできるメソッド」
と言う意味。でも重要なのは「staticと指定したメソッドは、そのクラスのstaticでないプロパティや
メソッドを呼び出せない」ってこと。staticでないメソッドやプロパティを呼び出してるメソッドにstaticを設定すると
エラーが出るはず。staticなメソッドはぶっちゃけて言うと一般の関数と変わらない使い方ができる。
PHPみたいなゆるい言語においては微妙な存在ってこった。ただ、「こういう処理をする関数はここにまとめておこう」みたいなときに
使ったりするね。

150:nobodyさん
08/02/29 11:21:01
>>149がはりきっております

151:nobodyさん
08/02/29 11:33:03
>>150うるせーこっちは13時から試験があるから逃避してんだよw

152:nobodyさん
08/02/29 11:53:10
この$noを求めるのに前のログの$noに+1して
書き込む処理をこの上でしてるんですが
それだと書き込みが重複した時にナンバーが同じ値になったりするのでしょうか?
削除に使うナンバーなのでなるべく厳密になるようにしたいのですが。

$data = "$no\t$name\t$comment\t$delkey\t$time\n";
$filename = ('card.txt');
$log = file($filename);
$handle = fopen($filename, "w");
flock($handle,LOCK_EX);
fwrite($handle,$data);
for($i=0; $i<150; $i++) {
fwrite($handle,$log[$i]);
}
flock($handle,LOCK_UN);
fclose($handle);

153:nobodyさん
08/02/29 11:57:51
>>7

154:nobodyさん
08/02/29 12:26:21
>>152
厳密にやるならデータベースを使う。
データベースが使えないなら、uniq_id()やmd5(microtime(true))で重複しない乱数で代用する。

155:nobodyさん
08/02/29 12:42:52
$no+1する前の段階でファイルロック掛けておけばいいんじゃ?

156:nobodyさん
08/02/29 12:44:33
ありがとうございますmd5(microtime(true))でやってみます、
多分私の扱える知識がないデータベース以外で精度が高いのは
これだと思うので。
これで作り出したIDが重複してないかファイル捜索するのは時間の無駄ですかね?

157:nobodyさん
08/02/29 12:46:02
>>149
staticなプロパティは異なるインスタンス間で値を共有できるから便利

158:nobodyさん
08/02/29 12:49:40
え?
fopenする前にファイルロックできるんですか?
ちょっと最近勉強始めたのでよくわかってないのですが。



159:nobodyさん
08/02/29 12:54:20
こういうことですかね。

$filename = ('card.txt');
flock($filename,LOCK_EX);
$log = file($filename);
$no = explode("\t", $log[$i])
$data = "$no[0]\t$name\t$comment\t$delkey\t$time\n";
$handle = fopen($filename, "w");
fwrite($handle,$data);
for($i=0; $i<150; $i++) {
fwrite($handle,$log[$i]);
}
flock($handle,LOCK_UN);
fclose($handle);

160:nobodyさん
08/02/29 12:59:01
>>156
md5だけなら重複する可能性があります。

161:nobodyさん
08/02/29 13:05:26
ロック用ファイルを別に作ってもいいけど155で言いたかったのは

1.ファイルオープン(a+)
2.ファイルロック
3.ファイル中の最新の番号を取得
4.番号を1増やす
5.新しい記事を追記
6.ファイルロック解除
7.ファイルクローズ

的な感じ。いつもDB使ってるからファイル関係はよく知らんけど。

162:nobodyさん
08/02/29 13:06:34
>>159ひどいな・・・・
fopen時にw以外で読み書き可能なものを選ぶと言うことか・・・・
でもそうするとログ追記型で過去ログ削除できなかったりとややこしい・・・・

>>160
それを元に乱数生成とかですよね、多分。

163:nobodyさん
08/02/29 13:08:16
>>161
ご丁寧にすいません、その後記事の数を決めた定数以内にしたい場合、
何かいい方法ないでしょうか?

164:nobodyさん
08/02/29 15:35:33
>>163
プログラム云々依然にロジックの質問かよ!

165:nobodyさん
08/02/29 15:56:02 SImzeFcn
includeしたファイルが数値だと普通に表示されますが
日本語文字列だと表示されません。

文字コードの設定だとは思いますがお教えください。

166:nobodyさん
08/02/29 15:58:43
文字コードの設定を正しくする。

それ以上何を言えばいいんだ?

167:165
08/02/29 16:05:45 SImzeFcn
>>166
文字コードの設定の仕方が分かりません。
現状では<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
にしていますが文字化けしてしまいます。

shift_jisだと全てが文字化けしてしまいます・・。

168:nobodyさん
08/02/29 16:07:43
もう何もかもが

169:nobodyさん
08/02/29 16:08:15
突っ込んだら負けってヤツ?

170:nobodyさん
08/02/29 16:10:45
>>167
その読み込む側のファイル晒して

>>168-169
お前らこのスレに向かないんじゃない?答える気もないなら来んなよ

171:167
08/02/29 16:14:27 SImzeFcn
// サイトURL
$url = "URLリンク(example.ex)";

// サイトネーム
$site_name = "日本語文字列";

// サイトサブタイトル
$sub_title = "日本語文字列";

// 現在時刻を取得
$time = getdate();

>>170
こんな感じで書いています。

172:nobodyさん
08/02/29 16:15:29
(・∀・)ニヤニヤ

173:167
08/02/29 16:18:39 SImzeFcn
>>168-169
>>172
やっぱいいです
頑張ってみます

>>170さんありがとうございます

174:nobodyさん
08/02/29 16:22:44
>>173(´;ω;`)ブワッ

175:nobodyさん
08/02/29 16:23:04
>>170
ほらほら、最後まで面倒みろよ

176:nobodyさん
08/02/29 16:25:35
>>168-169 >>172 >>175
性格悪すぎワロタwwwww

177:nobodyさん
08/02/29 19:02:38 TvsAPhPQ
図1           図2
             .
○            .バックアップ
├ fo          └○
│ ├ test2        ├ fo
│ │ ├ a.txt    ..  │ ├ test2
│ │ ├ b.txt    ..  │ │ ├ a.txt
│ │ └ c.txt    ..  │ │ ├ b.txt
│ └ testfile.txt     │ │ └ c.txt
└ test.txt      ..  │ └ testfile.txt
               └ test.txt


図1を図2のようにバックアップフォルダにコピーしたいのですが
よい方法はありませんでしょうか?
なにとぞご教授お願いします

178:nobodyさん
08/02/29 19:24:53
図を作る努力をphpに振り向けるんだ!

179:nobodyさん
08/02/29 19:28:32
答える気の無いヤツと答えるフリして逃げるヤツしかいないのか

180:nobodyさん
08/02/29 19:34:00
OSが決まってるなら xcopy なり cp -r を呼び出せば?
URLリンク(jp2.php.net)

181:nobodyさん
08/02/29 19:59:47
うーん外部コマンド以外の方法があればどなたかお願いいたします

182:nobodyさん
08/02/29 20:01:45
<?php
define( "srcDir", "○" );
define( "dstDir", "バックアップ" );
dircopy( srcDir, dstDir );

function dircopy($srcdir, $dstdir, $verbose = false) {
$num = 0;
if(!is_dir($dstdir)) mkdir($dstdir);
if($curdir = opendir($srcdir)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $srcdir . '\\' . $file;
$dstfile = $dstdir . '\\' . $file;
if(is_file($srcfile)) {
if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
if($ow > 0) {
if($verbose) echo "Copying '$srcfile' to '$dstfile'...";
if(copy($srcfile, $dstfile)) {
touch($dstfile, filemtime($srcfile)); $num++;
if($verbose) echo "OK\n";}
else echo "Error: File '$srcfile' could not be copied!\n";}}
else if(is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);}}}closedir($curdir);}
return $num;}
?>

これでおkだろ

183:nobodyさん
08/02/29 20:03:15
>>182
ありがとうございます!!!!!
助かりました!!

184:nobodyさん
08/02/29 21:51:10
xamppをインストールし、URLリンク(hiromasa.zone.ne.jp) を参考に設定してましたが
誤って、「root:localhost」を特権から削除してしまいphpMyAdminにアクセスできなくなってしまいました。

再インストールしても状況が戻らずどうしていいのか・・・

185:nobodyさん
08/02/29 23:47:35
>>184
OSは?
再インストールってどうやった?
俺もやったことあるけど復活させたぞ

186:nobodyさん
08/03/01 00:03:26
>>185
XP homeです。
再インスコはOSではなくてソフト入れなおしただけです・・・

187:nobodyさん
08/03/01 00:11:45
>>186
アンインストールは単なる削除か?
要は「システム」としてインストールしたMySQL(とかXAMPP)が
アンインストールされてないとお話にならないってわけだよ。

アンインストールしてなくてもroot権限でMySQLに入れるなら
GRANTとかで治るとおもうけど、
一応再インストールとか厄介なことしたわけだから、
完全にアンインストールすることを強く勧める。
で、
Windowsの コントロールパネル>管理ツール>サービス
を開き、その中にmysqlとかXAMPP Serviceってのはあるか?


188:nobodyさん
08/03/01 01:45:42
>>187
プログラムの追加と削除からのアンインストールです。
サービスの中は両方ともにありませんでした。。。

189:nobodyさん
08/03/01 01:58:22
どーでもいいがDB板向けな話題だなw


190:nobodyさん
08/03/01 02:44:24
>>186
C:WINDOWSに'my.ini'が残っているとか?
関係ないか...。

191:nobodyさん
08/03/01 02:58:59 Nw5SqNkj
素人ですが教えて下さい。

ユーザーが投稿する写真のサムネイルを表示したいと思っています。
私が読んでる参考書に表示スピードを考慮した画像縮小方法として、GDライブラリが紹介されていました。
しかしGDライブラリは指定したサイズに縮小するだけのように思えます。間違ってたらすいません。

投稿される写真のサイズはバラバラで、縦長の写真、横長の写真、正方形の写真など様々です。
縦長は縦長のまま、横長は横長のまま、正方形は正方形のままに縮小したい(mixiのマイミク一覧のよう
な感じ)のですが、一般的にはどうのように行っているのでしょうか?ヒントだけでもお願いします。

192:nobodyさん
08/03/01 03:47:22
>>191
算数の素人さんですか

100x100を半分にすると50x50
100x200を半分にすると50x100

指定したサイズに縮小できたら十分。

193:nobodyさん
08/03/01 05:15:24
高さと幅の最大値を決めて、あとはそれに合うようにアスペクト比をあわせればおk
どっちかの小さい方にあわせんだっけかな

194:nobodyさん
08/03/01 13:12:12
縦書きの日本語をGDで表示したいんだけど
横書き用フォントでは







ってカンジに表示されてしまう
どうやったら縦書き用フォントが使えるんですか?

195:nobodyさん
08/03/01 13:24:38
>>7

196:nobodyさん
08/03/01 13:29:45
>>195
このスレはこの程度か
ありがとうございました

197:nobodyさん
08/03/01 13:42:39
>>196
>>7よりググレカスの方が正しいかも

「GD フォント指定」でそれっぽいのが出てくるのに
悔しくて捨て台詞をいう程度のカスなんでしゃーないなぁ

198:191
08/03/01 14:01:50 Nw5SqNkj
>>192
すいません、質問が悪かったと思います。
元の大きさがバラバラなので、ただ半分にしただけじゃ並べたときにデコボコになります。
縦横の比率を保ったまま、縮小後の大きさを大体同じ大きさにしたいのです。

200×100は1/2で100×50
400×400は1/4で100×100
250×500は1/5で50×100

というふうに大体100×100の枠に納めたいのですが、元の写真がどのサイズで来るか分かりません。
GDライブラリは試してないのですが、100×100へ縮小としてしまうと、正方形の写真以外は歪ん
でしまうんじゃないでしょうか?

歪ませずに大体100×100の大きさに納めるにはどうすれば良いでしょうか?

199:nobodyさん
08/03/01 14:03:57
だから長いほうを100pxにすればいいじゃん

200:nobodyさん
08/03/01 14:04:59
>>198
リアル算数素人だった、この衝撃

201:194
08/03/01 14:22:00 z6e/g20g
>>196
ちょwwwなにやってんだ

>>197
おれは196じゃないです
ID表示させとけばよかった
「GD 縦書き」とかで検索しても出なかったんで聞いてみたんです。
縦書きに切り替える関数とかあるのかな?


202:194
08/03/01 14:24:36 z6e/g20g
縦書き専用フォントを使えばいいのかな?

203:194
08/03/01 14:29:55
>>201-202
偽者

204:nobodyさん
08/03/01 15:21:32 MLWBh96T
質問です。

アップローダーを作っているのですが、
アップロードファイルのローカルパスの一部をファイル名と認識してしまい難儀しております。

入力フォームで
”C:\Documents and Settings\User\デスクトップ\sample.doc”
と入力して
$_FILES[ パラメータ名 ][ name ]で
ファイル名を抽出すると
”デスクトップ\\sample.doc”
とでてきてしまいます。

環境
PHP 5.2.5
Apache/1.3.41

対処法をご存じの方、ご教授をお願いします。

205:nobodyさん
08/03/01 16:27:41 SX7Jze++
質問です

4択式のリアルタイムアンケートを作成したいのですがご教授ください


ページで投票してもらって
最終的に各回答の合計数がカンマ区切りの○○○.txtというデータで吐き出されればよいです。
ビジュアルとかはこだわりません。

206:nobodyさん
08/03/01 16:44:55
>>205
宿題は自分でやりましょう

207:nobodyさん
08/03/01 17:03:11 bS1QPxn9
質問させてください

$url = "URLリンク(www.unko.com)";

ここから、URLリンク(www.test.com)のみを取得したいのですがどのような関数を使えば良いでしょうか?

URLリンク(www.unko.com) は固定されていますが、

?unko_id=12345 は ?oomoriunko_id=123 になったり ?geriunko_id=111111111 になったり

固定されていないものとする。

以上ぎょきょうじゅくださいお願いします

208:nobodyさん
08/03/01 17:07:45
preg_match

209:nobodyさん
08/03/01 17:12:33 bS1QPxn9
>>208
ありがとうございます
なんとなく理解できました

あと書き忘れたのですがtest.htmlも固定されてません。

もう少し調べてみます

210:nobodyさん
08/03/01 18:50:49
mysql_escape_string と
mysql_real_escape_string の違いについて、

後者は文字コードを考慮する、とマニュアルには記載されていますが、
結果として、
後者ではなく、前者を使用していると
脆弱性が発生したりするケースはあるのでしょうか。


211:nobodyさん
08/03/01 19:16:54
>>187
亀ですみません。
root権限で入ろうと思いますが、その方法がわかりません。
差し支えなければ教えていただけませんか?

212:nobodyさん
08/03/01 19:34:15
>>210
前者は非常に危険です。
後者でも危険性が指摘されています。

213:nobodyさん
08/03/01 19:59:50
>>212
ソース

214:nobodyさん
08/03/01 20:03:33
質問スレだか、初心者いびりスレだかわかんなくなってきてるな……。

215:nobodyさん
08/03/01 20:10:28
>>211
> mysql -u root -p

216:nobodyさん
08/03/01 20:46:02
>>207
parse_url

217:nobodyさん
08/03/01 20:46:29
>>221
DB板行けよ
MySQL 総合 Part13
スレリンク(db板)

>>214
初心者スレは初心者スレがある
くだすれPHP(超初心者用)3
スレリンク(php板)

218:nobodyさん
08/03/01 20:55:00
>>214
このスレには初心者は来ていませんよ?

少なくともマニュアルを一通り目を通したりぐぐったりしてきてるはずなんで。

219:nobodyさん
08/03/01 21:06:57 Y1gVmTFW
開発をWindowXPでやってます
PDO::exec()でクエリを実行する場合影響した行数が帰ってくるはずですが、まったく影響のないクエリを実行してるのに1が返ってきます
バグでしょうか?

apache2.2
php 5.2.5
Postgresql 8.2

220:nobodyさん
08/03/01 21:13:47
はい、バグです。
次の方どうそー。

221:nobodyさん
08/03/01 22:02:10
>>219
DBMSによっては、delete で全行削除した場合、削除した行数を返さないらしい。
必要な場合は、where 1=1 ってやるのが定石だそうだ。

postgresをPDOで使ったときに同じ問題があるかどうかは知らない。

222:nobodyさん
08/03/01 22:04:42
すいません、質問させてください。
PHPを一度ソースからインストールした後に、libxsltが必要になったので
再インストールを試みたのですが、makeで以下のようなエラーが出ました。
ext/xmlreader/.libs/php_xmlreader.o(.text+0x14a9): In function `zim_xmlreader_XML':
/usr/local/src/php-5.2.5/ext/xmlreader/php_xmlreader.c:1109: undefined reference to `xmlTextReaderSetup'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] エラー 1

あと、環境は以下のとおりです。
OS:Vine4.2
PHP:PHP5.2.5
実行したconfigure:./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-zend-multibyte --with-pgsql --enable-sockets --with-zlib --with-xsl=/usr/include/libxslt

解決方法をご存知の方いらっしゃいましたら、ご教示ください。


223:nobodyさん
08/03/01 22:13:34 Y1gVmTFW
>>222
xslライブラリをなんのオプションも無くコンパイルしたなら --with-xsl=/usr/local/lib じゃないかな

>>221
いろいろ試して見たら、selectとかupdateとか、どんなクエリ実行しても1しか返って来ません
失敗の場合のみfalse
これは開発もlinuxにするしかないのか…?

224:nobodyさん
08/03/02 01:08:51 kiurO7do
こんばんわ
プログレスバーについてなのですが
自身のループ処理による待ち時間ではなくて
重い外部のファイルを読み込むなど、一関数が完了するまでの間
flush()でメーターを描画する場合どのような方法があるのでしょぅか?
よろしく願いします。

225:nobodyさん
08/03/02 01:41:21
>>224
ajaxで読み込む(画面遷移せず)

現在の画面にぷろぐれすばー表示(その間にサーバで処理)

処理完了

画面遷移
って流れでやったら?

226:nobodyさん
08/03/02 02:27:09
このスレはこの程度か。
ありがとうございました。

227:nobodyさん
08/03/02 04:11:35 jR385ymf
会員制のサイトからデータを取得する場合、
あらかじめ取得しておいたIDとパスをそれぞれ変数に入れて、
それらの変数をもってaction先に飛ばす
そしてファイル取得
こんな感じでいいのでしょうか

228:nobodyさん
08/03/02 04:12:23 8nU9J7zG
Dreamweaver8でPHPを使ってメールフォームを作りたいのですが
現在XAMPPというのをインストール(セットアップ?)した直後です。

見積依頼のフォームのファイルはindex.phpにして設定もしました。

<?PHPprint("PHPを使って文章を出力します");

こうなっているのですが次の手順が分かりません。デザインビューで
見積依頼のフォームをこのindex.phpの<?PHPprint("PHPを使って文章を出力します");
の下に作ればいいのですか。

PHP初心者です宜しくお願いします


229:nobodyさん
08/03/02 04:17:24
>>228
見積もり依頼のフォームというのが説明されていないのでわからない
そもそも次の手順ってそもそも何がしたいのか

ソース丸ごと見せてもらった方が早い

ちなみに、PHPで文章を出力したいんだけなら
<?PHPprint("PHPを使って文章を出力します");
↑の PHPを使って文章を出力します
の部分に記述

230:nobodyさん
08/03/02 04:47:47 8nU9J7zG
>>229
あっなるほど。そこにデザインビューでメールフォームを作ればいいのですね。
コードは

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>PHPプログラム</title>
</head>

<body>
<?PHP
print("PHPを使って文章を出力します");


</body>
</html>

です

231:nobodyさん
08/03/02 04:48:24 8nU9J7zG
>>229
そしてメールフォームの内容は


お名前
住所 〒


TEL
E-mail
見積希望日
見積希望時間 9時~12時
       12時~15時
       15時~18時
       何時でも可能
メッセージ


としたいのです。

232:nobodyさん
08/03/02 05:09:59 8nU9J7zG
>>229
デザインビューで「文章を出力します」のとこを修正しようとすると

「HTMLタグに対して正確なフォーマットではありません。無効とマークされ
ました。コードビューを使用してソースコードを修正して下さい」

と出てしまい「文章を出力します」のとこの変更ができません。


233:nobodyさん
08/03/02 06:19:08 cPv2Uin/
class unko{
private $unko;
public function getUnko(){
return $this->unko;
}
において、
public function checkUnko(){
の中は
$unko=$this->unko;
がいいのか
$unko=$this->getUnko();
がいいのか。
}

当然速いのは$this->unkoだと思うけど、この書き方って
オブジェクト指向を貫く上で問題ありかな?

234:nobodyさん
08/03/02 08:12:52
checkUnko()というメソッド自体なんかおかしいだろ

235:nobodyさん
08/03/02 08:46:32 qS2qya1q
%A5%A2%A5%A4%A5%AA%A5%E9%A5%A4%A5%C8(文字コード不明)

をデコードしたいのですが、何にエンコードされたかを知るにはどうしたらいいでしょうか?
また、PHP関数で何か良いものはありますでしょうか?

236:nobodyさん
08/03/02 08:54:16
urlencode

237:235
08/03/02 08:55:02
すみません。上記質問ですが、utf8で書いているphpで、EUC-jpにurlencodeや、EUC-JPでエンコードされたキーワードを
デコードし、表示するにはどうすればいいのでしょうか?に訂正させてください。

238:nobodyさん
08/03/02 08:55:18
間違えた。urldecode
まぁ、両方の関数のマニュアルを見ておけ

239:235
08/03/02 09:05:40
$test = "アイオライト";
$test = mb_convert_encoding($test, "EUC-JP", "UTF-8");
$test = urlencode($test);
echo "$test<br><br>";

$test = "%A5%A2%A5%A4%A5%AA%A5%E9%A5%A4%A5%C8";
$test = mb_convert_encoding($test, "UTF-8", "EUC-JP");
$test = urldecode($test);
echo "$test<br><br>";

上はうまく行きましたが、下が変なひょうじになります。全体としての設定はutf8です。

240:235
08/03/02 09:07:37
すみません。自己解決しました。

$test = mb_convert_encoding($test, "UTF-8", "EUC-JP");
$test = urldecode($test);

の上下を入れ替えたら出来ました。

241:222
08/03/02 12:52:29
>>223
レスありがとうございます。
apt-getでlibxsltをインストールしたところ、
libxslt.a
libxslt.la
libxslt.so
libxslt.so.1
libxslt.so.1.1.17
が/usr/libにつくられていたので、
--with-xsl=/usr/lib にしてやってみましたが、同じエラーでとまってしまいました・・・

242:nobodyさん
08/03/02 13:13:25 1wdULA7X
yumのphp-mysqlがmysqlに依存しているので、mysqlが一緒に入ってしまいますが
mysqlはtritonn(mysql with senna)を使いたいです。
こういう場合どうしたらいいですか?

243:222
08/03/02 13:19:35
--disable-xmlreaderをつけたところ、>>222で起きていたエラーが出なくなりました。

しかし、--disable-xmlreaderをつけてもlibxsltは使用できるのでしょうか?
どなたか教えてください。。。



244:nobodyさん
08/03/02 15:20:02
>>242
普通にphp.iniとかでphp-mysqlでインストールしたほうじゃなく
そっちのmysqlを使うように設定したらええやん?

245:nobodyさん
08/03/02 15:21:55
>>243
聞く前にやったほうが早いんじゃ?
もうその環境なんだろ?

246:nobodyさん
08/03/02 16:13:25
>>233
スーパークラスでも一貫して $this->getUnko() を利用すべき。
サブクラスで getUnko がオーバーライドされる可能性があるので
戻り値 === $unko が保証されないから。


247:nobodyさん
08/03/02 16:58:37 LTTkeK/B
txtファイルをphpファイルにするにはどうすればいいですか??
メモ帳つかって拡張し使ってもxxx.php.txtとかなるのですがその後どうすればいいかわからんとです。

248:nobodyさん
08/03/02 17:29:25
お前さんフォルダオプションだかなんだかの
「拡張子を表示しない」にチェックしてあるまんまだな?
はずすことを推奨する

249:219
08/03/02 17:36:31
なんかほんとにバグっぽいので報告してきます

250:nobodyさん
08/03/02 18:07:37
>>247
メモ帳ならSJIS保存しかできないんじゃ?
まともなテキストエディタに乗り換えろ

251:nobodyさん
08/03/02 18:12:48
>>242
yumで入ったmysqlを削除して
yum版のmysqlのsrc.rpmからspecをとりだして
--with-mecab, --with-sennaを加えてrpmbuildしてできたrpmをつかう

252:nobodyさん
08/03/02 18:19:37
>>249
mysqlだけどちゃんと行数返ってきたよ

253:nobodyさん
08/03/02 18:28:26
>>250
へぇ…おまえのメモ帳はそうなんだ。

254:nobodyさん
08/03/02 18:35:58
>>253
もう何年もWindowsは使ってないのでよく覚えてない
最近のメモ帳はまともなん?

255:nobodyさん
08/03/02 18:44:44
メモ帳のファイル保存形式は ANSI, Unicode, Unicode big endian, UTF-8 の4つから選べる

256:nobodyさん
08/03/02 20:02:48
リンク元からGETで持ってきたidを今いるところののformを通してさらにリンク先に渡したいんですが
どうやったらできますか?

257:nobodyさん
08/03/02 20:19:42
>>256
エスパー回答してやる
<?php
echo '<form action="post">';
foreach ($_GET as $key => $value) {
 echo '<input type="hidden" name="'.$key.'" value="'.$value.'">';
}
echo '</form>';
?>

正直何をしたいのかがわからん
もうちょっとちゃんと説明しろよ

258:nobodyさん
08/03/02 20:22:22
echo '<form action="post">'; ・・・

259:nobodyさん
08/03/02 20:32:35
>>256 >>7

260:nobodyさん
08/03/02 20:41:38
>>257
脆弱性が生まれる瞬間

261:nobodyさん
08/03/02 21:28:38
貴重な瞬間に立ち会えたことを神に感謝する

262:nobodyさん
08/03/02 23:22:05
256がまともに書かないのに
ちゃんとしたレスがある筈ない


263:nobodyさん
08/03/02 23:22:24
PHPみたいなスクリプト言語でもいちいちinterfaceとか作って
厳密にオブジェクト指向ばりばりってどーなの?
遅くなるだけじゃね?
XOOPSとかMediaWikiってどうなってるんだろ??

264:nobodyさん
08/03/02 23:30:12
>>263
プログラマが気をつけるじゃなくて、それを使うことが保証されるっていうところに
オブジェクト指向の肝があるんじゃないか?

遅くなるってことは実際あると思うけど、微々たるもんだし、速度が問題になるようならそもそも、システム設計自体に問題があると思う。

まあ、小さいシステムで、後々それほど手を入れないならスパゲッティーでもいいと思うけど
俺はオブジェクト指向で組まれていないシステムを読み解くのはあんまり好きじゃないな

265:nobodyさん
08/03/02 23:44:02
>>263
自分の場合、instanceof とかで判定しないなら、interfaceは定義しない。

266:nobodyさん
08/03/03 00:04:02
GETで渡したパスの内容読み取りたいのですが、
ディレクトリさかのぼり、がちょっと怖いです。

$root_path = "/home/hoge/public_html/open/";
if( strstr( $GET['path'], ".." )) die("error!!");
fread($root_path.$GET['path']);

これで /home/hoge/public_html/open より上の層は見られない、
と断言できますか?
(..さえ拒否すればさかのぼりは完全に防げると判断して良いのでしょうか?)

open_basedirがini_setでスクリプト内で
設定できたら、自由にchroot風にできて安全そうで
よさそうだったのですが、ini_set内では無理でした



267:nobodyさん
08/03/03 00:17:00 8BSVZMuK
質問させてください。

PHPでサイト構築しているのですが、
ある日突然、複数のスクリプトで
大量のエラーログをサーバー側に
記録するようになりました。
使用リミットをオーバーするような
膨大な量です。しかし、
サイト上では問題なく実行され表示されています。
エラーも出ていません。

この場合どんな原因が考えられますか?

268:nobodyさん
08/03/03 00:17:23
>>264
なるほど。オブジェクト指向で書こうとすると
設計に悩んでフリーズしてしまうことが多い。
慣れてないしデザインパターンもどれをあてはめればいいのかわかんない。
かと言って本能のまま書くと役割分担のはっきりしないクラスばっかりになる。
結局「PHPごときにちまちまとオブジェクトなんてやってらんね」ってなるんだよね。

>>265
それぐらいの塩梅でいいかな。

269:nobodyさん
08/03/03 00:18:10
エラーログの内容みれ。

270:nobodyさん
08/03/03 00:34:41 8BSVZMuK
>>269
内容はPHP Notice: Use of undefined ・・・・
というものが多いです
エラーが記録されているスクリプトの種類は多岐に
わたっています。たとえばフリーで公開されているものを
そのまま導入して使用していたものからそうでないものまで。

271:nobodyさん
08/03/03 00:49:10
それはPerl風にいうとuse strict;をつかってないルーズなプログラムだからな

272:nobodyさん
08/03/03 00:57:35
>>267
突然って何よ?まぁめんどくさいから答えなくてもいいけど

httpd.confとかphp.iniでも制御できるからうまく設定したらいいよ
詳しいことはググレ

273:nobodyさん
08/03/03 01:12:41 8BSVZMuK
>>271
おっしゃる通りルーズなプログラムかもしれませんorz
>>272
今までは問題なかった(と思う)のでほんとに突然なんです(涙
月替わりに突然エラーログが大量に記録されるようになったというイメージです。
ちなみに現在はエラーログはまったく出ていません。
php.iniの設定を見てみたのですが
log_errors On
log_errors_max_len 1024
error_reporting 6143
となっているのでエラーがあれば記録されると思うのですが・・
なぜこのような事がおきたのか原因を知りたいです

274:nobodyさん
08/03/03 01:17:45
shared extentionにできるものとできないもののリストって
どこかにないですか?

275:nobodyさん
08/03/03 02:25:43 33Hm4dS7
function Hoge(){}

$func = "Hoge";
$func();
↑これは動いて

"Hoge"();
↑なぜこれは動かないのでしょうか?

変数に入れれば良いことではあるのですが、
どうも気になってしようがありません。
PHPの関数呼び出しの仕組みってどこかに載ってますか?

276:nobodyさん
08/03/03 02:28:20
おまいらヘボプログラマでもNoticeレベルのエラーまで完璧に処理してるの?

277:nobodyさん
08/03/03 02:33:31
>>275
そのものズバリではないけど

URLリンク(www.php.net)
URLリンク(jp2.php.net)

278:nobodyさん
08/03/03 03:15:49 rD8lqAq1
どこに質問を投げていいか分からないのですが、もし適切な場所がありましたらご誘導下さい。

友人の紹介で仕事を回してもらうことになったのですが、
仕事としては始めてのphpによる開発なんですが、
見積もりを出してくれと言われていて少し困っています。

【ご質問】見積もりの中で人月に加えてステップ数を求められているのですが、
ステップ数って、空行とかコメント行もステップに数えるのでしょうか?

あと、ステップ数って、プログラムの書き方にも変わりますよね?
1行=======================================
if ($value == 1) { print "test";}

3行=======================================
if ($value == 1) {
print "test";
}

ネットで調べると1人月当たり、1000ステップらしいですが(COBOL)、
PHPの場合も、それが当てはまるのかそれも疑問です。

宜しくお願いします。

279:nobodyさん
08/03/03 03:26:55
>>277
この仕組みのこと、可変関数と言うのですね、今まで知りませんでした。
Reflection機能も初めて知りました、とても勉強になります。
夜中に素早いご回答、どうもありがとうございました。

280:nobodyさん
08/03/03 05:25:27
>>278
Web制作板のSOHOスレで聞けばいいかもしれない。
ただちゃんとした答えが返ってくるかは保証できないけど。

281:nobodyさん
08/03/03 08:00:57
>>278
空行やコメントはステップとは言わない
それだと2ステップじゃないかな?

とりあえず
必要工数*欲しい時給+何かあった時の自分的保険費用で出してみたら

因みに俺の知ってる所だと1人月で
30-70マンぐらいの幅があった

282:nobodyさん
08/03/03 08:15:12
>>278
ステップ数ってのは、処理手順の事?ソースの行数の事?
よく判らないんだけど、開発前からステップ数なんて判るものなの?

283:nobodyさん
08/03/03 08:23:59
>>278
そんなのは7行としておけばいい。
ステップ数なんてのはパンチカード時代の遺物だ。
そんなもの求める会社は注意したほうがいいぞ。

284:nobodyさん
08/03/03 11:25:37
おまえらメール送るとき文字コード何にしてんすか?UTF-8?

285:nobodyさん
08/03/03 11:29:33
>>284
>>7

286:nobodyさん
08/03/03 11:57:57 GThXklLZ
PHP5.2.5から導入されたメモリマネージャは、
memory_limitとは無関係なのでしょうか?

memory_limitを-1にしても、zend_mm_heap corruptedみたいなエラーが吐き出されてしまいます。

287:nobodyさん
08/03/03 13:05:13 KrsbPUyK
OSX10.4 php4.2を使用しています。
$POST = array_map("htmlspecialchars",$_POST);
のような形でpostを一気に変換しています。

普段は問題ないのですが、
<select name="hoge[]" size="8" multiple="multiple">
のような要素がある場合、
Warning: htmlspecialchars() expects parameter 1 to be string, array given in...
という警告が出てしまいます。

これって、解決する方法ないんでしょうか?
よろしくお願いします。

288:nobodyさん
08/03/03 13:33:06
>>287
htmlspecialcharsを元に配列に対応した関数を作ればいいんじゃね。
「php htmlspecialchars 配列 対応」あたりをググルと幸せになれるかもね。

289:nobodyさん
08/03/03 14:03:39 DWqAIEY6
PHPでアクセスカウンタを組んだのですが、キリバンの表示方法がわかりません。
誰かご教授ください。

290:nobodyさん
08/03/03 14:08:16
>>289
お前の言うキリバンはいったいいくつのカウントになるんだ?
そのカウントだったらキリバンと表示すればいいんじゃね?

291:nobodyさん
08/03/03 14:08:39
>>289
if( ($count % 1000) == 0 ){
print "切り番おめでとう";
}

292:nobodyさん
08/03/03 14:58:46 ut4WA0El
ちょっとお聞きしますが

$title = $item[title];
こいうのは

$title = $item['title'];
↑こういう風に書いた方が良いんですか?

293:nobodyさん
08/03/03 15:01:42
うん

294:nobodyさん
08/03/03 15:02:04
>>292
その辺詳しくないから曖昧な回答になるが了承くだしあ

上記はまず定数であるかどうか判別される
下記は文字列としてそのまま行く

上記の場合の定数であるか判別する余計な処理があるので下記のほうがいい
また、「title」って定数が合った場合そっちの値が優先されてしまう

295:nobodyさん
08/03/03 15:45:12 HPgcFf+Y
>>293-294
ありがとうございます

296:nobodyさん
08/03/03 16:42:21 a83ZZyIL
参考程度に聞かせていただきたい。
くだすれぐらいしか聞くとこがなくて。
こんな風に書かれた時間から年月日を取り出す場合
皆さんならどう取り出しますか?
とりあえず3パターン考えてみた。

| $str = "2008-11-08 22:12:25";
|
| //パターン1
| $array = split("-",$str);
| $day = substr($array[2],0,2);
| echo $array[0]."年".$array[1]."月".$day."日";
|
| //パターン2
| $year = substr($str,0,4);
| $month = substr($str,6,2);
| $day = substr($str,9,2);
| echo $year."年".$month."月".$day."日";
|
| //パターン3
| $array1 = split(" ",$str);
| $array2 = split("-",$array1);
| echo $array[0]."年".$array[1]."月".$array[2]."日";

297:nobodyさん
08/03/03 16:44:38
どう考えてもstrtotimeだろ

298:nobodyさん
08/03/03 16:47:10
strtotimeは、php言語の中で一番最悪の関数だろ。
引数の書き方が自由すぎてバグの元だよ。
どうして、こんなひどい設計したんだよ。

299:nobodyさん
08/03/03 16:58:50
でも便利

300:nobodyさん
08/03/03 17:00:37
利便性とセキュリティーは、相反する命題だろ。
こういう似非プログラマーが日本の中枢にいるから、
この業界の単価が下がっているんだろ。
生活できねーよ。

301:nobodyさん
08/03/03 17:15:53
利便性とセキュリティーは相反する命題だという話から
似非プログラマー論になる話の流れがわからん。

俺は時と場合に応じた道具の使い分けが出来ません、って告白?

302:nobodyさん
08/03/03 17:17:07
DBにYYYY-MM-DD HH:ii:ssで格納されてるのを、
strtotimeを使う分には問題ないと思うんだがどうだろう

303:296
08/03/03 17:29:37 a83ZZyIL
>>296ですがstrtotimeってのがあったのか。
確かにこれは便利ですね。

一応自分が今使おうと思ってるのは
データベース内に格納されてるのを判別するので
多分strtotimeで問題はありません。

しかしバグがあるというのは問題ですね。
使いどころを間違えないように使用したいと思います。
ありがとうございました。

304:nobodyさん
08/03/03 19:13:10
>>303
時と場合によるけど、sqlでDATE_FORMATなんてのも有り

305:nobodyさん
08/03/03 19:37:52 BS/MlDiQ
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
な配列を
array(3) {
[1]=>
int(2)
[0]=>
int(1)
[2]=>
int(3)
}
な配列にしたいんだけど、どうすればいいのだろう?


306:305
08/03/03 19:41:59 BS/MlDiQ
数値を例に出したけど、文字列が添字の場合でも出来る方法が知りたいです。
やりたい事を言葉にすると、配列のキーと値の関係を保持しながら、
要素の場所を入れ替えたり、好きな場所に移動させたいということです。

307:nobodyさん
08/03/03 19:58:05
URLリンク(www.php.net)

308:305
08/03/03 20:35:02 o2rZ954m
移動したのでID変わってると思うけど、、

>>307
もちろんマニュアルは見たのだけど、いまいちうまい事やる方法が
思い浮かばなくて質問しました。

309:287
08/03/03 20:36:48
>288
あざーす!!
ばっちり解決できました。
ありがとうございます!

310:2050
08/03/03 20:50:47 1O+7QDSJ
echoを使用して、HTMLを出力しています。
この度、JAVASCRIPTを含む記述で壁にぶち当たってしまいました。

<?php
print "<input type='submit' value='送信' onClick='return confirm('送信します');'>";
?>
と、フォームのボタンを押すと、JAVASCRIPTでメッセージが表示されるように
したいのですが、シングルクォートの中に、さらにJAVASCRIPTのシングルクォート
が来るのが原因のようで動作しません。

どうしたらいいものでしょうか?

311:nobodyさん
08/03/03 20:58:38
>>310
print "<input type='submit' value='送信' onClick='return confirm(\"送信します\");'>"

javascript と html の話でPHPあんまり関係ないよ。

312:nobodyさん
08/03/03 20:59:01
>>310
エスケープって知ってるかい?
っていうかそこはPHPから抜けて書きなよ。

<?php

?>
<input type="submit" value="送信" onClick="return confirm('送信します');">

313:nobodyさん
08/03/03 21:09:41
>>310
php関係ないけど\でエスケープ

>>308
array_spliceやarray_sliceなど。
ただ連想配列を使っておきながら順序を気にするというのはあまりいただけない

314:2050
08/03/03 21:15:48
>311>312>313
ご丁寧に有難うございます。
実は、これを変数として格納し、別のtxtファイルに出力し、
さらに別のPHPファイルからこのtxtを読み込みます。
一度試してみます。有難うございました。

315:2050
08/03/03 21:21:05
>311>312>313
正しくできました。有難うございます!

316:305
08/03/03 21:35:13 o2rZ954m
>>313
そうですね。僕としても連想配列はたまたま順序を保持する実装になっているだけ、
という認識で、基本的にはハッシュでもいけるような使い方をするようにしています。

で、教えていただいた関数ですが、うまく使えば良い感じに出来るんじゃないかとは思いますが、
いまいち使い方がよくわかりませんorz もっと精進します。ありがとうございました。

追伸 : 拙作を貼付けておきますので、添削等していただけるとありがたいです
function hoge($array, $p1, $p2) {
    $ret = array(); $v_p = array_values($array); $k_p = array_keys($array); $c_p = 0;
    foreach($array as $k => $v) {
        if ($i == $p1) {
            $ret[$k_p[$p2]] = $v_p[$p2];
            $i++;
            continue;
        }
        if ($i == $p2) {
            $ret[$k_p[$p1]] = $v_p[$p1];
            $i++; continue;
        }
        $ret[$k] = $v; $c_p++;
    }
    return $ret;
}

317:305
08/03/03 21:36:28 o2rZ954m
改行が多すぎると怒られたので、読みにくい感じになっていますが、ご容赦ください。

318:nobodyさん
08/03/03 21:43:03 bM6XDXSb
ヒアドキュメントってPHPerの間では忌み嫌われてるの?
時々こんなソースが暗がりから飛び出てきて
3時間ぐらい仕事する気を無くすんだが。

print "<body bgcolor=\"#99ccff\">"
print " <form action=\"./index.php\" method=\"post\" name=\"PRadioList\" id=\"PRadioList\">"
print " <table width=\"250\" border=\"1\">"
print " <tr>"
print " <td width=\"30\"><div align=\"center\"><input name=\"radioBtn\" value=\"0\" type=\"radio\" id=\"qf_ad7dfc\" /></div>"
print " <td>たぬき</td>"
print " </table>"
print " <table width=\"250\" border=\"0\">"
print " <tr>"
print " <td align=\"center\">"
print " <input name=\"submit\" value=\"送信\" type=\"submit\" />"
print " </td>"
print " </tr>"
print " </table>"
print " </form>"
print "</body>"


319:nobodyさん
08/03/03 21:57:31
早く逃げた方がいい

320:nobodyさん
08/03/03 22:02:46
セミコロンはどこいった

321:nobodyさん
08/03/03 22:08:23
>>318
それはなんちゃってPHPerが書いたPerler?が書いたソース
普通はこう書く


?>
<body ~>
-中略-
</body>

322:nobodyさん
08/03/03 22:09:20
あ、日本語壊れた

323:nobodyさん
08/03/03 22:15:53
変数展開する必要もないのにヒアドキュメントなんて使いたがる318は素人

324:nobodyさん
08/03/03 22:28:33
色々閉じタグ無いのはいいのか

325:nobodyさん
08/03/03 22:32:55
>>318
さすがにそんなのは稀すぎる
連結してるのはたまに見るが

print "hoge"
. "hoge"
. "hoge";

ていうかhtmlに組み込めるんだから、viewは普通にhtmlで書けっていう話
つまり>>323

326:nobodyさん
08/03/04 00:01:11
>>323
おらぁ2行に別けた方がいいと感じたら
変数展開無くてもヒアドキュメントつかうだよ

327:nobodyさん
08/03/04 00:02:06
いやだからHTMLモードで書けばいいじゃn

328:お願いします。
08/03/04 00:52:40 G7JIaGfr
Windowsで正常に動作していたメール送信プログラムを
qmail(・・・※)設定済みのLinux(CentOS5)に移行した上で
実行したのですが正常に送信先に届きません。
(また、php側でエラーは発生しません。)

【ソース】
if( mb_send_mail($addressTo, $subject, mb_convert_encoding($message,"shift_jis","shift_jis"),$header) )

{
  #この部分に正常に入ります。

  print("送信完了しました。");



}
else

{

print("エラー:送信に失敗しました");

}

【Linuxmメールサーバ構築参考サイト】
  URLリンク(centossrv.com)


329:nobodyさん
08/03/04 01:03:43
>>328
apache?
apacheならapacheのエラーはどう?

330:お願いします。
08/03/04 01:21:47 G7JIaGfr
>>329
Linux版は、次のコマンドでWEBサーバを構築して、恐らくApacheだと思われます。
  yum -y install httpd

再度、作成したテストページよりメールを送信した結果、apacheのログファイルを見てみると
次の様なエラーが表示されていました。

【error_logの内容】
[Tue Mar 04 01:19:02 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/index.css, referer: URLリンク(localhost)
[Tue Mar 04 01:19:02 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/css, referer: URLリンク(localhost)
[Tue Mar 04 01:19:03 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/index.css, referer: URLリンク(localhost)
[Tue Mar 04 01:19:03 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/css, referer: URLリンク(localhost)


331:nobodyさん
08/03/04 01:32:39
>>330
sendmail_pathはおk?
もちろんphpインストール時にqmailにしたよな?

とりあえずmail()でやってみ

332:お願いします。
08/03/04 01:36:30 G7JIaGfr
SendMail.html の中に存在しないcssを参照する不要なタグが存在した為、
再度メールをWEBページより送信してみたところ、エラーログには何も表示され
なくなりました。

送信先メールアドレスには、自宅(hogehoge@m2.gyao.ne.jp)
を指定しています。
また、CentOS5に付属のメール送信ソフトより自分のメールアドレス
にメールを送信したところ正常にメールは届きます。
※また、143番ポートは正常に開放されています。





次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch