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

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

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

1 :nobodyさん:05/03/03 22:41:23 ID:???
・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辺り

2 :nobodyさん: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


3 :nobodyさん: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


4 :nobodyさん:05/03/03 22:45:14 ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 
1. ハードウェア、OSのバージョン等には一字一句触れない。 
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 
  目の前で生じている現象をそのまま具体的に書くなどもっての外。 
  事実より俺様の脳内解釈を優先すべし。 
4. 独り言文体で必勝。 
  「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 
  「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 
  "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 
  「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 
  示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 
 絶対に避ける。 
8. 情報は小出しに。 

「エスパーきぼんぬ」 補足 
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 
そのような悪い質問に対して答えられるのは, 
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, 
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。 
まちがっても「エスパーの方,回答お願いします」 
なんて痛い質問するな。つうか氏ね。

5 :nobodyさん:05/03/03 22:46:04 ID:???
こんなもんかな?
補足ヨロ

6 :nobodyさん: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);
        
    }
(後略)

7 :nobodyさん:05/03/04 01:27:42 ID:???
>>6
おれとしては
>$_REQUEST['categoryname'] = "top";
ってスーパーグローバル変数に代入しちゃってるのがきもちわるい。

8 :6:05/03/04 01:46:21 ID:???
>>7
ギク、そのとおり、あとでなおすつもりです・・・orz

9 :nobodyさん:05/03/04 09:10:17 ID:JryQONc+
ふと疑問に思ったのですが、ファイルに書き出すとき
桁数の制限ってあるんでしょうか?
変数に格納できる桁数の制限も知りたいです。

10 :nobodyさん:05/03/04 10:49:45 ID:???
めもりのつづくかぎり

11 :nobodyさん:05/03/04 11:39:10 ID:???
ハードディスク(外部記憶装置)の許す限り

12 :11:05/03/04 11:40:07 ID:???
あるいはquotaが許す限り

13 :nobodyさん:05/03/04 13:12:11 ID:???
かみさんが許す限り

14 :nobodyさん:05/03/04 13:24:43 ID:???
うちのかみさんがね、桁数の制限を気にするんですよ

15 :nobodyさん:05/03/04 13:49:05 ID:???
おまいの給料じゃ気にもなるさ

16 :nobodyさん:05/03/04 13:56:36 ID:???
>>9
よーしパパへそくりしちゃうぞー

$i=2;
while(1){
$i*=2;
echo$i,"\n";
if(is_infinite($i))break;
}

17 :11:05/03/04 15:18:36 ID:???
>>16
8.98846567431E+307
1.#INF
で終了しました(Win XP)

18 :nobodyさん:05/03/04 15:44:14 ID:???
8.98846567431E+307
INF
で終了。@32bitなLinux

19 :nobodyさん:05/03/04 16:29:47 ID:???
>>16
Fatal error: Call to undefined function: is_infinite()

自分には、かみさんがいませんから。
残念!

20 :nobodyさん:05/03/04 16:35:56 ID:???
8.98846567431E+307
妊婦

で終了。予定日:3月12日


21 :nobodyさん:05/03/04 18:28:58 ID:???
もっとまぶいコンピューター使ってる奴はいないのかよ。

22 :nobodyさん: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

23 :nobodyさん:05/03/06 04:30:41 ID:???
apacheが動作しているユーザ/グループで、file.zipを操作できるかどうか
アクセス権限を確認しる。


24 :nobodyさん:05/03/06 04:37:48 ID:???
>>22
system('unzip file.zip 2>&1')

みたいにして標準エラーの内容を見る、とかしてみたら?
あとはエラーが127だからunzipがちゃんとパスの通った場所にあるのか確認

25 :22: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は可能なのですが、それとはまた違うのでしょうか?


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


27 :22:05/03/06 08:33:52 ID:pz614Rae
>>23
>>24
>>26

感謝!解決しました!

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

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

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

皆様の助言のおかげで解決しました、ありがとうございました!

28 :nobodyさん: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


29 :nobodyさん:05/03/06 21:45:58 ID:???
>>28
parse_str

30 :nobodyさん:05/03/06 23:18:40 ID:???
くだらない質問させてください。
if(ereg("[^._0-9A-Za-z]+", $_FILES['userfile']['name'][0])) {
と記述されている部分があるのですが、
この場合、「ハイフン」も含めるにはどう書けばいいでしょうか?


31 :nobodyさん:05/03/06 23:25:13 ID:???
すみません、スレ違いでした。
くだらない質問スレに行ってきます。


32 :nobodyさん:05/03/07 09:34:01 ID:???
require 'hoge.inc' ;

としたときに hoge.inc が自分のいるパスを知ることができますか?

33 :nobodyさん:05/03/07 11:46:58 ID:???
>>32
__FILE__。定数一覧は見ておけよ

34 :32:05/03/07 15:08:02 ID:???
>>33
希望通りの結果を得ることができました。

> 定数一覧は見ておけよ
見ときます。

35 :nobadyさん:05/03/07 15:33:31 ID:???
質問です。

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

sessionとheaderは同時には使用できないのでしょうか?
よろしくお願いします。

36 :nobodyさん:05/03/07 15:55:21 ID:???
保存はできるのか?

37 :nobodyさん: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>";
}

38 :nobodyさん:05/03/07 16:34:18 ID:???
過去にhttps+session+IEでダウソ出来ないバグがあったなぁー。

39 :nobadyさん:05/03/07 16:38:54 ID:???
>>36
保存は正常にすることができました。
保存したファイルを開くこともできました。

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

session()とheader()はなにか相性が悪いのでしょうか?
ご教授いただきたいです。


40 :nobodyさん:05/03/07 16:46:42 ID:???
保存出来るってことはブラウザとかクライアントの環境依存の問題じゃん
PHP関係無い

41 :nobodyさん:05/03/07 16:56:01 ID:???
>>39
保存できるならそれでいいんじゃないのか?何のためにヘッダ吐いてるんだか

42 :nobodyさん:05/03/07 17:39:59 ID:???
>>35
マニュアルのheader()の項を読む。
session_start()時にどんなパケットが流れるか見てみる。
対策は確かマニュアルにあったと思うし、メーリングリストに回答がある。


43 :nobodyさん: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内での文字コードなどはどのような関係になっているのでしょうか?
どなたか御教授お願いします。


44 :nobodyさん:05/03/07 23:29:30 ID:???
xamppのPHPは、SJISで書いたスクリプト処理には対応してないと思われ。

45 :nobodyさん: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等。

46 :nobodyさん:05/03/08 00:08:13 ID:zgtI7JIE
>>44
>>45
回答有難うございます。
示されたリンク先を見ましたが、ISO-8859-*, EUC-JP, UTF-8の何れかで記述して、
php.iniを書き換えれば良いということなのでしょうか?

47 :nobodyさん:05/03/08 00:23:16 ID:???
>>46
その程度で思考回路を停止するならPHPと言えど
プログラミングに向いてなさそうだな。

48 :nobodyさん: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);
 }
とするしかないのでしょうか?

49 :nobodyさん:05/03/08 01:09:06 ID:???
Warning: などのエラーを表示させない方法はあるのでしょうか?
(エラーメッセージを画面に出さない)

50 :nobodyさん:05/03/08 01:09:15 ID:???
>>46
見て読んで理解しろ。(貴方の既存の知識量等により)場合によっては
理解には別の情報が必要かもしれん。その場合はまたWebとか本から入手。

答えのひとつとして
「理解できなければ、全部'EUC-JP'に統一する」
を挙げておく。

51 :nobodyさん:05/03/08 01:11:29 ID:???
>>49
くだ質レベル。display_errors

52 :nobodyさん:05/03/08 02:59:07 ID:???
>>48
$data = array_map('rtrim', file('test.txt'));

53 :nobodyさん:05/03/08 05:23:03 ID:???
5つのテキストフィールド($a〜$e)があり数値を入力し
submitで計算をさせるページを作っています。
cookie?などでこの$a〜$eを保存・読み込みをしたいのですが
(出来れば過去数回分を記憶してテキストフィールド以外の場所に表示させたい。)
php初心者で計算させるので精一杯で・・・
検索してもカウンターとかは見つかるんですがこういう手法がみつかりませんでした。
どのような記述で出来るのかご教授お願いします。

54 :nobodyさん:05/03/08 06:37:29 ID:???
プログラミング初心者でいい加減な回答が精一杯なんですがセッションってのを使うと簡単らしいです。

55 :nobodyさん:05/03/08 07:36:11 ID:???
>>54
セッションはブラウザ閉じると消えちゃうから。

56 :nobodyさん:05/03/08 07:55:52 ID:???
cookieを使いたいなら、setcookie()使えばええんでないの?
マニュアルには使い方の例も結構載ってるので悩むことは無いかと。
ttp://jp2.php.net/manual/ja/function.setcookie.php

57 :28:05/03/08 13:05:07 ID:QMVO20O7
>>29
返答遅くなってすいません。
そんな便利なコマンドがあったなんて・・有難う御座いますm(_ _)m

58 :nobodyさん: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しか出てきません。
半角スペース以降も認識させる方法を教えてください。
必要な情報があれば出しますので!

59 :nobodyさん:05/03/09 01:29:35 ID:???
>>28
関数です。

60 :58:05/03/09 01:35:32 ID:???
ごめんなさい、>58の修正レスです。
×でデータを呼び出すと、name列がaしか出てきません。
○でデータを呼び出すと、name列が正しく出てきますが、フォームのtextエリアに入れるとaしか出てきません。

でした。ごめんなさい。よろしくお願いします。

61 :nobodyさん:05/03/09 02:01:08 ID:???
こんなことになってる予感
<input type=text value=a born>

62 :nobodyさん:05/03/09 02:24:45 ID:???
そこでW3C信者の勝利ですよ。

63 :nobodyさん:05/03/09 02:32:54 ID:???
>61
その通りでしあ
<input type=text size=50 name=\"name\" value=\"",$row["name"],"\">
ダブルクォーテーションで囲えば正しくフォーム部分にも出てきました。
でもこれで正解なんです?なんか野暮ったい気もするんですが

64 :nobodyさん:05/03/09 10:05:24 ID:???
>>61
エスパー級の回答だな。すげーよ。


65 :nobodyさん:05/03/09 10:29:04 ID:???
RSSのUTF-8で「&」が入るとエラーになってしまうのですが、
&を使用する事はできないのでしょうか?

<link>http://〜/a.php?abc=1&def=b</link>


66 :nobodyさん:05/03/09 10:39:24 ID:???
& は実体参照の開始とみなされるので
& そのものを書くなら & と書かなければならない。
これは HTML でも同じ事

67 :66:05/03/09 10:40:39 ID:???
>>66
& そのものを書くなら &amp; と、ね。
……&amp; が解釈されてしまったよ。

68 :65:05/03/09 10:42:13 ID:???
>>66
あ、そうですよね。失礼しました。
細工をするならリーダーの方で行うしかないのでしょうか?。
また、RSSで&を使用する事はモラル違反とはならないのでしょうか?。

69 :65:05/03/09 10:43:32 ID:???
私も&は考えたのですが&自体含まれていますよね;。
どうにもならないのでしょうか。

70 :65:05/03/09 10:47:44 ID:???
今、試してみたら&は使えるのですね
ありがとうございますm(_)m
&が見えると先入観が^^;;

71 :nobodyさん:05/03/09 12:44:45 ID:???
&amp; と表記したいときは &amp;amp; と書きませう

72 :nobodyさん:05/03/09 12:48:45 ID:???
&amp;amp;

73 :11:05/03/09 13:14:22 ID:???
>>71
じゃあ&amp;amp;と書きたいときは&amp;amp;amp;ですね

74 :nobodyさん:05/03/09 13:15:44 ID:???
>>66-70
ちっと餅付け。わけがわからん


75 :nobodyさん: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を想定しています。

76 :11:05/03/09 13:39:10 ID:???
>>75
多分 \X -> \x

77 :75:05/03/09 17:36:34 ID:???
>>76

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

正規表現中のグループ化のカッコ(?: 〜 )
を外したところ、警告はなくなったのですが、
正常な文字でもひっかかるようになってしまいました。。

78 :nobodyさん:05/03/10 10:51:45 ID:BLVfW5EX
フォームから送信したデータが「表示」が「表¥示」に化けてしまいます。
今はstripslashesで¥を取り除いて処理しています。
ただサーバによっては文字化けしないので、stripslashesを使うと逆に文字化けするので、
stripslashesを使うのはちょっと怖いです。
これって正しいやり方なんでしょうか?ほかになにかいい方法があるのでしょうか?
よろしくお願いします。

79 :nobodyさん:05/03/10 10:55:42 ID:???
>>78
magic_quotes_gpcのOn/Offを見てから処理をする。
get_magic_quotes_gpc();

80 :78:05/03/10 11:21:56 ID:???
>>79
有難うございます。ということは

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

こんな感じでよろしいんですよね。

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

82 :nobadyさん: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"で開いて、ファイルの最後ではなく、
最初に文字列を追記することはできますか?

83 :nobodyさん:05/03/10 16:40:11 ID:???
>>81
バージョン管理用のゴミか差分じゃないかなぁ。
削除して問題ないですよ。

>>82
関数1つではできませんので、そういう処理をするロジックを書いてください。

84 :nobodyさん:05/03/10 16:57:22 ID:tcK+MKqw
質問です。

dbから一定時間経っても反応が無いとき(例えば5秒)、
タイムアウトさせる方法ってどうやるのでしょうか??

85 :nobodyさん:05/03/10 17:12:06 ID:krxtmGDV
includeを使う際に
もとになるファイルの拡張子は
incでもhtmlでも何でもいいですよね?
この中で、この拡張子だと他のよりも読み込みが早い!
なんてのはないですか?

86 :nobodyさん:05/03/10 17:37:08 ID:???
マニュアル読んだのか?

87 :nobodyさん:05/03/10 17:47:38 ID:???
世の中にはいろんな考えがあるもんだ。感心する。
「ファイルネームによって読み込みの速度が違うのではないか?」
なんて、頭が固い私には全く思いつかなかった。

88 :nobodyさん:05/03/10 18:44:56 ID:???
>>87
「a01」
というファイル名と
「a000000000000000000000000000000000000〜0000000000000000000000001」
というファイル名ではスクリプト全体としての速度は違うかもよ。
読み込み自体は変わらんと思うけど。

89 :nobodyさん:05/03/10 19:13:10 ID:???
>>84
そのデータベースアクセス関数にタイムアウトが
実装されてないとやりようがないんじゃないかな。

90 :nobodyさん:05/03/10 19:15:55 ID:???
おいおい、ファイル名で速度が違うと言うのは常識だろw
まさかそんな大事なことを無視してDBの使い方に終始してんじゃねーだろうな

91 :nobodyさん:05/03/10 23:22:12 ID:???
ttp://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-php.html
を参考に XML-RPC を勉強してます。
例のように渡す値は 2 つだけ、と固定の場合は分かりましたが、
渡す値が可変の場合はどうしたらいいでしょうか?

例えば、果物の名前と個数を複数個渡す、という場合です。

92 :nobodyさん:05/03/10 23:54:48 ID:???
>>88
読み込み速度はどうだか知らんが、
メンテナンスは確実に時間が増す。

93 :nobodyさん:05/03/11 00:36:54 ID:???
ファイル名に関してはディレクトリエントリの状況や
ディレクトリエントリキャッシュあたりのような
偶然に左右される要素が影響してくるので、
キニスルナつーか気にしてもどうしようも無いって感じだろうね。

元質の話に戻ると、
拡張子は何でもいい、つーか拡張子が無くてもいい、
PHPの中の人はそのファイルに<?phpがあるかどうかだけ気にしている。
つー所でいいんでなかろうか?

94 :nobodyさん: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;
}
}
正規表現がマズってますかね?

95 :nobodyさん:05/03/11 22:42:09 ID:???
なんで()で括ってるの?

96 :nobodyさん:05/03/11 23:43:35 ID:???
| の優先順位を明示したいだけでしょ

つか、正規表現はスレ違いかと

97 :nobodyさん:05/03/12 00:44:49 ID:???
テスト用に用いている文字列はほんとにSJISなのかと。

98 :94:05/03/12 16:03:01 ID:???
もうちっとがんばってみます。
検索ですか・・

99 :nobodyさん:05/03/12 23:00:23 ID:???
正規表現スレってテンプレ入れてもいいと思うんだけど
現スレまでに入って無いのって何か理由あったっけ?

とりあえず
正規表現道場@2ch Part4
http://pc5.2ch.net/test/read.cgi/php/1105930285/

100 :nobodyさん: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()が使えると思うのですが。


101 :nobodyさん:05/03/13 05:22:51 ID:???
こっちのPHP 4.3.10(FreeBSDのportsでインスコ)では、
Fatal error: Call to undefined function: xslt_set_encoding()
にならなかった。何が違うだろ。

102 :nobodyさん:05/03/13 05:24:36 ID:???
>>101
redhat9 sourceからです。

103 :nobodyさん: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使ったこと無いから具体的にどうするのか知らないが。


104 :nobodyさん: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...

105 :nobodyさん:05/03/13 12:46:53 ID:owz6Nafx
menu.phpというのを作成して、
includeを利用して、メニューを埋め込むようにしたんですが、
階層が変わると、menu.php内に書かれたリンクが相対パスでは
上手くいかなくなるんですが、
絶対パス以外でなんか良い方法はありますか?


106 :nobodyさん: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で使うにはどうすればいいでしょうか。

107 :nobodyさん:05/03/13 13:11:58 ID:???
1文字目が数字の変数は使えませんよ。

108 :nobodyさん:05/03/13 13:17:23 ID:???
>>105
詳しく

>>106
b.phpで「出力された」変数 ですか?
returnを使えば値を返せることは返せますが。。

109 :nobodyさん:05/03/13 13:32:40 ID:j3cG5KiD
誰かttp://pya.cc/みたいなスクリプトありましたら教えてください。

110 :nobodyさん:05/03/13 13:49:30 ID:???
>>109 板違い

111 :106:05/03/13 13:51:11 ID:???
>>107
変に例を作ったのが墓穴を掘りました。実際には文字から始めてます。

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

例)

<form>

-略-

<input type=text name=yyyyy value=>

</form>

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

というように。

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

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

menu.phpのincludeは
<?include($_SERVER['DOCUMENT_ROOT'] . 'menu.php') ?>
を使用して、階層が変わっても対処できたんですが、
同じような感じでmenu.php内のリンクに対しても対処方法はないでしょうか?


113 :nobodyさん:05/03/13 14:13:13 ID:???
>>112
・htmlでbase要素を用いる
・メニュー内のリンクを/からのパスにする
・menu.phpに相対パスを計算させる

114 :105:05/03/13 14:29:21 ID:4ktgufgk
>>113
menu.phpに相対パスを計算させる
とはどういう事ですか?

115 :nobodyさん:05/03/13 14:39:11 ID:???
>>114
REQUEST_URIから各リンク先への相対パスを求め、リンクに埋め込む。

116 :105:05/03/13 14:45:16 ID:???
>>115
base要素でできました。
ありがとうございます。
あと、お手数ですがその方法をもう少し詳しく教えて欲しいのですが。


117 :nobodyさん:05/03/13 16:16:46 ID:???
>>116
お手数過ぎるからヤダ

118 :105:05/03/13 19:08:02 ID:???
>>117
そうですか^
まーでも目的は果たせたので、
いずれにせよ、ありがとうございました!

119 :100:05/03/13 19:14:17 ID:???
configureにSablotSetEncodingを
どうやって指定するのでしょうか。
--with-xslt-sablot以外になさそうなのですが。
./configureの中身は読んでみましたがさっぱりでした。

120 :nobodyさん:05/03/13 21:02:24 ID:???
>>119
読むのならむしろ libsablotron の configure とか /usr/include/sablot.h かと。

121 :nobodyさん:05/03/13 21:15:58 ID:???
>>119
だからexpatはともかく、sablotは使っとらんので知らんがな。

>--with-xslt-sablot以外になさそう
それはPHPのconfigureオプションであって、PHPで該当するオプションは
sablotの設定を見て自動で設定するからいらない。
コメントで書いてあるのは、それ故「必要ならsablotの設定をちゃんとしろ」ってこと。

122 :100:05/03/14 03:18:42 ID:???
Sablotにencoding関係の configure オプションは
ないみたいです。
gingerall にいったら、新しい1.0.2が出てたのでそれをインスコ中

123 :100: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のインストールディレクトリ合わせてるんですけど
だめなんですよ。

124 :nobodyさん:05/03/15 02:58:15 ID:hZ3yLB9y
質問です。
携帯で着メロのダウンロードサイトを作成しているのですが、
開発環境のWindows版ではうまく動作するのですが、
本番環境のLinux版ではダウンロードしようとするとで502エラーを返してきます

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

って方法で接続端末に着メロを出力しているのですが、
なぜかうまくいきません。
502エラーってことはApacheの設定が悪いのでしょうか?
そして、対処法はどのようにすればよろしいでしょうか?

125 :nobodyさん:05/03/15 06:41:46 ID:???
>>124
ケータイにダウンロードさせるなら、適切なContent-Type吐いてechoしてはどうだろう?

126 :nobodyさん:05/03/15 12:43:52 ID:???
>>124
着信音については
Content-Type
拡張子
HTTPリクエストの末尾
に注意する必要がある

127 :nobodyさん:05/03/15 21:24:22 ID:???
description attachmentって携帯で使えないのかな?

128 :nobodyさん:05/03/16 22:49:46 ID:???
一時間に一回自動でデータベースから情報を読み込みファイルを出力したいのですがどのように考えればいいですか?
00分になりアクセスがあったらファイルを出力し次の00分になるまで出力はなし。見たいな考え方でいいですか?
この考え方だと一回もアクセスがないと出力されないことになりますが、何か便利な関数があるんですか?

129 :nobodyさん:05/03/16 23:10:09 ID:???
定期的に実行しなければならないなら、OS側が提供しているcronやtask scheduler。
これが使えないようなら、データ投入時や表示時になんとかするしかない。
表示時(アクセス時)に必要なデータをかき集められるものなら、表示時に時間をチェックして誤魔化す。
データ投入時にあらかじめページを作成しておいて、表示時の時間チェックと組み合わせるのもありだな。

実行環境ややりたい事が分からんことには、可能か不可能かさえも分からんよ。

130 :nobodyさん:05/03/16 23:49:33 ID:???
イメージ関数について質問です。
背景が透過gifな画像をリサイズした場合に透過ではなくなるのですが、
これを透過のままリサイズ出来ないのでしょうか?。
出来るのであれば参考になるサイトまたは方法を教えてください。

131 :nobodyさん:05/03/17 10:53:09 ID:???
>>128
基本は、>>129が言うように、OSの自動処理を使う。
連鯖などでcrontabが使えない場合、いかにしてトリガを引くか、それを考える。

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

さぁ、どれにする?

132 :128:05/03/17 11:48:17 ID:???
ありがとん
リナックスのことワカメだから本買ってしらべてみます


133 :nobodyさん:05/03/17 15:28:44 ID:???
cronが楽だが使えないとなれば、>>131の書いてる3つの内の2つ目が一番一般的かな?

134 :nobodyさん: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);

135 :128: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
ってなのがメールで送られてくるんだけど
エロイ人教えてください

136 :nobodyさん:05/03/17 18:24:21 ID:???
>>135
エロくはないけど、
たぶん、
*/1 * * * * php /home/カゴヤアカウント/public_html/count.php
だろうね。
それでもエラーが出るようなら、phpのパスを調べれ。・

137 :128: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;?>
何がちがうんですかね?


138 :nobodyさん:05/03/17 18:45:35 ID:???
>>137
>>136 wrote
> それでもエラーが出るようなら、phpのパスを調べれ
環境変数、特にコマンドの検索場所を指すPATHが違う。

139 :nobodyさん:05/03/17 18:53:46 ID:???
>>137
CLI用PHPへのパスは?
1行目に
#!/usr/local/bin/php
とか書いてる?

140 :nobodyさん:05/03/17 18:58:22 ID:???
>>137
ttp://www.kagoya.net/cgi/
の、「コマンドパス」項目を穴が開くほど睨んでみ。

141 :128:05/03/17 19:10:27 ID:???
おまいらすげー
できたよありがとうぅ
こんなん何処でおしえてもらうん?
専門学校かね?
んまありがとー

142 :130: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で指定しています。

143 :nobodyさん:05/03/17 19:52:29 ID:???
自宅サーバ上での質問です。

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

■バージョン
PHP 5.0.3
AnHttpD1.42n

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

つか、なんでバージョンでその辺が変わるのかねぇ>PHP
サーバ側とのAPIが変わってるわけでもないのに。


145 :143:05/03/17 20:25:16 ID:???
>>144
スクリプト上で取得の方法を変えたら出来ました。
(前)$ip = getenv("REMOTE_ADDR");
(後)$ip = $_SERVER["REMOTE_ADDR"];

