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

このエントリーをはてなブックマークに追加
1nobodyさん
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
2nobodyさん:05/03/03 22:44:18 ID:???
前スレ
【PHP】質問スレッドpart26【php】
http://pc5.2ch.net/test/read.cgi/php/1103636095/l50

関連スレ
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/l50
【PHP】セッションについて語ろう!【PHP】
http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
PHPでPDF
http://pc5.2ch.net/test/read.cgi/php/983858078/l50
【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/l50
PHP + PostgreSQL
http://pc5.2ch.net/test/read.cgi/php/983128806/l50
3nobodyさん:05/03/03 22:44:40 ID:???
PHP系blogツール part2
http://pc5.2ch.net/test/read.cgi/php/1094725439/l50
PHPBB
http://pc5.2ch.net/test/read.cgi/php/1065334037/l50
Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/l50
★負荷軽減対策委員会(Perl、PHP)★
http://pc5.2ch.net/test/read.cgi/php/1034645635/l50
【PHP】Smarty【Template】
http://pc5.2ch.net/test/read.cgi/php/1047225437/l50
【PHP】処理能力向上テクニックスレ
http://pc5.2ch.net/test/read.cgi/php/1088823837/l50
【PHP】自作スクリプト発表会
http://pc5.2ch.net/test/read.cgi/php/1017456911/l50
親切な人が初心者にPHPの関数を使い方を教える
http://pc5.2ch.net/test/read.cgi/php/1068190843/l50
4nobodyさん:05/03/03 22:45:14 ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 
1. ハードウェア、OSのバージョン等には一字一句触れない。 
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 
  目の前で生じている現象をそのまま具体的に書くなどもっての外。 
  事実より俺様の脳内解釈を優先すべし。 
4. 独り言文体で必勝。 
  「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 
  「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 
  "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 
  「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 
  示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 
 絶対に避ける。 
8. 情報は小出しに。 

「エスパーきぼんぬ」 補足 
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 
そのような悪い質問に対して答えられるのは, 
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, 
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。 
まちがっても「エスパーの方,回答お願いします」 
なんて痛い質問するな。つうか氏ね。
5nobodyさん:05/03/03 22:46:04 ID:???
こんなもんかな?
補足ヨロ
6nobodyさん:05/03/04 01:00:13 ID:3xlEv0k9
PHP5のクラスの話なんですが、
下記のように、プロパティでpublic宣言してないものを、コンストラクトしても、別に問題ないのでしょうか?
一応、エラーは出ないのですが、気持ち悪いような気がして。。。
// クラス
class Category{
  // プロパティ
  public $aCategory;
// コンストラクタ
    function __construct()
    {
        global $g_hDB;
        while(1){
            $sSQL = "select * from category where categoryname = '" . $_REQUEST['categoryname'] . "'";
            $result = pg_exec ($g_hDB, $sSQL);
            $pg_num_rows = pg_num_rows($result);
            if ($pg_num_rows >= 1){
                $this->aCategory = pg_fetch_array ($result, 0, PGSQL_ASSOC);
                break;
            }
            else{
                $_REQUEST['categoryname'] = "top";
            }
        }
        //★★★↓ここが気持ち悪い・・・★★★
        foreach ($this->aCategory as $key => $val){
            $this->{$key} = $val;
        }
        unset($this->aCategory);
        
    }
(後略)
7nobodyさん:05/03/04 01:27:42 ID:???
>>6
おれとしては
>$_REQUEST['categoryname'] = "top";
ってスーパーグローバル変数に代入しちゃってるのがきもちわるい。
86:05/03/04 01:46:21 ID:???
>>7
ギク、そのとおり、あとでなおすつもりです・・・orz
9nobodyさん:05/03/04 09:10:17 ID:JryQONc+
ふと疑問に思ったのですが、ファイルに書き出すとき
桁数の制限ってあるんでしょうか?
変数に格納できる桁数の制限も知りたいです。
10nobodyさん:05/03/04 10:49:45 ID:???
めもりのつづくかぎり
11nobodyさん:05/03/04 11:39:10 ID:???
ハードディスク(外部記憶装置)の許す限り
1211:05/03/04 11:40:07 ID:???
あるいはquotaが許す限り
13nobodyさん:05/03/04 13:12:11 ID:???
かみさんが許す限り
14nobodyさん:05/03/04 13:24:43 ID:???
うちのかみさんがね、桁数の制限を気にするんですよ
15nobodyさん:05/03/04 13:49:05 ID:???
おまいの給料じゃ気にもなるさ
16nobodyさん:05/03/04 13:56:36 ID:???
>>9
よーしパパへそくりしちゃうぞー

$i=2;
while(1){
$i*=2;
echo$i,"\n";
if(is_infinite($i))break;
}
1711:05/03/04 15:18:36 ID:???
>>16
8.98846567431E+307
1.#INF
で終了しました(Win XP)
18nobodyさん:05/03/04 15:44:14 ID:???
8.98846567431E+307
INF
で終了。@32bitなLinux
19nobodyさん:05/03/04 16:29:47 ID:???
>>16
Fatal error: Call to undefined function: is_infinite()

自分には、かみさんがいませんから。
残念!
20nobodyさん:05/03/04 16:35:56 ID:???
8.98846567431E+307
妊婦

で終了。予定日:3月12日
21nobodyさん:05/03/04 18:28:58 ID:???
もっとまぶいコンピューター使ってる奴はいないのかよ。
22nobodyさん:05/03/06 03:31:13 ID:pz614Rae
phpスクリプトで unzipを実行したいのですができません。
具体的には、ブラウザでサーバー内ファイルの圧縮・解凍操作を行いたいと思っています。
どうすればよいのでしょうか?

【実際のテスト結果】

phpファイルと解凍したいファイルは同じフォルダ内で以下のようにすると・・・

<?php
echo system("pwd\n");
echo system("unzip file.zip\n");
?>
-->(phpファイルの置かれた場所がちゃんと表示される)
-->127
(unzipコマンドの返り値が”127”のみでで解凍されている様子はない)

<?php
echo system("echo hello\n");
?>
-->hello
(正常)

<?php
echo system("rm file.zip\n");
-->0
(正常に削除される)

【環境】
FreeBSD 4.7
PHP4.3.9(apacheのモジュールとして動作)
Apache/1.3.33
23nobodyさん:05/03/06 04:30:41 ID:???
apacheが動作しているユーザ/グループで、file.zipを操作できるかどうか
アクセス権限を確認しる。
24nobodyさん:05/03/06 04:37:48 ID:???
>>22
system('unzip file.zip 2>&1')

みたいにして標準エラーの内容を見る、とかしてみたら?
あとはエラーが127だからunzipがちゃんとパスの通った場所にあるのか確認
2522:05/03/06 05:19:00 ID:pz614Rae
>>23
答えになってないかもしれませんが・・・

とあるレンタルサーバーのVPSプランを利用しているんですが、ユーザー名を username とすると

phpinfo()で見る限り、apacheのユーザーと _SERVER["USER"] は usernameになっています。
sshで usernameでログインした場合、 unzip , zip ともに可能です。
念のためですが、 >>22 の 【実際のテスト結果】 はブラウザからのアクセスでの結果です。

>>24

> system('unzip file.zip 2>&1')
を実行すると 1127が帰ってきました。
googleで検索してるんですが検索の仕方が悪いのか このエラーの意味がわかりません。

unzipのパスについては、sshでログインした場合にunzipは可能なのですが、それとはまた違うのでしょうか?
26nobodyさん:05/03/06 05:48:59 ID:???
>>25
>unzipのパスについては、sshでログインした場合にunzipは可能なのですが、
>それとはまた違うのでしょうか?
違う。両方でwhoamiしてみ。
2722:05/03/06 08:33:52 ID:pz614Rae
>>23
>>24
>>26

感謝!解決しました!

実行権限、コマンドのパス、VPSであることあたりがからんでたようです。
(VPSがからんでるかは微妙ですが)

【結果報告】
whoamiも両方試すと ブラウザからはwhoamiができませんでした。
よく確認してみると、同じディレクトリでもブラウザからとSSHではpwdの出力が違うことに気づきました。
apacheで見えてない(ブラウザからのpwdでは見えてない)上位のディレクトリに whoamiとunzipの実行ファイル(?)があったのでそれをapacheで見えるディレクトリにコピーして、権限設定。
phpのsystemでそのコピーした実行ファイルのパスを指定したら、実行できました。

*表現がおかしいところがあると思いますが、そこはごめんなさい

皆様の助言のおかげで解決しました、ありがとうございました!
28nobodyさん:05/03/06 18:14:42 ID:pWV0LcHN
Flash用に読み取るファイルは
name=AAA&from=BBB&age=CCC
というようになっているのですが
これをPHPで各値を取得するために

$yomi = mb_split("&", $text);
for($i=0;$i<5;$i++){
if(mb_ereg("name=", $yomi[$i])) $ad_name = mb_ereg_replace("name=", "", $yomi[$i]);
if(mb_ereg("from=", $yomi[$i])) $ad_from = mb_ereg_replace("from=", "", $yomi[$i]);
if(mb_ereg("age=", $yomi[$i])) $ad_age = mb_ereg_replace("age=", "", $yomi[$i]);
}
というようにしてます・・
がこれだとスマートじゃないですよね・・

皆様はどうやっていますか?m(_ _ )m
29nobodyさん:05/03/06 21:45:58 ID:???
>>28
parse_str
30nobodyさん:05/03/06 23:18:40 ID:???
くだらない質問させてください。
if(ereg("[^._0-9A-Za-z]+", $_FILES['userfile']['name'][0])) {
と記述されている部分があるのですが、
この場合、「ハイフン」も含めるにはどう書けばいいでしょうか?
31nobodyさん:05/03/06 23:25:13 ID:???
すみません、スレ違いでした。
くだらない質問スレに行ってきます。
32nobodyさん:05/03/07 09:34:01 ID:???
require 'hoge.inc' ;

としたときに hoge.inc が自分のいるパスを知ることができますか?
33nobodyさん:05/03/07 11:46:58 ID:???
>>32
__FILE__。定数一覧は見ておけよ
3432:05/03/07 15:08:02 ID:???
>>33
希望通りの結果を得ることができました。

> 定数一覧は見ておけよ
見ときます。
35nobadyさん:05/03/07 15:33:31 ID:???
質問です。

session_start();
と記述した後に
header("Content-type: application/octet-stream;");
を使用したいのですが思うように使用できません。
ダウンロードダイアログが表示されるのですが、
"開く"を選択してもファイルを開くことができません。

sessionとheaderは同時には使用できないのでしょうか?
よろしくお願いします。
36nobodyさん:05/03/07 15:55:21 ID:???
保存はできるのか?
37nobodyさん:05/03/07 16:05:42 ID:???
なんだかよく分かりませんが、小さなスクリプトなら問題無く動きましたよ?
session_start();
if($_SESSION[go] == 'ok'){
 header("Content-type: application/octet-stream");
 print "session value is ".$_SESSION[go];
}else{
 $_SESSION[go] = 'ok';
 print "<a href='$_SERVER[PHP_SELF]'>a</a>";
}
38nobodyさん:05/03/07 16:34:18 ID:???
過去にhttps+session+IEでダウソ出来ないバグがあったなぁー。
39nobadyさん:05/03/07 16:38:54 ID:???
>>36
保存は正常にすることができました。
保存したファイルを開くこともできました。

>>37
session_start()で取得した情報に基づきファイルをreadfile()で出力し、
それらを保存、及び開こうとしているのですが、
session_start()を使用した後にheader()を使用すると
保存ができて、開くことができません。

session()とheader()はなにか相性が悪いのでしょうか?
ご教授いただきたいです。
40nobodyさん:05/03/07 16:46:42 ID:???
保存出来るってことはブラウザとかクライアントの環境依存の問題じゃん
PHP関係無い
41nobodyさん:05/03/07 16:56:01 ID:???
>>39
保存できるならそれでいいんじゃないのか?何のためにヘッダ吐いてるんだか
42nobodyさん:05/03/07 17:39:59 ID:???
>>35
マニュアルのheader()の項を読む。
session_start()時にどんなパケットが流れるか見てみる。
対策は確かマニュアルにあったと思うし、メーリングリストに回答がある。
43nobodyさん:05/03/07 23:17:18 ID:PL7b7WJg
OSはMeでxamppをインストールしてPHP4に切り替え使用しています。
PHPエディターを使ってWebサイトでの使用を目的としたPHPの勉強をしようとしているのですが、
文字コードについてよく判りません。

エディタでEUCを指定するとブラウザがISOの欧州フォントなどに切り替わり日本語部分が文字化けし、
Shift_JISで保存すると今度は自動的にEUCに変わり文字化けします。
動作確認をIE6.0とFirefox1.0で行っているのですがどちらも同様の反応が出ます。

PHPの保存時の文字とPHPをhtml内で表示させる場合のmeta内での文字コードなどはどのような関係になっているのでしょうか?
どなたか御教授お願いします。
44nobodyさん:05/03/07 23:29:30 ID:???
xamppのPHPは、SJISで書いたスクリプト処理には対応してないと思われ。
45nobodyさん:05/03/07 23:38:41 ID:???
>>43
PHPで文字エンコーディングを意識する必要があるのは3個所あって、
1. HTTP入力 - POST,GET等
2. 内部文字エンコーディング - スクリプト自体の文字エンコーディング
3. HTTP出力 - 結果の出力時の文字エンコーディング
詳しい内容は、ttp://www.php.net/manual/ja/ref.mbstring.php

その他に、apacheが付加するcharsetも関係してくる。AddDefaultCharset等。
46nobodyさん:05/03/08 00:08:13 ID:zgtI7JIE
>>44
>>45
回答有難うございます。
示されたリンク先を見ましたが、ISO-8859-*, EUC-JP, UTF-8の何れかで記述して、
php.iniを書き換えれば良いということなのでしょうか?
47nobodyさん:05/03/08 00:23:16 ID:???
>>46
その程度で思考回路を停止するならPHPと言えど
プログラミングに向いてなさそうだな。
48nobodyさん:05/03/08 01:05:36 ID:/emJr0GT
程度が低くてすみません。

以下の3行が書き込まれている test.txt
 あいうえお
 かきくけこ
 さしすせそ
からデータを読み出す際は、$data = file("text.txt"); で読み出せたのですが、末尾の改行が邪魔です。
Perl でいうところの、
 open(IN,"text.txt"); chomp(@data = <IN>); close(IN)
を実現しようとすれば、
 $fp = fopen("test.txt","r");
 while( ( $x = fgets($fp) ) ){
  $data[] = chop($x);
 }
とするしかないのでしょうか?
49nobodyさん:05/03/08 01:09:06 ID:???
Warning: などのエラーを表示させない方法はあるのでしょうか?
(エラーメッセージを画面に出さない)
50nobodyさん:05/03/08 01:09:15 ID:???
>>46
見て読んで理解しろ。(貴方の既存の知識量等により)場合によっては
理解には別の情報が必要かもしれん。その場合はまたWebとか本から入手。

答えのひとつとして
「理解できなければ、全部'EUC-JP'に統一する」
を挙げておく。
51nobodyさん:05/03/08 01:11:29 ID:???
>>49
くだ質レベル。display_errors
52nobodyさん:05/03/08 02:59:07 ID:???
>>48
$data = array_map('rtrim', file('test.txt'));
53nobodyさん:05/03/08 05:23:03 ID:???
5つのテキストフィールド($a〜$e)があり数値を入力し
submitで計算をさせるページを作っています。
cookie?などでこの$a〜$eを保存・読み込みをしたいのですが
(出来れば過去数回分を記憶してテキストフィールド以外の場所に表示させたい。)
php初心者で計算させるので精一杯で・・・
検索してもカウンターとかは見つかるんですがこういう手法がみつかりませんでした。
どのような記述で出来るのかご教授お願いします。
54nobodyさん:05/03/08 06:37:29 ID:???
プログラミング初心者でいい加減な回答が精一杯なんですがセッションってのを使うと簡単らしいです。
55nobodyさん:05/03/08 07:36:11 ID:???
>>54
セッションはブラウザ閉じると消えちゃうから。
56nobodyさん:05/03/08 07:55:52 ID:???
cookieを使いたいなら、setcookie()使えばええんでないの?
マニュアルには使い方の例も結構載ってるので悩むことは無いかと。
ttp://jp2.php.net/manual/ja/function.setcookie.php
5728:05/03/08 13:05:07 ID:QMVO20O7
>>29
返答遅くなってすいません。
そんな便利なコマンドがあったなんて・・有難う御座いますm(_ _)m
58nobodyさん:05/03/09 01:11:34 ID:???
PHP4.3.10 MySQL 4.0.21です。
id,name
1,a born
MySQLに以上のデータが入っているとして、
$sql="select * from hoge where id=1";
$result=$db->query($sql);
$row=$result->fetchRow(DB_FETCHMODE_ASSOC);
でデータを呼び出すと、name列がaしか出てきません。
半角スペース以降も認識させる方法を教えてください。
必要な情報があれば出しますので!
59nobodyさん:05/03/09 01:29:35 ID:???
>>28
関数です。
6058:05/03/09 01:35:32 ID:???
ごめんなさい、>58の修正レスです。
×でデータを呼び出すと、name列がaしか出てきません。
○でデータを呼び出すと、name列が正しく出てきますが、フォームのtextエリアに入れるとaしか出てきません。

でした。ごめんなさい。よろしくお願いします。
61nobodyさん:05/03/09 02:01:08 ID:???
こんなことになってる予感
<input type=text value=a born>
62nobodyさん:05/03/09 02:24:45 ID:???
そこでW3C信者の勝利ですよ。
63nobodyさん:05/03/09 02:32:54 ID:???
>61
その通りでしあ
<input type=text size=50 name=\"name\" value=\"",$row["name"],"\">
ダブルクォーテーションで囲えば正しくフォーム部分にも出てきました。
でもこれで正解なんです?なんか野暮ったい気もするんですが
64nobodyさん:05/03/09 10:05:24 ID:???
>>61
エスパー級の回答だな。すげーよ。
65nobodyさん:05/03/09 10:29:04 ID:???
RSSのUTF-8で「&」が入るとエラーになってしまうのですが、
&を使用する事はできないのでしょうか?

<link>http://〜/a.php?abc=1&def=b</link>
66nobodyさん:05/03/09 10:39:24 ID:???
& は実体参照の開始とみなされるので
& そのものを書くなら & と書かなければならない。
これは HTML でも同じ事
6766:05/03/09 10:40:39 ID:???
>>66
& そのものを書くなら &amp; と、ね。
……&amp; が解釈されてしまったよ。
6865:05/03/09 10:42:13 ID:???
>>66
あ、そうですよね。失礼しました。
細工をするならリーダーの方で行うしかないのでしょうか?。
また、RSSで&を使用する事はモラル違反とはならないのでしょうか?。
6965:05/03/09 10:43:32 ID:???
私も&は考えたのですが&自体含まれていますよね;。
どうにもならないのでしょうか。
7065:05/03/09 10:47:44 ID:???
今、試してみたら&は使えるのですね
ありがとうございますm(_)m
&が見えると先入観が^^;;
71nobodyさん:05/03/09 12:44:45 ID:???
&amp; と表記したいときは &amp;amp; と書きませう
72nobodyさん:05/03/09 12:48:45 ID:???
&amp;amp;
7311:05/03/09 13:14:22 ID:???
>>71
じゃあ&amp;amp;と書きたいときは&amp;amp;amp;ですね
74nobodyさん:05/03/09 13:15:44 ID:???
>>66-70
ちっと餅付け。わけがわからん
75nobodyさん:05/03/09 13:18:58 ID:???
機種依存文字にマッチする正規表現を知りたいのですが、
Perlの正規表現で有名なサイト(Perlメモ)にある正規表現を
preg_match で使用したところ、

Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset

と怒られてしまいました。
内容から察するに、preg_match でサポートしていない
正規表現だったためのエラーだと思うんですが、
どなたかPHPで動くものをご存知の方いらっしゃいますでしょうか?

文字コードはEUCを想定しています。
7611:05/03/09 13:39:10 ID:???
>>75
多分 \X -> \x
7775:05/03/09 17:36:34 ID:???
>>76

有難うございます。
\X を \x にしたところ、
Compilation failed: nothing to repeat at offset
という警告が出ました。

正規表現中のグループ化のカッコ(?: 〜 )
を外したところ、警告はなくなったのですが、
正常な文字でもひっかかるようになってしまいました。。
78nobodyさん:05/03/10 10:51:45 ID:BLVfW5EX
フォームから送信したデータが「表示」が「表¥示」に化けてしまいます。
今はstripslashesで¥を取り除いて処理しています。
ただサーバによっては文字化けしないので、stripslashesを使うと逆に文字化けするので、
stripslashesを使うのはちょっと怖いです。
これって正しいやり方なんでしょうか?ほかになにかいい方法があるのでしょうか?
よろしくお願いします。
79nobodyさん:05/03/10 10:55:42 ID:???
>>78
magic_quotes_gpcのOn/Offを見てから処理をする。
get_magic_quotes_gpc();
8078:05/03/10 11:21:56 ID:???
>>79
有難うございます。ということは

function convert($str){
$result = htmlspecialchars($str);
if(get_magic_quotes_gpc()) {
$result = stripslashes($result);
}
return $result;
}

こんな感じでよろしいんですよね。
81nobodyさん:05/03/10 16:07:59 ID:???
mojavi解凍するとディレクトリの中にwebapp.newとか
.newというバイナリが入っているんだけど、これは
何なんでしょうか。
82nobadyさん:05/03/10 16:17:18 ID:???
質問です。


<?php
$fp = fopen("log.dat", "a");
fseek($fp, 0);
flock($fp, LOCK_EX);
fwrite($fp, "xxxxx");
flock($fp, LOCK_UN);
fclose($fp);

?>


とやると、ファイルの最後に文字列が追記されていきます。
ファイルオープンモードを"a"で開いて、ファイルの最後ではなく、
最初に文字列を追記することはできますか?
83nobodyさん:05/03/10 16:40:11 ID:???
>>81
バージョン管理用のゴミか差分じゃないかなぁ。
削除して問題ないですよ。

>>82
関数1つではできませんので、そういう処理をするロジックを書いてください。
84nobodyさん:05/03/10 16:57:22 ID:tcK+MKqw
質問です。

dbから一定時間経っても反応が無いとき(例えば5秒)、
タイムアウトさせる方法ってどうやるのでしょうか??
85nobodyさん:05/03/10 17:12:06 ID:krxtmGDV
includeを使う際に
もとになるファイルの拡張子は
incでもhtmlでも何でもいいですよね?
この中で、この拡張子だと他のよりも読み込みが早い!
なんてのはないですか?
86nobodyさん:05/03/10 17:37:08 ID:???
マニュアル読んだのか?
87nobodyさん:05/03/10 17:47:38 ID:???
世の中にはいろんな考えがあるもんだ。感心する。
「ファイルネームによって読み込みの速度が違うのではないか?」
なんて、頭が固い私には全く思いつかなかった。
88nobodyさん:05/03/10 18:44:56 ID:???
>>87
「a01」
というファイル名と
「a000000000000000000000000000000000000〜0000000000000000000000001」
というファイル名ではスクリプト全体としての速度は違うかもよ。
読み込み自体は変わらんと思うけど。
89nobodyさん:05/03/10 19:13:10 ID:???
>>84
そのデータベースアクセス関数にタイムアウトが
実装されてないとやりようがないんじゃないかな。
90nobodyさん:05/03/10 19:15:55 ID:???
おいおい、ファイル名で速度が違うと言うのは常識だろw
まさかそんな大事なことを無視してDBの使い方に終始してんじゃねーだろうな
91nobodyさん:05/03/10 23:22:12 ID:???
ttp://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-php.html
を参考に XML-RPC を勉強してます。
例のように渡す値は 2 つだけ、と固定の場合は分かりましたが、
渡す値が可変の場合はどうしたらいいでしょうか?

例えば、果物の名前と個数を複数個渡す、という場合です。
92nobodyさん:05/03/10 23:54:48 ID:???
>>88
読み込み速度はどうだか知らんが、
メンテナンスは確実に時間が増す。
93nobodyさん:05/03/11 00:36:54 ID:???
ファイル名に関してはディレクトリエントリの状況や
ディレクトリエントリキャッシュあたりのような
偶然に左右される要素が影響してくるので、
キニスルナつーか気にしてもどうしようも無いって感じだろうね。

元質の話に戻ると、
拡張子は何でもいい、つーか拡張子が無くてもいい、
PHPの中の人はそのファイルに<?phpがあるかどうかだけ気にしている。
つー所でいいんでなかろうか?
94nobodyさん:05/03/11 03:33:23 ID:???
http://script.lovely.to/bbs/infolng.cgi?print+200205/02050004.txt
ここを参考に機種依存文字を判定するFunctionを作っているのですが、
どうしても機種依存文字以外の文字も検出してしまいます。

$str = '文字列';
if (is_kisyu_sjis($str)) {
print "true";
} else {
print "false";
}
function is_kisyu_sjis($str) {
$ascii = '[\x00-\x7F]';
$sjis_twoBytes = '[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]';
$sjis_pattern='[\xA0-\xDF]|[\x87\xED\xEE\xFA-\xFC][\x40-\x7E\x80-\xFC]';
if (preg_match("/(($ascii|$sjis_twoBytes)*?)($sjis_pattern)/", $str)) {
return true;
}else {
return false;
}
}
正規表現がマズってますかね?
95nobodyさん:05/03/11 22:42:09 ID:???
なんで()で括ってるの?
96nobodyさん:05/03/11 23:43:35 ID:???
| の優先順位を明示したいだけでしょ

つか、正規表現はスレ違いかと
97nobodyさん:05/03/12 00:44:49 ID:???
テスト用に用いている文字列はほんとにSJISなのかと。
9894:05/03/12 16:03:01 ID:???
もうちっとがんばってみます。
検索ですか・・
99nobodyさん:05/03/12 23:00:23 ID:???
正規表現スレってテンプレ入れてもいいと思うんだけど
現スレまでに入って無いのって何か理由あったっけ?

とりあえず
正規表現道場@2ch Part4
http://pc5.2ch.net/test/read.cgi/php/1105930285/
100nobodyさん:05/03/13 04:53:03 ID:???
xml/xsl 変換後のエンコード指定がうまく動いてくれません。
PHP Version 4.3.10
EXPAT Version 1.95.6
XSLT support enabled
Sablotron Version 1.0.1

$data = xslt_process($xslt, $xml, $xsl, NULL);
上記からコンバートはできるのですが、書き出されたhtmlの
文字コードがutf-8になってくれません。

xslt_set_encoding($xslt, "UTF-8");
と指定すると、
Fatal error: Call to undefined function: xslt_set_encoding()
となりおかしいです。
PHP 4.3.10ではxslt_set_encoding()が使えると思うのですが。
101nobodyさん:05/03/13 05:22:51 ID:???
こっちのPHP 4.3.10(FreeBSDのportsでインスコ)では、
Fatal error: Call to undefined function: xslt_set_encoding()
にならなかった。何が違うだろ。
102nobodyさん:05/03/13 05:24:36 ID:???
>>101
redhat9 sourceからです。
103nobodyさん:05/03/13 07:23:25 ID:???
ext\xslt\sablot.c の中で
|#ifdef HAVE_SABLOT_SET_ENCODING
|PHP_FE(xslt_set_encoding, NULL)
|#endif
みたいになってるし、マニュアルには
|Sablotronバックエンドを使用する際、このオプションは
|Sablotronにエンコーディングサポートを付けて
|コンパイルした場合のみ利用可能です。
とあるよ。xslt使ったこと無いから具体的にどうするのか知らないが。
104nobodyさん:05/03/13 07:30:56 ID:???
あとext\xslt\sablot.c のxslt_set_encoding関数のところに
こんなコメントも付いてた。
|The user has to explicitly compile sablotron with sablotron encoding functions
|in order for SablotSetEncoding to be enabled. config.m4 automatically checks for this...
105nobodyさん:05/03/13 12:46:53 ID:owz6Nafx
menu.phpというのを作成して、
includeを利用して、メニューを埋め込むようにしたんですが、
階層が変わると、menu.php内に書かれたリンクが相対パスでは
上手くいかなくなるんですが、
絶対パス以外でなんか良い方法はありますか?
106nobodyさん:05/03/13 13:08:42 ID:IhUUdOoo
・各種項目を設定している「a.php」
・実際の動作を司っている「b.php」

という2つのファイルがあります。

b.phpはinclude("a.php");でa.phpの設定を受け継いでいます。
そのb.phpで出力された変数「$2ch」をa.phpで使うにはどうすればいいでしょうか。
107nobodyさん:05/03/13 13:11:58 ID:???
1文字目が数字の変数は使えませんよ。
108nobodyさん:05/03/13 13:17:23 ID:???
>>105
詳しく

>>106
b.phpで「出力された」変数 ですか?
returnを使えば値を返せることは返せますが。。
109nobodyさん:05/03/13 13:32:40 ID:j3cG5KiD
110nobodyさん:05/03/13 13:49:30 ID:???
>>109 板違い
111106:05/03/13 13:51:11 ID:???
>>107
変に例を作ったのが墓穴を掘りました。実際には文字から始めてます。

>>108
すいません忘れてください。
変数に変数を代入することは可能でしょうか?

例)

<form>

-略-

<input type=text name=yyyyy value=>

</form>

$zzzz = "<a href=$yyyyy>";

というように。
112105:05/03/13 14:02:04 ID:4ktgufgk
>>108
menu.phpにサイトマップやヘルプなどへのリンクを張って
includeを使用して、全ファイルで共有したいのですが、

サイトマップなどへのリンクを相対パスで記述した場合、
フォルダの階層が変わると、上手くいきません。

menu.phpのincludeは
<?include($_SERVER['DOCUMENT_ROOT'] . 'menu.php') ?>
を使用して、階層が変わっても対処できたんですが、
同じような感じでmenu.php内のリンクに対しても対処方法はないでしょうか?
113nobodyさん:05/03/13 14:13:13 ID:???
>>112
・htmlでbase要素を用いる
・メニュー内のリンクを/からのパスにする
・menu.phpに相対パスを計算させる
114105:05/03/13 14:29:21 ID:4ktgufgk
>>113
menu.phpに相対パスを計算させる
とはどういう事ですか?
115nobodyさん:05/03/13 14:39:11 ID:???
>>114
REQUEST_URIから各リンク先への相対パスを求め、リンクに埋め込む。
116105:05/03/13 14:45:16 ID:???
>>115
base要素でできました。
ありがとうございます。
あと、お手数ですがその方法をもう少し詳しく教えて欲しいのですが。
117nobodyさん:05/03/13 16:16:46 ID:???
>>116
お手数過ぎるからヤダ
118105:05/03/13 19:08:02 ID:???
>>117
そうですか^
まーでも目的は果たせたので、
いずれにせよ、ありがとうございました!
119100:05/03/13 19:14:17 ID:???
configureにSablotSetEncodingを
どうやって指定するのでしょうか。
--with-xslt-sablot以外になさそうなのですが。
./configureの中身は読んでみましたがさっぱりでした。
120nobodyさん:05/03/13 21:02:24 ID:???
>>119
読むのならむしろ libsablotron の configure とか /usr/include/sablot.h かと。
121nobodyさん:05/03/13 21:15:58 ID:???
>>119
だからexpatはともかく、sablotは使っとらんので知らんがな。

>--with-xslt-sablot以外になさそう
それはPHPのconfigureオプションであって、PHPで該当するオプションは
sablotの設定を見て自動で設定するからいらない。
コメントで書いてあるのは、それ故「必要ならsablotの設定をちゃんとしろ」ってこと。
122100:05/03/14 03:18:42 ID:???
Sablotにencoding関係の configure オプションは
ないみたいです。
gingerall にいったら、新しい1.0.2が出てたのでそれをインスコ中
123100:05/03/14 05:32:21 ID:???
先生だめでつ。
http://bugs.php.net/bug.php?id=21427
これを参考にしたんですけど。

●Sablot-1.0.2
$ ./configure --with-expat=/usr/local --with-iconv=/usr/local

●php-4.3.10
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-zend-multibyte \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-zlib-dir=/usr/lib \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-xml \
--with-dom=/usr/local \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-iconv-dir=/usr/local \
--with-expat-dir=/usr/local

expatとiconvのインストールディレクトリ合わせてるんですけど
だめなんですよ。
124nobodyさん:05/03/15 02:58:15 ID:hZ3yLB9y
質問です。
携帯で着メロのダウンロードサイトを作成しているのですが、
開発環境のWindows版ではうまく動作するのですが、
本番環境のLinux版ではダウンロードしようとするとで502エラーを返してきます

fopen(ファイル)
fput(ファイルの中身吐き出し)
fclose

って方法で接続端末に着メロを出力しているのですが、
なぜかうまくいきません。
502エラーってことはApacheの設定が悪いのでしょうか?
そして、対処法はどのようにすればよろしいでしょうか?
125nobodyさん:05/03/15 06:41:46 ID:???
>>124
ケータイにダウンロードさせるなら、適切なContent-Type吐いてechoしてはどうだろう?
126nobodyさん:05/03/15 12:43:52 ID:???
>>124
着信音については
Content-Type
拡張子
HTTPリクエストの末尾
に注意する必要がある
127nobodyさん:05/03/15 21:24:22 ID:???
description attachmentって携帯で使えないのかな?
128nobodyさん:05/03/16 22:49:46 ID:???
一時間に一回自動でデータベースから情報を読み込みファイルを出力したいのですがどのように考えればいいですか?
00分になりアクセスがあったらファイルを出力し次の00分になるまで出力はなし。見たいな考え方でいいですか?
この考え方だと一回もアクセスがないと出力されないことになりますが、何か便利な関数があるんですか?
129nobodyさん:05/03/16 23:10:09 ID:???
定期的に実行しなければならないなら、OS側が提供しているcronやtask scheduler。
これが使えないようなら、データ投入時や表示時になんとかするしかない。
表示時(アクセス時)に必要なデータをかき集められるものなら、表示時に時間をチェックして誤魔化す。
データ投入時にあらかじめページを作成しておいて、表示時の時間チェックと組み合わせるのもありだな。

実行環境ややりたい事が分からんことには、可能か不可能かさえも分からんよ。
130nobodyさん:05/03/16 23:49:33 ID:???
イメージ関数について質問です。
背景が透過gifな画像をリサイズした場合に透過ではなくなるのですが、
これを透過のままリサイズ出来ないのでしょうか?。
出来るのであれば参考になるサイトまたは方法を教えてください。
131nobodyさん:05/03/17 10:53:09 ID:???
>>128
基本は、>>129が言うように、OSの自動処理を使う。
連鯖などでcrontabが使えない場合、いかにしてトリガを引くか、それを考える。

・WEBアクセスの際に前回処理時間と比較しトリガ発生→アクセス無ければ無意味
・自宅のPCのタスクスケージュラや、DiCE等で定期的にトリガプログラムへアクセス →PC付けっぱなし必須
・携帯電話などで自分でトリガプログラムに定期的にアクセス → 鬱陶しい、眠れない、パケ代かさむ

さぁ、どれにする?
132128:05/03/17 11:48:17 ID:???
ありがとん
リナックスのことワカメだから本買ってしらべてみます
133nobodyさん:05/03/17 15:28:44 ID:???
cronが楽だが使えないとなれば、>>131の書いてる3つの内の2つ目が一番一般的かな?
134nobodyさん:05/03/17 17:42:24 ID:???
>>130
こんな感じ。フルカラーじゃないから汚いけど。

$src_info = getimagesize ($src_path);
$src_image = imagecreatefromgif ($src_path);
$dst_image = imagecreate ($dst_width, $dst_height);
$trans = imagecolortransparent ($src_image);
if ($trans) {
 imagepalettecopy ($dst_image, $src_image);
 imagefill ($dst_image, 0, 0, $trans);
 imagecolortransparent ($dst_image, $trans);
}
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $dst_width, $dst_height, $src_info[0], $src_info[1]);
imagegif ($dst_image, $dst_path);
135128:05/03/17 18:11:56 ID:???
すまんポコやっぱりわからないや

