「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 1. ハードウェア、OSのバージョン等には一字一句触れない。 2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 目の前で生じている現象をそのまま具体的に書くなどもっての外。 事実より俺様の脳内解釈を優先すべし。 4. 独り言文体で必勝。 「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 絶対に避ける。 8. 情報は小出しに。 「エスパーきぼんぬ」 補足 上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 そのような悪い質問に対して答えられるのは, 質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。 まちがっても「エスパーの方,回答お願いします」 なんて痛い質問するな。つうか氏ね。
こんなもんかな? 補足ヨロ
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); } (後略)
>>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+
ふと疑問に思ったのですが、ファイルに書き出すとき 桁数の制限ってあるんでしょうか? 変数に格納できる桁数の制限も知りたいです。
めもりのつづくかぎり
ハードディスク(外部記憶装置)の許す限り
12 :
11 :05/03/04 11:40:07 ID:???
あるいはquotaが許す限り
かみさんが許す限り
うちのかみさんがね、桁数の制限を気にするんですよ
おまいの給料じゃ気にもなるさ
>>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)
8.98846567431E+307 INF で終了。@32bitなLinux
>>16 Fatal error: Call to undefined function: is_infinite()
自分には、かみさんがいませんから。
残念!
8.98846567431E+307 妊婦 で終了。予定日:3月12日
もっとまぶいコンピューター使ってる奴はいないのかよ。
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
apacheが動作しているユーザ/グループで、file.zipを操作できるかどうか アクセス権限を確認しる。
>>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は可能なのですが、それとはまた違うのでしょうか?
>>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
くだらない質問させてください。 if(ereg("[^._0-9A-Za-z]+", $_FILES['userfile']['name'][0])) { と記述されている部分があるのですが、 この場合、「ハイフン」も含めるにはどう書けばいいでしょうか?
すみません、スレ違いでした。 くだらない質問スレに行ってきます。
require 'hoge.inc' ; としたときに hoge.inc が自分のいるパスを知ることができますか?
34 :
32 :05/03/07 15:08:02 ID:???
>>33 希望通りの結果を得ることができました。
> 定数一覧は見ておけよ
見ときます。
質問です。 session_start(); と記述した後に header("Content-type: application/octet-stream;"); を使用したいのですが思うように使用できません。 ダウンロードダイアログが表示されるのですが、 "開く"を選択してもファイルを開くことができません。 sessionとheaderは同時には使用できないのでしょうか? よろしくお願いします。
保存はできるのか?
なんだかよく分かりませんが、小さなスクリプトなら問題無く動きましたよ? 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>"; }
過去にhttps+session+IEでダウソ出来ないバグがあったなぁー。
>>36 保存は正常にすることができました。
保存したファイルを開くこともできました。
>>37 session_start()で取得した情報に基づきファイルをreadfile()で出力し、
それらを保存、及び開こうとしているのですが、
session_start()を使用した後にheader()を使用すると
保存ができて、開くことができません。
session()とheader()はなにか相性が悪いのでしょうか?
ご教授いただきたいです。
保存出来るってことはブラウザとかクライアントの環境依存の問題じゃん PHP関係無い
>>39 保存できるならそれでいいんじゃないのか?何のためにヘッダ吐いてるんだか
>>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内での文字コードなどはどのような関係になっているのでしょうか? どなたか御教授お願いします。
xamppのPHPは、SJISで書いたスクリプト処理には対応してないと思われ。
46 :
nobodyさん :05/03/08 00:08:13 ID:zgtI7JIE
>>44 >>45 回答有難うございます。
示されたリンク先を見ましたが、ISO-8859-*, EUC-JP, UTF-8の何れかで記述して、
php.iniを書き換えれば良いということなのでしょうか?
>>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); } とするしかないのでしょうか?
Warning: などのエラーを表示させない方法はあるのでしょうか? (エラーメッセージを画面に出さない)
>>46 見て読んで理解しろ。(貴方の既存の知識量等により)場合によっては
理解には別の情報が必要かもしれん。その場合はまたWebとか本から入手。
答えのひとつとして
「理解できなければ、全部'EUC-JP'に統一する」
を挙げておく。
>>49 くだ質レベル。display_errors
>>48 $data = array_map('rtrim', file('test.txt'));
5つのテキストフィールド($a〜$e)があり数値を入力し submitで計算をさせるページを作っています。 cookie?などでこの$a〜$eを保存・読み込みをしたいのですが (出来れば過去数回分を記憶してテキストフィールド以外の場所に表示させたい。) php初心者で計算させるので精一杯で・・・ 検索してもカウンターとかは見つかるんですがこういう手法がみつかりませんでした。 どのような記述で出来るのかご教授お願いします。
プログラミング初心者でいい加減な回答が精一杯なんですがセッションってのを使うと簡単らしいです。
>>54 セッションはブラウザ閉じると消えちゃうから。
57 :
28 :05/03/08 13:05:07 ID:QMVO20O7
>>29 返答遅くなってすいません。
そんな便利なコマンドがあったなんて・・有難う御座いますm(_ _)m
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しか出てきません。 半角スペース以降も認識させる方法を教えてください。 必要な情報があれば出しますので!
60 :
58 :05/03/09 01:35:32 ID:???
ごめんなさい、>58の修正レスです。 ×でデータを呼び出すと、name列がaしか出てきません。 ○でデータを呼び出すと、name列が正しく出てきますが、フォームのtextエリアに入れるとaしか出てきません。 でした。ごめんなさい。よろしくお願いします。
こんなことになってる予感 <input type=text value=a born>
そこでW3C信者の勝利ですよ。
>61 その通りでしあ <input type=text size=50 name=\"name\" value=\"",$row["name"],"\"> ダブルクォーテーションで囲えば正しくフォーム部分にも出てきました。 でもこれで正解なんです?なんか野暮ったい気もするんですが
RSSのUTF-8で「&」が入るとエラーになってしまうのですが、
&を使用する事はできないのでしょうか?
<link>
http:// 〜/a.php?abc=1&def=b</link>
& は実体参照の開始とみなされるので & そのものを書くなら & と書かなければならない。 これは HTML でも同じ事
67 :
66 :05/03/09 10:40:39 ID:???
>>66 & そのものを書くなら & と、ね。
……& が解釈されてしまったよ。
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 &が見えると先入観が^^;;
& と表記したいときは &amp; と書きませう
&amp;
73 :
11 :05/03/09 13:14:22 ID:???
>>71 じゃあ&amp;と書きたいときは&amp;amp;ですね
機種依存文字にマッチする正規表現を知りたいのですが、 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:???
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を使うのはちょっと怖いです。 これって正しいやり方なんでしょうか?ほかになにかいい方法があるのでしょうか? よろしくお願いします。
>>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;
}
こんな感じでよろしいんですよね。
mojavi解凍するとディレクトリの中にwebapp.newとか .newというバイナリが入っているんだけど、これは 何なんでしょうか。
質問です。 <?php $fp = fopen("log.dat", "a"); fseek($fp, 0); flock($fp, LOCK_EX); fwrite($fp, "xxxxx"); flock($fp, LOCK_UN); fclose($fp); ?> とやると、ファイルの最後に文字列が追記されていきます。 ファイルオープンモードを"a"で開いて、ファイルの最後ではなく、 最初に文字列を追記することはできますか?
>>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でも何でもいいですよね? この中で、この拡張子だと他のよりも読み込みが早い! なんてのはないですか?
マニュアル読んだのか?
世の中にはいろんな考えがあるもんだ。感心する。 「ファイルネームによって読み込みの速度が違うのではないか?」 なんて、頭が固い私には全く思いつかなかった。
>>87 「a01」
というファイル名と
「a000000000000000000000000000000000000〜0000000000000000000000001」
というファイル名ではスクリプト全体としての速度は違うかもよ。
読み込み自体は変わらんと思うけど。
>>84 そのデータベースアクセス関数にタイムアウトが
実装されてないとやりようがないんじゃないかな。
おいおい、ファイル名で速度が違うと言うのは常識だろw まさかそんな大事なことを無視してDBの使い方に終始してんじゃねーだろうな
>>88 読み込み速度はどうだか知らんが、
メンテナンスは確実に時間が増す。
ファイル名に関してはディレクトリエントリの状況や ディレクトリエントリキャッシュあたりのような 偶然に左右される要素が影響してくるので、 キニスルナつーか気にしてもどうしようも無いって感じだろうね。 元質の話に戻ると、 拡張子は何でもいい、つーか拡張子が無くてもいい、 PHPの中の人はそのファイルに<?phpがあるかどうかだけ気にしている。 つー所でいいんでなかろうか?
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;
}
}
正規表現がマズってますかね?
なんで()で括ってるの?
| の優先順位を明示したいだけでしょ つか、正規表現はスレ違いかと
テスト用に用いている文字列はほんとにSJISなのかと。
98 :
94 :05/03/12 16:03:01 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()が使えると思うのですが。
こっちのPHP 4.3.10(FreeBSDのportsでインスコ)では、 Fatal error: Call to undefined function: xslt_set_encoding() にならなかった。何が違うだろ。
>>101 redhat9 sourceからです。
ext\xslt\sablot.c の中で |#ifdef HAVE_SABLOT_SET_ENCODING |PHP_FE(xslt_set_encoding, NULL) |#endif みたいになってるし、マニュアルには |Sablotronバックエンドを使用する際、このオプションは |Sablotronにエンコーディングサポートを付けて |コンパイルした場合のみ利用可能です。 とあるよ。xslt使ったこと無いから具体的にどうするのか知らないが。
あと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で使うにはどうすればいいでしょうか。
1文字目が数字の変数は使えませんよ。
>>105 詳しく
>>106 b.phpで「出力された」変数 ですか?
returnを使えば値を返せることは返せますが。。
109 :
nobodyさん :05/03/13 13:32:40 ID:j3cG5KiD
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内のリンクに対しても対処方法はないでしょうか?
>>112 ・htmlでbase要素を用いる
・メニュー内のリンクを/からのパスにする
・menu.phpに相対パスを計算させる
114 :
105 :05/03/13 14:29:21 ID:4ktgufgk
>>113 menu.phpに相対パスを計算させる
とはどういう事ですか?
>>114 REQUEST_URIから各リンク先への相対パスを求め、リンクに埋め込む。
116 :
105 :05/03/13 14:45:16 ID:???
>>115 base要素でできました。
ありがとうございます。
あと、お手数ですがその方法をもう少し詳しく教えて欲しいのですが。
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の中身は読んでみましたがさっぱりでした。
>>119 読むのならむしろ libsablotron の configure とか /usr/include/sablot.h かと。
>>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の設定が悪いのでしょうか? そして、対処法はどのようにすればよろしいでしょうか?
>>124 ケータイにダウンロードさせるなら、適切なContent-Type吐いてechoしてはどうだろう?
>>124 着信音については
Content-Type
拡張子
HTTPリクエストの末尾
に注意する必要がある
description attachmentって携帯で使えないのかな?
一時間に一回自動でデータベースから情報を読み込みファイルを出力したいのですがどのように考えればいいですか? 00分になりアクセスがあったらファイルを出力し次の00分になるまで出力はなし。見たいな考え方でいいですか? この考え方だと一回もアクセスがないと出力されないことになりますが、何か便利な関数があるんですか?
定期的に実行しなければならないなら、OS側が提供しているcronやtask scheduler。 これが使えないようなら、データ投入時や表示時になんとかするしかない。 表示時(アクセス時)に必要なデータをかき集められるものなら、表示時に時間をチェックして誤魔化す。 データ投入時にあらかじめページを作成しておいて、表示時の時間チェックと組み合わせるのもありだな。 実行環境ややりたい事が分からんことには、可能か不可能かさえも分からんよ。
イメージ関数について質問です。 背景が透過gifな画像をリサイズした場合に透過ではなくなるのですが、 これを透過のままリサイズ出来ないのでしょうか?。 出来るのであれば参考になるサイトまたは方法を教えてください。
>>128 基本は、
>>129 が言うように、OSの自動処理を使う。
連鯖などでcrontabが使えない場合、いかにしてトリガを引くか、それを考える。
・WEBアクセスの際に前回処理時間と比較しトリガ発生→アクセス無ければ無意味
・自宅のPCのタスクスケージュラや、DiCE等で定期的にトリガプログラムへアクセス →PC付けっぱなし必須
・携帯電話などで自分でトリガプログラムに定期的にアクセス → 鬱陶しい、眠れない、パケ代かさむ
さぁ、どれにする?
132 :
128 :05/03/17 11:48:17 ID:???
ありがとん リナックスのことワカメだから本買ってしらべてみます
cronが楽だが使えないとなれば、
>>131 の書いてる3つの内の2つ目が一番一般的かな?
>>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 ってなのがメールで送られてくるんだけど エロイ人教えてください
>>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;?> 何がちがうんですかね?
>>137 >>136 wrote
> それでもエラーが出るようなら、phpのパスを調べれ
環境変数、特にコマンドの検索場所を指すPATHが違う。
>>137 CLI用PHPへのパスは?
1行目に
#!/usr/local/bin/php
とか書いてる?
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で指定しています。
自宅サーバ上での質問です。 AnHttpDでISAPI経由でPHPを動かしているのですが ISAPIだと設置した掲示板やチャット等で、IPやHOSTの情報を取得してくれません。 CGI経由だと取得してくれるのですが、この問題を解決する方法はありますか? ■バージョン PHP 5.0.3 AnHttpD1.42n
>>143 PHPのバージョンを変えてみるという手がある。
が、「問題を解決する方法」としては選択しづらいだろうね。
つか、なんでバージョンでその辺が変わるのかねぇ>PHP
サーバ側とのAPIが変わってるわけでもないのに。
145 :
143 :05/03/17 20:25:16 ID:???
>>144 スクリプト上で取得の方法を変えたら出来ました。
(前)$ip = getenv("REMOTE_ADDR");
(後)$ip = $_SERVER["REMOTE_ADDR"];
お騒がせしますた(;´д`)
147 :
nobodyさん :05/03/17 21:12:04 ID:PAcs7vRb
open_basedir を設定している状態で、 require_once('../main.inc'); と相対パスで一つ上を指定したいんだけど、open_basedirをどう設定すればいい?
>>145 ちゃんとマニュアルに
getenv
注意: この関数は、ISAPIモードでは動作しません。
書いてあるじゃん
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です。
おまいら! SJISでスクリプト掻いてますか EUCですか?
>>151 外に出す時はUTF-8
普段はASCII
>>150 formがSJISならSJISで来る確率が高かろうから'auto'じゃなくて
'SJIS, EUC-JP, UTF-8, JIS, ASCII'とでも指定してみれば
私はhiddenに判定文字列入れてmb_detect_encodingやってるけども
>>153 ありがとう、AUTOやめてSJISの優先度上げたら落ち着いたよ
E・U・C!E・U・C!
157 :
nobodyさん :05/03/18 15:47:30 ID:H8eZrdKt
.htaccessで ErrorDocument 404 /404.php として404をPHPに飛ばしてるのですが このPHPで本来どこにアクセスされたのかを 知ることってできますか?
$_ENV["REQUEST_URI"] かな
159 :
157 :05/03/18 16:44:12 ID:???
>>158 あ、ありがとうございます
$_SERVERで試してました。。。orz
$_SERVERでも問題ないと思うが
161 :
157 :05/03/18 17:08:04 ID:???
>>160 あれ? ほんとだ・・・
なんか全然関係ないとこで勘違いしてたみたいです。
たいへん失礼しました
質問です。 ファイルの行数を取得したいのですが、 極力負荷を低くやりたいです。 ファイルのサイズはデカくて、 1行の文字数は不定なのですが なにかウマい方法はないでしょうか?
>>162 wc。要するにバイナリーとしてファイルを舐めて[改行]の数をカウント
fileで読み込んでcountで参照って手も。
ありがとうございます。
>>163 す、すみません…
バイナリは扱ったことがないので分からないのですが
もう少し詳しく教えていただけませんか?
>>164 ファイルがかなりデカいので、fileで読み込むと悲惨なことになりそうです…
>>165 まず試せ。
wcはUNIX系OSのシステムコマンド。
え、、と… PHPでできないと少々具合が悪いのですが…
>>167 fileで読み込む以外不可能だとおもうよ。
悲惨なことになったらまたおいで。
>>168 わかりました…
どうもありがとうございます、試してみますね(。・ω・。)ノ
>>167 でかいってどれくらい?
具体的な数字をどうぞ。サイズと行数くらいかな?
あと平均カラム数も。
>>170 7万行くらいで、50MBくらいです。
文字コードはSJISです
fopenしてfgetsを繰り返して(取った内容は棄て)カウントでもいいと思うよ。 1行がよっぽど長くなければメモリも食わん。
>>173 なるほど!!
そうすれば効率的ですね。
どうもありがとうございました<(_ _)>
>そうすれば効率的ですね。 ∠( ゚д゚)/「え?」 釣りですかそうですか λ..........
>>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行少なくなる
たぶんちょー基本的な質問なんだけど、 ここに出て来る @ ってなに? $fp = @fopen($file, "w"); $write = @fputs($fp, $contents); @fclose($fp);
そのまま$fileの部分を$filesにして試してみ @があるとないの違いがわかる。
179 :
177 :05/03/19 10:45:34 ID:???
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サーバー名にしても同じく・・・ 他に考えられる原因は何があるでしょうか?
>180 ・SMTPサーバが動いていない ・SMTPサーバを勝手に使えないよう制限されている のどちらか。
>>180 >portはwebで開いているか確認できるページで確認したら開いてました。
例示がローカルアドレスなのに、webでのチェッカーで確認したというのが怪しい。
>181 ・SMTPサーバが動いていない ・SMTPサーバを勝手に使えないよう制限されている とはメールサーバを立てているのですがそれの設定が違ってるってことでしょうか? >182 外部へポートが開いていた場合でもローカルは閉じている場合はあるのでしょうか?
184 :
nobodyさん :05/03/19 12:07:10 ID:0sO4bGN4
php の error log に任意を文字列を出力する方法ってある??
>>184 使ったことないけど、trigger_error()あたり。
>>184 マニュアルの
XXX. エラー処理およびログ記録関数
187 :
nobodyさん :05/03/19 14:05:22 ID:oXb2sDzY
個人情報だのパスワードだのって、暗号化とかしてる? 暗号化してDBに保存、読み出して複合化とかしたいんだけどPHP中やDBに複合化の Keyとかプレーンで書いておいたら意味が無いかとも思うしかといってKey暗号化しておいたら Keyの複合化どーすんのよっつーか
復号しなくていいようにすればいいじゃない
189 :
nobodyさん :05/03/19 14:20:54 ID:oXb2sDzY
>>188 比較だけなら暗号化したもの同士で行えば良いんだろうけど
例えば会員がパスワード忘れて問い合わせてきた場合は?
もっかい登録しなおせって訳にもいかないだろうし、個人情報についても
保護法絡みで共有サーバなんかの場合暗号化しときたいんだけど
>>189 そういう時は、自動生成したパスワードを再発行してやり変更が必要ならそっちで勝手に変えてね
とすればよい。
192 :
nobodyさん :05/03/19 18:21:51 ID:Mh3YU28A
ISAPIでHTTP_REFERERとHTTP_USER_AGENTが取得出来ないんですが なぜでしょう?
195 :
nobodyさん :05/03/20 03:54:17 ID:34HEFa63
FAQがなかったのでよくある質問っぽいんですが書きます。 Ver.4.3.10を使っていてphpinfoをみると --enable-mbstring=shared という一文があるのですが、mb_string系の関数がundifinedといわれて困っています。 どうすればmb_string系の関数を使用できるのでしょうか?
197 :
nobodyさん :05/03/20 04:21:53 ID:34HEFa63
>>196 ちょっと意味がわからないのですがどういう意味でしょう?
>>197 関数を使って動的にロードしろってことだろ。
199 :
nobodyさん :05/03/20 04:32:48 ID:34HEFa63
>>198 なるほど。
ちなみにロードするファイル名は何でしょうか?
教えて君ですいません
>>199 すみません、マニュアルって知ってますか?
みかんと林檎と梨の値段を計算するプログラムを作ってみようと試みています。 最初にチェックボックス形式でチェックした品名だけをドロップダウンリスト形式で表示させ ドロップダウンリストから選択した品名の個数を入力して値段を計算させる、という感じで作ろうとしています。 ↓-----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"; ↑----------↑ ドロップダウンリストから選択して計算までは出来るのですが、 計算を実行したあとドロップダウンリストの中身が空っぽになってしまいます。 このドロップダウンリストの中身を保持して欲しいのですが、どの様にすればよいのでしょうか?
>>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"
)
);
?>
################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; } ?>
################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ループの内部が実行されないのでしょうか。
endif; ???
>>208 おぉ、そんなのが有ったのか、一つ賢くなった。
出力する際にHTMLを書くのが面倒になってきたのですが、 連想配列を渡すとリストとして返ってくる関数とか無いですか?
そういう関数作ってみてはいかが?
>>210 配列渡すとテーブルとかリストで吐くような機能を持った
テンプレートクラスがあった気がする。
ある web から引っ張ってきた文字列から 例えば strip_tags()した後、 だけ取り除きたい時って どうすればいいの?
214 :
213 :2005/03/21(月) 09:33:40 ID:???
アフォでした。 例えば strip_tags()した後、&ンBSP;だけ取り除きたい時って って書きました…
216 :
214 :2005/03/21(月) 09:42:15 ID:???
217 :
202 :2005/03/21(月) 10:44:09 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端末に送付したら登録はできました どなたか宜しくお願いします;−;
phpじゃないじゃない。
じゃないじゃないじゃない
222 :
218 :2005/03/21(月) 22:33:01 ID:???
もうちょっと調べてみます ありがとうございました
223 :
nobodyさん :2005/03/22(火) 21:34:33 ID:FZjBD8FM
PHPのカラー表示できるテキストエディタってありますか? PHPのエディタってあんまりないですよね。。。
phpに出来てcgiに出来ないこと、またはその逆はありますか? もしないのであれば、何故両立している状態があるのでしょうか?
春だなぁ
227 :
225 :2005/03/23(水) 00:58:04 ID:???
>>226 スミマセン。。。社会人っす。。。素朴に疑問なんです。。。
229 :
225 :2005/03/23(水) 01:04:23 ID:???
>>228 http://e-words.jp/w/PHP.html これも読みました。。。
理解できていないと思うのですが、PHPの解説サイトとか見てみると、「cgiより軽い」とか「cgiよりサーバーへの負担が少ない」とか書いてあって。
cgiで出来てphpで出来ないことがないとしたら、両立している理由が分からないのです。。。 orz...
まぁPHPもCGIなはず
231 :
225 :2005/03/23(水) 01:20:23 ID:???
もっと勉強してきます orz...
>>230 アリガトゴザイマシタ!!
CGIに出来てPHPに出来ないこと。 CやPerl、RubyなどもちろんPHPも含めてあらゆる言語を利用できる。 って、答えたらよかったのかなぁ?
PHPは言語だからCGIと比較するのはおかしい。 レースドライバーと耕運機を比較するくらいズレてる。 そもそもPHPはCGIとして動かすことも可能。
>>229 巷の初心者に毛が生えたのが解説してるPHPサイトとかも
ちゃんと理解できていないからその記述になってるので安心汁。
(CGI=Perlらしい)
クラスの外部で定義された変数をクラス内部で使いたい場合、 PHP5では public $mona = array(0,1,2); class giko { } PHP4では $mona = array(0,1,2); class giko { global $mona; } という認識であってますか?
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まで落ちない
>>237 mod_perl > mod_php > Perl(CGI) > PHP(CGI) のようです
>>236 publicはclass内でpublic変数を定義するもの
classの外で使うとエラーになります
取りあえず巷にはCGI=perl(言語)と思ってる馬鹿が溢れかえってるので、それを前提に話しをするとヨロシ
>>230 みたいな勘違いしてる人は結構珍しいかも。
>>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 そんなスレあったのですね。
逝ってきます
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
>>245 mkdirを使わないようにプログラムする
必要なディレクトリはあらかじめFTPで作っておく
247 :
245 :2005/03/23(水) 11:52:15 ID:???
なるほど。 ディレクトリは最悪、事前に準備することが可能なんですが、動的にHtmlファイルを生成(書き換え)したいと思っていまして、そんなとき、fopen()使わずにいけますか?
>>247 あらかじめ作ったディレクトリ(所有者がPHPスクリプトの所有者と同じ)内であれば特に制限は無いのでfopenでもcopyでも好きにやってくれ。
249 :
245 :2005/03/23(水) 12:15:22 ID:???
>>248 ありがとうございます。
試してみました。↓
$result2 = copy("test_dummy/test.txt","test_dummy/test2.txt");
。。。でもダメでした。(同じメッセージ)
かなり初歩的なことだと思いますが、引き続きご指南いただけませんか。
>>249 test_dummyの属性(permission)と所有者(owner)を述べよ
>>238 >mod_perl > mod_php > Perl(CGI) > PHP(CGI)
その順番は一般にPHPは最初から拡張モジュールてんこ盛りでビルド
Perlは最初から余り入れずプログラムで必要に応じて採用する傾向のよるもの。
(PHPでdl()させてるところって殆どないやん)
実際に測ると総合力は余り変わらんよ。
mod_perlちょっぱやよ。
253 :
nobodyさん :2005/03/23(水) 15:37:48 ID:ZnAQR4mO
特定のディレクトリのファイル容量を取得する方法は、ありますか?
>>253 PHPスレで聞いたって事はPHPにそういう関数はないかってことやね
無い と思う
linuxならduコマンド呼べ
disk_total_space()とdisk_free_space()をゴニョゴニョすれば出そうな気もするなぁ。
>>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
>>257 view.phpの2行目に
error_reporting(E_ALL);
を入れとく。
>>259 MySQLのバージョンは?
4.0ならSELECT * FROM abc WHERE comment LIKE BINARY '%$key%'
3ならcommentフィールド自体にBINARYをつける
>>256 その両方の関数のユーザコメントでその手のが色々書いてある。
でもWindowsで試したけど、まあ上手くいかんね。
>>258 の言うとおりdir()辺りで一覧とって、ファイルに限って
逐一filesize()で調べて合計出すのが良いと思う。
# du使えればそれが一番楽だけどね。
>>259 MySQLのサーバ設定で「日本語(ujis/sjis等)」ときちんと設定する。
サーバ設定が変更できない場合は、次善の策として
>>261 の方法で対処。
264 :
261 :2005/03/23(水) 16:56:08 ID:???
BINARY演算子はMySQL3.23.0から使えるようです ただ英字のHUTUUとかがhutuuでは検索できなくなります。
>>260 レスありがとうございます
やってみましたが真っ白です・・・_| ̄|○
>>265 お前は
<?
echo "Hello world";
phpinfo();
?>
から始めろ
267 :
245 :2005/03/23(水) 17:55:48 ID:???
>>250 遅くなりました。すみません。(
>>245 >>247 >>249 の件です)
パーミッションはrwx r-x r-xです。
所有者は私のFTP接続アカウントと同一です。
よろしくお願いします。
>>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です。 ありがとうございました。
>>266 >>268 自分に知識が無いのは分かってまつ(;´Д`)
最後にこれだけ教えてください
ほぼコピペしただけでも動かないってことは
>>257 のソースには不備があるってことですか?
構文上のエラーはないようだよ
不備があるないって問題でもないような。
まず、view.phpのほうで、ちゃんとincludeできてるかどうかとか、
そういうのを
>>265 の言うとおり、
一個一個表示して確かめないとね。
そうしないと何行目がまずいんです!ってのはわかんないと思うよ。
>271 同じテレビでも違う地域に引っ越したら、場合によっては受信設定を変える罠
275 :
nobodyさん :2005/03/23(水) 23:11:40 ID:fSPzJGOM
<? $case = '17,241'; ?> <? print"\\$case(送料等含む)<br>"; ?> これで表示されませんorz なにかまちがえてますでしょうか・・・?
>>275 $case → {$case}
日本語使うなら文字コードにも気を付けろ
278 :
nobodyさん :2005/03/23(水) 23:45:07 ID:fSPzJGOM
>>275 print"\\$case(送料等含む)<br>"; の 変数名の部分$case〜をうまく認識できていないんですよ。
<?
$case(送料等含む) = '17,241';
print"\\$case(送料等含む) (送料等含む)<br>";
?>
これで解決ですね(゚∀´)b
print"\\$case (送料等含む)<br>"; // 次の文字との間をスペースで分離
print"\\".$case."(送料等含む)<br>"; // 文字列演算子で分離
print"\\{$case}(送料等含む)<br>"; // { }で囲む
のように変数名の部分を(PHPの中の人に)分かり易く書くこともできます。
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属性を指定しても渡りません。 何か良い方法はあるでしょうか?お願いします。
>>281 <input type=hidden name=hoge>
を用意して、JavaScriptで値を渡してからform.submit()している。
面倒なんだけどね。
283 :
281 :2005/03/24(木) 03:01:53 ID:???
>>282 うわー!!!
目から鱗でした。ありがとうございます。
PHPとは関係無くなってきたけど、 function a_check(){ if( ok ){ return true; } else{ return false; } } <input type="submit" name="a" value="a" onclick="return a_check()"> てのもありかと。
>>284 これってJavaScriptでエラーが発生したら問答無用でsubmitされるんだよね
どうせならフェイルセーフにして欲しいなぁ
>>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のテーブルのデータをエクセルで出力するプログラムを作りたいのですがどのような やり方でやるのでしょうか?
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
{ } が閉じていないとこのエラーが出るようですが、全てのスクリプトは移行前は動いていましたし
括弧のチェックも行いましたが、何が悪いのかわかりません。
何かヒントか勘所ありましたらお教えいただければ幸いです。
よろしくお願いいたします。
>>289 dumpして、縦罫を区切り文字に変換、
行頭、行末の区切り文字を削除
残りの罫線文字を全て削除。
で、csvデータの出来上がり!
>>289 excelで出力か...COM関数かな。
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使えば?
----------------------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ボタンを押すと同時に空っぽになってしまいました。 セッションの使い方間違っているのでしょうか?
300 :
nobodyさん :2005/03/24(木) 21:29:55 ID:6QAMAmhS
くだらない板の方がいいのかもしれませんが。 多次元配列で、指定したキーの要素が存在するかどうか チェックする時、キーの範囲を絞って検査する方法 はどうやってますか? 幾つかサンプルを探してみましたが、1次元配列の例しか 見当たりません。 array_key_existsやissetを使うことになると思いますが どうでしょう?
わかんねぇんだったら、黙ってろ禿げ
>>300 考えてるイメージどおりでいいんでね?
絞った範囲を逐次舐めていくか、一旦範囲を切り取った
別の配列用意して、そこを見ても良いと思うけど。
303 :
nobodyさん :2005/03/24(木) 22:22:14 ID:6QAMAmhS
>302 レスありがとうです。 issetやarray_key_existsの第二パラメータを []付きで指定するとエラーになりますね。 やはり別の配列に切り取って、上記関数を 使う方法しかないでしょうか。
if(isset($Arr['hoge'])){ とか普通にやるけど?
305 :
nobodyさん :2005/03/24(木) 22:46:10 ID:6QAMAmhS
>304 すみません、isset内の$Arr['hoge']は多次元配列でしょうか?
>>303 array_key_existsは、別に多次元配列を処理できる訳ではないので。
>>305 if(isset($Arr['hoge']['fuga'])){
とかも念の為確認したけど普通に通るね
4.3.4で確認したが、レン鯖とかでもエラーでた覚えはないな
>307 では、'hoge'や'fuga'の部分を配列変数で指定したらどうでしょうか? 当たり前かもしれませんが、教えてください。
つか、連想配列の添え字に配列変数を指定? preg_replaceのパターンに配列使うみてーなん期待してんのなら 無理じゃね?そういう引数とれる関数じゃ元からねーだろ
>309 登録の時は普通に配列変数を指定できるはずですが、 キーが存在するかどうかのチェック時に指定できない となると、PHPの配列というのは、用途が限定されてきますね。 存在しないキーを指定して値を取り出そうとすると、 ランタイムエラーになるのですよね?
312 :
310 :2005/03/24(木) 23:35:17 ID:???
>311 私はPHPを詳しく理解してないですけど、 あなたは私が何を言いたいのか理解していない気がします。
>>310 限定も何もPHPがどーのこーのの前に配列が何か良くわかってないんじゃない?
指定の仕方がおかしいっつーてるだけの話よ
別に存在しないKeyの連想配列参照したって構文エラーは出んぞ
314 :
310 :2005/03/24(木) 23:56:46 ID:???
>313 無効なキーを指定した場合、返ってくる値はNULLでしょうか? マニュアルで配列のところを見てみましたが、どこに書いてあるのでしょう? 聞いてばかりですみません。
>>314 おめぇ、いい加減鬱陶しいよ。
自分で試してみりゃ判ることばっかり聞いてんじゃないよ。
春だなぁ
? ? ? ? ? ? ?? ?? ?? ?? ???? ???? ??:: ?? ???:: ? ?? ????::?:: ???????? ???? ? ???? ??????::?::: :::?::??? ? ? ???????::?::?::::: :: :: ::::?::????????? ??? ?????????::?:::?:::::::?::??????????? ???
>>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])) {
・・・
}
}
あとはまあ応用で
天気良いなァ・・・
320 :
294 :2005/03/25(金) 10:48:05 ID:TwEbcJkK
294です。だらだらと解りづらい説明で恐縮ですが、 どなたかアドバイスいただけないでしょうか。
mojavi使ってないので直接的なアドバイスできないが、 chage〜とchange〜はtypoですか? あと、文系っぽい質問の書き方を改めた方がいいと思った。
[ ]が多くて読みづらい。 setAttribute[〜]、getAttribute[〜]は 見るからに怪しい。
>>294 $request->setAttribute('hoge', $hoge);
だよ。括弧の形が違う。
えっ、それわざと書いてるんだと思ってた。
325 :
294 :2005/03/25(金) 17:53:55 ID:???
みなさんありがとうございます。 >321 typoです。文系っぽいというのはすみません。よくわかりません。 >322,323,324 typoです。わざとじゃありません。()です。でなきゃこの状況以前のエラーになります。 []なしで書いてみたらもっとわかりづらかったです。 typoがおおくてすみません。なるべく状況をわかってもらえるように 書けば書くほどわかってもらえなくなります。 見直しはしてるのですが、気持ちの方があせってます。 わかりずらい書き方ですみませんが、どなたかアドバイスいただけないでしょうか。 よろしくお願いいたします。
「typoです」「typoです」って事故みたいに言うなよ。お前のミスだろうが。 ソースは基本的にコピペ。投稿する前には再確認しろよ。
327 :
294 :2005/03/25(金) 18:09:25 ID:???
>>326 その通りです。私のミスです。事故みたいに受け取られるのは不本意です。
329 :
294 :2005/03/25(金) 18:29:56 ID:???
>>328 「typoです。
()と[]の区別がつきません…」
とかのネタは実は覚悟してたんですが、意表をつかれました。
わかりづらい書き方についてのアドバイスを拒否するわけではありませんが
できましたら、その、変数(オブジェクト)の引き渡しについても
アドバイスいただけないでしょうか。
>>329 もう一度、きちんとした質問として書き直す気は無いんだな?
332 :
294 :2005/03/25(金) 18:57:30 ID:???
4に該当してましたでしょうか。
>>331 いえ、そうしていいならそうさせてください。上手くかけるかどうかわかりませんが。
今夜もう一度書きます。お目汚しすみません。
>>328 アタタタタター!
お前はもう氏んでいる。
334 :
294 :2005/03/25(金) 21:57:21 ID:???
>>330 あの、すみません。本当に4のどこに該当したでしょうか。
再度書こうとしているのですが、うまくまとまりません。
あと、他の方からのご指摘ですが文系っぽい文章もよくわかりません。
自覚がないのは手に負えないとは思うのですが…。
なんだか簡潔に書こうとすると省略が増えて、「最初から言えよ」と
言われそうです。コードを中心に助詞とかはぶいて書くと(理系っぽい?)
傲慢な感じです。(「コード見てわかれよ」というような)
結局typo部分を修正する程度になってしまうかもしれません。
といいつつもうすぐイラン戦なので、明日になるかもです。
typoについてご指摘いただいた方には、感謝してます。少なくとも
わかりづらい文章を読んでいただいたので。
>>333 もっと意表を衝かれました。
>>294 どっかにうpした方がよくなくって?
フレームワークスレ(Phrameと銘打ってあるが多分mojaviでも良かったかと)もあるけど、
あの書き方だとレス付かない希ガス
お嬢様口調キター
>>334 > コードを中心に助詞とかはぶいて書くと(理系っぽい?)
> 傲慢な感じです。(「コード見てわかれよ」というような)
「コード見ずにわかれよ」よりはマシ。
ソースをまるまるうpして、「動きません」だけ言われた方が解決出来る。
なぁみんな。 元理系で文系卒業したオレに一言言わせてくれ! 理系とか文系とかいう問題では無い! 人の問題なのですよ。
>>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サーバ名に変わるだけでした。 何か問題があるとしたらどこがいけないのでしょうか?
Windows版phpは、メール送信にSMTP接続を使います。 逆に言うと、SMTP接続を受け付ける鯖がなければメールを送信できません。 192.168.1.100にメール鯖が無ければ当然そのようなエラーが起きます。 プロバイダのメール鯖を使うとしても、最近はPOP before SMTP等色々な制約があります。 そのWeb鯖が本番環境なら管理者に相談してみましょう。
> 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でも受け渡ししろ。ってことか?
>>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番ポートが遮断されているんですか?!
可能性としてどこがありえますか?
>>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だとしたら クラスだろうな。 寝ぼけたこといってすまん。
>>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番ポートは開放されています。
しかし設定によって遮断されているというのはありえるのでしょうか?
>>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");//文字コード指定
>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はこれにて潜行します。
別スレでもひとつ穏便によろしくお願いしますね。
ありがとうございました。
>>354 サンクスです。
PHP4のoopはあんまり使えないですねorz
356 :
PATH_INFO :2005/03/26(土) 10:44:38 ID:RieTtHlG
(´-`).。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に出力したいのですがどのようにすればいいのでしょうか?
>>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
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
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";
?>
>>350 >25番ポートは開放されています。
実際に開放されてることはどうやって確認したの?
>しかし設定によって遮断されているというのはありえるのでしょうか?
自分はWindowsは良く知らないので、思わぬところに設定があったりして
はまることは良くある。あと今回はNATかなんかで外のISPのSMTPに繋ぐから
関係ないんだろうけど、外のSMTPサーバ側で接続規制してることも稀にあるからね。
この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に複数の処理系が動くのでしょうか?
>>370 Apacheのモジュールの場合は、Apacheのプロセスで動作する。
372 :
nobodyさん :2005/03/27(日) 08:15:29 ID:x1LbwUGs
execがうまく動かないんだけど、なんでだろう セーフモードとか全オフなのになー
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 ですね。。
PHPの設定のmemory_limitを-1に メモリ食いつぶしても俺のせいにしないでね
377 :
nobodyさん :2005/03/28(月) 10:02:33 ID:YyD4GvIT
たとえば2chのスレをスレタイのキーワードで絞って表示するようなスクリプトがあったとして、 $keyword = 'きーわーど';となってて、キーワード指定しないで全て表示したいときは $keyword = '*';でOKでしょうか?
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(月)」という形式にしているのですが、 保存するときはタイムスタンプで保存して、 出力時に日付に変換するほうがいいのですか?
そうすると処理は増える。 どっちが良いのかは、必要があるか無いかで判断すれ。
382 :
nobodyさん :2005/03/28(月) 13:08:42 ID:1BLl4/4M
アニメーションGIFってイメージ関数では作れませんよね? だとすると、バイナリデータを操作して作るしかないのでしょうか?
>>377 2chのスレをスレタイのキーワードで絞って表示するようなスクリプト次第
>>382 PHPを使ってということならその通り
自分でライブラリを作って公開したらどう
385 :
382 :2005/03/28(月) 16:02:00 ID:???
そうですか。では自分で作ってみることにします。 ありがとうございました。
386 :
nobodyさん :2005/03/28(月) 17:48:52 ID:0by1676F
(・∀・)ニヤニヤ
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とエラーが出てしまいます。 何かヒントでもあればお願いします。
393 :
391 :2005/03/29(火) 04:01:37 ID:???
>>392 え?まぢっすか。
見直してみます。
どうもありがとうございます。
394 :
nobodyさん :2005/03/29(火) 10:58:39 ID:ChFumad5
ローカルフォルダにある.htmlと.phpファイルを ブラウザでFTPの様にディレクトリ表示させリンクでファイルを開きたいのですが 良いスクリプトがあれば教えてください。
あきらかにすれ違い 死ね
396 :
394 :2005/03/29(火) 13:04:39 ID:???
自己解決しました。
2次元配列$hogeを関数に送って関数内で例えば$hoge[0][0]なら(0,0,$hoge[0][0])と 2次元配列全部の要素をループで取得したいのですけど、どのようにすればいいのでしょうか? 宜しくお願いします。
2度ループ処理すれば良いと思うよ。
>>398 サンクスです。
2次元配列の添字ってどうやって取得するのですか?
>>399 マニュアル読め。
$hoge[0][0]とかで出来るけど。
foreach($hoge as $out_key => $out_value){ foreach ($out_value as $in_key => $in_value) { //ここで好きに処理汁。 } } array関連の関数を見るのも吉
>>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重ループでも当然可
}
実際のコードを書く時には、配列要素のチェック等が必要。
PHPでMySQLの操作に関するのはこのスレで良い?
>>403 とりあえず、書いてみ。
話はそれからだ。
linuxでアップロードしたファイルがupload_tmp_dirに作成されないのですが 原因として何が考えられるでしょうか? sleep()で止めてファイルを確認しても作られません。 file_uploadsOn
んじゃとりあえず聞いてみる。
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:???
自己解決・・切腹物だった・・・
>>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;
>>408 切腹する前に何で悩んでたか教えてくれ
それで笑わせてくれ
>>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 っていうものがあるのですが・・・ なんかライブラリなりコードでもいいので、 ご存じの方、教えていただければ幸いです。
ブラウザを綴じて一定期間中セッションを残したいんだが どうすればいい?
有難うございます。 何ページですか。
416 :
nobodyさん :皇紀2665/04/01(金) 01:59:08 ID:6CcmQp6c
>>415 おいおいそれはたよりすぎ。
www.php.net いって、sessionで検索。
あとはまかせた。
session はある程度の知識がないうちに公開しちゃうと、
いろいろとセキュリティーホールになるので注意
SingleHTML版のマニュアルを落としてきて、1ページ目を読む。
おいおい エイプリルフールですyo!
なるほど
おまいら、PHP 4.3.11と5.0.4がリリースされましたよ。 昨夜PHP4も5もコンパイルしたばっかりだというのに...orz
だぁ〜っ、ネタかよっ!釣られた!
>>412 error_reporting
php4は昨年と変わらず(ナディア)、php5はウサギ(?)だった
425 :
421 :皇紀2665/04/01(金) 12:41:40 ID:???
今見たら本当にリリースされてるし リリースの日付は3/31だからエイプリルフールじゃないよな
PHPのログが犬になってるのはイースターエッグだな
ログじゃねー ロゴだ phpinfo() や公式に確認可
ショッピングカートのセッションについて教えてください。 2つのブラウザで同時にアクセスすると同一セッションになりますが、 1つ目のブラウザが決済のページに入ったら2つ目のブラウザは 決済ページを表示できないようにしたいです。
430 :
nobodyさん :2005/04/02(土) 05:01:43 ID:4/Eqlz9k
PHP5はそろそろ乗り換えてもいい感じですかね。
PHP6になるまで待つのだ
5.0.4揚げ
433 :
nobodyさん :2005/04/02(土) 18:06:21 ID:55/k15cN
PHPサイトを立てようと思っているのですが、負荷テストを行いたいです。 知り合いにそういったツールがあると聞いたのですが、どんなものがあるのでしょうか?
2ちゃんで晒す
436 :
nobodyさん :2005/04/02(土) 20:25:51 ID:A7D+JrLe
phpでパスワード付きzipを作成するコマンドを発行したいのですがどうしたらよいのでしょうか。
>>436 PHPからコマンド発行するには
systemかexec関数を使えば良いよ
438 :
nobodyさん :2005/04/02(土) 23:20:20 ID:A7D+JrLe
パスワードを入力する対話型の部分はどうしたらよいのでしょう?
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; //=========================================================== どうすればダウンロードできるのでしょうか? お助けいただければ幸いです。よろしくお願いします。
4.3.11 入れたのに phpinfo が 4.3.10 だ。なぜだ。
>>442 インストールミスか、再起動してないとかじゃないの?
ソースはきちんと4.3.11になってたよ。
445 :
nobodyさん :2005/04/03(日) 13:42:01 ID:QiTsRZ7F
当方PHPを学んでみようと思ってる者です。 みなさんはどのようにしてPHPを覚えられましたか? 本でしょうか、それともネット上で?
>>445 マニュアルを読めば十分。
マニュアルはネットで配布されている。
関数が豊富に用意されているので、
まったくのド素人でも、覚えることそんなに無いかと思う。
とは言っても、アルゴリズムの一つや二つ知ってるだけでも、
かなり違ってくると思うので、本を買うのも、また良し。
(本に書いてあるかどうかは不明)
447 :
nobodyさん :2005/04/03(日) 14:00:57 ID:QiTsRZ7F
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
>>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.
全角カタカナと全角ナカグロ(・)と全角ハイフン(−)のみで構成されている文字列か否かは、 以下の正規表現ではだめなのでしょうか? どうしてもfalseになってしまいます・・・ if (preg_match("/^[ア-ン・−]+$/",$aParam["company_name_kana"])) お助け願えれば幸いです。
マルチバイト文字は mb_eregiかmb_eregを使って正規表現できる
>>451 カタカナが違うっぽい。
chr()とord()を使って文字コードについて考えるよろし。
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でも可能な方法はあるのでしょうか・・・
恐縮ですが、よろしくお願いします。
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"); ?> と記述するとエラーが出てしまうんですが、どこが間違っていますか?
なぜ <? include("../hogehoge/index.php") ?> と書かないの?
>>455 マニュアルの記述は古いので現在は実験的ステータスってのは英語版のマニュアルには無い。
preg_*はUTF8でないと正確に日本語を扱うことは出来ない。
460 :
457 :2005/04/03(日) 22:08:12 ID:???
>>458 以前その書き方をした時にエラーが出て、457のような書き方を知ったんですよ。。
でも今それを試してみたらできました。
よくわかんないけど解決しました。
ありがとうございました。
>>460 その環境のセーフモードに関わるあたりの設定か、
その当時の(PHPのセーフモード絡み)バグかと思われ。
# セーフモード絡みのバグは結構多い。
462 :
nobodyさん :2005/04/04(月) 00:28:53 ID:/X5zJ+6W
ob_start()っていみあんの? マニュアル読んだけどポンとこないいだなぁ どんなとき使うの?
>>463 ob_start();
curl_exec($ch);
$str = ob_get_contents();
ob_end_clean();
バッファリングする必要はある?
>>465 curl_exec()はphpinfo()等といっしょで、実行すると(通常は)標準出力に垂れ流しちゃうから、
こうやってバッファリングでキャッチするしか、その出力を変数として取得できないんよ。
curlって普段使ってないんですけど、あまり関係ないかなぁ こんな使い方で着ますか? header("location...."の出力の前になにか出力されていると エラーになるけどob_start()使えば大丈夫?
>>467 header前に出力してしまうような仕様を見直したほうがいいぞ。
不意に出力してしまうのを回避ってなら、ob_start()前に出力してしまう可能性もあるわけだし。
あと、某スレへの誤爆してしまったものだがw
> 881 名前:nobodyさん[] 投稿日:2005/04/04(月) 03:08:04 ID:Es2o76gF
> PEARのエラーハンドリングもob_start()でphpが出す
> エラーメッセージをそのまま出力しないように取り込んでるね。
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モジュールでも値が取得できません。 これらの値はどういうときにセットされるんですかね?
>>469 CLIは無理だろ。サーバモジュール版で取れない理由は判らんが、
サーバ側がセットしてないからかな。mod_envを入れてないとか。
471 :
447 :2005/04/04(月) 10:43:04 ID:???
>>456 わざわざありがとうございます!ここの板の方は親切な方ばかりで。
本家のマニュアルを参考にしてPHPを使いこなせるように精進します。
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が
返ってくるので有効になってないということですかね。
>>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']
ユーザーエージェントが送らないとセットされない
$_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') で代替するかな。
質問です 例えばtest.phpがあったとして そのソースの中にtest.phpを読み込む記述をしたら無限ループしちゃうの?
やってみれば?
>>481 2chに書き込んでいるマシンにPHPを入れて試せばいいやん。
別にApache入れたりせんでもコマンドラインで試せるでしょ。
無限ループになる可能性があるならinclude_onceを使うのが正しい方法
無限ループを起こすと PHP がスクリプトに強制停止命令を出してると思った
>>484 そんなことは無い。
xdebugかましてたり、php.iniで実行時間の上限を設定していたら別だが。
質問です。 以下のxmlスクリプトをsimpleXML関数で読み込み、 <root> <p>ああ</p> <p>いい</p> <comment>アア</comment> <p>うう</p> <comment>イイ</comment> </root> これを上から順に、以下のように出力したいのですが、どうすればいいのでしょうか? ああ いい アア うう イイ
filesize()やgetimagesize()を使うときに fsockopen()みたいにHTTPヘッダを自分で用意することはできないのでしょうか? もしくはfsockopen()でソケット接続ときに上の関数で取得する方法 またfilesize()を使ってからgetimagesize()使うと URLに2回アクセスすることになるのですが、 1回のアクセスで同時に取得することは可能ですか? 分かる方がいたら教えてください。
>>487 リモートのファイルを取得してローカルの/tmpに保存。
そのファイルに対して各関数を適用すればいいんじゃないの?
httpのheadリクエストでも取得できる場合もあるけども。
>>478 俺はチャレンジャーなのでやってみた。
winxpsp2
コードは下記
<?php
include "incl.php";
?>
結果はページは表示されません、っとでます。
ちょっと期待してたのに詰まんないので、下記もやってみる。
<?php
echo "a";
include "incl.php";
?>
一緒だったorz
500? 403?
Perlのuse strictに相当するものってないんでしょうか?
>>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を行わなければ問題なく改行コードを 除去できるのだが、何故?
>>491 ないけど、エラーレポート最大に上げれば結構厳密なチェックが出来るよ
cronから-fで起動した時だけに PHP Warning: Unknown(): Unable to load dynamic library のエラーが出ます。普通に起動した場合はちゃんと動きます。 どんな理由が考えられるでしょうか。どなたかお助けを・・・。
>>495 環境変数の関係でphp.iniを指定してやらなならんのですバイ。
>>493 自分の環境ではちゃんと削除されました。
WinXP PHP5.0.4
Linux PHP4.3.10
>>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はいらないか
>>497 ありがとうございます。
php自体は動くようになったのですが、今度はpostgresが動かない。
configureの確認かな・・・。
くだ質スレ向きかもしれないけど・・・ phpinfo()で表示される Thread Safety disabled ってPHPのこといってるんでしょうか。
>>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から使えるようにするにはどうしたらよいのでしょうか?
>>504 ありがとう。
このオプションを付けてメイクしApache2と組み合わせれば、スレッドセーフな
PHPが利用できるということですか?
今はApache 1.3の環境しかないので週末にでも試してみます。
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を使っています。
↑の2行目の " は " のことです。 '<mojiretsu>moji"retsu</mojiretsu>'
>>510 ><mojiretsu>moji"retsu</mojiretsu>
そもそも、これはXMLの仕様で許されるのか?
CDATAセクションでもなしに。
>>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:???
空白(半角スペース)を に変更する関数はありますか? addslashesみたいなのキボン
517 :
516 :2005/04/06(水) 15:52:37 ID:???
もう一回 空白(半角スペース)を&nbspに変更する関数はありますか?
つstr_replace
>>514 どうもです。
それをしてもこうなるんですよね。
バージョンの問題か、OSの問題か、php.iniあたりかということですね。
array(1) {
[0]=>
array(4) {
["tag"]=>
string(9) "MOJIRETSU"
["type"]=>
string(8) "complete"
["level"]=>
int(1)
["value"]=>
string(9) "mojiretsu"
}
}
>>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
全部結果は同様にちゃんと出てる。
>>519 やっぱ
>>521 だわ。
-PHP5.0.3(Windows)/libxml2 2.6.11で再現確認。
-PHP5.0.2(Windows)/libxml2 2.6.11では問題なし。
<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が表示出来るようにしたいのですが、***のスクリプトが わかりません。どなたか教えて下さい。
<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 ---------------------------------
<form action="test.php"method="post>
選択名<BR>
<select name="num">
・
・
・
---------------------------------
[test.php]
<?php
echo $_POST['num'];
?>
---------------------------------
>>525 それだけで1.2.3表示できるようになるんですか?
有難うございます。早速試してみます。
javadocやdoxygenみたいにソースからドキュメント起こせるツールってある?
>>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");
}
?>
あっていますか?
(´-`).。oO(あってるかどうか試してから書き込めよ)
>529 間違っています どこかのブラウザでどこかの鯖なら間違って動く事もあるかもしれないが。 ってかそれだけの事だけだったらJS使えば?
>>520-522 ありがとうございます。ピンポイントでバギー版にあたっちゃったんですね。
お世話になります。 htmlのformで注文情報をpostして値をチェック 入力不適切なところがあれば前のページへ戻すのですが、 そのときに値が消えてしまいます。 どうすればよろしいのでしょうか。
>>533 > 前のページへ戻す
の所を、適切入力の項目を初期値として設定したものを表示する。
お世話になります。 了解しました。
>>533 <input type="text" name="hoge" value="$_REQUEST['hoge']">
>>536 おいおい。クロスサイトスクリプティングってしってるか?
hogeが "><script... とか?
$_REQUEST['hoge'] = htmlspecialchars($_REQUEST['hoge']); ぐらいしてるだろ。
世の中、悪さをする奴が悪いのか、それとも悪さをされる奴が悪いのか(--;
>>541 そりゃ悪さする奴が悪いが、悪さされたことにより
それが誰かに被害を与えれば、被害を与えた奴が(も)悪い。
ある程度同情はするが免責はせんよ、自分が被害者なら。
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 です。 何か思いつく方おられましたら教えてください。よろしくお願いいたします。
全角スペースでもはいってんじゃね?
>>543 鳴かぬならぶち殺してしまえ、そのスクリプト。
APCとかZendのプリコンパイラとか最適化ツール使ってない?
>>543 if文の前に問題があるんだと思うぞ。
なんか閉じ忘れてるとか、セミコロン無いとか…
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"; } } }
>>584 下部にSn Uploaderのようにディスク使用量を表示するスクリプトを追加する
>>548 echo 'ディスク使用量'.exec('du img').'バイト';
>>550 の記述を追加してみましたが、できませんでした
543です。 どうもありがとうございました。 547さんに教えていただいた方法を元に虫潰しにかかりましたが、 今度は別の行でひっかかって動きません;; 想像を絶する見落としなんですかねぇ・・・ 問題ないように見えるし、元は4.0.2でちゃんと動いていたものなのですが・・・・・ プンスカ >545 業者納入なので判りませんが、フツーにしか入れてないと思います 早くしないと旧機が持っていかれてしまう;; 焦りまくりッス 愚痴スマンです。 ありがとうございました。
554 :
nobodyさん :2005/04/07(木) 19:38:04 ID:vs0utpq/
晒しなさい。
>>553 無償なんで普通に入れてたりしますが。
# まあ運用上は有益だけど問題が出るケースもあるから、
# 依頼されなけりゃ入れないが正解だが。
phpinfo()で入ってるか簡単に判るので念のため確認しとき。
何にせよ自分が使ってる環境を本人が認識できてないなんて、良くないことなんだから。
PHP4.3.9ならPHP Accelerator(PHPA)か、Zend Optimizerのどっちか。APCはない
ログファイルに書き込むときに、 設定した行数を超えたら最初の行を消すようにしたいのですが、 全部書き換える以外にいい方法はありますか?
>>556 シーケンシャルな仕組みを使う以上、ない。
だよね、どうもありがとう
おいおまいら! スクリプトはシフトジスで書いていますか? もれはいままでEUCだったけど、なんかスクリプト書くの ウィンドウズだしシフトジスでいいかなぁなんて思えてきた。
>>559 -enable-zend-multibyte
なら、お好きにどうぞ。
>>559 さんどうもでつ
mbstring.internal_encodingがeucでhtmlのencodingがシフトジス
でphpの記述がシフトジスで問題ないですか?
Shift_JISで書く意味なくね?俺はEUCでずっと書いてる
mvcになってねぇ デザがシフトジスでhtlm作るんだよ。 そーするとスクリプトとhtmlですげー厄介 HTML_QuickFormではスクリプト内でformのアトリビュートとか 設定するでしょう、
>>563 どちらにせよデザの持ち込むhtmlは、文字エンコードも
改行コードも信用ならんので、間に一括変換噛ますでしょ?
改行コードはあんまり気にしてないっす。 でもさぁ EUCにするメリットはあるのか? いままで鯖のロケールがEUCだったので合わせてたけどね。 クライアントからscpでアクセスしてウィンドウズから ソース見るしね。 気になるのがDBへのインサートかな。おもにMYSQL使ってんだけど mysqlの文字コードはどーなってのか心配・・・・
WEB関係はUTF8に統一した。
好きなの使えば良いさ
>>566 裏山椎茸
漏れも速くUTF8に移行したい。
スクリプトはEUCに統一してたんだが、
OSがUTF8な物が増えてきた。
utf-8にした場合、phpmyadminで文字化けしない?
,. ─- 、,,.___
,イ〃 `ヽ,__
. N. {' \
. N. { ヽ
. N.ヽ` 〉
N.ヽ` ,.ィイ从 /
. ヾミ.___-‐=彡'ノノノ__,ゞミ=-_rく
lrf´ゞ"モ=ヾーf =モチ<}rv^i !
ヾト、` ̄,り「弋!  ̄´ノ ソ
!  ̄ ii{_,.  ̄ /r'´
. ┌────────────‐┐
.| .|
,. -‐ '| .|
/ :::::::::::|
>>569 .|__
/ :::::::::::::| おまいはとんでもない rニ-─`、
. / : :::::::::::::| 考え違いをしているようだ `┬─‐ .j
〈:::::::::,-─┴-、 |二ニ イ
. | ::/ .-─┬⊃ |`iー"|
.レ ヘ. .ニニ|_____________.|rー''"|
〈 :::::\_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::: |:::::::: /::::::::::::|
>>565 SJISの場合は、PHP処理の内部で変換が何度も掛かるので効率が悪い。
(Zend Engineがそのまま扱えないため)
EUC-JP/UTF-8はそれがない。ケータイ向けであっても全部SJISで扱わずに、
最終的な出力でSJISにしてやるのが良い。
という理由はあるが、--enable-zend-multibyteして適正に
mbstring関係設定して使うのなら、別に構わんと思うよ。
判ってて使ってるんだから。理解しないで文字化けがとかが一番ウザイ。
>>565 MySQLのバージョンなんぼからだったかは忘れたけど、SJIS対応してるから
SJISに設定すれば問題なく使えるよ。もちろん全く問題なしというわけではないが、
携帯向けの開発中心にやってる俺からすれば、デメリットよりもメリットの方がかなりデカイ。
573 :
nobodyさん :2005/04/08(金) 11:54:02 ID:KGAjK1pc
register_globals=on の状態なんですが フォームの適当な箇所でEnterを押すと 複数あるsubmitボタンの表示が一番上の値が取得されてしまうのですが これを下のsubmitボタンの値を取るように、又は値を取らないようにするには どうしたらよいのでしょうか?
>>573 ブラウザの仕様だからPHP側ではにゃんとも
>>573 <input type="submit" />じゃなくて<input type="button" />にしてやれば
Enterを押しても送信されない・・・と思う。
ビルダーでPHPスクリプト作れますか?
外部JavascriptをPHPで吐くようにしたんですが、 FirefoxやOperaでは問題ないのにWin-IEでは実行されません(画面真っ白)。 スクリプトの内容は単なるdocument.writeの羅列です。 同じ内容のJavascriptを普通のjsファイルに書いて読み込めば実行されるのですが・・・ また、そのPHPファイルを直接IEから呼び出すとちゃんとダウンロードされます。 何かIE特有の注意点等ありますでしょうか?
>>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もやってみましたが同じでした(´・ω・`)
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>
[HTML] <script type="text/javascript" src="test.php"></script> [PHP] <?php header('Content-type:text/javascript'); print 'document.write("テスト")'; ?> でうまくいくんだが(IE6SP1)
<title>タグにphpが吐くソースと違うエンコーディングの文字が入ってたのが 原因でした・・・3回ほど吊ってきます・・・どうもありがとうございました orz
参照渡しわからんです。 function Hoge(&$arg) これと function & Hoge($arg) のちがいわなんですか>?
589 :
nobodyさん :2005/04/08(金) 20:45:48 ID:PH5IR/1K
動画からサムネイル画像を吐き出すようなライブラリってありますかね? 探してもなかったもんで・・・
591 :
nobodyさん :2005/04/09(土) 01:45:25 ID:BWP/VWku
ファイルを取得→保存→一定時間ごとにファイル更新 こんなことがしたいでつ こういうのを組むのに参考になるサイトだけでいいんで教えてください
>>591 unix系なら cronjob で好きな時に wget --mirror すればいいだけだろう。
windowsは知らない。
>>593 リファレンスによる返り値でマニュアル読んでたんですけど
わからないです。
マニュアルには リファレンスを返すことは、結合する変数を見付けるために
関数を使用し たい場合に便利です・・・
pear のMDBとかはじめのconnectionなどで使われています。
結合する変数・・・ うーん難しい
日本語訳で意味が掴み辛い時は、原文を読めばよい。 Returning by-reference is useful - リファレンスで値を返すことは便利だ when you want to use a function - 関数を使おうとする時に to find - 見つけるために which variable a reference should be bound to. - どの変数をリファレンスと結びつけるか リファレンスで値を返すのは便利やねん。 どんな時に便利かつーとな、どの変数をリファレンスと結びつけるかを関数でやろうとする時やねん
質問させて下さい。 レンタルサーバーのさくらで、PHPを使ったサイトを作ってます。 2年間、問題なくうごいていたのですが、何の変更も していないのに急に動かなくなりました。 さくら側で何か変更したのかと思いきや 何もしていないと言われました。 唯一変更したとすれば、アパッチのmod_rewriteを使用できるように しました。。。とだけ言われました。 質問が抽象的ですが、いままでうごいていたのに うごかなくなった場合、どこから手をつけていけば良いのでしょうか?
どう動かなくなったのかも分からない?
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); もう一つは フォームからのデータの受け渡し系が うまく作動しておりません。 またまた抽象的なのですが、 どこから手をつけていくと、原因を発見できるのでしょうか?
管理者とサポセンとは認識が違うだろうけど途中からregister_globalsを変更するとは 思えないんだが・・・ データをあげてphpinfo見てみそ
テスト運用って有料ユーザーでやる事なのだろうか?_?
602 :
596 :2005/04/09(土) 13:01:48 ID:???
>>599 本当にありがとうございます。
早速、見て見ました。
すると、 register_globals が OFF
でした。以前は ON が仕様でしたが
いつのまにか OFF に・・・・
おいおい 連絡してこいよ
と思いましたが、まぁ原因が分かったので
よかったです。
私のサイトはONじゃないとうごかないものが
ほとんどでして・・・・
ON が OFF になる。
これだけで大きく被害を受けました。。。。
mod_rewriteが怪しいと思うなら、htaccessあたりでRewriteEngine offにして動作確認するとか。 オイラなら素直にスクリプトのデバッグをするけども。 きちんとエラー処理をしてれば速攻で問題個所を絞れそうな・・
すいません、現在のアンカー位置(<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に格納出来ません。 何か良い方法は無いでしょうか?
いったいなんでそんな事をするのか逆に質問したい
607 :
nobodyさん :2005/04/09(土) 13:25:32 ID:SXkH7OvC
>>606 MySQLのリファレンスに、インデックスを使う際は対象となるデータの桁数が短いほうが良いと書かれていたからです。
データ容量も落とせると思うし。
>>604 そもそもブラウザが#以降の文字列を鯖に送出していない。
ブラウザのhttpリクエスト・レスポンスヘッダを見るツールがあるのでそういうので確かめてみるとよい。
ieHTTPHeaders、proxomitron、パケットキャプチャー等。
>>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使用量の増加になってしまうので、
やはり一つの文字列として一つのフィールドに格納したいのです。
メモ帳でphpファイルを作ってみましたが、ファイル名は××.phpでよろしいでしょうか? アップしたときに××. php.txtと出ますが、問題ないでしょうか?
アップしたんなら開いてみれば問題あるかないか分かると思うけど。 普通にphpファイルとして動作させるのなら.txtは要らない。
>>612 アップしたらファイル名にtxtと付くんですよ...
何故でしょう?
>>613 メモ帳で保存した時についてるんじゃ?
アップしたあとでもファイル名変えれば良いだけ。
CGIを使っているけどユーザーには使わせない鯖なんじゃねぇの
>>608 ああ、そうなんですかわかりました。
ありがとうございます
617 :
596 :2005/04/09(土) 16:18:04 ID:???
register_globals ONにしたら なんなくうごくのですが、 危険ですよね。。 でも引数ってregister_globals OFFだと どうやって渡すのですか? register_globals ONでしかうごかない プログラムしか掛けません。。 どなたか、OFFで動かすテクニックというか そんなサイトにでも誘導していただけませんか・・・
>>613 えっ!?
アップ先のファイル名っつ変えられるんですか?
よろしかったか仕方を教えて下さい!!
ファイルマネージャかFTPソフトにそういう機能が付いてると思う。
ワロタ
>>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 もよろしくお願いします。。。
>>625 その数値がどれくらいユニークなのかは知らんが、先頭の数バイト分だけ
インデックスを作成することもできるよ。
alter table hoge add index (column(4))
見たいな感じでね。
ま、しかしHDDのお値段と復号やらなんやらの手間とを天秤にかければ・・・
てなことも考慮した方が良いのでは。
>>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()だけでいいですよね?
>>629 ファイルをダウンロード(orアップロード)させたいんでしょ?
プロトコルにhttpを使うかftpを使うかは関係なく、
urlを直打ちしてダウンロードさせなければよいのでしょ?
そのための認証ページを作るという意味なんだけど・・・
コンテンツ事の認証にユーザーIDの空ファイルを利用しようかと想うのですが サーバーとしてファイルの数が多くなるというのは良くないのでしょうか?
最近学習始めた初心者です。 クラス概念が有る様ですが、ディストラクタの起動する要因が判らない ので、知っていたら教えて下さい。
>>629 ちょっと書き方がわるかった。
要はhttpでもftpでもいいが、ユーザがアクセスできるところにファイルを
置いては認証もへったくれもないという事。
だからダウンロードさせるファイルはブラウザでアクセスできない場所へ
置いておいて(※)、ダウンロードのページではまず認証状況を確認し、次に
phpを使ってファイルを読み取り、ftpのヘッダと共にファイルを送信してやる。
とこういう流れになるかと。
※たとえばApacheでDocumentRootを/usr/local/apache/htdocsにしてるなら、
/usr/local/apache/Download(適当)/に置いておけば、url直うちでは
たどり着けない。
みんなもうphp5に移行してんの?
>>636 PHP5に対応したcacheってあったっけ?
あればそろそろ移行してもいいかな。
638 :
633 :2005/04/10(日) 00:31:17 ID:???
>>635 どうやったら消滅するのですか?
unset? それとも、die?
>>636 SOHOとしてはレン鯖とかホスティング鯖に普通に入りだしたら移行
っつーか移行せざるを得ない、結局みんなが使い出したらかw
>>640 同じく...なんだけど、php3->php4のときは共存できたので、
未だにphp3のままのところがあるわな。
php4とphp5は(通常)共存できないので、中小企業向けレン鯖は当面php4のままだろう。
レン鯖のphp5対応鯖に新規or乗換する蔵が出てくるのはいつのことなんだろう。。。
>>637 Zend製品は対応してる。PHPAは全然動き無いし、
MMcacheは開発休止してる。
スクリプトキャッシュじゃないけど、VM最適化パッチはかなり効くね。
PHP5.1だけじゃなくて、PHP4.4とかで入れてくんないかな。
XREA鯖はPHP4 5 両対応
644 :
nobodyさん :2005/04/10(日) 12:59:48 ID:jGzXhnVH
「中田様、小野さん、中村選手、用務員、警備員、柳沢様」(、区切り) これを↓で変換すると $message = preg_replace( "/(.+?)(選手|さん|様)?$/" , '$1選手', $message); 「中田選手、小野選手、中村選手、用務員選手、警備員選手、柳沢選手」 となってしまいます。 「中田選手、小野選手、中村選手、用務員、警備員、柳沢選手」 となるように(語尾に「選手」「さん」「様」がついていない場合はそのままにしておくように) するには、どのように書き換えたら良いですか?
>>644 mb_ereg系を使って方がよさげ。
$message=mb_ereg_replace('([^、])(選手|さん|様)' , '\1選手', $message)
646 :
nobodyさん :2005/04/10(日) 13:46:51 ID:jGzXhnVH
>>645 お答えありがとうございます。
ごめんなさい、mb_ereg_replaceのように実験的なステータスにある関数は使えないんですよ。
>>646 そうなのか。いっそ単純に
$message=preg_replace('/(さん|様)/' , '選手', $message);
でいいんじゃね。
>>644 も「、」が区切りと認識してないし。
何度もスマソ。 こう書くと区切りの「、」がそれなりに機能するかな。 $message=preg_replace('/(さん|様)(、|$)/' , '選手$2', $message);
649 :
nobodyさん :2005/04/10(日) 14:14:59 ID:jGzXhnVH
>>647 >>648 出来ました。
そうでした。なんか難しく考えすぎてたみたいでした。
ありがとうございます!
2次元配列があるのですが、 2次元目の配列の個数で、 1次元目をソートすることはできますか? ランキングっぽいことをやろうとしているんですが…
ア… multisort使えば出来そうですね おさわがわせいかましt お騒がせしました。
最近のプログラマは自前のコードでソートプログラムすら書けないのか・・・ なんというか、質が落ちたな・・・
それは初心者ですらできなきゃいけない事なのですか?
自前でやるより処理が早い事もあると想うが?
>>654 「効率的な」とか「高速な」ソートを作るという訳でなければ、
要するにアルゴリズムが理解できないプログラマといえる。
まあ色んなプログラマがいるからソートの仕組みが組み立てられない
ことが即駄目プログラマとは言えないけど、概ね駄目。
なんでも便利な関数でやっちゃうのが抵抗あるんでしょ。それくらい頭を使え、と。 変なたとえだけど、鉛筆をカッターで削ってた時代の人が、機械でガ〜〜ってやってる若者を見て、今時の若者はカッターも使えんのか、みたいな感じなんだよ。
そういや昔、便利な関数の存在を知らずに自分で作ってた事あったなぁ そんな経験ない?
しかし自前のコードがすらすら組めるなら 質問スレなんて必要ないわけだが。 PHPが普及してきたからこそ、質問スレは盛り上がるし 質問は増えてくるのに、それをみて レベルが下がったというのは如何な物か。
みんな色々な質問したり、発見したりして成長していくんだからさ。
>>653 こういう事をさらさら言えるほうが、人間として質が落ちてる気がするよ。
>>659 うん?平均的にレベルが下がったのは事実だよね。
いいんじゃないの。平均が下がったお陰で
マニュアル読まずにこういったスレに書き込んでも、
怒られることもなしに誰かしら教えてくれるような
環境が出来た訳だから。英語が読めなくても誰か
翻訳してくれるしね。
それでいいとおもう
なんか根っからの職業プログラマ…っていうかおっさんが混ざってるみたいだな(w 給料いくら?
30半ばのおっさんなので70マソ/月。職業プログラマではない。
給料70万ももらってるやつが 2chのこんなところにいんなよpu
リーマンで30半ばで70万なら良い方だな?職業何?
俺の知り合いの奴らなんてみんな月の手取り30〜40ぐらいでひ〜ひ〜言ってるが、普通はそんなもんだろ。
俺はリーマンやったことないから分からんが。
知り合いに
>>653 みたいな事を言う職業プログラマがいるんだが、年収350万ぐらいだって聞いて
なんか惨めだな〜と思って。
俺は大学時代な〜んも勉強せずに、5年程前フリーターやりながら趣味で覚えたperl⇒PHPレベル。
今年の確定申告で250程国に貢いできたといえば、年収も分かるだろ。
大した事はないが、それでもそこらのリーマンよりはよっぽど稼いでるわけで。
何が言いたいかというと、くだらん事にこだわらずに効率よく結果を出しゃぁいいんだよって事だ。
苦労せずとも結果が出せるに越した事はない。
自己満足の世界に陶酔しても、金が稼げるわけでもなし。
>>665 携帯関連とか株関連の板見た事無いみたいだね。
年収1000万程度(スレによってはカス扱い)の奴なんか腐る程いるぞ。
スクリプト言語の特性上 どんどん便利になっていくし使う人への敷居も低くなっていく でもそれを先人が「使う人間のレベルが下がった」だけで 割り切ってしまうのもなんだかなあ
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で統一しています。 誰かいい解決方法を知っていたら教えてください。 よろしくお願いします。
インディーズの頃好きだったバンドがブレイクしちゃって 昔はよかったとか、今はミーハーなファンばっかりだとか言う奴いるけど そういうのと同じじゃない?
雑談はいい加減にして質問か回答しろよ
ごめん。
>>668 ファイルの所有者を変更できるのはふつうrootだけ
というわけで別の方法を考えた方が良さそう。管理者にgidで
チェックするようにしてくれって頼むとか。
$str = abcdefg.hoge.tokyo.ne.jp ereg_replace("^.+?\.","*****.",$str); これで下の様に頭の部分を隠したいのですがエラーが発生してしまいます 何かPHPの記述方法があるのでしょうか? *****.hoge.tokyo.ne.jp
フォルダごとにディスクの容量を計算したいですが、うまくいきません。 フォルダの残量は disk_free_space を使って表示できたのですが、 使用量をどのようにして表示させようか悩んでいます。 ちなみに、PHPはセーフモードで動いています。 $dir_space = `du -sb ./test`;も使おうとしましたが、うまくいきません。 ご教授よろしくお願いします。
確認していませんが ereg_replace("^[^\.]+(\..+)$",\\1 ,$hoge) 質問です ファイルに書き込みをしていますが fputs($fp, 'うんうん'."\n") を2回繰り返しても改行されず「うんうんうんうん」になってしまいます。どこがおかしいのですか?
>>675 ドットの否定で逝けましたヒントありがとん
ereg_replace("^[^\.]+","*****" ,$str);
1. \n --> <BR>
2. \n --> \r\n
とかかな
$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は事象の再現性がヘンな時が多々ありますが、「そういうもの」なんでしょうか?
数値が入った二つの変数を、足すのではなく繋げる方法はありませんか? 例えば $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 ↓スクリプト実行 鈴木 佐藤←合格 田中←合格 山本 このような結果を出すためにはどのように書き換えたらよいでしょうか?
>>678 そういう値が欲しいのなら素直にシフトさせてandを取る。
二進数表現の文字列が欲しいのならsprintf("%b%b",,)
>>679 ハット記号はその場合否定じゃなくって行頭になる
多分こんな感じかな
preg_replace('/([^1])$/', '¥1<-合格', $text)
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で
何とか解決しました。
$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のエンコーディング指定によってエラーが起こらないもの そもそもエラーが起こらないものの違い
HTML_QuickFormで $name[] = &HTML_QuickForm::createElement('text', '姓', null, '姓'); $name[] = &HTML_QuickForm::createElement('text', '名', null, '名'); $form->addGroup($name, 'name', '名前', ' '); こんな感じでテキストフィールドの前にラベル付けたいんだけど、 できなかった毛?
>>684 $renderer = & $form->defaultRenderer();
$renderer->setGroupElementTemplate('{label} {element}', 'name');
てな感じで可能かと。
group.phpのtoHTML()の中で、上と同様の処理があって そこで{element}だけにしているので
elementのラベルが消えてるんじゃないかなぁ。あんまり自信ないけど。
アンケートを作ってみました
<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>
内容を一度確認して送信するようにするには、どうすればよろしいですか?
Ruby 界隈で Ruby on Rails が話題になっているけど、 PHP でも欲しくね?もうある?
必要と感じないので自分で作ろうとは思わない。 使いたくなったらRubyを使えばいいだけだし。
携帯の各機種ごとに分かれて位置情報を習得したいのですが どうすればよいでしょうか? 思いつきません・・・
>>690 習得するなら、一生懸命勉強せよ。
取得したいなら、各キャリアごとに情報を収集せよ。
>>685 さんどうも。
もれHTML_QuickForm_Renderer_Object使ってるから、
そのソメッド使えんみたいだわ。
QuickFormやめて、Flexyおんりーにするぽ。
すいません、 perlの正規表現ではカッコで括ったところがマッチすると、 $1,$2という変数に格納してくれるという便利な機能がありますけど、 phpで似たようなことは出来ますでしょうか。 具体的には 2005/04/09(金),01時12分00秒,ほげほげ という形のデータを [01:12:00],ほげほげ という、時刻とテキストだけの形に直したいんですが…。 自分ではカンマでsplitして、substrで何回かに分けて時、分、秒の変数を作って 後でそれをくっつけるという処理しか思いつきません。 どなたか簡潔な方法を知っていらしたらよろしくお願いします。
preg_match
\\1 〜 \\9
あ、eregの話ね。
>>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:???
あ、できました、ありがとうございます。
pg_insertで、複数行同時追加ってできますか?
700 :
697 :2005/04/12(火) 23:47:03 ID:???
ああ、この\\1とかってperlの$1とかみたいに変数じゃないから次の行まで値を保持したりできないんですね…。
つ print_r($hoge);
おいおまいら! 漏れはセッション使用するときに session_cache_limiter('none'); こうやって設定しているんだが、これはセキュリティーホールになりますか。
例えば掲示板のプログラムで記事投稿フォームを作る時、 フォームから投稿内容を受け取り記事追加処理をするphpファイルを新たに作るか、 それとも外部ファイルに記事追加処理関数を書いてその関数を呼び出す形を取るか、 どちらがいいと思いますか?あるいは他にもっといい方法がありますか?
自分が書きやすい方で。
関数には引数に応じて処理を分ける物があるけど、ああいうのって中で普通にswitchとか使ってるの? もしそうだと、どの処理をする時にもswitch処理が必要になって それなら最初から関数を分けてしまった方が処理が速そうな気がするんだけど。
>>704 レスありがとう。
ファイルにするとユーザーとの通信の手間が入ってくるわけでその点が余計な負荷になる。
外部ファイルの関数にすると、もしかしてその関数を使わない場合でもメモリに外部ファイルがロードされてしまうのかと思うと
フォームを開いただけで投稿処理をしなかった場合に無駄になる。
単純に書きやすい方で選ぶというだけでは無い選択肢だと思うんだが。
>>705 関数が増えると関数を特定する処理に選択肢が増え(ry
ていうかそれくらいのこと、処理速度にはほとんど影響ないだろ
気にするな
>>706 おまえもその程度の負荷は気にするな
>>703 関数を呼び出す手前で require_once() する。
ユーザーとの通信の手間って何のこと?
>>706 いいぞ ベイべー!
負荷をかけるやつは普通のプログラムだ!!
負荷をかけないやつは何もしないプログラムだ!!
ホント 戦場は地獄だぜ! フゥハハハーハァー
>>705 処理の多くが他のユーザー定義関数と「かぶる」場合、「かぶらない」部分だけ
switch〜caseなんかで分岐させれば、コードを短くできる。また「かぶる」部分
に何らかの修正が必要となった場合、関数1つなら1つ修正すればいいだけだが、
関数を分けていれば全部を修正しないといけない。
>>706 もだけど、処理スピードなんて気にする暇あったら、もっと他に考えなけ
ればいけない事があるんではないの?と俺は思った。
>>706 そこまで気にするなら、投稿処理の時だけ該当ファイルをrequireすればいい。
CPUやメモリの負荷率見れるなら見てみ。
全く気にする必要のないレベルに間違いない。
711 :
nobodyさん :2005/04/13(水) 13:42:08 ID:y+S//+Zc
初心者でスマソ。 phpでブラウザのjavascriptがonになっているかどうかは、確認できるの?
>>711 JavaScript(の適当な命令)がphpを呼び出せればJavaScriptを使える
(少なくとも呼び出しに使ったJavaScriptの命令が使える)、つー方針でなら可能かと。
オイラはそんな面倒なことをしたくないので、ブラウザ側でJavaScript利用可・不可のチェックをさせるけど。
それっぽいスレは別に有るみたいですが、そこまで専門的な内容では無さそうな故、 こちらのスレで質問させて頂きたく思います。どうか宣しくお願い致します。 自分は今現在、趣味の範囲と見様見真似で「見た目が 2ch 型」のソレらしい掲示板を 自力で作り、一通りの動作確認を終えて、ソースコードの整理をしているところなのですが、 自分の思い付きで書いたコードが今一つしっくり来ないと言うか、もっとスマートな書き方が 出来ないものかと少し悩んでいます。 実際に真似をし始めて初めて知った 2ch 型掲示板特有?の妙なレス番指定方法 (/l50 とか /-50 とか) の文字列に対応させる為、 preg_match("/^(\d+)$|^l(\d+)(n)?.*$|^(\d+)(n)?-$|^-(\d+)(n)?$|^(\d+)(n)?-(\d+)(n)?$/",$string,$result); という様な正規表現を指定し、$string 中に有るレス番指定文字を $result に取り込んだ 後、配列 $result の個数とその中身によって処理を分岐させる様な事をしています。 これらをもっとスマートに書こうとしたら、一体どの様にすれば宣しいのでしょうか?
>>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';
}
}
}
すいません、あるutf-8のcsvファイルを開いて同形式のデータの置換作業をしてるんですが、 頭から置換の「^」を使って行頭から置換していると、 なぜかファイルの先頭の最初の一行だけマッチしません。 何かファイルの先端を示す不可視文字のようなものがくっついてるんでしょうか。 出来ましたら対処方法など教えて頂けたらうれしいです。 よろしくお願いします。
>>716 ああ、ややこしそうですね。
とりあえずデータの形は全部一緒なので、
あまり意味のない保険かけずに
「^」の先頭マッチは外しておきます。
ありがとうございます
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 自分としては、その辺の処理を正規表現で実現しているのかと思い込んでいたの
ですが、実際にはそんなに難しくない文字列操作関数だけでも十分なのですね。。
具体的な例を示して頂けた事も有って、その仕組みが良く理解出来ました。後は、
自分で組んでいるコードに合う形に直した上で拝借させて頂きたいと思います。
素早い返答を頂きながらも、こんな時間になるまでレス出来ず、申し訳有りません
でした。そして、ありがとうございました。
>>718 see RFC 2616.
post-check pre-checkはIE専用の拡張でMSDNに説明があったかと。
721 :
711 :2005/04/14(木) 11:23:50 ID:???
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' - 指定されたモジュールが見つかりません。 どうかご助力お願いします。
>>722 「指定されたモジュールが見つかりません。」
声を出して読んでみて!。
php_mysql.dllを検索してディレクトリを探し、そのディレクトリを
extension_dirにセットする。
窓ではディレクトリではなくフォルダか。
それにそんな事で悩んでいるようではtsファイルの移動も怪しいな。
Windowsで悩む奴の気がしれん・・・。
>>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 移動で動きました、ありがとうございました。