お騒がせしますた(;´д`)

146 :nobodyさん:05/03/17 20:36:26 ID:???
>>128
はてなあんてな使う手もある。

147 :nobodyさん:05/03/17 21:12:04 ID:PAcs7vRb
open_basedir を設定している状態で、
require_once('../main.inc');

と相対パスで一つ上を指定したいんだけど、open_basedirをどう設定すればいい?

148 :nobodyさん:05/03/17 21:12:14 ID:???
>>145
ちゃんとマニュアルに
getenv
注意: この関数は、ISAPIモードでは動作しません。
書いてあるじゃん

149 :nobodyさん:05/03/18 03:12:21 ID:???
>>143-4は池沼


150 :nobodyさん: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です。

151 :nobodyさん:05/03/18 11:00:56 ID:???
おまいら!
SJISでスクリプト掻いてますか
EUCですか?

152 :nobodyさん:05/03/18 11:27:32 ID:???
>>151
外に出す時はUTF-8
普段はASCII

153 :nobodyさん:05/03/18 11:44:31 ID:???
>>150
formがSJISならSJISで来る確率が高かろうから'auto'じゃなくて
'SJIS, EUC-JP, UTF-8, JIS, ASCII'とでも指定してみれば

私はhiddenに判定文字列入れてmb_detect_encodingやってるけども

154 :nobodyさん:05/03/18 11:50:37 ID:???
>>152
外に出すときは生
普段は極薄

155 :nobodyさん:05/03/18 12:23:49 ID:???
>>153
ありがとう、AUTOやめてSJISの優先度上げたら落ち着いたよ

156 :nobodyさん:05/03/18 14:09:11 ID:???
E・U・C!E・U・C!

157 :nobodyさん:05/03/18 15:47:30 ID:H8eZrdKt
.htaccessで

ErrorDocument 404 /404.php

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




158 :nobodyさん:05/03/18 16:06:59 ID:???
$_ENV["REQUEST_URI"] かな

159 :157:05/03/18 16:44:12 ID:???
>>158
あ、ありがとうございます
$_SERVERで試してました。。。orz

160 :nobodyさん:05/03/18 17:05:03 ID:???
$_SERVERでも問題ないと思うが

161 :157:05/03/18 17:08:04 ID:???
>>160
あれ? ほんとだ・・・
なんか全然関係ないとこで勘違いしてたみたいです。
たいへん失礼しました

162 :nobodyさん:05/03/19 00:12:12 ID:???
質問です。
ファイルの行数を取得したいのですが、
極力負荷を低くやりたいです。
ファイルのサイズはデカくて、
1行の文字数は不定なのですが
なにかウマい方法はないでしょうか?

163 :nobodyさん:05/03/19 00:34:00 ID:???
>>162
wc。要するにバイナリーとしてファイルを舐めて[改行]の数をカウント

164 :nobodyさん:05/03/19 00:53:10 ID:???
fileで読み込んでcountで参照って手も。

165 :nobodyさん:05/03/19 00:57:40 ID:???
ありがとうございます。

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

>>164
ファイルがかなりデカいので、fileで読み込むと悲惨なことになりそうです…

166 :nobodyさん:05/03/19 00:58:41 ID:???
>>165
まず試せ。
wcはUNIX系OSのシステムコマンド。

167 :nobodyさん:05/03/19 01:00:14 ID:???
え、、と…
PHPでできないと少々具合が悪いのですが…

168 :nobodyさん:05/03/19 01:04:41 ID:???
>>167
fileで読み込む以外不可能だとおもうよ。
悲惨なことになったらまたおいで。

169 :nobodyさん:05/03/19 01:05:17 ID:???
>>168
わかりました…
どうもありがとうございます、試してみますね(。・ω・。)ノ

170 :nobodyさん:05/03/19 01:06:21 ID:???
>>167
でかいってどれくらい?
具体的な数字をどうぞ。サイズと行数くらいかな?
あと平均カラム数も。

171 :nobodyさん:05/03/19 01:11:39 ID:???
>>167
あとファイルで使ってる文字コードも。

172 :nobodyさん:05/03/19 01:14:24 ID:???
>>170
7万行くらいで、50MBくらいです。
文字コードはSJISです

173 :nobodyさん:05/03/19 01:18:16 ID:???
fopenしてfgetsを繰り返して(取った内容は棄て)カウントでもいいと思うよ。
1行がよっぽど長くなければメモリも食わん。

174 :nobodyさん:05/03/19 01:21:03 ID:???
>>173
なるほど!!
そうすれば効率的ですね。
どうもありがとうございました<(_ _)>

175 :nobodyさん:05/03/19 07:56:37 ID:???
>そうすれば効率的ですね。


∠( ゚д゚)/「え?」


釣りですかそうですか
λ..........

176 :nobodyさん: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行少なくなる

177 :nobodyさん:05/03/19 10:32:13 ID:???
たぶんちょー基本的な質問なんだけど、
ここに出て来る @ ってなに?

$fp = @fopen($file, "w");
$write = @fputs($fp, $contents);
@fclose($fp);

178 :nobodyさん:05/03/19 10:41:48 ID:???
そのまま$fileの部分を$filesにして試してみ
@があるとないの違いがわかる。

179 :177: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サーバー名にしても同じく・・・
他に考えられる原因は何があるでしょうか?

181 :nobodyさん:05/03/19 11:21:46 ID:???
>180
・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
のどちらか。

182 :nobodyさん:05/03/19 11:40:40 ID:???
>>180
>portはwebで開いているか確認できるページで確認したら開いてました。
例示がローカルアドレスなのに、webでのチェッカーで確認したというのが怪しい。

183 :にーchan:05/03/19 12:06:15 ID:???
>181
・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
とはメールサーバを立てているのですがそれの設定が違ってるってことでしょうか?

>182
外部へポートが開いていた場合でもローカルは閉じている場合はあるのでしょうか?

184 :nobodyさん:05/03/19 12:07:10 ID:0sO4bGN4
php の error log に任意を文字列を出力する方法ってある??

185 :nobodyさん:05/03/19 12:19:00 ID:???
>>184
使ったことないけど、trigger_error()あたり。

186 :nobodyさん:05/03/19 12:40:14 ID:???
>>184
マニュアルの
XXX. エラー処理およびログ記録関数

187 :nobodyさん:05/03/19 14:05:22 ID:oXb2sDzY
個人情報だのパスワードだのって、暗号化とかしてる?
暗号化してDBに保存、読み出して複合化とかしたいんだけどPHP中やDBに複合化の
Keyとかプレーンで書いておいたら意味が無いかとも思うしかといってKey暗号化しておいたら
Keyの複合化どーすんのよっつーか

188 :nobodyさん:05/03/19 14:12:54 ID:???
復号しなくていいようにすればいいじゃない

189 :nobodyさん:05/03/19 14:20:54 ID:oXb2sDzY
>>188
比較だけなら暗号化したもの同士で行えば良いんだろうけど
例えば会員がパスワード忘れて問い合わせてきた場合は?
もっかい登録しなおせって訳にもいかないだろうし、個人情報についても
保護法絡みで共有サーバなんかの場合暗号化しときたいんだけど

190 :nobodyさん:05/03/19 16:04:52 ID:???
>>189
もう一回登録させるのに何か問題でも?

191 :nobodyさん:05/03/19 17:43:17 ID:???
>>189
そういう時は、自動生成したパスワードを再発行してやり変更が必要ならそっちで勝手に変えてね
とすればよい。


192 :nobodyさん:05/03/19 18:21:51 ID:Mh3YU28A
ISAPIでHTTP_REFERERとHTTP_USER_AGENTが取得出来ないんですが
なぜでしょう?

193 :nobodyさん: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版だと取れたり。

194 :nobodyさん:05/03/19 18:37:27 ID:???
>>192
anhttpdだろ?
作者に聞け

195 :nobodyさん:05/03/20 03:54:17 ID:34HEFa63
FAQがなかったのでよくある質問っぽいんですが書きます。

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

どうすればmb_string系の関数を使用できるのでしょうか?

196 :nobodyさん:05/03/20 04:12:49 ID:???
>>195
たぶん dl()

197 :nobodyさん:05/03/20 04:21:53 ID:34HEFa63
>>196
ちょっと意味がわからないのですがどういう意味でしょう?

198 :nobodyさん:05/03/20 04:28:43 ID:???
>>197
関数を使って動的にロードしろってことだろ。

199 :nobodyさん:05/03/20 04:32:48 ID:34HEFa63
>>198なるほど。
ちなみにロードするファイル名は何でしょうか?
教えて君ですいません

200 :nobodyさん:05/03/20 05:39:18 ID:???
>>199
すみません、マニュアルって知ってますか?

201 :nobodyさん:05/03/20 05:45:12 ID:???
>>199
http://jp2.php.net/manual/ja/function.dl.php

*mbstring*なファイル名。最もmbstringはdlできたんだっけ?

202 :nobodyさん: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";
↑----------↑

ドロップダウンリストから選択して計算までは出来るのですが、
計算を実行したあとドロップダウンリストの中身が空っぽになってしまいます。
このドロップダウンリストの中身を保持して欲しいのですが、どの様にすればよいのでしょうか?

203 :nobodyさん: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++)の内部が実行されることはありません。

204 :202: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"
)
);
?>

205 :nobodyさん: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;
}
?>

206 :nobodyさん: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ループの内部が実行されないのでしょうか。

207 :nobodyさん:05/03/20 19:27:47 ID:???
endif; ???

208 :nobodyさん:05/03/20 19:40:30 ID:???
>>207
制御構造に関する別の構文
ttp://www.php.net/manual/ja/control-structures.alternative-syntax.php
これって、マニュアルでしか見た事なかったよ。。実際に使っている人がいたのか(笑)

209 :nobodyさん:05/03/20 19:43:11 ID:???
>>208
おぉ、そんなのが有ったのか、一つ賢くなった。

210 :nobodyさん:05/03/21 00:42:45 ID:???
出力する際にHTMLを書くのが面倒になってきたのですが、
連想配列を渡すとリストとして返ってくる関数とか無いですか?

211 :nobodyさん:05/03/21 00:44:11 ID:???
そういう関数作ってみてはいかが?

212 :nobodyさん:05/03/21 01:23:52 ID:???
>>210
配列渡すとテーブルとかリストで吐くような機能を持った
テンプレートクラスがあった気がする。

213 :nobodyさん:2005/03/21(月) 09:29:01 ID:???
ある web から引っ張ってきた文字列から
例えば strip_tags()した後、  だけ取り除きたい時って
どうすればいいの?

214 :213:2005/03/21(月) 09:33:40 ID:???
アフォでした。

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

って書きました…

215 :nobodyさん:2005/03/21(月) 09:37:09 ID:???
>>214
str_replaceでも使えば?

216 :214:2005/03/21(月) 09:42:15 ID:???
だね。自分でも発見した。

ttp://www.softinn.jp/doc/lib/
これって使った事ある人いる?ググったらでてきた。
今んとこ str_replace で充分そうだけど、もしかしたら後で使いたいかも。
どう?

217 :202:2005/03/21(月) 10:44:09 ID:???
セッション使ってみたらとりあえずドロップダウンリストが空っぽにならなくなったよ。
少しだけど前進した。スレ汚しスマンカッタ

218 :nobodyさん: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は再生・登録ともにできました。
何かヘッダー情報たりないんでしょうか?



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

どなたか宜しくお願いします;−;

220 :nobodyさん:2005/03/21(月) 21:34:19 ID:???
phpじゃないじゃない。

221 :nobodyさん:2005/03/21(月) 21:53:40 ID:???
じゃないじゃないじゃない

222 :218:2005/03/21(月) 22:33:01 ID:???
もうちょっと調べてみます
ありがとうございました

223 :nobodyさん:2005/03/22(火) 21:34:33 ID:FZjBD8FM
PHPのカラー表示できるテキストエディタってありますか?
PHPのエディタってあんまりないですよね。。。

224 :nobodyさん:2005/03/22(火) 21:41:44 ID:???
>>223
PHPエディタって、どうよ?
http://pc8.2ch.net/test/read.cgi/php/1079460638/

225 :nobodyさん:2005/03/23(水) 00:55:18 ID:???
phpに出来てcgiに出来ないこと、またはその逆はありますか?

もしないのであれば、何故両立している状態があるのでしょうか?

226 :nobodyさん:2005/03/23(水) 00:56:49 ID:???
春だなぁ

227 :225:2005/03/23(水) 00:58:04 ID:???
>>226
スミマセン。。。社会人っす。。。素朴に疑問なんです。。。

228 :nobodyさん:2005/03/23(水) 01:00:58 ID:???
>>227
ttp://e-words.jp/w/CGI.html

229 :225:2005/03/23(水) 01:04:23 ID:???
>>228
http://e-words.jp/w/PHP.html
これも読みました。。。
理解できていないと思うのですが、PHPの解説サイトとか見てみると、「cgiより軽い」とか「cgiよりサーバーへの負担が少ない」とか書いてあって。
cgiで出来てphpで出来ないことがないとしたら、両立している理由が分からないのです。。。 orz...

230 :nobodyさん:2005/03/23(水) 01:15:31 ID:???
まぁPHPもCGIなはず

231 :225:2005/03/23(水) 01:20:23 ID:???
もっと勉強してきます orz...

>>230
アリガトゴザイマシタ!!

232 :nobodyさん:2005/03/23(水) 01:25:25 ID:???
CGIに出来てPHPに出来ないこと。

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

って、答えたらよかったのかなぁ?

233 :nobodyさん:2005/03/23(水) 02:03:24 ID:???
PHPは言語だからCGIと比較するのはおかしい。
レースドライバーと耕運機を比較するくらいズレてる。
そもそもPHPはCGIとして動かすことも可能。

234 :nobodyさん:2005/03/23(水) 02:27:10 ID:???
>>229
巷の初心者に毛が生えたのが解説してるPHPサイトとかも
ちゃんと理解できていないからその記述になってるので安心汁。
(CGI=Perlらしい)

235 :nobodyさん:2005/03/23(水) 06:46:05 ID:???
>>233
君の頭は四角いな

236 :nobodyさん: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;
}
という認識であってますか?

237 :nobodyさん: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まで落ちない

238 :nobodyさん:2005/03/23(水) 10:24:37 ID:???
>>237
mod_perl > mod_php > Perl(CGI) > PHP(CGI) のようです

239 :nobodyさん:2005/03/23(水) 10:35:10 ID:???
>>236
publicはclass内でpublic変数を定義するもの
classの外で使うとエラーになります

240 :nobodyさん:2005/03/23(水) 10:44:39 ID:???
取りあえず巷にはCGI=perl(言語)と思ってる馬鹿が溢れかえってるので、それを前提に話しをするとヨロシ
>>230みたいな勘違いしてる人は結構珍しいかも。

241 :nobodyさん: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以降使ってる人の為に。。

242 :223:2005/03/23(水) 10:55:20 ID:???
>>224
そんなスレあったのですね。
逝ってきます

243 :nobodyさん:2005/03/23(水) 11:08:37 ID:???
foreach ($arr as $k => $v) {
 foreach ($arr[$k] as $key => $value) {
  echo $key.$value;
 }
}

エラー出る。なんで?

244 :243:2005/03/23(水) 11:18:24 ID:???
おう、配列のほうに問題あったみたい。
ごめん。

245 :nobodyさん: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

246 :nobodyさん:2005/03/23(水) 11:45:34 ID:???
>>245
mkdirを使わないようにプログラムする
必要なディレクトリはあらかじめFTPで作っておく

247 :245:2005/03/23(水) 11:52:15 ID:???
なるほど。
ディレクトリは最悪、事前に準備することが可能なんですが、動的にHtmlファイルを生成(書き換え)したいと思っていまして、そんなとき、fopen()使わずにいけますか?

248 :nobodyさん:2005/03/23(水) 11:57:35 ID:???
>>247
あらかじめ作ったディレクトリ(所有者がPHPスクリプトの所有者と同じ)内であれば特に制限は無いのでfopenでもcopyでも好きにやってくれ。

249 :245:2005/03/23(水) 12:15:22 ID:???
>>248
ありがとうございます。
試してみました。↓
$result2 = copy("test_dummy/test.txt","test_dummy/test2.txt");
。。。でもダメでした。(同じメッセージ)
かなり初歩的なことだと思いますが、引き続きご指南いただけませんか。

250 :nobodyさん:2005/03/23(水) 12:49:38 ID:???
>>249
test_dummyの属性(permission)と所有者(owner)を述べよ

251 :nobodyさん:2005/03/23(水) 14:29:11 ID:???
>>238
>mod_perl > mod_php > Perl(CGI) > PHP(CGI)
その順番は一般にPHPは最初から拡張モジュールてんこ盛りでビルド
Perlは最初から余り入れずプログラムで必要に応じて採用する傾向のよるもの。
(PHPでdl()させてるところって殆どないやん)
実際に測ると総合力は余り変わらんよ。

252 :nobodyさん:2005/03/23(水) 14:30:45 ID:???
mod_perlちょっぱやよ。

253 :nobodyさん:2005/03/23(水) 15:37:48 ID:ZnAQR4mO
特定のディレクトリのファイル容量を取得する方法は、ありますか?

254 :nobodyさん:2005/03/23(水) 15:48:08 ID:???
>>253
OSによる

255 :nobodyさん:2005/03/23(水) 16:04:12 ID:???
>>253
PHPスレで聞いたって事はPHPにそういう関数はないかってことやね
無い と思う
linuxならduコマンド呼べ

256 :nobodyさん:2005/03/23(水) 16:23:40 ID:???
disk_total_space()とdisk_free_space()をゴニョゴニョすれば出そうな気もするなぁ。

257 :nobodyさん: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です
よろすくおねがいします

258 :nobodyさん:2005/03/23(水) 16:29:44 ID:???
>>256
いや できないだろう
ハードディスクの空き容量が出るだけかquotaで割り当てられた容量が出るかじゃないのか
filesize()で一個ずつ足していくのはどうかね

259 :PHP初心者: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

260 :nobodyさん:2005/03/23(水) 16:36:06 ID:???
>>257
view.phpの2行目に
error_reporting(E_ALL);
を入れとく。

261 :nobodyさん:2005/03/23(水) 16:42:32 ID:???
>>259
MySQLのバージョンは?
4.0ならSELECT * FROM abc WHERE comment LIKE BINARY '%$key%'
3ならcommentフィールド自体にBINARYをつける

262 :nobodyさん:2005/03/23(水) 16:46:08 ID:???
>>256
その両方の関数のユーザコメントでその手のが色々書いてある。
でもWindowsで試したけど、まあ上手くいかんね。
>>258の言うとおりdir()辺りで一覧とって、ファイルに限って
逐一filesize()で調べて合計出すのが良いと思う。
# du使えればそれが一番楽だけどね。

263 :nobodyさん:2005/03/23(水) 16:48:48 ID:???
>>259
MySQLのサーバ設定で「日本語(ujis/sjis等)」ときちんと設定する。
サーバ設定が変更できない場合は、次善の策として>>261の方法で対処。



264 :261:2005/03/23(水) 16:56:08 ID:???
BINARY演算子はMySQL3.23.0から使えるようです
ただ英字のHUTUUとかがhutuuでは検索できなくなります。

265 :nobodyさん:2005/03/23(水) 17:27:54 ID:???
>>260
レスありがとうございます
やってみましたが真っ白です・・・_| ̄|○

266 :nobodyさん:2005/03/23(水) 17:48:20 ID:???
>>265
お前は
<?
echo "Hello world";
phpinfo();
?>
から始めろ


267 :245:2005/03/23(水) 17:55:48 ID:???
>>250
遅くなりました。すみません。(>>245 >>247 >>249の件です)
パーミッションはrwx r-x r-xです。
所有者は私のFTP接続アカウントと同一です。

よろしくお願いします。

268 :nobodyさん:2005/03/23(水) 17:59:15 ID:???
>>265
あらゆる処理の前に print "(行番号):"; てなものを放り込んで、
どこまで実行できているのか調べる。
君にはそれがお似合いです。

269 :PHP初心者:2005/03/23(水) 18:49:14 ID:2nyWi/q2
261さん、263さん、ありがとうございました。
取り急ぎ、お礼を申し上げます。 m(_ _)m

MySQLのバージョンは4.0.22です。
お教えくださったことを早速、試してみたいと思います。

270 :245:2005/03/23(水) 19:32:25 ID:???
何度かやっているうちに上手くいきました。
ディレクトリのパーミッションをrwx --x rwxです。
ありがとうございました。

271 :nobodyさん:2005/03/23(水) 21:04:21 ID:???
>>266>>268
自分に知識が無いのは分かってまつ(;´Д`)

最後にこれだけ教えてください
ほぼコピペしただけでも動かないってことは
>>257のソースには不備があるってことですか?

272 :nobodyさん:2005/03/23(水) 21:17:45 ID:???
構文上のエラーはないようだよ

273 :nobodyさん:2005/03/23(水) 21:17:52 ID:???
不備があるないって問題でもないような。
まず、view.phpのほうで、ちゃんとincludeできてるかどうかとか、
そういうのを>>265の言うとおり、
一個一個表示して確かめないとね。

そうしないと何行目がまずいんです!ってのはわかんないと思うよ。

274 :nobodyさん:2005/03/23(水) 21:18:25 ID:???
>271
同じテレビでも違う地域に引っ越したら、場合によっては受信設定を変える罠


275 :nobodyさん:2005/03/23(水) 23:11:40 ID:fSPzJGOM
<?
$case = '17,241';
?>

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


これで表示されませんorz
なにかまちがえてますでしょうか・・・?

276 :nobodyさん:2005/03/23(水) 23:37:55 ID:???
>>275
<? → <?php

277 :nobodyさん:2005/03/23(水) 23:40:42 ID:???
>>275
$case → {$case}

日本語使うなら文字コードにも気を付けろ

278 :nobodyさん:2005/03/23(水) 23:45:07 ID:fSPzJGOM
>>277
ありがとうございました!

279 :nobodyさん: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の中の人に)分かり易く書くこともできます。

280 :nobodyさん:2005/03/24(木) 00:40:10 ID:???
PHPパーサの気持ちが判らん香具師は、
'\'.$case.'(送料を含む)'."\n"
このくらいから始めとけ。

printf()の説明もついでに見とけ。


281 :nobodyさん: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属性を指定しても渡りません。

何か良い方法はあるでしょうか?お願いします。

282 :nobodyさん:2005/03/24(木) 02:48:48 ID:???
>>281
<input type=hidden name=hoge>
を用意して、JavaScriptで値を渡してからform.submit()している。
面倒なんだけどね。

283 :281:2005/03/24(木) 03:01:53 ID:???
>>282
うわー!!!
目から鱗でした。ありがとうございます。

284 :nobodyさん: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()">
てのもありかと。

285 :nobodyさん:2005/03/24(木) 03:15:10 ID:???
>>284
これってJavaScriptでエラーが発生したら問答無用でsubmitされるんだよね
どうせならフェイルセーフにして欲しいなぁ

286 :nobodyさん:2005/03/24(木) 03:21:04 ID:???
>>284
submitを用意すると、textのところでEnterキーを押されると飛んでしまうからヤダ。
当然onclickのところも処理されないし。

287 :284:2005/03/24(木) 03:55:09 ID:???
うーん、JavaScript offの人を取り込めるようにと思ったんだけど、
鯖へのsubmit(意図しないものも含めて)をなるべく減らしたい場合には不適ですね。

288 :281:2005/03/24(木) 04:30:41 ID:???
submitでも出来るんですね。ありがとうございました。
自分のほとんどjavascriptの質問でしたねすいません・・・

289 :nobodyさん:2005/03/24(木) 10:48:10 ID:RDA5se46
PHPでMYSQLのテーブルのデータをエクセルで出力するプログラムを作りたいのですがどのような
やり方でやるのでしょうか?

290 :nobodyさん:2005/03/24(木) 11:27:27 ID:???
csv作ってダウンロードさせたらいいんじゃない。

291 :nobodyさん: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

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

何かヒントか勘所ありましたらお教えいただければ幸いです。
よろしくお願いいたします。

292 :nobodyさん:2005/03/24(木) 15:26:01 ID:???
>>289
dumpして、縦罫を区切り文字に変換、
行頭、行末の区切り文字を削除
残りの罫線文字を全て削除。

で、csvデータの出来上がり!

293 :nobodyさん:2005/03/24(木) 15:35:02 ID:???
>>289
excelで出力か...COM関数かな。

294 :nobodyさん: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]で失敗していると言われます。
何か、怪しいところ、解決のヒントをいただけないでしょうか。
よろしくお願いいたします。

295 :294:2005/03/24(木) 18:09:02 ID:???
すみません。[chage...]としてますが[change...]のtypoです。
あと、sage質問してしまいました。重ね重ねすみません。

296 :nobodyさん:2005/03/24(木) 19:20:48 ID:vhVEynDR
>>289
pearのSpreadSheetExelWriter使えば?

297 :nobodyさん:2005/03/24(木) 19:45:30 ID:???
>>291
ブラウザのキャッシュクリア

298 :nobodyさん: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ボタンを押すと同時に空っぽになってしまいました。
セッションの使い方間違っているのでしょうか?

299 :nobodyさん:2005/03/24(木) 21:22:41 ID:???
>>298
>>268

300 :nobodyさん:2005/03/24(木) 21:29:55 ID:6QAMAmhS
くだらない板の方がいいのかもしれませんが。

多次元配列で、指定したキーの要素が存在するかどうか
チェックする時、キーの範囲を絞って検査する方法
はどうやってますか?
幾つかサンプルを探してみましたが、1次元配列の例しか
見当たりません。
array_key_existsやissetを使うことになると思いますが
どうでしょう?

301 :nobodyさん:2005/03/24(木) 21:33:01 ID:???
わかんねぇんだったら、黙ってろ禿げ

302 :nobodyさん:2005/03/24(木) 22:00:15 ID:???
>>300
考えてるイメージどおりでいいんでね?
絞った範囲を逐次舐めていくか、一旦範囲を切り取った
別の配列用意して、そこを見ても良いと思うけど。

303 :nobodyさん:2005/03/24(木) 22:22:14 ID:6QAMAmhS
>302
レスありがとうです。
issetやarray_key_existsの第二パラメータを
[]付きで指定するとエラーになりますね。
やはり別の配列に切り取って、上記関数を
使う方法しかないでしょうか。