使ってるサーバーがカゴヤなんだけど
cron設定はノーサポートでおしえてくれないや
自分なりに考えてみたんだけど
カゴヤ管理画面のCRON設定 で
*/1 * * * * /home/カゴヤアカウント/public_html/count.php
のみ入力してみたんだけどでなにがちがうんですかね?
/bin/sh: /home/カゴヤアカウント/public_html/count.php: cannot execute binary file
ってなのがメールで送られてくるんだけど
エロイ人教えてください
136nobodyさん:05/03/17 18:24:21 ID:???
>>135
エロくはないけど、
たぶん、
*/1 * * * * php /home/カゴヤアカウント/public_html/count.php
だろうね。
それでもエラーが出るようなら、phpのパスを調べれ。・
137128:05/03/17 18:41:56 ID:???
だめぽよ
/bin/sh: php: command not found
のエラーのメールがきますわ
count.phpのパーミッソンハ705
中身は
<?/* シンプルカウンタ by ToR tp://php.s3.to 2000/10/18 */
$fp = @fopen("count.txt","r+") or die("ファイルが開けません");
$count = fgets($fp, 64);
$count++;
rewind($fp);//set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
fputs($fp, $count);
fclose($fp);echo $count;?>
何がちがうんですかね?
138nobodyさん:05/03/17 18:45:35 ID:???
>>137
>>136 wrote
> それでもエラーが出るようなら、phpのパスを調べれ
環境変数、特にコマンドの検索場所を指すPATHが違う。
139nobodyさん:05/03/17 18:53:46 ID:???
>>137
CLI用PHPへのパスは?
1行目に
#!/usr/local/bin/php
とか書いてる?
140nobodyさん:05/03/17 18:58:22 ID:???
>>137
ttp://www.kagoya.net/cgi/
の、「コマンドパス」項目を穴が開くほど睨んでみ。
141128:05/03/17 19:10:27 ID:???
おまいらすげー
できたよありがとうぅ
こんなん何処でおしえてもらうん?
専門学校かね?
んまありがとー
142130:05/03/17 19:11:49 ID:???
>>134
ありがとうございます。
imagecolortransparent()の返り値が0の場合があるのでif ($trans) {の分岐を外して
実行しているのですが、返り値が0以外の場合には透過になりません。

$trans = imagecolortransparent ($src_image);
imagepalettecopy ($dst_image, $src_image);
imagefill ($dst_image, 0, 0, $trans);
imagecolortransparent ($dst_image, $trans);

パレットをコピーし透過になる色で塗りつぶし、その色を透過に指定しているので
正しく透過出来そうだと想うのですが、これはフルカラーではないという所が問題
なのでしょうか?。
imagecreatetruecolor()で作成した場合は正しく利用できないのでしょうか。

塗りつぶしをしているので問題がある場合もありそうですが、とりあえず
$trans = 0で指定しています。
143nobodyさん:05/03/17 19:52:29 ID:???
自宅サーバ上での質問です。

AnHttpDでISAPI経由でPHPを動かしているのですが
ISAPIだと設置した掲示板やチャット等で、IPやHOSTの情報を取得してくれません。
CGI経由だと取得してくれるのですが、この問題を解決する方法はありますか?

■バージョン
PHP 5.0.3
AnHttpD1.42n
144nobodyさん:05/03/17 20:22:09 ID:???
>>143
PHPのバージョンを変えてみるという手がある。
が、「問題を解決する方法」としては選択しづらいだろうね。

つか、なんでバージョンでその辺が変わるのかねぇ>PHP
サーバ側とのAPIが変わってるわけでもないのに。
145143:05/03/17 20:25:16 ID:???
>>144
スクリプト上で取得の方法を変えたら出来ました。
(前)$ip = getenv("REMOTE_ADDR");
(後)$ip = $_SERVER["REMOTE_ADDR"];

お騒がせしますた(;´д`)
146nobodyさん:05/03/17 20:36:26 ID:???
>>128
はてなあんてな使う手もある。
147nobodyさん:05/03/17 21:12:04 ID:PAcs7vRb
open_basedir を設定している状態で、
require_once('../main.inc');

と相対パスで一つ上を指定したいんだけど、open_basedirをどう設定すればいい?
148nobodyさん:05/03/17 21:12:14 ID:???
>>145
ちゃんとマニュアルに
getenv
注意: この関数は、ISAPIモードでは動作しません。
書いてあるじゃん
149nobodyさん:05/03/18 03:12:21 ID:???
>>143-4は池沼
150nobodyさん:05/03/18 10:44:51 ID:0xXwO3mo
formからpostされた値を、改行コードを統一してから
AUTO指定でEUCに変換すると

preg_replace("/(\r\n|\r)/","\n",$str);
$str = mb_convert_encoding($str,"EUC","AUTO");

毎回ではないのだが、頻繁にエンコードに失敗するのですが
Warning: mb_convert_encoding(): Unable to detect character encoding in hoge.php on line ○○

何故?改行コードでエンコードの判断してるの?
エンコードしてから改行コードの変換をすれば良いって問題なんかな?

formはSJISで、PHPのバージョンは4.3.4です。
151nobodyさん:05/03/18 11:00:56 ID:???
おまいら!
SJISでスクリプト掻いてますか
EUCですか?
152nobodyさん:05/03/18 11:27:32 ID:???
>>151
外に出す時はUTF-8
普段はASCII
153nobodyさん:05/03/18 11:44:31 ID:???
>>150
formがSJISならSJISで来る確率が高かろうから'auto'じゃなくて
'SJIS, EUC-JP, UTF-8, JIS, ASCII'とでも指定してみれば

私はhiddenに判定文字列入れてmb_detect_encodingやってるけども
154nobodyさん:05/03/18 11:50:37 ID:???
>>152
外に出すときは生
普段は極薄
155nobodyさん:05/03/18 12:23:49 ID:???
>>153
ありがとう、AUTOやめてSJISの優先度上げたら落ち着いたよ
156nobodyさん:05/03/18 14:09:11 ID:???
E・U・C!E・U・C!
157nobodyさん:05/03/18 15:47:30 ID:H8eZrdKt
.htaccessで

ErrorDocument 404 /404.php

として404をPHPに飛ばしてるのですが
このPHPで本来どこにアクセスされたのかを
知ることってできますか?


158nobodyさん:05/03/18 16:06:59 ID:???
$_ENV["REQUEST_URI"] かな
159157:05/03/18 16:44:12 ID:???
>>158
あ、ありがとうございます
$_SERVERで試してました。。。orz
160nobodyさん:05/03/18 17:05:03 ID:???
$_SERVERでも問題ないと思うが
161157:05/03/18 17:08:04 ID:???
>>160
あれ? ほんとだ・・・
なんか全然関係ないとこで勘違いしてたみたいです。
たいへん失礼しました
162nobodyさん:05/03/19 00:12:12 ID:???
質問です。
ファイルの行数を取得したいのですが、
極力負荷を低くやりたいです。
ファイルのサイズはデカくて、
1行の文字数は不定なのですが
なにかウマい方法はないでしょうか?
163nobodyさん:05/03/19 00:34:00 ID:???
>>162
wc。要するにバイナリーとしてファイルを舐めて[改行]の数をカウント
164nobodyさん:05/03/19 00:53:10 ID:???
fileで読み込んでcountで参照って手も。
165nobodyさん:05/03/19 00:57:40 ID:???
ありがとうございます。

>>163
す、すみません…
バイナリは扱ったことがないので分からないのですが
もう少し詳しく教えていただけませんか?

>>164
ファイルがかなりデカいので、fileで読み込むと悲惨なことになりそうです…
166nobodyさん:05/03/19 00:58:41 ID:???
>>165
まず試せ。
wcはUNIX系OSのシステムコマンド。
167nobodyさん:05/03/19 01:00:14 ID:???
え、、と…
PHPでできないと少々具合が悪いのですが…
168nobodyさん:05/03/19 01:04:41 ID:???
>>167
fileで読み込む以外不可能だとおもうよ。
悲惨なことになったらまたおいで。
169nobodyさん:05/03/19 01:05:17 ID:???
>>168
わかりました…
どうもありがとうございます、試してみますね(。・ω・。)ノ
170nobodyさん:05/03/19 01:06:21 ID:???
>>167
でかいってどれくらい?
具体的な数字をどうぞ。サイズと行数くらいかな?
あと平均カラム数も。
171nobodyさん:05/03/19 01:11:39 ID:???
>>167
あとファイルで使ってる文字コードも。
172nobodyさん:05/03/19 01:14:24 ID:???
>>170
7万行くらいで、50MBくらいです。
文字コードはSJISです
173nobodyさん:05/03/19 01:18:16 ID:???
fopenしてfgetsを繰り返して(取った内容は棄て)カウントでもいいと思うよ。
1行がよっぽど長くなければメモリも食わん。
174nobodyさん:05/03/19 01:21:03 ID:???
>>173
なるほど!!
そうすれば効率的ですね。
どうもありがとうございました<(_ _)>
175nobodyさん:05/03/19 07:56:37 ID:???
>そうすれば効率的ですね。


∠( ゚д゚)/「え?」


釣りですかそうですか
λ..........
176nobodyさん:05/03/19 08:27:15 ID:???
>>169
>>168みたいなうそつきの言うことは聞かないで
<?php
$file = 'C:\Program Files\Apache Group\Apache2\logs\access.log';
$fp = fopen($file, "r");
$count = 0;
while(!feof ($fp)) {
if ($line = fgets($fp) and substr($line, -1) == "\n") $count++;
}
fclose($fp);
echo $file."の行数は".$count."です";
?>
最後の行に改行が無いと1行少なくなる
177nobodyさん:05/03/19 10:32:13 ID:???
たぶんちょー基本的な質問なんだけど、
ここに出て来る @ ってなに?

$fp = @fopen($file, "w");
$write = @fputs($fp, $contents);
@fclose($fp);
178nobodyさん:05/03/19 10:41:48 ID:???
そのまま$fileの部分を$filesにして試してみ
@があるとないの違いがわかる。
179177:05/03/19 10:45:34 ID:???
ttp://us2.php.net/manual/ja/function.fopen.php
で見つけたけど、warning を出さなくする修飾子ってこと?
180にーchan:05/03/19 10:54:51 ID:XBx83jBt
phpにてメールを送信するプログラムで送信テストをしているのですが
Warning: mb_send_mail(): Failed to connect to mailserver at "192.168.11.100" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\home\mail\a.php on line 10
とエラーが出てしまいます。
portはwebで開いているか確認できるページで確認したら開いてました。
php.iniでもsmtp_port = 25と記述もしてみたのですがだめでした。
php.iniのSMTPをniftyのSMTPサーバー名にしても同じく・・・
他に考えられる原因は何があるでしょうか?
181nobodyさん:05/03/19 11:21:46 ID:???
>180
・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
のどちらか。
182nobodyさん:05/03/19 11:40:40 ID:???
>>180
>portはwebで開いているか確認できるページで確認したら開いてました。
例示がローカルアドレスなのに、webでのチェッカーで確認したというのが怪しい。
183にーchan:05/03/19 12:06:15 ID:???
>181
・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
とはメールサーバを立てているのですがそれの設定が違ってるってことでしょうか?

>182
外部へポートが開いていた場合でもローカルは閉じている場合はあるのでしょうか?
184nobodyさん:05/03/19 12:07:10 ID:0sO4bGN4
php の error log に任意を文字列を出力する方法ってある??
185nobodyさん:05/03/19 12:19:00 ID:???
>>184
使ったことないけど、trigger_error()あたり。
186nobodyさん:05/03/19 12:40:14 ID:???
>>184
マニュアルの
XXX. エラー処理およびログ記録関数
187nobodyさん:05/03/19 14:05:22 ID:oXb2sDzY
個人情報だのパスワードだのって、暗号化とかしてる?
暗号化してDBに保存、読み出して複合化とかしたいんだけどPHP中やDBに複合化の
Keyとかプレーンで書いておいたら意味が無いかとも思うしかといってKey暗号化しておいたら
Keyの複合化どーすんのよっつーか
188nobodyさん:05/03/19 14:12:54 ID:???
復号しなくていいようにすればいいじゃない
189nobodyさん:05/03/19 14:20:54 ID:oXb2sDzY
>>188
比較だけなら暗号化したもの同士で行えば良いんだろうけど
例えば会員がパスワード忘れて問い合わせてきた場合は?
もっかい登録しなおせって訳にもいかないだろうし、個人情報についても
保護法絡みで共有サーバなんかの場合暗号化しときたいんだけど
190nobodyさん:05/03/19 16:04:52 ID:???
>>189
もう一回登録させるのに何か問題でも?
191nobodyさん:05/03/19 17:43:17 ID:???
>>189
そういう時は、自動生成したパスワードを再発行してやり変更が必要ならそっちで勝手に変えてね
とすればよい。
192nobodyさん:05/03/19 18:21:51 ID:Mh3YU28A
ISAPIでHTTP_REFERERとHTTP_USER_AGENTが取得出来ないんですが
なぜでしょう?
193nobodyさん:05/03/19 18:35:39 ID:???
>>192
基本的には通常通りサーバが吐いてれば取れるはずだが、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/21b3be8f-d4ed-4059-8e21-6cba2c253006.asp
AN-httpdとISAPI版PHPとではバージョン違いの組み合わせで
取れたり取れなかったしてた時があったな。
CGI版だと取れたり。
194nobodyさん:05/03/19 18:37:27 ID:???
>>192
anhttpdだろ?
作者に聞け
195nobodyさん:05/03/20 03:54:17 ID:34HEFa63
FAQがなかったのでよくある質問っぽいんですが書きます。

Ver.4.3.10を使っていてphpinfoをみると
--enable-mbstring=shared
という一文があるのですが、mb_string系の関数がundifinedといわれて困っています。

どうすればmb_string系の関数を使用できるのでしょうか?
196nobodyさん:05/03/20 04:12:49 ID:???
>>195
たぶん dl()
197nobodyさん:05/03/20 04:21:53 ID:34HEFa63
>>196
ちょっと意味がわからないのですがどういう意味でしょう?
198nobodyさん:05/03/20 04:28:43 ID:???
>>197
関数を使って動的にロードしろってことだろ。
199nobodyさん:05/03/20 04:32:48 ID:34HEFa63
>>198なるほど。
ちなみにロードするファイル名は何でしょうか?
教えて君ですいません
200nobodyさん:05/03/20 05:39:18 ID:???
>>199
すみません、マニュアルって知ってますか?
201nobodyさん:05/03/20 05:45:12 ID:???
>>199
http://jp2.php.net/manual/ja/function.dl.php

*mbstring*なファイル名。最もmbstringはdlできたんだっけ?
202nobodyさん:05/03/20 17:42:42 ID:???
みかんと林檎と梨の値段を計算するプログラムを作ってみようと試みています。
最初にチェックボックス形式でチェックした品名だけをドロップダウンリスト形式で表示させ
ドロップダウンリストから選択した品名の個数を入力して値段を計算させる、という感じで作ろうとしています。
↓-----index.phpの一部-----↓
<form method="POST" action="test.php">
<input type="checkbox" name="check[]" value="みかん">みかん<br>
<input type="checkbox" name="check[]" value="林檎">林檎<br>
<input type="checkbox" name="check[]" value="梨">梨<br>
<input type="submit" value="OK">
↑----------↑
↓--test.phpの一部--↓
echo "<form method=POST action=" . {$_SERVER['PHP_SELF']} . ">\n";
echo "<select name=name>\n";
for( $i=0; $i<count($_POST['check']); $i++) {
echo " <option value=$_POST['check'][$i]>$_POST['check'][$i]\n";
}
echo "</select><br>\n";
echo "個数:<input type=text size=6 name=pieces value=" . {$_POST['pieces']} . ">\n";
echo "<input type=submit value=計算>\n";
echo "</form>\n";
↑----------↑

ドロップダウンリストから選択して計算までは出来るのですが、
計算を実行したあとドロップダウンリストの中身が空っぽになってしまいます。
このドロップダウンリストの中身を保持して欲しいのですが、どの様にすればよいのでしょうか?
203nobodyさん:05/03/20 17:58:06 ID:???
>>202
> ドロップダウンリストから選択して計算までは出来るのですが
いや、どうみても出来てないっしょ、そのソースを見る限り。
それは置いておくとして、
1回目のtest.phpで<select name="name">の指定があるので
2回目のtest.phpでは $_POST['name'] と $_POST['pieces']の2つの変数がセットされます。
従って、for($i=0;$i<count($_POST['check']);$i++)の内部が実行されることはありません。
204202:05/03/20 19:06:41 ID:???
>>203
速レス有り難うございます。
すいません、よく分からなくなってしまったのでソース全部晒します。
################test.php################
<?php
include_once("display.inc");
include_once("input.inc");
include_once("calc.inc");
include_once("result.inc");
if (empty($_POST['pieces'])):
$_POST['pieces'] = "";
endif;
display_input_area();
if (!empty($_POST['pieces']) && input_is_valid()):
$result = calc_mikan();
display_result($result);
endif;
?>
################item_data.inc################
<?php
$check = $_POST['check'];
$item_data = array(
"みかん" => array(
"price" => "26",
"tax" => "0"
),
"林檎" => array(
"price" => "30",
"tax" => "0"
)
);
?>
205nobodyさん:05/03/20 19:08:08 ID:???
################display.inc################
<?php
function display_input_area()
{
require("item_data.inc");
print <<<__EOD1__
<form method=POST action="{$_SERVER['PHP_SELF']}">
<table><tr><td>
__EOD1__;
echo "<select name=name>\n";
for( $i=0; $i<count($check); $i++) {
echo " <option value=$check[$i]>$check[$i]\n";
}
echo "</select>\n";
print <<<__EOD2__
</td><td>個数:<input type=text size=6 name=pieces value="{$_POST['pieces']}">
</td><td>税率(%):<input type text size=4 name=tax value="{$_POST['tax']}">
</td></tr></table><br><input type=submit value="計算"></form>
__EOD2__;
}
################calc.inc################
<?php
function calc_mikan()
{
require("item_data.inc");
$name = $_POST['name'];
$char_tax = $_POST['tax'];
$base_price = $item_data[$name]['price'];
$mikan = $base_mikan * (1 + $char_tax / 100);
return (integer)$mikan;
}
?>
206nobodyさん:05/03/20 19:13:18 ID:???
################input.inc################
<?php
function input_is_valid()
{
if ($_POST['pieces'] > 0):
return TRUE;
endif;
return FALSE;
}
?>
################result.inc################
<?php
function display_result($result)
{
require("item_data.inc");
print <<< __EEE__
<table border=0 cellpadding=2 cellspacing=1 bgcolor=#696969><tr>
<td width=120 align=center bgcolor=#e6e6fa>品名</td>
<td align=center bgcolor=#e6e6fa>個数</td>
<td align=center bgcolor=#e6e6fa>値段</td></tr><tr>
<td width=120 bgcolor=white>{$_POST['name']}</td>
<td bgcolor=white>{$_POST['pieces']}</td>
<td bgcolor=white>{$result}</td></tr></table>
__EEE__;
}
?>
徹底攻略見ながら作ったのがバレバレで恥ずかしい・・・
>2回目のtest.phpでは $_POST['name'] と $_POST['pieces']の2つの変数がセットされます。
>従って、for($i=0;$i<count($_POST['check']);$i++)の内部が実行されることはありません。
なぜ、2度目以降ではforループの内部が実行されないのでしょうか。
207nobodyさん:05/03/20 19:27:47 ID:???
endif; ???
208nobodyさん:05/03/20 19:40:30 ID:???
>>207
制御構造に関する別の構文
ttp://www.php.net/manual/ja/control-structures.alternative-syntax.php
これって、マニュアルでしか見た事なかったよ。。実際に使っている人がいたのか(笑)
209nobodyさん:05/03/20 19:43:11 ID:???
>>208
おぉ、そんなのが有ったのか、一つ賢くなった。
210nobodyさん:05/03/21 00:42:45 ID:???
出力する際にHTMLを書くのが面倒になってきたのですが、
連想配列を渡すとリストとして返ってくる関数とか無いですか?
211nobodyさん:05/03/21 00:44:11 ID:???
そういう関数作ってみてはいかが?
212nobodyさん:05/03/21 01:23:52 ID:???
>>210
配列渡すとテーブルとかリストで吐くような機能を持った
テンプレートクラスがあった気がする。
213nobodyさん:2005/03/21(月) 09:29:01 ID:???
ある web から引っ張ってきた文字列から
例えば strip_tags()した後、  だけ取り除きたい時って
どうすればいいの?
214213:2005/03/21(月) 09:33:40 ID:???
アフォでした。

例えば strip_tags()した後、&ンBSP;だけ取り除きたい時って

って書きました…
215nobodyさん:2005/03/21(月) 09:37:09 ID:???
>>214
str_replaceでも使えば?
216214:2005/03/21(月) 09:42:15 ID:???
だね。自分でも発見した。

ttp://www.softinn.jp/doc/lib/
これって使った事ある人いる?ググったらでてきた。
今んとこ str_replace で充分そうだけど、もしかしたら後で使いたいかも。
どう?
217202:2005/03/21(月) 10:44:09 ID:???
セッション使ってみたらとりあえずドロップダウンリストが空っぽにならなくなったよ。
少しだけど前進した。スレ汚しスマンカッタ
218nobodyさん:2005/03/21(月) 20:52:21 ID:???
Vodafoneで着メロのダウンロードさせたいんだけど
音楽ファイルよみこんでバイナリで吐き出しても
音楽は聴けるけど保存できません・

header("Accept-Ranges: none");
header("Content-Length: $filesize");
header("Content-Type: application/x-smaf");
header("Content-Disposition: attachment; filename=".$strMusicname);
i18n_http_output("pass");

$fp=fopen($strPath,"rb");
fpassthru($fp);
fclose($fp);

こんな感じで書いてるけどDocomoは再生・登録ともにできました。
何かヘッダー情報たりないんでしょうか?

219218:2005/03/21(月) 20:53:20 ID:???
ちなみにメールで同じファイルを
Vodafone端末に送付したら登録はできました

どなたか宜しくお願いします;−;
220nobodyさん:2005/03/21(月) 21:34:19 ID:???
phpじゃないじゃない。
221nobodyさん:2005/03/21(月) 21:53:40 ID:???
じゃないじゃないじゃない
222218:2005/03/21(月) 22:33:01 ID:???
もうちょっと調べてみます
ありがとうございました
223nobodyさん:2005/03/22(火) 21:34:33 ID:FZjBD8FM
PHPのカラー表示できるテキストエディタってありますか?
PHPのエディタってあんまりないですよね。。。
224nobodyさん:2005/03/22(火) 21:41:44 ID:???
>>223
PHPエディタって、どうよ?
http://pc8.2ch.net/test/read.cgi/php/1079460638/
225nobodyさん:2005/03/23(水) 00:55:18 ID:???
phpに出来てcgiに出来ないこと、またはその逆はありますか?

もしないのであれば、何故両立している状態があるのでしょうか?
226nobodyさん:2005/03/23(水) 00:56:49 ID:???
春だなぁ
227225:2005/03/23(水) 00:58:04 ID:???
>>226
スミマセン。。。社会人っす。。。素朴に疑問なんです。。。
228nobodyさん:2005/03/23(水) 01:00:58 ID:???
229225:2005/03/23(水) 01:04:23 ID:???
>>228
http://e-words.jp/w/PHP.html
これも読みました。。。
理解できていないと思うのですが、PHPの解説サイトとか見てみると、「cgiより軽い」とか「cgiよりサーバーへの負担が少ない」とか書いてあって。
cgiで出来てphpで出来ないことがないとしたら、両立している理由が分からないのです。。。 orz...
230nobodyさん:2005/03/23(水) 01:15:31 ID:???
まぁPHPもCGIなはず
231225:2005/03/23(水) 01:20:23 ID:???
もっと勉強してきます orz...

>>230
アリガトゴザイマシタ!!
232nobodyさん:2005/03/23(水) 01:25:25 ID:???
CGIに出来てPHPに出来ないこと。

CやPerl、RubyなどもちろんPHPも含めてあらゆる言語を利用できる。

って、答えたらよかったのかなぁ?
233nobodyさん:2005/03/23(水) 02:03:24 ID:???
PHPは言語だからCGIと比較するのはおかしい。
レースドライバーと耕運機を比較するくらいズレてる。
そもそもPHPはCGIとして動かすことも可能。
234nobodyさん:2005/03/23(水) 02:27:10 ID:???
>>229
巷の初心者に毛が生えたのが解説してるPHPサイトとかも
ちゃんと理解できていないからその記述になってるので安心汁。
(CGI=Perlらしい)
235nobodyさん:2005/03/23(水) 06:46:05 ID:???
>>233
君の頭は四角いな
236nobodyさん:2005/03/23(水) 09:15:07 ID:???
クラスの外部で定義された変数をクラス内部で使いたい場合、
PHP5では
public $mona = array(0,1,2);
class giko {
}
PHP4では
$mona = array(0,1,2);
class giko {
 global $mona;
}
という認識であってますか?
237nobodyさん:2005/03/23(水) 10:00:02 ID:???
PHP→mod_PHP、CGI版PHP
PHP自体が速いのではなく、Apacheモジュールとして立ち上げたPHPが(既にPHPが起動しているので)CGI版PHPより速い。
Perl→mod_Perl、CGI版Perl
多くのレン鯖はCGI版Perlで、Perlの起動に時間がかかるからmod_PHPと比べるとたいてい遅くなる。だからPHPはPerlより速くて負荷が小さいですよ、とか紛らわしい書き方をしている。mod_Perlとmod_PHPなら差はほとんどない。 であってるのかな。

モジュールとして動作→速い、モジュール限定機能あり
CGIとして動作→SuEXECが効く、Perlが落ちてもHTTPDまで落ちない
238nobodyさん:2005/03/23(水) 10:24:37 ID:???
>>237
mod_perl > mod_php > Perl(CGI) > PHP(CGI) のようです
239nobodyさん:2005/03/23(水) 10:35:10 ID:???
>>236
publicはclass内でpublic変数を定義するもの
classの外で使うとエラーになります
240nobodyさん:2005/03/23(水) 10:44:39 ID:???
取りあえず巷にはCGI=perl(言語)と思ってる馬鹿が溢れかえってるので、それを前提に話しをするとヨロシ
>>230みたいな勘違いしてる人は結構珍しいかも。
241nobodyさん:2005/03/23(水) 10:51:38 ID:???
>>218
そのPHPを記述したファイルの拡張子(.php)を着メロ用ファイルの拡張子(何かは知らんが仮に.xxxとする)にし、
htaccess使うとかして、.xxxというファイルがPHPとして動作するようにしてみ。
試してないので上手くいくかどうかは知らんが。

あとPHPのバージョン(3使ってる?)の関係であえてそうしてるのだとは思うけど、
5行目 ⇒ mb_http_output('pass');
7〜9行目 ⇒ readfile();
一応、バージョン4以降使ってる人の為に。。
242223:2005/03/23(水) 10:55:20 ID:???
>>224
そんなスレあったのですね。
逝ってきます
243nobodyさん:2005/03/23(水) 11:08:37 ID:???
foreach ($arr as $k => $v) {
 foreach ($arr[$k] as $key => $value) {
  echo $key.$value;
 }
}

エラー出る。なんで?
244243:2005/03/23(水) 11:18:24 ID:???
おう、配列のほうに問題あったみたい。
ごめん。
245nobodyさん:2005/03/23(水) 11:41:30 ID:7EAkLlhU
初めてfopen()とかcopy()とか使うことになって、壁にぶちあたりました。

Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 574 is not allowed to access / owned by uid 0 in

↑こんなエラーがでるのは、レンサバの設定がセーフモードだからってことですか?
そんなときは、どうやって、fopenしたりmkdirしたりするんですか?
PHP Version 4.3.8
246nobodyさん:2005/03/23(水) 11:45:34 ID:???
>>245
mkdirを使わないようにプログラムする
必要なディレクトリはあらかじめFTPで作っておく
247245:2005/03/23(水) 11:52:15 ID:???
なるほど。
ディレクトリは最悪、事前に準備することが可能なんですが、動的にHtmlファイルを生成(書き換え)したいと思っていまして、そんなとき、fopen()使わずにいけますか?
248nobodyさん:2005/03/23(水) 11:57:35 ID:???
>>247
あらかじめ作ったディレクトリ(所有者がPHPスクリプトの所有者と同じ)内であれば特に制限は無いのでfopenでもcopyでも好きにやってくれ。
249245:2005/03/23(水) 12:15:22 ID:???
>>248
ありがとうございます。
試してみました。↓
$result2 = copy("test_dummy/test.txt","test_dummy/test2.txt");
。。。でもダメでした。(同じメッセージ)
かなり初歩的なことだと思いますが、引き続きご指南いただけませんか。
250nobodyさん:2005/03/23(水) 12:49:38 ID:???
>>249
test_dummyの属性(permission)と所有者(owner)を述べよ
251nobodyさん:2005/03/23(水) 14:29:11 ID:???
>>238
>mod_perl > mod_php > Perl(CGI) > PHP(CGI)
その順番は一般にPHPは最初から拡張モジュールてんこ盛りでビルド
Perlは最初から余り入れずプログラムで必要に応じて採用する傾向のよるもの。
(PHPでdl()させてるところって殆どないやん)
実際に測ると総合力は余り変わらんよ。
252nobodyさん:2005/03/23(水) 14:30:45 ID:???
mod_perlちょっぱやよ。
253nobodyさん:2005/03/23(水) 15:37:48 ID:ZnAQR4mO
特定のディレクトリのファイル容量を取得する方法は、ありますか?
254nobodyさん:2005/03/23(水) 15:48:08 ID:???
>>253
OSによる
255nobodyさん:2005/03/23(水) 16:04:12 ID:???
>>253
PHPスレで聞いたって事はPHPにそういう関数はないかってことやね
無い と思う
linuxならduコマンド呼べ
256nobodyさん:2005/03/23(水) 16:23:40 ID:???
disk_total_space()とdisk_free_space()をゴニョゴニョすれば出そうな気もするなぁ。
257nobodyさん:2005/03/23(水) 16:28:09 ID:???
ecs.php
http://www.itmedia.co.jp/enterprise/articles/0502/28/news003_2.html
view.php
http://www.itmedia.co.jp/enterprise/articles/0502/28/news003_3.html

漠然とした質問で申し訳ないのですが
練習としてやっていて初っ端でつまづいております・・・。
上のソースの必要個所を修正し、
その後アップロードをしview.phpにアクセスしても真っ白で何も表示されません・・・。
サーバーはlinuxでphpは4です
よろすくおねがいします
258nobodyさん:2005/03/23(水) 16:29:44 ID:???
>>256
いや できないだろう
ハードディスクの空き容量が出るだけかquotaで割り当てられた容量が出るかじゃないのか
filesize()で一個ずつ足していくのはどうかね
259PHP初心者:2005/03/23(水) 16:34:27 ID:OtBPoiR1
index.htmlに検索フォームを設置し、
seach.phpでデータベースに接続して、検索結果を表示しています。

例えば、データベースは次のようなものです。
number | name | comment
1 | 太郎 | 1番足が速い
2 | 次郎 | クラスで5番目に背が高い
3 | 三郎 | 至ってhutuuな成績

検索フォームは次のようなものです。
<FORM action="search.php">
<INPUT size="20" type="text" name="key"><BR>
<INPUT type="submit" value="検索"><INPUT type="reset" value="リセット">
</FORM>

seach.php には次のようなものを記述しています。
$key = $_GET['key'];

・(省略)

$result = mysql_query("SELECT * FROM abc WHERE comment LIKE '%$key%'",$db);

「5」で検索すると、次郎君のデータが表示され、
「hutuu」で検索すると、三郎君のデータが表示されます。
しかし、「足」を入力して検索すると、検索ができません(何も表示されません)。
どうすれば、日本語でも検索できるようになるでしょうか?
何かお気付きの点がありましたら、教えていただきたいです。 m(_ _)m
260nobodyさん:2005/03/23(水) 16:36:06 ID:???
>>257
view.phpの2行目に
error_reporting(E_ALL);
を入れとく。
261nobodyさん:2005/03/23(水) 16:42:32 ID:???
>>259
MySQLのバージョンは?
4.0ならSELECT * FROM abc WHERE comment LIKE BINARY '%$key%'
3ならcommentフィールド自体にBINARYをつける
262nobodyさん:2005/03/23(水) 16:46:08 ID:???
>>256
その両方の関数のユーザコメントでその手のが色々書いてある。
でもWindowsで試したけど、まあ上手くいかんね。
>>258の言うとおりdir()辺りで一覧とって、ファイルに限って
逐一filesize()で調べて合計出すのが良いと思う。
# du使えればそれが一番楽だけどね。
263nobodyさん:2005/03/23(水) 16:48:48 ID:???
>>259
MySQLのサーバ設定で「日本語(ujis/sjis等)」ときちんと設定する。
サーバ設定が変更できない場合は、次善の策として>>261の方法で対処。

264261:2005/03/23(水) 16:56:08 ID:???
BINARY演算子はMySQL3.23.0から使えるようです
ただ英字のHUTUUとかがhutuuでは検索できなくなります。
265nobodyさん:2005/03/23(水) 17:27:54 ID:???
>>260
レスありがとうございます
やってみましたが真っ白です・・・_| ̄|○
266nobodyさん:2005/03/23(水) 17:48:20 ID:???
>>265
お前は
<?
echo "Hello world";
phpinfo();
?>
から始めろ
267245:2005/03/23(水) 17:55:48 ID:???
>>250
遅くなりました。すみません。(>>245 >>247 >>249の件です)
パーミッションはrwx r-x r-xです。
所有者は私のFTP接続アカウントと同一です。

よろしくお願いします。
268nobodyさん:2005/03/23(水) 17:59:15 ID:???
>>265
あらゆる処理の前に print "(行番号):"; てなものを放り込んで、
どこまで実行できているのか調べる。
君にはそれがお似合いです。
269PHP初心者:2005/03/23(水) 18:49:14 ID:2nyWi/q2
261さん、263さん、ありがとうございました。
取り急ぎ、お礼を申し上げます。 m(_ _)m

MySQLのバージョンは4.0.22です。
お教えくださったことを早速、試してみたいと思います。
270245:2005/03/23(水) 19:32:25 ID:???
何度かやっているうちに上手くいきました。
ディレクトリのパーミッションをrwx --x rwxです。
ありがとうございました。
271nobodyさん:2005/03/23(水) 21:04:21 ID:???
>>266>>268
自分に知識が無いのは分かってまつ(;´Д`)

最後にこれだけ教えてください
ほぼコピペしただけでも動かないってことは
>>257のソースには不備があるってことですか?
272nobodyさん:2005/03/23(水) 21:17:45 ID:???
構文上のエラーはないようだよ
273nobodyさん:2005/03/23(水) 21:17:52 ID:???
不備があるないって問題でもないような。
まず、view.phpのほうで、ちゃんとincludeできてるかどうかとか、
そういうのを>>265の言うとおり、
一個一個表示して確かめないとね。

そうしないと何行目がまずいんです!ってのはわかんないと思うよ。
274nobodyさん:2005/03/23(水) 21:18:25 ID:???
>271
同じテレビでも違う地域に引っ越したら、場合によっては受信設定を変える罠
275nobodyさん:2005/03/23(水) 23:11:40 ID:fSPzJGOM
<?
$case = '17,241';
?>

<?
print"\\$case(送料等含む)<br>";
?>


これで表示されませんorz
なにかまちがえてますでしょうか・・・?
276nobodyさん:2005/03/23(水) 23:37:55 ID:???
>>275
<? → <?php
277nobodyさん:2005/03/23(水) 23:40:42 ID:???
>>275
$case → {$case}

日本語使うなら文字コードにも気を付けろ
278nobodyさん:2005/03/23(水) 23:45:07 ID:fSPzJGOM
>>277
ありがとうございました!
279nobodyさん:2005/03/23(水) 23:46:15 ID:???
>>275
print"\\$case(送料等含む)<br>"; の 変数名の部分$case〜をうまく認識できていないんですよ。

<?
$case(送料等含む) = '17,241';
print"\\$case(送料等含む) (送料等含む)<br>";
?>
これで解決ですね(゚∀´)b

print"\\$case (送料等含む)<br>"; // 次の文字との間をスペースで分離
print"\\".$case."(送料等含む)<br>"; // 文字列演算子で分離
print"\\{$case}(送料等含む)<br>"; // { }で囲む
のように変数名の部分を(PHPの中の人に)分かり易く書くこともできます。
280nobodyさん:2005/03/24(木) 00:40:10 ID:???
PHPパーサの気持ちが判らん香具師は、
'\'.$case.'(送料を含む)'."\n"
このくらいから始めとけ。

printf()の説明もついでに見とけ。
281nobodyさん:2005/03/24(木) 02:41:20 ID:03HxTlZF
FORM内に入力項目とボタンが2つあります。

<input type="button" value="a" onclick="javascript:a_check();">
<input type="button" value="b" onclick="javascript:b_check();">

javascriptのa_check()関数b_check()関数でそれぞれ簡単な
問い合わせ等をした後にOKならdocument.form.submit()で
PHPスクリプトに飛ばしてます。

で$_POSTで入力項目の値は取れるのですが、どちらのボタンが押されたか
判別出来ませんでした。ボタンにname属性を指定しても渡りません。

何か良い方法はあるでしょうか?お願いします。
282nobodyさん:2005/03/24(木) 02:48:48 ID:???
>>281
<input type=hidden name=hoge>
を用意して、JavaScriptで値を渡してからform.submit()している。
面倒なんだけどね。
283281:2005/03/24(木) 03:01:53 ID:???
>>282
うわー!!!
目から鱗でした。ありがとうございます。
284nobodyさん:2005/03/24(木) 03:08:48 ID:???
PHPとは関係無くなってきたけど、
function a_check(){
if( ok ){ return true; }
else{ return false; }
}
<input type="submit" name="a" value="a" onclick="return a_check()">
てのもありかと。
285nobodyさん:2005/03/24(木) 03:15:10 ID:???
>>284
これってJavaScriptでエラーが発生したら問答無用でsubmitされるんだよね
どうせならフェイルセーフにして欲しいなぁ
286nobodyさん:2005/03/24(木) 03:21:04 ID:???
>>284
submitを用意すると、textのところでEnterキーを押されると飛んでしまうからヤダ。
当然onclickのところも処理されないし。
287284:2005/03/24(木) 03:55:09 ID:???
うーん、JavaScript offの人を取り込めるようにと思ったんだけど、
鯖へのsubmit(意図しないものも含めて)をなるべく減らしたい場合には不適ですね。
288281:2005/03/24(木) 04:30:41 ID:???
submitでも出来るんですね。ありがとうございました。
自分のほとんどjavascriptの質問でしたねすいません・・・
289nobodyさん:2005/03/24(木) 10:48:10 ID:RDA5se46
PHPでMYSQLのテーブルのデータをエクセルで出力するプログラムを作りたいのですがどのような
やり方でやるのでしょうか?
290nobodyさん:2005/03/24(木) 11:27:27 ID:???
csv作ってダウンロードさせたらいいんじゃない。
291nobodyさん:2005/03/24(木) 13:00:58 ID:qO9+zWTj
PHP 4.0.6 on IRIX -> 4.3.9 on Linux の移行で躓いています。
内容は↓とよく似ていて、php.ini や、configure の条件もほとんど同じなのですが、
この問いにレスがありません;;

ttp://ns1.php.gr.jp/pipermail/php-users/2005-March/025317.html

さらに、ファイルの末端行について↓のようなエラーが出て、ページが表示されません。

Parse error: parse error, unexpected $ in filename on line 316

{ } が閉じていないとこのエラーが出るようですが、全てのスクリプトは移行前は動いていましたし
括弧のチェックも行いましたが、何が悪いのかわかりません。

何かヒントか勘所ありましたらお教えいただければ幸いです。
よろしくお願いいたします。
292nobodyさん:2005/03/24(木) 15:26:01 ID:???
>>289
dumpして、縦罫を区切り文字に変換、
行頭、行末の区切り文字を削除
残りの罫線文字を全て削除。

で、csvデータの出来上がり!
293nobodyさん:2005/03/24(木) 15:35:02 ID:???
>>289
excelで出力か...COM関数かな。
294nobodyさん:2005/03/24(木) 18:06:13 ID:???
php4.2.3,mojavi2を使ってデータ加工をするプログラムを作っているのですが、オブジェクトの
受け渡しが上手くいきません。
(画面)推移は[chageAction]->[chageView]->[resultAction]->[resultView]の
各Actionでデータを加工しています。加工したデータのオブジェクトを
[changeAction]から[resultView]まで持ち回したいのですが、[changeView]->[resultAction]へデータが渡りません。
以下の状況です。
[chageAction]で$request->setAttribute['datalist', $datalist];
[chageView]では受け渡しは何もしていません。
[resultAction]で$datalist = $request->getAttribute['datalist'];
とすると、print_r($datalist)は出力されません。(empty($datalist)がTrueです)
[changeView]でprint_r($request->getAttribute['datalist']);するときちんと表示されます。
また、$requestの利用をやめて単純にセッションで持ち回してみると
[changeAction]で、$_SESSION['datalist'] = $datalist;
[changeView]で、print_r($_SESSION['datalist'])は正しく表示されます。
[resultAction]で、print_r($_SESSION['datalist'])とすると
__PHP_Incomplete_Class Object( [__PHP_Incomplete_Class_Name]といった
失敗したクラスオブジェクトという表示がついたデータ(中身は正しそうです)
が表示されます。直前の[changeView]までは正しく表示されているのに
直後の[resultAction]で失敗していると言われます。
何か、怪しいところ、解決のヒントをいただけないでしょうか。
よろしくお願いいたします。
295294:2005/03/24(木) 18:09:02 ID:???
すみません。[chage...]としてますが[change...]のtypoです。
あと、sage質問してしまいました。重ね重ねすみません。
296nobodyさん:2005/03/24(木) 19:20:48 ID:vhVEynDR
>>289
pearのSpreadSheetExelWriter使えば?
297nobodyさん:2005/03/24(木) 19:45:30 ID:???
>>291
ブラウザのキャッシュクリア
298nobodyさん:2005/03/24(木) 20:16:47 ID:???
----------------------test2.php----------------------
session_start();
session_unset();
session_destroy();
echo "<form method=POST action=test.php>\n";
echo "<input type=checkbox name=checkbox[] value=test1>test1<br>\n";
echo "<input type=checkbox name=checkbox[] value=test2>test2<br>\n";
echo "<input type=checkbox name=checkbox[] value=test3>test3<br>\n";
echo "<input type=submit value=OK>\n";
echo "</form>\n";
-----------------------test.php-----------------------
session_start();
$checkbox = $_POST['checkbox'];
if (!isset($checkbox)) {
$checkbox = $_SESSION['checkbox'];
}
else {
$_SESSION['checkbox'] = $checkbox;
}
echo "<form method=POST action=" . $_SERVER['PHP_SELF'] . ">\n";
echo "<select name=name>\n";
for ($i=0; $i<count($checkbox); $i++) {
echo "<option value=" . $checkbox[$i] . (($checkbox[$i] == $_POST['name']) ? ' selected' : '') . ">" . $checkbox[$i] . "\n";
}
echo "</select>\n";
echo "<input type=submit value=GO>\n";
echo "</form>\n";
--------------------------------------------------
自鯖だとGOボタンを押してもプルダウンメニューが空っぽにはならないのですが
www.tripod.lycos.co.ukでテストしてみたらGOボタンを押すと同時に空っぽになってしまいました。
セッションの使い方間違っているのでしょうか?
299nobodyさん:2005/03/24(木) 21:22:41 ID:???
300nobodyさん:2005/03/24(木) 21:29:55 ID:6QAMAmhS
くだらない板の方がいいのかもしれませんが。

多次元配列で、指定したキーの要素が存在するかどうか
チェックする時、キーの範囲を絞って検査する方法
はどうやってますか?
幾つかサンプルを探してみましたが、1次元配列の例しか
見当たりません。
array_key_existsやissetを使うことになると思いますが
どうでしょう?
301nobodyさん:2005/03/24(木) 21:33:01 ID:???
わかんねぇんだったら、黙ってろ禿げ
302nobodyさん:2005/03/24(木) 22:00:15 ID:???
>>300
考えてるイメージどおりでいいんでね?
絞った範囲を逐次舐めていくか、一旦範囲を切り取った
別の配列用意して、そこを見ても良いと思うけど。
303nobodyさん:2005/03/24(木) 22:22:14 ID:6QAMAmhS
>302
レスありがとうです。
issetやarray_key_existsの第二パラメータを
[]付きで指定するとエラーになりますね。
やはり別の配列に切り取って、上記関数を
使う方法しかないでしょうか。
304nobodyさん:2005/03/24(木) 22:29:27 ID:???
if(isset($Arr['hoge'])){

とか普通にやるけど?
305nobodyさん:2005/03/24(木) 22:46:10 ID:6QAMAmhS
>304
すみません、isset内の$Arr['hoge']は多次元配列でしょうか?
306nobodyさん:2005/03/24(木) 22:50:39 ID:???
>>303
array_key_existsは、別に多次元配列を処理できる訳ではないので。
307nobodyさん:2005/03/24(木) 22:53:52 ID:???
>>305
if(isset($Arr['hoge']['fuga'])){
とかも念の為確認したけど普通に通るね
4.3.4で確認したが、レン鯖とかでもエラーでた覚えはないな
308nobodyさん:2005/03/24(木) 22:56:24 ID:???
>307
では、'hoge'や'fuga'の部分を配列変数で指定したらどうでしょうか?
当たり前かもしれませんが、教えてください。
309nobodyさん:2005/03/24(木) 23:09:46 ID:???
つか、連想配列の添え字に配列変数を指定?
preg_replaceのパターンに配列使うみてーなん期待してんのなら
無理じゃね?そういう引数とれる関数じゃ元からねーだろ
310nobodyさん:2005/03/24(木) 23:24:39 ID:???
>309
登録の時は普通に配列変数を指定できるはずですが、
キーが存在するかどうかのチェック時に指定できない
となると、PHPの配列というのは、用途が限定されてきますね。
存在しないキーを指定して値を取り出そうとすると、
ランタイムエラーになるのですよね?
311nobodyさん:2005/03/24(木) 23:27:47 ID:???
>>310はもっとマニュアルを読む癖をつけたほうがいい。
ttp://www.php.net/manual/ja/types.comparisons.php
312310:2005/03/24(木) 23:35:17 ID:???
>311
私はPHPを詳しく理解してないですけど、
あなたは私が何を言いたいのか理解していない気がします。
313nobodyさん:2005/03/24(木) 23:42:31 ID:???
>>310
限定も何もPHPがどーのこーのの前に配列が何か良くわかってないんじゃない?

指定の仕方がおかしいっつーてるだけの話よ
別に存在しないKeyの連想配列参照したって構文エラーは出んぞ
314310:2005/03/24(木) 23:56:46 ID:???
>313
無効なキーを指定した場合、返ってくる値はNULLでしょうか?
マニュアルで配列のところを見てみましたが、どこに書いてあるのでしょう?
聞いてばかりですみません。
315nobodyさん:2005/03/25(金) 00:07:28 ID:???
>>314
おめぇ、いい加減鬱陶しいよ。
自分で試してみりゃ判ることばっかり聞いてんじゃないよ。
316nobodyさん:2005/03/25(金) 00:22:20 ID:???
春だなぁ
317nobodyさん:2005/03/25(金) 02:48:05 ID:???
           ?           ?            ?   ?  ?  ?
   ??      ??             ??  ??      ???? ????
  ??::                         ??
  ???::           ?               ??
 ????::?::         ????????      ????  ? ????
  ??????::?:::                 :::?::??? ?  ?
  ???????::?::?::::: :: ::   ::::?::????????? ???
   ?????????::?:::?:::::::?::??????????? ???
318nobodyさん:2005/03/25(金) 07:14:19 ID:???
>>310
正確には存在しないキーの配列を普通に参照すると
undefind indexでNoticeレベルのエラーは発生してる
(デフォルトのphp.iniでは確かNoticeレベルのエラーはレポーティングされない)
ただしissetで調べる時はNoticeも発生しない
存在しないキーの変数を無理矢理使おうとすると
NULL補完されてそのまま実行される

$array = array();
$hoge = $array['unknown'];

だと$hogeはNULL
でもあくまでPHPが補完してくれるだけであって
ちゃんとキーが存在するか調べてから
参照するコードを書く方がもちろん良い

話を元に戻して
多次元配列でキーの存在を調べるなら
$list = array(調べるキーのリスト);
foreach ($list as $key) {
if (isset($array['hoge'][$key])) {
・・・
}
}
あとはまあ応用で
319nobodyさん:2005/03/25(金) 10:40:31 ID:???
天気良いなァ・・・
320294:2005/03/25(金) 10:48:05 ID:TwEbcJkK
294です。だらだらと解りづらい説明で恐縮ですが、
どなたかアドバイスいただけないでしょうか。
321nobodyさん:2005/03/25(金) 12:01:06 ID:???
mojavi使ってないので直接的なアドバイスできないが、
chage〜とchange〜はtypoですか?

あと、文系っぽい質問の書き方を改めた方がいいと思った。
322nobodyさん:2005/03/25(金) 12:59:58 ID:???
[ ]が多くて読みづらい。
setAttribute[〜]、getAttribute[〜]は 見るからに怪しい。
323nobodyさん:2005/03/25(金) 15:27:39 ID:???
>>294
$request->setAttribute('hoge', $hoge);
だよ。括弧の形が違う。

324nobodyさん:2005/03/25(金) 17:37:14 ID:???
えっ、それわざと書いてるんだと思ってた。
325294:2005/03/25(金) 17:53:55 ID:???
みなさんありがとうございます。
>321
typoです。文系っぽいというのはすみません。よくわかりません。
>322,323,324
typoです。わざとじゃありません。()です。でなきゃこの状況以前のエラーになります。
[]なしで書いてみたらもっとわかりづらかったです。
typoがおおくてすみません。なるべく状況をわかってもらえるように
書けば書くほどわかってもらえなくなります。
見直しはしてるのですが、気持ちの方があせってます。

わかりずらい書き方ですみませんが、どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。
326nobodyさん:2005/03/25(金) 17:59:29 ID:???
「typoです」「typoです」って事故みたいに言うなよ。お前のミスだろうが。
ソースは基本的にコピペ。投稿する前には再確認しろよ。
327294:2005/03/25(金) 18:09:25 ID:???
>>326
その通りです。私のミスです。事故みたいに受け取られるのは不本意です。
328nobodyさん:2005/03/25(金) 18:12:06 ID:???
>>327
あなたを、typoします
329294:2005/03/25(金) 18:29:56 ID:???
>>328
「typoです。
 ()と[]の区別がつきません…」
とかのネタは実は覚悟してたんですが、意表をつかれました。

わかりづらい書き方についてのアドバイスを拒否するわけではありませんが
できましたら、その、変数(オブジェクト)の引き渡しについても
アドバイスいただけないでしょうか。
330nobodyさん:2005/03/25(金) 18:47:06 ID:???
とりあえず
>>4
331nobodyさん:2005/03/25(金) 18:48:52 ID:???
>>329
もう一度、きちんとした質問として書き直す気は無いんだな?
332294:2005/03/25(金) 18:57:30 ID:???
4に該当してましたでしょうか。
>>331
いえ、そうしていいならそうさせてください。上手くかけるかどうかわかりませんが。
今夜もう一度書きます。お目汚しすみません。
333nobodyさん:2005/03/25(金) 21:07:00 ID:???
>>328
アタタタタター!
お前はもう氏んでいる。
334294:2005/03/25(金) 21:57:21 ID:???
>>330
あの、すみません。本当に4のどこに該当したでしょうか。
再度書こうとしているのですが、うまくまとまりません。
あと、他の方からのご指摘ですが文系っぽい文章もよくわかりません。
自覚がないのは手に負えないとは思うのですが…。
なんだか簡潔に書こうとすると省略が増えて、「最初から言えよ」と
言われそうです。コードを中心に助詞とかはぶいて書くと(理系っぽい?)
傲慢な感じです。(「コード見てわかれよ」というような)
結局typo部分を修正する程度になってしまうかもしれません。
といいつつもうすぐイラン戦なので、明日になるかもです。
typoについてご指摘いただいた方には、感謝してます。少なくとも
わかりづらい文章を読んでいただいたので。
>>333
もっと意表を衝かれました。
335nobodyさん:2005/03/25(金) 22:00:57 ID:???
>>294
どっかにうpした方がよくなくって?
フレームワークスレ(Phrameと銘打ってあるが多分mojaviでも良かったかと)もあるけど、
あの書き方だとレス付かない希ガス
336nobodyさん:2005/03/25(金) 22:19:34 ID:???
お嬢様口調キター
337nobodyさん:2005/03/25(金) 22:30:53 ID:???
>>334
> コードを中心に助詞とかはぶいて書くと(理系っぽい?)
> 傲慢な感じです。(「コード見てわかれよ」というような)

「コード見ずにわかれよ」よりはマシ。
ソースをまるまるうpして、「動きません」だけ言われた方が解決出来る。
338nobodyさん:2005/03/25(金) 22:37:42 ID:???
なぁみんな。
元理系で文系卒業したオレに一言言わせてくれ!

理系とか文系とかいう問題では無い!
人の問題なのですよ。
339nobodyさん:2005/03/25(金) 22:57:02 ID:???
>>294はネタにレスしなくていいので。うざいから
340山田:2005/03/26(土) 01:05:40 ID:FsI5PzWC
メールを送信するプログラムが動きません。
プログラム自体は他のPCで動いたので大丈夫だと思います。
動かないPCはサーバ機として使っているものでwindows server 2003を使っています。
PHPを動かすと
Warning: mb_send_mail(): Failed to connect to mailserver at "192.168.1.100" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in・・・
というようなエラーが出ます。
同じようにphp.iniでSMTPをプロバイダのSMTPにしてもエラーメッセージが
192.168.1.100の部分がプロバイダのSMTPサーバ名に変わるだけでした。
何か問題があるとしたらどこがいけないのでしょうか?
341nobodyさん:2005/03/26(土) 01:31:23 ID:???
Windows版phpは、メール送信にSMTP接続を使います。
逆に言うと、SMTP接続を受け付ける鯖がなければメールを送信できません。
192.168.1.100にメール鯖が無ければ当然そのようなエラーが起きます。
プロバイダのメール鯖を使うとしても、最近はPOP before SMTP等色々な制約があります。
そのWeb鯖が本番環境なら管理者に相談してみましょう。
342nobodyさん:2005/03/26(土) 01:32:57 ID:???
> php4.2.3,mojavi2を使ってデータ加工をするプログラムを作っているのです
> が、オブジェクトの受け渡しが上手くいきません。
> 画面推移は A->B->C->D
> オブジェクトをAからDまで持ち回したいのですが、B->Cへデータが渡りません。
> 状況は以下のとおりです。
> A
> $request->setAttribute['datalist', $datalist];
> B
> print_r($request->getAttribute['datalist']);
> 出力されます。
> Bでは受け渡しは何もしていません。
> C
> $datalist = $request->getAttribute['datalist'];
> print_r($datalist)
> 出力されません。
> $requestの利用をやめて単純にセッションで持ち回してみると
> A
> $_SESSION['datalist'] = $datalist;
> B
> print_r($_SESSION['datalist'])
> 出力されます。
> C
> print_r($_SESSION['datalist']);
> __PHP_Incomplete_Class Object( [__PHP_Incomplete_Class_Name]
> が出力されます。
> 何か、怪しいところ、解決のヒントをいただけないでしょうか。
> よろしくお願いいたします。

Bでも受け渡ししろ。ってことか?
343nobodyさん:2005/03/26(土) 01:39:14 ID:???
>>340
そのWinServerの設定で、25番ポートからの通信が遮断されてる。
344山田:2005/03/26(土) 01:42:05 ID:FsI5PzWC
>>341
他のPC(windowsXP home)では同じプロバイダのSMTPサーバを指定したところ動きました。
そのためどこか設定がおかしいのかなと思ったんですが・・・
他には考えられる問題というのはないでしょうか?
345山田:2005/03/26(土) 01:57:41 ID:VYgvgifg
>>343
どこかの設定のせいで25番ポートが遮断されているんですか?!
可能性としてどこがありえますか?
346nobodyさん:2005/03/26(土) 02:00:01 ID:???
>>342
翻訳thx.

>>294
それみると、$datalistの型が気になってくるわけだが。
classだとしたら、ABでは定義されていて、Cでは定義されていない。とか。
クラスの定義はセッション開始前になければならない。requireなりincludeなりするのも前。
mojaviは使ったことないから知らん。

というか、「__PHP_Incomplete_Class Object」でぐぐれば答えがあるんだがな。

んで、何が見にくいかって、コードが本文中にメリ込んでるあたり。
どこがコードでどこが本文かわからん。
一旦左脳つかってから右脳に渡すとか面倒だ。
347346:2005/03/26(土) 02:01:11 ID:???
>346
>classだとしたら
クラスだろうな。 寝ぼけたこといってすまん。
348nobodyさん:2005/03/26(土) 06:11:57 ID:???
>>346
> 翻訳thx.

シヤ−プの翻訳機だ。
脳内厨−>エスパー変換機能バンドル版
めいどいんシナ(海賊版)
入手困難。
349nobodyさん:2005/03/26(土) 07:50:30 ID:t6rEtfl2
php4のoopはオーバーロード出来ないですか?
試したんですが出来ないみたいで。。
php5は出来ますか?
350山田:2005/03/26(土) 08:02:13 ID:VYgvgifg
>>343
25番ポートは開放されています。
しかし設定によって遮断されているというのはありえるのでしょうか?
351nobodyさん:2005/03/26(土) 08:26:24 ID:???
>>350
エラーメッセージでググッてみた?いろいろ出たよ。例えばこれ。
マルチバイト関数を使う場合以下の設定をします。
まずPHP.iniを開き編集します。
include_pathを探し自分の環境に合わせます
include_path = ".;c:/php/includes"
※例はPHPをc:\phpにインストールした場合
;extension_dirを探し;を外しコメントアウトを解除します。
さらにパスを自分の環境に合わせます
extension_dir ="c:/php/extensions"
※例はPHPをc:\phpにインストールした場合
マルチバイト関数モジュールを組み込みます。
;extension=php_mbstring.dllをさがし
;を外しコメントアウトを解除します。
PHP.iniを保存しApacheを再起動します。
※モジュール組み込みの場合
有効になったか確認する
phpinfo();
と記述したphpを開きmbstringの設定が表示されることを確認してください。
なければ設定が間違っています。
PHP.iniでデフォルト言語とデフォルト文字コードを設定しておくことができます。
;; デフォルトの言語を日本語にする
;mbstring.language = Japanese
;; 内部エンコーディングをEUC-JPに設定
;mbstring.internal_encoding = EUC-JP
それぞれ;mbstringから;を外してコメントアウトを解除し保存します。
mbstring.internal_encodingはPHPの文字コードを指定しています。
Shift-JISで記述されたPHPでマルチバイト関数を使うなど
設定した文字コード以外の文字コードや設定した言語以外の言語を利用する場合
PHP内で以下の関数を使い指定しておきます。
mb_language("Japanese");//言語指定
mb_internal_encoding("SJIS");//文字コード指定
352nobodyさん:2005/03/26(土) 08:35:51 ID:???
>349
試したコードを晒してみ。話はそれからだ。
353山田:2005/03/26(土) 09:07:31 ID:VYgvgifg
>>351
ぐぐってみてその設定はすでに完了しています。
php.iniファイルは他のPC(メール送信PHPが動いたPC)で使っていたものを
持ってきて環境設定したので大丈夫だと思うんですが・・・
354294:2005/03/26(土) 10:08:37 ID:???
>>342
ありがとうございます。すごくわかりやすいです。
Bでの受け渡しも試してみましたがCには渡りませんでした。mojaviを使われている方が
居ないようなので、フレームワークスレへ行きます。
342さんの文章使わせていただきます。
>>346
オブジェクトの受け渡しに宣言が必要でしょうか。
session_start()等はmojaviが行ってる部分で何とも言えませんが
データの引き渡しを確認するためのものです。
アドバイスありがとうございました。


>>349
PHP4はオーバーライドはできますが、オーバーロードはできません。
PHP5は使ってないのでしりませんが、ぐぐれば情報出そうに思います。
>>353
動作したPCと動作しないPCと同じネットワーク環境でしょうか。
(内と外それぞれのIPアドレスとかHOST名とか…)
環境が変われば、SMTPサーバの設定が変わる可能性がありますよ。
(同じ設定ファイルでは動作しなくなるということです。)

では、もう50以上前の番号294はこれにて潜行します。
別スレでもひとつ穏便によろしくお願いしますね。
ありがとうございました。
355nobodyさん:2005/03/26(土) 10:18:14 ID:???
>>354
サンクスです。
PHP4のoopはあんまり使えないですねorz
356PATH_INFO:2005/03/26(土) 10:44:38 ID:RieTtHlG
自サイトのトップを index.php にしています。
http://www.example.com/index.php
ディレクトリインデックスのファイルを index.php に指定しているので
http://www.example.com/ でもアクセスできます。

このスクリプトで PATH_INFO を使って様々なページを提供しています。
http://www.example.com/index.php/Page1
http://www.example.com/index.php/Page2 などなど

が、index.php が必ず見えるのは不細工なので
http://www.example.com/Page1
http://www.example.com/Page2
のようなURLでアクセスできるようにしたいと思っています。

Apache 2 を使っているのですが、どのように設定すればいいのでしょうか?
357nobodyさん:2005/03/26(土) 11:01:27 ID:???
(´-`).。oO(それはApacheの話な気がするけど・・・)
358nobodyさん:2005/03/26(土) 11:08:00 ID:qY7QRnsD
質問です。

http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=bcname&password=bcpassword&action=listeners

上記記CGIにアクセスすると下記ようにテキストでのXML形式のデータが出力されます。

<?xml version="1.0" encoding="ISO-8859-1" ?>
- <LIVE365_API_STATION_STATUS_CGI>
<Code>0</Code>
<Reason>Success</Reason>
<Stream_status>OK</Stream_status>
<Current_listeners_reg>35</Current_listeners_reg>
<Current_listeners_pm>2</Current_listeners_pm>
<Current_listeners>37</Current_listeners>
<Rating>8.73</Rating>
</LIVE365_API_STATION_STATUS_CGI>

そしてこれをPHPから読み取り、<Current_listeners>37</Current_listeners> の値だけPHPに出力したいのですがどのようにすればいいのでしょうか?
359nobodyさん:2005/03/26(土) 11:15:24 ID:???
>>358
・対象URLからXMLデータを取得
・XMLをパース
・<Current_listeners>のValueを出力

_以上_
360359:2005/03/26(土) 11:18:38 ID:???
ちなみに実際のやり方については、PHPマニュアルから
・「file」で
・「xml」で
・「echo」で
幸れ。

_以上_
361nobodyさん:2005/03/26(土) 11:20:04 ID:qY7QRnsD

>>538-539

thanks a lot!!
362nobodyさん:2005/03/26(土) 12:35:36 ID:???
>>356
PHPの話ではないようなんですが、この方法は私も気になります。
どなたか知ってる方いれば・・・と思うんですが。


いないようならこちらに誘導しときます・・・。
人頼りマンセー

【俺たちゃ裸が】Apache質問スレ【ユニホーム♪】
http://pc8.2ch.net/test/read.cgi/mysv/1103367974/
363nobodyさん:2005/03/26(土) 12:43:53 ID:???
document rootでやったことないのとpath_infoではないけど、
たぶんmod_rewriteなら出来るとおもうよ。
364358:2005/03/26(土) 12:53:31 ID:qY7QRnsD
>>359
エラーが出てしまいます。
ファイルの指定がおかしいみたいなのですが
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}

$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = file (http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=*****&password=*****&action=listeners, 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
365358:2005/03/26(土) 13:07:15 ID:qY7QRnsD

CGIのアドレスに無理やり拡張子 &.xml と入れても問題なかったので

下記のようにFILEだけならちゃんと動きました

バースがおかしいようです

<?php

$lines = file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml');

// 配列をループしてHTMLをHTMLソースとして表示し、行番号もつけます。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
}

// 他の例として、Webページを文字列に取り込みます。file_get_contents()も参照してください。
$html = implode ('', file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=eurobeat&password=07075710&action=listeners&.xml'));
?>
366358:2005/03/26(土) 13:44:52 ID:qY7QRnsD
'で囲むのをやっていなかったみたいです。
以下で出来ました
<?php
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = fopen ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml', 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
?>
367nobodyさん:2005/03/26(土) 14:31:21 ID:???
>>364-366
ここはチラシの裏じゃねぇよ。
368nobodyさん:2005/03/26(土) 16:53:02 ID:???
>>350
>25番ポートは開放されています。
実際に開放されてることはどうやって確認したの?

>しかし設定によって遮断されているというのはありえるのでしょうか?
自分はWindowsは良く知らないので、思わぬところに設定があったりして
はまることは良くある。あと今回はNATかなんかで外のISPのSMTPに繋ぐから
関係ないんだろうけど、外のSMTPサーバ側で接続規制してることも稀にあるからね。
369nobodyさん:2005/03/26(土) 17:22:24 ID:???
このperlの命令をPHPで同じことをするにはどうしたらいいのでしょうか?
unpack 'B133',substr($data,8,17);
370nobodyさん:2005/03/27(日) 01:12:17 ID:KQq1VVe4
Apache+PHPはどんな実行環境なんでしょうか?
一回のGetに対してphp.iniで設定されているmemory_limit分のメモリが
割り当てられて複数のGetに複数の処理系が動くのでしょうか?
371nobodyさん:2005/03/27(日) 01:15:25 ID:???
>>370
Apacheのモジュールの場合は、Apacheのプロセスで動作する。
372nobodyさん:2005/03/27(日) 08:15:29 ID:x1LbwUGs
execがうまく動かないんだけど、なんでだろう
セーフモードとか全オフなのになー
373nobodyさん:2005/03/27(日) 17:14:47 ID:???
>>372
独り言は日記帳に
374nobodyさん:2005/03/28(月) 08:16:30 ID:???
PHP のスクリプトを CUI で起動してるんですが、
php in malloc(): error: allocation failed
って出て、Core を吐きます。内容としては、データベースにアクセスして、
データをメモリにじゃんじゃんぶち込んでるんですけど…
PHP だとどのくらいまで耐えられるんでしょうねぇ?
Machine は FreeBSD 5.2.1-R で確かに物理メモリで 512MB しかつんでないけど、
top で見てみても PHP がぶっちぎってる感じはしないし、swap は 4GB ちかくあります。
ちなみに core の容量はだいたい…500MB くらい。
375374:2005/03/28(月) 08:19:01 ID:???
書き忘れました。
PHP 4.3.10 (cli)
です。 >> 374 の s/CUI/cli/g ですね。。
376nobodyさん:2005/03/28(月) 09:23:27 ID:???
PHPの設定のmemory_limitを-1に
メモリ食いつぶしても俺のせいにしないでね
377nobodyさん:2005/03/28(月) 10:02:33 ID:YyD4GvIT
たとえば2chのスレをスレタイのキーワードで絞って表示するようなスクリプトがあったとして、
$keyword = 'きーわーど';となってて、キーワード指定しないで全て表示したいときは
$keyword = '*';でOKでしょうか?
378nobodyさん:2005/03/28(月) 10:12:58 ID:???
>>377
いまいちわからん。
379nobodyさん:2005/03/28(月) 10:48:41 ID:8BD5QTo3
if文でチェキラしといて、スルーしとけばいくね?
どんな感じか解んねーけど、取りあえずチェキッとけとって。
380nobodyさん:2005/03/28(月) 11:45:09 ID:Z3hOsg+9
ログを保存するとき日付の項目を、
「05/03/28(月)」という形式にしているのですが、
保存するときはタイムスタンプで保存して、
出力時に日付に変換するほうがいいのですか?
381nobodyさん:2005/03/28(月) 11:54:19 ID:???
そうすると処理は増える。
どっちが良いのかは、必要があるか無いかで判断すれ。
382nobodyさん:2005/03/28(月) 13:08:42 ID:1BLl4/4M
アニメーションGIFってイメージ関数では作れませんよね?
だとすると、バイナリデータを操作して作るしかないのでしょうか?
383nobodyさん:2005/03/28(月) 13:27:12 ID:???
>>377
2chのスレをスレタイのキーワードで絞って表示するようなスクリプト次第
384nobodyさん:2005/03/28(月) 15:22:19 ID:???
>>382
PHPを使ってということならその通り
自分でライブラリを作って公開したらどう
385382:2005/03/28(月) 16:02:00 ID:???
そうですか。では自分で作ってみることにします。
ありがとうございました。
386nobodyさん:2005/03/28(月) 17:48:52 ID:0by1676F
【種別】 掲示板
【言語】 問いません
【備考】
ttp://pc5.2ch.net/test/read.cgi/hp/1106947416/
上のような感じのものがいいのですが
387nobodyさん:2005/03/28(月) 17:49:40 ID:???
>>386
誤爆しました
388nobodyさん:2005/03/28(月) 18:11:52 ID:???
(・∀・)ニヤニヤ
389nobodyさん:2005/03/28(月) 20:16:03 ID:YyD4GvIT
>>378 >>383
実は人様(今連絡とれませんorz)に作って頂いたスクリプトなので、
その部分を公開したいのですがちょっと気が引けます。。

でもそれじゃあ相談できませんよねorz
うーん。。。
390nobodyさん:2005/03/28(月) 23:32:54 ID:IX4olP0V
質問です。
SSHでルート権限でログインして du $dir とした場合と
phpで shell_exec( 'du $dir') を実行した場合(ブラウザからアクセス)では
なぜかSSHからのサイズのほぼ2倍になってしまいます。

ディレクトリのリストは同じように表示されるのですがそれぞれのサイズがほぼ2倍になっています。(サイズが1の場合は1のままでトータルでほぼ2倍)

念のため:容量計算対象のディレクトリ内ファイル・サブディレクトリ等は全てphpで作成されてます

これは何が原因なのでしょうか?

【環境】
レンタル鯖のVPS
FreeBSD 4.7
PHP4.3.9(apacheのモジュールとして動作)
Apache/1.3.33
391nobodyさん:2005/03/29(火) 03:08:23 ID:sh3sT6Yb
質問お願いします。
classのメンバ変数に他のクラスのインスタンスを置いたとき、
そのメンバ変数のメソッドを実行する時は
$this->hoge->proc();
では駄目なんでしょうか?
Call to a member function on a non-objectとエラーが出てしまいます。
何かヒントでもあればお願いします。
392nobodyさん:2005/03/29(火) 03:23:49 ID:???
>>391
ヒントも何も普通に使えるよ。

393391:2005/03/29(火) 04:01:37 ID:???
>>392
え?まぢっすか。
見直してみます。
どうもありがとうございます。
394nobodyさん:2005/03/29(火) 10:58:39 ID:ChFumad5
ローカルフォルダにある.htmlと.phpファイルを
ブラウザでFTPの様にディレクトリ表示させリンクでファイルを開きたいのですが

良いスクリプトがあれば教えてください。
395nobodyさん:2005/03/29(火) 11:08:40 ID:???
あきらかにすれ違い  死ね
396394:2005/03/29(火) 13:04:39 ID:???
自己解決しました。
397nobodyさん:2005/03/30(水) 19:06:28 ID:???
2次元配列$hogeを関数に送って関数内で例えば$hoge[0][0]なら(0,0,$hoge[0][0])と
2次元配列全部の要素をループで取得したいのですけど、どのようにすればいいのでしょうか?
宜しくお願いします。
398nobodyさん:2005/03/30(水) 19:12:55 ID:???
2度ループ処理すれば良いと思うよ。
399nobodyさん:2005/03/30(水) 19:45:47 ID:???
>>398
サンクスです。
2次元配列の添字ってどうやって取得するのですか?
400nobodyさん:2005/03/30(水) 20:24:10 ID:???
>>399
マニュアル読め。
$hoge[0][0]とかで出来るけど。
401nobodyさん:2005/03/30(水) 20:26:55 ID:???
foreach($hoge as $out_key => $out_value){
foreach ($out_value as $in_key => $in_value) {
//ここで好きに処理汁。
}
}

array関連の関数を見るのも吉
402nobodyさん:2005/03/30(水) 20:27:14 ID:???
>>399
foreach($array1 as $key1=>$value1){
 // 1. foreach ver.
 foreach($value1 as $key2=>$value2){ /* 処理内容 */ }
 // 2. for ver.
 for($i=0; $i<count($value1); $i++){ /* 処理内容 */ } // forの2重ループでも当然可
}
実際のコードを書く時には、配列要素のチェック等が必要。
403nobodyさん:2005/03/30(水) 20:45:00 ID:???
PHPでMySQLの操作に関するのはこのスレで良い?
404nobodyさん:2005/03/30(水) 20:54:57 ID:???
>>403
とりあえず、書いてみ。
話はそれからだ。
405nobodyさん:2005/03/30(水) 21:12:44 ID:???
linuxでアップロードしたファイルがupload_tmp_dirに作成されないのですが
原因として何が考えられるでしょうか?
sleep()で止めてファイルを確認しても作られません。
file_uploadsOn
406nobodyさん:2005/03/30(水) 21:16:14 ID:???
んじゃとりあえず聞いてみる。
table1に(テーブル名vendor_info)
vendor_name vendor_url
Abit http://abit.....
ASUS http://asus....

table2に(テーブル名mb_info)
mb_name mb_url vendor_kind その他諸々
AV8 http:// Abit
A8V http:// ASUS

から、リストを
Abit(リンクvendor_url) AV8(リンクmb_url) その他諸々データ
という風にmb_infoのベンダー名からvendor_infoのvendor_urlのデータを
持ってきたいんだけど、試行錯誤した結果思ったとおりに出力できたソースが
(続く)
407406:2005/03/30(水) 21:19:08 ID:???
$SQL = "SELECT * FROM mb_info GROUP BY mb_name ORDER BY vendor_kind";
$res = $conn->query($SQL);
if (! DB::isError($res)) {
// レコードの取得
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
vendorurl ();
echo "<a href=\"" . $row['mb_url'] . "\">" .$row['mb_name'] . "</a> |\n";
echo "<br>\n";
}
}
echo $res->numRows();

// データベースの切断
$conn->disconnect();


function vendorurl(){
global $conn;
global $row;
$sqlurl = "SELECT vendor_url FROM vendor_info WHERE vendor_name='" . $row['vendor_kind'] . " '";
$resurl = $conn->query($sqlurl);
if (! DB::isError($resurl)) {
while ($rowurl = $resurl->fetchRow(DB_FETCHMODE_ASSOC)) {
echo "<a href=\"" . $rowurl['vendor_url'] . "\">" . $row['vendor_kind'] . "</a> |\n";
}
}
}//function vendorurl
こうなった。んで思ったとおりに表示されてるんだけど、リレーショナルデータベース
の使い方としてこれで良いのか、もっとスマートなやり方があるのかお聞きしたい。
408405:2005/03/30(水) 21:36:19 ID:???
自己解決・・切腹物だった・・・
409nobodyさん:2005/03/30(水) 22:23:17 ID:???
>>406
SELECT * FROM mb_info,vendor_info
WHERE mb_info.vendor_kind = vendor_info.vendor_name
GROUP BY mb_info.mb_name
ORDER BY mb_info.vendor_kind;
410nobodyさん:2005/03/30(水) 22:50:33 ID:???
>>408
切腹する前に何で悩んでたか教えてくれ
それで笑わせてくれ
411nobodyさん:2005/03/30(水) 23:14:01 ID:???
>>409
なるほど、そうやって使うものなのね。
自分で>>407を書いててこれってリレーショナルな使い方じゃないよな・・・
って素人ながらに感じていたんだよ。
完全にSQLスレで聞いたほうが良い内容だったけど、お蔭様で先が見えてきました。
ありがとう。
412nobodyさん:皇紀2665/04/01(金) 00:38:54 ID:6CcmQp6c
CGI版のphpで、エラーがでる場合、internal server errorになりますよね。
このエラー内容を、ブラウザに表示できないでしょうか?

Perlだと、
use CGI::Carp qw(carpout fatalsToBrowser);
とか、
Kcatch.pm
っていうものがあるのですが・・・

なんかライブラリなりコードでもいいので、
ご存じの方、教えていただければ幸いです。
413nobodyさん:皇紀2665/04/01(金) 01:25:04 ID:???
ブラウザを綴じて一定期間中セッションを残したいんだが
どうすればいい?
414nobodyさん:皇紀2665/04/01(金) 01:33:55 ID:???
>>413
マニュアル読めばいい。
415nobodyさん:皇紀2665/04/01(金) 01:55:33 ID:???
有難うございます。
何ページですか。
416nobodyさん:皇紀2665/04/01(金) 01:59:08 ID:6CcmQp6c
>>415 おいおいそれはたよりすぎ。
www.php.net いって、sessionで検索。
あとはまかせた。

session はある程度の知識がないうちに公開しちゃうと、
いろいろとセキュリティーホールになるので注意
417nobodyさん:皇紀2665/04/01(金) 02:02:03 ID:???
SingleHTML版のマニュアルを落としてきて、1ページ目を読む。
418nobodyさん:皇紀2665/04/01(金) 02:02:12 ID:???
おいおい
エイプリルフールですyo!
419nobodyさん:皇紀2665/04/01(金) 02:08:52 ID:???
なるほど
420nobodyさん:皇紀2665/04/01(金) 08:16:41 ID:???
おまいら、PHP 4.3.11と5.0.4がリリースされましたよ。
昨夜PHP4も5もコンパイルしたばっかりだというのに...orz
421nobodyさん:皇紀2665/04/01(金) 08:38:19 ID:???
>>420
うそと思いながらも確認してしまった俺
422nobodyさん:皇紀2665/04/01(金) 11:08:27 ID:???
だぁ〜っ、ネタかよっ!釣られた!
>>412
error_reporting
423nobodyさん:皇紀2665/04/01(金) 11:16:34 ID:???
php4は昨年と変わらず(ナディア)、php5はウサギ(?)だった
424nobodyさん:皇紀2665/04/01(金) 12:21:42 ID:???
たぶん>>420はここのネタにつられたんではないかと。
ttp://www.sitepoint.com/blog-post-view.php?id=248887
425421:皇紀2665/04/01(金) 12:41:40 ID:???
今見たら本当にリリースされてるし
リリースの日付は3/31だからエイプリルフールじゃないよな
426nobodyさん:皇紀2665/04/01(金) 19:11:43 ID:???
PHPのログが犬になってるのはイースターエッグだな
427nobodyさん:皇紀2665/04/01(金) 19:12:12 ID:???
ログじゃねー ロゴだ
phpinfo() や公式に確認可
428nobodyさん:皇紀2665/04/02(土) 01:44:36 ID:???
ショッピングカートのセッションについて教えてください。
2つのブラウザで同時にアクセスすると同一セッションになりますが、
1つ目のブラウザが決済のページに入ったら2つ目のブラウザは
決済ページを表示できないようにしたいです。
429nobodyさん:皇紀2665/04/02(土) 02:42:07 ID:???
>>428
新しいセッション開始すれば?
430nobodyさん:2005/04/02(土) 05:01:43 ID:4/Eqlz9k
PHP5はそろそろ乗り換えてもいい感じですかね。
431nobodyさん:2005/04/02(土) 05:02:31 ID:???
PHP6になるまで待つのだ
432nobodyさん:2005/04/02(土) 11:45:09 ID:???
5.0.4揚げ
433nobodyさん:2005/04/02(土) 18:06:21 ID:55/k15cN
PHPサイトを立てようと思っているのですが、負荷テストを行いたいです。

知り合いにそういったツールがあると聞いたのですが、どんなものがあるのでしょうか?
434nobodyさん:2005/04/02(土) 18:37:44 ID:???
2ちゃんで晒す
435nobodyさん:2005/04/02(土) 18:40:02 ID:???
>>433
ab
436nobodyさん:2005/04/02(土) 20:25:51 ID:A7D+JrLe
phpでパスワード付きzipを作成するコマンドを発行したいのですがどうしたらよいのでしょうか。 
437nobodyさん:2005/04/02(土) 23:15:02 ID:???
>>436
PHPからコマンド発行するには
systemかexec関数を使えば良いよ
438nobodyさん:2005/04/02(土) 23:20:20 ID:A7D+JrLe
パスワードを入力する対話型の部分はどうしたらよいのでしょう?
439nobodyさん:2005/04/02(土) 23:25:29 ID:???
>>438
作ればいいんじゃない?
440nobodyさん:2005/04/02(土) 23:39:27 ID:???
>>438

ここにLinuxでパスワード付きのzipファイル生成する話題が出てるんで
このコマンドをphpからsystem関数で発行すれば良いかも

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19632&forum=10&3
441nobodyさん:2005/04/03(日) 09:11:32 ID:rv9qNWYe
単にファイルをダウンロードさせたいだけなのですが、
どうしてもファイルの中身がブラウザに表示されてしまいます。
(以下が、スクリプトまるごと全部です。)
//===========================================================
$sFilename = "seminar.csv";

$sUnixPathFile = $_SERVER["DOCUMENT_ROOT"] . "../data/" . "seminar_request.csv";
$fh = fopen ($sUnixPathFile, "r");
flock($fh,LOCK_EX) or die();
$buffer = fread ($fh, filesize ($sUnixPathFile));
flock($fh,LOCK_UN) or die();
fclose ($fh);

header("Content-disposition: attachment; filename={$sFilename}");
//dummyはIE対策
header("Content-type: application/octet-stream-dummy; name={$sFilename}");
print $buffer;
exit;
//===========================================================
どうすればダウンロードできるのでしょうか?
お助けいただければ幸いです。よろしくお願いします。
442nobodyさん:2005/04/03(日) 10:23:20 ID:???
4.3.11 入れたのに phpinfo が 4.3.10 だ。なぜだ。
443nobodyさん:2005/04/03(日) 10:44:02 ID:???
>>442
インストールミスか、再起動してないとかじゃないの?
ソースはきちんと4.3.11になってたよ。
444nobodyさん:2005/04/03(日) 13:35:14 ID:???
>>433
OSSの性能・信頼性評価/障害解析ツール開発
ttp://www.ipa.go.jp/software/open/forum/DevInfraWG.html
445nobodyさん:2005/04/03(日) 13:42:01 ID:QiTsRZ7F
当方PHPを学んでみようと思ってる者です。
みなさんはどのようにしてPHPを覚えられましたか?
本でしょうか、それともネット上で?
446nobodyさん:2005/04/03(日) 13:54:12 ID:???
>>445
マニュアルを読めば十分。
マニュアルはネットで配布されている。

関数が豊富に用意されているので、
まったくのド素人でも、覚えることそんなに無いかと思う。

とは言っても、アルゴリズムの一つや二つ知ってるだけでも、
かなり違ってくると思うので、本を買うのも、また良し。
(本に書いてあるかどうかは不明)
447nobodyさん:2005/04/03(日) 14:00:57 ID:QiTsRZ7F
即時の返答ありがとうございます!
マニュアルってこれのことですね。
ttp://php.s3.to/man/

早速トライしてみます。
448nobodyさん:2005/04/03(日) 14:47:13 ID:IkqaEHUC
当方MacOSX、PHP5.0.4、POSTFIX2.?を使ってプログラムを組んでいます。
メールアドレスを登録してくれた人に、返信メールを送るシステムを作ったのですが、
携帯に返信できません。(実験したdomainは@t.vodafone.ne.jp)
Mb_Send_Mail($address, $subject, $text, $header)
で、$headerには自分のドメイン(DDNSで運営している)を入力しているのですが。

知ってる方いらっしゃいませんか?
449441:2005/04/03(日) 16:00:01 ID:rv9qNWYe
>>441 どなたかわからないでしょうか?
450nobodyさん:2005/04/03(日) 17:24:55 ID:???
>>449
俺はPEARのHTTP_Downloadを使ってる。

$dl = &new HTTP_Download();
$dl->setData($fileData);
$dl->setLastModified(time());
$dl->setContentType("application/x-octetstream");
$dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, $fileName);
$dl->send();

$fileData:ファイルの中身
$fileName:ファイル名
こんな感じでo.k.
451nobodyさん:2005/04/03(日) 18:06:18 ID:???
全角カタカナと全角ナカグロ(・)と全角ハイフン(−)のみで構成されている文字列か否かは、
以下の正規表現ではだめなのでしょうか?
どうしてもfalseになってしまいます・・・

if (preg_match("/^[ア-ン・−]+$/",$aParam["company_name_kana"]))

お助け願えれば幸いです。
452nobodyさん:2005/04/03(日) 18:42:28 ID:???
マルチバイト文字は
mb_eregiかmb_eregを使って正規表現できる
453nobodyさん:2005/04/03(日) 18:44:05 ID:???
>>451
カタカナが違うっぽい。
chr()とord()を使って文字コードについて考えるよろし。
454nobodyさん:2005/04/03(日) 18:44:49 ID:???
preg_*だとUTF8使えば可能
455451:2005/04/03(日) 19:45:30 ID:rv9qNWYe
>>452さん
んー、PHPのサイトみたらnmb_eregiかmb_eregは、まだ実験的ってあるので、避けたいところでして・・・

>>453さん
んー、しらべてみたところ、
if (preg_match("/^[ァ-ヶ・−]+$/"/",$aParam["company_name_kana"]))
かな、と思ったのですが、実行してみたら、だめでした・・・_| ̄|○

>>454さん
「preg_*だとUTF8使えば可能」ってのは、UTF8を使わないとダメってことでしょか?
あるいはEUCでも可能な方法はあるのでしょうか・・・

恐縮ですが、よろしくお願いします。
456nobodyさん:2005/04/03(日) 21:22:06 ID:???
>>442
Windows版PHPでphp-ts.dll他を入れ替えてないというオチでは?

>>447
検索だとそのサイトがどうも上位に来るようなんだけど、マニュアルが古いから
ちゃんと本家のマニュアルをベースにした方が良いよ。
あと手元にアーカイブをコピーしてそっち見るとか。
http://jp.php.net/manual/ja/
457nobodyさん:2005/04/03(日) 21:47:00 ID:wg0bg1Ve
hogehoge
2ch

という2つのフォルダが同じディレクトリ内にあるとして、
2chのindex.phpからhogehogeのindex.phpを指定する場合

<?php chdir("../hogehoge/"); include("index.php"); ?>

と記述するとエラーが出てしまうんですが、どこが間違っていますか?
458nobodyさん:2005/04/03(日) 21:55:15 ID:???
なぜ
<? include("../hogehoge/index.php") ?>
と書かないの?
459nobodyさん:2005/04/03(日) 22:02:23 ID:???
>>455
マニュアルの記述は古いので現在は実験的ステータスってのは英語版のマニュアルには無い。

preg_*はUTF8でないと正確に日本語を扱うことは出来ない。
460457:2005/04/03(日) 22:08:12 ID:???
>>458
以前その書き方をした時にエラーが出て、457のような書き方を知ったんですよ。。
でも今それを試してみたらできました。
よくわかんないけど解決しました。
ありがとうございました。
461nobodyさん:2005/04/03(日) 22:39:13 ID:???
>>460
その環境のセーフモードに関わるあたりの設定か、
その当時の(PHPのセーフモード絡み)バグかと思われ。
# セーフモード絡みのバグは結構多い。
462nobodyさん:2005/04/04(月) 00:28:53 ID:/X5zJ+6W
ITmedia エンタープライズ:PHP、DoS攻撃の脆弱性に対処
http://www.itmedia.co.jp/enterprise/articles/0504/03/news010.html
463nobodyさん:2005/04/04(月) 00:53:24 ID:???
ob_start()っていみあんの?
マニュアル読んだけどポンとこないいだなぁ
どんなとき使うの?
464nobodyさん:2005/04/04(月) 01:25:35 ID:???
>>463
ob_start();
curl_exec($ch);
$str = ob_get_contents();
ob_end_clean();
465nobodyさん:2005/04/04(月) 02:28:34 ID:???
バッファリングする必要はある?
466nobodyさん:2005/04/04(月) 02:51:56 ID:???
>>465
curl_exec()はphpinfo()等といっしょで、実行すると(通常は)標準出力に垂れ流しちゃうから、
こうやってバッファリングでキャッチするしか、その出力を変数として取得できないんよ。
467nobodyさん:2005/04/04(月) 04:10:19 ID:???
curlって普段使ってないんですけど、あまり関係ないかなぁ
こんな使い方で着ますか?
header("location...."の出力の前になにか出力されていると
エラーになるけどob_start()使えば大丈夫?
468nobodyさん:2005/04/04(月) 04:21:27 ID:???
>>467
header前に出力してしまうような仕様を見直したほうがいいぞ。
不意に出力してしまうのを回避ってなら、ob_start()前に出力してしまう可能性もあるわけだし。

あと、某スレへの誤爆してしまったものだがw

> 881 名前:nobodyさん[] 投稿日:2005/04/04(月) 03:08:04 ID:Es2o76gF
> PEARのエラーハンドリングもob_start()でphpが出す
> エラーメッセージをそのまま出力しないように取り込んでるね。
469nobodyさん:2005/04/04(月) 09:34:12 ID:???
PEARのソース(HTTP.phpとかHTTP/Download.php)を読んでいて、
$_SERVER['REMOTE_HOST']
$_SERVER['PATH_INFO']
$_SERVER['CONTENT_TYPE']
$_SERVER['HTTPS']
$_SERVER['HTTP_RANGE']
$_SERVER['HTTP_IF_NONE_MATCH']
$_SERVER['HTTP_IF_MATCH']
$_SERVER['HTTP_IF_UNMODIFIED_SINCE']
$_SERVER['HTTP_IF_MODIFIED_SINCE']
の様な記述を見たのですが、cliでもApacheモジュールでも値が取得できません。
これらの値はどういうときにセットされるんですかね?
470nobodyさん:2005/04/04(月) 09:59:45 ID:???
>>469
CLIは無理だろ。サーバモジュール版で取れない理由は判らんが、
サーバ側がセットしてないからかな。mod_envを入れてないとか。
471447:2005/04/04(月) 10:43:04 ID:???
>>456
わざわざありがとうございます!ここの板の方は親切な方ばかりで。
本家のマニュアルを参考にしてPHPを使いこなせるように精進します。
472nobodyさん:2005/04/04(月) 12:54:34 ID:???
Spreadsheet_Excel_Readerで日本語を表示させられるのでしょうか?
473nobodyさん:2005/04/04(月) 15:50:32 ID:8msdlW8Q
linux fedora core2にphp4がインストールされているのですが、これをphp5にバージョンアップするにはどのようにしたらよいのですか?
474469:2005/04/04(月) 16:14:02 ID:???
>>470
> >>469
> CLIは無理だろ。
いや分かってますが、一応お約束ということで確認しました。

Apacheのhttpd.confではmod_envが有効になっていますが、
$_SERVER['HTTPS']を表示させようとするとUndefined indexが
返ってくるので有効になってないということですかね。



475nobodyさん:2005/04/04(月) 16:21:11 ID:???
>>469
$_SERVER['REMOTE_HOST']
Apache の設定がHostnameLookups Offになってるとセットされない
$_SERVER['PATH_INFO']
URLにPath infoが含まれないとセットされない
$_SERVER['CONTENT_TYPE']
GETの場合はセットされない
$_SERVER['HTTPS']
httpsじゃないとセットされない
$_SERVER['HTTP_RANGE']
$_SERVER['HTTP_IF_NONE_MATCH']
$_SERVER['HTTP_IF_MATCH']
$_SERVER['HTTP_IF_UNMODIFIED_SINCE']
$_SERVER['HTTP_IF_MODIFIED_SINCE']
ユーザーエージェントが送らないとセットされない
476nobodyさん:2005/04/04(月) 16:22:11 ID:???
$_SERVER['HTTPS']なんてあったっけ、、、
あったとしてもSSL関連のっぽいし
print_r($_SERVER)してみたら
477469:2005/04/04(月) 17:01:34 ID:???
>>475
おお、ありがとうございます。
まさに解説のとおりでした。

>>476
HTTP.phpでは、
$protocol = isset($_SERVER['HTTPS']) ? 'https' : 'http';
みたいな感じで使ってました。


何がしたかったのかというと、$_SERVER と getenv が等価なのかを
知りたかったのです。
完全に等価なら getenv に書き換えて、php.iniの
variables_order = "EGPCS" を "GPC" にしてメモリを節約しようかと。

foreach ($_SERVER as $key => $value) {
echo $key .":". $_SERVER[$key] ."=>". getenv($key) ."</ br>";
}
でチェックすると、getenv には 'PHP_SELF' はセットされていないようですね。
PATH_INFO は使わないことにして、getenv('SCRIPT_NAME') で代替するかな。
478nobodyさん:2005/04/04(月) 17:42:57 ID:???
質問です

例えばtest.phpがあったとして
そのソースの中にtest.phpを読み込む記述をしたら無限ループしちゃうの?
479nobodyさん:2005/04/04(月) 17:46:46 ID:???
やってみれば?
480nobodyさん:2005/04/04(月) 18:17:36 ID:???
>>478
怖いです…
481nobodyさん:2005/04/04(月) 18:18:40 ID:???
>>478じゃなく>>479だった
レンタル鯖なんでダウンとかしたら怖いのです
482nobodyさん:2005/04/04(月) 18:29:31 ID:???
>>481
2chに書き込んでいるマシンにPHPを入れて試せばいいやん。
別にApache入れたりせんでもコマンドラインで試せるでしょ。
483nobodyさん:2005/04/04(月) 19:41:50 ID:???
無限ループになる可能性があるならinclude_onceを使うのが正しい方法
484nobodyさん:2005/04/04(月) 20:01:18 ID:???
無限ループを起こすと PHP がスクリプトに強制停止命令を出してると思った
485nobodyさん:2005/04/04(月) 21:33:40 ID:???
>>484
そんなことは無い。

xdebugかましてたり、php.iniで実行時間の上限を設定していたら別だが。
486nobodyさん:2005/04/05(火) 00:26:42 ID:???
質問です。
以下のxmlスクリプトをsimpleXML関数で読み込み、
<root>
 <p>ああ</p>
 <p>いい</p>
 <comment>アア</comment>
 <p>うう</p>
 <comment>イイ</comment>
</root>
これを上から順に、以下のように出力したいのですが、どうすればいいのでしょうか?
ああ
いい
アア
うう
イイ
487nobodyさん:2005/04/05(火) 09:06:53 ID:???
filesize()やgetimagesize()を使うときに
fsockopen()みたいにHTTPヘッダを自分で用意することはできないのでしょうか?
もしくはfsockopen()でソケット接続ときに上の関数で取得する方法

またfilesize()を使ってからgetimagesize()使うと
URLに2回アクセスすることになるのですが、
1回のアクセスで同時に取得することは可能ですか?

分かる方がいたら教えてください。
488nobodyさん:2005/04/05(火) 09:29:10 ID:???
>>487
リモートのファイルを取得してローカルの/tmpに保存。
そのファイルに対して各関数を適用すればいいんじゃないの?
httpのheadリクエストでも取得できる場合もあるけども。
489U N S E T( ) ◆g9jPPQs3mo :2005/04/05(火) 10:07:51 ID:???
>>478
俺はチャレンジャーなのでやってみた。
winxpsp2

コードは下記
<?php
include "incl.php";
?>
結果はページは表示されません、っとでます。
ちょっと期待してたのに詰まんないので、下記もやってみる。
<?php
echo "a";
include "incl.php";
?>
一緒だったorz
490nobodyさん:2005/04/05(火) 10:44:32 ID:???
500? 403?
491nobodyさん:2005/04/05(火) 11:21:06 ID:???
Perlのuse strictに相当するものってないんでしょうか?
492nobodyさん:2005/04/05(火) 11:22:29 ID:???
>>489
実は俺もやった
Windows のApache2.0 moduleで
Parent: child process exited with status 3221225477 -- Restarting.
>>490
Apacheの子プロセスがこけたので何も帰ってきません
493nobodyさん:2005/04/05(火) 13:16:47 ID:FyaY+6Ab
textareaからPOSTで渡ってきた値にnl2brをかけて(エスケープ処理は略)
改行コードだけを取り除き、ファイルに保存しようとしているのだが

$str = nl2br(trim($_POST['str']));
$str = str_replace("\n", "", $str);
$str = str_replace("\r\n", "", $str);
$str = str_replace("\r", "", $str);

改行が取れない、nl2brを行わなければ問題なく改行コードを
除去できるのだが、何故?
494nobodyさん:2005/04/05(火) 13:25:15 ID:???
>>491
ないけど、エラーレポート最大に上げれば結構厳密なチェックが出来るよ
495nobodyさん:2005/04/05(火) 13:48:01 ID:???
cronから-fで起動した時だけに

PHP Warning: Unknown(): Unable to load dynamic library

のエラーが出ます。普通に起動した場合はちゃんと動きます。
どんな理由が考えられるでしょうか。どなたかお助けを・・・。
496nobodyさん:2005/04/05(火) 13:53:27 ID:???
>>493
nl2brの使い方を間違ってるから。
497nobodyさん:2005/04/05(火) 13:54:19 ID:???
>>495
環境変数の関係でphp.iniを指定してやらなならんのですバイ。
498nobodyさん:2005/04/05(火) 14:02:24 ID:???
>>493
自分の環境ではちゃんと削除されました。
WinXP PHP5.0.4
Linux PHP4.3.10
499nobodyさん:2005/04/05(火) 14:22:34 ID:???
>>488
返信ありがとうございます。
そちらのほうが効率も良さそうなので早速使ってみました。

調子に乗って悪いのですが
受け取るデータの量を制限したいので↓みたいにして動作はするのですが
while(!feof($fp)){
  $data .= fgets($fp, 128);
  if(strlen($data) > 1048576){
    fclose($fp);
    echo "IMB超えちゃった";
    break;
    die;
  }
}
ループ毎にstrlenで数えて判定をだすというのは効率が悪い気がするので
うまくチェックする方法はないですか?
500499:2005/04/05(火) 14:23:59 ID:???
dieするならbreakはいらないか
501nobodyさん:2005/04/05(火) 15:24:53 ID:???
>>497
ありがとうございます。
php自体は動くようになったのですが、今度はpostgresが動かない。
configureの確認かな・・・。
502nobodyさん:2005/04/05(火) 15:54:20 ID:???
>>501
postgres単独では動作してるの?

PHP + PostgreSQL
http://pc8.2ch.net/test/read.cgi/php/983128806/
こんなのもあるよ。
503nobodyさん:2005/04/05(火) 16:42:18 ID:???
くだ質スレ向きかもしれないけど・・・
phpinfo()で表示される
Thread Safety  disabled
ってPHPのこといってるんでしょうか。
504nobodyさん:2005/04/05(火) 17:05:06 ID:???
>>503
Yes.

Zend Thread Safety(ZTS)
--enable-maintainer-zts
--enable-roxen-zts
505491:2005/04/05(火) 19:04:41 ID:???
>>494
どーもです。
<?php
ini_set('error_reporting', E_NOTICE);
echo $a[0];
echo $b;
?>
としたら
Warning: Undefined variable: a in /home/miyakegumi/public_html/wat/php/test.php on line 3
Warning: Undefined variable: b in /home/miyakegumi/public_html/wat/php/test.php on line 4
と吐いてくれました。
代入は検出できませんが、これだけでもあると助かります。
506nobodyさん:2005/04/06(水) 07:26:06 ID:nH8oVa9B
php5をFedora core2にインストールしたのですが、apache2から使えるようにするにはどうしたらよいのでしょうか?
507nobodyさん:2005/04/06(水) 07:35:25 ID:???
508nobodyさん:2005/04/06(水) 07:53:21 ID:???
>>504
ありがとう。
このオプションを付けてメイクしApache2と組み合わせれば、スレッドセーフな
PHPが利用できるということですか?
今はApache 1.3の環境しかないので週末にでも試してみます。
509nobodyさん:2005/04/06(水) 08:36:34 ID:???
>>493
最初に\n消しちゃ駄目だ
510nobodyさん:2005/04/06(水) 10:46:50 ID:gc7DD2Cw
文字列になったXMLのパースをさせたいのですが、例えば
'<mojiretsu>moji"retsu</mojiretsu>'
みたいなかんじに、その文字列内に実体参照が入っています。
これを xml_parse_into_struct() に喰わせてやると、
実体参照がことごとく消えてしまうのですが、
これはそういう仕様なんでしょうか?
'MOJIRETSU' => 'moji"retsu'
みたいに取り出すにはどうすればいいでしょうか?
PHPは5.0.3を使っています。
511nobodyさん:2005/04/06(水) 10:57:56 ID:???
↑の2行目の " は &quot; のことです。
'<mojiretsu>moji&quot;retsu</mojiretsu>'
512nobodyさん:2005/04/06(水) 11:18:54 ID:???
>>510
><mojiretsu>moji"retsu</mojiretsu>
そもそも、これはXMLの仕様で許されるのか?
CDATAセクションでもなしに。
513nobodyさん:2005/04/06(水) 11:20:40 ID:???
>>511
ちゃんとなってるのね。
514nobodyさん:2005/04/06(水) 12:04:20 ID:???
>>510
<?php
$str = '<mojiretsu>moji&"retsu</mojiretsu>';
$p = xml_parser_create();
xml_parse_into_struct($p,$str,$val,$idx);
xml_parser_free($p);
var_dump($idx);
var_dump($val);
?>

PHP4.3.9(Win)もPHP5.0.4(Win)でも 
array(1) {
["MOJIRETSU"]=>
array(1) {
[0]=>
int(0)
}
}
array(1) {
[0]=>
array(4) {
["tag"]=>
string(9) "MOJIRETSU"
["type"]=>
string(8) "complete"
["level"]=>
int(1)
["value"]=>
string(10) "moji"retsu"
}
}
515514:2005/04/06(水) 12:05:47 ID:???
$strは>>511の内容。
516nobodyさん:2005/04/06(水) 15:51:09 ID:???
空白(半角スペース)を に変更する関数はありますか?
addslashesみたいなのキボン
517516:2005/04/06(水) 15:52:37 ID:???
もう一回
空白(半角スペース)を&nbspに変更する関数はありますか?
518nobodyさん:2005/04/06(水) 16:27:24 ID:???
つstr_replace
519nobodyさん:2005/04/06(水) 16:32:27 ID:???
>>514
どうもです。
それをしてもこうなるんですよね。
バージョンの問題か、OSの問題か、php.iniあたりかということですね。

array(1) {
[0]=>
array(4) {
["tag"]=>
string(9) "MOJIRETSU"
["type"]=>
string(8) "complete"
["level"]=>
int(1)
["value"]=>
string(9) "mojiretsu"
}
}
520nobodyさん:2005/04/06(水) 17:23:20 ID:???
>>519
Linuxでも試してみたけど、

-PHP4.3.10(Linux)/EXPAT 1.95.6
-PHP4.3.10(Linux)/EXPAT 1.95.7
-PHP4.3.11(Windows)/EXPAT 1.95.6
-PHP5.0.4(Windows)/libxml2 2.6.11

全部結果は同様にちゃんと出てる。
521nobodyさん:2005/04/06(水) 17:31:41 ID:???
>>519
つーか、changelogみたら、PHP5.0.3の
Bug#31139 "XML Parser Functions" seem to drop & when parsing
http://bugs.php.net/bug.php?id=31139
そのものじゃないのか?
522nobodyさん:2005/04/06(水) 17:38:27 ID:???
>>519
やっぱ>>521だわ。
-PHP5.0.3(Windows)/libxml2 2.6.11で再現確認。
-PHP5.0.2(Windows)/libxml2 2.6.11では問題なし。
523nobodyさん:2005/04/06(水) 17:44:55 ID:???
<form action="***"method="post>
選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
524nobodyさん:2005/04/06(水) 17:45:23 ID:???
<form action="***"method="post>
選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
525nobodyさん:2005/04/06(水) 17:59:54 ID:???
>>524
---------------------------------
<form action="test.php"method="post>
選択名<BR>
<select name="num">
    ・
    ・
    ・
---------------------------------
[test.php]

<?php
echo $_POST['num'];
?>
---------------------------------

526nobodyさん:2005/04/06(水) 18:02:48 ID:???
>>525
それだけで1.2.3表示できるようになるんですか?
有難うございます。早速試してみます。
527nobodyさん:2005/04/06(水) 18:22:48 ID:???
javadocやdoxygenみたいにソースからドキュメント起こせるツールってある?
528nobodyさん:2005/04/06(水) 19:06:28 ID:???
>>527
PHPDocumentor
529nobodyさん:2005/04/06(水) 19:21:44 ID:???
>>525
質問の仕方が間違っていました。

<form action=www.test.com/test.php method="post">
選択名<BR>
<select name="num">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>


test.php

<?php
if ( $_POST["num"] == "1" ) {
header("LOCATION:http://www.test.com/ 1.html");
}elseif ( $_POST["num"] == "2" ) {
header("LOCATION:http://www .test.com/2.html");
}elseif ( $_POST["num"] == "3" ) {
header("LOCATION:http://www.test.com/ 3.html");
}else {
header("LOCATION: form.html");
}
?>

あっていますか?


530nobodyさん:2005/04/06(水) 20:30:31 ID:???
(´-`).。oO(あってるかどうか試してから書き込めよ)
531nobodyさん:2005/04/06(水) 20:52:36 ID:???
>529
間違っています
どこかのブラウザでどこかの鯖なら間違って動く事もあるかもしれないが。
ってかそれだけの事だけだったらJS使えば?
532nobodyさん:2005/04/06(水) 21:15:05 ID:???
>>520-522
ありがとうございます。ピンポイントでバギー版にあたっちゃったんですね。
533nobodyさん:2005/04/07(木) 00:22:36 ID:???
お世話になります。
htmlのformで注文情報をpostして値をチェック
入力不適切なところがあれば前のページへ戻すのですが、
そのときに値が消えてしまいます。
どうすればよろしいのでしょうか。
534nobodyさん:2005/04/07(木) 00:35:58 ID:???
>>533
> 前のページへ戻す
の所を、適切入力の項目を初期値として設定したものを表示する。
535nobodyさん:2005/04/07(木) 00:48:26 ID:???
お世話になります。
了解しました。
536nobodyさん:2005/04/07(木) 00:48:40 ID:???
>>533
<input type="text" name="hoge" value="$_REQUEST['hoge']">
537nobodyさん:2005/04/07(木) 01:27:11 ID:???
>>536
おいおい。クロスサイトスクリプティングってしってるか?
538nobodyさん:2005/04/07(木) 01:34:41 ID:???
>>537
エスケープしなきゃら無いのは同じだけど、
>>536の場合XSSとは別問題だなw
539nobodyさん:2005/04/07(木) 08:02:27 ID:???
hogeが "><script... とか?
540nobodyさん:2005/04/07(木) 08:17:27 ID:???
$_REQUEST['hoge'] = htmlspecialchars($_REQUEST['hoge']);
ぐらいしてるだろ。
541nobodyさん:2005/04/07(木) 09:18:19 ID:???
世の中、悪さをする奴が悪いのか、それとも悪さをされる奴が悪いのか(--;
542nobodyさん:2005/04/07(木) 09:35:15 ID:???
>>541
そりゃ悪さする奴が悪いが、悪さされたことにより
それが誰かに被害を与えれば、被害を与えた奴が(も)悪い。

ある程度同情はするが免責はせんよ、自分が被害者なら。
543nobodyさん:2005/04/07(木) 15:07:02 ID:???
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
in filename on line 537

というエラーでチュンとも鳴かないスクリプトに困っています。

該当行は、
if(!isset($_POST['datalist'])) { // <----- ココ
return;
}

で、何が悪いのか判りません。
$_POST['datalist'] を、$_POST[datalist] にすると、とりあえずその行でのエラーは消えますが
また次に出てくる配列の部分でエラーになり、配列キーの ' ' を全部消すと、
今度はファイルの最終行で「$が余計です」というエラーになります;;

" " でくくった配列は一つもありません。環境は、PHP4.3.9+Apache2.0 です。
何か思いつく方おられましたら教えてください。よろしくお願いいたします。
544nobodyさん:2005/04/07(木) 16:07:19 ID:???
全角スペースでもはいってんじゃね?
545nobodyさん:2005/04/07(木) 16:07:57 ID:???
>>543
鳴かぬならぶち殺してしまえ、そのスクリプト。

APCとかZendのプリコンパイラとか最適化ツール使ってない?

546nobodyさん:2005/04/07(木) 16:13:32 ID:???
>>543
if文の前に問題があるんだと思うぞ。
なんか閉じ忘れてるとか、セミコロン無いとか…
547nobodyさん:2005/04/07(木) 16:44:56 ID:???
show_source()で表示色に注目しながら探していくか、
次のようなスクリプトでT_ENCAPSED_AND_WHITESPACE部分を抽出してみるとか。

$source = file_get_contents("test2.php");
$tokens = token_get_all($source);
foreach($tokens as $token){
 if(is_string($token)){
//  echo $token."<br>\n";
 }else{
  list($id,$text) = $token;
  print $text."<br>\n";
  if($id == T_ENCAPSED_AND_WHITESPACE){
   print "[this line]".$text."[/this line]<br>\n";
  }
 }
}
548nobodyさん:2005/04/07(木) 17:36:31 ID:???
http://php.s3.to/bbs/bbs5.php
↑これですが、Sn Uploaderのように、
下部にディスク使用量を表示させるにはどうすればよいでしょうか?
549nobodyさん:2005/04/07(木) 17:40:20 ID:???
>>584
下部にSn Uploaderのようにディスク使用量を表示するスクリプトを追加する
550nobodyさん:2005/04/07(木) 17:53:40 ID:???
>>548
echo 'ディスク使用量'.exec('du img').'バイト';
551nobodyさん:2005/04/07(木) 18:35:54 ID:???
>>550の記述を追加してみましたが、できませんでした
552nobodyさん:2005/04/07(木) 18:39:21 ID:???
>>550
しかし *NIX 依存
553nobodyさん:2005/04/07(木) 18:43:53 ID:???
543です。 どうもありがとうございました。

547さんに教えていただいた方法を元に虫潰しにかかりましたが、
今度は別の行でひっかかって動きません;; 想像を絶する見落としなんですかねぇ・・・
問題ないように見えるし、元は4.0.2でちゃんと動いていたものなのですが・・・・・ プンスカ

>545  業者納入なので判りませんが、フツーにしか入れてないと思います

早くしないと旧機が持っていかれてしまう;;  焦りまくりッス 
愚痴スマンです。 ありがとうございました。
554nobodyさん:2005/04/07(木) 19:38:04 ID:vs0utpq/
晒しなさい。
555nobodyさん:2005/04/07(木) 21:15:40 ID:???
>>553
無償なんで普通に入れてたりしますが。
# まあ運用上は有益だけど問題が出るケースもあるから、
# 依頼されなけりゃ入れないが正解だが。

phpinfo()で入ってるか簡単に判るので念のため確認しとき。
何にせよ自分が使ってる環境を本人が認識できてないなんて、良くないことなんだから。
PHP4.3.9ならPHP Accelerator(PHPA)か、Zend Optimizerのどっちか。APCはない
556nobodyさん:2005/04/07(木) 23:41:29 ID:???
ログファイルに書き込むときに、
設定した行数を超えたら最初の行を消すようにしたいのですが、
全部書き換える以外にいい方法はありますか?
557nobodyさん:2005/04/08(金) 00:17:56 ID:???
>>556
シーケンシャルな仕組みを使う以上、ない。
558nobodyさん:2005/04/08(金) 00:19:57 ID:???
だよね、どうもありがとう
559nobodyさん:2005/04/08(金) 01:21:41 ID:???
おいおまいら!
スクリプトはシフトジスで書いていますか?
もれはいままでEUCだったけど、なんかスクリプト書くの
ウィンドウズだしシフトジスでいいかなぁなんて思えてきた。
560nobodyさん:2005/04/08(金) 01:40:53 ID:???
>>559
-enable-zend-multibyte
なら、お好きにどうぞ。
561nobodyさん:2005/04/08(金) 01:51:02 ID:???
>>559さんどうもでつ
mbstring.internal_encodingがeucでhtmlのencodingがシフトジス
でphpの記述がシフトジスで問題ないですか?
562nobodyさん:2005/04/08(金) 01:55:51 ID:???
Shift_JISで書く意味なくね?俺はEUCでずっと書いてる
563nobodyさん:2005/04/08(金) 02:03:09 ID:???
mvcになってねぇ
デザがシフトジスでhtlm作るんだよ。
そーするとスクリプトとhtmlですげー厄介
HTML_QuickFormではスクリプト内でformのアトリビュートとか
設定するでしょう、
564nobodyさん:2005/04/08(金) 02:06:51 ID:???
>>563
どちらにせよデザの持ち込むhtmlは、文字エンコードも
改行コードも信用ならんので、間に一括変換噛ますでしょ?
565nobodyさん:2005/04/08(金) 02:12:39 ID:???
改行コードはあんまり気にしてないっす。
でもさぁ EUCにするメリットはあるのか?
いままで鯖のロケールがEUCだったので合わせてたけどね。
クライアントからscpでアクセスしてウィンドウズから
ソース見るしね。
気になるのがDBへのインサートかな。おもにMYSQL使ってんだけど
mysqlの文字コードはどーなってのか心配・・・・
566nobodyさん:2005/04/08(金) 02:27:39 ID:???
WEB関係はUTF8に統一した。
567nobodyさん:2005/04/08(金) 02:30:41 ID:???
好きなの使えば良いさ
568nobodyさん:2005/04/08(金) 02:36:36 ID:???
>>566
裏山椎茸
漏れも速くUTF8に移行したい。
スクリプトはEUCに統一してたんだが、
OSがUTF8な物が増えてきた。
569nobodyさん:2005/04/08(金) 04:17:13 ID:???
utf-8にした場合、phpmyadminで文字化けしない?
570nobodyさん:2005/04/08(金) 04:33:19 ID:???
         ,. ─- 、,,.___
        ,イ〃          `ヽ,__
.     N. {'             \
.    N. {               ヽ
.    N.ヽ`               〉
    N.ヽ`        ,.ィイ从       /
.    ヾミ.___-‐=彡'ノノノ__,ゞミ=-_rく
      lrf´ゞ"モ=ヾーf =モチ<}rv^i !
      ヾト、` ̄,り「弋!  ̄´ノ ソ
         !  ̄  ii{_,.   ̄  /r'´
.       ┌────────────‐┐
       .|                   .|
   ,. -‐ '|                   .|
  / :::::::::::|  >>569              .|__
  / :::::::::::::|  おまいはとんでもない    rニ-─`、
. / : :::::::::::::|  考え違いをしているようだ `┬─‐ .j
〈:::::::::,-─┴-、                  |二ニ イ
. | ::/ .-─┬⊃                     |`iー"|
.レ ヘ.  .ニニ|_____________.|rー''"|
〈 :::::\_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::: |:::::::: /::::::::::::|
571nobodyさん:2005/04/08(金) 07:24:59 ID:???
>>565
SJISの場合は、PHP処理の内部で変換が何度も掛かるので効率が悪い。
(Zend Engineがそのまま扱えないため)
EUC-JP/UTF-8はそれがない。ケータイ向けであっても全部SJISで扱わずに、
最終的な出力でSJISにしてやるのが良い。

という理由はあるが、--enable-zend-multibyteして適正に
mbstring関係設定して使うのなら、別に構わんと思うよ。
判ってて使ってるんだから。理解しないで文字化けがとかが一番ウザイ。
572nobodyさん:2005/04/08(金) 09:42:26 ID:???
>>565
MySQLのバージョンなんぼからだったかは忘れたけど、SJIS対応してるから
SJISに設定すれば問題なく使えるよ。もちろん全く問題なしというわけではないが、
携帯向けの開発中心にやってる俺からすれば、デメリットよりもメリットの方がかなりデカイ。
573nobodyさん:2005/04/08(金) 11:54:02 ID:KGAjK1pc
register_globals=on の状態なんですが
フォームの適当な箇所でEnterを押すと
複数あるsubmitボタンの表示が一番上の値が取得されてしまうのですが
これを下のsubmitボタンの値を取るように、又は値を取らないようにするには
どうしたらよいのでしょうか?
574nobodyさん:2005/04/08(金) 11:59:28 ID:???
>>573
ブラウザの仕様だからPHP側ではにゃんとも
575nobodyさん:2005/04/08(金) 14:38:39 ID:???
>>573
<input type="submit" />じゃなくて<input type="button" />にしてやれば
Enterを押しても送信されない・・・と思う。
576nobodyさん:2005/04/08(金) 17:38:23 ID:???
ビルダーでPHPスクリプト作れますか?
577nobodyさん:2005/04/08(金) 18:18:08 ID:???
>>576
マッチョビルダーじゃ作れない
578nobodyさん:2005/04/08(金) 18:19:52 ID:???
>>577
どうやって作ればいいのですか?
579nobodyさん:2005/04/08(金) 18:27:44 ID:???
外部JavascriptをPHPで吐くようにしたんですが、
FirefoxやOperaでは問題ないのにWin-IEでは実行されません(画面真っ白)。
スクリプトの内容は単なるdocument.writeの羅列です。

同じ内容のJavascriptを普通のjsファイルに書いて読み込めば実行されるのですが・・・
また、そのPHPファイルを直接IEから呼び出すとちゃんとダウンロードされます。

何かIE特有の注意点等ありますでしょうか?
580nobodyさん:2005/04/08(金) 18:53:23 ID:???
>>576
マルチ
>>579
JavaScriptはよく知らないからアレだけど
HTMLのscriptタグ内にtype=text/javascript入れるとか
phpでheader()でContentーtype:text/javascript入れるとか
581579:2005/04/08(金) 18:58:51 ID:???
>>580
どうもです。
一応そこらへんはやってるはずです。
phpのheaderではContent-type: application/x-javascriptを吐いてます。
Contentーtype:text/javascriptもやってみましたが同じでした(´・ω・`)
582nobodyさん:2005/04/08(金) 19:06:02 ID:???
PHPやめて.jsにしたら読める?まずPHPの問題かJavaScriptの問題かはっきりさせよう
583579:2005/04/08(金) 19:26:42 ID:???
>>582
jsファイルにするとうまく行きます。
また、IEでJavascriptのエラーは出てないようです。
584579:2005/04/08(金) 19:39:11 ID:???
問題を単純化するため、以下のようなソースでテストしましたが結果は同じでした・・・
サーバ側の設定の問題でしょうか・・・他のサーバでも試してみます。

[PHPスクリプト]
<?php
header("Content-type: application/x-javascript");
print("document.write('TEST');");
?>

[HTMLファイル]
<body>
<script language="javascript" type="text/javascript" src="http://hoge.com/test.php"></script>
</body>
585nobodyさん:2005/04/08(金) 19:43:24 ID:???
[HTML]
<script type="text/javascript" src="test.php"></script>
[PHP]
<?php
header('Content-type:text/javascript');
print 'document.write("テスト")';
?>

でうまくいくんだが(IE6SP1)
586nobodyさん:2005/04/08(金) 19:49:50 ID:???
>>584
WinXP + Apache2 +PHP5.0.4 では問題なし
あとhttp://hoge.com/は他人のサイトhttp://example.com/を使う
587nobodyさん:2005/04/08(金) 19:57:50 ID:???
<title>タグにphpが吐くソースと違うエンコーディングの文字が入ってたのが
原因でした・・・3回ほど吊ってきます・・・どうもありがとうございました orz
588nobodyさん:2005/04/08(金) 20:15:17 ID:???
参照渡しわからんです。

function Hoge(&$arg)
これと
function & Hoge($arg)
のちがいわなんですか>?

589nobodyさん:2005/04/08(金) 20:45:48 ID:PH5IR/1K
質問です。

例えば、
http://example.com/login.php
↑のような認証ページを用意し、ログインをさせます。
その際にセッションなりで保持したIDとパスワードを用いて、
ftp://example.com/
↑のようなFTPサーバにブラウザでログインさせたいと思っています。

通常のやり方だと、WEBでログインさせ、再びFTPでも認証ダイアログから
ログインさせるか、あるいはURLに
ftp://ID:[email protected]
↑のようにIDパスワードを混ぜることになり、どちらも不本意です。

どうにかならんものでしょうか?
590nobodyさん:2005/04/08(金) 21:07:52 ID:???
動画からサムネイル画像を吐き出すようなライブラリってありますかね?
探してもなかったもんで・・・
591nobodyさん:2005/04/09(土) 01:45:25 ID:BWP/VWku
ファイルを取得→保存→一定時間ごとにファイル更新

こんなことがしたいでつ
こういうのを組むのに参考になるサイトだけでいいんで教えてください
592nobodyさん:2005/04/09(土) 03:14:41 ID:???
>>591
unix系なら cronjob で好きな時に wget --mirror すればいいだけだろう。
windowsは知らない。
593nobodyさん:2005/04/09(土) 03:32:30 ID:???
594nobodyさん:2005/04/09(土) 09:46:58 ID:???
>>593
リファレンスによる返り値でマニュアル読んでたんですけど
わからないです。
マニュアルには リファレンスを返すことは、結合する変数を見付けるために
関数を使用し たい場合に便利です・・・
pear のMDBとかはじめのconnectionなどで使われています。
結合する変数・・・ うーん難しい
595nobodyさん:2005/04/09(土) 10:17:11 ID:???
日本語訳で意味が掴み辛い時は、原文を読めばよい。
Returning by-reference is useful - リファレンスで値を返すことは便利だ
when you want to use a function - 関数を使おうとする時に
to find - 見つけるために
which variable a reference should be bound to. - どの変数をリファレンスと結びつけるか
リファレンスで値を返すのは便利やねん。
どんな時に便利かつーとな、どの変数をリファレンスと結びつけるかを関数でやろうとする時やねん
596nobodyさん:2005/04/09(土) 10:53:53 ID:???
質問させて下さい。

レンタルサーバーのさくらで、PHPを使ったサイトを作ってます。
2年間、問題なくうごいていたのですが、何の変更も
していないのに急に動かなくなりました。
さくら側で何か変更したのかと思いきや
何もしていないと言われました。

唯一変更したとすれば、アパッチのmod_rewriteを使用できるように
しました。。。とだけ言われました。

質問が抽象的ですが、いままでうごいていたのに
うごかなくなった場合、どこから手をつけていけば良いのでしょうか?
597nobodyさん:2005/04/09(土) 11:10:36 ID:???
どう動かなくなったのかも分からない?
598596:2005/04/09(土) 11:25:03 ID:???
コメントありがとうございます。
本当に助かります。

具体的には、クリック数をカウントするリダイレクトが
使用できなくなっているのが1つ。

require_once("password.php");

$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$selectdb = mysql_select_db($DBNAME, $con);

//クリック数をインクリメントするSQL文を発行
$sql = "update sample set clickcount = ifnull(clickcount, 0) + 1
where no = $no";
mysql_query($sql, $con);

//指定されたURLへリダイレクト
header("Location: " . $url);

$con = mysql_close($con);

もう一つは フォームからのデータの受け渡し系が
うまく作動しておりません。

またまた抽象的なのですが、
どこから手をつけていくと、原因を発見できるのでしょうか?
599nobodyさん:2005/04/09(土) 11:56:43 ID:???
管理者とサポセンとは認識が違うだろうけど途中からregister_globalsを変更するとは
思えないんだが・・・
データをあげてphpinfo見てみそ
600nobodyさん:2005/04/09(土) 12:07:15 ID:???
601nobodyさん:2005/04/09(土) 12:58:22 ID:???
テスト運用って有料ユーザーでやる事なのだろうか?_?
602596:2005/04/09(土) 13:01:48 ID:???
>>599

本当にありがとうございます。
早速、見て見ました。

すると、 register_globals が OFF
でした。以前は ON が仕様でしたが
いつのまにか OFF に・・・・

おいおい 連絡してこいよ 

と思いましたが、まぁ原因が分かったので
よかったです。

私のサイトはONじゃないとうごかないものが
ほとんどでして・・・・

ON が OFF になる。
これだけで大きく被害を受けました。。。。
603nobodyさん:2005/04/09(土) 13:05:47 ID:???
mod_rewriteが怪しいと思うなら、htaccessあたりでRewriteEngine offにして動作確認するとか。
オイラなら素直にスクリプトのデバッグをするけども。
きちんとエラー処理をしてれば速攻で問題個所を絞れそうな・・
604nobodyさん:2005/04/09(土) 13:10:17 ID:???
すいません、現在のアンカー位置(<a name=〜>で定義するやつ)を
得ようしたんですが、
$_SERVER["REQUEST_URI"]
$_SERVER['QUERY_STRING']
などの情報が取得できないようです。
$_SERVERを$_ENVに変えたり、serverVar("URL")とか試したりしたんですが、
全て値を得ることが出来ませんでした。
他に呼び出された完全なURLを取得する方法などはございませんでしょうか…。

無料のHPスペースなのでhtaccessを触ったりとかそういうことはできませんです。
605nobodyさん:2005/04/09(土) 13:12:36 ID:SXkH7OvC
10進数の数字のみの文字列を出来るだけ短い文字列にしてMySQLに入れたいのですが、
256進数(つまり1バイト文字全て使う)に直そうと単純に$string = chr($int)として$stringを入れようとすると、
SQL文のダブルクオーテーションが消えてしまったり、あるいは増えてしまったりしてMySQLに格納出来ません。
何か良い方法は無いでしょうか?
606nobodyさん:2005/04/09(土) 13:16:17 ID:???
いったいなんでそんな事をするのか逆に質問したい
607nobodyさん:2005/04/09(土) 13:25:32 ID:SXkH7OvC
>>606
MySQLのリファレンスに、インデックスを使う際は対象となるデータの桁数が短いほうが良いと書かれていたからです。
データ容量も落とせると思うし。
608nobodyさん:2005/04/09(土) 13:36:58 ID:???
>>604
そもそもブラウザが#以降の文字列を鯖に送出していない。
ブラウザのhttpリクエスト・レスポンスヘッダを見るツールがあるのでそういうので確かめてみるとよい。
ieHTTPHeaders、proxomitron、パケットキャプチャー等。
609nobodyさん:2005/04/09(土) 14:50:00 ID:???
>>607
桁数の問題って、そんなに対象のフィールドに入れるデータが
数字が膨大な長さのデータばかりなのか?
よっぽど特殊なデータとか膨大なレコード数になるとかでもない限り
素直に整数型で入れればと思うが
ミクロレベルの問題を凄い上の層でどうにかしようとしてる感が
610nobodyさん:2005/04/09(土) 15:30:06 ID:SXkH7OvC
>>609
MySQLは符号無しbigintでも20桁くらいしか扱えませんよね。
それをオーバーしてしまうのです。
その長い10進数の文字列を左から3桁ずつで区切ると各区分のパターン数は256以内に収まります。
そこで、各パターンに0〜255までの数字が1対1に対応するよう割り振り、(最小完全ハッシュのような事)
その数量を256進数に直し、区切っていたものを再結合して一つの文字列にしてMySQLに格納したいのです。
区切らずに全桁で考えたほうがパターン数が節約出来ますが、検索時の事情でそれは出来ません。
3桁の区分ごとに専用のフィールドを用意する事も速度の低下とHDD使用量の増加になってしまうので、
やはり一つの文字列として一つのフィールドに格納したいのです。
611nobodyさん:2005/04/09(土) 15:44:49 ID:???
メモ帳でphpファイルを作ってみましたが、ファイル名は××.phpでよろしいでしょうか?
アップしたときに××.
php.txtと出ますが、問題ないでしょうか?
612nobodyさん:2005/04/09(土) 15:47:55 ID:???
アップしたんなら開いてみれば問題あるかないか分かると思うけど。
普通にphpファイルとして動作させるのなら.txtは要らない。
613nobodyさん:2005/04/09(土) 15:53:36 ID:???
>>612
アップしたらファイル名にtxtと付くんですよ...
何故でしょう?
614nobodyさん:2005/04/09(土) 15:55:07 ID:???
>>613
メモ帳で保存した時についてるんじゃ?
アップしたあとでもファイル名変えれば良いだけ。
615nobodyさん:2005/04/09(土) 15:56:09 ID:???
CGIを使っているけどユーザーには使わせない鯖なんじゃねぇの
616nobodyさん:2005/04/09(土) 16:05:53 ID:???
>>608
ああ、そうなんですかわかりました。
ありがとうございます
617596:2005/04/09(土) 16:18:04 ID:???
register_globals ONにしたら
なんなくうごくのですが、
危険ですよね。。

でも引数ってregister_globals OFFだと
どうやって渡すのですか?
register_globals ONでしかうごかない
プログラムしか掛けません。。

どなたか、OFFで動かすテクニックというか
そんなサイトにでも誘導していただけませんか・・・
618nobodyさん:2005/04/09(土) 16:18:50 ID:???
>>613
えっ!?
アップ先のファイル名っつ変えられるんですか?
よろしかったか仕方を教えて下さい!!
619nobodyさん:2005/04/09(土) 16:23:33 ID:???
ファイルマネージャかFTPソフトにそういう機能が付いてると思う。
620nobodyさん:2005/04/09(土) 16:23:50 ID:???
ワロタ
621nobodyさん:2005/04/09(土) 16:25:51 ID:???
>>619
有難うございます。
622nobodyさん:2005/04/09(土) 16:28:27 ID:???
>>617
はじめに(初歩の初歩)ぐらいは読もうな。
http://www.php.net/manual/ja/tutorial.php
最もその中で書かれてるハイパーリンク先の詳細が重要
623nobodyさん:2005/04/09(土) 16:40:38 ID:???
こういうスレもあるんでよろしく。

【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/l50
624nobodyさん:2005/04/09(土) 16:45:36 ID:???
>>610
流れを読まずに書き子。
数値を文字列として扱えればいいだけなら、varcharに入れたらよいのでは?
625605:2005/04/09(土) 17:11:13 ID:SXkH7OvC
>>624
それだと必要な機能は出来ますが、
MySQLのリファレンスによるとインデックスを使う際は対象となる文字列の桁数が少ない方が良いらしいのです。
1桁に使われる文字の種類数が少ない事で桁数を減らした場合と同様な効果があるとしたらくたびれもうけだけど。
(これがありえそうで怖い)
でもHDD使用量が抑えられるという効果は確実にありそうだし出来ればやりたいのです。
626589:2005/04/09(土) 17:26:34 ID:fpNXc15C
すんません。
>>589もよろしくお願いします。。。
627nobodyさん:2005/04/09(土) 17:26:57 ID:???
>>625
その数値がどれくらいユニークなのかは知らんが、先頭の数バイト分だけ
インデックスを作成することもできるよ。
alter table hoge add index (column(4))
見たいな感じでね。

ま、しかしHDDのお値段と復号やらなんやらの手間とを天秤にかければ・・・
てなことも考慮した方が良いのでは。
628nobodyさん:2005/04/09(土) 17:35:07 ID:???
>>626
認証ページにて、
1.認証に成功→サーバ内にセッション情報を保存して該当ページへリダイレクト
2.認証に失敗→認証ページへ戻る

FTPの該当ページではセッション情報を検索して、存在すればアクセス許可。
なければ認証ページへリダイレクト。

セッション情報の保存法はcookieでもセッションでもファイルでもDBでも
お好きなように。検索のためのキーはリダイレクトするときに渡す必要が
あるのでGETにするしかないので、セッション作成毎にユニークなIDを作成する。
こんなところか。

あ、当然セッション情報は有効期限を設けて定期的に消去する。
普通はログオフ時に削除すればいいんじゃね。
盗聴が怖ければSSLで暗号化するしかないんじゃないの?
と、とりあえず適当に書いてみた。推敲もしてません。
629589:2005/04/09(土) 19:04:25 ID:fpNXc15C
>>628
> FTPの該当ページではセッション情報を検索して

↑これ、具体的にどうしたら良いのでしょうか?
FTPのページではPHP等は動かせないですよね?
630nobodyさん:2005/04/09(土) 19:47:32 ID:6OokWNUO
セッションについて聞きたいのですが
トップページにて認証を行いアカウント等セッションに登録して別ページにheaderで飛ばします。
ここではセッション内容が正しく表示されます。
次にこのページから適当なページに<a href〜でリンク先に飛びます。 このページでもセッションは表示されます。

続いてブラウザを閉じずに認証ページにURL指定か戻るとかで移動して違うアカウントで入ります。
headerで飛んだページは2つ目のアカウントが正しく表示されます。
が、この後このページから先ほどの3ページ目へリンクで飛ぶと前のアカウントのデータが表示されてしまいます。
リミッターはnocache lifetimeも0にしているのですがどうしてなんでしょうか?

取得するだけのページならsession_start()だけでいいですよね?
631nobodyさん:2005/04/09(土) 19:54:09 ID:???
>>629
ファイルをダウンロード(orアップロード)させたいんでしょ?
プロトコルにhttpを使うかftpを使うかは関係なく、
urlを直打ちしてダウンロードさせなければよいのでしょ?
そのための認証ページを作るという意味なんだけど・・・
632nobodyさん:2005/04/09(土) 21:15:02 ID:???
コンテンツ事の認証にユーザーIDの空ファイルを利用しようかと想うのですが
サーバーとしてファイルの数が多くなるというのは良くないのでしょうか?
633nobodyさん:2005/04/09(土) 23:52:34 ID:???
最近学習始めた初心者です。

クラス概念が有る様ですが、ディストラクタの起動する要因が判らない
ので、知っていたら教えて下さい。
634nobodyさん:2005/04/09(土) 23:58:39 ID:???
>>629
ちょっと書き方がわるかった。
要はhttpでもftpでもいいが、ユーザがアクセスできるところにファイルを
置いては認証もへったくれもないという事。
だからダウンロードさせるファイルはブラウザでアクセスできない場所へ
置いておいて(※)、ダウンロードのページではまず認証状況を確認し、次に
phpを使ってファイルを読み取り、ftpのヘッダと共にファイルを送信してやる。
とこういう流れになるかと。

※たとえばApacheでDocumentRootを/usr/local/apache/htdocsにしてるなら、
/usr/local/apache/Download(適当)/に置いておけば、url直うちでは
たどり着けない。
635nobodyさん:2005/04/10(日) 00:01:57 ID:???
>>633
オブジェクトが消滅するとき。
636nobodyさん:2005/04/10(日) 00:03:44 ID:???
みんなもうphp5に移行してんの?
637nobodyさん:2005/04/10(日) 00:20:25 ID:???
>>636
PHP5に対応したcacheってあったっけ?
あればそろそろ移行してもいいかな。
638633:2005/04/10(日) 00:31:17 ID:???
>>635
どうやったら消滅するのですか?
unset? それとも、die?
639nobodyさん:2005/04/10(日) 01:30:02 ID:???
>>636
みんあがしたらするよ。
640nobodyさん:2005/04/10(日) 03:02:33 ID:???
>>636
SOHOとしてはレン鯖とかホスティング鯖に普通に入りだしたら移行
っつーか移行せざるを得ない、結局みんなが使い出したらかw
641nobodyさん:2005/04/10(日) 07:20:50 ID:???
>>640
同じく...なんだけど、php3->php4のときは共存できたので、
未だにphp3のままのところがあるわな。

php4とphp5は(通常)共存できないので、中小企業向けレン鯖は当面php4のままだろう。
レン鯖のphp5対応鯖に新規or乗換する蔵が出てくるのはいつのことなんだろう。。。
642nobodyさん:2005/04/10(日) 09:04:55 ID:???
>>637
Zend製品は対応してる。PHPAは全然動き無いし、
MMcacheは開発休止してる。

スクリプトキャッシュじゃないけど、VM最適化パッチはかなり効くね。
PHP5.1だけじゃなくて、PHP4.4とかで入れてくんないかな。
643nobodyさん:2005/04/10(日) 12:00:23 ID:???
XREA鯖はPHP4 5 両対応
644nobodyさん:2005/04/10(日) 12:59:48 ID:jGzXhnVH
「中田様、小野さん、中村選手、用務員、警備員、柳沢様」(、区切り)
これを↓で変換すると

$message = preg_replace( "/(.+?)(選手|さん|様)?$/" , '$1選手', $message);

「中田選手、小野選手、中村選手、用務員選手、警備員選手、柳沢選手」
となってしまいます。
「中田選手、小野選手、中村選手、用務員、警備員、柳沢選手」
となるように(語尾に「選手」「さん」「様」がついていない場合はそのままにしておくように)
するには、どのように書き換えたら良いですか?
645nobodyさん:2005/04/10(日) 13:26:17 ID:???
>>644
mb_ereg系を使って方がよさげ。
$message=mb_ereg_replace('([^、])(選手|さん|様)' , '\1選手', $message)
646nobodyさん:2005/04/10(日) 13:46:51 ID:jGzXhnVH
>>645
お答えありがとうございます。
ごめんなさい、mb_ereg_replaceのように実験的なステータスにある関数は使えないんですよ。
647nobodyさん:2005/04/10(日) 14:08:09 ID:???
>>646
そうなのか。いっそ単純に
$message=preg_replace('/(さん|様)/' , '選手', $message);
でいいんじゃね。>>644も「、」が区切りと認識してないし。
648nobodyさん:2005/04/10(日) 14:11:22 ID:???
何度もスマソ。
こう書くと区切りの「、」がそれなりに機能するかな。
$message=preg_replace('/(さん|様)(、|$)/' , '選手$2', $message);

649nobodyさん:2005/04/10(日) 14:14:59 ID:jGzXhnVH
>>647
>>648
出来ました。
そうでした。なんか難しく考えすぎてたみたいでした。
ありがとうございます!
650nobodyさん:2005/04/10(日) 14:38:57 ID:???
>>646
mb_ereg_replaceは、今はもう実験的位置づけじゃないよ。
http://jp2.php.net/manual/en/function.mb-ereg-replace.php
651nobodyさん:2005/04/10(日) 18:05:37 ID:???
2次元配列があるのですが、
2次元目の配列の個数で、
1次元目をソートすることはできますか?
ランキングっぽいことをやろうとしているんですが…
652nobodyさん:2005/04/10(日) 18:14:29 ID:???
ア…
multisort使えば出来そうですね
おさわがわせいかましt

お騒がせしました。
653nobodyさん:2005/04/10(日) 18:27:15 ID:???
最近のプログラマは自前のコードでソートプログラムすら書けないのか・・・
なんというか、質が落ちたな・・・
654nobodyさん:2005/04/10(日) 18:28:19 ID:???
それは初心者ですらできなきゃいけない事なのですか?
655nobodyさん:2005/04/10(日) 18:45:34 ID:???
自前でやるより処理が早い事もあると想うが?
656nobodyさん:2005/04/10(日) 18:46:28 ID:???
>>654
「効率的な」とか「高速な」ソートを作るという訳でなければ、
要するにアルゴリズムが理解できないプログラマといえる。

まあ色んなプログラマがいるからソートの仕組みが組み立てられない
ことが即駄目プログラマとは言えないけど、概ね駄目。
657nobodyさん:2005/04/10(日) 18:55:28 ID:???
なんでも便利な関数でやっちゃうのが抵抗あるんでしょ。それくらい頭を使え、と。
変なたとえだけど、鉛筆をカッターで削ってた時代の人が、機械でガ〜〜ってやってる若者を見て、今時の若者はカッターも使えんのか、みたいな感じなんだよ。
658nobodyさん:2005/04/10(日) 19:08:28 ID:???
そういや昔、便利な関数の存在を知らずに自分で作ってた事あったなぁ
そんな経験ない?
659nobodyさん:2005/04/10(日) 19:30:15 ID:???
しかし自前のコードがすらすら組めるなら
質問スレなんて必要ないわけだが。

PHPが普及してきたからこそ、質問スレは盛り上がるし
質問は増えてくるのに、それをみて
レベルが下がったというのは如何な物か。
660nobodyさん:2005/04/10(日) 19:39:15 ID:???
みんな色々な質問したり、発見したりして成長していくんだからさ。
>>653
こういう事をさらさら言えるほうが、人間として質が落ちてる気がするよ。
661nobodyさん:2005/04/10(日) 19:42:57 ID:???
>>659
うん?平均的にレベルが下がったのは事実だよね。

いいんじゃないの。平均が下がったお陰で
マニュアル読まずにこういったスレに書き込んでも、
怒られることもなしに誰かしら教えてくれるような
環境が出来た訳だから。英語が読めなくても誰か
翻訳してくれるしね。
662nobodyさん:2005/04/10(日) 19:45:16 ID:???
それでいいとおもう
663nobodyさん:2005/04/10(日) 19:58:13 ID:???
なんか根っからの職業プログラマ…っていうかおっさんが混ざってるみたいだな(w
給料いくら?
664nobodyさん:2005/04/10(日) 20:10:10 ID:???
30半ばのおっさんなので70マソ/月。職業プログラマではない。
665nobodyさん:2005/04/10(日) 20:23:06 ID:???
給料70万ももらってるやつが
2chのこんなところにいんなよpu
666nobodyさん:2005/04/10(日) 20:38:13 ID:???
リーマンで30半ばで70万なら良い方だな?職業何?
俺の知り合いの奴らなんてみんな月の手取り30〜40ぐらいでひ〜ひ〜言ってるが、普通はそんなもんだろ。
俺はリーマンやったことないから分からんが。

知り合いに>>653みたいな事を言う職業プログラマがいるんだが、年収350万ぐらいだって聞いて
なんか惨めだな〜と思って。

俺は大学時代な〜んも勉強せずに、5年程前フリーターやりながら趣味で覚えたperl⇒PHPレベル。
今年の確定申告で250程国に貢いできたといえば、年収も分かるだろ。
大した事はないが、それでもそこらのリーマンよりはよっぽど稼いでるわけで。


何が言いたいかというと、くだらん事にこだわらずに効率よく結果を出しゃぁいいんだよって事だ。
苦労せずとも結果が出せるに越した事はない。
自己満足の世界に陶酔しても、金が稼げるわけでもなし。


>>665
携帯関連とか株関連の板見た事無いみたいだね。
年収1000万程度(スレによってはカス扱い)の奴なんか腐る程いるぞ。
667nobodyさん:2005/04/10(日) 20:38:29 ID:???
スクリプト言語の特性上
どんどん便利になっていくし使う人への敷居も低くなっていく
でもそれを先人が「使う人間のレベルが下がった」だけで
割り切ってしまうのもなんだかなあ
668nobodyさん:2005/04/10(日) 21:02:23 ID:H4Hn0Vk9
現在PHPがセーフモードになっているレンタルサーバーを使っています。
ディレクトリの所有者とスクリプトの所有者が一致していなければ
いけないらしいので、PHPスクリプトを自動生成するスクリプト内で、
//makephpfile.php
$filep = fopen("test.php","w"); //open file
chown("test.php",'username');
flock($filep, LOCK_EX);
fputs($filep,$dat); //write data
fclose($filep);
としたのですが、スクリプトファイルの所有者がapacheになってしまい
ファイルの読み込みなどがうまくいきません。


スクリプトを生成するファイル(makephpfile.php)とそれが入っている
ディレクトリの所有者は、usernameで統一しています。

誰かいい解決方法を知っていたら教えてください。
よろしくお願いします。
669nobodyさん:2005/04/10(日) 21:16:07 ID:???
インディーズの頃好きだったバンドがブレイクしちゃって
昔はよかったとか、今はミーハーなファンばっかりだとか言う奴いるけど
そういうのと同じじゃない?
670nobodyさん:2005/04/10(日) 21:41:42 ID:???
雑談はいい加減にして質問か回答しろよ
671nobodyさん:2005/04/10(日) 21:48:57 ID:???
ごめん。
672nobodyさん:2005/04/10(日) 22:26:19 ID:???
>>668
ファイルの所有者を変更できるのはふつうrootだけ

というわけで別の方法を考えた方が良さそう。管理者にgidで
チェックするようにしてくれって頼むとか。
673nobodyさん:2005/04/10(日) 23:14:44 ID:???
$str = abcdefg.hoge.tokyo.ne.jp
ereg_replace("^.+?\.","*****.",$str);

これで下の様に頭の部分を隠したいのですがエラーが発生してしまいます
何かPHPの記述方法があるのでしょうか?
*****.hoge.tokyo.ne.jp
674nobodyさん:2005/04/10(日) 23:29:59 ID:???
フォルダごとにディスクの容量を計算したいですが、うまくいきません。
フォルダの残量は disk_free_space を使って表示できたのですが、
使用量をどのようにして表示させようか悩んでいます。
ちなみに、PHPはセーフモードで動いています。
$dir_space = `du -sb ./test`;も使おうとしましたが、うまくいきません。
ご教授よろしくお願いします。
675nobodyさん:2005/04/10(日) 23:30:42 ID:???
確認していませんが
ereg_replace("^[^\.]+(\..+)$",\\1 ,$hoge)

質問です
ファイルに書き込みをしていますが
fputs($fp, 'うんうん'."\n")
を2回繰り返しても改行されず「うんうんうんうん」になってしまいます。どこがおかしいのですか?
676nobodyさん:2005/04/10(日) 23:51:06 ID:???
>>675
ドットの否定で逝けましたヒントありがとん
ereg_replace("^[^\.]+","*****" ,$str);

1. \n --> <BR>
2. \n --> \r\n
とかかな
677nobodyさん:2005/04/11(月) 16:47:47 ID:???
$db = pg_connect(dbname);
if (pg_connection_status($db) == PGSQL_CONNECTION_OK) {
echo "DB Connetcion status is OK!";
}
else {
echo "DB Connection status ERROR";
}

$sql = 'select * from tablename';
$result = pg_query($db, $sql);

で、結果が

Connection status is OK!
Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in filename.php on line 10

となってしまうのは、何が原因なんでしょう??
postmaster は動いていますし、一瞬検索ができた時もありました・・・・・
PHPは事象の再現性がヘンな時が多々ありますが、「そういうもの」なんでしょうか?
678nobodyさん:2005/04/11(月) 21:57:46 ID:???
数値が入った二つの変数を、足すのではなく繋げる方法はありませんか?
例えば
$int1 = 5; バイナリデータで101
$int2 = 10; バイナリデータで1010
この$int1と$int2をくっつけて、1011010というデータを持った変数を作りたいのです。
679nobodyさん:2005/04/11(月) 22:21:08 ID:d8tTZrxp
一番後ろの字が「1」でなければ「←合格」を付け足すような流れにするつもりで
以下の文を書いたのですがうまくいきません。

$text = preg_replace("^(1$)", "←合格", $text);

鈴木1
佐藤
田中
山本1

↓スクリプト実行

鈴木
佐藤←合格
田中←合格
山本

このような結果を出すためにはどのように書き換えたらよいでしょうか?
680nobodyさん:2005/04/11(月) 22:45:48 ID:???
>>678
そういう値が欲しいのなら素直にシフトさせてandを取る。
二進数表現の文字列が欲しいのならsprintf("%b%b",,)

>>679
ハット記号はその場合否定じゃなくって行頭になる
多分こんな感じかな
preg_replace('/([^1])$/', '¥1<-合格', $text)
681nobodyさん:2005/04/11(月) 23:45:32 ID:???
PHP4.3.11の内蔵GDってbundled (2.0.28 compatible) になってるけど、

GD Graphics Library "gdImageCreateFromPngCtx()" Integer Overflow
Software: GD Graphics Library 2.x
Update to version 2.0.32 or later.
http://secunia.com/advisories/12996/


これに対応してるのかな?
682668:2005/04/12(火) 00:12:58 ID:???
>>672
返信ありがとうございます。
Xreaのサポート掲示板に問い合わせたところ、
GIDチェックモードは無理でしたが、PerlのCGIで
何とか解決しました。
683nobodyさん:2005/04/12(火) 01:25:26 ID:???
$str = aaaaaaa;

preg_match("/[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}?/", $str)
└OK
mb_regex_encoding("SJIS");
mb_ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└OK(?つけてもOK)
mb_ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└mb_ereg(): mbregex compile err: premature end of regular expression
mb_ereg("^[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z\.\-]+\.[0-9a-zA-Z]+$",$str)
└OK
ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}?", $str)
└ereg(): REG_BADRPT
ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└OK
お聞きしたいことがあります、
・eregの最短指定"?"の有無
・mb_eregのエンコーディング指定によってエラーが起こらないもの
そもそもエラーが起こらないものの違い
684nobodyさん:2005/04/12(火) 02:16:01 ID:???
HTML_QuickFormで
$name[] = &HTML_QuickForm::createElement('text', '姓', null, '姓');
$name[] = &HTML_QuickForm::createElement('text', '名', null, '名');
$form->addGroup($name, 'name', '名前', ' ');
こんな感じでテキストフィールドの前にラベル付けたいんだけど、
できなかった毛?
685nobodyさん:2005/04/12(火) 06:51:49 ID:???
>>684
$renderer = & $form->defaultRenderer();
$renderer->setGroupElementTemplate('{label} {element}', 'name');
てな感じで可能かと。
group.phpのtoHTML()の中で、上と同様の処理があって そこで{element}だけにしているので
elementのラベルが消えてるんじゃないかなぁ。あんまり自信ないけど。
686nobodyさん:2005/04/12(火) 09:55:50 ID:???
アンケートを作ってみました
<FORM ACTION="http://www.example.com/example.php" METHOD=POST>
氏名:<INPUT TYPE=TEXT NAME="name"><BR>
メールアドレス:<INPUT TYPE=TEXT NAME="email" ISTYLE=3> <BR>
<BR>
選択<BR>
<SELECT NAME="test">
<OPTION VALUE="a">A
 
<OPTION VALUE="b">B
 
<OPTION VALUE="c">C
 
</SELECT><BR>
<BR>
テスト<BR>
<TEXTAREA NAME="impression"  rows=" COLS=10 5"></TEXTAREA><BR>
<BR>
テスト<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="a">A<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="b>B<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="c">C<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="d">D<BR>
<BR>
<INPUT TYPE=SUBMIT NAME="submit" VALUE="送信" id="submit"> <INPUT TYPE=RESET VALUE="やり直し"><BR>
<BR>
<BR>
</FORM>
内容を一度確認して送信するようにするには、どうすればよろしいですか?
687nobodyさん:2005/04/12(火) 10:24:19 ID:???
688nobodyさん:2005/04/12(火) 11:42:38 ID:???
Ruby 界隈で Ruby on Rails が話題になっているけど、
PHP でも欲しくね?もうある?
689nobodyさん:2005/04/12(火) 11:51:03 ID:???
必要と感じないので自分で作ろうとは思わない。
使いたくなったらRubyを使えばいいだけだし。
690nobodyさん:2005/04/12(火) 17:41:03 ID:???
携帯の各機種ごとに分かれて位置情報を習得したいのですが
どうすればよいでしょうか?
思いつきません・・・
691nobodyさん:2005/04/12(火) 18:13:56 ID:???
>>690
習得するなら、一生懸命勉強せよ。

取得したいなら、各キャリアごとに情報を収集せよ。

692nobodyさん:2005/04/12(火) 20:28:41 ID:???
>>685さんどうも。
もれHTML_QuickForm_Renderer_Object使ってるから、
そのソメッド使えんみたいだわ。
QuickFormやめて、Flexyおんりーにするぽ。
693nobodyさん:2005/04/12(火) 20:44:35 ID:???
すいません、
perlの正規表現ではカッコで括ったところがマッチすると、
$1,$2という変数に格納してくれるという便利な機能がありますけど、
phpで似たようなことは出来ますでしょうか。

具体的には

2005/04/09(金),01時12分00秒,ほげほげ

という形のデータを

[01:12:00],ほげほげ

という、時刻とテキストだけの形に直したいんですが…。
自分ではカンマでsplitして、substrで何回かに分けて時、分、秒の変数を作って
後でそれをくっつけるという処理しか思いつきません。

どなたか簡潔な方法を知っていらしたらよろしくお願いします。
694nobodyさん:2005/04/12(火) 20:52:21 ID:???
preg_match
695nobodyさん:2005/04/12(火) 21:22:42 ID:???
\\1 〜 \\9
696nobodyさん:2005/04/12(火) 21:23:32 ID:???
あ、eregの話ね。
697nobodyさん:2005/04/12(火) 23:22:24 ID:???
>>695
$hoge=ereg_replace("([0-9]{2})時([0-9]{2})分([0-9]{2})秒", "[(\\1):(\\2):(\\3)]", $hoge);

みたいにしたんですが無理でした。
なんでだろ…。
698697:2005/04/12(火) 23:24:47 ID:???
あ、できました、ありがとうございます。
699nobodyさん:2005/04/12(火) 23:46:47 ID:???
pg_insertで、複数行同時追加ってできますか?
700697:2005/04/12(火) 23:47:03 ID:???
ああ、この\\1とかってperlの$1とかみたいに変数じゃないから次の行まで値を保持したりできないんですね…。
701nobodyさん:2005/04/13(水) 00:31:58 ID:???
つ print_r($hoge);
702nobodyさん:2005/04/13(水) 01:11:49 ID:???
おいおまいら!
漏れはセッション使用するときに
session_cache_limiter('none');
こうやって設定しているんだが、これはセキュリティーホールになりますか。
703nobodyさん:2005/04/13(水) 01:42:35 ID:???
例えば掲示板のプログラムで記事投稿フォームを作る時、
フォームから投稿内容を受け取り記事追加処理をするphpファイルを新たに作るか、
それとも外部ファイルに記事追加処理関数を書いてその関数を呼び出す形を取るか、
どちらがいいと思いますか?あるいは他にもっといい方法がありますか?
704nobodyさん:2005/04/13(水) 02:02:01 ID:???
自分が書きやすい方で。
705nobodyさん:2005/04/13(水) 02:11:31 ID:???
関数には引数に応じて処理を分ける物があるけど、ああいうのって中で普通にswitchとか使ってるの?
もしそうだと、どの処理をする時にもswitch処理が必要になって
それなら最初から関数を分けてしまった方が処理が速そうな気がするんだけど。
706nobodyさん:2005/04/13(水) 02:23:22 ID:???
>>704
レスありがとう。

ファイルにするとユーザーとの通信の手間が入ってくるわけでその点が余計な負荷になる。
外部ファイルの関数にすると、もしかしてその関数を使わない場合でもメモリに外部ファイルがロードされてしまうのかと思うと
フォームを開いただけで投稿処理をしなかった場合に無駄になる。

単純に書きやすい方で選ぶというだけでは無い選択肢だと思うんだが。
707nobodyさん:2005/04/13(水) 03:28:56 ID:???
>>705
関数が増えると関数を特定する処理に選択肢が増え(ry
ていうかそれくらいのこと、処理速度にはほとんど影響ないだろ
気にするな

>>706
おまえもその程度の負荷は気にするな
708nobodyさん:2005/04/13(水) 07:42:50 ID:???
>>703

関数を呼び出す手前で require_once() する。

ユーザーとの通信の手間って何のこと?
709nobodyさん:2005/04/13(水) 07:54:01 ID:???
>>706
いいぞ ベイべー!
負荷をかけるやつは普通のプログラムだ!!
負荷をかけないやつは何もしないプログラムだ!!
ホント 戦場は地獄だぜ! フゥハハハーハァー
710nobodyさん:2005/04/13(水) 09:06:20 ID:???
>>705
処理の多くが他のユーザー定義関数と「かぶる」場合、「かぶらない」部分だけ
switch〜caseなんかで分岐させれば、コードを短くできる。また「かぶる」部分
に何らかの修正が必要となった場合、関数1つなら1つ修正すればいいだけだが、
関数を分けていれば全部を修正しないといけない。

>>706もだけど、処理スピードなんて気にする暇あったら、もっと他に考えなけ
ればいけない事があるんではないの?と俺は思った。

>>706
そこまで気にするなら、投稿処理の時だけ該当ファイルをrequireすればいい。
CPUやメモリの負荷率見れるなら見てみ。
全く気にする必要のないレベルに間違いない。
711nobodyさん:2005/04/13(水) 13:42:08 ID:y+S//+Zc
初心者でスマソ。
phpでブラウザのjavascriptがonになっているかどうかは、確認できるの?
712nobodyさん:2005/04/13(水) 14:01:22 ID:???
>>711
JavaScript(の適当な命令)がphpを呼び出せればJavaScriptを使える
(少なくとも呼び出しに使ったJavaScriptの命令が使える)、つー方針でなら可能かと。
オイラはそんな面倒なことをしたくないので、ブラウザ側でJavaScript利用可・不可のチェックをさせるけど。
713nobodyさん:2005/04/13(水) 15:50:16 ID:???
それっぽいスレは別に有るみたいですが、そこまで専門的な内容では無さそうな故、
こちらのスレで質問させて頂きたく思います。どうか宣しくお願い致します。

自分は今現在、趣味の範囲と見様見真似で「見た目が 2ch 型」のソレらしい掲示板を
自力で作り、一通りの動作確認を終えて、ソースコードの整理をしているところなのですが、
自分の思い付きで書いたコードが今一つしっくり来ないと言うか、もっとスマートな書き方が
出来ないものかと少し悩んでいます。

実際に真似をし始めて初めて知った 2ch 型掲示板特有?の妙なレス番指定方法
(/l50 とか /-50 とか) の文字列に対応させる為、

preg_match("/^(\d+)$|^l(\d+)(n)?.*$|^(\d+)(n)?-$|^-(\d+)(n)?$|^(\d+)(n)?-(\d+)(n)?$/",$string,$result);

という様な正規表現を指定し、$string 中に有るレス番指定文字を $result に取り込んだ
後、配列 $result の個数とその中身によって処理を分岐させる様な事をしています。

これらをもっとスマートに書こうとしたら、一体どの様にすれば宣しいのでしょうか?
714nobodyさん:2005/04/13(水) 16:55:06 ID:???
>>713
スマートって言うのがどういうのかわからない
1行で済ませるのがスマートだったら全然駄目だけど
昔のクエリ方式と互換性も足せるために
$st = $to = 0;
$nofirst = '';
$ls = 0;
if ($_SERVER['PATH_INFO']) {
$pairs = explode('/',$_SERVER['PATH_INFO']);
$bbs = $pairs[1];
$key = $pairs[2];
if ($pairs[3]) {
if (strstr($pairs[3], 'n')) {
$nofirst = 'true';
$pairs[3] = str_replace("n","",$pairs[3]);
}
if (substr($pairs[3], 0, 1) == 'l') {
$ls = substr($pairs[3],1);
}
elseif (strstr($pairs[3], '-')) {
list($st, $to) = explode('-',$pairs[3]);
if (!$st) $st = 1;
}
else {
$st = $pairs[3];
$to = $pairs[3];
$nofirst = 'true';
}
}
}
715nobodyさん:2005/04/14(木) 00:11:49 ID:???
すいません、あるutf-8のcsvファイルを開いて同形式のデータの置換作業をしてるんですが、
頭から置換の「^」を使って行頭から置換していると、
なぜかファイルの先頭の最初の一行だけマッチしません。

何かファイルの先端を示す不可視文字のようなものがくっついてるんでしょうか。
出来ましたら対処方法など教えて頂けたらうれしいです。
よろしくお願いします。
716nobodyさん:2005/04/14(木) 00:21:43 ID:???
BOMが付いているんだろう。
http://www.atmarkit.co.jp/aig/01xml/bom.html
http://e-words.jp/w/BOM.html
http://www.wdic.org/?word=BOM+:WDIC
http://www.birdport.jp/Others/unicode/
先頭3バイトを無視すればいい。
でも、UTF-8はBOMが付いていないことが多いから
単に3バイト無視すると悲劇が起こる予感。
717nobodyさん:2005/04/14(木) 00:40:13 ID:???
>>716
ああ、ややこしそうですね。
とりあえずデータの形は全部一緒なので、
あまり意味のない保険かけずに
「^」の先頭マッチは外しておきます。

ありがとうございます
718nobodyさん:2005/04/14(木) 01:02:17 ID:???
session_cache_limiter('none'); にすると
レスポンスヘッダー
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
がなくなります。このときに、コンテンツはプロキシ、クライアントに
キャッシュされるのでしょうか。
719713:2005/04/14(木) 01:31:56 ID:???
>>714
自分としては、その辺の処理を正規表現で実現しているのかと思い込んでいたの
ですが、実際にはそんなに難しくない文字列操作関数だけでも十分なのですね。。
具体的な例を示して頂けた事も有って、その仕組みが良く理解出来ました。後は、
自分で組んでいるコードに合う形に直した上で拝借させて頂きたいと思います。

素早い返答を頂きながらも、こんな時間になるまでレス出来ず、申し訳有りません
でした。そして、ありがとうございました。
720nobodyさん:2005/04/14(木) 07:53:17 ID:???
>>718
see RFC 2616.
post-check pre-checkはIE専用の拡張でMSDNに説明があったかと。
721711:2005/04/14(木) 11:23:50 ID:???
>>712
ありがとうございます
722nobodyさん:2005/04/14(木) 12:49:56 ID:ai8mxHPm
質問させてください。

最近になりApache2.0.52 + PHP5.0.2 + MySQL4.0

と言う構成にアップグレードしたのですが、CMS関係のPHPアプリケーションがインストールできなくなりました

特にphpMyAdminでは下記のようなエラーが表示されます

  [1.20] 「cannot load MySQL extension, please check PHP Configuration(MySQL エクステンションをロードできません。PHP の設定をチェックしてください)」というエラーが出ます。
      PHP が MySQL サーバに接続する際には「MySQL エクステンション」という MySQL の関数セットを必要とします。
      このエクステンションは PHP の配布ファイルに含まれている(コンパイルで組み込まれている)こともありますが、そうでない場合、動的にロードする必要があります。
      エクステンション名はたぶん mysql.so か php_mysql.dll のはずですが、phpMyAdmin はこのエクステンションをロードしようとして失敗しているわけです。
      ふつう、この問題は「PHP-MySQL」とかなんとかという名前のソフトウェアパッケージをインストールすれば解決します。

php_mysql.dll は C:/WINNT/php.ini ファイルにて確かに指定しているため原因が掴めません。

   extension_dir = "C:\php\ext"
   extension=php_mysql.dll 

Apache の再起動時にこのようなエラーが表示されます。

   PHP Startup: Unable to load dynamic library 'C:\php\ext\php_mysql.dll' - 指定されたモジュールが見つかりません。


どうかご助力お願いします。
723nobodyさん:2005/04/14(木) 13:06:16 ID:???
>>722
「指定されたモジュールが見つかりません。」
声を出して読んでみて!。

php_mysql.dllを検索してディレクトリを探し、そのディレクトリを
extension_dirにセットする。

窓ではディレクトリではなくフォルダか。

それにそんな事で悩んでいるようではtsファイルの移動も怪しいな。

Windowsで悩む奴の気がしれん・・・。
724nobodyさん:2005/04/14(木) 13:40:26 ID:???
>>722
libmysql.dllをWindowsのシステムフォルダにコピーせよ
725722:2005/04/14(木) 13:42:31 ID:ai8mxHPm
>>723

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

php_mysql.dll はc:/php/ext/php_mysql.dll にあります。

   extension_dir = "C:\php\ext"
   extension=php_mysql.dll 

それで上記のように指定し C:/WINNT/php.ini に設定しました。
しかし動作してくれません、/と\を変えても効果なしでした。
tsファイルは C:/WINNT/system32/php5ts.dll にあります。

httpdやその他の設定などは、手元の教本と下のウェブを参考にしました。

http://okweb.jp/kotaeru.php3?q=945621&rev=1
726722
>>722

libmysql.dll 移動で動きました、ありがとうございました。