【PHP】下らねぇ質問はここに書き込みやがれ 46
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/12(土) 16:43:57ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0667nobodyさん
2007/05/20(日) 23:53:20ID:???1. 集計プログラムが呼び出されたら最新集計結果TBLとアクセスログの更新日時を比較
2a. もし同じならば、最新集計結果TBLをもとにページ作成 => exit
2b. 同じでないならば、最新集計結果TBLの更新日時以降のアクセスログを集計
3. 最新集計結果TBLに2bの結果を反映して更新
4. 最新集計結果TBLをもとにページ作成
これだけだと偏差とかは無理だけどな
0668質問させて下さい
2007/05/20(日) 23:56:18ID:mUezkSvy時間表示の所を2007/05/20(年・月・日)となっています。
$date = date("Y/m/d", $time);
ソースです。
ttp://loglog.jp/~php/net/rss/rssup.php.txt
これを2007/5/20 13時15分など表示されるにはどのようにすればいいでしょうか?
date("Y/m/d/H/i", $time); 次のように改造をしましたが表示エラーになりました。
アドバイスお願いします
0671質問させて下さい
2007/05/21(月) 00:08:06ID:x+5U6/Lpdate("Y/m/d H:i", $time);
これでも試したんですが
両方ともエラーは空白で非表示になります。
困まりました><
0674質問させて下さい
2007/05/21(月) 00:33:08ID:x+5U6/Lp$date = date("Y/m/d", $time);
こう書けば年・月・日をしっかり取得してくれます。
date("Y/m/d/H/i", $time);
date("Y/m/d H:i", $time);
こう書けば、非表示になって年・月・日・時間などを表示してくれません。
考えて下さって本当にありがとうございます
0675質問させて下さい
2007/05/21(月) 00:36:51ID:???でいけました。
本当に足ひっぱってすいませんでした><
ごめんなさい
0676nobodyさん
2007/05/21(月) 00:37:50ID:???0677nobodyさん
2007/05/21(月) 00:46:04ID:???0678nobodyさん
2007/05/21(月) 00:56:12ID:???なるほど。
0679nobodyさん
2007/05/21(月) 00:58:34ID:???0681nobodyさん
2007/05/21(月) 01:57:24ID:???インサートとか指定したフィールド(カラム)だけアップデートするとか。
0682nobodyさん
2007/05/21(月) 03:36:04ID:r2MP9GVb↑これって何なんですか? 使ったことないし、人の書いたコード読んだときもこれがよくわからなくて
つまずいてしまいます
配列関係?
0683nobodyさん
2007/05/21(月) 03:39:26ID:???0684nobodyさん
2007/05/21(月) 04:15:15ID:???0685nobodyさん
2007/05/21(月) 06:34:19ID:???mysqlを使わない普通のphpのプログラムは動きます
phpはバージョン5.2.2
mysqlはバージョン5.0.4.1
apacheは2.2
です
php5ts.dllをc:/windowsにコピーして
libmysqlをc:/windows/system32/にコピーして
php.iniをc:/windowsにコピーして内容を修正して
<?phpinfo?>で表示される内容を見ても
mysqlの項目が出てこないし
phpからデータベースに接続しようとしても出来ません
設定の方法が載っているHPがあったら教えてください
0686nobodyさん
2007/05/21(月) 07:13:05ID:???0687nobodyさん
2007/05/21(月) 09:05:55ID:???> php.iniをc:/windowsにコピーして内容を修正して
どう修正したのか書いてくれなきゃわからん。
0688nobodyさん
2007/05/21(月) 09:17:41ID:???0689nobodyさん
2007/05/21(月) 09:33:38ID:???include_path = ".;c:/php/includes;c:/php/pear"
doc_root ="C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
extension_dir = "c:/php/ext"
extension=php_mysql.dll
magic_quotes_gpc = off
これ以外は変更していません
mysqlを使わないプログラムは問題なく動きます
0690nobodyさん
2007/05/21(月) 09:36:30ID:???0691nobodyさん
2007/05/21(月) 09:37:42ID:???あとID出すと不都合でもあるんですかね?
0692nobodyさん
2007/05/21(月) 09:40:00ID:???0693nobodyさん
2007/05/21(月) 09:44:33ID:???すいません既にその変更もしていました
phpは動いているのでそれはいわなくてもいいかなと思ったので
httpd.conf
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.html.var index.php
0695nobodyさん
2007/05/21(月) 10:15:06ID:tUHb9fVw現在、セッション変数を使い始めた初心者です。
数人が参加できるチャット画面を作っています。
1、ある人がそのページに参加すると、入ったという情報をファイルに記録する。
(フラグを1にしてるだけですが)
2、退出ボタンで退出すると、出て行ったという情報をファイルに記録する。
3、ブラウザを閉じたり、タイムアウトになったりした場合もファイルに記録する。←ここ
のようなことをしたいのです。
現在は、タイムアウトでいなくなった場合は、ずっとその人は参加し続けていることになってます。
ググッても独自関数みたいなものが出てきて、レベルが高すぎてさっぱりわかりません。
いいやり方はないですか?
0696685
2007/05/21(月) 10:26:15ID:???今解決しました
インストーラー版で一回インストールしたあと削除せずに
Zipを解凍して手動でインストールしたのが原因でした
一生懸命変更したiniファイルとは別のインストール版の方のiniをphpは読んでいたみたいです
インストーラー版を削除したらmysqlのプログラムも動くようになりました
0698685
2007/05/21(月) 10:37:57ID:???windows板で前に質問したときはすぐに回答いただいたんですけど
(笑)
0701695
2007/05/21(月) 10:58:25ID:tUHb9fVwそれです。ブラウザ閉じた時にセッションきるやつですよね。
その時に、ファイルに保存してある
1番,○○さん
っていうのも空欄に書き換えたいのですけど、どうしたらいいのですか?
0702nobodyさん
2007/05/21(月) 11:24:39ID:???0703nobodyさん
2007/05/21(月) 11:27:58ID:???0704nobodyさん
2007/05/21(月) 11:32:54ID:???0705nobodyさん
2007/05/21(月) 11:39:18ID:???0706nobodyさん
2007/05/21(月) 11:45:40ID:???0707nobodyさん
2007/05/21(月) 11:49:04ID:???0708nobodyさん
2007/05/21(月) 11:53:59ID:???0709695
2007/05/21(月) 12:56:23ID:tUHb9fVw楽しみに待ってます。
0711nobodyさん
2007/05/21(月) 12:58:25ID:3IxpO5VZセキュリティ関係で気をつけなきゃいけないことありますか?
0712nobodyさん
2007/05/21(月) 13:05:14ID:???どんなキャッシュファイルか分からないから
なんとも言いにくい
あえて言うのなら
・ドキュメントルートの下には置かない
もちろんシンボリックリンクも
・個人情報、パスワードをなどを書き込まない
どうしても書き込む必要があるときは、できるだけ
すぐに消すようにする
0713710
2007/05/21(月) 13:05:17ID:???SOHO・フリー・会社でWEBプログラミングしてる奴
名前: nobodyさん
E-mail:
内容:
ここはSOHO・フリー・会社でWEBプログラミングをお仕事にしてる人のスレです。
いろんな所に、いろんな年齢で、いろんな条件のひとがガンガってます。
儲かってる人も、細々食え出した人も、個人も会社勤めの人も、お互いの立場を尊重し
情報交換・愚痴交換して行きましょう。
0715nobodyさん
2007/05/21(月) 13:06:27ID:???0716nobodyさん
2007/05/21(月) 13:38:53ID:3IxpO5VZありがとうございます
動的ページをその都度データベースから引き出してるのが遅いので
よく使う&変更のないやつをキャッシュにいれておこうと思いました
>>714
フィーバーですか?
>>715
習慣で777と書いちゃいました
cmdも習慣で777と打っちゃうんですけど
0717nobodyさん
2007/05/21(月) 13:43:01ID:???0718nobodyさん
2007/05/21(月) 13:45:56ID:???700でいいじゃないの。
あと、キャッシュファイル名はハッシュにすればいいよ。
md5とかで('file path');で出し入れする。
0719nobodyさん
2007/05/21(月) 13:54:37ID:O1legeAPsession_start();
$_SESSION['count'] = 1;
とやるとテンポラリディレクトリに
sess_tm4m6v8sp4r42ptimhc3rquim6tっていうファイルができてました。
ローカルだから確認できたのですが、sess_という部分を
はじめて使うレン鯖などで調べる場合 どうやって調べるのでしょうか?
テンポラリディレクトリを読んで、中のファイル名一覧を取得してファイル名を取得というやりかたを
考えたのですが、これは違うと思ってて悩んでます。
どなたかご教授ねがいます。
0720nobodyさん
2007/05/21(月) 13:56:26ID:???0722721
2007/05/21(月) 14:05:01ID:3IxpO5VZ0723nobodyさん
2007/05/21(月) 14:05:45ID:???を使えるので、自分はキャッシュ使うときはそうしてる。
0724nobodyさん
2007/05/21(月) 14:19:03ID:???0725nobodyさん
2007/05/21(月) 14:32:09ID:O1legeAP今回はファイルに勝手につけられるsess_という部分を
調べたかったのですがsession_id()で試してみたらsess_より下の部分がわかりました。
オンライン中ユーザを表示するスクリプトが書きたかったのですがわたくしの力ではPHPでは難しいです・・orz
でもPHPで書かれたスクリプトを運用していらっしゃるサイトさんもありますので諦めがつきません。
0727nobodyさん
2007/05/21(月) 14:39:35ID:???パーミッションの設定で同じグループに属するユーザに権限を与えるとディレクトリにアクセスできるのですが・・・?
0729nobodyさん
2007/05/21(月) 15:05:42ID:???0731nobodyさん
2007/05/21(月) 15:15:30ID:???0732nobodyさん
2007/05/21(月) 15:27:06ID:tU+w3yaBimg srcでそのファイルを指定する事は可能でしょうか?
0735nobodyさん
2007/05/21(月) 15:36:03ID:O1legeAP0736nobodyさん
2007/05/21(月) 15:45:34ID:???アクセスカウンタ?それとも瞬間のアクセス数?
前者ならページを開いたときにインクリメントするものを作れば出来る
後者じゃないとは思うけど・・・
後者ならWEB(apache)のログを解析するしかないんじゃないの?
0737nobodyさん
2007/05/21(月) 15:48:19ID:???ログ解析なんか関係ない。ある種>>695と同じような質問だな。
とりあえずラフなもんなら、sessionを時間で区切って数えてやる。
今まさに「ブラウズ中」カウントしたいならajaxあたりでやる。
0738nobodyさん
2007/05/21(月) 16:46:11ID:oCyouogRPHPでSJISの文字を受け取り、EUC-JPに変換後、MySQLに格納しているんですがなぜか"ー"の文字だけ"?"に文字化けします。
PHPは5.1.6
MySQLのDEFAULT CHARSETはEUC-JPです。
色々見てみた結果、MySQLに格納しる前は普通に"ー"であるようなのです。
完全にMySQLの質問ですが、この板がホームな私にお力お貸しください。
0739nobodyさん
2007/05/21(月) 16:49:39ID:???>完全にMySQLの質問ですが、この板がホームな私にお力お貸しください。
こういう書き方は不愉快ですね。
0741738
2007/05/21(月) 16:56:42ID:oCyouogR不愉快な気持ちにさせてしまってすみません;;
MySQLは作成時に(create table時に)DEFAULT CHARSET=ujisにしています
ただ(文字コードEUC-JP)SSHでみると文字化けしています。
一度確認してみます。ありがとうございます。
>>740さん
返レスありがとうございます
そこは何度も確認したのであっているようです。
一度、EUC-JPに変換したものを再度SJISに変換してechoしたところ"ー"は文字化けしていませんでした。
0742nobodyさん
2007/05/21(月) 17:08:35ID:???0743738
2007/05/21(月) 17:15:17ID:oCyouogRprotected function UpdatePage1(&$str) {
var_dump($str['title']); //この時点では文字化けなし
mb_convert_variables("EUC-JP", "SJIS", $str);
var_dump(mb_conbert_encoding($str['title'], 'EUC-JP', 'SJIS')); //
$sql =
"UPDATE `hoge_tbl` SET `title`='".$str['title']."', `msg`='".$str['msg']."' WHERE `seq`=".$this->_values['seq'];
echo $sql;
parent::mysql_insert($sql);
}
0744738
2007/05/21(月) 17:17:55ID:oCyouogRaddslashesは助長になるので省いてますがきちんとconvertの後にかけてます。
DBに書き込む前のdumpでは文字化けしていません。
0745nobodyさん
2007/05/21(月) 17:21:27ID:???意味わからん。
>mb_convert_variables("EUC-JP", "SJIS", $str);
>var_dump(mb_conbert_encoding($str['title'], 'EUC-JP', 'SJIS'));<−−このタイポは問わないとして。
デバッグするなら
var_dump(mb_convert_variables("EUC-JP", "SJIS", $str));
のほうだろ。
0746738
2007/05/21(月) 17:39:41ID:oCyouogRご指摘ありがとうございます。
試した結果、EUC-JPでした。。
0747nobodyさん
2007/05/21(月) 17:56:24ID:O1legeAP勉強になりました。ありがとうございました。
0748nobodyさん
2007/05/21(月) 18:25:11ID:gTv1f8Kghttp://www.excite.co.jp/world/english/
に、
POSTで「こんにちは」を送信したところ、
翻訳されたら「S O. Tsu」と、変な変換になってしまいます。
$word = mb_convert_encoding($word,"SJIS","auto");
$post = 'before='. $word .'&wb_lp=JAEN&start=翻訳';
こっちはSJISで送信して、UTF-8で受け取っています。
$request = "POST $post_url HTTP/1.0\r\n";
$request.= "Host: $parse_url[host]\r\n";
$request.= "User-Agent: PHP/" . phpversion() . "\r\n";
$request.= "Content-type: application/x-www-form-urlencoded; charset=SJIS\r\n";
$request.= "Content-Length: " . strlen($post) . "\r\n";
//$request.= "Referer: $url\r\n";
$request.= "\r\n";
$request.= "{$post}\r\n";
おそらく途中で文字化けしていると思うのですが、どうして文字化けしてしまうのでしょうか?
ちなみに、英⇒和だと正しく変換されます
0749nobodyさん
2007/05/21(月) 18:52:01ID:???>Content-type: application/x-www-form-urlencoded;
この意味もわからずにどっかから取ってきたコードで、自分の水準以上のことをやるからそうなる
0750nobodyさん
2007/05/21(月) 19:08:59ID:O1legeAPTrueTypeフォントというのはパソコンを買ったときからC:\WINDOWS\fontsにたくさん入っているんですけど
このフォントディレクトリを指定したいのですがエラーがでて困り果ててます。
putenv('GDFONTPATH=' . realpath('C:\WINDOWS\fonts'));
っって記述はフォントへのディレクトリを指定しているつもりですが間違ってましたらご教授願います。
ソースはこれです
<?php
header("Content-type: image/png");
putenv('GDFONTPATH=' . realpath('C:\WINDOWS\fonts'));
$text = 'test'';
$font = 'arial.ttf';
$im = imagecreatetruecolor(400, 30);
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>
0751nobodyさん
2007/05/21(月) 19:14:19ID:EzwH2Xng>$text = 'test'';
これが問題なだけでしょ。
0752nobodyさん
2007/05/21(月) 19:23:14ID:O1legeAPそれも直してみたのですが、やはりパスが通りませんでした。
putenvを消して、$fontに絶対パスで記入したら動くのですが・・・私にはわかりません
0753732
2007/05/21(月) 19:36:27ID:f9N/ntIf試してみても動かないので
動いてる参考例ってないですか?
0754nobodyさん
2007/05/21(月) 19:55:17ID:???<img src="imgview.php?id=AAAAA">
【imgview.php】
<?php
if(! preg_match('/^\w+$/', $_GET['id'])) exit;
header("Content-type: image/jpeg");
readfile("../image/" . $_GET['id'] . ".jpg");
?>
とか?
0755732
2007/05/21(月) 20:18:22ID:f9N/ntIfなるほど、試してみます
0756nobodyさん
2007/05/21(月) 20:54:00ID:EzwH2Xngじゃあ
putenv('GDFONTPATH=' . realpath('C:\WINDOWS\fonts'));
echo getenv("GDFONTPATH");
の二行だけ試せよ。ワカラン厨はイラナイ
0757nobodyさん
2007/05/21(月) 21:01:46ID:???putenv('GDFONTPATH=C:\WINDOWS\fonts'));
駄目だったら
$tmp=getcwd();
chdir('C:\WINDOWS\fonts');
putenv('GDFONTPATH=' . realpath('.'));
chdir($tmp);
0758nobodyさん
2007/05/21(月) 21:25:08ID:???0760nobodyさん
2007/05/21(月) 21:52:52ID:???putenv('GDFONTPATH=' . realpath('C:\WINDOWS\fonts'));
$text = 'test'';
$font = 'arial'; // 拡張子を取る
でどうかな。
0762nobodyさん
2007/05/21(月) 22:30:18ID:EzwH2Xnggetenvを消したら動く
↓
じゃあgetenvが「悪さ」してるかもしれない。→という仮定の下、XXXを試してみた
とかいうのは、全然、ワカラン厨じゃないよ。質問者が思考停止しててどうするというこった。
■ このスレッドは過去ログ倉庫に格納されています