304 :nobodyさん:2005/03/24(木) 22:29:27 ID:???
if(isset($Arr['hoge'])){

とか普通にやるけど?

305 :nobodyさん:2005/03/24(木) 22:46:10 ID:6QAMAmhS
>304
すみません、isset内の$Arr['hoge']は多次元配列でしょうか?

306 :nobodyさん:2005/03/24(木) 22:50:39 ID:???
>>303
array_key_existsは、別に多次元配列を処理できる訳ではないので。

307 :nobodyさん:2005/03/24(木) 22:53:52 ID:???
>>305
if(isset($Arr['hoge']['fuga'])){
とかも念の為確認したけど普通に通るね
4.3.4で確認したが、レン鯖とかでもエラーでた覚えはないな

308 :nobodyさん:2005/03/24(木) 22:56:24 ID:???
>307
では、'hoge'や'fuga'の部分を配列変数で指定したらどうでしょうか?
当たり前かもしれませんが、教えてください。

309 :nobodyさん:2005/03/24(木) 23:09:46 ID:???
つか、連想配列の添え字に配列変数を指定?
preg_replaceのパターンに配列使うみてーなん期待してんのなら
無理じゃね?そういう引数とれる関数じゃ元からねーだろ

310 :nobodyさん:2005/03/24(木) 23:24:39 ID:???
>309
登録の時は普通に配列変数を指定できるはずですが、
キーが存在するかどうかのチェック時に指定できない
となると、PHPの配列というのは、用途が限定されてきますね。
存在しないキーを指定して値を取り出そうとすると、
ランタイムエラーになるのですよね?

311 :nobodyさん:2005/03/24(木) 23:27:47 ID:???
>>310はもっとマニュアルを読む癖をつけたほうがいい。
ttp://www.php.net/manual/ja/types.comparisons.php

312 :310:2005/03/24(木) 23:35:17 ID:???
>311
私はPHPを詳しく理解してないですけど、
あなたは私が何を言いたいのか理解していない気がします。

313 :nobodyさん:2005/03/24(木) 23:42:31 ID:???
>>310
限定も何もPHPがどーのこーのの前に配列が何か良くわかってないんじゃない?

指定の仕方がおかしいっつーてるだけの話よ
別に存在しないKeyの連想配列参照したって構文エラーは出んぞ

314 :310:2005/03/24(木) 23:56:46 ID:???
>313
無効なキーを指定した場合、返ってくる値はNULLでしょうか?
マニュアルで配列のところを見てみましたが、どこに書いてあるのでしょう?
聞いてばかりですみません。

315 :nobodyさん:2005/03/25(金) 00:07:28 ID:???
>>314
おめぇ、いい加減鬱陶しいよ。
自分で試してみりゃ判ることばっかり聞いてんじゃないよ。

316 :nobodyさん:2005/03/25(金) 00:22:20 ID:???
春だなぁ

317 :nobodyさん:2005/03/25(金) 02:48:05 ID:???
           ?           ?            ?   ?  ?  ?
   ??      ??             ??  ??      ???? ????
  ??::                         ??
  ???::           ?               ??
 ????::?::         ????????      ????  ? ????
  ??????::?:::                 :::?::??? ?  ?
  ???????::?::?::::: :: ::   ::::?::????????? ???
   ?????????::?:::?:::::::?::??????????? ???

318 :nobodyさん: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])) {
・・・
}
}
あとはまあ応用で

319 :nobodyさん:2005/03/25(金) 10:40:31 ID:???
天気良いなァ・・・

320 :294:2005/03/25(金) 10:48:05 ID:TwEbcJkK
294です。だらだらと解りづらい説明で恐縮ですが、
どなたかアドバイスいただけないでしょうか。


321 :nobodyさん:2005/03/25(金) 12:01:06 ID:???
mojavi使ってないので直接的なアドバイスできないが、
chage〜とchange〜はtypoですか?

あと、文系っぽい質問の書き方を改めた方がいいと思った。

322 :nobodyさん:2005/03/25(金) 12:59:58 ID:???
[ ]が多くて読みづらい。
setAttribute[〜]、getAttribute[〜]は 見るからに怪しい。

323 :nobodyさん:2005/03/25(金) 15:27:39 ID:???
>>294
$request->setAttribute('hoge', $hoge);
だよ。括弧の形が違う。



324 :nobodyさん:2005/03/25(金) 17:37:14 ID:???
えっ、それわざと書いてるんだと思ってた。

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

わかりずらい書き方ですみませんが、どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。

326 :nobodyさん:2005/03/25(金) 17:59:29 ID:???
「typoです」「typoです」って事故みたいに言うなよ。お前のミスだろうが。
ソースは基本的にコピペ。投稿する前には再確認しろよ。

327 :294:2005/03/25(金) 18:09:25 ID:???
>>326
その通りです。私のミスです。事故みたいに受け取られるのは不本意です。

328 :nobodyさん:2005/03/25(金) 18:12:06 ID:???
>>327
あなたを、typoします

329 :294:2005/03/25(金) 18:29:56 ID:???
>>328
「typoです。
 ()と[]の区別がつきません…」
とかのネタは実は覚悟してたんですが、意表をつかれました。

わかりづらい書き方についてのアドバイスを拒否するわけではありませんが
できましたら、その、変数(オブジェクト)の引き渡しについても
アドバイスいただけないでしょうか。


330 :nobodyさん:2005/03/25(金) 18:47:06 ID:???
とりあえず
>>4

331 :nobodyさん:2005/03/25(金) 18:48:52 ID:???
>>329
もう一度、きちんとした質問として書き直す気は無いんだな?

332 :294:2005/03/25(金) 18:57:30 ID:???
4に該当してましたでしょうか。
>>331
いえ、そうしていいならそうさせてください。上手くかけるかどうかわかりませんが。
今夜もう一度書きます。お目汚しすみません。

333 :nobodyさん:2005/03/25(金) 21:07:00 ID:???
>>328
アタタタタター!
お前はもう氏んでいる。

334 :294:2005/03/25(金) 21:57:21 ID:???
>>330
あの、すみません。本当に4のどこに該当したでしょうか。
再度書こうとしているのですが、うまくまとまりません。
あと、他の方からのご指摘ですが文系っぽい文章もよくわかりません。
自覚がないのは手に負えないとは思うのですが…。
なんだか簡潔に書こうとすると省略が増えて、「最初から言えよ」と
言われそうです。コードを中心に助詞とかはぶいて書くと(理系っぽい?)
傲慢な感じです。(「コード見てわかれよ」というような)
結局typo部分を修正する程度になってしまうかもしれません。
といいつつもうすぐイラン戦なので、明日になるかもです。
typoについてご指摘いただいた方には、感謝してます。少なくとも
わかりづらい文章を読んでいただいたので。
>>333
もっと意表を衝かれました。

335 :nobodyさん:2005/03/25(金) 22:00:57 ID:???
>>294
どっかにうpした方がよくなくって?
フレームワークスレ(Phrameと銘打ってあるが多分mojaviでも良かったかと)もあるけど、
あの書き方だとレス付かない希ガス

336 :nobodyさん:2005/03/25(金) 22:19:34 ID:???
お嬢様口調キター

337 :nobodyさん:2005/03/25(金) 22:30:53 ID:???
>>334
> コードを中心に助詞とかはぶいて書くと(理系っぽい?)
> 傲慢な感じです。(「コード見てわかれよ」というような)

「コード見ずにわかれよ」よりはマシ。
ソースをまるまるうpして、「動きません」だけ言われた方が解決出来る。

338 :nobodyさん:2005/03/25(金) 22:37:42 ID:???
なぁみんな。
元理系で文系卒業したオレに一言言わせてくれ!

理系とか文系とかいう問題では無い!
人の問題なのですよ。

339 :nobodyさん: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サーバ名に変わるだけでした。
何か問題があるとしたらどこがいけないのでしょうか?

341 :nobodyさん:2005/03/26(土) 01:31:23 ID:???
Windows版phpは、メール送信にSMTP接続を使います。
逆に言うと、SMTP接続を受け付ける鯖がなければメールを送信できません。
192.168.1.100にメール鯖が無ければ当然そのようなエラーが起きます。
プロバイダのメール鯖を使うとしても、最近はPOP before SMTP等色々な制約があります。
そのWeb鯖が本番環境なら管理者に相談してみましょう。

342 :nobodyさん: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でも受け渡ししろ。ってことか?


343 :nobodyさん: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番ポートが遮断されているんですか?!
可能性としてどこがありえますか?

346 :nobodyさん:2005/03/26(土) 02:00:01 ID:???
>>342
翻訳thx.

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

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

んで、何が見にくいかって、コードが本文中にメリ込んでるあたり。
どこがコードでどこが本文かわからん。
一旦左脳つかってから右脳に渡すとか面倒だ。

347 :346:2005/03/26(土) 02:01:11 ID:???
>346
>classだとしたら
クラスだろうな。 寝ぼけたこといってすまん。

348 :nobodyさん:2005/03/26(土) 06:11:57 ID:???
>>346
> 翻訳thx.

シヤ−プの翻訳機だ。
脳内厨−>エスパー変換機能バンドル版
めいどいんシナ(海賊版)
入手困難。

349 :nobodyさん:2005/03/26(土) 07:50:30 ID:t6rEtfl2
php4のoopはオーバーロード出来ないですか?
試したんですが出来ないみたいで。。
php5は出来ますか?

350 :山田:2005/03/26(土) 08:02:13 ID:VYgvgifg
>>343
25番ポートは開放されています。
しかし設定によって遮断されているというのはありえるのでしょうか?

351 :nobodyさん: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");//文字コード指定

352 :nobodyさん:2005/03/26(土) 08:35:51 ID:???
>349
試したコードを晒してみ。話はそれからだ。

353 :山田:2005/03/26(土) 09:07:31 ID:VYgvgifg
>>351
ぐぐってみてその設定はすでに完了しています。
php.iniファイルは他のPC(メール送信PHPが動いたPC)で使っていたものを
持ってきて環境設定したので大丈夫だと思うんですが・・・


354 :294: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はこれにて潜行します。
別スレでもひとつ穏便によろしくお願いしますね。
ありがとうございました。


355 :nobodyさん:2005/03/26(土) 10:18:14 ID:???
>>354
サンクスです。
PHP4のoopはあんまり使えないですねorz


356 :PATH_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 を使っているのですが、どのように設定すればいいのでしょうか?

357 :nobodyさん:2005/03/26(土) 11:01:27 ID:???
(´-`).。oO(それはApacheの話な気がするけど・・・)

358 :nobodyさん: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に出力したいのですがどのようにすればいいのでしょうか?

359 :nobodyさん:2005/03/26(土) 11:15:24 ID:???
>>358
・対象URLからXMLデータを取得
・XMLをパース
・<Current_listeners>のValueを出力

_以上_

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

_以上_

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

>>538-539

thanks a lot!!

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


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

【俺たちゃ裸が】Apache質問スレ【ユニホーム♪】
http://pc8.2ch.net/test/read.cgi/mysv/1103367974/

363 :nobodyさん:2005/03/26(土) 12:43:53 ID:???
document rootでやったことないのとpath_infoではないけど、
たぶんmod_rewriteなら出来るとおもうよ。


364 :358: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";

365 :358: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'));
?>

366 :358: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";
?>

367 :nobodyさん:2005/03/26(土) 14:31:21 ID:???
>>364-366
ここはチラシの裏じゃねぇよ。

368 :nobodyさん:2005/03/26(土) 16:53:02 ID:???
>>350
>25番ポートは開放されています。
実際に開放されてることはどうやって確認したの?

>しかし設定によって遮断されているというのはありえるのでしょうか?
自分はWindowsは良く知らないので、思わぬところに設定があったりして
はまることは良くある。あと今回はNATかなんかで外のISPのSMTPに繋ぐから
関係ないんだろうけど、外のSMTPサーバ側で接続規制してることも稀にあるからね。

369 :nobodyさん:2005/03/26(土) 17:22:24 ID:???
このperlの命令をPHPで同じことをするにはどうしたらいいのでしょうか?
unpack 'B133',substr($data,8,17);

370 :nobodyさん:2005/03/27(日) 01:12:17 ID:KQq1VVe4
Apache+PHPはどんな実行環境なんでしょうか?
一回のGetに対してphp.iniで設定されているmemory_limit分のメモリが
割り当てられて複数のGetに複数の処理系が動くのでしょうか?


371 :nobodyさん:2005/03/27(日) 01:15:25 ID:???
>>370
Apacheのモジュールの場合は、Apacheのプロセスで動作する。

372 :nobodyさん:2005/03/27(日) 08:15:29 ID:x1LbwUGs
execがうまく動かないんだけど、なんでだろう
セーフモードとか全オフなのになー

373 :nobodyさん:2005/03/27(日) 17:14:47 ID:???
>>372
独り言は日記帳に

374 :nobodyさん: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 くらい。

375 :374:2005/03/28(月) 08:19:01 ID:???
書き忘れました。
PHP 4.3.10 (cli)
です。 >> 374 の s/CUI/cli/g ですね。。

376 :nobodyさん:2005/03/28(月) 09:23:27 ID:???
PHPの設定のmemory_limitを-1に
メモリ食いつぶしても俺のせいにしないでね

377 :nobodyさん:2005/03/28(月) 10:02:33 ID:YyD4GvIT
たとえば2chのスレをスレタイのキーワードで絞って表示するようなスクリプトがあったとして、
$keyword = 'きーわーど';となってて、キーワード指定しないで全て表示したいときは
$keyword = '*';でOKでしょうか?

378 :nobodyさん:2005/03/28(月) 10:12:58 ID:???
>>377
いまいちわからん。

379 :nobodyさん:2005/03/28(月) 10:48:41 ID:8BD5QTo3
if文でチェキラしといて、スルーしとけばいくね?
どんな感じか解んねーけど、取りあえずチェキッとけとって。

380 :nobodyさん:2005/03/28(月) 11:45:09 ID:Z3hOsg+9
ログを保存するとき日付の項目を、
「05/03/28(月)」という形式にしているのですが、
保存するときはタイムスタンプで保存して、
出力時に日付に変換するほうがいいのですか?

381 :nobodyさん:2005/03/28(月) 11:54:19 ID:???
そうすると処理は増える。
どっちが良いのかは、必要があるか無いかで判断すれ。

382 :nobodyさん:2005/03/28(月) 13:08:42 ID:1BLl4/4M
アニメーションGIFってイメージ関数では作れませんよね?
だとすると、バイナリデータを操作して作るしかないのでしょうか?

383 :nobodyさん:2005/03/28(月) 13:27:12 ID:???
>>377
2chのスレをスレタイのキーワードで絞って表示するようなスクリプト次第


384 :nobodyさん:2005/03/28(月) 15:22:19 ID:???
>>382
PHPを使ってということならその通り
自分でライブラリを作って公開したらどう

385 :382:2005/03/28(月) 16:02:00 ID:???
そうですか。では自分で作ってみることにします。
ありがとうございました。

386 :nobodyさん:2005/03/28(月) 17:48:52 ID:0by1676F
【種別】 掲示板
【言語】 問いません
【備考】
ttp://pc5.2ch.net/test/read.cgi/hp/1106947416/
上のような感じのものがいいのですが

387 :nobodyさん:2005/03/28(月) 17:49:40 ID:???
>>386
誤爆しました

388 :nobodyさん:2005/03/28(月) 18:11:52 ID:???
(・∀・)ニヤニヤ

389 :nobodyさん:2005/03/28(月) 20:16:03 ID:YyD4GvIT
>>378 >>383
実は人様(今連絡とれませんorz)に作って頂いたスクリプトなので、
その部分を公開したいのですがちょっと気が引けます。。

でもそれじゃあ相談できませんよねorz
うーん。。。

390 :nobodyさん: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

391 :nobodyさん:2005/03/29(火) 03:08:23 ID:sh3sT6Yb
質問お願いします。
classのメンバ変数に他のクラスのインスタンスを置いたとき、
そのメンバ変数のメソッドを実行する時は
$this->hoge->proc();
では駄目なんでしょうか?
Call to a member function on a non-objectとエラーが出てしまいます。
何かヒントでもあればお願いします。

392 :nobodyさん:2005/03/29(火) 03:23:49 ID:???
>>391
ヒントも何も普通に使えるよ。



393 :391:2005/03/29(火) 04:01:37 ID:???
>>392
え?まぢっすか。
見直してみます。
どうもありがとうございます。

394 :nobodyさん:2005/03/29(火) 10:58:39 ID:ChFumad5
ローカルフォルダにある.htmlと.phpファイルを
ブラウザでFTPの様にディレクトリ表示させリンクでファイルを開きたいのですが

良いスクリプトがあれば教えてください。


395 :nobodyさん:2005/03/29(火) 11:08:40 ID:???
あきらかにすれ違い  死ね

396 :394:2005/03/29(火) 13:04:39 ID:???
自己解決しました。

397 :nobodyさん:2005/03/30(水) 19:06:28 ID:???
2次元配列$hogeを関数に送って関数内で例えば$hoge[0][0]なら(0,0,$hoge[0][0])と
2次元配列全部の要素をループで取得したいのですけど、どのようにすればいいのでしょうか?
宜しくお願いします。

398 :nobodyさん:2005/03/30(水) 19:12:55 ID:???
2度ループ処理すれば良いと思うよ。

399 :nobodyさん:2005/03/30(水) 19:45:47 ID:???
>>398
サンクスです。
2次元配列の添字ってどうやって取得するのですか?

400 :nobodyさん:2005/03/30(水) 20:24:10 ID:???
>>399
マニュアル読め。
$hoge[0][0]とかで出来るけど。

401 :nobodyさん:2005/03/30(水) 20:26:55 ID:???
foreach($hoge as $out_key => $out_value){
foreach ($out_value as $in_key => $in_value) {
//ここで好きに処理汁。
}
}

array関連の関数を見るのも吉

402 :nobodyさん: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重ループでも当然可
}
実際のコードを書く時には、配列要素のチェック等が必要。

403 :nobodyさん:2005/03/30(水) 20:45:00 ID:???
PHPでMySQLの操作に関するのはこのスレで良い?

404 :nobodyさん:2005/03/30(水) 20:54:57 ID:???
>>403
とりあえず、書いてみ。
話はそれからだ。

405 :nobodyさん:2005/03/30(水) 21:12:44 ID:???
linuxでアップロードしたファイルがupload_tmp_dirに作成されないのですが
原因として何が考えられるでしょうか?
sleep()で止めてファイルを確認しても作られません。
file_uploadsOn

406 :nobodyさん: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のデータを
持ってきたいんだけど、試行錯誤した結果思ったとおりに出力できたソースが
(続く)

407 :406: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
こうなった。んで思ったとおりに表示されてるんだけど、リレーショナルデータベース
の使い方としてこれで良いのか、もっとスマートなやり方があるのかお聞きしたい。


408 :405:2005/03/30(水) 21:36:19 ID:???
自己解決・・切腹物だった・・・

409 :nobodyさん: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;

410 :nobodyさん:2005/03/30(水) 22:50:33 ID:???
>>408
切腹する前に何で悩んでたか教えてくれ
それで笑わせてくれ

411 :nobodyさん:2005/03/30(水) 23:14:01 ID:???
>>409
なるほど、そうやって使うものなのね。
自分で>>407を書いててこれってリレーショナルな使い方じゃないよな・・・
って素人ながらに感じていたんだよ。
完全にSQLスレで聞いたほうが良い内容だったけど、お蔭様で先が見えてきました。
ありがとう。

412 :nobodyさん:皇紀2665/04/01(金) 00:38:54 ID:6CcmQp6c
CGI版のphpで、エラーがでる場合、internal server errorになりますよね。
このエラー内容を、ブラウザに表示できないでしょうか?

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

なんかライブラリなりコードでもいいので、
ご存じの方、教えていただければ幸いです。

413 :nobodyさん:皇紀2665/04/01(金) 01:25:04 ID:???
ブラウザを綴じて一定期間中セッションを残したいんだが
どうすればいい?

414 :nobodyさん:皇紀2665/04/01(金) 01:33:55 ID:???
>>413
マニュアル読めばいい。

415 :nobodyさん:皇紀2665/04/01(金) 01:55:33 ID:???
有難うございます。
何ページですか。

416 :nobodyさん:皇紀2665/04/01(金) 01:59:08 ID:6CcmQp6c
>>415 おいおいそれはたよりすぎ。
www.php.net いって、sessionで検索。
あとはまかせた。

session はある程度の知識がないうちに公開しちゃうと、
いろいろとセキュリティーホールになるので注意

417 :nobodyさん:皇紀2665/04/01(金) 02:02:03 ID:???
SingleHTML版のマニュアルを落としてきて、1ページ目を読む。

418 :nobodyさん:皇紀2665/04/01(金) 02:02:12 ID:???
おいおい
エイプリルフールですyo!

419 :nobodyさん:皇紀2665/04/01(金) 02:08:52 ID:???
なるほど

420 :nobodyさん:皇紀2665/04/01(金) 08:16:41 ID:???
おまいら、PHP 4.3.11と5.0.4がリリースされましたよ。
昨夜PHP4も5もコンパイルしたばっかりだというのに...orz

421 :nobodyさん:皇紀2665/04/01(金) 08:38:19 ID:???
>>420
うそと思いながらも確認してしまった俺

422 :nobodyさん:皇紀2665/04/01(金) 11:08:27 ID:???
だぁ〜っ、ネタかよっ!釣られた!
>>412
error_reporting

423 :nobodyさん:皇紀2665/04/01(金) 11:16:34 ID:???
php4は昨年と変わらず(ナディア)、php5はウサギ(?)だった

424 :nobodyさん:皇紀2665/04/01(金) 12:21:42 ID:???
たぶん>>420はここのネタにつられたんではないかと。
ttp://www.sitepoint.com/blog-post-view.php?id=248887


425 :421:皇紀2665/04/01(金) 12:41:40 ID:???
今見たら本当にリリースされてるし
リリースの日付は3/31だからエイプリルフールじゃないよな

426 :nobodyさん:皇紀2665/04/01(金) 19:11:43 ID:???
PHPのログが犬になってるのはイースターエッグだな

427 :nobodyさん:皇紀2665/04/01(金) 19:12:12 ID:???
ログじゃねー ロゴだ
phpinfo() や公式に確認可

428 :nobodyさん:皇紀2665/04/02(土) 01:44:36 ID:???
ショッピングカートのセッションについて教えてください。
2つのブラウザで同時にアクセスすると同一セッションになりますが、
1つ目のブラウザが決済のページに入ったら2つ目のブラウザは
決済ページを表示できないようにしたいです。

429 :nobodyさん:皇紀2665/04/02(土) 02:42:07 ID:???
>>428
新しいセッション開始すれば?

430 :nobodyさん:2005/04/02(土) 05:01:43 ID:4/Eqlz9k
PHP5はそろそろ乗り換えてもいい感じですかね。

431 :nobodyさん:2005/04/02(土) 05:02:31 ID:???
PHP6になるまで待つのだ

432 :nobodyさん:2005/04/02(土) 11:45:09 ID:???
5.0.4揚げ

433 :nobodyさん:2005/04/02(土) 18:06:21 ID:55/k15cN
PHPサイトを立てようと思っているのですが、負荷テストを行いたいです。

知り合いにそういったツールがあると聞いたのですが、どんなものがあるのでしょうか?

434 :nobodyさん:2005/04/02(土) 18:37:44 ID:???
2ちゃんで晒す

435 :nobodyさん:2005/04/02(土) 18:40:02 ID:???
>>433
ab

436 :nobodyさん:2005/04/02(土) 20:25:51 ID:A7D+JrLe
phpでパスワード付きzipを作成するコマンドを発行したいのですがどうしたらよいのでしょうか。 

437 :nobodyさん:2005/04/02(土) 23:15:02 ID:???
>>436
PHPからコマンド発行するには
systemかexec関数を使えば良いよ

438 :nobodyさん:2005/04/02(土) 23:20:20 ID:A7D+JrLe
パスワードを入力する対話型の部分はどうしたらよいのでしょう?

439 :nobodyさん:2005/04/02(土) 23:25:29 ID:???
>>438
作ればいいんじゃない?


440 :nobodyさん: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

441 :nobodyさん: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;
//===========================================================
どうすればダウンロードできるのでしょうか?
お助けいただければ幸いです。よろしくお願いします。

442 :nobodyさん:2005/04/03(日) 10:23:20 ID:???
4.3.11 入れたのに phpinfo が 4.3.10 だ。なぜだ。

443 :nobodyさん:2005/04/03(日) 10:44:02 ID:???
>>442
インストールミスか、再起動してないとかじゃないの?
ソースはきちんと4.3.11になってたよ。

444 :nobodyさん:2005/04/03(日) 13:35:14 ID:???
>>433
OSSの性能・信頼性評価/障害解析ツール開発
ttp://www.ipa.go.jp/software/open/forum/DevInfraWG.html

445 :nobodyさん:2005/04/03(日) 13:42:01 ID:QiTsRZ7F
当方PHPを学んでみようと思ってる者です。
みなさんはどのようにしてPHPを覚えられましたか?
本でしょうか、それともネット上で?

446 :nobodyさん:2005/04/03(日) 13:54:12 ID:???
>>445
マニュアルを読めば十分。
マニュアルはネットで配布されている。

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

とは言っても、アルゴリズムの一つや二つ知ってるだけでも、
かなり違ってくると思うので、本を買うのも、また良し。
(本に書いてあるかどうかは不明)

447 :nobodyさん:2005/04/03(日) 14:00:57 ID:QiTsRZ7F
即時の返答ありがとうございます!
マニュアルってこれのことですね。
ttp://php.s3.to/man/

早速トライしてみます。

448 :nobodyさん: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で運営している)を入力しているのですが。

知ってる方いらっしゃいませんか?

449 :441:2005/04/03(日) 16:00:01 ID:rv9qNWYe
>>441 どなたかわからないでしょうか?

450 :nobodyさん: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.

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

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

お助け願えれば幸いです。

452 :nobodyさん:2005/04/03(日) 18:42:28 ID:???
マルチバイト文字は
mb_eregiかmb_eregを使って正規表現できる

453 :nobodyさん:2005/04/03(日) 18:44:05 ID:???
>>451
カタカナが違うっぽい。
chr()とord()を使って文字コードについて考えるよろし。

454 :nobodyさん:2005/04/03(日) 18:44:49 ID:???
preg_*だとUTF8使えば可能

455 :451: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でも可能な方法はあるのでしょうか・・・

恐縮ですが、よろしくお願いします。

456 :nobodyさん:2005/04/03(日) 21:22:06 ID:???
>>442
Windows版PHPでphp-ts.dll他を入れ替えてないというオチでは?

>>447
検索だとそのサイトがどうも上位に来るようなんだけど、マニュアルが古いから
ちゃんと本家のマニュアルをベースにした方が良いよ。
あと手元にアーカイブをコピーしてそっち見るとか。
http://jp.php.net/manual/ja/

457 :nobodyさん:2005/04/03(日) 21:47:00 ID:wg0bg1Ve
hogehoge
2ch

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

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

と記述するとエラーが出てしまうんですが、どこが間違っていますか?

458 :nobodyさん:2005/04/03(日) 21:55:15 ID:???
なぜ
<? include("../hogehoge/index.php") ?>
と書かないの?

459 :nobodyさん:2005/04/03(日) 22:02:23 ID:???
>>455
マニュアルの記述は古いので現在は実験的ステータスってのは英語版のマニュアルには無い。

preg_*はUTF8でないと正確に日本語を扱うことは出来ない。

460 :457:2005/04/03(日) 22:08:12 ID:???
>>458
以前その書き方をした時にエラーが出て、457のような書き方を知ったんですよ。。
でも今それを試してみたらできました。
よくわかんないけど解決しました。
ありがとうございました。

461 :nobodyさん:2005/04/03(日) 22:39:13 ID:???
>>460
その環境のセーフモードに関わるあたりの設定か、
その当時の(PHPのセーフモード絡み)バグかと思われ。
# セーフモード絡みのバグは結構多い。

462 :nobodyさん:2005/04/04(月) 00:28:53 ID:/X5zJ+6W
ITmedia エンタープライズ:PHP、DoS攻撃の脆弱性に対処
http://www.itmedia.co.jp/enterprise/articles/0504/03/news010.html


463 :nobodyさん:2005/04/04(月) 00:53:24 ID:???
ob_start()っていみあんの?
マニュアル読んだけどポンとこないいだなぁ
どんなとき使うの?

464 :nobodyさん:2005/04/04(月) 01:25:35 ID:???
>>463
ob_start();
curl_exec($ch);
$str = ob_get_contents();
ob_end_clean();

465 :nobodyさん:2005/04/04(月) 02:28:34 ID:???
バッファリングする必要はある?

466 :nobodyさん:2005/04/04(月) 02:51:56 ID:???
>>465
curl_exec()はphpinfo()等といっしょで、実行すると(通常は)標準出力に垂れ流しちゃうから、
こうやってバッファリングでキャッチするしか、その出力を変数として取得できないんよ。

467 :nobodyさん:2005/04/04(月) 04:10:19 ID:???
curlって普段使ってないんですけど、あまり関係ないかなぁ
こんな使い方で着ますか?
header("location...."の出力の前になにか出力されていると
エラーになるけどob_start()使えば大丈夫?

468 :nobodyさん: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が出す
> エラーメッセージをそのまま出力しないように取り込んでるね。

469 :nobodyさん: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モジュールでも値が取得できません。
これらの値はどういうときにセットされるんですかね?

470 :nobodyさん:2005/04/04(月) 09:59:45 ID:???
>>469
CLIは無理だろ。サーバモジュール版で取れない理由は判らんが、
サーバ側がセットしてないからかな。mod_envを入れてないとか。

471 :447:2005/04/04(月) 10:43:04 ID:???
>>456
わざわざありがとうございます!ここの板の方は親切な方ばかりで。
本家のマニュアルを参考にしてPHPを使いこなせるように精進します。

472 :nobodyさん:2005/04/04(月) 12:54:34 ID:???
Spreadsheet_Excel_Readerで日本語を表示させられるのでしょうか?

473 :nobodyさん:2005/04/04(月) 15:50:32 ID:8msdlW8Q
linux fedora core2にphp4がインストールされているのですが、これをphp5にバージョンアップするにはどのようにしたらよいのですか?

474 :469:2005/04/04(月) 16:14:02 ID:???
>>470
> >>469
> CLIは無理だろ。
いや分かってますが、一応お約束ということで確認しました。

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





475 :nobodyさん: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']
ユーザーエージェントが送らないとセットされない


476 :nobodyさん:2005/04/04(月) 16:22:11 ID:???
$_SERVER['HTTPS']なんてあったっけ、、、
あったとしてもSSL関連のっぽいし
print_r($_SERVER)してみたら

477 :469: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') で代替するかな。


478 :nobodyさん:2005/04/04(月) 17:42:57 ID:???
質問です

例えばtest.phpがあったとして
そのソースの中にtest.phpを読み込む記述をしたら無限ループしちゃうの?

479 :nobodyさん:2005/04/04(月) 17:46:46 ID:???
やってみれば?

480 :nobodyさん:2005/04/04(月) 18:17:36 ID:???
>>478
怖いです…

481 :nobodyさん:2005/04/04(月) 18:18:40 ID:???
>>478じゃなく>>479だった
レンタル鯖なんでダウンとかしたら怖いのです

482 :nobodyさん:2005/04/04(月) 18:29:31 ID:???
>>481
2chに書き込んでいるマシンにPHPを入れて試せばいいやん。
別にApache入れたりせんでもコマンドラインで試せるでしょ。

483 :nobodyさん:2005/04/04(月) 19:41:50 ID:???
無限ループになる可能性があるならinclude_onceを使うのが正しい方法

484 :nobodyさん:2005/04/04(月) 20:01:18 ID:???
無限ループを起こすと PHP がスクリプトに強制停止命令を出してると思った

485 :nobodyさん:2005/04/04(月) 21:33:40 ID:???
>>484
そんなことは無い。

xdebugかましてたり、php.iniで実行時間の上限を設定していたら別だが。

486 :nobodyさん:2005/04/05(火) 00:26:42 ID:???
質問です。
以下のxmlスクリプトをsimpleXML関数で読み込み、
<root>
 <p>ああ</p>
 <p>いい</p>
 <comment>アア</comment>
 <p>うう</p>
 <comment>イイ</comment>
</root>
これを上から順に、以下のように出力したいのですが、どうすればいいのでしょうか?
ああ
いい
アア
うう
イイ

487 :nobodyさん:2005/04/05(火) 09:06:53 ID:???
filesize()やgetimagesize()を使うときに
fsockopen()みたいにHTTPヘッダを自分で用意することはできないのでしょうか?
もしくはfsockopen()でソケット接続ときに上の関数で取得する方法

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

分かる方がいたら教えてください。

488 :nobodyさん:2005/04/05(火) 09:29:10 ID:???
>>487
リモートのファイルを取得してローカルの/tmpに保存。
そのファイルに対して各関数を適用すればいいんじゃないの?
httpのheadリクエストでも取得できる場合もあるけども。

489 :U 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

490 :nobodyさん:2005/04/05(火) 10:44:32 ID:???
500? 403?

491 :nobodyさん:2005/04/05(火) 11:21:06 ID:???
Perlのuse strictに相当するものってないんでしょうか?


492 :nobodyさん:2005/04/05(火) 11:22:29 ID:???
>>489
実は俺もやった
Windows のApache2.0 moduleで
Parent: child process exited with status 3221225477 -- Restarting.
>>490
Apacheの子プロセスがこけたので何も帰ってきません

493 :nobodyさん: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を行わなければ問題なく改行コードを
除去できるのだが、何故?

494 :nobodyさん:2005/04/05(火) 13:25:15 ID:???
>>491
ないけど、エラーレポート最大に上げれば結構厳密なチェックが出来るよ

495 :nobodyさん:2005/04/05(火) 13:48:01 ID:???
cronから-fで起動した時だけに

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

のエラーが出ます。普通に起動した場合はちゃんと動きます。
どんな理由が考えられるでしょうか。どなたかお助けを・・・。

496 :nobodyさん:2005/04/05(火) 13:53:27 ID:???
>>493
nl2brの使い方を間違ってるから。

497 :nobodyさん:2005/04/05(火) 13:54:19 ID:???
>>495
環境変数の関係でphp.iniを指定してやらなならんのですバイ。

498 :nobodyさん:2005/04/05(火) 14:02:24 ID:???
>>493
自分の環境ではちゃんと削除されました。
WinXP PHP5.0.4
Linux PHP4.3.10

499 :nobodyさん: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で数えて判定をだすというのは効率が悪い気がするので
うまくチェックする方法はないですか?

500 :499:2005/04/05(火) 14:23:59 ID:???
dieするならbreakはいらないか

501 :nobodyさん:2005/04/05(火) 15:24:53 ID:???
>>497
ありがとうございます。
php自体は動くようになったのですが、今度はpostgresが動かない。
configureの確認かな・・・。

502 :nobodyさん:2005/04/05(火) 15:54:20 ID:???
>>501
postgres単独では動作してるの?

PHP + PostgreSQL
http://pc8.2ch.net/test/read.cgi/php/983128806/
こんなのもあるよ。

503 :nobodyさん:2005/04/05(火) 16:42:18 ID:???
くだ質スレ向きかもしれないけど・・・
phpinfo()で表示される
Thread Safety  disabled
ってPHPのこといってるんでしょうか。


504 :nobodyさん:2005/04/05(火) 17:05:06 ID:???
>>503
Yes.

Zend Thread Safety(ZTS)
--enable-maintainer-zts
--enable-roxen-zts

505 :491: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
と吐いてくれました。
代入は検出できませんが、これだけでもあると助かります。


506 :nobodyさん:2005/04/06(水) 07:26:06 ID:nH8oVa9B
php5をFedora core2にインストールしたのですが、apache2から使えるようにするにはどうしたらよいのでしょうか?

507 :nobodyさん:2005/04/06(水) 07:35:25 ID:???
>>506
>>4

508 :nobodyさん:2005/04/06(水) 07:53:21 ID:???
>>504
ありがとう。
このオプションを付けてメイクしApache2と組み合わせれば、スレッドセーフな
PHPが利用できるということですか?
今はApache 1.3の環境しかないので週末にでも試してみます。

509 :nobodyさん:2005/04/06(水) 08:36:34 ID:???
>>493
最初に\n消しちゃ駄目だ

510 :nobodyさん:2005/04/06(水) 10:46:50 ID:gc7DD2Cw
文字列になったXMLのパースをさせたいのですが、例えば
'<mojiretsu>moji"retsu</mojiretsu>'
みたいなかんじに、その文字列内に実体参照が入っています。
これを xml_parse_into_struct() に喰わせてやると、
実体参照がことごとく消えてしまうのですが、
これはそういう仕様なんでしょうか?
'MOJIRETSU' => 'moji"retsu'
みたいに取り出すにはどうすればいいでしょうか?
PHPは5.0.3を使っています。


511 :nobodyさん:2005/04/06(水) 10:57:56 ID:???
↑の2行目の " は &quot; のことです。
'<mojiretsu>moji&quot;retsu</mojiretsu>'


512 :nobodyさん:2005/04/06(水) 11:18:54 ID:???
>>510
><mojiretsu>moji"retsu</mojiretsu>
そもそも、これはXMLの仕様で許されるのか?
CDATAセクションでもなしに。

513 :nobodyさん:2005/04/06(水) 11:20:40 ID:???
>>511
ちゃんとなってるのね。

514 :nobodyさん: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"
}
}

515 :514:2005/04/06(水) 12:05:47 ID:???
$strは>>511の内容。


516 :nobodyさん:2005/04/06(水) 15:51:09 ID:???
空白(半角スペース)を に変更する関数はありますか?
addslashesみたいなのキボン

517 :516:2005/04/06(水) 15:52:37 ID:???
もう一回
空白(半角スペース)を&nbspに変更する関数はありますか?

518 :nobodyさん:2005/04/06(水) 16:27:24 ID:???
つstr_replace

519 :nobodyさん: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"
}
}

520 :nobodyさん: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

全部結果は同様にちゃんと出てる。


521 :nobodyさん: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
そのものじゃないのか?

522 :nobodyさん: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では問題なし。

523 :nobodyさん: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が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。

524 :nobodyさん: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が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。

525 :nobodyさん:2005/04/06(水) 17:59:54 ID:???
>>524
---------------------------------
<form action="test.php"method="post>
選択名<BR>
<select name="num">
    ・
    ・
    ・
---------------------------------
[test.php]

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



526 :nobodyさん:2005/04/06(水) 18:02:48 ID:???
>>525
それだけで1.2.3表示できるようになるんですか?
有難うございます。早速試してみます。

527 :nobodyさん:2005/04/06(水) 18:22:48 ID:???
javadocやdoxygenみたいにソースからドキュメント起こせるツールってある?


528 :nobodyさん:2005/04/06(水) 19:06:28 ID:???
>>527
PHPDocumentor

529 :nobodyさん: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");
}
?>

あっていますか?




530 :nobodyさん:2005/04/06(水) 20:30:31 ID:???
(´-`).。oO(あってるかどうか試してから書き込めよ)

