【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0358nobodyさん
2007/04/05(木) 14:46:06ID:ln1txq/Nんで、ApacheにDLしたPHP置いてみた。
ドリームウイーバで送信先メールアドレスだけ書き換えた。
Fatal error: Call to undefined function mb_convert_encoding() in C:\Program Files\Apache Group\Apache2\htdocs\sendmail.php on line 148
0359339
2007/04/05(木) 14:46:53ID:???0360nobodyさん
2007/04/05(木) 14:58:52ID:???$str = "あいうえお";
$str = mb_convert_encoding($str, "euc-jp", "utf8");
0361nobodyさん
2007/04/05(木) 15:05:02ID:???extension=php_mbstring.dll
php.iniに↑みたいな設定がWinだといるらしい
そのエラーメッセージでググったらぞろぞろでるぞ
0362nobodyさん
2007/04/05(木) 15:07:36ID:???>>このフォームは、"sendmail"のみに対応しています。
おまえの使ってるレンサバがsendmailに対応してるのか確認。
誰も答えるやつがいなかったらおれがこたえてやるがいまから仕事だから遅くても怒るなよよ。
0363nobodyさん
2007/04/05(木) 15:20:00ID:ln1txq/Nそれは多分初期設定時に
;extension=php_mbstring.dllをextension=php_mbstring.dll
になおせって説明かと。。
>362
ロカルでもむりなん?
鯖設定みてくる
0364339
2007/04/05(木) 15:24:11ID:ln1txq/N書いてない悪寒…
http://muryo-de.etowns.net/
別に試しにうpできたらいいんでsendmail対応書いてある鯖探すかsendmail使わないサンプル探したほうがいいのかしらん
0366虚弱PHP
2007/04/05(木) 15:44:45ID:???> PHPで挿入したデータが自動的にEUCに変換され保存される、ということでしょうか?
MySQL4.1以降だとそうなるはず。
だけど、化けまくる場合が多いので、MySQL4.1以降の場合は
skip-character-set-client-handshake設定して、
自分でちゃんと文字コード管理するのがよさげ。
個人的には全部UTF-8にした方がいいと思うけど。
適当に検索したら、以下のページでMySQL&PHP連携での文字コードの話が書いてあった。
http://puchiko.lowtech.ne.jp/?itemid=349
0367nobodyさん
2007/04/05(木) 15:49:15ID:ln1txq/Nアカンがなwwwww
対策練ってくる・・・orz
0369339
2007/04/05(木) 15:52:18ID:???場所が借りれたらいいと思った。今は反省していない。
0370虚弱PHP
2007/04/05(木) 16:13:19ID:???http://muryo-de.etowns.net/php.php
0371nobodyさん
2007/04/05(木) 16:13:51ID:???設定で、どうにでもできる自由度を理解してないだけと思われ。
PHP側でMySQLの設定にあわせて文字変換してもいいし
MySQL側の設定で、MySQL側の変換を無効にしたりとか
PHPに合わせてデータを渡したっていいし、オマイの好きに
出来るよってところかな。
PHPとMySQLの文字変換の関係って言われても
答えとしては、自分がPHPとMySQLでやろうとしてることに
一番いい設定を選べばエエやん?って感じ。
0372339
2007/04/05(木) 16:20:25ID:ln1txq/N逃げに走って、sendつかわなくていいフォームさがしてう
0373nobodyさん
2007/04/05(木) 16:35:54ID:???簡単にする方法はないでしょうか?
0374nobodyさん
2007/04/05(木) 16:35:56ID:???>だけど、化けまくる場合が多い
これの原因の多くが使ってるmysqlクライアント側文字コードが
デフォルトは「latin1」と設定されてるから。
PHPでEUC-JPやUTF-8に変換してデータ送っても
MySQLサーバの方ではクライアントはlatin1で送るよと表明しているから
latin1→サーバ側に指定された文字コードに変換する。
latin1と思って日本語扱えば、そりゃ文字化けは必至。
だからクライアントの起動オプション、ライブラリならビルド時に指定するか
SET NAMESで「これからクラアントは○○で送るよ」とサーバに教えてやらないと駄目
http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html
PHPやMySQLの公式ビルドもののクライアントライブラリも「latin1」と設定されてる。
# RHEL系はUTF-8になってるのかね。
まあ自分も
>skip-character-set-client-handshake設定して、
>自分でちゃんと文字コード管理するのがよさげ。
こっち
0375あきら
2007/04/05(木) 16:40:24ID:jUd/uPxecreate table kaiin (kaiin_code varchar(6),
kaiin_name varchar(20),
nyukai_ymd varchar(10),
kigen integer,
primary key (kaiin_code));
nyukai_ymd は 日付を表現する文字型のカラム
kigen は 有効期限で1から12(nヶ月)
有効期限切れの会員の検索
入会日(nyukai_ymd) < 今日(2007-04-05)から遡ってkigenヶ月
select * from kaiin where
nyukai_ymd < to_char(to_date('2007-04-05', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');
ERROR: Bad interval external representation 'kigen month'
と言うエラーが.....!
intervalでカラム(kigen)を使う方法を教えてください。
宜しくお願いします。
0376355
2007/04/05(木) 16:43:30ID:???>>371
>>374
レスありがとうございます。
>MySQL4.1以降だとそうなるはず。
つまり4.1以降のクライアント側の文字コードがEUCに設定されている場合、の話ですよね。
では、4.0以前のサーバー側の文字コードって何の意味を成しているのでしょうか?
0379nobodyさん
2007/04/05(木) 16:46:08ID:Y4vj6k1c今まで無料鯖で自作ブログみたいなのをつくってましたが、今回SSLが使えて広告もない鯖をタダで
使えるようになりました。そこで特にその必要はないのですが、あるならやっぱ使いたいのでコメント
やユーザー情報の入力はセキュアな状態で行うように改造したいと思ってます。
そこで質問なんですが、サイトのアドレスはhttp://mydomain.xxx.xxx/で、SSLはhttp://secure.xxx.xxx
というサブドメインでしか使えなくなってます。鯖は同じなのでmydomainで使ってるサイトの外見テンプ
レートをsecureから参照したいのですが、どうすればいいのかわかりません。
例えば、mydomain/tpl/tpl.phpといったテンプレートファイルをsecure/index.phpから参照するにはどう
すればいいですか?
日本語怪しかったらスミマセン
お願いしまッス!
0380339
2007/04/05(木) 16:46:37ID:ln1txq/Nhttp://0web.cjb.net/
うごく・・・し、送れるんだけど鰓がでるお。。
Notice: Undefined variable: err_message in
0381あきら
2007/04/05(木) 17:01:57ID:jUd/uPxeFreeBSD 5.3
Apache/1.3.37
php 4.4.4
postgresql 7.3.15
実際は
$today = date("Y-m-d");
$result = pg_Exec($conn,"select * from kaiin where nyukai_ymd < to_char(to_date('$today', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');");
です。
宜しくお願いします。
0382nobodyさん
2007/04/05(木) 17:04:36ID:???Warning: Smarty error: unable to read resource: "menu.tpl" in C:\php\include\SMARTY\libs\Smarty.class.php on line 1095
正直Smartyにエラーが出るなんて想像もしてなかった
1000行も見返して問題チェックなんてする気にならないというか、
変にいじったら予想外の部分にまで後々障害出そうで怖いんですが、、
皆さんこういうトラブル発生しましたか?
0387あきら
2007/04/05(木) 17:12:49ID:jUd/uPxeサーバーサイドプログラミング関連の話題を扱っています。
Perl, PHP, Java, Ruby, C, Tcl といった言語処理系の話、
Apache, CGI, JSP/Servlet, ASP, ColdFusion といったアプリケーション実行環境の話、
Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
とあったのでココでいいと思いました。
場違いでごめんなさい。
0388nobodyさん
2007/04/05(木) 17:22:10ID:???special thxxxxxxxxxxx!
なにかうろこのようなものがとれた
0390nobodyさん
2007/04/05(木) 17:38:59ID:???すみません、
「Smarty.class.php の1095行目のmenu.tplを読めない」 と書いてあるのかなと
思うんですが、、
良くわかりません
0391nobodyさん
2007/04/05(木) 17:40:32ID:???それはこの板全体の説明で、このスレッドは「PHP」の
質問スレッドだよ
PostgreSQLの話題は別のスレッドが基本
面倒だから答えるけど
エラーメッセージ見てわかるように
interval 'kigen month'
この表現がおかしいんだよ
interval の指定はこんなふうにはできない
interval '1 month' とか interval '2 month' ならできるけど
カラム名の指定は、少なくともPostgreSQL では無理
Oracleでも無理だと思うけど
0392あきら
2007/04/05(木) 17:45:14ID:jUd/uPxe大変すみませんでした。
答えてくれて有難うございました。
0393nobodyさん
2007/04/05(木) 17:46:59ID:???意訳しすぎ
勝手にコロンで区切られた文章を連結するなよ
素直に前から読んだら良いじゃないか
テンプレートファイル menu.tpl が読めなくなっているのだろ
1095 行目は実際にエラーを発行している場所であって、
そこに問題あるってわけじゃないぞ
何を触ったのかは知らないけど、テンプレートパス指定が
おかしくなったのか、menu.tplを消したかは知らないが
0394nobodyさん
2007/04/05(木) 17:48:32ID:???今後Postgresの質問するなら適切な場所へ行ってね
PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/l50
DB@2ch
http://pc11.2ch.net/db/
0396nobodyさん
2007/04/05(木) 18:00:08ID:???その再帰手法を個別に書かないで、XMLとして処理すればいいんだよ。
<table と </table> の最長一致文字列を探したあとは、それをXML処理にゆだねればいい。
その場合おっしゃるidなどの要素内属性記述は、逆に邪魔になるからそれを消して渡す。
0397338
2007/04/05(木) 18:21:18ID:???無視されるのは大嫌いなんだ!
0398nobodyさん
2007/04/05(木) 18:48:58ID:???質問者はID出せよ
GD入れなくてもできる
バイナリデータをいじくって、なんらかのフォーマットの
画像データを出力するスクリプトが書けるのなら
そんなのがいやらなら、GD入れるなり、ImageMagick使うなり
したらいい
バイナリデータをDBに登録するかどうかは、その案件しだい
としか言いようがない
selectで遅くなるとは普通考えられないが、これは
DBの仕様次第だろう
0399379
2007/04/05(木) 18:49:27ID:Y4vj6k1cノシ
0400nobodyさん
2007/04/05(木) 18:54:44ID:???同じサーバにあるのなら、何も悩むことなく読み込めるだろう
パスの指定は、ドメインとは関係ないのだから
テンプレートだろ?画像じゃなくて
画像であっても、シンボリックリンクでも貼れば解決するだろうけど
0401nobodyさん
2007/04/05(木) 19:14:07ID:???0402虚弱PHP
2007/04/05(木) 20:07:19ID:???PHP5なら array_walk_recursive が使えるよ。
再帰的に負う必要がないなら、array_walkでOK。
こっちはPHP4でも使える。
0403虚弱PHP
2007/04/05(木) 20:12:16ID:???Linuxなら明示的に指定しない限り、GD付属してたとおもったけど。
Windowsならphp.iniでコメント外すだけ。
0405nobodyさん
2007/04/05(木) 21:08:26ID:MctJVuph後部に追記ならfopen(filename,"a")で簡単ですが、
先頭に追記していきたい場合はこれだと無理です?
一度中身を変数なりに入れてからfopen(filename,"w")あたりで
追加分+中身を入れないとダメ?
初心者ですいません。
0408nobodyさん
2007/04/05(木) 21:16:44ID:???0409nobodyさん
2007/04/05(木) 21:19:59ID:???0410405
2007/04/05(木) 21:25:43ID:MctJVuphサンクス。
マニュアルを読むと fopen(filename, "r+") でfpが先頭にあるみたいなので
いけるかと思ったんだが、ファイルにゴミがまざる orz
一時保存して追加するしかないのね。
0414379
2007/04/05(木) 22:39:38ID:BEBjQR7Yどうもです
なんつーか、インクルードしたいんですけど無理ですかね?
シンボリックってググッたけど意味わかんないっす。
PHPじゃなくてサーバーの専門用語っぽいことはわかったんだけど
馬鹿ですんません
0415nobodyさん
2007/04/05(木) 22:40:36ID:???0416379
2007/04/05(木) 22:43:15ID:???同じフォルダにないとインクルードできないっぽいっす
0420379
2007/04/05(木) 22:53:36ID:???どこをみりゃいいっすか
0421nobodyさん
2007/04/05(木) 23:00:03ID:???0422nobodyさん
2007/04/05(木) 23:05:54ID:???/home/secure/index.php
<?php
include('../../mydomain/tpl.php);
?>
で inlcude できるだろ
セーフモードで制限がかかっているのか?
0423nobodyさん
2007/04/05(木) 23:06:51ID:???include('../mydomain/tpl.php');
か
0424nobodyさん
2007/04/05(木) 23:07:58ID:???http://php.benscom.com/manual/ja/ref.filesystem.php
一つ要望だけど普通の言葉で書いてもらえますか?
0425nobodyさん
2007/04/05(木) 23:08:57ID:1F/X4KzLディレクトリに書き込み権限があるかどうか調べるにはどうしたらいいでしょうか?
0426nobodyさん
2007/04/05(木) 23:24:19ID:FIQWGizoこういう形式の日時から、タイムスタンプを取得したいのですが、
どうすれば良いのでしょうか?
0430nobodyさん
2007/04/05(木) 23:33:36ID:FIQWGizoありが研ぐお座います
0431nobodyさん
2007/04/06(金) 01:36:07ID:7OEWd9FEよろしくお願いいたします
0432nobodyさん
2007/04/06(金) 01:47:04ID:???大文字を小文字にする関数
0433nobodyさん
2007/04/06(金) 03:30:56ID:???Aだったらaに変換
Bだったらbに変換・・・・
いいんですよ効率悪くても。このやりかたで不満をもって自分で効率のよいコードがかけるようになりなさいな
0434nobodyさん
2007/04/06(金) 03:47:19ID:???まず魅力あるコンテンツを作れるようになろうぜ
0435nobodyさん
2007/04/06(金) 04:03:19ID:???0436nobodyさん
2007/04/06(金) 04:05:36ID:???0437nobodyさん
2007/04/06(金) 04:43:10ID:???strtr("AbCDeF", "ABCDEFGH...", "abcdefgh..."); #=> "abcdef"
0438nobodyさん
2007/04/06(金) 05:18:26ID:???0439nobodyさん
2007/04/06(金) 05:27:44ID:???0440nobodyさん
2007/04/06(金) 05:45:43ID:???0443nobodyさん
2007/04/06(金) 08:46:53ID:???0444nobodyさん
2007/04/06(金) 09:59:03ID:???他人の書いたコードが読めなくなるからな
0446nobodyさん
2007/04/06(金) 10:23:16ID:???$html = '<FORM>
A
<IMG SRC="./NULLPO.GIF" />
<INPUT
TYPE="CHECKBOX"
CHECKED />
A
</FORM>';
$html = preg_replace_callback('/<[^<>]+>/',create_function('$matches',
'if(strpos($matches[0],\'=\') === false) return strToLower($matches[0]);
$length = strlen($matches[0]);
$quote = false;
for($i = 0; $i < $length; $i++) {
if($matches[0][$i] === \'"\') $quote = !$quote;
elseif(!$quote) $matches[0][$i] = strToLower($matches[0][$i]);
}
return $matches[0];'),$html);
var_dump($html);
string(79) "<form>
A
<img src="./NULLPO.GIF" />
<input
type="CHECKBOX"
checked />
A
</form>"
まぁおおよそ効率の良いやり方じゃないが、な…。
即席なんで不備があるかもしれん。
0447nobodyさん
2007/04/06(金) 12:30:19ID:???というエラーになります; DBクラスが見つからないと言っているんでしょう
けどDB.PHPはちゃんとあるし、何故なんでしょうか?
0449nobodyさん
2007/04/06(金) 12:39:44ID:???板間違えて書き込んだので直ぐ誤ってますよ。
昨日一日考えてたんですが、今自己解決しました。
pear DBをインストールしたらOKでした。
0450nobodyさん
2007/04/06(金) 12:56:23ID:???0452nobodyさん
2007/04/06(金) 13:06:52ID:???0453338
2007/04/06(金) 14:28:35ID:???class内でpreg_replace_callbackする際、
あらかじめ配列化された$this->mojiを使用することが出来ません。
こんなときどうすればいいんでしょうか?
#$this->moji= array('001'=>'<font size="1">', '002'=>'<font size="2">'…);
#$str = '!001!';だとした場合
function hoge_ForOutput($str)
{
$hoge = preg_replace_callback(
"/!(\S{4})!/",
array($this, 'conv_func'),
$str
);
return $hoge ;
}
function conv_func($str)
{
if($this->moji[$str['1']]=="")
{
return $str; }
else
{
return $this->moji[$str['1']];
}
}
}
0454453
2007/04/06(金) 14:30:08ID:2B8Av++o名前も間違えました。。
すみません
0456453
2007/04/06(金) 15:05:58ID:2B8Av++oご指摘ありがとうございます。
変数名等、実際のものと少し書き換えたのでミスしてしまいました。
この場合、\S{3}です。
ただ、問題なのは
function conv_func内で$this->mojiがNULLになってしまうことなんです。
0457nobodyさん
2007/04/06(金) 15:23:40ID:???は?
■ このスレッドは過去ログ倉庫に格納されています