531 :nobodyさん:2005/04/06(水) 20:52:36 ID:???
>529
間違っています
どこかのブラウザでどこかの鯖なら間違って動く事もあるかもしれないが。
ってかそれだけの事だけだったらJS使えば?

532 :nobodyさん:2005/04/06(水) 21:15:05 ID:???
>>520-522
ありがとうございます。ピンポイントでバギー版にあたっちゃったんですね。

533 :nobodyさん:2005/04/07(木) 00:22:36 ID:???
お世話になります。
htmlのformで注文情報をpostして値をチェック
入力不適切なところがあれば前のページへ戻すのですが、
そのときに値が消えてしまいます。
どうすればよろしいのでしょうか。

534 :nobodyさん:2005/04/07(木) 00:35:58 ID:???
>>533
> 前のページへ戻す
の所を、適切入力の項目を初期値として設定したものを表示する。

535 :nobodyさん:2005/04/07(木) 00:48:26 ID:???
お世話になります。
了解しました。

536 :nobodyさん:2005/04/07(木) 00:48:40 ID:???
>>533
<input type="text" name="hoge" value="$_REQUEST['hoge']">

537 :nobodyさん:2005/04/07(木) 01:27:11 ID:???
>>536
おいおい。クロスサイトスクリプティングってしってるか?

538 :nobodyさん:2005/04/07(木) 01:34:41 ID:???
>>537
エスケープしなきゃら無いのは同じだけど、
>>536の場合XSSとは別問題だなw


539 :nobodyさん:2005/04/07(木) 08:02:27 ID:???
hogeが "><script... とか?

540 :nobodyさん:2005/04/07(木) 08:17:27 ID:???
$_REQUEST['hoge'] = htmlspecialchars($_REQUEST['hoge']);
ぐらいしてるだろ。

541 :nobodyさん:2005/04/07(木) 09:18:19 ID:???
世の中、悪さをする奴が悪いのか、それとも悪さをされる奴が悪いのか(--;

542 :nobodyさん:2005/04/07(木) 09:35:15 ID:???
>>541
そりゃ悪さする奴が悪いが、悪さされたことにより
それが誰かに被害を与えれば、被害を与えた奴が(も)悪い。

ある程度同情はするが免責はせんよ、自分が被害者なら。

543 :nobodyさん: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 です。
何か思いつく方おられましたら教えてください。よろしくお願いいたします。

544 :nobodyさん:2005/04/07(木) 16:07:19 ID:???
全角スペースでもはいってんじゃね?

545 :nobodyさん:2005/04/07(木) 16:07:57 ID:???
>>543
鳴かぬならぶち殺してしまえ、そのスクリプト。

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



546 :nobodyさん:2005/04/07(木) 16:13:32 ID:???
>>543
if文の前に問題があるんだと思うぞ。
なんか閉じ忘れてるとか、セミコロン無いとか…

547 :nobodyさん: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";
  }
 }
}

548 :nobodyさん:2005/04/07(木) 17:36:31 ID:???
http://php.s3.to/bbs/bbs5.php
↑これですが、Sn Uploaderのように、
下部にディスク使用量を表示させるにはどうすればよいでしょうか?

549 :nobodyさん:2005/04/07(木) 17:40:20 ID:???
>>584
下部にSn Uploaderのようにディスク使用量を表示するスクリプトを追加する

550 :nobodyさん:2005/04/07(木) 17:53:40 ID:???
>>548
echo 'ディスク使用量'.exec('du img').'バイト';

551 :nobodyさん:2005/04/07(木) 18:35:54 ID:???
>>550の記述を追加してみましたが、できませんでした

552 :nobodyさん:2005/04/07(木) 18:39:21 ID:???
>>550
しかし *NIX 依存


553 :nobodyさん:2005/04/07(木) 18:43:53 ID:???
543です。 どうもありがとうございました。

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

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

早くしないと旧機が持っていかれてしまう;;  焦りまくりッス 
愚痴スマンです。 ありがとうございました。


554 :nobodyさん:2005/04/07(木) 19:38:04 ID:vs0utpq/
晒しなさい。

555 :nobodyさん:2005/04/07(木) 21:15:40 ID:???
>>553
無償なんで普通に入れてたりしますが。
# まあ運用上は有益だけど問題が出るケースもあるから、
# 依頼されなけりゃ入れないが正解だが。

phpinfo()で入ってるか簡単に判るので念のため確認しとき。
何にせよ自分が使ってる環境を本人が認識できてないなんて、良くないことなんだから。
PHP4.3.9ならPHP Accelerator(PHPA)か、Zend Optimizerのどっちか。APCはない

556 :nobodyさん:2005/04/07(木) 23:41:29 ID:???
ログファイルに書き込むときに、
設定した行数を超えたら最初の行を消すようにしたいのですが、
全部書き換える以外にいい方法はありますか?

557 :nobodyさん:2005/04/08(金) 00:17:56 ID:???
>>556
シーケンシャルな仕組みを使う以上、ない。

558 :nobodyさん:2005/04/08(金) 00:19:57 ID:???
だよね、どうもありがとう

559 :nobodyさん:2005/04/08(金) 01:21:41 ID:???
おいおまいら!
スクリプトはシフトジスで書いていますか?
もれはいままでEUCだったけど、なんかスクリプト書くの
ウィンドウズだしシフトジスでいいかなぁなんて思えてきた。

560 :nobodyさん:2005/04/08(金) 01:40:53 ID:???
>>559
-enable-zend-multibyte
なら、お好きにどうぞ。


561 :nobodyさん:2005/04/08(金) 01:51:02 ID:???
>>559さんどうもでつ
mbstring.internal_encodingがeucでhtmlのencodingがシフトジス
でphpの記述がシフトジスで問題ないですか?

562 :nobodyさん:2005/04/08(金) 01:55:51 ID:???
Shift_JISで書く意味なくね?俺はEUCでずっと書いてる

563 :nobodyさん:2005/04/08(金) 02:03:09 ID:???
mvcになってねぇ
デザがシフトジスでhtlm作るんだよ。
そーするとスクリプトとhtmlですげー厄介
HTML_QuickFormではスクリプト内でformのアトリビュートとか
設定するでしょう、

564 :nobodyさん:2005/04/08(金) 02:06:51 ID:???
>>563
どちらにせよデザの持ち込むhtmlは、文字エンコードも
改行コードも信用ならんので、間に一括変換噛ますでしょ?

565 :nobodyさん:2005/04/08(金) 02:12:39 ID:???
改行コードはあんまり気にしてないっす。
でもさぁ EUCにするメリットはあるのか?
いままで鯖のロケールがEUCだったので合わせてたけどね。
クライアントからscpでアクセスしてウィンドウズから
ソース見るしね。
気になるのがDBへのインサートかな。おもにMYSQL使ってんだけど
mysqlの文字コードはどーなってのか心配・・・・

566 :nobodyさん:2005/04/08(金) 02:27:39 ID:???
WEB関係はUTF8に統一した。

567 :nobodyさん:2005/04/08(金) 02:30:41 ID:???
好きなの使えば良いさ

568 :nobodyさん:2005/04/08(金) 02:36:36 ID:???
>>566
裏山椎茸
漏れも速くUTF8に移行したい。
スクリプトはEUCに統一してたんだが、
OSがUTF8な物が増えてきた。

569 :nobodyさん:2005/04/08(金) 04:17:13 ID:???
utf-8にした場合、phpmyadminで文字化けしない?

570 :nobodyさん:2005/04/08(金) 04:33:19 ID:???
         ,. ─- 、,,.___
        ,イ〃          `ヽ,__
.     N. {'             \
.    N. {               ヽ
.    N.ヽ`               〉
    N.ヽ`        ,.ィイ从       /
.    ヾミ.___-‐=彡'ノノノ__,ゞミ=-_rく
      lrf´ゞ"モ=ヾーf =モチ<}rv^i !
      ヾト、` ̄,り「弋!  ̄´ノ ソ
         !  ̄  ii{_,.   ̄  /r'´
.       ┌────────────‐┐
       .|                   .|
   ,. -‐ '|                   .|
  / :::::::::::|  >>569              .|__
  / :::::::::::::|  おまいはとんでもない    rニ-─`、
. / : :::::::::::::|  考え違いをしているようだ `┬─‐ .j
〈:::::::::,-─┴-、                  |二ニ イ
. | ::/ .-─┬⊃                     |`iー"|
.レ ヘ.  .ニニ|_____________.|rー''"|
〈 :::::\_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::: |:::::::: /::::::::::::|

571 :nobodyさん:2005/04/08(金) 07:24:59 ID:???
>>565
SJISの場合は、PHP処理の内部で変換が何度も掛かるので効率が悪い。
(Zend Engineがそのまま扱えないため)
EUC-JP/UTF-8はそれがない。ケータイ向けであっても全部SJISで扱わずに、
最終的な出力でSJISにしてやるのが良い。

という理由はあるが、--enable-zend-multibyteして適正に
mbstring関係設定して使うのなら、別に構わんと思うよ。
判ってて使ってるんだから。理解しないで文字化けがとかが一番ウザイ。

572 :nobodyさん:2005/04/08(金) 09:42:26 ID:???
>>565
MySQLのバージョンなんぼからだったかは忘れたけど、SJIS対応してるから
SJISに設定すれば問題なく使えるよ。もちろん全く問題なしというわけではないが、
携帯向けの開発中心にやってる俺からすれば、デメリットよりもメリットの方がかなりデカイ。


573 :nobodyさん:2005/04/08(金) 11:54:02 ID:KGAjK1pc
register_globals=on の状態なんですが
フォームの適当な箇所でEnterを押すと
複数あるsubmitボタンの表示が一番上の値が取得されてしまうのですが
これを下のsubmitボタンの値を取るように、又は値を取らないようにするには
どうしたらよいのでしょうか?

574 :nobodyさん:2005/04/08(金) 11:59:28 ID:???
>>573
ブラウザの仕様だからPHP側ではにゃんとも

575 :nobodyさん:2005/04/08(金) 14:38:39 ID:???
>>573
<input type="submit" />じゃなくて<input type="button" />にしてやれば
Enterを押しても送信されない・・・と思う。


576 :nobodyさん:2005/04/08(金) 17:38:23 ID:???
ビルダーでPHPスクリプト作れますか?

577 :nobodyさん:2005/04/08(金) 18:18:08 ID:???
>>576
マッチョビルダーじゃ作れない

578 :nobodyさん:2005/04/08(金) 18:19:52 ID:???
>>577
どうやって作ればいいのですか?

579 :nobodyさん:2005/04/08(金) 18:27:44 ID:???
外部JavascriptをPHPで吐くようにしたんですが、
FirefoxやOperaでは問題ないのにWin-IEでは実行されません(画面真っ白)。
スクリプトの内容は単なるdocument.writeの羅列です。

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

何かIE特有の注意点等ありますでしょうか?

580 :nobodyさん:2005/04/08(金) 18:53:23 ID:???
>>576
マルチ
>>579
JavaScriptはよく知らないからアレだけど
HTMLのscriptタグ内にtype=text/javascript入れるとか
phpでheader()でContentーtype:text/javascript入れるとか

581 :579:2005/04/08(金) 18:58:51 ID:???
>>580
どうもです。
一応そこらへんはやってるはずです。
phpのheaderではContent-type: application/x-javascriptを吐いてます。
Contentーtype:text/javascriptもやってみましたが同じでした(´・ω・`)

582 :nobodyさん:2005/04/08(金) 19:06:02 ID:???
PHPやめて.jsにしたら読める?まずPHPの問題かJavaScriptの問題かはっきりさせよう

583 :579:2005/04/08(金) 19:26:42 ID:???
>>582
jsファイルにするとうまく行きます。
また、IEでJavascriptのエラーは出てないようです。

584 :579: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>

585 :nobodyさん: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)

586 :nobodyさん:2005/04/08(金) 19:49:50 ID:???
>>584
WinXP + Apache2 +PHP5.0.4 では問題なし
あとhttp://hoge.com/は他人のサイト。http://example.com/を使う。

587 :nobodyさん:2005/04/08(金) 19:57:50 ID:???
<title>タグにphpが吐くソースと違うエンコーディングの文字が入ってたのが
原因でした・・・3回ほど吊ってきます・・・どうもありがとうございました orz

588 :nobodyさん:2005/04/08(金) 20:15:17 ID:???
参照渡しわからんです。

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



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

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

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

どうにかならんものでしょうか?


590 :nobodyさん:2005/04/08(金) 21:07:52 ID:???
動画からサムネイル画像を吐き出すようなライブラリってありますかね?
探してもなかったもんで・・・

591 :nobodyさん:2005/04/09(土) 01:45:25 ID:BWP/VWku
ファイルを取得→保存→一定時間ごとにファイル更新

こんなことがしたいでつ
こういうのを組むのに参考になるサイトだけでいいんで教えてください

592 :nobodyさん:2005/04/09(土) 03:14:41 ID:???
>>591
unix系なら cronjob で好きな時に wget --mirror すればいいだけだろう。
windowsは知らない。

593 :nobodyさん:2005/04/09(土) 03:32:30 ID:???
>>588
リファレンス渡し http://www.php.net/manual/ja/language.references.pass.php
リファレンスによる返り値 http://www.php.net/manual/ja/language.references.return.php


594 :nobodyさん:2005/04/09(土) 09:46:58 ID:???
>>593
リファレンスによる返り値でマニュアル読んでたんですけど
わからないです。
マニュアルには リファレンスを返すことは、結合する変数を見付けるために
関数を使用し たい場合に便利です・・・
pear のMDBとかはじめのconnectionなどで使われています。
結合する変数・・・ うーん難しい


595 :nobodyさん: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. - どの変数をリファレンスと結びつけるか
リファレンスで値を返すのは便利やねん。
どんな時に便利かつーとな、どの変数をリファレンスと結びつけるかを関数でやろうとする時やねん

596 :nobodyさん:2005/04/09(土) 10:53:53 ID:???
質問させて下さい。

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

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

質問が抽象的ですが、いままでうごいていたのに
うごかなくなった場合、どこから手をつけていけば良いのでしょうか?


597 :nobodyさん:2005/04/09(土) 11:10:36 ID:???
どう動かなくなったのかも分からない?

598 :596: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);

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

またまた抽象的なのですが、
どこから手をつけていくと、原因を発見できるのでしょうか?


599 :nobodyさん:2005/04/09(土) 11:56:43 ID:???
管理者とサポセンとは認識が違うだろうけど途中からregister_globalsを変更するとは
思えないんだが・・・
データをあげてphpinfo見てみそ

600 :nobodyさん:2005/04/09(土) 12:07:15 ID:???

ttp://www.sakura.ne.jp/news/20050325-001.news

601 :nobodyさん:2005/04/09(土) 12:58:22 ID:???
テスト運用って有料ユーザーでやる事なのだろうか?_?

602 :596:2005/04/09(土) 13:01:48 ID:???
>>599

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

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

おいおい 連絡してこいよ 

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

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

ON が OFF になる。
これだけで大きく被害を受けました。。。。

603 :nobodyさん:2005/04/09(土) 13:05:47 ID:???
mod_rewriteが怪しいと思うなら、htaccessあたりでRewriteEngine offにして動作確認するとか。
オイラなら素直にスクリプトのデバッグをするけども。
きちんとエラー処理をしてれば速攻で問題個所を絞れそうな・・

604 :nobodyさん:2005/04/09(土) 13:10:17 ID:???
すいません、現在のアンカー位置(<a name=〜>で定義するやつ)を
得ようしたんですが、
$_SERVER["REQUEST_URI"]
$_SERVER['QUERY_STRING']
などの情報が取得できないようです。
$_SERVERを$_ENVに変えたり、serverVar("URL")とか試したりしたんですが、
全て値を得ることが出来ませんでした。
他に呼び出された完全なURLを取得する方法などはございませんでしょうか…。

無料のHPスペースなのでhtaccessを触ったりとかそういうことはできませんです。

605 :nobodyさん:2005/04/09(土) 13:12:36 ID:SXkH7OvC
10進数の数字のみの文字列を出来るだけ短い文字列にしてMySQLに入れたいのですが、
256進数(つまり1バイト文字全て使う)に直そうと単純に$string = chr($int)として$stringを入れようとすると、
SQL文のダブルクオーテーションが消えてしまったり、あるいは増えてしまったりしてMySQLに格納出来ません。
何か良い方法は無いでしょうか?

606 :nobodyさん:2005/04/09(土) 13:16:17 ID:???
いったいなんでそんな事をするのか逆に質問したい

607 :nobodyさん:2005/04/09(土) 13:25:32 ID:SXkH7OvC
>>606
MySQLのリファレンスに、インデックスを使う際は対象となるデータの桁数が短いほうが良いと書かれていたからです。
データ容量も落とせると思うし。

608 :nobodyさん:2005/04/09(土) 13:36:58 ID:???
>>604
そもそもブラウザが#以降の文字列を鯖に送出していない。
ブラウザのhttpリクエスト・レスポンスヘッダを見るツールがあるのでそういうので確かめてみるとよい。
ieHTTPHeaders、proxomitron、パケットキャプチャー等。

609 :nobodyさん:2005/04/09(土) 14:50:00 ID:???
>>607
桁数の問題って、そんなに対象のフィールドに入れるデータが
数字が膨大な長さのデータばかりなのか?
よっぽど特殊なデータとか膨大なレコード数になるとかでもない限り
素直に整数型で入れればと思うが
ミクロレベルの問題を凄い上の層でどうにかしようとしてる感が

610 :nobodyさん:2005/04/09(土) 15:30:06 ID:SXkH7OvC
>>609
MySQLは符号無しbigintでも20桁くらいしか扱えませんよね。
それをオーバーしてしまうのです。
その長い10進数の文字列を左から3桁ずつで区切ると各区分のパターン数は256以内に収まります。
そこで、各パターンに0〜255までの数字が1対1に対応するよう割り振り、(最小完全ハッシュのような事)
その数量を256進数に直し、区切っていたものを再結合して一つの文字列にしてMySQLに格納したいのです。
区切らずに全桁で考えたほうがパターン数が節約出来ますが、検索時の事情でそれは出来ません。
3桁の区分ごとに専用のフィールドを用意する事も速度の低下とHDD使用量の増加になってしまうので、
やはり一つの文字列として一つのフィールドに格納したいのです。

611 :nobodyさん:2005/04/09(土) 15:44:49 ID:???
メモ帳でphpファイルを作ってみましたが、ファイル名は××.phpでよろしいでしょうか?
アップしたときに××.
php.txtと出ますが、問題ないでしょうか?

612 :nobodyさん:2005/04/09(土) 15:47:55 ID:???
アップしたんなら開いてみれば問題あるかないか分かると思うけど。
普通にphpファイルとして動作させるのなら.txtは要らない。

613 :nobodyさん:2005/04/09(土) 15:53:36 ID:???
>>612
アップしたらファイル名にtxtと付くんですよ...
何故でしょう?

614 :nobodyさん:2005/04/09(土) 15:55:07 ID:???
>>613
メモ帳で保存した時についてるんじゃ?
アップしたあとでもファイル名変えれば良いだけ。

615 :nobodyさん:2005/04/09(土) 15:56:09 ID:???
CGIを使っているけどユーザーには使わせない鯖なんじゃねぇの

616 :nobodyさん:2005/04/09(土) 16:05:53 ID:???
>>608
ああ、そうなんですかわかりました。
ありがとうございます

617 :596:2005/04/09(土) 16:18:04 ID:???
register_globals ONにしたら
なんなくうごくのですが、
危険ですよね。。

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

どなたか、OFFで動かすテクニックというか
そんなサイトにでも誘導していただけませんか・・・

618 :nobodyさん:2005/04/09(土) 16:18:50 ID:???
>>613
えっ!?
アップ先のファイル名っつ変えられるんですか?
よろしかったか仕方を教えて下さい!!

619 :nobodyさん:2005/04/09(土) 16:23:33 ID:???
ファイルマネージャかFTPソフトにそういう機能が付いてると思う。

620 :nobodyさん:2005/04/09(土) 16:23:50 ID:???
ワロタ

621 :nobodyさん:2005/04/09(土) 16:25:51 ID:???
>>619
有難うございます。

622 :nobodyさん:2005/04/09(土) 16:28:27 ID:???
>>617
はじめに(初歩の初歩)ぐらいは読もうな。
http://www.php.net/manual/ja/tutorial.php
最もその中で書かれてるハイパーリンク先の詳細が重要


623 :nobodyさん:2005/04/09(土) 16:40:38 ID:???
こういうスレもあるんでよろしく。

【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/l50


624 :nobodyさん:2005/04/09(土) 16:45:36 ID:???
>>610
流れを読まずに書き子。
数値を文字列として扱えればいいだけなら、varcharに入れたらよいのでは?


625 :605:2005/04/09(土) 17:11:13 ID:SXkH7OvC
>>624
それだと必要な機能は出来ますが、
MySQLのリファレンスによるとインデックスを使う際は対象となる文字列の桁数が少ない方が良いらしいのです。
1桁に使われる文字の種類数が少ない事で桁数を減らした場合と同様な効果があるとしたらくたびれもうけだけど。
(これがありえそうで怖い)
でもHDD使用量が抑えられるという効果は確実にありそうだし出来ればやりたいのです。

626 :589:2005/04/09(土) 17:26:34 ID:fpNXc15C
すんません。
>>589もよろしくお願いします。。。

627 :nobodyさん:2005/04/09(土) 17:26:57 ID:???
>>625
その数値がどれくらいユニークなのかは知らんが、先頭の数バイト分だけ
インデックスを作成することもできるよ。
alter table hoge add index (column(4))
見たいな感じでね。

ま、しかしHDDのお値段と復号やらなんやらの手間とを天秤にかければ・・・
てなことも考慮した方が良いのでは。

628 :nobodyさん:2005/04/09(土) 17:35:07 ID:???
>>626
認証ページにて、
1.認証に成功→サーバ内にセッション情報を保存して該当ページへリダイレクト
2.認証に失敗→認証ページへ戻る

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

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

あ、当然セッション情報は有効期限を設けて定期的に消去する。
普通はログオフ時に削除すればいいんじゃね。
盗聴が怖ければSSLで暗号化するしかないんじゃないの?
と、とりあえず適当に書いてみた。推敲もしてません。

629 :589:2005/04/09(土) 19:04:25 ID:fpNXc15C
>>628
> FTPの該当ページではセッション情報を検索して

↑これ、具体的にどうしたら良いのでしょうか?
FTPのページではPHP等は動かせないですよね?

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

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

取得するだけのページならsession_start()だけでいいですよね?

631 :nobodyさん:2005/04/09(土) 19:54:09 ID:???
>>629
ファイルをダウンロード(orアップロード)させたいんでしょ?
プロトコルにhttpを使うかftpを使うかは関係なく、
urlを直打ちしてダウンロードさせなければよいのでしょ?
そのための認証ページを作るという意味なんだけど・・・


632 :nobodyさん:2005/04/09(土) 21:15:02 ID:???
コンテンツ事の認証にユーザーIDの空ファイルを利用しようかと想うのですが
サーバーとしてファイルの数が多くなるというのは良くないのでしょうか?

633 :nobodyさん:2005/04/09(土) 23:52:34 ID:???
最近学習始めた初心者です。

クラス概念が有る様ですが、ディストラクタの起動する要因が判らない
ので、知っていたら教えて下さい。


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

※たとえばApacheでDocumentRootを/usr/local/apache/htdocsにしてるなら、
/usr/local/apache/Download(適当)/に置いておけば、url直うちでは
たどり着けない。

635 :nobodyさん:2005/04/10(日) 00:01:57 ID:???
>>633
オブジェクトが消滅するとき。

636 :nobodyさん:2005/04/10(日) 00:03:44 ID:???
みんなもうphp5に移行してんの?

637 :nobodyさん:2005/04/10(日) 00:20:25 ID:???
>>636
PHP5に対応したcacheってあったっけ?
あればそろそろ移行してもいいかな。

638 :633:2005/04/10(日) 00:31:17 ID:???
>>635
どうやったら消滅するのですか?
unset? それとも、die?

639 :nobodyさん:2005/04/10(日) 01:30:02 ID:???
>>636
みんあがしたらするよ。

640 :nobodyさん:2005/04/10(日) 03:02:33 ID:???
>>636
SOHOとしてはレン鯖とかホスティング鯖に普通に入りだしたら移行
っつーか移行せざるを得ない、結局みんなが使い出したらかw

641 :nobodyさん:2005/04/10(日) 07:20:50 ID:???
>>640
同じく...なんだけど、php3->php4のときは共存できたので、
未だにphp3のままのところがあるわな。

php4とphp5は(通常)共存できないので、中小企業向けレン鯖は当面php4のままだろう。
レン鯖のphp5対応鯖に新規or乗換する蔵が出てくるのはいつのことなんだろう。。。

642 :nobodyさん:2005/04/10(日) 09:04:55 ID:???
>>637
Zend製品は対応してる。PHPAは全然動き無いし、
MMcacheは開発休止してる。

スクリプトキャッシュじゃないけど、VM最適化パッチはかなり効くね。
PHP5.1だけじゃなくて、PHP4.4とかで入れてくんないかな。

643 :nobodyさん:2005/04/10(日) 12:00:23 ID:???
XREA鯖はPHP4 5 両対応

644 :nobodyさん:2005/04/10(日) 12:59:48 ID:jGzXhnVH
「中田様、小野さん、中村選手、用務員、警備員、柳沢様」(、区切り)
これを↓で変換すると

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

「中田選手、小野選手、中村選手、用務員選手、警備員選手、柳沢選手」
となってしまいます。
「中田選手、小野選手、中村選手、用務員、警備員、柳沢選手」
となるように(語尾に「選手」「さん」「様」がついていない場合はそのままにしておくように)
するには、どのように書き換えたら良いですか?


645 :nobodyさん:2005/04/10(日) 13:26:17 ID:???
>>644
mb_ereg系を使って方がよさげ。
$message=mb_ereg_replace('([^、])(選手|さん|様)' , '\1選手', $message)

646 :nobodyさん:2005/04/10(日) 13:46:51 ID:jGzXhnVH
>>645
お答えありがとうございます。
ごめんなさい、mb_ereg_replaceのように実験的なステータスにある関数は使えないんですよ。

647 :nobodyさん:2005/04/10(日) 14:08:09 ID:???
>>646
そうなのか。いっそ単純に
$message=preg_replace('/(さん|様)/' , '選手', $message);
でいいんじゃね。>>644も「、」が区切りと認識してないし。


648 :nobodyさん:2005/04/10(日) 14:11:22 ID:???
何度もスマソ。
こう書くと区切りの「、」がそれなりに機能するかな。
$message=preg_replace('/(さん|様)(、|$)/' , '選手$2', $message);



649 :nobodyさん:2005/04/10(日) 14:14:59 ID:jGzXhnVH
>>647
>>648
出来ました。
そうでした。なんか難しく考えすぎてたみたいでした。
ありがとうございます!

650 :nobodyさん:2005/04/10(日) 14:38:57 ID:???
>>646
mb_ereg_replaceは、今はもう実験的位置づけじゃないよ。
http://jp2.php.net/manual/en/function.mb-ereg-replace.php

651 :nobodyさん:2005/04/10(日) 18:05:37 ID:???
2次元配列があるのですが、
2次元目の配列の個数で、
1次元目をソートすることはできますか?
ランキングっぽいことをやろうとしているんですが…

652 :nobodyさん:2005/04/10(日) 18:14:29 ID:???
ア…
multisort使えば出来そうですね
おさわがわせいかましt

お騒がせしました。

653 :nobodyさん:2005/04/10(日) 18:27:15 ID:???
最近のプログラマは自前のコードでソートプログラムすら書けないのか・・・
なんというか、質が落ちたな・・・

654 :nobodyさん:2005/04/10(日) 18:28:19 ID:???
それは初心者ですらできなきゃいけない事なのですか?

655 :nobodyさん:2005/04/10(日) 18:45:34 ID:???
自前でやるより処理が早い事もあると想うが?

656 :nobodyさん:2005/04/10(日) 18:46:28 ID:???
>>654
「効率的な」とか「高速な」ソートを作るという訳でなければ、
要するにアルゴリズムが理解できないプログラマといえる。

まあ色んなプログラマがいるからソートの仕組みが組み立てられない
ことが即駄目プログラマとは言えないけど、概ね駄目。

657 :nobodyさん:2005/04/10(日) 18:55:28 ID:???
なんでも便利な関数でやっちゃうのが抵抗あるんでしょ。それくらい頭を使え、と。
変なたとえだけど、鉛筆をカッターで削ってた時代の人が、機械でガ〜〜ってやってる若者を見て、今時の若者はカッターも使えんのか、みたいな感じなんだよ。

658 :nobodyさん:2005/04/10(日) 19:08:28 ID:???
そういや昔、便利な関数の存在を知らずに自分で作ってた事あったなぁ
そんな経験ない?

659 :nobodyさん:2005/04/10(日) 19:30:15 ID:???
しかし自前のコードがすらすら組めるなら
質問スレなんて必要ないわけだが。

PHPが普及してきたからこそ、質問スレは盛り上がるし
質問は増えてくるのに、それをみて
レベルが下がったというのは如何な物か。

660 :nobodyさん:2005/04/10(日) 19:39:15 ID:???
みんな色々な質問したり、発見したりして成長していくんだからさ。
>>653
こういう事をさらさら言えるほうが、人間として質が落ちてる気がするよ。

661 :nobodyさん:2005/04/10(日) 19:42:57 ID:???
>>659
うん?平均的にレベルが下がったのは事実だよね。

いいんじゃないの。平均が下がったお陰で
マニュアル読まずにこういったスレに書き込んでも、
怒られることもなしに誰かしら教えてくれるような
環境が出来た訳だから。英語が読めなくても誰か
翻訳してくれるしね。

662 :nobodyさん:2005/04/10(日) 19:45:16 ID:???
それでいいとおもう

663 :nobodyさん:2005/04/10(日) 19:58:13 ID:???
なんか根っからの職業プログラマ…っていうかおっさんが混ざってるみたいだな(w
給料いくら?

664 :nobodyさん:2005/04/10(日) 20:10:10 ID:???
30半ばのおっさんなので70マソ/月。職業プログラマではない。


665 :nobodyさん:2005/04/10(日) 20:23:06 ID:???
給料70万ももらってるやつが
2chのこんなところにいんなよpu

666 :nobodyさん:2005/04/10(日) 20:38:13 ID:???
リーマンで30半ばで70万なら良い方だな?職業何?
俺の知り合いの奴らなんてみんな月の手取り30〜40ぐらいでひ〜ひ〜言ってるが、普通はそんなもんだろ。
俺はリーマンやったことないから分からんが。

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

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


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


>>665
携帯関連とか株関連の板見た事無いみたいだね。
年収1000万程度(スレによってはカス扱い)の奴なんか腐る程いるぞ。

667 :nobodyさん:2005/04/10(日) 20:38:29 ID:???
スクリプト言語の特性上
どんどん便利になっていくし使う人への敷居も低くなっていく
でもそれを先人が「使う人間のレベルが下がった」だけで
割り切ってしまうのもなんだかなあ

668 :nobodyさん: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で統一しています。

誰かいい解決方法を知っていたら教えてください。
よろしくお願いします。

669 :nobodyさん:2005/04/10(日) 21:16:07 ID:???
インディーズの頃好きだったバンドがブレイクしちゃって
昔はよかったとか、今はミーハーなファンばっかりだとか言う奴いるけど
そういうのと同じじゃない?

670 :nobodyさん:2005/04/10(日) 21:41:42 ID:???
雑談はいい加減にして質問か回答しろよ

671 :nobodyさん:2005/04/10(日) 21:48:57 ID:???
ごめん。

672 :nobodyさん:2005/04/10(日) 22:26:19 ID:???
>>668
ファイルの所有者を変更できるのはふつうrootだけ

というわけで別の方法を考えた方が良さそう。管理者にgidで
チェックするようにしてくれって頼むとか。

673 :nobodyさん:2005/04/10(日) 23:14:44 ID:???
$str = abcdefg.hoge.tokyo.ne.jp
ereg_replace("^.+?\.","*****.",$str);

これで下の様に頭の部分を隠したいのですがエラーが発生してしまいます
何かPHPの記述方法があるのでしょうか?
*****.hoge.tokyo.ne.jp


674 :nobodyさん:2005/04/10(日) 23:29:59 ID:???
フォルダごとにディスクの容量を計算したいですが、うまくいきません。
フォルダの残量は disk_free_space を使って表示できたのですが、
使用量をどのようにして表示させようか悩んでいます。
ちなみに、PHPはセーフモードで動いています。
$dir_space = `du -sb ./test`;も使おうとしましたが、うまくいきません。
ご教授よろしくお願いします。

675 :nobodyさん:2005/04/10(日) 23:30:42 ID:???
確認していませんが
ereg_replace("^[^\.]+(\..+)$",\\1 ,$hoge)

質問です
ファイルに書き込みをしていますが
fputs($fp, 'うんうん'."\n")
を2回繰り返しても改行されず「うんうんうんうん」になってしまいます。どこがおかしいのですか?

676 :nobodyさん:2005/04/10(日) 23:51:06 ID:???
>>675
ドットの否定で逝けましたヒントありがとん
ereg_replace("^[^\.]+","*****" ,$str);

1. \n --> <BR>
2. \n --> \r\n
とかかな

677 :nobodyさん: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は事象の再現性がヘンな時が多々ありますが、「そういうもの」なんでしょうか?


678 :nobodyさん:2005/04/11(月) 21:57:46 ID:???
数値が入った二つの変数を、足すのではなく繋げる方法はありませんか?
例えば
$int1 = 5; バイナリデータで101
$int2 = 10; バイナリデータで1010
この$int1と$int2をくっつけて、1011010というデータを持った変数を作りたいのです。

679 :nobodyさん:2005/04/11(月) 22:21:08 ID:d8tTZrxp
一番後ろの字が「1」でなければ「←合格」を付け足すような流れにするつもりで
以下の文を書いたのですがうまくいきません。

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

鈴木1
佐藤
田中
山本1

↓スクリプト実行

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

このような結果を出すためにはどのように書き換えたらよいでしょうか?

680 :nobodyさん:2005/04/11(月) 22:45:48 ID:???
>>678
そういう値が欲しいのなら素直にシフトさせてandを取る。
二進数表現の文字列が欲しいのならsprintf("%b%b",,)

>>679
ハット記号はその場合否定じゃなくって行頭になる
多分こんな感じかな
preg_replace('/([^1])$/', '¥1<-合格', $text)

681 :nobodyさん: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/


これに対応してるのかな?

682 :668:2005/04/12(火) 00:12:58 ID:???
>>672
返信ありがとうございます。
Xreaのサポート掲示板に問い合わせたところ、
GIDチェックモードは無理でしたが、PerlのCGIで
何とか解決しました。

683 :nobodyさん: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のエンコーディング指定によってエラーが起こらないもの
そもそもエラーが起こらないものの違い

684 :nobodyさん: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', '名前', ' ');
こんな感じでテキストフィールドの前にラベル付けたいんだけど、
できなかった毛?

685 :nobodyさん:2005/04/12(火) 06:51:49 ID:???
>>684
$renderer = & $form->defaultRenderer();
$renderer->setGroupElementTemplate('{label} {element}', 'name');
てな感じで可能かと。
group.phpのtoHTML()の中で、上と同様の処理があって そこで{element}だけにしているので
elementのラベルが消えてるんじゃないかなぁ。あんまり自信ないけど。

686 :nobodyさん: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>
内容を一度確認して送信するようにするには、どうすればよろしいですか?


687 :nobodyさん:2005/04/12(火) 10:24:19 ID:???
>>686
http://pc8.2ch.net/test/read.cgi/php/1110697712/511-512

688 :nobodyさん:2005/04/12(火) 11:42:38 ID:???
Ruby 界隈で Ruby on Rails が話題になっているけど、
PHP でも欲しくね?もうある?

689 :nobodyさん:2005/04/12(火) 11:51:03 ID:???
必要と感じないので自分で作ろうとは思わない。
使いたくなったらRubyを使えばいいだけだし。

690 :nobodyさん:2005/04/12(火) 17:41:03 ID:???
携帯の各機種ごとに分かれて位置情報を習得したいのですが
どうすればよいでしょうか?
思いつきません・・・

691 :nobodyさん:2005/04/12(火) 18:13:56 ID:???
>>690
習得するなら、一生懸命勉強せよ。

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



692 :nobodyさん:2005/04/12(火) 20:28:41 ID:???
>>685さんどうも。
もれHTML_QuickForm_Renderer_Object使ってるから、
そのソメッド使えんみたいだわ。
QuickFormやめて、Flexyおんりーにするぽ。

693 :nobodyさん:2005/04/12(火) 20:44:35 ID:???
すいません、
perlの正規表現ではカッコで括ったところがマッチすると、
$1,$2という変数に格納してくれるという便利な機能がありますけど、
phpで似たようなことは出来ますでしょうか。

具体的には

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

という形のデータを

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

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

どなたか簡潔な方法を知っていらしたらよろしくお願いします。


694 :nobodyさん:2005/04/12(火) 20:52:21 ID:???
preg_match

695 :nobodyさん:2005/04/12(火) 21:22:42 ID:???
\\1 〜 \\9

696 :nobodyさん:2005/04/12(火) 21:23:32 ID:???
あ、eregの話ね。

697 :nobodyさん:2005/04/12(火) 23:22:24 ID:???
>>695
$hoge=ereg_replace("([0-9]{2})時([0-9]{2})分([0-9]{2})秒", "[(\\1):(\\2):(\\3)]", $hoge);

みたいにしたんですが無理でした。
なんでだろ…。

698 :697:2005/04/12(火) 23:24:47 ID:???
あ、できました、ありがとうございます。

699 :nobodyさん:2005/04/12(火) 23:46:47 ID:???
pg_insertで、複数行同時追加ってできますか?

700 :697:2005/04/12(火) 23:47:03 ID:???
ああ、この\\1とかってperlの$1とかみたいに変数じゃないから次の行まで値を保持したりできないんですね…。

701 :nobodyさん:2005/04/13(水) 00:31:58 ID:???
つ print_r($hoge);

702 :nobodyさん:2005/04/13(水) 01:11:49 ID:???
おいおまいら!
漏れはセッション使用するときに
session_cache_limiter('none');
こうやって設定しているんだが、これはセキュリティーホールになりますか。

703 :nobodyさん:2005/04/13(水) 01:42:35 ID:???
例えば掲示板のプログラムで記事投稿フォームを作る時、
フォームから投稿内容を受け取り記事追加処理をするphpファイルを新たに作るか、
それとも外部ファイルに記事追加処理関数を書いてその関数を呼び出す形を取るか、
どちらがいいと思いますか?あるいは他にもっといい方法がありますか?

704 :nobodyさん:2005/04/13(水) 02:02:01 ID:???
自分が書きやすい方で。

705 :nobodyさん:2005/04/13(水) 02:11:31 ID:???
関数には引数に応じて処理を分ける物があるけど、ああいうのって中で普通にswitchとか使ってるの?
もしそうだと、どの処理をする時にもswitch処理が必要になって
それなら最初から関数を分けてしまった方が処理が速そうな気がするんだけど。

706 :nobodyさん:2005/04/13(水) 02:23:22 ID:???
>>704
レスありがとう。

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

単純に書きやすい方で選ぶというだけでは無い選択肢だと思うんだが。

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

>>706
おまえもその程度の負荷は気にするな

708 :nobodyさん:2005/04/13(水) 07:42:50 ID:???
>>703

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

ユーザーとの通信の手間って何のこと?

709 :nobodyさん:2005/04/13(水) 07:54:01 ID:???
>>706
いいぞ ベイべー!
負荷をかけるやつは普通のプログラムだ!!
負荷をかけないやつは何もしないプログラムだ!!
ホント 戦場は地獄だぜ! フゥハハハーハァー

710 :nobodyさん:2005/04/13(水) 09:06:20 ID:???
>>705
処理の多くが他のユーザー定義関数と「かぶる」場合、「かぶらない」部分だけ
switch〜caseなんかで分岐させれば、コードを短くできる。また「かぶる」部分
に何らかの修正が必要となった場合、関数1つなら1つ修正すればいいだけだが、
関数を分けていれば全部を修正しないといけない。

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

>>706
そこまで気にするなら、投稿処理の時だけ該当ファイルをrequireすればいい。
CPUやメモリの負荷率見れるなら見てみ。
全く気にする必要のないレベルに間違いない。

711 :nobodyさん:2005/04/13(水) 13:42:08 ID:y+S//+Zc
初心者でスマソ。
phpでブラウザのjavascriptがonになっているかどうかは、確認できるの?

712 :nobodyさん:2005/04/13(水) 14:01:22 ID:???
>>711
JavaScript(の適当な命令)がphpを呼び出せればJavaScriptを使える
(少なくとも呼び出しに使ったJavaScriptの命令が使える)、つー方針でなら可能かと。
オイラはそんな面倒なことをしたくないので、ブラウザ側でJavaScript利用可・不可のチェックをさせるけど。

713 :nobodyさん: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 の個数とその中身によって処理を分岐させる様な事をしています。

これらをもっとスマートに書こうとしたら、一体どの様にすれば宣しいのでしょうか?


714 :nobodyさん: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';
}
}
}

715 :nobodyさん:2005/04/14(木) 00:11:49 ID:???
すいません、あるutf-8のcsvファイルを開いて同形式のデータの置換作業をしてるんですが、
頭から置換の「^」を使って行頭から置換していると、
なぜかファイルの先頭の最初の一行だけマッチしません。

何かファイルの先端を示す不可視文字のようなものがくっついてるんでしょうか。
出来ましたら対処方法など教えて頂けたらうれしいです。
よろしくお願いします。

716 :nobodyさん: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バイト無視すると悲劇が起こる予感。


717 :nobodyさん:2005/04/14(木) 00:40:13 ID:???
>>716
ああ、ややこしそうですね。
とりあえずデータの形は全部一緒なので、
あまり意味のない保険かけずに
「^」の先頭マッチは外しておきます。

ありがとうございます

718 :nobodyさん: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
がなくなります。このときに、コンテンツはプロキシ、クライアントに
キャッシュされるのでしょうか。


719 :713:2005/04/14(木) 01:31:56 ID:???
>>714
自分としては、その辺の処理を正規表現で実現しているのかと思い込んでいたの
ですが、実際にはそんなに難しくない文字列操作関数だけでも十分なのですね。。
具体的な例を示して頂けた事も有って、その仕組みが良く理解出来ました。後は、
自分で組んでいるコードに合う形に直した上で拝借させて頂きたいと思います。

素早い返答を頂きながらも、こんな時間になるまでレス出来ず、申し訳有りません
でした。そして、ありがとうございました。

720 :nobodyさん:2005/04/14(木) 07:53:17 ID:???
>>718
see RFC 2616.
post-check pre-checkはIE専用の拡張でMSDNに説明があったかと。

721 :711:2005/04/14(木) 11:23:50 ID:???
>>712
ありがとうございます

722 :nobodyさん: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' - 指定されたモジュールが見つかりません。


どうかご助力お願いします。

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

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

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

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

Windowsで悩む奴の気がしれん・・・。

724 :nobodyさん:2005/04/14(木) 13:40:26 ID:???
>>722
libmysql.dllをWindowsのシステムフォルダにコピーせよ

725 :722: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

726 :722:2005/04/14(木) 14:04:34 ID:???
>>722

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

727 :nobodyさん:2005/04/14(木) 15:10:19 ID:???
いい加減人を馬鹿にするのはやめないか
残業でストレス溜まってるのは分かるけどさ

728 :nobodyさん:2005/04/14(木) 15:57:15 ID:???
この場合、馬鹿なのはWindowsだろ

729 :nobodyさん:2005/04/14(木) 17:47:12 ID:HOg80ZtT
preg_replaceで文字列内の#を検索して置換することができません。
ソースは
$txt = "あいうえお#かきくけこ#";
preg_replace("#", " ", $txt, 1);
です。ereg_replaceだと見つけてくれるのですが、
回数を指定したいので、pregを使いたいのです。
よろしくお願いします。

730 :nobodyさん:2005/04/14(木) 18:14:25 ID:???
>>729
preg_replace("/#/", " ", $txt, 1);

731 :nobodyさん:2005/04/14(木) 18:17:29 ID:???
>>729
preg_replace("{#}", " ", $txt, 1);

732 :nobodyさん:2005/04/14(木) 18:41:06 ID:???
$bd['abc'] = 'test';

$tpl = preg_replace("/{html:([a-z\_])}/",$bd[\\1],$tpl);
という感じで\\1をキーとして利用する方法はないでしょうか。
$key = array_keys($bd)でキーを拾得してwhileするしかないでしょうか?



733 :nobodyさん:2005/04/14(木) 21:37:04 ID:hazlvdsC
>>732
質問するんならソースをもうちょっと分かりやすくして欲しい。

で、本題だが。

ちとズレるかもしれんが、strtrを使ってどうにかならんか?

734 :733:2005/04/14(木) 21:42:49 ID:???
回答者なのにあげてもた。すまそ。

謝罪ついでに、もうちょい具体的に書いとく。

$tbl = strtr($tbl, $bd);
preg_replace("/html:[a-z\_]/","",$tbl);

この2行で希望する動作すると思うんだがどうだろう。

735 :732:2005/04/14(木) 22:18:30 ID:???
>>733
お返事ありがとうございます

以下の行程を一行で出来ないかと想いまして^^;

$template テンプレートファイル {key}が仕込んであります
$this->bd {}と差し替えるキーと値

while($tmp = each($this->bd)){
$pt = '{'.$tmp[0].'}';
$template = str_replace($pt,$tmp[1],$template);
}

736 :nobodyさん:2005/04/14(木) 22:59:25 ID:4Pev5d6u
もうPHP5実働させてる人いますか?
以前(5.0.2の時)ちょっと触ってみて、
しばらく動かしていたら挙動があやしくなったので4に戻したのですが。
「一日一回くらい再起動させたら大丈夫」くらいの感じでしたが。
そろそろですかね。

737 :733:2005/04/14(木) 23:09:50 ID:???
>>735
$this->bdってのがよく分からんが、、、

要は、
$bd['hoge'] = 'hage';
$bd['am'] = 'was';
という配列を元に
$template = 'i {am} {hoge}.'を
$template = 'i was hage.'にしたいんだろ?


それなら上にも書いてるが、$bdを加工してからstrtr使えば一発じゃないか?
foreach($bd as $key=>$value){
 $newKey = '{'.$key.'}';
 $bd_use[$newKey] = $value;
}
$template = strtr($template, $bd_use);

オレなら最初から$bdのキーを{hoge}にしとくけどな。そうすりゃ1行で済む。

738 :nobodyさん:2005/04/14(木) 23:42:06 ID:???
>>732
preg_* の e オプションを使えば一行で書けるのでは?
$tpl = preg_replace("/{html:([a-z\_]+)}/e",'$bd["\\1"]',$tpl);

739 :732:2005/04/15(金) 09:22:08 ID:???
現在弄り回しているので少し変更が入りましたが今は以下のようになっています。
テンプレファイルから{}で囲まれている全てのキーを拾得してから処理するように
しました。これはマッチしなかった{}がそのまま表示されるのを回避させる為です。
複数のページ構成を1つのテンプレで処理しようと考えております。
ただ、これだと{}で囲まれる全てが・・アウトですね--;

$template = $this->open_fie($path,'r');
preg_match_all('/{[1-z\_:]}/',$template,$keys);

while($pt = array_shift($keys[0])){
isset($this->bd[$pt]) || $this->bd[$pt] = '';
$template = str_replace($pt,$this->bd[$pt],$template);
}

echo $template;

>>737
$bdのキーを{hoge}にしておいてstrtr一行にしてみたけど上記より処理速度が遅いみたいです

>>738
上手く行かなかったです-;

740 :732:2005/04/15(金) 09:25:12 ID:???
>>739
自己レス
preg_match_all('/{[1-z\_:]}/',$template,$keys);
  ↓
preg_match_all('/{[a-zA-Z\_\:]+}/',$template,$keys);


741 :733:2005/04/15(金) 10:58:48 ID:???
>>732 >>739
対象の$templateのサイズ次第でスクリプトは変えなきゃいけないだろな。

時間や負担がかかるようなものならば、
毎回$templateを読み込む処理はまずい。
つまり、cron等で自動実行することになるが、それに速度は必要なのか、と思う。

余談だが、
$this->は実際にクラス処理だったのね。。。
なんか配列にキーを入れてるってのを示してる初心者かと思たよ、すまそ。

742 :732:2005/04/15(金) 12:11:58 ID:???
>>741
いえいえ、こちらこそ小出しで申し訳ありません。

$templateのサイズが大きいので負荷が高くなりました-;。
$templateはブログのような感じで各ユーザーがテンプレではなく本当の意味で
自由にカスタマイズ出来る仕様にしたいと考えて試みたのですが負荷を考えると
ページ作成後に.htmlで吐き出して利用する事でしか方法はなさそうです。
ただ動的ページの事もありますし、sessionも利用しているので悩み所です。

ありがとうございました。

743 :nobodyさん:2005/04/15(金) 12:32:06 ID:???
<!--HTML-->
if($Slog[2]){
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
print<<"<!--HTML-->";
<tr id=log-10>
<td><font id=kei>$Slog[2]</font></td>
</tr>
<!--HTML-->
CGIで書いたこれをPHPに書き直すとどうなるんでしょうか?
<?php
if($Slog[2]){
?>
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
<tr id=log-10>
<td><font id=kei><?=$Slog[2]?></font></td>
</tr>
としてみたんですが、"$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;"が
ページに表示されてしまい上手くいきません。

744 :nobodyさん:2005/04/15(金) 12:43:28 ID:???
>>743
phpの処理は<?php 〜 ?>の間でやるべし。
置換処理が外に出ちゃってるし、変数の表示も外。

PHPの記述概念を根本から勉強するべし。

745 :nobodyさん:2005/04/15(金) 12:48:13 ID:???
>>743
関係しそうな部分をPerl - PHP - 内容 の表で書くと、

=~    str_replace 文字列の置換
print<< print<<<   ヒアドキュメント

ってな感じになるが、単純な命令の置き換えじゃ無理だから理解しながら変更すれ。

746 :743:2005/04/15(金) 12:59:34 ID:???
<?php
if($Slog[2]){
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
?>
<tr id=log-10>
<td><font id=kei><?=$Slog[2]?></font></td>
</tr>
ともして見たんですが、これだと画面が真っ白で何も表示されなくなります。
どう記述すれば上手くいくんでしょうか?

747 :nobodyさん:2005/04/15(金) 13:00:18 ID:???
>>743
お前「教えてgoo」でも質問しとったな
質問者がマルチする掲示板は回答者側も見てることが多いからマルチしても怒られるだけだよ。

748 :nobodyさん:2005/04/15(金) 13:04:42 ID:???
釣りに決まっとるやんけ!

749 :743:2005/04/15(金) 13:23:34 ID:???
すいません、どうしても早急に必要だったので。

750 :nobodyさん:2005/04/15(金) 13:34:58 ID:???
>>746

<?php
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);

print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
?>

未確認なので動作保障は無し。

751 :750:2005/04/15(金) 13:36:00 ID:???
訂正

<?php
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);

print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
}
?>


752 :746:2005/04/15(金) 15:30:26 ID:???
>>751
ありがとうございます。
今試して見ましたが、画面が真っ白になってしまいました。

753 :nobodyさん:2005/04/15(金) 16:07:31 ID:???
>>752
しょうがないな
どうせ$Slog[2]に何も入ってないんだろ。

<?php
$Slog[2] = 'test';
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);

print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
}
?>

754 :746:2005/04/15(金) 16:34:23 ID:???
>>753
ありがとうございます。
$Slog[2]にはコメントが入っています。

755 :nobodyさん:2005/04/15(金) 16:57:42 ID:???
PHPで位置情報を習得する関数ってあったっけ?


756 :nobodyさん:2005/04/15(金) 17:08:58 ID:???
>>755
文字列の位置ならstrpos( )

757 :755:2005/04/15(金) 17:14:31 ID:???
すまん、詳しく書く

モバイルで現在の北緯と東経を求める関数教えてくれ

758 :nobodyさん:2005/04/15(金) 17:16:16 ID:???
>>757
>>690-691

759 :755:2005/04/15(金) 17:32:49 ID:???
何から勉強していいかわかんね(´A`)

760 :nobodyさん:2005/04/15(金) 17:33:21 ID:???
>>757
fsockopen( )で位置情報を送ってくれるサーバに接続。もちろんただでは接続させてもらえない。
ゼンリンから電子地図と地図データベース買えば位置を地図で表示できるかもしれない。

761 :nobodyさん:2005/04/15(金) 18:49:40 ID:???
>>757
すなおにGPSでも買えよ。
PHPの関数は魔法の呪文じゃないぞ

762 :nobodyさん:2005/04/15(金) 21:25:30 ID:???
>>757
findwhereyouare()

763 :nobodyさん:2005/04/15(金) 22:12:19 ID:???
>>755

もまえ某webゲームの管理人にメールしたろ。

764 :755:2005/04/15(金) 22:37:46 ID:???
>>763
ご本人様ですか?(・∀・)

765 :nobodyさん:2005/04/16(土) 00:06:16 ID:???
(゚Д゚;)≡(;゚Д゚)なんだなんだこの展開は!
こいつは見逃せないぜ…(゚Д゚)ゴクリ

766 :nobodyさん:2005/04/16(土) 00:33:02 ID:???
もまえらやたらと親切でつね
>>4なのに

767 :763:2005/04/16(土) 18:54:38 ID:???
>>755

本人ですがなにか?
phpには位置情報を処理する関数ないよ。
自力実装汁。


768 :755:2005/04/16(土) 21:54:57 ID:???
>>767
まじすかΣ(゚∀゚;)
あれはPHP制御じゃなかったのか・・・orz

769 :nobodyさん:2005/04/16(土) 22:53:03 ID:???
なにこの空気

770 :nobodyさん:2005/04/16(土) 22:59:10 ID:???
test.png という PNG ファイルがあり、ファイルサイズは 107KB です。
で、ImageCreateFromPNG("test.png") を実行すると、以下のエラーが発生します。
Allowed memory size of 8388608 bytes exhausted (tried to allocate 256 bytes)

php.ini の memory_limit は初期値の 8M です。
これを 16M に変更するとエラーが発生しなくなるので、メモリが足りないのは
間違いないんでしょうけど…。
107KB 程度の PNG ファイルでなぜに 16MB も必要?

環境は、Solaris10 + PHP5.0.4(ビルトインGD)


771 :nobodyさん:2005/04/16(土) 23:00:54 ID:???
PNGだから

772 :nobodyさん:2005/04/16(土) 23:23:04 ID:???
>>770
この板の看板を300%拡大してpng8に変換すると大体100kBになった。
これをさらにbmp8に変換すると、、、427MBになった。。。
画素をメモリ上に展開してゴニャゴニャすると考えると8MBくらい可愛いものかと。

773 :nobodyさん:2005/04/16(土) 23:57:24 ID:???
>>771 >>772 レスありがとさんです。
元のファイルを読み込んで PHP が何かしらの形式に変換して
保持するから、元のファイルサイズ = 必要なメモリサイズではない、
という理解でいいんですね。
memory_limit を変更することにしますです。
んで、調べたら memory_limit は ini_set で変更できるんですね。
知らんかった。
共用サーバーで、無茶苦茶な値を設定されると怖いような。


774 :nobodyさん:2005/04/17(日) 00:35:54 ID:???
>>773
何でPHP_INI_ALLなのか俺も理解できない。
自分のとこはPHP_INI_SYSTEMに変更してるけど。

775 :nobodyさん:2005/04/17(日) 03:42:37 ID:???
以下の様にして繰り返し処理の中で乱数を使っているのですが、
9割方同じ値が出てきて乱数として使えません。
何が悪いのでしょうか?
make_seed()はPHPの乱数についてぐぐって出てきたページに書いてあったものを流用しました。

function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
while($i < 100){
mt_srand($i*make_seed()+3);
$A = mt_rand(0,1800000).mt_rand(0,6000000);
mt_srand($i*make_seed()+4);
$B = mt_rand(0,1800000).mt_rand(0,6000000);
$i++;
}

776 :nobodyさん:2005/04/17(日) 05:16:51 ID:???
>>775
mt_srand() の引数が大きすぎる。「$i*」を消しなされ
mt_srand(make_seed()); で良い。

777 :nobodyさん:2005/04/17(日) 09:17:07 ID:???
テスト用だからかも知れんけど、ループにmt_srand()を含めるのはどうかと

778 :nobodyさん:2005/04/17(日) 09:53:06 ID:???
>>775
mt_srand((double)microtime()*123456);
$A = mt_rand(0,1800000).mt_rand(0,6000000);
$B = mt_rand(0,1800000).mt_rand(0,6000000);
とでもしとけば

779 :nobodyさん:2005/04/17(日) 14:30:56 ID:???
srandはランダムの"初期化"なんだから最初の一度だけでいい。

780 :nobodyさん:2005/04/17(日) 20:51:04 ID:???
こんばんわ
日記中のurlに自動リンクを貼ろうと思ったんですが正規表現が苦手なんで、
あれこれ検索して見つけたのがこれなんですが

$url = ereg_replace("([^[:punct:]]+)(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"\\1<a href=\"\\2\\3\" target=\"_blank\">\\2\\3</a>", $text);

これだと例えば
http://hoge.jp/img/hoge[1].jpg

みたいなアドレスだとurl中の[ ]以降が無視されてしまいますよね。
その辺りを改善するとどのようなコードになるんでしょうか。
どなたかよろしくおねがいします。

781 :nobodyさん:2005/04/17(日) 21:33:23 ID:???
>>780
三つ目の括弧の中の文字クラスの指定の中に¥[¥]を追加しなさい。

782 :nobodyさん:2005/04/17(日) 21:56:29 ID:???
>>781
ああ、それ実はやってみたんですよ。
間違ってるかも知れないですけどこんな感じ

$url= ereg_replace("([^[:punct:]]+)(https?|ftp)(://[[:alnum:]\[\]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"\\1<a href=\"\\2\\3\" target=\"_blank\">\\2\\3</a>", $text);

でもこうすると完全に最初から最後までマッチしなくなってしまったんです。
\[\] だと文字クラスとして囲んでると判断されるのかなあと思って
\]\[ とかにもしてみたんですけど駄目で…。

783 :nobodyさん:2005/04/17(日) 21:58:19 ID:???
それはもうやってみたんですよ、か…

784 :nobodyさん:2005/04/17(日) 22:15:30 ID:???
教えて君の典型例は初めて見た。

785 :nobodyさん:2005/04/17(日) 23:21:10 ID:???
>>782
regexの[ゴニャゴニャ] を使う時のお約束として、] というキャラクタを使うには 一番最初に置かなければいけない。
[ の方は置く場所の縛りは無い。
これまたお約束により \[ \] のようにエスケープする必要もない。
苦手とか言ってないで使う道具のことぐらい勉強しなさい

786 :nobodyさん:2005/04/17(日) 23:33:55 ID:???
>>785
できました!
ありがとうございます

787 :nobodyさん:2005/04/18(月) 02:25:22 ID:Wa22FSpF
変数に何か文字列が入っていて、その文字列の中に「あ」という文字が入ってたらif文に入る

・・・というようなワイルドカードを用いた判定をさせたいのですが、出来るんでしょうか?
if(変=='%あ%'){処理} みたいな書き方では動かなかったんですがー。

788 :nobodyさん:2005/04/18(月) 03:05:59 ID:???
詳しいマニュアルがあるんだから
ちょっとは読みなさい
http://www.php.net/manual/ja/ref.strings.php

789 :nobodyさん:2005/04/18(月) 10:51:35 ID:???
クラスに慣れるため、現在使っているユーザ定義関数などを取り込んでみようと試みたのですが、
function yen_format($a) {
for ($n = 0; $n < count($a); $n++) {
$a[$n]['yen'] = number_format($a[$n]['yen']);
}
return $a;
}
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
class cYen {
function yen_format($a) {
for ($n = 0; $n < count($a); $n++) {
$a[$n]['yen'] = number_format($a[$n]['yen']); //←警告の出る行
}
return $a;
}
}
以下のような警告が出てしまいます。
Warning: Cannot use a scalar value as an array in /yen.inc on line **
どの様にすればよいのでしょうか。

790 :nobodyさん:2005/04/18(月) 11:13:13 ID:???
>>789
$arr = array(
array('yen'=>10),
array('yen'=>100),
array('yen'=>1000)
);
var_dump(cYen::yen_format($arr));
こんな感じで試してみましたが、そのwarningを出せませんでした。。。

791 :789:2005/04/18(月) 11:41:50 ID:???
>>790
ナンダッテーΣ(´Д`lll)

もう一度よくチェックしてみたら配列ではな変数値を放り込んでいたことに気が付いたorz
お騒がせしました。

792 :nobodyさん:2005/04/18(月) 13:22:31 ID:???
http://www.ne.senshu-u.ac.jp/~n130127/mt2/archives/000109.php
http://www.ne.senshu-u.ac.jp/~n130127/photo/

のみたいな感じで個々の画像から代表的な色を取得したいんだけど、
これって全てのピクセルを捜査してRGBの平均値を出すって感じなのかな?

793 :nobodyさん:2005/04/18(月) 15:03:24 ID:tUq/WRMt
受信したメールをDBに貯めるwebメーラーを作ってるんですけど、重複受信しないためにはどうしたらいいでしょう?
UIDを参照しようにも
ttp://www.php.net/manual/ja/function.imap-uid.php
注意: この関数は、POP3メールボックスではサポートされません。
ということでたしかに取得できないぽい(msgnoと同じになってしまう)
UIDLみたいなことができればいんだけど…

794 :nobodyさん:2005/04/18(月) 17:47:50 ID:8vSm+nX3
PHP+SendMailにて同時に500アドレスとかにメール配信してるんですが
おおまかな処理的には
アドレスはデータベースからひらって配列に入れる
For文にてbccに100アドレスずつ積んだら送信の繰り返し
(他人のアドレスが知れるとまずいのでBcc)
余ったアドレスと自分(確認)に送信して完了
//mb_send_mail使用

って感じなんですがすごく遅くて
処理を完了しました と表示させる画面が固まってしまいます。

うまくいえないが例えば、処理はバックグラウンドでやらして画面はすぐ完了させたり
PHP/SendMailにて早くなるような処理設定等ありませんでしょうか?



795 :nobodyさん:2005/04/18(月) 17:55:43 ID:???
execとかsystemとか

796 :nobodyさん:2005/04/18(月) 17:56:29 ID:???
>>794
そもそも、その処理をPHPでさせる必要があるの?

797 :nobodyさん:2005/04/18(月) 18:05:45 ID:pALXDwic
>>796
DBからアドレスひらいたいからじゃねーの?

798 :nobodyさん:2005/04/18(月) 18:15:59 ID:???
>>797
DBからアドレス拾うのはPHPじゃなきゃ出来ない処理でもない気がする・・・

それに>>796が言いたいのはWebシステムで処理する内容じゃないって事じゃないのか?
わざわざWeb画面からメール送って確認画面出す必要も無い気がする。
どうせ確認用に自分にもメール送るんだから、
スケジュール組んでサーバーに決まった時間に処理させれば良いだけじゃないか?

799 :750:2005/04/18(月) 19:10:28 ID:???
連鯖とかでシステム関数が呼べなかったりcrontabが使えなかったり…
ま、連鯖で大量メール配信は迷惑だが

800 :nobodyさん:2005/04/18(月) 19:35:04 ID:???
>>794
君、出身宮崎か?

801 :nobodyさん:2005/04/18(月) 19:58:12 ID:???
ひらうのは宮崎だけじゃないと思うぞよ。

802 :nobodyさん:2005/04/18(月) 20:27:37 ID:???
宮崎駿

803 :794:2005/04/18(月) 20:48:59 ID:8vSm+nX3
えーっと、PHPにて簡単なシステム組んでまして
その機能の一貫としてメルマガ配信みたいなもんですかね。送信って押したらメール発射されます。
なんでスケジュールとかは無理だと思います。

PHPではアドレス拾いたいからです。
処理命令下した後Webの方はそのまま終了したいんですが今は処理終わるまで待ってる感じになるんで遅いんですかね・・。
execやsystemとかにてできるんであれば知りたいんですが。。
sendmailコマンドにアドレスつけたりメッセージ入れたりとかできるんでしょうか・・

あ、あと俺は残念ながら宮崎ではないです。
ごめんなさい。

804 :nobodyさん:2005/04/18(月) 21:06:11 ID:???
>>803
PHPではキューテーブルかなにかに追加するだけで、5分おきくらいに
起動されるcronjobがキューを処理するとか。

その手のメーリングリストの処理はいろいろ面倒なので、fmlとかを
バックエンドに使うのが便利。perlが読めればの話だけど。

805 :nobodyさん:2005/04/18(月) 21:09:26 ID:???
プロセス制御関数を使えばPHPから直接バックグラウンドで実行させられるかもしれないけど、
オイラなら(PHPの)シェルスクリプトを作って system("shell_script $arg > /dev/null &");
ってな感じでバックグラウンドで実行させるかな。

806 :nobodyさん:2005/04/19(火) 01:19:16 ID:Y9FcOWFA
xmlパーサについて質問なんですが、
$data="./hoge.xml"; //xmlのURI
while ($data = fgets($fp)) {
//パース処理
}
という感じで、通常なら問題なくパースできているんですが、
元のxmlファイルの要素に改行が入っていると、最後の行しかパースできず、悩んでいます。
<detail>あああああ
あああああああ
ああ
</detail>
(↑元データがこんな感じだと、最終行の「ああ」しかパースされない。)
fgetsだと1行ずつ読みこんでいくために、そうなってしまうのかとは思います。
が、readfile()やfile()で一旦メモリに全部読み込んで、改行を除去してからパース、
なんて事をやるのも、ナンセンスかな、と思ってます。

こんなとき、どうしたらいいものでしょうか??参考になるものなどありましたらよろしくお願いします。
PHP4です。

807 :806:2005/04/19(火) 01:23:31 ID:???
$xml="./hoge.xml"; //xmlのURI
$fp = @fopen($xml, "r");

すいません、初期設定は↑です。

808 :nobodyさん:2005/04/19(火) 02:26:10 ID:???
>>806
要素終了ハンドラが呼ばれるまで、
CDATAハンドラの内容をスタック(積み重ね)すれば良い。

809 :nobodyさん:2005/04/19(火) 04:24:48 ID:???
皆さんレスありがとうございます。
>>776
最初はmt_srand(make_seed());でやってみたんですがそれでダメだったので適当に種を変えて見たのです。
>>777
最初はループの外に出してやってたんですがほとんど同じ数値しか出さないので
ループの中で毎回やってやろうと思った次第です。
>>778
そのコードでやりましたが9割以上同じ数値を出します。
>>779
srandはこまめにやると乱数の乱れ具合が良くなるというわけではないのですね。

ところでまだ正常な乱数が出せて無いんです。
mt_randの範囲がでかすぎるとまずいのでしょうか?

810 :809:2005/04/19(火) 05:17:56 ID:???
ごめんなさい別の部分のコードが原因でした。
正常な乱数が出せました。
お騒がせしました。

811 :806:2005/04/19(火) 05:18:52 ID:???
>>808
(読み込んだ行に"</"が含まれていなかったら){trim($data);→whileをcontinue;→$data.=$data;}
行がxmlの終了タグまで読み込まれた時点でxml_parse();することで、なんとなく回避できるような感じにはなったんですが、
今度は要素内にhtmlタグ(<〜>など)がある場合に、挙動がおかしいことに気づきました。

"<"などが、パースしているときに"<"と認識されて、xmlなんだかhtmlだか、パーサが理解してくれない、
という感じでしょうか…。

要素内のhtmlを除去か、一時的に置換する目的で、
ereg_replace("<","",$data)や、strip_tags($data);htmlspecialchars($data);など試してみましたが、うまく認識してくれません。

そもそも、"</"←これが、htmlの終了タグが現れた時点でtrueになってたりするのかなぁ、という感じです。
もう少し色々やってみますが、何か根本的に間違っていたり、解決法がありましたら、助けてください。

812 :806:2005/04/19(火) 05:22:43 ID:???
あ。
>>808さんのレスをよーく読み返してみると、「要素終了ハンドラが呼ばれるまで」という事ですね…
自分のやり方だと、「終了タグが現れるまで」ってことになっちゃってて、条件指定がおかしいですね。
んー、ちょっとこんがらがってますが、やってみます!

813 :806:2005/04/19(火) 06:18:57 ID:???
連投すいません。
fgetで読み込んだデータには手を付けず、そのままパース処理へ投げ、
その中で変換→バッファする事で、正常にパースできるようになりました。
>>808さん
ヒントありがとうございました!おかげさまで深く理解することができました。

814 :nobodyさん:2005/04/19(火) 06:25:33 ID:SEfdksxA ?#
自宅サーバーでの質問です
Apache2.0.49
PHP4.3.11
を使用しているのですが
Apacheを起動するとき何故か
Unknown():Unable to lpad dynamic library 'C:\php\extensions\php_curl.dll' - 指定されたモジュールが見つかりません。
というエラーが出ます
extensionsフォルダを調べてみてもちゃんとphp_curl.dllはありますし
extensionsフォルダまでのフォルダ構成もあってます
4.3.8から4.3.11にバージョンアップした時は特にエラーは出なかったのですが…
どうやれば直るんでしょうか?

815 :814:2005/04/19(火) 06:44:37 ID:SEfdksxA ?#
ちなみに自宅サーバーで使ってるphpは今のところ特に問題なく動いてます

それから4.3.11へのバージョンUPはphpフォルダを全て上書き
php4ts.dllをsystem32へコピー

という風にやりました
php.iniは以前のものをそのまま使っています

816 :814:2005/04/19(火) 16:47:05 ID:SEfdksxA ?#
すいません…
このスレではちょっと返信が遅いみたいなので>>1
【PHP】くだらねぇ質問はここに書き込みやがれ
このスレで質問してきます

817 :794:2005/04/19(火) 19:53:29 ID:oaiprVhl
>>805

ありがとうございました。

シェルスクリプト知らなかったので勉強したらそれでいけそうです。

818 :nobodyさん:2005/04/21(木) 09:34:27 ID:???
PHP4じゃクラス変数は使えない?


819 :nobodyさん:2005/04/21(木) 17:29:17 ID:EYYR0zng
教えてください
画像ファイルの全てのピクセルのRGBを取得するために
ループでそれぞれのピクセルに対して

$c1 = ImageColorAt($im, $x, $y);
$c2 = ImageColorsForIndex($im, $c1);

としてるのですが、激しく重いです。
他にRGBのそれぞれの値を取得する方法はないでしょうか?


820 :nobodyさん:2005/04/21(木) 20:59:20 ID:???
皆さん、こんばんわです。

Apache/1.3.28 (Win32) PHP/4.3.10 です。

session_regenerate_id();でセッションIDをページ毎に書き換えたいと思っています。
c:\tmp にセッションファイルが残るのが嫌なので下記の様に以前のセッションファイルを
消去しようとしたのですが、効果無しです。
(c:\tmp\sess_******************************** が残ります。)


session_start();

$session_id = session_id();  //旧セッションファイルbバックアップ
session_regenerate_id();   //セッション番号を変更する
$session_file = "c:\\tmp\\sess_".$session_id;  //ファイル名を組み立てる
unlink ($session_file);  //旧ファイルを消去する


何が悪いのでしょうか?



821 :nobodyさん@820:2005/04/21(木) 21:06:52 ID:???
書き忘れました

session.save_handler = files にしています。



822 :nobodyさん:2005/04/21(木) 21:09:57 ID:???
>>820
http://www.php.net/manual/ja/ref.session.php

「User Contributed Notes」 の一番上は試してみては?

823 :nobodyさん@820:2005/04/21(木) 21:31:41 ID:???
>>822

http://www.php.net/manual/ja/function.session-is-registered.php

の方ですか?


824 :nobodyさん:2005/04/21(木) 21:32:50 ID:???
失礼しました。こっちですか?

http://www.php.net/manual/ja/function.session-regenerate-id.php


825 :822:2005/04/21(木) 23:14:21 ID:???
>>824

リンク間違っていた。ごめん。
そっちのほうです。


826 :nobodyさん:2005/04/22(金) 01:08:55 ID:x5pK6rr1
デジタルカメラで撮影した画像からexif情報を取得しようとしています。
--enable-exifをつけてPHPをコンパイルし直して
$exif = exif_read_data($img);
foreach($exif as $key=>$section){
  foreach($section as $name=>$val){
    echo "$key.$name: $val<br />\n";
  }
}
実行した結果↓のようになったのですが、撮影日時や撮影機種などが取得できません。
XP上だとファイルの機種名、撮影日時などが取得できます。
機種名、撮影日時、ファイルサイズなど取得したいのですが、exif_read_dataではできませんでしょうか?
COMPUTED.html: width="640" height="480"
COMPUTED.Height: 480
COMPUTED.Width: 640
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.CCDWidth: 10mm
COMPUTED.ExposureTime: 0.016 s (1/64)
COMPUTED.ApertureFNumber: f/2.8
COMPUTED.Copyright:
COMPUTED.Thumbnail.FileType: 2
COMPUTED.Thumbnail.MimeType: image/jpeg
THUMBNAIL.Compression: 6
THUMBNAIL.Orientation: 1
THUMBNAIL.XResolution: 72/1
THUMBNAIL.YResolution: 72/1
THUMBNAIL.ResolutionUnit: 2
THUMBNAIL.JPEGInterchangeFormat: 1078
THUMBNAIL.JPEGInterchangeFormatLength: 8360
THUMBNAIL.YCbCrPositioning: 2


827 :826:2005/04/22(金) 02:47:42 ID:???
自己解決しました。
$exif = exif_read_data($img,0,true)
としたところ取得できました。

828 :nobodyさん:2005/04/22(金) 14:09:38 ID:gzTYsMYc
pearのXML_RPCを使ってsslでやり取りするのって

$xmlrpc_host = "https://www.hoge.jp";
$xmlrpc_path = "/server.php";
$c = new XML_RPC_client( $xmlrpc_path, $xmlrpc_host, 443 );

で動いてはいるんだが、使い方正しいんかな?

829 :nobodyさん:2005/04/22(金) 15:01:05 ID:???
半年前の PEAR 版は SSL 非対応だったな。今は知らんけど。
なので ttp://xmlrpc.usefulinc.com/ を使ったよ。

830 :828:2005/04/22(金) 15:53:04 ID:???
ソース確認してみたらssl対応してるっぽい
1.2.2で確認。
fsockopenのport引数変えてるだけみたいだけど。

xmlrpc1.0.9.22の方だとcurl使ってるみたいなので、
今回はpearで行きます、ありがと。

831 :nobodyさん:2005/04/22(金) 21:41:32 ID:hJmunfCO
駄目元で聞くわ。

今まで2年間動いてた、あるPHPスクリプトが、突然「$_POST」だけ全く受け取れなくなった。
$_GETは受け取れる。ちなみに他のスクリプトは$_POSTも$_GETも受け取れる。
特に更新も環境の変更もしてない(つもり)。

誰か原因わかる??

832 :nobodyさん:2005/04/22(金) 22:53:17 ID:???
.htaccessいじってないかい?

833 :nobodyさん:2005/04/22(金) 23:03:14 ID:???
>>831
ダメ元でエスパーしたる
お前、スクリプトを弄って$_POST = とか ==と間違えて書き換えてないか?
unset()は流石にしてないだろうしなぁ
他のスクリプトが健在なら他に想いつかん

834 :831:2005/04/23(土) 07:01:41 ID:jIuqqiHI
>>832
windowsなので。

>>833
そんなお粗末はせんよ。

俺もこんなん初めてで、非常に困っちょる。
OSぶっ壊れたかな・・・(泣)

835 :nobodyさん:2005/04/23(土) 08:21:10 ID:???
バックアップがあればdiffして本当にファイルが変わっていないか
確認してみては?

あとはerror_reportingをE_ALLにするとか、コマンドラインから
環境変数と標準入力をエミュレートして与えてちゃんと動くかとか
変なエラーログは吐いていないかとか、他のサーバーでは動くのかとか。

こんなもんかね。

836 :nobodyさん:2005/04/23(土) 09:18:28 ID:???
思い込みで填ってるだけだと想うな
しょぼいミスの原因を追及出来ない奴は何を書いても向かないぞ

837 :nobodyさん:2005/04/23(土) 12:04:56 ID:???
HTMLを間違えてるんだろ

838 :nobodyさん:2005/04/23(土) 12:22:27 ID:eEFfrUoO
MVCで、
コントロールクラスのコンストラクタ中で
変数のインポートから表示まで行ってしまうか、
コンストラクタの中ではほとんど何もせず、
後からインポートと表示のメソッドを呼ぶか、
どっちが適当でしょうか?

839 :nobodyさん:2005/04/23(土) 12:33:38 ID:???
>>838
コンストラクタに変数インポートや表示を組み込むと、
特定のページだけにしか使えないような気がするけど・・?
例えばView部分を変更しようとしても、Viewのwrapperみたいのが必ず必要になって面倒な希ガス

840 :nobodyさん:2005/04/23(土) 12:35:45 ID:???
寧ろ、コントロール(MVCのC)の部分で、変数のインポートとか表示ってしないだろ・・・

コントロールはあくまでもコントロール。
ページ遷移とかするだけだろう・・・

本当に、MVC分かってるの疑問だな・・・

841 :nobodyさん:2005/04/23(土) 12:37:24 ID:???
RSS 1.0 を parse したいんですけど、
rdf:RDF -> Channel -> items -> rdf:Seq ->rdf:li にある、rdf:resource attribute を
取得するのに便利なクラスってありますか?
PEAR の RSS は rdf:Seq を処理して無いっぽいんですが?

842 :nobodyさん:2005/04/23(土) 15:09:46 ID:sp0JwmHn
max_execution_time で対象になるPHP実行時間には、
DBへの問い合わせ時間は含まれないようですが、
max_execution_time で対象になる実行時間
を簡単に求める方法はあるのでしょうか。


843 :nobodyさん:2005/04/23(土) 18:41:37 ID:???
>>839-840
レスありがとうございます。
どうも自分の理解があやしいので
もう一度MVCを勉強してみました。
ビジネスロジックをコントローラーに組み込んでいたようです。
DAO的なもの=モデルと理解していたので、それを操作するビジネスロジックは
Cなのかなと思っていました。

844 :nobodyさん:2005/04/23(土) 19:26:58 ID:oo8/fFQw
適当な文字列 $str="AB" の文字間にスペースを挿入したいんですが
substr()1文字目取ってスペース入れてsubstr()2文字目取って足す
以外にいい方法ないでしょうか・・

845 :nobodyさん:2005/04/23(土) 20:12:37 ID:???
>>844

''でexplodeしてから、' 'でimplode

846 :nobodyさん:2005/04/23(土) 20:21:00 ID:???
>>845
''でexplodeはできんだろ

>>844
$str = implode(' ',preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY));
でどうだ?

847 :nobodyさん:2005/04/23(土) 20:26:39 ID:???
substr_replace($str, ' ', 1, 0);

848 :844:2005/04/23(土) 20:38:26 ID:oo8/fFQw
うーん、皆さんサンキュー
がしかし今でてる分ではできなかったっす・・

849 :846:2005/04/23(土) 20:51:15 ID:???
>>848

<?php
$str = 'abcdefgh';
$str = implode(' ',preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY));
print $str;
?>

で、'abcdefgh' が
a b c d e f g h
となるわけだが。

望んでいる事が違うのか?

850 :844:2005/04/23(土) 22:28:38 ID:oo8/fFQw
>>849

あ、失礼致しました。
さっき文字列に日本語入れてたから駄目だったんですね。
英語でやったらいけました、すみません。

日本語もやろうと思ったら-2にしたりとかしたらいけそうですね。
ありがとうございました。

851 :nobodyさん:2005/04/23(土) 22:39:29 ID:???
日本語の場合は日本語って言ってくれなきゃ。。。
オイちゃんは$str[0].' '.$str[1]とかやっちゃう所だったよ

852 :846:2005/04/23(土) 23:11:46 ID:???
>>850
んだよ、日本語入るんだったら駄目駄目ジャン。
最初から言えよ。

<?php
$str = 'abcあefほhまぬけ';
for ($i=0;$i<mb_strlen($str);$i++) {
$tako[] = mb_substr($str,$i,1);
}
$str = implode(' ',$tako);
print $str;
?>


853 :nobodyさん:2005/04/23(土) 23:46:20 ID:???
>>852
マルチバイト正規表現が使えるならたぶんもっと簡単。

echo mb_ereg_replace('(.)', '\\1 ', $str);

一番最後にゴミのスペースが残るけど不要な場合は rtrim() で削除。

854 :nobodyさん:2005/04/24(日) 13:44:31 ID:???
>>842
無い

855 :nobodyさん:2005/04/24(日) 14:13:38 ID:???
PHPのクラスについて、ご教示頂きたく。

class First {
 var $x = "fist";

 function disp() {
  print "x=" . $this->x . "<BR>";  //*1
 }
}

class Second extends First {
 var $x = "second";

 function disp() {
  print "x=" . $this->x . "<BR>";
  parent::disp();
 }
}

$obj = new Second;
$obj->disp();


*1 の部分で、Second クラスの x の値が表示されますが、ここで First クラスの x の値を
表示したい場合、どうすればいいのでしょう?
メソッドであれば、self::メソッド名 で指定できるみたいですが、プロパティの場合はどうれすれば…。
今回のは、わざとらしい例ですが、継承クラスでプロパティがオーバーライドされて、
親クラス内での処理が、影響を受けるのは怖いんですけど。


856 :nobodyさん:2005/04/24(日) 16:40:04 ID:???
PHP+MySQLでプルダウンメニューの項目をSQLから拾う場合
$SQL = "SELECT * FROM hoge ";
$res = $conn->query($SQL);
if (! DB::isError($res)) {
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
echo "<option>" . $row['hage'] . "\n";
}
}
と書いてるんだけど、同一フォーム内にプルダウンメニューが複数ある場合
その度にこの処理を繰り返しで良い?
$SQL = "SELECT * FROM hoge,hage";
で取れそうな気がするんだけど、その場合2回目以降をどっからループして良いのか
判らぬ・・・

857 :nobodyさん:2005/04/24(日) 17:32:42 ID:???
中身が一緒なら変数にスタックしておくんじゃだめなの?

858 :nobodyさん:2005/04/24(日) 18:02:25 ID:???
見てると、テーブルが違うんじゃない?
だから、2つ以上のテーブルの内容を全部セレクトしても、
どのデータがどっちのプルダウンメニューのデータだか判断つかないんだろ。

こういった場合、普通はテーブルのデータに区分を付けて、
抽出する時にWHEREでAND条件で一気に取得しておいて、
区分ごとに配列か何かに入れておいて、
HTMLの出力時にその配列の内容を出せば良いんじゃないか?

859 :nobodyさん:2005/04/24(日) 18:48:14 ID:BUoUvVp6
PHP本ってOOPの触りまでは書かれていますが
デザインパターンについて書かれているものってほとんどないと思います。
自己流だと、どういう風にクラスを切り分けるのかが
定まらず、便利を追求しようとして逆に不自由になってしまったり(ひとつのクラスに詰め込みすぎ)して
「お手本」が見たい時が多々あるんですよね。
こういうのは定番デザパタ本とかJ2EEの本などを読んで勉強するのでしょうか?

860 :nobodyさん:2005/04/24(日) 18:50:21 ID:???
OOPやるならPHPから勉強し始めてもピンと来ないかも。

861 :nobodyさん:2005/04/24(日) 19:03:15 ID:???
>>859
ttp://www.phppatterns.com/
日本語のページでPHPでのデザインパターンを解説してた所もあった希ガス

862 :名無しさん:2005/04/24(日) 19:58:00 ID:5GHKEND3
PHP入門

http://www.pahoo.org/e-soul/webtech/


863 :nobodyさん:2005/04/24(日) 21:52:47 ID:???
>>855
「First クラスの x の値」は既に"second"なんじゃないの?
$xは1個しか存在していないと思われ

864 :nobodyさん:2005/04/24(日) 22:25:37 ID:???
>>857-858
判った!ありがとう。

865 :nobodyさん:2005/04/24(日) 22:32:34 ID:???
>>855
をを。オイラもちょっとビビッた(3滴ほど)。 @php4
他の言語だと parent::メソッド内では親クラスのプロパティが使える事が多いんで、
そのつもりでつい書いちゃいそうだ。。

866 :nobodyさん:2005/04/25(月) 10:19:18 ID:???
>>863
なるほど、目からウロコ。
プロパティが参照できる、できないという部分で凝り固まってたんですけど、
そもそも、オーバーライドされた時点で、存在していないのかもしれませんね。

>>865
自分自身がそのように書いてしまって、はまる可能性もあるんですが、
 ・親クラスを A 氏
 ・継承クラスを B 氏
が担当して、B 氏が継承クラス内で同名のプロパティを定義した場合、
(本人はオーバーライドしたつもりはない)、親クラス内の処理が影響を
受けてしまうのが怖いです。何のためのクラスなのかと。

親クラス内のプロパティに何らかの命名規則を与えるか、PHP5 を採用して、
アクセス制限をかけるか…

867 :nobodyさん:2005/04/25(月) 13:05:53 ID:S70RkVOT
php 4.3.10
mysql 4.1.11

カレンダーを表示するページA。休日をmysqlから呼び出し、赤くする。

AページをBページから呼び出すと、休日が正しく赤く表記される。
AページをCページから呼び出すと、休日が赤くならず、黒くなる。

正しく赤く表記させたいのですが、何が原因と考えられますか?




868 :nobodyさん:2005/04/25(月) 13:34:08 ID:???
>>867
カレンダー表示のページって、そのページだけで完結してるのか?
前ページから何かデータもってきたりしてるのか?

それと、休日の色が黒いのはなぜ?
なぜというのは、生成されたHTMLのソースを見てみたか?

まずは、生成されたHTMLのソースをお互いに比べて、
なぜ赤くならないかを見つけてみたらどうだ?

869 :nobodyさん:2005/04/25(月) 13:34:13 ID:???
>>867
B,CからAを呼び出す時に、何らかの値を渡してるんじゃないの?

870 :nobodyさん:2005/04/25(月) 14:54:37 ID:S70RkVOT
867です。
皆さんのアドバイスんおおかげで解決しました。
Bページはログインした後のページ(セッション中)。
Cページはログインしていないページ。

あるセッションデータがmysqlから休日データを呼び出すのに必要でした。

ありがとうございました。

871 :nobodyさん:2005/04/25(月) 16:55:33 ID:pLRqysOO
mysqlと接続して使っているのですが
不意にCPU使用率が90%とか越えて重くなるときがあるんですが
何か策はありませんでしょうか?

mysql_free_resultは使ってないんですがやっぱ使った方がよいのでしょうか?

872 :nobodyさん:2005/04/25(月) 17:12:24 ID:9VNbQ96Q
拡張子がhtmlのファイルでPHPスクリプトを実行できないでしょうか?

<html>
<body>

<? print("こんにちは") ?>

</body>
</html>

こんな風に書いたけど、何も表示されませんでした。


873 :nobodyさん:2005/04/25(月) 17:36:43 ID:???
>>872
あるファイルをphpとして解釈するかどうかはWebサーバの仕事の範疇。
webサーバの設定を変更する権限があれば可能です。

874 :nobodyさん:2005/04/25(月) 17:49:57 ID:Yt1bOngS
>>873
さくらのレンタルサーバーなのですが、もしかしたら変更できるかもしれません。
よろしければ、どこをどうへんこうすればよいか、教えてください。

875 :nobodyさん:2005/04/25(月) 18:15:06 ID:???
>>874
ヒント:htaccess
あとはググれ。
これぐらい自分で調べられないなら、とっとと足洗ったほうがいい。

876 :nobodyさん:2005/04/25(月) 20:12:26 ID:???
そもそも板違い

877 :nobodyさん:2005/04/26(火) 00:51:31 ID:2lFfU82S
file_get_contentsでhtmlを取得したいのですが

Warning: file(http://xxx/top.html): failed to open stream:
Connection timed out in /test.php on line 71

とタイムアウトが出ます。
URLをIEに貼り付けると普通に開くことが出来ます。
file_get_contentsで取得できないページってサーバ側で環境変数の
確認など行っているのですか?

878 :nobodyさん:2005/04/26(火) 01:28:53 ID:???
>>877
スクリプトを動かしているサーバ側が正引きできない環境にあるってこともありえーる。

879 :nobodyさん:2005/04/26(火) 03:05:53 ID:2lFfU82S
>>878
おぉ!それっぽい。
どうもです。

DNSには問題ないはずなのに。。。
何が駄目なんだ〜

試しのwindows環境では取得できたのにLinuxで動かすと駄目だ。

880 :nobodyさん:2005/04/26(火) 07:35:30 ID:???
>>879
キーワード
fopen wrappers
allow_url_fopen

881 :nobodyさん:2005/04/26(火) 09:57:49 ID:???
Windows2000 + PHP4.3.11で、
$t = tempnam(".", "abcdefgh");
ってやるとprefixが3文字までしか有効にならないのは仕様?



882 :nobodyさん:2005/04/26(火) 10:57:06 ID:???
>>881
php-4.3.11/main/php_open_temporary_file.c
を見てみると
winではGetTempFileName()を使っている。この関数はprefix先頭3文字しか使わないようだ
win以外ではmktemp()を使っている。こちらにはそういう制限はない

というわけでwinでは仕様

883 :nobodyさん:2005/04/26(火) 14:34:58 ID:W1jHtFGJ
IIS6とApach2を同居させようとしております。理由は特にないけど個人の趣味の範囲で。
しかしPHP5でエラーが出て困っています。是非知恵を貸してください。

IIS上ではPHP正常稼働で、MySQLを認識&動作しますが、Apach側では
〜php_mysql.dll-指定されたモジュールが見つかりません
と言われ、MySQLを認識してくれません(鯖とPHP自体は動作します)
しかし、モジュール全般が認識しないのではないらしく、mbstringの方は認識しています。
設定ファイル(PHP.INI)はそれぞれ用意してみたのですがそれでも同じ結果です。
もちろん、PHP_MYSQL.DLLファイルは存在します(同設定ファイル使うとIISで動作する)
これらの現象を治す為に何か注意すべき点や設定変更など心当たりがありましたら是非教えてください。お願いします。

IIS6,Apach2,Mysql4.1

884 :nobodyさん:2005/04/26(火) 14:35:47 ID:???
↑age忘れてました。すみません

885 :nobodyさん:2005/04/26(火) 14:44:40 ID:???
>>883
limmysql.dllをWindowsのsystem32フォルダにコピーすると文句言われなくなるかも

886 :nobodyさん:2005/04/26(火) 22:33:25 ID:???
こことくだらない質問スレの使い分け方を教えてください

887 :nobodyさん:2005/04/26(火) 22:47:20 ID:???
>>886
お前みたいなのは、まず「くだ質」へ池。

888 :nobodyさん:2005/04/26(火) 22:49:47 ID:???
ini_setについて質問させて下さい。
マニュアルでは
>設定オプションは、スクリプトの実行中、新し い値を保持し、スクリプト終了時に元の値へ戻されます。
と記述されているのですが、スクリプト実行中というのは具体的にどういった範囲なのでしょうか。

セッションなどと同じようにブラウザが終了するまで値が保持されているものなのでしょうか。

889 :nobodyさん:2005/04/26(火) 23:00:48 ID:???
>>888

厳密に言うと違うというか例外もあるだろうけど、
あなたの感覚にあわせると概ね1ページ表示されたら元に戻る感じ。

890 :nobodyさん:2005/04/26(火) 23:00:52 ID:???
んなわけないだろ

891 :890:2005/04/26(火) 23:01:44 ID:???
ごめんリロードしてなかった

892 :nobodyさん:2005/04/26(火) 23:04:58 ID:???
>>891
リロードしてても微妙な差だなw

893 :888:2005/04/26(火) 23:08:57 ID:???
やはり、甘い考えでしたか。
サーバにPEARのパッケージが無い場合とか、
自分のpublic_htmlの中にPEARをインストールした場合、
既存のシステムとかだとPEARを使ってる部分でパスが通ってないから、
ini_setを使えばと思っていたのですが、
こうなると、結局はPEAR使ってる部分のパスを全部書き換えるか、
その前にini_setを追加しないといけないから、手間は一緒という事ですね。

PEARだけでなく、Smartyや各種フレームワークでもそうなのですが、
鯖で用意されていない場合、自分のHP領域にインストールした場合、
皆さんどうしてるんですかね。

894 :nobodyさん:2005/04/26(火) 23:19:26 ID:???
けなすわけぢゃなくて、素朴な疑問。よかったら教えて。
最初のページでini_set、次のページでini_getしてみれば、聞くまでもないと
思うんだが、なぜしないんだろ?


895 :888:2005/04/26(火) 23:29:50 ID:???
>>894
申し訳無い。
今、出張中でインターネットとPCが付いてる部屋なんだけど、
さすがに開発環境は無くて。
PHPが使える無料鯖とかも申し込みしてなくて確認出来ないんです。

896 :nobodyさん:2005/04/26(火) 23:35:19 ID:???
>>895
いやいや。責めてるんではないので謝らなくても…
社内のプログラマ(複数)が試せば判るようなことをすぐ聞いてくるので
最近の若い人の傾向なのかなぁ、と思っただけ。
895 が若いのかどうかは知らないけど。


897 :nobodyさん:2005/04/26(火) 23:37:38 ID:???
もう一つ素朴な疑問だけど、PHPが開発できない環境で
なぜPHPの疑問の答えが必要だったの?

898 :nobodyさん:2005/04/26(火) 23:39:32 ID:???
家に帰ってから聞けばいいのにね
答えてもらっても確認できなきゃ御礼のしようもないじゃん

899 :nobodyさん:2005/04/26(火) 23:40:31 ID:???
>>893
.htaccessで設定すれば?

900 :nobodyさん:2005/04/26(火) 23:55:43 ID:???
>>896
それは仕様です
俺も同じ事思ってるけど、どうにもならない
俺はSEでもプログラマーでもないけど、どんな職種も同じ模様

901 :888:2005/04/27(水) 00:10:45 ID:???
>>896
もうちょっとで30歳ですね。
若くは無いと思います。

>>897
システムの納品で出張に来ているのですが、
本日確認した所、自社サーバと言っていたのが実は外部のホスティングサーバであり、
そのサーバにシステムに必要な物が入っていなかったのです。
開発チームに連絡すると、ソースを書き換えろと指示されたのですが、
自分の中ではもっとスマートなやり方があるだろと疑問に思った訳で。

>>898
帰れるなら帰りたい・・・

>>899
なるほど。
.htaccessの中にphp_valueでinclude_pathを設定すれば良いんですね。

902 :883です:2005/04/27(水) 00:48:50 ID:6cV9WQUI
>>885 さん
仰るとおりのファイル(LibMysql.dllの間違いですね)をコピーすれば無事文句言われなくなりました。
助かりました。本当にありがとうございました。

903 :nobodyさん:2005/04/27(水) 01:00:19 ID:EFQX6yg2
>>880
ありがとうございます。

特定のURLだけ駄目みたいです。

因みに
 http://www.citibank.co.jp/invest/top.html
を取得しようと試みて失敗します。

相手鯖でICMP系が弾かれる設定になってるようです。

904 :nobodyさん:2005/04/27(水) 01:26:19 ID:???
>>903
phpスクリプトじゃなくて、wgetで試してみたらどうなるか?
ネットワーク環境がわからないのだけど、どの手段でも
特定のURLだけダメってことなら
Path MTU Discovery 問題辺りじゃね?

905 :nobodyさん:2005/04/27(水) 03:02:35 ID:EFQX6yg2
>>904
「Path MTU Discovery」メモメモ
dクス。設定してみます。

現状↓

# wget http://www.google.com
--03:14:54-- http://www.google.com/
=> `index.html'
Resolving www.google.com... done.
Connecting to www.google.com[66.102.7.104]:80... connected.
(省略・・・)
03:14:54 (2.15 MB/s) - `index.html' saved [2259]

# wget http://www.citibank.co.jp/
--03:14:57-- http://www.citibank.co.jp/
=> `index.html.1'
Resolving www.citibank.co.jp... done.
Connecting to www.citibank.co.jp[192.193.77.83]:80...

コネクトしないよ〜



906 :nobodyさん:2005/04/27(水) 11:38:52 ID:???
>>905
citibank.co.jpのIPを見てふと思った。
TCP/IPのサブネットマスクが 255.0.0.0 とかになっていて
ローカルを探しているとか。ありえないとは思うけど

907 :nobodyさん:2005/04/27(水) 12:10:47 ID:???
phpのアップグレード
前に、本をよんでソースから4.3.10をインストールしました。

アップグレードしたいんですけど、make uninstallコマンドができない
ようです。

この場合はどうすればいいでしょうか。

908 :nobodyさん:2005/04/27(水) 12:42:28 ID:???
>>907
ソースからインストールした後、checkinstallを走らせてパッケージを作り、
それを利用してアンインストールする。

OS何か分からないけど、用意されているパッケージを使うってのもありかもね。

909 :nobodyさん:2005/04/27(水) 14:03:55 ID:jTWb4pCn
$var[0] = "HELLO";
$var[1] = "UNNKO";
として
$var = "";
などとしても、$var[0]、$var[1]の
中身は残っているのですが、どのように
したら変数をクリアできますでしょうか。


910 :909:2005/04/27(水) 14:07:48 ID:???
すいませんマニュアル読んでませんでした

911 :nobodyさん:2005/04/27(水) 14:18:28 ID:???
>>908
REDHATの9です。
上書きでmake installではまずいんでしょうか。

912 :nobodyさん:2005/04/27(水) 14:42:28 ID:r4JIiyTC
初歩的なことですいません。

php.iniのセッションの設定でMaster Valueの値より高い数値をPHPスクリプトや、.
htaccessで設定しても、MasterValueの上限を超えられませんか?

913 :912:2005/04/27(水) 14:43:58 ID:r4JIiyTC
書き忘れました。
session.gc_maxlifetime
の値です。php.iniデフォルトで1440ですが、LocalはMaster以下でしか設定できませんか?

914 :nobodyさん:2005/04/27(水) 15:06:11 ID:???
>>913
試してみれば分かると思いますが。。。
それとも試した結果が>>912のような結果だったのでしょうか?

915 :nobodyさん:2005/04/27(水) 15:08:03 ID:???
試して美奈代

916 :nobodyさん:2005/04/27(水) 15:12:44 ID:???
>>911
4.3.11にバージョンアップするんなら別にいいんじゃないの。
インストールパスの変更とかしなければ全部上書きされるでしょ。

PHP5にするんならゴミが残るかもしれないからアンインストールした方が良いと思うけどね。

917 :nobodyさん:2005/04/27(水) 15:17:30 ID:/c75FEFA
class化されたものを呼び出すコードをclass化?するという行為は有用でしょうか?
例えばmysql_connect関数を
class CLASS_DB {
 function Open($host, $user, $pass) {
  $this->link = @mysql_connect($host, $user, $pass);
  return $this->link;
 }
}
というように定義して通常、mysql_connectと書くべき部分を
$c_db = new CLASS_DB();
$dbh = $c_db->Open('host', 'user', 'pass');
と書くようにするといった感じです。

利点としては
・postgres等に変更した場合等にmysql_connectの部分を変更するだけでよくなる
・DBをメンテナンスした場合等に
 function Open($host, $user, $pass) {
  print "DBメンテナンス中です";
 }
と変更するだけでDBに接続する全ての処理の部分でコードを変更することなく
メンテナンス中ですと表示できる。
といったようにワンクッション置くことで何らかの変更があった場合に
class CLASS_DBの中を変更するだけで全て変更される事です。


918 :nobodyさん:2005/04/27(水) 15:18:43 ID:/c75FEFA
-省略された続き-
・DBをメンテナンスした場合等に
 function Open($host, $user, $pass) {
  print "DBメンテナンス中です";
 }
と変更するだけでDBに接続する全ての処理の部分でコードを変更することなく
メンテナンス中ですと表示できる。
といったようにワンクッション置くことで何らかの変更があった場合に
class CLASS_DBの中を変更するだけで全て変更される事です。

919 :nobodyさん:2005/04/27(水) 15:32:46 ID:???
>>918
抽象化するためにラッパとなるクラスを噛ませるのは
よくやるやり方。

デザインパターンの本でも読んだら?

920 :nobodyさん:2005/04/27(水) 16:11:15 ID:???
素直に、PEAR_DB使いなよ。
それにメンテ時の表示なんて、ビジネスロジックじゃなくて、
上の層で制御した方がいいんじゃね。

921 :nobodyさん:2005/04/27(水) 17:05:12 ID:FF8E+B0x
配列に適当な文字列が入っている場合に
Aから順に昇順に並べ替えたりしたいんですが一般的には
どのように行うのがいいのでしょうか・・

922 :nobodyさん:2005/04/27(水) 17:14:13 ID:???
>>921
そういう処理の事をソートと言いますが、PHPでは マニュアルの配列関数の章に
ソート用の関数が記載されています。
並べ替える処理自体を自分で作ってみたい、ということであれば、
「ソート アルゴリズム」等のキーワードでググってみると、いろいろな情報が見つかると思います。

923 :921:2005/04/27(水) 18:20:50 ID:FF8E+B0x
>>922

わかりました。どうもありがとうございました。

924 :nobodyさん:2005/04/27(水) 19:42:19 ID:4osKkRFK
PHPでマルチスレッドな処理はできますか?

925 :nobodyさん:2005/04/27(水) 21:16:57 ID:???
添字に使える文字列は、何かというのを検索してるのですが、全くでてこないです。
マニュアルを検索しても出てこないです。

検索ワードだけでもいいので教えてもらえないでしょうか?


926 :nobodyさん:2005/04/28(木) 00:28:42 ID:J6yThIwG
>>925
マニュアルに書いていた気がする。

927 :nobodyさん:2005/04/28(木) 00:34:06 ID:CYm47rBr
>>906
トレースで外につなぎに行ってるのは確認してるので
ローカル参照ってことはないです。

以下をLinuxでPHP5.0.4、apache2.0.54環境で取得可能な方おられますか?
$url_txt = file_get_contents("http://www.citibank.co.jp/invest/top.html");
$fws = fopen("citi.log","a");
flock($fws,2); // ファイルロック
fwrite($fws,$url_txt); // ファイルの書込み
flock($fws,3); // ファイルロック解除
fclose($fws);


928 :nobodyさん:2005/04/28(木) 03:48:48 ID:???
>>925
連想配列でぐぐろう

929 :nobodyさん:2005/04/28(木) 07:40:48 ID:???
>>927
Apache/2.0.54 (Win32) PHP/5.0.4
でやってみたけど普通に取得できました

930 :nobodyさん:2005/04/28(木) 07:58:58 ID:???
>>925
マニュアルにはキーは整数または文字列とある
で文字列は1連の文字(1バイト 256個の異なる文字)とある
で文字列リテラルに3種類ある
こんなこともできる
<?php
$test[<<<EOD
配列の
キー
EOD
] = '配列の値';
echo $test["配列の\r\nキー"];//Windowsなので\r\n
?>


931 :nobodyさん:2005/04/28(木) 11:57:10 ID:WXfImJ/O
あ、あの・・

932 :nobodyさん:2005/04/28(木) 12:00:04 ID:WXfImJ/O
cache_limitter?をnocacheにしてセッション使ったページ作ってるんですが
すぐに戻ってもページの有効期限切れってでてしまうんですが
直し方ありませんでしょうか?

933 :nobodyさん:2005/04/28(木) 12:01:25 ID:???
>>925
NULL文字以外のバイト列かな
試してないけど

934 :nobodyさん:2005/04/28(木) 12:04:39 ID:???
>>932
POSTしたページにブラウザの戻るで戻ったらそうなるよ
Mozillaなんかはもう一度POSTしますかとか聞いてくるし
キャッシュもセッションも関係ないよ

935 :nobodyさん:2005/04/28(木) 12:20:15 ID:???
>>932
session_cache_limiter("");
で表示されないと思う。

936 :nobodyさん:2005/04/28(木) 13:12:02 ID:???
質問です。

PHPのソース内で使用した変数は、人の手で明示的に解放しないといつまでもメモリに蓄積され続けるんでしょうか?
それとも、あるファイルの一連の処理が終了するとメモリは解放されるのでしょうか?

ぶしつけな質問で申し訳ありません。

937 :nobodyさん:2005/04/28(木) 13:17:29 ID:???
もし蓄積される必要があるのなら、その理由が思いつかないけど、何かある?

続けて実行されない別のスクリプト間で変数をやり取りする方法として
セッションがあって、通常はファイルに保存するし、
同時に実行するスクリプト間でのやりとりなら共有メモリって方法もあるし


まあバグでメモリが開放されないって可能性ならあるけど、
それは意図的なものじゃない

938 :nobodyさん:2005/04/28(木) 13:23:19 ID:???
>>937
ただ単にPHPというよApacheのメモリ管理がどうなっているのかと。
通常は実行し終え、ページを出力したら解放されるものなのかどうかと。
深い意味はありません。

939 :nobodyさん:2005/04/28(木) 13:37:36 ID:???
うーん・・・・
小出しですか?

940 :nobodyさん:2005/04/28(木) 13:54:26 ID:CYm47rBr
>>929
早速実験どうもです。

私もwindowsでは取得出来たのですがLinuxで駄目なんですよ。。
後はLinuxのoperaでHPが見れるか実験したいです。

ここ手のエラーは初めてで・・・四苦八苦してます。。。


941 :nobodyさん:2005/04/28(木) 15:41:15 ID:???
ちょとスレ違いになるかもしれんが質問させてくれ。

仕事でシステム組むとかは別にして、
PHP(+MySQL)つかってお前らってどんなシステム組んでるの?
カウンタとかBBSとかレベルなのか?

942 :nobodyさん:2005/04/28(木) 15:50:28 ID:???
>>941
【PHP】くだらねぇ質問はここに書き込みやがれpart4
ttp://pc8.2ch.net/test/read.cgi/php/1110697712/

943 :nobodyさん:2005/04/28(木) 19:02:46 ID:???
>>930
ありがとうございます。
日本語も可能なんですね。

今さっきgoogleでも、PHP公式マニュアルでも検索したんですが出てこない
んです。
一体どこにあるのでしょう?




944 :nobodyさん:2005/04/28(木) 19:29:55 ID:???
>>943
配列
ttp://www.php.net/manual/ja/language.types.array.php
key は、整数 または 文字列です。 〜(略)〜 整数または文字列のインデックスを使用することができます。
文字列
ttp://www.php.net/manual/ja/language.types.string.php
PHPでは、文字は1バイトと同じです。つまり、256個の異なる文字を使用可能です

shift-jisで次のような物を実行してみれば(\無しと\ありの2ケース)、その意味が分かるかと。
$arr['ソ\'] = 'data';
print $arr['ソ\'];

945 :nobodyさん:2005/04/28(木) 20:13:02 ID:???
>>944
ありがとん。
いつもマニュアル読むのですが、読んでもよくわからないことが多い orz...

あと検索使うと日本語が文字化けして検索できないのは私だけ?
英語のサイトだからか...欝
Firefox 1.0.3 on Fedora Core3




946 :nobodyさん:2005/04/29(金) 16:06:05 ID:???
>>937
一度mallocしたメモリは開放せずそのまま使いますよ。
外見は藤崎、性格は虹野、夜は鏡、そんな娘
足りなくなったらremallocという実装なのですよ。

947 :nobodyさん:2005/04/29(金) 16:10:37 ID:???
日記の指定した件数だけを取り出して、それをHTML形式にして返すコードを書こうと思ったのですが、
途中でパースエラーがでてしまます。コードは以下のです。
どのように修正したらよいのでしょうか?


/*$logファイルの指定行から指定行までを読み込み、整形してHTMLで返す関数*/
/*以下の3変数はすべてURLで指定するつもりです。*/
function html_diary($log , $from_number , $to_number){

$all_lines = file($log);

$chosen_lines = array();
for($count = $from_number; $count =< $to_number; $count++){
/*ここでエラーが出てしまいます*/
array_push($chosen_lines,$all_lines[$count]);
}



948 :nobodyさん:2005/04/29(金) 16:11:31 ID:???
foreach($chosen_lines as $value){
$words = explode("\t",$value);
echo("
<TABLE style=\"border-color:#666666; border-width:1px; border-style:solid;\" align=\"center\" cellpadding=\"2\" width=\"85%\">\n
<TBODY>\n
<TR>\n
<TD colspan=\"2\">$words[0] : words[2] by words[1]</TD>\n
</TR>\n
<TR>\n
<TD align=\"center\" valign=\"top\" width=\"47\"></TD>\n
<TD width=\"299\">words[3]</TD>\n
</TR>\n
<TR>\n
<TD></TD>\n
<TD align=\"right\"><comment></TD>\n
</TR>\n
</TBODY>\n
")

}
}

949 :nobodyさん:2005/04/29(金) 16:15:16 ID:???
>>947 = >>948 なの?
for がおかしいと思われ。
for($count = $from_number; $count =< $to_number; $count++){
 ↓
for($count = $from_number; $count <= $to_number; $count++){


950 :947=948:2005/04/29(金) 16:18:56 ID:???
どうもありがとうございます。
そんな初歩的なミスだったとは・・・w

951 :nobodyさん:2005/04/29(金) 16:42:57 ID:4NbFGjgp
セッションIDの生成について質問させてください。
PHP4.3.10/WinXP で開発しています。

セッションIDを以下のようにして5桁にしようとしたのですが、
上手くいかず悩んでおります。

php.iniの
-------------------------------------------------------
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
-------------------------------------------------------

-------------------------------------------------------
session.entropy_length = 5
session.entropy_file = "c:\xxx\uuidgen.exe" ※注
(※注 Windows環境の為、VC同梱の乱数生成ファイルで/dev/urandom/の代替)
-------------------------------------------------------
に変更

マニュアル・バグレポート・Googleなど一通り見たのですが
これに関する記述が見つかりませんでした。
セッションIDの桁数や文字構成でPHP運用していることに
気付かれたくないので何とかIDを変えたいのですが。。
お知恵を拝借したく、宜しくお願い致します。


952 :nobodyさん:2005/04/29(金) 16:55:57 ID:???
>>951
ヒント:/dev/urandom は実行ファイルじゃない


953 :nobodyさん:2005/04/29(金) 17:08:38 ID:4NbFGjgp
>> 952
早速のレスありがとうございます。
そもそも渡している値(ロジック?)が違かったんですか…(^_^A;)
当方にはLinux環境がなく、できればもう一声だけ
アドバイスをお願い致しますm(_ _)m
Cygwinで/dev/urandom/を移植できることは調べたのですが、
ID生成の為だけに300MB近いハード容量を取られたくないので、
何かしらのツールや自作プログラムで代用したいと思います。
こういった方法でWindows上で /dev/urandom/ と
同様の働きをさせることはムズカシイのでしょうか…?

954 :nobodyさん:2005/04/29(金) 18:03:57 ID:???
ファイル使いたくないなら、session_set_save_handlerでDBでも使った自前関数通すとか。


955 :nobodyさん:2005/04/29(金) 18:08:22 ID:???
あぁ、何か中途半端な事書いてしまったけど、session_id()と組み合わせてね。
ファイルベースだと使える文字列が限られるから、DBと連携したら?って趣旨です。

956 :nobodyさん:2005/04/29(金) 18:29:15 ID:4NbFGjgp
>>954-955
先ほどEGADSという代用ツールに出会い、使ってみたのですが、
どうも session.entropy_file では /dev/urandom/ と
同じ様に認識することはできないみたいです。
/dev/urandom/は「デバイス」という扱いだったんですね…。
(Linux初心者なので間違ってたらすみません汗)
session_set_save_handlerでのDB接続関数は既に作ってありましたので、
アドバイスいただいた通り、適当なハッシュ関数を作って
session_id(生成値)で逃げようかと思います。
>>952のヒントでとても助かりました。
ありがとうございました。

957 :nobodyさん:2005/04/29(金) 21:42:30 ID:s7r+/5xE
amezo2000のsock.cgiで
unicodeで書かれたサイトの抜き取りができません
どうすればいいですか

958 :nobodyさん:2005/04/29(金) 21:43:19 ID:???
すれ違いすまん

959 :nobodyさん:2005/04/29(金) 21:48:43 ID:???
perlコーディングスレもスレ違いだと思うよ。。

960 :nobodyさん:2005/05/02(月) 04:22:58 ID:zPNJQI1N
phpの設定を
ディレクトリごとに変えることは可能でしょうか?
/pc配下では、出力コード=EUC
/mobile配下では、SJISにトランスレートする
というようなことを実現したいのです。

961 :nobodyさん:2005/05/02(月) 04:38:29 ID:???
>>960
.htaccessで設定。

962 :nobodyさん:2005/05/02(月) 05:11:54 ID:???
>>961
Apache側で設定できるとは知りませんでした
ありがとうございました

963 :nobodyさん:2005/05/02(月) 12:17:42 ID:QMo3ti9w
PHPを使ってサイト内検索を作成しようと考えているのですが
具体的にどの関数を使用すればよいのでしょうか?

964 :nobodyさん:2005/05/02(月) 13:43:21 ID:???
>>963
突っ込みどころ満載だな…w
ソートアルゴリズムすら聞いたことありません。
みたいな雰囲気漂ってるぞ。

君の知識じゃ無理なのは目に見えているので、
Googleの機能使え。

965 :nobodyさん:2005/05/02(月) 14:01:52 ID:???
俺もGoogle使っとけに一票

966 :nobodyさん:2005/05/02(月) 14:06:42 ID:???
>963
まずはopendirかな

967 :nobodyさん:2005/05/02(月) 14:41:21 ID:???
>>963
どうせフル検索しそうだしSQLを使った方が良さげ

968 :nobodyさん:2005/05/02(月) 14:55:45 ID:???
>>964
検索だからソートが必須なわけでもないな。

俺もGoogleに一票。
融通が利かない面もやはりあるが、普通にブラウザで見れる範囲しか
引っかからないので、誤って見せてはいけないものまで出してしまうミスがない。
もちろんWebサーバの設定で既にミスってる場合には終わってるが。

969 :963:2005/05/02(月) 18:35:48 ID:QMo3ti9w
皆様、レスありがとうございます。
msearch使って解決しましたw

970 :nobodyさん:2005/05/02(月) 21:43:58 ID:uI0QKQTW
おまえら釣られたよ!

971 :nobodyさん:2005/05/02(月) 23:19:43 ID:???
今日からPHPを学ぼうと思います。
本を買ってきました。
echo文でつまづきましたw

技術評論社「はじめてのPHP言語プログラミング入門」大垣靖男著
なんだけど、タイトルよく見たら、「はじめて」と「入門」が重なるのおかしくないか!?
それとも、QuickBASICで挫折した俺の頭が悪いのか!?

もうこのスレも1000近いので、大目に見てネ

972 :nobodyさん:2005/05/02(月) 23:24:16 ID:kmCmIsRa
phpで以下のコードが' 'or" "のパースエラーが出てしまいます。。
何処が悪いのか分かりませんorzどなたかご指摘して頂けると嬉しいです。

mysql_query("INSERT $table SET " . implode(', ', $in) . ';')
or die 'カラムを挿入できません。';

973 :nobodyさん:2005/05/03(火) 00:21:02 ID:???
>>971
はじめてのPHP言語 + プログラミング入門
こういうことだと思う。

974 :971:2005/05/03(火) 00:28:08 ID:???
>>973
なるほど!謎が氷解した。
じゃー続き読もうかな。

975 :nobodyさん:2005/05/03(火) 02:25:12 ID:???
コメント記入用のtextareaでフォームを作って、
そこの改行を<BR>にかえようと思い
//$comは、フォームからの入力

$com = htmlspecialchars($com);//タグ変換
if(get_magic_quotes_gpc()) $com = stripslashes($com);//¥除去
$com = ereg_replace("\n","<BR>",$com);

と書き、ファイルに書き込んだのですが、<BR>の手前に、
改行マーク(?)が入ります。
Win付属のノートパッドでは、

 ・ のように表示されています。

どういう風にすれば直るんでしょうか?お助けください



976 :nobodyさん:2005/05/03(火) 02:52:21 ID:???
改行コードと一口に言っても、\r \n \r\n の3種類があります。
その状況から察するに、\r\nを改行コードとして送られてきていて
\nだけを<br>に置き換えたので、\rが残ってしまったのでしょう。
処理の前後でbin2hex($com)をしてみると、0d -> \x0d -> \r が
除去されずに残っていることが確認できると思います。

ereg_replace("\r|\r\n|\n","<br>",$com) か nl2br($com)が希望する処理内容になります。

977 :nobodyさん:2005/05/03(火) 08:12:27 ID:???
>>972
die ('カラムを挿入できません。');
>>975
$com = str_replace(array("\r\n","\r","\n"), "<BR>", $com);
//技巧的な置換ルールを 必要としない場合、ereg_replace() または preg_replace()の替わりにこの関数を常用するべきです。

978 :972:2005/05/03(火) 09:51:43 ID:???
>>977
あっ!なるほど、ありがとうございました。。Perl気分から脱出ます〜。

979 :nobodyさん:2005/05/03(火) 14:10:42 ID:???
すげーなお前ら
俺サンデープログラマーだけど、SQLのテキストボックスの
改行コードが無視されるんでSQLに<br>を突っ込んでたよ。
str_replaceを知ったのは最近だ。
やっぱマニュアルはじっくり読まなきゃ駄目だね

980 :nobodyさん:2005/05/03(火) 16:06:06 ID:???
ネタ乙

981 :nobodyさん:2005/05/03(火) 22:27:12 ID:???
intval()と(int)って同じだと思うのですが…
何が違うのですか?

982 :nobodyさん:2005/05/03(火) 23:29:17 ID:???
関数か、キャストか

983 :nobodyさん:2005/05/04(水) 00:09:29 ID:???
switchで2つ以上の条件って使えるの?
$a=1;$b=2;
switch($a,$b){
case 0,1:
break;
case 1,1:
:::::::::::::::::::
ってな具合に書いてみたけどポーズエラー発生
,をandに変えると実行はするけど$aしか判定してない様子

無理?

984 :nobodyさん:2005/05/04(水) 00:17:08 ID:???
>>983 無理
でもPHPのswitchは文字列も使えるのでこんな風に書けなくもない
お勧めはしないが
$a=1;$b=2;
switch($a . "," . $b){
case "0,1":
 echo "0,1";
 break;
case "1,1":
 echo "1,1";
 break;
case "1,2":
 echo "1,2";
 break;
}

985 :nobodyさん:2005/05/04(水) 00:25:07 ID:???
>>984
そっか、無理なのか。
2つ以上の$HTTP_POST_VARS['***']の組み合わせで、それぞれ違うSQL構文を
発行しようと思ったんだけど、ifでやるしかなさそうだね。
ありがとう

986 :nobodyさん:2005/05/04(水) 00:35:17 ID:???
>>985
$HTTP_POST_VARS['***']の組み合わせが多いのなら配列を使って
テーブル化したほうがメンテしやすいと思うよ

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)