【PHP】下らねぇ質問はここに書き込みやがれpart15
・FAQ 1. "$hoge[0]" と書くとエラーが出るよママン →"〜"の中で添え字([〜])やメンバ変数参照(->)みたいなのは直接書けないので"{$hoge[0]}"と{}でククレ 2. あっちのサーバーでは普通に動くのにこっちのサーバーではエラーになるよママン →PHPはコンパイルオプションやphp.iniの設定で動きが全然違うので管理してる香具師に確認汁!
4 :
nobodyさん :2006/01/14(土) 20:27:37 ID:ILCMT976
正規表現について質問です。
$uri = $_POST['uri'];
$file = fopen("log.dat","r");
while($row = fgets($file,1024)){
if(eregi("($uri)[a-z0-9./_\-]+",$row,$data)){
print("$data[0]");
}
}
fclose($file);
これで「htt?://hoge.com/」を正規表現で検索したいのですが
「htt?://hoge.com/」を「
http:/hoge.com 」(未尾のスラッシュを取る)にしないと
結果を表示してくれません。
これは何故でしょうか?
5 :
4 :2006/01/14(土) 20:32:21 ID:ILCMT976
スマソ訂正: これで「htt?://hoge.com/」を正規表現で検索したいのですが 「htt?://hoge.com/」を「htt?://hoge.com」(未尾のスラッシュを取る)にしないと
6 :
4 :2006/01/14(土) 20:33:11 ID:ILCMT976
>>6 つか正規表現以外のものにもかなりマッチするけど、それはいいの?
>>4 if(eregi("($uri)[a-z0-9./_\-]+",$row,$data)){
ってのを
if(eregi("($uri)[a-z0-9./_\-]*",$row,$data)){
にしたら動かん?
9 :
7 :2006/01/14(土) 20:38:16 ID:???
すまん。「URL 以外のもの」だった。
10 :
nobodyさん :2006/01/14(土) 20:56:59 ID:PuQcgqqK
>>4 例に使うドメインはexample.comな。それ以外は実在する可能性があるから適当でない。
別にどうでもいいだろ。トリビア披露なんざ他所でやれ
12 :
4 :2006/01/14(土) 21:13:19 ID:ILCMT976
>>8 できました!ありがとうございます。
>>9 全然OKです。
>>10 そうだったのですか…気をつけます。
>>11 トリビアでもなんでもない
普通に守るべきルール
>>13 何が「普通」で、何故「守るべき」なのかが不明だな。
意図が伝わっている以上、どうでもいいこと。
あー。次のスレではそれもFAQに入れときますかね。 >example.com
このスレ雑談がメインなのにFAQなんかいらなくね?
>>17 あって困りはしないから、別にいいんじゃね?
>>3 > 1. "$hoge[0]" と書くとエラーが出るよママン
> →"〜"の中で添え字([〜])やメンバ変数参照(->)みたいなのは直接書けないので"{$hoge[0]}"と{}でククレ
エラーが出ないよママン
> 2. あっちのサーバーでは普通に動くのにこっちのサーバーではエラーになるよママン
> →PHPはコンパイルオプションやphp.iniの設定で動きが全然違うので管理してる香具師に確認汁!
こんな質問フリークエントリーアスクトじゃないよママン
どー見ても冗談で書いてるFAQだよな。あれ。
FAQはネタのつもりかもしれんが、普通にまぎわらしいし。
>>1 の中にアンカーまでついてるし。
つーかそれよりも最近の釣りと自演をどうにかする方策でも立ててほしいもんだ。
見え見えすぎてうざげ。
どーでもいーっちゃどーでもいーけど。
どーせ真面目にFAQ書いたところで質問する前に読むやついないしな
FAQ のこれ読めって言えればこっちが楽だし、あったらいいと思うけどな
まあ本スレのほうはFAQにある質問の重複が減ったようだからいいけど。 過去スレあさるとよくわかる。
FAQ充実させよう。まとめWikiとか作ろうぜイエイイエイ
あ、俺はやだかんね
すみません、ご教授ください。 あるデータからXMLファイル(UTF-8)を作成するスクリプト作ったのですが、 そのXMLファイルを使うソフトがBOM(EFBBEF)つきのUTF-8ファイルしか読んでくれません。 ファイルの先頭部分にBOMを付加したい場合、どのような処理を施せばよいのでしょうか? スクリプト自体はSJISで書いています。 $filename = "./BlandList.xml"; $fp = @fopen($filename, "wb") or die("Error"); fwrite($fp, "EFBBEF"); fclose($fp); って書いたら先頭にEFBBEFの文字列が追加されただけでした…当然か
28 :
27 :2006/01/15(日) 05:17:20 ID:???
上記のスクリプトの後に本来の目的であるデータを書き込んで、終了する処理をしてます 書き忘れすみません。
>>27 fwrite($fp, pack('C*',0xEF,0xBB,0xEF));
30 :
29 :2006/01/15(日) 07:18:08 ID:???
つか、Notepadで保存して見てみたけど EFBBBFだったぞ<BOM
31 :
nobodyさん :2006/01/15(日) 11:37:52 ID:nt4rtanc
PHPで文字コードとMIMEを設定するには、 AddType "text/html; charset=Shift_JIS" .php でいいの?
ぐぐった?
33 :
nobodyさん :2006/01/15(日) 11:45:37 ID:nt4rtanc
>>32 ぐぐりました。
そうしたら、
AddType application/x-httpd-php .php
もでてきたんですが、これでは、文字コードは指定できません。
どのようにすればいいでしょうか?
phpをshift_jisで認識するようにサーバで設定したいのです。
34 :
27 :2006/01/15(日) 12:58:55 ID:???
>>29-30 BOMはEFBBBFでした、書き間違えすみません。無事に出来ました。
$filename = "./BlandList.xml";
$fp = @fopen($filename, "w") or die("Error");
fwrite($fp, pack('C*',0xEF,0xBB,0xBF));//BOM書き込み
fwrite($fp, $sdadata);//データ書き込み
fclose($fp);
ファイルをバイナリモードで開く必要はなかったんですね。
pack関数、初めて知りました…まだよく理解はできてないんですが
とにかく助かりました、ありがとうございました。
>>34 >ファイルをバイナリモードで開く必要はなかったんですね。
最近のバージョンのPHPは、バイナリーモードがデフォだから付けなくても構わない。
ただ、どのようなバージョンで使われるか判らないコードを書く場合は、
Windowsの場合には確実にバイナリモードになるように、'b'を付けといた方が
余計なテキストモードとして扱われて変な目にあわずに済む。
>>25 まず、お前がFAQの草案作れ。
話しはそれからだ。
広告付きで良いならwikiを作っても良いよ。 xreaとか@wikiとかから適当に選べば良いんだし。
38 :
27 :2006/01/15(日) 17:04:28 ID:???
>>35 なるほど、そういうことなんですね。アドバイスありがとうございます。
もう一点質問させてください。
データベースを書き換えるPHPスクリプトを毎日〜時に動作させたい場合、
どのような方法が挙げられるでしょうか?
これまではDNS更新ソフトDiCEを使って、サーバー(レンタル鯖)上のphpファイルをブラウザで開く動作を
指定時間に実行させるという強引な方法でやってきたのですが、
これだと常時PCを起動しておかなくてはいけないし…
CRONだとphpを実行できないらしいですし…
PHP自体の質問でなくて申し訳ないのですが、ご助言お願いします。
>>38 さん
私は、CRONで、wgetでやってます。
39はドラえもんだったのか。 と、リンク先を見て思った今日この頃。
>>38 cronからcli版のphpを起動できるよ。(他にmodule版やらcgi版がある)
更にcronからテキストブラウザを使えば、web鯖経由で起動できるし。
>>38 > CRONだとphpを実行できないらしいですし…
これはWebページとしてのPHPの話だよな?
普通に、バッチ処理として動くCLIのDB更新PHPスクリプトを書いて
それをcronで呼び出せば済む話だと思うぞ。
45 :
nobodyさん :2006/01/15(日) 18:27:39 ID:Q095YYYr
どういう構成にすっかね
part11の423の内容追加しときます。
私は、簡単なFAQはメインページに書いて、 詳しい説明が要るものはページを新たに作ればいい、と考えてます。
ざっと追加しときました。 関数名がでたらドキュメントへリンク張った方がいいかも。
50 :
27 :2006/01/15(日) 19:14:02 ID:???
>>40 ,42-43
example.phpがデータベースを更新するスクリプトとしたら、
00 19 * * * /usr/local/bin/php /home/example.com/public_html/example.php
のような書き方でCRONに登録したらできたみたいです。
ご助言ありがとうございました。
51 :
38 :2006/01/15(日) 19:15:13 ID:???
27=38です、見にくくなってすみません。
>>50 そんだけの話かよorz
その場合、できれば > /dev/null って末尾に付けた方がいいぞ。
まー、誰もrootのメールなんて見てないのかもしらんけど。
>>33 php.iniの以下の項目を設定する。
default_mimetype = "text/html"
default_charset = "Shift_JIS"
以下もやっておいた方がいいかな。
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_output = SJIS
mbstring.encoding_translation = On
php.iniがいじれない場合は、Apache側(httpd.confかhtaccess)で以下の書式で設定。
php_value 項目 値
株価分析みたいなサイトを作れないか、と検討してるんですが、 過去の全銘柄の日々の株価を全部掲載してるサイトってないでしょうか。 図書館行けばありますか? また、日々の最新株価を汎用フォーマット(RSSとかCSVとか)で配布している サイトってないでしょうか。 楽天のRSS取得ソフトというのは調べて見つけましたが、生のデータがほしい。
あれ、汎用質問スレかと思ったらPHP専門だった・・。 せっかくなので知ってる人いましたら教えてください。
知らない
>>54 そんなデータが抜け目なく揃っていたら商品として十分な価値があるので、
フリーでは転がっていないと考えるのが懸命。
証券会社とかが提供しているトレーディングツールの意味がなくなるし。
すんません、メールアドレスのチェックをしたいんですが
ereg("^[a-zA-Z0-9_\.\-]+@(([a-zA-Z0-9_\-\.]+\.)[a-zA-Z0-9]+$)",$mail)
の場合
[email protected] みたいに.が二つある場合はtrueなんですが
[email protected] のような.がひとつしかない場合はfalseを返してしまいます。
ともにtureを返したいのですがどうすればいいでしょうか?
>>57 株価自体に著作権はないし、どっかに落ちてるかと思ったんですけどね。図書館行ってみます。
>>58 ^[a-zA-Z0-9_\.\-]+@(([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9_\-]+)(\.[a-zA-Z0-9]+)?)$
括弧は本当に必要?おれPerlだからまちがってたらごめんね。
>>54 天気とか株価とか為替とか、あの手の情報をネットで提供してる会社は多いよ。
勿論"有償"だが。
>>60 著作権の問題じゃなく、それだけの情報を保持するだけの
労力とサーバー維持費は並大抵のものじゃないから
無償でそんなの作れると考えるのは浅はかだろう。
ま、頑張って図書館の新聞でも漁ってください。
64 :
38 :2006/01/16(月) 02:58:36 ID:???
Header()のLocationでページ遷移した後に、 あらかじめ設定しておいたメッセージを表示するには、 どういった方法がよいでしょうか? セッションは使いません。
>>38 ごめんなさい。探し方が悪かっただけでした。丁度、ご紹介のリンク集に自力で行き着いたところでした。
投資ブームですからね。なんか面白いことできないかなあ、と。市況情報のカレンダーをiCalendarで配信とか。
>>62 実は天気予報は有償配信を受けたことがあります。
予報は予報士の専売特許(法にふれる)なので有償は当然ですね。月々相場10万以下でFTP配信でした。
過去のデータは無償配布してるところもあるかもだけど、
どちらにしても膨大なデータなので無償配布は物好きですね。
すれ違い、すみません。株式板とPerlスレに戻ります。
>>65 Location先のURLにGETで値を渡す。
>>67 任意の日本語メッセージ文を設定したいんですけど、
それをURLエンコードしてもGETで送りたくないし、
それって、実際の処理結果と一致するとは限らないことになるので、
そういう不完全な方法は取りたくなく・・・。
どうせあれだろ。 form.php → exec.phpとかで投げて、 項目にエラーがあればexec.phpで表示、 大丈夫なら処理して、form.phpにLocationで戻すってやってて、 クライアントから「完了したら完了したメッセージを出してくれ」とか来たオチっぽいな。
>>68 そういう条件があるなら最初か(cy
ならGETでユニークIDを渡して、そのIDに従った処理を
受け側のスクリプトでさせれば?
クッキーを使用しないSESSIONと同じ事だけど。独自SESSION。
前段にLBとか入れてhttpdを分散させてる場合はSESSIONと同様に、
IDと情報の結び付けを共有する仕組みがないと駄目だけどね。
71 :
nobodyさん :2006/01/16(月) 08:13:40 ID:N8Tn4EdB
あるページを同時に参照した時に 2人目以降の画面では内容を変更できないように読み取り参照みたいな形で 開きたいのですがこういうことってPHPでできるのでしょうか? それともwebサーバの機能になってくるのでしょうか?
>>65 Location先が同じホストだったらincludeかrequireでつなげた方が
>>64 cronで実行したプログラムが標準出力に何か出力してると
それがそのサーバーのrootアカウントにいちいちメールで通知されてる。
実行ログやエラー情報ならともかくHTML出力なんて記録しても意味ないだろうから
cronの実行プログラム末尾に > /dev/null をつけて出力を出さないのが常道。
>>71 JavaScript(かそれに類するクライアントスクリプト)+PHPでできんじゃないの?
そのページの表示中はバックグラウンドで一定間隔でサーバーに接続中であることをリクエストし続けて、
そのリクエストが入ってる間にページ表示のリクエストがあった場合は読み取り専用の表示を返す、とか。
Ajaxとかで似たようなことはやってんじゃないでしょうか。
>>71 ページを読み取り参照ってどういうことだ?
Wiki かなんか作ろうとしてるの?
>>75 単にフォームの更新ボタンを表示させないとかそんな程度の話なんじゃねーの?
同時参照で2人目以降っつーのもよく分からず 例えばどれだけ時間の間隔が開いてたら2人目以降も「読み込み参照」 じゃなくてもよいのか? あと、同時にリロードしたら今度はその「読み込み参照」が 別の人に回る可能性もあるんだけどそれでもいいのか? (たぶんダメだろう)
78 :
nobodyさん :2006/01/16(月) 11:42:40 ID:cEjGfkGL
フォームで入力してホームページの一部分を更新したいと思っています。 PHPを使えばできますか?
>>78 釣りなのか…?
BBS、blog、CMSなどがまさにそれ。
>>78 PHPだけでやるなら
>>77 みたいに、一定時間が経過するorフォームからのリクエストを受けるまで、他からの更新をさせなければ良い。
”編集には入ったけど更新せずにブラウザを閉じた”みたいな時に早く次の人に順番を回したければ
>>74 みたいな事が必要。
81 :
nobodyさん :2006/01/16(月) 12:05:16 ID:cEjGfkGL
>>79 80
PHPで、できることがわかりました。
ありがとうございます。
PHP初心者でもプログラムできるものでしょうか?
参考になるURLや書籍などがありましたら
教えてください。よろしくお願いいたします。
83 :
79 :2006/01/16(月) 12:23:29 ID:???
>>81 誰でも最初は初心者なので、できるといえばできる。
ただし、それなりに長いプログラムを書くことになるので、いきなりできるわけではない。
やりたいことが伝わってこないので何とも言えないけど…。
新規に作る必要があるのかどうか検討すべき。
やりたいことがすでに公開されているツールでできるなら、そちらを利用した方が手っ取り早い。
wiki、blog、CMSといったキーワードでググってみるがよろし。
84 :
nobodyさん :2006/01/16(月) 12:31:42 ID:PmlJdI8i
質問です。 php4.4.2が出たのですが、php4.4.1であったmb_send_mailで件名が文字化けするというバグは修正されたのでしょうか? よろしくお願いします。
>>84 直ったよ。
changelog読め。日本語訳も公開されてる
86 :
nobodyさん :2006/01/16(月) 12:56:13 ID:PmlJdI8i
>>86 #33720のバグ修正 (mb_encode_mimeheader がマルチバイト文字に対して機能しない). (Rui)
>>87 ありがとうございます。
なるほど、件名はmimeheaderなんですね。
89 :
nobodyさん :2006/01/16(月) 13:26:34 ID:BuN0Lcur
phpunit 0.5を使ってテストをやろうと思い、
インストール後
PHPUnit Cookbook
http://sourceforge.net/projects/phpunitcookbook/ のサンプルコードを使ってテストしたところ
ブラウザには何の表示もされず、テスト結果が表示されません。
(htmlソースも表示されません)
エラー表示もないので原因がつかみにくいのが現状です。
原因がおわかりの方、ご教示お願いいたします。
開発環境
OS:windows2000
PHP:5.1.1
phpunit: ver 0.5
Apache: 1.3.33
90 :
71 :2006/01/16(月) 13:27:37 ID:???
>>72-77 みなさんすいません、意味がわかりにくかったですね。
えと、あるwebシステムを作っているのですが
一人目Aさんが最初に開いた場合はその人ではフォーム画面(編集可)を表示させ、
Aさんがそのシステム内のページを見ている時は別のBさんが開くと編集不可のページ内容を
出力したいのです。出力するデータはみんな同じです。
Aさんが閉じた後はBさんがリロードもしくはCさんが開けばまた編集できる画面を表示させたいのです。
編集不可のページはreadonlyの形でもいいし普通にべたで出力してもかまいません。
こんなことする理由は複数の人がページを開いておりおのおので変更を加えた場合に整合性がとれなくなると
言うことなんです。
こんな感じでわかりますでしょうか?? ややこしくてすいません。
>>90 Aさんが閉じた「直後」には他の人が編集可能なようにするなら、
JavaScriptなりFlashなりJavaAppletなりを介在させないと難しいと思う。
楽に実装するなら、Aさんが開いてから1時間はその人しか更新できない、
という時間制限方式にする方法かな。
>>93 php.ini で
display_errors = On にしているんですがエラーが表示されません。
他のスクリプトで文法ミスなどやらかした場合はエラーが表示されます。
>>94 error_reporting(E_ALL);
A さんに編集の意思がなく閲覧している場合も B さんは編集できなく なるわけだけど、そんな使いにくいものでもいいの? つかそういうのは更新の処理によって変わるもんだしなぁ。 閲覧用にページを出力する段階で切り替えるもんではないと思うが。
>>94 単に PHPUnit の書き方を間違ってるだけと思われます
>>95 何も表示されませんでした。
>>97 やはりそうなんでしょうか。
サンプルコードをそのまま使ったのがまずかったのかもしれません…。
99 :
90 :2006/01/16(月) 14:29:27 ID:???
>>96 そんなものでいいです。
他にいい案とかあれば教えてほしいですけど。
とりあえずは上に書いたように変更処理さえ問題なければ^^;
>>98 そもそも謎なのが、PHPUnit 0.5 なわけだが。
PHPUnit の stable は 1.3.2, PHPUnit2 で 2.3.4 なわけで
いったい何使っての?
>>96 目的は「編集不可のページを表示すること」って書いてるんだから
その内容は「現在、他のユーザが編集中です」ってメッセージでもいいんだろうさ。
>>90 その手法だとAさんが作業終了したことをどサーバ側にしらせる手法が必要になる。
それが先に上がっているJavaScriptなんかだったりするわけだ。
さもなくば単純にAさんの読み込みからN分間他者に編集権を与えないようにするか。
ただ、整合性を保つという目的を果たすだけなら
1.編集前のバージョンとユーザを結びつける
2.編集画面を出力
3.ユーザが編集・更新ボタン押下
4.ユーザに結び付けられた編集前のバージョンと保存されているバージョンを比較し
同一なら保存・バージョンを繰り上げる さもなくば破棄
簡単にするためにバージョン情報としてタイムスタンプを使うのが簡単かな。バージョンナンバー振ってもいいけど。
編集画面開いてた人が必ず「編集完了ボタン」をクリックすること、 って縛りを入れちゃうのも手かもな。 それが通知されたら以降の最初の人が編集画面を開けるようになる、と。
>>104 それが出来れば苦労はない
ブラウザ開きっぱなしで寝るやつやボタンを押さないでブラウザを閉じるやつが続出するから困るんだ。
>>105 セッションで管理すればいいんじゃないの?
つまり 90 は実現が面倒なうえに使いにくいシステムを作ろうとしてるってこった
使いにくさとかに関しては、閲覧画面と編集画面分ければいいだけだから、あんまり関係ないのでは? やっぱ、Aのブラウザが編集中であることをJavaScriptのHTTPアクセスで一定時間毎に伝えるってのが、現実的な話かな。
includeがうまく働いてくれません。エラーが出てしまいます。 セーフモードだからでしょうか?
>>109 セーフモードは関係ない。
とりあえずエラー出してもらわんとわからんよ。
考えられる原因としたら、include文がおかしかったのか、
includeするファイルの中身がおかしかったのか、
まぁもう少し確認してみれ。
>>108 元の話を無視していいならそりゃ使いやすさと関係ないわな
113 :
abebo :2006/01/16(月) 19:32:32 ID:Oa1MF5mS
マイポップってどうやって消すか知りませんか?
なんだそれ?
115 :
abebo :2006/01/16(月) 19:39:14 ID:Oa1MF5mS
右下に小さい画面で勝手に出てくるやつです。 スパイウェアみたいなやつに引っかかってから、どうやっても消えないのです。
116 :
nobodyさん :2006/01/16(月) 19:40:06 ID:cEDpmcYp
○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○ このレスをみたあなたは・・・3日から7日に ラッキーなことが起きるでしょう。片思いの人と両思いになったり 成績や順位が上ったりetc...でもこのレスをコピペして別々のスレに 5個貼り付けてください。貼り付けなかったら今あなたが1番起きて ほしくないことが起きてしまうでしょう。 コピペするかしないかはあなた次第... ○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○
今一番起きてほしくないこと?
>>116 の再降臨だな。
そいつは困るな
ネットワークカメラの画像を数秒置きに継続的に保存したいんですが PHPだとブラウザから読みに行ったタイミングでしか保存できません・・よね? ブラウザつけっ放しとか非現実的過ぎるし、となるとVB.NET使う方法がいいんでしょうか? VBやPHPで出来れば嬉しいんですが・・・まだ勉強中なので出来るかどうかも判断つきませんorz ヒントだけでの一つよろしくお願いします
while(1) { save_camera_pic_to_disc(); sleep(60); }
121 :
38 :2006/01/16(月) 23:45:37 ID:???
>>73 わかりやすい説明ありがとうございます。
rootにメールが行ってるってことは、レンタルサーバーで複数ユーザーで共有している場合だと、
その共有サーバーの管理者(管理会社)にいちいちメールが行っていると言うことですね。
なるほど、それは無意味で迷惑でしょうから > /dev/null つけます。
\をpostで送ってechoで表示したら\\になってたんですが、 これはどういうエンコード処理でしょうか?元に戻す方法教えてくださいませ
>>119 つ[タスクスケジューラ]
VBやVB.NETの話をしたければ別のスレ
PHPでやるならマニュアル良く読め(php-cliのところ)
125 :
122 :2006/01/17(火) 04:22:15 ID:???
magic_quotes_gpcをoffにしてphpinfo()でも確かにoffになってる こと確認したけど、同じ状態ですorz
<?include 'count.php';?>これでは問題なく使えるのですが、 <?include 'count.php?today';?>などとすると Warning: main(/home/***/public_html/php/count.php?today): failed to open stream: No such file or directory in /home/***/public_html/index.php on line 170 とエラーが出てしまいます。 なぜでしょうか?
>>127 count.php?today ってファイルがないから
その名前のファイルは、そこにはないから。
最近、XREA+借りたら無条件でPHP5でした。 今までPHP4サバ使ってたのでとりあえずそのままアップしてみてたら ことごとく全部表示すら出来なかった・・・。 そして調べてみるとob_start("ob_gzhandler"); をコメントアウトすると 表示できた。 という事はPHP5でgzip圧縮は駄目になったんでしょうか?
include/requireはphpスクリプトを実行するコマンドではない。
単に取り込むだけ。
実行したければfile()を使う。おそらく
>>127 が期待している動作は得られないけど。
>>130 XREAの広告の影響
XREAの昔のサーバはPHP4だが同じく使えない
>>132 >>133 なるほど・・では試用期間中では使えないのですねぇ。
ではPHP5サーバでも問題ないかな・・・
よく「●●のスクリプトはPHP5じゃ動かなかった」という報告を
目にしますが、そんなに違うものなのでしょうか?
135 :
127 :2006/01/17(火) 13:10:58 ID:???
>>128 count.phpはあるんですよ・・・
>>131 え。。そうなんですか・・
ってことは複数のファイルに分けてやらないと駄目って事ですか?
× count.php?today count.php?all
○ count-today.php count-all.php
ってことですよね?
>>135 include() 以外の方法を考えるのが正解
139 :
127 :2006/01/17(火) 13:54:46 ID:eeDcDeq6
>>138 え、なんかありますか?
実はコピーライト的なものを各ページに挿入したいんですよ。
その内容が頻繁にかわるのでこの方法しかないかなぁと。。。。
jsは使いたくないんです。
>>139 だったら ?today って何よ。必要ないじゃん。
143 :
127 :2006/01/17(火) 14:50:09 ID:eeDcDeq6
>>140 今後ページによって表示する内容を変える事を考えているんでそのほうが楽かなと。。
>>141 なんかい表示されたかのカウントも行いたいので・・・
メソッドの戻り値で複数の値を返すようにしたいんですけど 配列とかにして返すしかないんでしょうか? 普通にreturn(値1,値2)ってやったらエラーでたので。
複数の値が必要な場合は配列で返すのが普通だと思うよ。
>>142 あー。
フラットにだらだら書く方式にしたんだ。
個人的にこれはやめたいなぁ。
分けたら見つけにくくなるかもしれないけど、それは検索を
使わせればいいんだし。あ、上部のメニューに検索窓ほしいね。
FreeBSD の Q&A みたいに Q と A のセットで1ページになってた方が
Google とかも頼りやすいし、いいと思うけど、どお?
あと、font-size は 100% を希望
>>127 count.php には 関数を定義して、その関数を引数付きで呼びなされ。
include() 一発でやろうと思わず、include() して関数呼べばいいだけの話でしょ。
スーパーグローバル変数を使ってもできるけど、オススメしない。
>>147 list() で受け取るってんじゃダメなのかな?
>>149 返す側は配列。受け取る側は配列またはリスト。
今は返す側の記述方法の話をしている。
151 :
nobodyさん :2006/01/17(火) 16:28:35 ID:DhtK0Iv+
DBの勉強がてらアクセス解析を作っているんですが、どのようにログを取って行くのが一番スマートか解りません。 条件としては、表示させる時に日ごと、月ごとのトータル数を出したいと思っています。また、1日のアクセスは500件を想定しています。 あと、SQLiteで現在は作っていますが、最終的にはPDOを使って他のDBにも対応したく思っています。 ですので、1DBに1月として日ごとテーブルを作るのか、1日毎にDBとテーブルを作るのか、どっちがようのでしょうか。 それとも他にスマートな方法は有りますでしょうか。 条件や状況によって変わってくるとは思いますが、ご教授下さい。
>>127 $_SERVER['QUERY_STRING'] = "today";
include "count.php";
>>151 普通、データベースの構造を最適化すればテーブルとテーブルの列は増えない。
頼むからちゃんと正規化しろ。一応言っておくと
>>153 は正解。
リーダー「いいよ、正規化なんて。ハードの性能がいいんだから」 ↓ そのままリリース。3ヶ月ぐらいする。パフォーマンスが悪くなる。 ↓ マネージャー「なんで正規化しておかねーんだよ、このカス」 ↓ クライアントからクレームがつく。 ↓ マネージャー「経緯を説明しろよ、このクズども」 オレ「正規化をしようとしたら、リーダーがー…」 マネージャー「それでもやるのが普通だろ、死ね」 速攻辞めました。今は靴屋のバイトやってます。こっちがずっとhappyです。
156 :
nobodyさん :2006/01/17(火) 17:44:29 ID:l0tWWV9j
いつからここはヲチ板になったんだよ…
>>154 これって正規化の問題か?
テーブル内の古いデータを掃除しない、運用の仕様自体に問題があるんじゃないの?
>>156 自身が痛いのはどこでヲチればいいですか?
>>156 初心者が見ることを前提に
htmlspecialcharsの使用を習慣づけて貰う為の記述だろ。
彼は基本的にセキュリティ屋だし。
なんつーかさ、彼の書く内容って 間違ってはいないんだけど 好きになれないよね。もちっと別の言い方ってもんがあっぺよ。 とおもう
162 :
軟式PHP :2006/01/17(火) 17:54:29 ID:???
>>160 彼は世の中の間違ったSSL認識をクレーマーのごとく指摘するのが仕事さ。
俺がおすすめするセキュリティの本は「PHPサイバーテロの技法」。
>>161 文章にするときつくなる人だよね。
直接しゃべると非常に柔らかい人なんだが。
>>162 セキュリティー屋ってのは、そういうもんさw
>>161 まぁあの書き方では当事者や関係者が納得して非を認めるように
なるのは難しいね
単に読み物として読んでる分には面白いけど
>>158 テーブル内の古いデータを掃除しない、なんて
>>151 のどこに書かれてるんだ?
>>156 一部現実味のない理想論なのは問題あると思うがまぁここではどうでもよい。
ヲチはヲチ板で。
完璧を作るか、動くものを作るか、という違い
167 :
nobodyさん :2006/01/17(火) 18:15:13 ID:DhtK0Iv+
>>153-154 え!?
では、ある程度肥大化したら別途保存するなり古い記事を削除するなりすると言う事ですか?
そうです
>>165 そういう理由もなしに日別に分けるなんて発想はふつーでねーし。
正規化しようとしまいとな。
170 :
nobodyさん :2006/01/17(火) 19:16:43 ID:DhtK0Iv+
>>168 そうなんですか。。
レスありがとうございました。
>>169 すみません。
今までログファイルに書き出す方法でやっていて、色んなところの配布しているソースを見て日ごと月ごとというやり方を真似していまして。。
だからいくらDBでも肥大化したら重くなりもするんだろうし、と言う考えで今回の質問に至った次第です。
こんな質問ですが為になるレスありがとうございました。
1日500レコードぐらいなら、数年は過去データ消さなくても普通に動くと思ふ。 MySQLの話だけど。
172 :
nobodyさん :2006/01/17(火) 19:23:16 ID:tDsfmN2q
簡単な認証フォームとその処理を行うPHPを、サイト内の全てのHTML文書に埋め込む形で利用しているのですが、 その中の1ページにPerlで作成した掲示板を設置したいと考えています。 最初はCGIファイルの中にprintでHTMLとPHPを出力しようと試みたのですが、PHPが実行できずにエラーとなってしまいました。 上記のPHPと同文書内に、掲示板を出力させるPHPを埋め込むにはどうすれば良いでしょうか? 又は、掲示板を設置するファイルをCGIにして、Perlのプログラム内でPHPを実行させる方法でも良いのですが…。 ご教授お願い致します。
173 :
nobodyさん :2006/01/17(火) 19:46:03 ID:eeDcDeq6
PHPをCGIとして・
174 :
_ :2006/01/17(火) 19:46:17 ID:qQ+v1Jzp
初心者です。PHPの勉強で、ブログかショップを作ろうと思います。どっちが比較的簡単ですか?
ブログだろうね。その前にもっと簡単なのを作れないと無理だろうけど。
とりあえず勉強してから考えてみてはいかがでしょう。
>>172 そのPerlのCGIをPHPからsystemで呼び出せば?
178 :
nobodyさん :2006/01/17(火) 23:16:30 ID:klTcMYuU
PHPでクライアントから送られてきたデータが 半角の英数字と , と / のみか確かめるにはどうしたらいいのでしょうか?
正規表現一発
先に言っておこう、正規表現に関しては正規表現スレへ
181 :
nobodyさん :2006/01/17(火) 23:58:58 ID:xKRv/KZl
MySQLか、PostgeSQLどっちのほうを使ったほうが吉? サーバーはXREA
182 :
nobodyさん :2006/01/18(水) 00:03:10 ID:zQtemvMy
PHP4.4.2-dev〜PHP4.4.2 Windows XP/Apache2.0.52〜Apache2.0.55のどの組み合わせでも
$foo = file('
http://example.com/ ');
と、HTTPプロトコルを使用するとクラッシュしてしまいます。
Windowsユーザーで同じ現象の方いらっしゃいますか?
本家のChangeLog、Fixed Bug #34359 で修正済となっており、
Linux版では問題ありませんでした。
当WindowsサーバーでもPHP4.3.11 では問題なく動作しています。
同じ現象の方がいらっしゃればバグレポートを出したいと思うのですが。
183 :
nobodyさん :2006/01/18(水) 00:06:13 ID:zQtemvMy
>181 Postgres をお勧めします。
185 :
nobodyさん :2006/01/18(水) 00:13:20 ID:zQtemvMy
>184 レスありがとうございます。 本スレ見落としてました。すみません。 バグのようですね…。報告&4.4.3待ちます。
186 :
184 :2006/01/18(水) 00:19:59 ID:???
俺の日本語システムにバグがorz
>>183 >>181 じゃないですが面倒でなければ両者を比較したときにPostgresを選んだ理由っていうのを
教えてもらってもよろしいでしょうか?
俺はMySQLしか使ったことないので・・
ブログってXMLとかフィードバック・トラックバックとかややこしくない?
じゃあ掲示板
$file_nameにはファイル名称の変数が事前に定義してあります。 mbstring関数は有効になっています。 $file = fopen($file_name,"r"); $data_size = 0; for ($line_num = 1 ; !feof($file) ; $line_num++) { $line = fgets($file); $line_size = mb_strlen($line); $data_size = $data_size + $line_size; if ($data_size >= 512 * $page_num - 1) { if ($data_size < 512 * $page_num) { $line = str_replace ("<","<",$line); $line = str_replace (">",">",$line); echo $line; } } } と書いて実行したものの、何も表示されません… どうすれば現状を回避できるのでしょうか…orz
>>192 お前のやりたいのはひょっとして
$data_size >= 512 * ($page_num - 1)
じゃないのか
>>192 >どうすれば現状を回避できるのでしょうか…orz
小学校の算数からやり直す
196 :
183 :2006/01/18(水) 14:07:51 ID:zQtemvMy
>>187 Mysql4.1からはUnicodeがサポートされていますが、それ以前はUnicodeがサポートされていませんでした。
SJIS、EUCでは必ずどこかで文字化けが起きる(5C文字や第2水準漢字など)ので
私がコーディングする際は内部をUTF-8で統一するようにしています。
また、PostgreSQLではplpgsqlでストアドが作れますので、
プログラムの質を上げることができます。
PostgreSQLはMySQLよりもUnicodeに強い。
複雑な処理をストアドで行える。
が選択の理由です。
バグをあまり気にしない環境・掲示板程度でしたらMySQLの方が早いですけど…。
内部エンコーディングの今の流行はUTF-8ですか?
198 :
196 :2006/01/18(水) 14:28:54 ID:zQtemvMy
はやりかどうかはわからんけど おれの周りは全部UTF-8だな。文字に関するトラブルは特にない希ガス PostgreSQLは8.1になってMySQLレベルにまで速くなってきたな。 複雑なクエリなんかはストアド使ったりして構造をわかりやすくしたりできるな あと、 >>バグをあまり気にしない環境・掲示板程度でしたらMySQLの方が早いですけど…。 「速い」の間違いな。国語勉強しとけよ。韓国人に笑われるから(何
2chの書き込みなんて脊髄反射でやるんだから いちいち誤変換なんて確認したことねーぞ
201 :
197 :2006/01/18(水) 14:45:27 ID:???
お返事ありがとうございます。 いままで数年、内部エンコーディングはEUC-JPでしたけどUTF-8に乗り換えることにします。 現在、日、中、英の3ヶ国語に対応しなければならない案件を抱えてまして 出力はUTF-8、DBもUTF-8、内部はEUC-JPというへんな状況で苦しんでました。 これで楽になれます。
なんで何処の下らない質問系スレは住人が荒いの ウザい回答するぐらいなら答えんなボケ
あっかんべーだ ;-P
>>204 "日本語で"つうのが、日本語も対応しているという意味なら無料のものもあるが、
日本語で手取り足取り導入解説からサポートまであるという意味のものなら、それは無い。
日本人が作ったBコードコンパイラはあったと思うけどね。
Zend Encoderは詐欺価格だからなぁ。 安いのは英語で良ければSource Guardianかな。
207 :
nobodyさん :2006/01/18(水) 21:06:39 ID:l30CFxYx
php初心者です、おしえてください。 他のファイルにstaticメソッドを宣言して、インクルードするとエラーが起こるのですが、 なぜでしょうか、staticじゃないのは普通に呼び出せるのですが、 宜しくお願いします。(_ _)
>>207 うちではエラーにならないから、エラーが発生する最低限のコードくらい書いてくれ
210 :
207 :2006/01/18(水) 21:52:41 ID:l30CFxYx
>>208 ,209
すみません、ソース、本など会社で、
大体下のような感じだと思います。
うろ覚えで書いてるので間違ってるかもしれませんが、
<?
require('staticTest.php');
$data = ->testfunction();
print $data;
?>
<?
class staticTest{
public static function testfunction(){
$data="1";
return $data;
}
}
?>
211 :
nobodyさん :2006/01/18(水) 23:12:39 ID:zipv+nb6
locationで一回飛ばして、HTTP REFERERをとると、飛ばす前のURLになりますよね。imodeの場合うまくいかないのですが。ezwebだと普通に$ SERVER[HTTP REFERER]でとれるのですが
そうですか。 ところでスレタイは読まれましたでしょうか。
>>207 > $data = ->testfunction();
こんなの Syntax Error だ、アフォ。
マニュアルを全然見てないだろ。
いますぐ
>>1 からマニュアルを参照してくるんだな。
215 :
nobodyさん :2006/01/19(木) 03:12:55 ID:wmue64mu
文字コードEUC-JPで
下記のソースを書き、ブラウザで見てみました。
echo("<html xmlns=\"
http://www.w3.org/1999/xhtml\ ">");
echo("<head>");
echo("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>");
echo("</head>");
echo("<body>");
echo("テスト");
echo("</body>");
echo("</html>");
すると
ブラウザがUTF-8ではなく、
EUC-JPでHTMLを読み込んでしまうのですが、
どうすれば解消できるでしょうか?
テストのとこをUTF-8に変換して出力すればいいんじゃにの?
mb_http_output("UTF-8")では?
>>216 PHP.iniは
default_charsetEUC-JP
mbstring.detect_order auto
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding no value
mbstring.language Japanese
mbstring.substitute_character no value
という感じになってますが、
これはちょっとワケ有りで変更でないのです。
そのためソース側で対処しないといけません。
>>217 echo( mb_convert_encoding("テスト", "UTF-8", "EUC-JP"));
とやると、「テスト」だけはUTF-8に変換されますが、
ブラウザの読み込みモードがEUC-JPで読み込んでしまうのです。
>>218 default_charsetがEUC-JPになっているのが
原因だと思い、同じようにやってみたのですが、
どうしてもブラウザがEUC-JPで読み込んでしまいます。
>>220 php.iniじゃなくて「ウェブサーバの設定」だぞ
223 :
220 :2006/01/19(木) 05:21:24 ID:???
>>221 おっと、ウェブサーバーの設定でしたか、
ウェブサーバーの設定は・・
・・不明です。。。お恥ずかしいですが。。
唯一わかっているのはApache2系ということだけです。
PHPの関数で対応できると思っていたのですが
あまかったですか??
Apacheのhttpd.confを見直してみな。 あとxhtmlで書くなら、ちゃんとDTDで定義しとこうな。
>>215 <meta>タグなんかで指定しないでちゃんとheader()で指定しろってこと
ブラウザはresponse headerの方を優先するからね
配列をsubmitで飛ばして受け取りたいのですがどうすればよいのでしょうか? 一要素ずつhiddenで記述してやるしかないのでしょうか? 簡単な方法があればよろしくお願いします。
カンマ区切りの文字列にして飛ばして、アプリ側で配列を作るってのはだめ?よくやるんだけど
>>226 session使う
serializeする
俺は普通にforで数の分だけhiddenを生成しちゃうかな。 それで困るほどでかいデータならそもそもsubmitで飛ばさない。
230 :
226 :2006/01/19(木) 18:43:27 ID:???
>>227-229 なるほど、十人十色なんですね。
参考になりました。ありがとうございました。
>>230 十人十色だが、セッションを使うのがベター。
hiddenで持ち回すと汚染される可能性が出てくる。
セッションだって汚染される可能性あるぞ。 ユーザーのクッキーから情報を取得してる場合だけど。
何でもセッションに頼っちゃうと今度はウインドウを2枚出したときとかに ややこしい状態になることがあるんで、安易にそれをベターというのもどうかと。 「そのユーザにとって最新の状態は常にどの画面でも同じもの」ってデータ以外は セッションに入れるべきじゃないと思うんだけど?
"A B" 「A」と「B」の間にあるスペースを 1個のスペースに置き換える場合、 for(),while()を使わずに処理する方法ってありますか?
あります
236 :
234 :2006/01/20(金) 04:09:04 ID:???
php5をsuse linuxにインストールする方法を教えてください
スレ違い
>>238 preg_replace("/( | )+/", "1", "A B")
"1"ってなんだ(´・ω・`) preg_replace("/( | )+/", " ", "A B")
243 :
nobodyさん :2006/01/20(金) 08:36:42 ID:kKXqMXNs
全然わからない!教えてください 仮に○○.phpってファイルをアップロードしたのだけど、 実行してみると「ページを表示できません」ってなってしまう。 何かほかにやらないといけないの? 助けてください。
>>243 そもそもphpが使えるサーバーにアップロードしてるのか?
245 :
軟式PHP :2006/01/20(金) 09:14:07 ID:???
>>244 いやいや、PHP云々以前にアップロード出来ているのかが怪しい
たまたまアップロードして確認しようとした時、 ネットワークがきれてたんじゃないの? phpが使えない鯖なら、phpの中身が表示されるか ダウンロードマネージャが起動するはず。 404なら「ページが見つかりません」と出るはず。 phpは特に鯖側でパーミッションとかいじったりしなくても使える。 (ログファイルとかは別だけど)
>>247 さくらとか、phpがCGIでしか動かないってパターンもあるね
何にせよ、エスパーキボンて事だな
250 :
nobodyさん :2006/01/20(金) 10:17:36 ID:VgY7exIA
ウィンドウズのローカルでphpをブラウザで見たいんですがこれはphpをインスコする以外に サーバーソフトもインスコしないとみれるようになりませんか?
>>250 もちろんです。
ただ、結果だけみたいならコマンドラインでxxxx.htmlに
リダイレクトすれば見られます。
鯖PC経由の書き込みをしない設定にすると、公式に直接飛ばす事になってしまいます。 公式に飛ばさずに直接値を渡すにはどうすれば良いのでしょうか。
あ、p2スレと勘違いした_| ̄|○
>>250 正確な用語の使い方ではないので、YesともNoとも回答ができる。
でも多分Yesだと思われ。
>>252 鯖PCって何? 公式って何? 値って何?
前提がすっぽ抜けすぎてて何が聞きたいのかまったくわかりません。
誤爆かよ!
257 :
254 :2006/01/20(金) 11:08:52 ID:???
ごめん。多分「なりません」が正解ということ。
258 :
nobodyさん :2006/01/20(金) 14:14:53 ID:+oUGIFYt
function()文で数値を戻り値として返す場合、 "で囲ってあがないといけないんですよね? function(){ return "0"; } みたいに。
>>258 数字じゃなくて数値なんだろ?なら括る必要はない。
裸で気になるんだったら()で括っとけ
263 :
nobodyさん :2006/01/20(金) 16:06:28 ID:utcSO+tE
PHP 4.4.2で eaccelerator使えてます?FreeBSDなんですが。
>>264 型を含んだ比較の結果がかわったりする
仕様上の型でかえすべき
>>268 preg_replaceで相対パスを絶対に置き換えれば言い。
270 :
268 :2006/01/20(金) 19:42:50 ID:???
>>269 preg_replaceを使用するということは
fileで一度ソースを読み込んで置換してという
順序になると思うのですが
readfileでやることは不可能なのでしょうか?
get? post? あたりを駆使してムリでしょうか?
273 :
268 :2006/01/20(金) 19:52:51 ID:???
ttp://pear.php.net/manual/ja/package.http.http-download.php これとsetGzip()で特定のディレクトリを圧縮しつつダウンロード、
ということをしたいのですが、以下のどこがおかしいか
教えてくださいませ。
疑問点はまずsetFile()がディレクトリを指定するのが不可能っぽいですが、
解決方法はないか、setFileをファイルで試しても
setGzipの部分が上手く動作していないようです、何か間違っているでしょうか?
お願いしますm(_ _)m
<?php
require_once("HTTP/Download.php");
$dl = &new HTTP_Download();
$dl->setFile($directory);
$dl->setGzip(TRUE);
$dl->setContentType('application/x-gzip');
$dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
$dl->send();
?>
276 :
nobodyさん :2006/01/20(金) 23:10:38 ID:yP1RJnKV
入力された文字が例えば100文字以上なら100文字以降なら切り捨てて保存する場合どうしたらいいのでしょうか?
sedコマンドについてです。(sedじゃなくてもいいんですが) tab区切りのテキストファイルがあるんですが、そのファイルの 先頭の列のみ残してあとのデータを削除したいんです。 sed "s/\t*//g" test.txt ではうまくいきませんでした。(削除されないファイルが出てきます。) 誰か、、、よろしくお願いします。
279 :
278 :2006/01/21(土) 11:04:40 ID:???
あ、質問すれ間違えました、、、すいません
ロギングプログラムを作ろうと思ってるのですが、 log.txt(300MB)で fopen("log.txt", "a")した場合ってメモリ300MB消費されませんよね? 逆に fopen("log.txt", "r")としたらメモリ300MB消費される、 この考えあってますでしょうか?
>>280 > fopen("log.txt", "a")した場合ってメモリ300MB消費されませんよね?
合ってる。
> fopen("log.txt", "r")としたらメモリ300MB消費される、
間違ってる。正しくはその後の処理方法次第。
>>280 やってみりゃ分かるが、fopenはファイルを開く「準備」をするだけ。
メモリに読み込むのは別の関数のお仕事。
283 :
nobodyさん :2006/01/21(土) 16:40:25 ID:1jcdXAZV
DBからとり出したデータに特定の文字列があるかどうか調べるのはfor文を回してeregなどで使うのでしょうか。
何のための DB なんだ…
今月から1ヶ月前の月を算出する最も簡単な記述方法ってどんな感じでしょうか? unixタイムスタンプから1か月分引くとかいう面倒な方法しか 思いつきませんでしたorz
>>286 $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
echo date ("M-d-Y", $lastmonth);
これでいいのかな・・・?
>>286 print date("Y/m", strtotime("-1 month"));
>>286 じゃないけど、ふと思った。
月から1引くやり方って、1月の時も大丈夫…なように作ってあるはずだよねぇ。
初めてmktime()を使った時にここまで面倒見てくれるのかー!って感動した記憶があるよ。 マニュアルを読まなかったら、自力で繰り上げやら繰り下げ処理を書いたり、 その辺の面倒を見てくれそうなカレンダーライブラリを探そうとしてただろうなぁ。
おまえの面倒はオレが見るよ。
293 :
nobodyさん :2006/01/21(土) 23:37:40 ID:E6I0jSws
ポッ(照)
下らない質問ですが、PHPで行列は使えますでしょうか…。 例えば 10 11 12 13 14 15 とあったとすると 両者の合計が出来るだけ平等になるように二つに分けたいのです。 この場合ですと 10 15 12 11 14 13 の二つに分けたいのです。 よろしければお力添えお願いします。
>>294 さん
行列問題…になるのかもです。
12種類の数字を合計値が出来るだけ平等になるように二つのグループに分けるような動作をするのをPHPによる記述で作ろうと思ったのですが、
全ての組み合わせを記述してすると12C6で膨大な記述が必要になってしまうので
何かスマートな方法がありましたらご教授願いたいです
>>294 >>296 どっちかっつーとアルゴリズムの問題だと思うので言語関係ないんじゃ…。
(これを一発で解決するような言語ってどっかにあるの?)
でも記述は長くならないと思うけどね。
長いのはループ回数&処理時間じゃないの?
そうですか〜。 ありがとうございます。一つずつ組み合わせを記述してベストな組み合わせを導いてみようと思います
301 :
nobodyさん :2006/01/22(日) 04:38:46 ID:pSXDGSqg
perlは経験しPHPを勉強中の者です。 PHPにHTMLを吐き出させたら、ソース通りに行きません。 どうなってるのでしょうか? PHP5+apache+winxpと、PHP4+apache+赤帽の2種類のマシンで試してみましたが、どうにもうまくいきませんでした。 ブラウザはIE6.0です。 現状は、EUC+LFで保存したPHPファイルをブラウザで見ようとすると、CSSで指定していた色やborderの線がちゃんと表示されない。 やりたいことは、外部呼出しを設定しているHTMLをコード通りに表示させたい。 やったことは、PHPで吐き出した画面上でブラウザのエンコードの種類をEUCからShift_JISに変えたらCSSの通りに色がついたり、borderもきちんと表示されました。 あとは、ソースの見直しとHTML単独での表示テスト。 EUCっていうのはCSSとの相性が悪いのでしょうか? PHPでちゃんとCSSの表示が上手くいくやり方を教えていただけませんか。 どうしても原因がわからないので、よろしくお願いします。
>>301 それはPHPがどうのこうのってのは全然関係ないと思われ。
EUCコード自体はHTMLとの相性も問題ない。
CSSにShift-JISでコメント入れちゃってるとかいうオチじゃないよな?
303 :
nobodyさん :2006/01/22(日) 05:32:34 ID:pSXDGSqg
>>302 はぅあ...
そういうオチだったorzз
普通に/* hogehoge */って囲んでたっす('A`)
これって、Shift_JISダッタンディスカー!?
>>303 …おまえ、Shift-JISとEUCって何のことか分かってるか?
perlからやり直せ
306 :
nobodyさん :2006/01/22(日) 05:51:31 ID:pSXDGSqg
>>304 お、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz
EUCが吐き出せないのってどんな文字があるんだろう('A`)
>>306 ただの文字コードだよ。分かってるんじゃないか。
なのに何故見当違いの判断をする??
308 :
nobodyさん :2006/01/22(日) 06:14:27 ID:pSXDGSqg
>>304 お、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz
EUCが吐き出せないのってどんな文字があるんだろう('A`)
CSSもEUCで保存したの? CSSの先頭に@charset "EUC-JP";とかかいとくといいんでないの?
310 :
nobodyさん :2006/01/22(日) 06:20:18 ID:pSXDGSqg
>>307 ググって見たけど、イマイチわからないなぁ。
Shift_JISとかが、文字コードだって認識はあるけど
CSSの/**/で囲ったコメント以下が読み込まれてないのは、わからないのです。
hogehogeがShift_JISで書かれてるんだろ
312 :
nobodyさん :2006/01/22(日) 06:34:32 ID:pSXDGSqg
>>309 ありがとです。。
CSSは普通にスタイルの指定をしているのみで、他の記述は一切していませんでした。
試してるんですけど、テキストファイルから日本語もちゃんと取り出せるようにするには
どうしたらいいのでしょうか?
エンコードの指定を読み込むときにするべきですか?
それとも、テキストファイル自体をEUCで保存or頭にcharset指定??
テキストファイルの読み込みってどういうやり方でやってるのさ。
315 :
nobodyさん :2006/01/22(日) 06:36:28 ID:pSXDGSqg
>>311 そのようです。
CSSの/*hogehoge*/がShift_JISのようだったんですが
どこでそれが分かるのか、確認したいのですが術を知らず。。。。orz
>>315 それなりにまともなテキストエディタを使えば今の文字コードを表示してくれる。
とりあえずWindows標準のメモ帳で読み込んで、普通に漢字が表示されたらShift-JIS。
文字化けを起こしたらEUCなりUnicodeなりのShift-JIS以外の文字。
perlからやり直せ
318 :
nobodyさん :2006/01/22(日) 06:41:07 ID:pSXDGSqg
>>314 $fuga=fopen("hoge.txt","r");
が主ですが、たまに
$fuga=file("hoge.txt");とかも使います。
それで何を持ってして「読み込めてない」と判断してるんだ? 読み込み自体には文字コードは関係ないぞ。printなどで出力すると関係するが。
320 :
nobodyさん :2006/01/22(日) 06:46:10 ID:pSXDGSqg
>>316 フリーのエディタを使ってますが今の文字コードや改行の種類は分かるようになっています。
ただ、PHPファイルの中に記述したり読み込んだりするものたち(例えば外部のテキストやCSS)のコードをどうやってPHP仕様に合わせればいいのかがググって見てもわかんないのです。
>>320 HTMLをEUCで出力してるならそれで読み込むCSSもEUCで保存しろ。
テキストファイルは処理の仕方による。読み込んでそのまま変換もせずに
出力してたり検索に使ってたりするなら最初からEUCで保存しとけ。
どーでもいいが、EUCは別にPHPの仕様じゃないぞ。その方が都合がいいだけだ。 EUCの方が都合がいいのはPerlだって全く同じだ。 同様にPHPでもPerlでもShift_JISで書けるぞ。
323 :
nobodyさん :2006/01/22(日) 06:51:09 ID:pSXDGSqg
>>319 何を持ってしてかは分かりませんが、
テキストファイルを読み込んでみたんです。それで、それをHTMLに吐き出させるようにしたのに正しく出力されませんでした。
HTMLに吐かせる前にprintで調べると、数字や小文字のアルファベットは正常にできてました。ただ、日本語のところだけは文字化けしたり、空白だったり。。
もうorzなんです。
324 :
nobodyさん :2006/01/22(日) 06:53:39 ID:pSXDGSqg
>>321 最初からEUCに変換は都合上できないので、PHP上で変換したいのですが
そういう関数がありましたっけ?
325 :
nobodyさん :2006/01/22(日) 06:59:10 ID:pSXDGSqg
>>322 そうなんですか、知りませんでしたorz
PHPはEUCで保存しないと文字化けするもんだとばかり。。。
perlをEUCで保存した経験はなかったです。勉強になりました_ト ̄|○
mb_convert_encoding()
perlからやり直せ
329 :
nobodyさん :2006/01/22(日) 07:10:10 ID:pSXDGSqg
>>326 ググって来ました!
明確な助言で超わかりやすかったです。ありがとう。
他のやつは的確な助言をしてくれませんでしたね^w^
php.netのPHPのマークの上にある白いのは何ですか?
えーと、どこで笑えばいいのかな?
>>329 HTML と CSS と文字コードの関係についてもっと勉強した方がいい
336 :
nobodyさん :2006/01/22(日) 12:29:09 ID:nt4QJioJ
初めまして。 配列をグローバル宣言するにはどうしたらいいのでしょうか?
>>336 クラス外かつ関数外で配列定義。おわり。
大抵の場合、コードの見通しが悪くなるので好ましくない。
PHPでメールを送信しようとしてます。
<?php
mb_language("Japanese");
$address[] = "********@docomo.ne.jp";
$headers = "From: *-*-*-*
[email protected] \r\nReply-To: *-*-*-*
[email protected] ";
mb_send_mail($address[$i], "お知らせ", "お知らせでした。\nThe End.", $headers);
?>
これだと文字化けしてしまいました。
日本語でメールを送る場合のエンコードはどうすればいいんですか?
ちなみにスクリプトのエンコードはShift-JISになってます。
ISO-2022-JP
第3月曜日を知るにはどうすればいいのか教えてください。 $yは年で$mは月です。 $w = date('w', mktime(0, 0, 0, $m, 1, $y)); return(23-$w); こうしたら、1日が日曜日の場合、第4月曜になってしまいますorz 急遽 if($w){return(23-$w);} else {return(16-$w);} としてるのですが、もっとスマートな方法があったら教えてください。
phpで作成したディレクトリの所有者権限を変更したいのですがchownが通りません。 ためしにsshでそのphpの所有者をrootにして実行したのですが通りませんでした。 そこで、shell_exec関数で php XXX.php >>/dev/null と書いて実行したのですが通りませんでした。 php5環境でchownを使われてる方、何か特別な設定を施されましたでしょうか。 ちなみにサーバのルートドキュメントでそのphpは実行されてまして、 作成されたディレクトリのデフォルトの所有者はapacheとなっています。 この所有者をchownでrootなど他の所有者に変更したいです。
>>343 個人的に作ったツールで第3月曜日を取得するのは以下のような方法で取得していた。
これで問題があるようなら報告よろしく。
21 - (int)date("w", mktime( 0, 0, 0, $month, 20, $year));
>>344 > phpの所有者をrootにして実行した
この時の権限チェックは、
・実行プログラム - zend謹製のphpプログラムそのもの
・読み込むファイル - 対象のphpスクリプトファイル
に対して行われるので、スクリプトの所有者を弄っても無意味ですよ。
chownを使わないで済むように作るか、chownの操作対象を含む親ディレクトリの所有者や
パーミッションを適切なものに変更するのが一般的なやり方です。
>>346-347 レスありがとうございます。
試しに次のことをやってみたのですがやはりOperation not permittedとエラーが出てしまいます。
・phpがあるさらに上層のディレクトリの権限を777に
・試しにルートディレクトリからそのスクリプトがあるディレクトリをrootの所有に
ちなみにphpのプログラムは念のため確認してみましたが所有はrootでした。
mkdirでディレクトリを作成してそのディレクトリの権限をアカウントの者にしたいのですが、
apacheの所有でディレクトリが作成されてしまいまて、効率悪いですがシェルで直接手直しするしかないようです(´・ω・`)ショボーン
もうちょっとLinux関連の知識を培ったほうがいいと思う。 「phpのプログラムの所有」うんぬんとか言ってる時点で見当違い。 apache経由で動かしてるんだから、apacheの動かしているユーザーでしか動かせない。 そのスクリプト、sshで、sudoなり、suしてrootになって実行すれば動作するだろ。 そういうことだ。
error reporting E_ALLだと、配列の存在しないINDEX参照したときに Undefined になるよな。 E_NOTICEだとエラーの詳細がわからんし・・・ おまいらどうしてる?
array_key_existsで先にに調べれば?
こんな感じでDBからの値を元にINDEX 作りたいんですけどえらーになってしまう。 foreach ($play as $k ){ $counter[$k['sex']]++; }
Undefined INDEX $k['sex']
DB に何が入っててどうやって取り出しているかが問題であって、 その部分が悪いわけじゃない。 ちゃんと array_key_exists でチェックして処理してくれ。 はい次。
おいおい、おまいら カウンターのインデックスはDBからの値であって 宣言してないわけだよ。そこへインクリメントしてるから エラーになるわけだ。 わかんないのか? $counter[?????]++;
>>349 レスdクスです。
>そのスクリプト、sshで、sudoなり、suしてrootになって実行すれば動作するだろ。
説明不足で申し訳ございません;
ブラウザで実行させての動作ということでして;;
もしかしてchownはシェルで実行させないと元々動かない感じだったでしょうか
>apache経由で動かしてるんだから、apacheの動かしているユーザーでしか動かせない。
それともapacheで動かせる権限にディレクトリなりファイルなりを変更すればブラウザでも行ける感じでしょうか
未だに右往左往しておりますorz
ちなみにphp5系+apahce2系をFedoraCore3で動かしてます。
(FreeBSDにしようと思いましたが環境の都合でFCを選択しました)
ケツ痒くなってきた
>>357 ブラウザがアクセスするのはサーバなんだから
サーバの権限で動かせるようにすればおk
多分サーバは nobody か apache ユーザ/グループで動かしてるんだろうから
chown -R apache:apache /var/www とかすれば?
DWでphpでホームページを作っていますが同じページでパソコンと携帯のUserAgentを判断してレイアウトと表示される内容を変えたいのですが、出来ますか?
>>360 できる。
UAを調べて、条件文使ってPCだったらこれ、携帯だったらこれといった感じ。
<html><body>
<form action="./mailform.php">
■件名<br>
<input type="text" name="subject"><br>
■本文(※必須)<br>
<input type="text" name="message"><br>
<input type="submit" value="送信"></form>
<?php
$to = "
[email protected] ";
if( $message ){
mb_language( "Japanese" );
mb_send_mail( $to, $subject, $message );
echo ( "送信しました" );
}
?>
</body></html>
簡単なメールフォームを作ってみましたが、
日本語を件名等に含ませると???となります。
どうすればいいでしょうか?
マニュアル読みましたがうまくいかなく↑な風になりました。
よろしくお願いします。
>>345 なるほど・・・1日を基点として3週間の最後の日から引けば確かに月曜日になりますね。
ありがとうございますm(_ _"m)ペコリ
date("w")って数値で返ってくるのですが、string型なんですね(;´▽`A``
>>362 mb_internal_encoding指定してやってみて
364 :
362 :2006/01/23(月) 01:53:26 ID:???
>>363 こんな夜中にありがとうございます。
早速やってみます。
指定したファイルのバイナリデータから、 指定した文字列を抜き出すにはどうすればいいでしょうか? またそのデータ内に指定した文字列がいくつ入っているかも出来ないでしょうか?
>>365 $cnt = preg_match_all('/文字列/', file_get_contents("ファイル名"));
wikiの下のほうでよくみかける、 HTML convert time to 0.015 sec. みたいな部分はどのように記述されてるのでしょう? wikiのソースを見ても全くわからず・・・ PHPで動的なサイトを作る練習をしているんですけど、 htmlが、どのくらいの速さで出力されるのか知りたいのです。 どなたかわかるかた教えてください。
function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $start_time = microtime_float(); : メイン処理 : $end_time = microtime_float(); printf("HTML convert time to %4f sec.", $end_time - $start_time); とかいう感じじゃないの?
369 :
nobodyさん :2006/01/23(月) 06:30:22 ID:zyAl85LC
セッションで2次元配列を扱うことはできないんでしょうか? php1.phpで $_SESSION[$key1][$key2] のデータを入力したものを php2.phpで参照しようとしてもできませんでした…
>>369 自己解決しますた('▽')
てか、ageてた…ごめんなさい
mySQLとPostgreSQLでどちらを使うか迷っています。 それぞれの利点欠点を教えてください。
mySQLの方が響きが良い。
板違いじゃないのか
374 :
371 :2006/01/23(月) 10:17:45 ID:???
phpと使う場合の利点欠点です。 個人的には、性能よりも標準で、つまりより多く使われている方を選択したいのですが。
>>374 じゃmysqlでいいんじゃない?
psql使えるレン鯖そう多くないし
376 :
371 :2006/01/23(月) 10:23:46 ID:???
ありがとう。糞切りがつきました
今時の辞書は「踏ん切り」を「糞切り」と変換するのか・・・?
そういう意味なら PHP 4 → MySQL, PHP 5 → SQLite じゃないか?
これからはPostgreSQLですよ。マジで。
2次元配列を使っていて説明しにくいのですが 例えば2×3の配列あって前の配列?の最後の配列を取りたい場合は end(array)でとれると思うのですが 前の配列の最後の中にある配列の特定の値を取りたい場合はどうしたらいいのでしょうか? array[0][2]という感じで。 一旦end(array)を取得して次にarray[2]とか2回に分けないといけないのでしょうか?
end(ary[0])
配列とか変数とかを気軽にRSS(RDF)形式に書き出すクラスは配布されていませんでしょうか?
<?php if($i==1){ ?> <TABLE> <?php } ?> 上のような記述方法って正式に認められてますでしょうか?
変数名を正規表現で抽出したいのですが、どのように記述すればいいでしょうか?
WebProg の正規表現スレってなくなったの?
>>386 pregじゃダメ?
$url = preg_replace("/^(
http:\/\/[^/]+ ).*/","$1",$url);
あるいは
$tmp = parse_url($url);
$url = $tmp['scheme'] . '://' . $tmp['host'];
>>389 parse_url()使ったほうが楽な気がする
$array = parse_url($url);
print $array['scheme'].'://'.$array['host'];
parse_url() ってうまく解釈できないときにエラーが出るんで、 個人的にはオススメしない
>>387 変数名の抽出ってPHPのソースからか???
>>394 ブロックの長過ぎるコードの解析でもするならそれ用のツールを
用意した方がいいと思うんだけど。
>>394 手抜き版
preg_match_all('/(\$GLOBALS\[[a-zA-Z_]+\w*\]|\$GLOBALS\[\'[a-zA-Z_]+\w*\'\]|\$GLOBALS\[\"[a-zA-Z_]+\w*\"\]|\$[a-zA-Z_]+\w*)/', $src, $match);
$list = array_unique($m[0]);
var_dump($list);
$XXXX と $GLOBALS[〜] だけ抜き出す。
書き間違い。 $list = array_unique($m[0]); は $list = array_unique($match[0]);
くだらない質問スマソ、 $var[] = ""; ってどういう意味でしょうか?
>398 array_push( "", $var ); とほぼ同じ
>>399 array_push( $var, "" );
だよね。
しかも$varを配列で宣言しておかないとワーニングになるし。
こんばんは。昨日chown関数で質問してた者です。 一応解決?しましたので似たような人のために自分が取った方法を書いてきます。 sudoでapacheとnobadyにchownの権限を与えて後はsystem関数で出力 です。 何故かapacheとnobady両方に権限を与えてやらないと通りませんでした。 apacheで動かしてるんだからapacheだけでも行けそうな気がするのですがnobadyがないとFALSEを返すようです。 ちなみにテスト環境は/homeへテスト用アカウント発行して chown -R で再帰的に全てのフォルダ、ファイルを一旦apacheの所有にしてテストしました。 実行はブラウザでアクセスして動かしました。 蛇足ですが、スーパーバイザー権限てroot権限と解釈しているのですがあってますでしょうか sudoでやりたいことは実現したのですがapahceとnobadyにchown権限を与えているという現状がかなりリスクを背負っているようで回避策を探しています・・・。
>401 残念だが nobady ではない。 nobody だ。
スーパーバイザーやapahceにも突っ込んであげないと。。。
>>402 まったく、このスレ(板)を見てるなら良く分かると思うんだがね。
この板の名無しさんてnobodyだったんか 4年通ってたが今気づいた
408 :
nobodyさん :2006/01/24(火) 03:54:25 ID:9b512MA6
質問です。 シフトJIS使ってたら、ファイルにデータを保存したりそれを読み込んで表示したり したときにおかしくなったので、テキストを全部EUC-JPで扱いたいです。 php.iniでは、 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none としているのですが、スクリプトでファイルを書き換えるとEUC-JPのファイルも シフトJISに書き換えてしまいます。 どこが原因でしょうか?
>>408 アップロードするツール(FFFTPとか)の余計なエンコード変換機能とか。
# FFFTPのはファイル"名"の変換だけだっけ?
>>408 >スクリプトでファイルを書き換える
これが何やってるのかわからんことにはどーにもこーにも
411 :
408 :2006/01/24(火) 04:35:19 ID:???
>>409 んと、今ローカルでIIS(ver5.1)で動かしているんです。
EUC-JPにしたログファイルをスクリプトで書き換えたあと
ログファイルを見てみると、シフトJISになっているという感じです。
412 :
nobodyさん :2006/01/24(火) 06:14:37 ID:QMkPpjCA
スクリプトが、Webページで実行されたか、コマンドラインから実行されたかを、 スクリプト内から知る良い方法はありますか?
マニュアルの環境変数とか定義済み変数のところをよく読んでみよう
設定は
>>408 で問題ないと思うが
・その設定の状態のもとで、スクリプトが本当に動いているのか。
ログに設定の状態を書き込むようにしてチェックしてみるとか
・スクリプト自体のエンコードが本当にEUC-JPか。そのスクリプトの中で
単純なファイルの書き込みを試してみる。例えば
$fp = fopen('test.txt','w');
fputs($fp,'漢字');
fclose($fp);
>>411 確認したいんだけど、そのスクリプト既存のログファイルを読み込んで
何かデータを追加して書き込み直す処理だけをしてるのかな。
ここの"何かデータ"にあたるのはどうやって生成してる?
プログラムの設計者が敢えて変換を行ってなければ
PHPの設定如何に関わらず、ファイルの入出力に関しては自動に変換などはしない。
取り合えず
>>414 で簡単なファイル出力してチェック。
FreeBSD 5.4 に php 4.4.2 のインストールを試してるんだけど 特になにもせず # configure && make && make install で 以下が md5 チェックを失敗してインストールされませんでした。 [PEAR] Archive_Tar: bad md5sum for file /usr/local/lib/php/Archive/Tar.php [PEAR] Console_Getopt: bad md5sum for file /usr/local/lib/php/Console/Getopt.php [PEAR] HTML_Template_IT: bad md5sum for file /usr/local/lib/php/HTML/Template/IT.php これってバグなんでせうか?
それは下らない質問ではないと思うんだけど。本スレの方がいいんじゃないかなぁ。
>>417 原因が分かりました。レスありがとです。
pear 以下の tar ファイルにはやっぱり問題があって、
修正が行われたようです。。。
http://cvs.php.net/viewcvs.cgi/php-src/ChangeLog?r1=1.2233&r2=1.2234 2006-01-22 Greg Beaver <
[email protected] >
* (PHP_4_4)
pear/packages/Archive_Tar-1.3.1.tar
pear/packages/Console_Getopt-1.2.tar
pear/packages/HTML_Template_IT-1.1.tar
pear/packages/Net_UserAgent_Detect-2.0.1.tar:
fix bug #36002: md5sum checksum failures on install
とりあえず snapshot 版では fix されてるっぽいので、ここだけ差替えて
利用しようと思います。
>>416 MD5SUMチェックってことは、それはバグにせよ
そのPHPパッケージの問題じゃないの?
420 :
419 :2006/01/24(火) 13:27:08 ID:???
>>418 つうことは公開してたtar玉とそのチェックサムを
生成した対象が異なってたつうことか。
# 手作業が介在してるのかね。
mb_send_mailでメールを送信しているのですが、Subjectの最初の文字だけ化けてしまいます。 ソース文字コードSJIS mb_language('Japanese'); mb_internal_encoding ('shift_jis'); $Subject="株式会社"; $rcd = mb_send_mail($MailTo, $Subject, $Message, $MailFrom); 化けてしまう文字 株 化けた結果 * $Subject="会社株式"; とかの場合には問題なく表示できます。 同じような状態でEUCで記述した際にも、 登録 という文字が {2 に化けてしまいました。 PHP 4.4.1 よろしくお願いします
>>421 mb_encode_mimeheader
423 :
nobodyさん :2006/01/24(火) 14:58:21 ID:dZqRn44X
Atomを使いたいのでxsltを導入したいんですが
php.iniでextension=php_xslt.dllの前の;をはずすだけでは導入できてないようです
他に何かしなければならないのでしょうか?
ちなみにAtomを使うプログラムは
ttp://page2.xrea.jp/expack/ です
PHPのバージョンは4.4.2です
ランダムで1〜100の中から一つ数字を選んで テキストにその数字を書き込む。 というコードを作成したとします。 次にまたページを開いた時に ランダムで1〜100の中から一つ数字を選んで テキストに書き込みたいのですが 既にテキストに記入されている数字は選ばないようにしたいです。 なにか上手くやる方法はありませんでしょうか?
>>423 その「php.iniでextension=php_xslt.dllの前の;をはずす」行為はどこで得た知識?
(php_xslt.dllを使うこと自体は別に間違いではないけど)
取り合えず、ちゃんとPHPのマニュアル嫁。
>>424 事前にテキストを読み込んで、その値を使わないようにする。
ランダム値を生成して「その値」と等しければ、再度ランダム値を生成
その生成した値もまた…って処理をすれば良いんでないの。
427 :
nobodyさん :2006/01/24(火) 15:23:49 ID:dZqRn44X
>>425 ありがとうございます
なんとか導入することができました
>>424 結局、どこかの場所に使っていない数字を保存しておく必要がある。
閲覧ユーザーごとにやりたいなら、未使用数字を配列にしてセッションに格納
サイト単位でやりたいのなら、未使用数字をDBなどに格納
429 :
nobodyさん :2006/01/24(火) 15:33:13 ID:joG44Ifc
ファイル書き込みを行う際に、別の人がファイルをロックしているか どうかを判定するにはどうしたらいいのでしょうか?
>>429 ロックしている事が、他から確認できるようなロック方法を実装する
432 :
nobodyさん :2006/01/24(火) 16:13:07 ID:joG44Ifc
>>430 一通り日本語の部分はよみましたが、どこに書いてるんですか?
>>431 やはり一発で確認する方法は無いという事ですか…
433 :
nobodyさん :2006/01/24(火) 16:36:57 ID:IB/gJro7
CSVファイルに対して、擬似的にDBへアクセスするように SQL文でデータを取り出せるようなクラスとかってどこかで配布していないでしょうか?
>>429 ロックしてみてロックできなければ誰かがロックしている
>>432 すでに他の人にflockされてるファイルをflockしようとしたら、
flockが解除されるまで待たされるかエラーが返ってくるから
それで一発で判定できるだろ。
>>432 ざっくり書くとこんな感じでとりあえずいける。
if ( $fh = fopen( $filename, 'r+b' ) and flock( $fh, LOCK_EX ) ) {
ftruncate( $fh, 0 );
書き込み
}
ロックはその書き込みたいファイルだけじゃなくて他の処理も対象に
含まれる可能性があるので、絶対にこの書き方にすれば ok という
解は存在しない。十分練習を積むべし。
ちなみに、flock は実際にはファイルをロックするんじゃなくて
ロックしますという宣言をするだけなので、flock を使わずに
ファイルを変更することを止めることはできない。その辺注意ね。
437 :
nobodyさん :2006/01/24(火) 18:07:54 ID:UpPUFgZM
他のスレで質問したのですが、いた違いだったみたいなのでここで質問させて下さい。 サーバ: Redhat Enterprise Linux 3 Apache 1.3.33 PHP 4.3.11 クライアント: Windows XP Pro SP2 Internet Explorer 6.0 SP2 クライアントにおいてクッキーが受け付けられません。 サーバからのレスポンス(PHP経由)ではSet-Cookieヘッダが出力されているのに、 その直後のクライアントからのリクエストになぜかCookieヘッダが付加されないようです。 Set-Cookieヘッダは「Set-Cookie: PHPSESSID=hogehoge; path=/」のように、 一時的なクッキーを設定するようヘッダを出力しています。 サーバにはIPアドレスでアクセスしており、 他のウェブサイトにドメインでアクセスするとクッキーを受け付けることが出来ます。 セキュリティの設定は全てのクッキーを受け入れるようになっています。 何か参考になる情報をご教示頂ければ嬉しいです。
>>437 ヘッダはどうやって確認してるの
俺はFireFoxにWebDevelopperという拡張機能を追加してるんだがデバッグに便利だよ
レスポンスヘッダもクッキーの確認も簡単
439 :
437 :2006/01/24(火) 18:20:48 ID:UpPUFgZM
IEにレスポンスとリクエストのヘッダが見られるプラグインを追加して確認しています。 ちょっとそのWebDevelopperというのも調べてみます、情報有難うございました!
/で終わるURLからファイル名を取得する方法を教えてください。
たとえば、
http://example.com/ というURLの場合、index.htmlなりindex.phpなりという文字列を取得したいのですが、
どのようにすればいいでしょうか?
>>441 原則無理。
両方でgetしてみて判定する、という手順を踏めば可能。
>>441 運がよければContent-Location:ヘッダを見れば判るかも。
たぶん確実な方法はない。
445 :
nobodyさん :2006/01/24(火) 21:51:09 ID:OyZLn4Ht
<?php $logfile = "hoge.txt"; srand( (double)microtime()*1000000 ); //乱数処理 $a=round( rand(0,10) ); $lines_e = @file($logfile); while (list($num, $line) = each($lines_e)){ list($num,$mess) = split("\t",$line); if($num==$a){ do { echo $a.' = '.$num.'<br>';//テスト用に表示 srand( (double)microtime()*1000000 ); //乱数処理 $a=round( rand(0,10) ); } while ($num!=$a);//$numと$aが違くなるまで繰り返し } } ?> hoge.txtには 1 aaaa 2 bbbb 8 aaa 6 eeee のように番号とメモがタブ区切りで入っています。 ファイルに書き込むときに同じ番号がある場合 もう一度ランダムで重複しない番号を出す処理を考えていたのですが 上のソースではうまく出来ません。 どのようにすればよいでしょうか?
>>445 乱数取得するたびにsrandやってるからだと思われる
447 :
445 :2006/01/24(火) 22:12:26 ID:???
なんか根本的に俺間違ってる気がしてきました。 このやり方でなくても ファイルにある数字と重複しないランダムな数字の 出し方があればお願いします。
>>445 最初にファイル読んでるときに連続していなければ間の番号、
最後まで連続してたら最終+1した番号を持つようにすれば
重複はしないだろう。
449 :
445 :2006/01/24(火) 22:39:27 ID:???
>>448 ランダム値にしたいので、
それで始めてしまうと
0,1,2,3,4,5,6,7,8,9となってしまいませんか?
>>447 あい。
$logfile = "hoge.txt";
$num_max = 10;
$lines_e = @file($logfile);
$num = range(1, $num_max);
srand( (double)microtime()*1000000 );
foreach($line_e as $l) {
$n = split("\t", $l);
if(($pos = array_search($n[0], $num)) != FALSE) {
unset($num[$pos]);
}
}
shuffle($num);
print $num[0];
>>447 <?php
$fp = fopen('log.txt','r+');
while( $ary = fscanf($fp,"%d\t%s\n") ){
$log[$ary[0]] = $ary[1];
}
srand((microtime()*1000000));
do{
$a = round(rand(0,10));
}while(isset($log[$a]));
$str = $a."\t".'comment';
echo $str;
fputs($fp,$str."\n");
?>
このままだと、使い切ると無限ループになるがな。
a.php の中に include('b.php'); があります。 b.php の中には関数が山ほど定義されています。 この関数の一部を c.php にコピーし、 b.php の先頭に include('c.php'); と書いたとき これって同じ動作が保障されていますか? ぱっと見良さそうなんですが 動作しなくなる特別な場合とかありますか?
>>452 コピーなの?移動じゃなくて?
同じ関数を複数のファイルで定義してまとめて読み込んじゃうと
関数の多重定義エラーで止まっちゃうよ。
定義を別ファイルに移動して多段階で読み込むだけなら無問題。
>>453 すいません、移動の間違いでした。
これで安心してプログラムがかけます。
ありがとうございました。
ページ1でランダムに10個の俳句を並べそれぞれ5つのradioボタンで採点させています。 ページ2でバリデーションされるにはどうするのがいいですか? つまり、ランダムに表示させた俳句番号が正しく送られてきているかチェックしたい。 しかしランダムの数値をサーバ側で持たなくてはいけないような気がするのですが、 session_idを使ったりするのでしょうか。
もうちょっと下らない質問をしてくだちい
さっぱり意味が分からないな。 input name="point[表示させた俳句ID]" value="点数" こんな感じで配列渡しで終わったりしないのか?
>>456 どのくらいの厳密性を要求してるのかにもよる気がするんだけど、
各採点ボタンの俳句No.+全No.順リスト1個の組み合わせにして
両者が合致してればOKにするとか、不安ならさらにリスト側をMD5で
暗号化しとくとかでも十分な気がする。
(それでも不安ならCRCでも付加しとけば良かろう)
個人的にはそういう一時的遷移情報の照合でセッションを使うのは
処理コストが高い+新規ウインドウを出すと矛盾しかねないので好かない。
PHPで世界征服は可能ですか?
C#なら!
>>458 そのIDが次のページでチェックする時に保持されないので困っている次第です。
>>459 ちょっと理解できなかったです…すみません。
全No.順リスト1個ってなんでしょうか?
厳密性は、
DB上のPRIKEYが俳句No.となっていて<input name="俳句No.(つまりPRIKEY)"... です。
これだと好きなものに適当に点数をつけられるのは嫌かなー位です。
463 :
451 :2006/01/25(水) 02:48:59 ID:???
>>455 451の悪いところを挙げようか?
例えば0〜100億の範囲の内、1〜100億までを使い切っていたとすると
最後に残っている0に合致するまでランダムに値を生成しないとならないので
相当なロスがあるよ。1〜100億までを使い切るまでにも、
そういったロスが積み重なっている筈。
464 :
450 :2006/01/25(水) 03:10:28 ID:???
>>463 そういう意味では450のは多くても少なくても処理時間は極端には差がないけど、
最初に「使用可能なNo.のリスト」を生成するのでメモリを食いやすく、初回から
それなりの処理時間を必要とするかもね。
多分、まだデータの少ないうちなら451の方が処理速度が速い。(希ガス)
処理速度的には最後のランダム要素抽出ってshuffle→[0]抜き出しよりも
randで抽出位置の決定をやった方が速いかもしんない。
(PHPのshuffleの速度ってベンチ取ったことないから分かんないけど分量増えると遅そう…)
465 :
459 :2006/01/25(水) 03:22:27 ID:???
>>462 要するに
<input type=hidden name="俳句No[0]" value="3">
<input type=radio name="採点[0]" vakue="1">...<input type=radio name="採点[0]" vakue="5">
<input type=hidden name="俳句No[1]" value="5">
<input type=radio name="採点[1]" vakue="1">...<input type=radio name="採点[1]" vakue="5">
:
<input type=hidden name="俳句No[9]" value="2">
<input type=radio name="採点[9]" vakue="1">...<input type=radio name="採点[9]" vakue="5">
とかいう実際の10個の俳句フォームに加えて
<input type=hidden name="俳句list" value="3,5,〜,2">
という、[0]〜[9]にそれぞれ何番を入れたかを連結したデータも一緒に入れてやって、
submitされたら
if(implode(",", $俳句No) != $俳句list) { echo "データが不正です"; }
とかすればいいんじゃないの?ってこと。
で、このリストが丸見えだとそっちも操作されそうで怖いと言うのであれば
<input type=hidden name="俳句list" value="<?=md5("3,5,...,2")?>">
とmd5化してやって、
if(md5(implode(",", $俳句No)) != $俳句list) { echo "データが不正です"; }
としちゃえば、そうそう容易には改変できないでしょ、ということ。
>>455 451が最後に書いてる「全ての番号を使い切ってしまったかどうか」を判定させるなら
450の処理方法の方が格段にやりやすい。
多分、451はその処理を加えるだけで急激に速度が落ちる。
467 :
466 :2006/01/25(水) 03:35:06 ID:???
あ、ごめん。そんなことないや。 単純に if(count($log) >= 11) とかで一発で判定できちゃうね。 すまそ
>>465 す、すごい技ですね。考えもつきませんでした。
ちょっと理解できなかったのは、俳句listには何が入るのですか?俳句No[]かな?
あれ?POSTで送られてくる値って前ページHTMLと同じ順番で来るんでしたっけ?
>>468 POST後に俳句Noをimplodeで連結して判定してんだから
当然listに入れるのも俳句Noをimplodeしたものだよ。
あとPOSTの送信順はnameを配列変数名にしてれば気にする必要なし。
name="俳句No[3]"はPOSTされると$_POST["俳句No"][3]に格納される。
>>469 やっと理解できたと思います。ありがとうございます。
上のソースだと valueのところを好きなようにいじって、md5(...)のとこも
好きなようにいじったように入れれば、任意の番号をいじれるじゃん!
って思ったけど、md5をsha1とか違うアルゴリズムにすればわからないわけですね…
POSTの送信順は、関係ないですね。俳句No[]は、0-10で並ぶわけですから。
非常に勉強になりました。
確かにmd5の案は落とし穴っぽい。 cryptとか、補助キーを使う暗号にすればいいね。
>>470-471 だから最初にどのくらいの厳密性を要求してんのか、って聞いたんじゃん。
そこの強度を上げる方策は色々あるんだから必要に応じて凝ればよろしい。
phpで使えるhtmlってバージョン3ですか4ですか?
バージョン6だよ
>>473 Compact HTML でもなんでも好きなのをどうぞ
俳句No[ ]いらなくないか?
>>476 無くても処理は可能だけど、あった方が俳句listとの比較が容易になる上、表示の順番も含めてチェック可能になる。
おい、おまえら $str = 'a'; $str++; これで$strはbになるって知ってたか? 知らなかったぜフハハー
マニュアル行き
なにこの良スレ
.htaccessとかmod_rewriteとかApacheの機能を使ってURLの変換かければできなくはない。
PATH_INFO も FAQ かな
PATH_INFOってURLの途中にプログラム挟まないと無理じゃないの?
>>485 exmaple.com のトップページがプログラムならいいんじゃないの?
>>486 /5 ってのがくっついた時点で /5/{DirectoryIndex} にアクセスしない?
で、5 の部分がパラメータ値なら可変なんだろうからそんなディレクトリは存在しない→404かと
488 :
軟式PHP :2006/01/25(水) 16:10:34 ID:???
483が答え書いてるジャソ
>>488 別解としてPATH_INFOが使えるかどうか、という論議だろ。
>>478 それよりも
$str = 'z';
$str++;
$strがaaになる
覚えておけ
そのへん極めるならPHP単体でやることじゃないな
くだらなくないねぇ
/?aaa=5 のパラメータの値として想定される数だけディレクトリ作って、 そこに自分のディレクトリ名を$aaaにセットするindex.phpを置けば PHPだけでもできるな。
495 :
nobodyさん :2006/01/25(水) 17:33:01 ID:P6kcSZ98
返り値のないクラスのテストについて教えてください。 class foo { function execute() { $sp =& fopen("huga.txt", "r"); $fp =& fopen("hoge.txt", "w"); flock($fp, LOCK_EX); if ($fp == FALSE) { $result = PEAR::raiseError("Can't Open File"); return $result; } while ($data = fgets($sp, 1024)) { fputs($fp, $data); } fclose($sp); flock($fp, LOCK_UN); fclose($fp); return TRUE; } } 例えばPHPUnitを利用して 正しく書き込まれているか。エラーが生成されるか。 をテストしたいのですが、どのようにテストすればいいのでしょうか。
>>495 PHPUnit 側でそのファイルに対してチェックを行うっつーのはダメでしょうか
PHP でオセロ作るの無理っぽくね?と思ったゆうべの10時頃。 作り方も考えつかねーよウボァー
無理ではないだろ
プレイヤーが○の時 1〜3はループ 1.置いた周囲に●があるか判定 ↓YES 2.その方角をひとつづつ読み込み、○が最初に出た時点まで判定 ↓YES 3.間を全て○にする でいいんじゃないの
言語選択の問題
PHPでリアルタイムゲームは相性悪そう
Ajaxまで使う必要あるか?別にコマを置く→リロードで構わないだろ。オセロくらい。
むしろ、JavaScriptだけでいけそうな気もする。
下手したらJavaScriptもいらないのでは。
誰かがやらなきゃいけないなら俺がやる!
送られて来た点数をMysqlでUPDATEしようとしています。 $id_point_map = array(1 => 4, 2 => 2, 3 => -2, 4 => -4); //idと点数 この場合以下のUPDATEをcount($id_point_map)分foreachでまわさないと いけないでしょうか?一気にUPDATEする方法はあるでしょうか? UPDATE date SET total_point=total_point+$point WHERE id = $id;
510 :
nobodyさん :2006/01/26(木) 02:43:25 ID:oTQct+IL
preg_matchとpreg_match_allの違いって、 preg_matchは該当する先頭の1個だけで、 preg_match_allは該当するモノ全部って事??
>>510 基本的にそんな感じ、詳しくはマニュアル嫁
>>509 PHPの質問じゃない。MySQLのスレで聞いてこい。
文字コードの変換方法おしえてください。 jcodeとかnkfみたいなのありませんか?
>>513 マニュアルのマルチバイト文字列関数のところを穴が開くほど読め
mb_convert_encodingがエラーで動かないんですが、追加で何かインスコとかしないとダメですか?
環境書けよ
xreaのPHP4サバでPEARを使うにはどうしたら宜しいのでしょうか? require_once "HTTP/Compress.php"; とやると Warning: main(HTTP/Compress.php): failed to open stream: No such file or directory と出てしまいます。 CGI版PHPにしても同様です。
>>515 エスパー的能力を発揮すると、
php-mbstringパッケージを入れろって頭に浮かんだよ。
>>517 include_pathに、そのPEARライブラリを置いてあるパスを含ませる。
function内で定義した変数を別functionで参照したいのですがどのようにすればよいのでしょうか? globalでやってみても駄目でした。 <? $a=10; test(); function test(){ $b=20; test2(); echo $b; } function test2(){ global $b; $b++; } ?> ↑では$bが21になるようにしたいんですけど・・。
>>520 変数$bはtest内ローカル変数だから、test2内からでは参照できない。
変数$bを、変数$a同様にグローバルの場所で宣言するか、test内で global $b; として宣言する。
>>520 つかその使い方なら test2($b); で渡せば良いだけだと思う。
どうも根本がわかってないようだが。
Perl の sub や BASIC の GOSUB しかやったことない場合は
これで普通って思うかも
>>520 関数っつーのは一般に y= f(x) の形で表されるもので、
「何か値を入れたら何かが返ってくるもの」と考えるのが
C系の言語の基本です。で、関数の中身のことは知らなくて
いいように作る。これ。
524 :
520 :2006/01/26(木) 14:01:52 ID:???
みなさんありがとう。
>>522 さんのやり方は当然わかっていたのですがどうせなら引数も
持たさないでいきたいなと思ったので・・。書いてなかったのですいません。
>>523 さんの言いたいことはわかるのですが作るとなるとうーむ・・むつかしいところですね^^;
>>524 もしいくつかの関数で変数を共有したいというのであれば、
global 宣言使うよりも class 使った方が何かといいよ。
おれも引数は少ない方が好きだからその気持ちは分からなくもない。
>>525 classを活用出来ていない外野なんだけど、クラスでの解決方法をさらして欲しい・・
なんていうのは贅沢ですかそうですか
簡単にクラスを使った用例がホスイ
>>526 class Hoge
{
var $b;
function test(){
$this->b=20;
$this->test2();
echo $this->b;
}
function test2(){
$this->b++;
}
}
$a = new Hoge;
$a->test();
>>527 おぉ、サンクス。
>>526 メリットとしては共有しているものがはっきり違う形で
書かれているので関数の中だけ見ていてもぱっと見で影響
範囲が分かるってことと、共有する変数(PHP 的な正確な
用語は知らん)については最初に初期化しなければいけない
ので、これもあとで見たときに分かりやすくなるってこと
かな。使い捨てならどうだっていいことだけど。
529 :
520 :2006/01/26(木) 16:48:46 ID:???
おお、俺もひよこなんでclassの解説が聞きたかったので良かった。サンクス で、確かにクラスにしようかなとも考えたのですが なんというかオブジェクト?(カート、動物)と言った物の処理とは ちょっと違うように思えたのでそれならclassもおかしいのかなと思いました? 言葉ではちょっと表しにくいですね・・・。 簡潔に言えば労働スケジュールを組んでいます。(時間配分や機械等) でこの日にはこの処理をこれだけの量やってって感じなんですが ここである条件の場合の処理というのを関数に分けているのです。 で、さらにこの分けた関数処理の中でも条件分岐によって重複する処理がでたので さらに分けたということなんです。 ・・て感じなのでなんていうか、クラス的な考え方ってありなのでしょうか?
530 :
520 :2006/01/26(木) 16:52:45 ID:???
あ、連投スマソ。ものはついでに教えてほしいのですが 俺の考え的には if(){ 処理A 処理C }else{ 処理B 処理C } ↑の重複する処理Cの部分が多くなると関数として分けているのですが こういう考え方についてはどう思われるのでしょうか?いろいろ教えてください^^;
>>530 俺だったら
if(){
処理A
}else{
処理B
}
処理C
こう書く
532 :
520 :2006/01/26(木) 17:07:37 ID:???
>>531 あ、ごめん。はしょりすぎた。確かに
>>530 ならそうですねw
for(){
if(){
if(){
処理A
break 3
}else{
処理B
}else{
処理C
処理D
break 2
}
}else{
if(){
処理E
}else{
処理F
}else{
処理G
処理D
break 2
}
}
}
こんな感じでネストかけまくってるんです;;
処理Aとかも短くて同じ処理あるのですがいちいち関数で分けてたらややこしくなるしと思いまして・・
>>529 オブジェクトは単なる概念であって物理的なモノとは全然関係ないんで、
「1日」がオブジェクトだったり、「作業」がオブジェクトだったり、
処理しやすいように書けばいいと思うけど?
何か一つオブジェクト指向言語をやってみると目から鱗が落ちて、
なんでもかんでもオブジェクトとして扱えるようになるかもしんない。
でもそうなると PHP やめたくなるかもしんない。
PHPでMVCをうたってる参考書にはアクションクラスなるものもあるくらいだし オブジェクト=モノ、みたいな発想にとらわれることはないかと。 ただのスタティックな関数の寄せ集めをそれっぽい名前でカテゴライズしてクラス階層に落とし込んだりもするし。
>>532 脱皮が必要な時期にきてるかもね。
関数はくり返し使う処理を切り出すってより、「ロジックを書きやすく
読みやすいものにするためにブラックボックスを作る」という発想で
作っていくといいよ。まぁそのためにはデータ構造とかもいじらなきゃ
いけなくなるかもしんないけど。
例えば今回のスケジュールならたぶん作業や機械によって条件が
変わってくるでしょ? そういう条件をひっくるめてオブジェクトとして
くるんでしまう。そうするとおおもとのロジックで気にすべき条件は
見た目上だけど減るよね。オブジェクトの中に入っちゃうんで直接気に
する必要がなくなる。あとはロジックを書く際にいちばんほしい情報
だけをオブジェクトに教えてもらいながら書き進めていけばいい。
日本語だとえらく漠然としちゃうけど、オレの言いたいことは「ロジックを
気持ちよく書けるように工夫しろ」ってことだ。その結果、コード量が
増えてしまうことを恐れてはいけない。増えても読みやすければいいんだ。
Apache+Tomcatを導入しろと言われたのですが Apacheってなんのためにあるんでしょ? URLから「8080」のようなポート番号が必要なくなるだけ?
どこがPHPの質問やねん。
>>536 Apacheのほうがwebサーバとしての機能が十分に備わってるからでしょ。
TomcatはあくまでもApacheのプラグインと考えたほうがいいよ。
PHPで関数を多重同時実行することはできるでしょうか。 例えばfopenを使ってページや画像を保存する処理、つまり多重ダウンロードなどをしたい時は、 fopenでなくsocket系を使うべきでしょうか。
540 :
532 :2006/01/27(金) 08:10:12 ID:???
>>533-535 ありがとうございます。
>>535 さんまた難しそうですね^^;
確かに実際にオブジェクト指向組んだことないし勉強しなければ・・
俺は癖でつい読みやすさよりコード量減らしてしまふ・・orz
>>533 やめたくなるってのはオブジェクト指向には適していないから??
>>540 短くすること自体は良い習慣だけどね
全体量が小さくなることよりもブロックが小さくなることの優先度が
高いかな。おれはね。長いブロックを読み書きする体力がないもんで。
PHP はオブジェクト指向には「あまり」向いてないと思うよ。
5 はだいぶマシっぽいけど。
まぁそれは今から気にする必要ないんじゃない?
俺は構造化のためにclass使ってるだけだけど、 かなり見通しも良くなるし、変数のスコープも明確になる。 ひとまず、クラスなんて使ってみれば「どうということはない」。 オブジェクト指向はその後でもいいんじゃね?
そうですね。一人で作ってる小さいプログラムですし。 MVCとかも以前JSPサーブレットとか使ったときちょっとやったけど 量が少ないと分けない方が楽なんですよね。 もはや人に見せることは考えてないですが・・^^; ・・とこんなこと書いてると俺のひよこレベルがw
PHPなら最初のころはclassなんてイラネと思うだろうけど 後のメンテナンス性、拡張性考えると自然とオブジェクト指向になっていくお^^
オブジェクト指向がよくわからんのだけども、 とりあえず全てclassに入れればいいのかな?
やみくもにclassに突っ込んだだけならオブジェクト指向とはいえない。 PHPなんて代表的なオブジェクト指向が必須でない言語の一つだから、無理してclassを使う必要はない。
>>545 ちょっと前に書いてあるじゃん。
変数を共用したいとかそういう、「同じグループに属してる感」が
ないのに class に入れたって面倒なだけ。
548 :
nobodyさん :2006/01/27(金) 16:40:41 ID:Y9rt4MFE
フレームワークとテンプレートエンジンて何が違うの?
function hoge(arg1,arg2){ for(){ 処理A } if(flag){処理B} } ↑上の状態で処理Aの中でflagがtrueになった場合、 下のif文中処理Bのところでもっかいfor文に飛ばすにはどうすればよいですか? for文の外に無限ループつけてそこにcontinueとかするしかないのでしょうか・・
550 :
軟式PHP :2006/01/27(金) 17:43:45 ID:???
for() { 処理A } を関数化すりゃいいんでねぇの。
●改造は自由にどうぞ ●著作権は消さないで というスクリプトを改造して、HPに載せたいんだけど、改造したものでも著作権の表示は必要なの?
改造といってもベースになってるのは他人の物なんだから、 著作権明示は必要。 どうしても消したいってときは、作者に連絡してみれば? カンパ金かなんか払えば消してもいいって人いるかもよ。
554 :
nobodyさん :2006/01/27(金) 18:12:54 ID:46g/AEL1
スレ違いかと思うんですが、 PHPでBlogを作っているんですが、メールで更新出来る様にしたいと思い色々調べて、.forwardを使ってメールをプログラムに転送すれば良いと解ったのですが、転送先のプログラムにはどのような処理を書けばいいのでしょうか。 例えばGETなりPOSTなりで送られてくる訳ではないですよね? 自分なりに調べてみたんですが、今ひとつ解説してあるサイトが見つかりません。。 ヒントだけでも頂けないでしょうか。 よろしくお願い致します。
>>548 テンプレートエンジンはあくまで動的なページ生成を PHP を
直接書かずにできるようにする仕組み。フレームワークはユーザー
からの入力、画面遷移、セッション、DB など全般的に抽象化して
アプリケーションの骨格だけ書くことに集中させてくれるもの。
557 :
nobodyさん :2006/01/27(金) 23:24:19 ID:Y9rt4MFE
558 :
nobodyさん :2006/01/28(土) 04:46:39 ID:NaSuq9Gx
>>555 まだ試してないんですが、検索したらそれらしいものが出てきました!
ありがとうございました!
変数とかファンクションに名前つけるときの命名なんだけど myFunction() my_function() おまいら、どっちにしてる?
たぶん my_func()
javaのコーティング規約にのっとって、 $my_fanc myFanc
PEARのコーティング規約に準拠するのがいいよ。 だからこっち myFunction()
最近PHPはじめたんですけど、 PEARって何?って人にどこかいいサイトありませんでしょうか? 「PEAR は、TeXの CTAN および Perlの CPANにヒントを得たPHP拡張および PHPライブラリのコード用のコードレポジトリです。」 こんなことを言われても正直わかりません…
誰も本を紹介してくれとは言ってませんよ。 サイトを紹介してください。
569 :
558です。 :2006/01/28(土) 13:26:03 ID:NaSuq9Gx
何度もすいません。 テストでfgetsで取得してファイルに書き込むようにプログラムしたんですがうまく行きません。 これってもしかしてCGI版じゃないとダメな感じなんでしょうか。。
>>566 公式に管理された汎用PHPライブラリのことだよ。
>>569 CGI っつーか CLI
単体でコマンドラインから起動できるバイナリが必要
573 :
nobodyさん :2006/01/28(土) 14:17:47 ID:mOSvPqom
フォームから変数に代入する方法は分かりますが、 変数をフォームに出力するにはどうすればいいのでしょうか?
とりあえずググって色々サンプルとか調べてみれば 話はそれからだw
>>573 それは HTML の問題だろ…。
$test = htmlspecialchars($_REQUEST['test']);
<input type="text" name="test" value="$test">
" "で囲まれた中に記述する変数は全て{ }で囲んでも問題ありませんか? また、そうする事が推奨されていたりはしますか?
問題があるかどうかはやってみればいいじゃん。 思い通りに表示されれば問題なし。 エラーが出たら問題あり。 一応囲むのが普通とだけ言ってみる。
578 :
nobodyさん :2006/01/28(土) 14:49:34 ID:mOSvPqom
ググって、見つからなかったから聞いているのですが。
>>577 手元では問題なかったのですが、
特別なケースがあるのかなと思って・・・
今までは必要最低限でしか{ }を使わなかったですが
これからは基本的に囲むようにします
>>576 問題は無いつーか、問題が無くなるわな。
マニュアルによると、PHPの中の人が変数名を見つけ出す方法はこのようになっている。
> ドル記号($)を見付けるとパーサは、有効な変数名を形成することが可能な最長のトークンを取得します。
> 変数名の終りを明示的に指定したい場合は、変数名を波括弧で括って下さい。
function hoge($aaa, $string) { if ($aaa) echo $string; } という条件付echoを作成しました どんな関数名にしたらいいでしょうか みなさんの知恵をください 沢山使うので一般的な名前にしたいのですが
>>583 echoIf( $condition, $string )
echo $aaa ? $string : "";
phpinfo();で表示される Apache Environment の値を取得するには どうすればいいんでしたっけ? $_ENV か $ENV だったような気がしたのですが・・・。 具体的には、REQUEST_METHOD の値を知りたいのですが。
>>584 採用させていただきます
ありがとうございました
588 :
nobodyさん :2006/01/28(土) 17:05:51 ID:EkhKiUPm
PHPで、javadocみたいにコメントからドキュメントを作ってくれるのってありませんか?
>>581 $foo[$bar][$hoge['$fuga']]}
こんなのでも}の起点を正確に探知しなきゃいけないパーサカワイソス
<input type='hidden' name='a[]' value='1'>をGETメゾットで送りたいのですが可能でしょうか? ./?a%5B%5D=1では受け取れなかったのです。
593 :
591 :2006/01/28(土) 17:53:49 ID:???
構造上の問題だった-;) 失礼しました
ファイル分割について質問があります 例えばC++でDBを扱うクラスclass_dbを db.h と db.cpp に記述したとします。 db.hにクラス宣言、db.cppに定義を行いますよね。 さらに aaa.h、bbb.h、ccc.hでclass_dbのstatic関数を用いたいときは これらの先頭にinclude<db.h>と書きますよね。 main.cpp ↓ ↓ ↓ aaa.h bbb.h ccc.h ↓ ↓ ↓ db.h の感じでインクルードします。 このような事をPHPでやるとき、このまま書くと多重定義になるので main.php ↓ ↓ ↓ ↓ aaa.php bbb.php ccc.php db.php と書いたらうまくいきました。 ところがaaa.php、bbb.php、ccc.phpはdb.phpをインクルードしてないのに db.phpで定義した関数が出てきてしまい、何か気持ち悪いです。 PHPはこういうもんなんだと納得すべきでしょうか。 それともいい方法があれば教えてください。
597 :
nobodyさん :2006/01/28(土) 21:07:05 ID:xY1GiFbj
PHPでezwebのサブスクライバを取得する場合、どう書いたらいいんでしょう? cgiだったら if ($user =~/UP\.Browser/) { $user = $ENV{'HTTP_X_UP_SUBNO'}; } でいけるみたいなんだが、PHPだとどう記述するのでしょうか?
>>597 ezwebの事は知らんが、そのコードを見た感じだと、
・$userは環境変数UserAgentから取得。
・$userがUP.Browserという文字から始まっていれば、ezwebだと解釈し、
・さらに環境変数HTTP_X_UP_SUBNOを取得すると、サブスクライバとやらが取得できる。
ってことじゃないの?
$_SERVER $_ENV配列あたりを覗けば希望するものが得られるかと。
>>597 CGIでなくPerlだったら、なんだろうが(PHPでもCGIは書けるぞ)
PHPで同じ内容は
if (preg_match('/UP\.Browser/', $user)) {
$user = $_SERVER['HTTP_X_UP_SUBNO'];
}
と書く。
600 :
nobodyさん :2006/01/28(土) 23:11:00 ID:OGAeWMPn
教えてください。 phpで、windowsで言う所の「ファイルの作成時刻」を得たいのですが、 statについて調べてみると 8 atime 最終アクセス時間 (Unix タイムスタンプ) 9 mtime 最終修正時間 (Unix タイムスタンプ) 10 ctime 最終変更時間 (Unix タイムスタンプ) とのことで作成時刻は得られないのでしょうか。 それと、最終修正時間と最終変更時間って何の違いでしょう?
601 :
nobodyさん :2006/01/28(土) 23:14:56 ID:xb4UVvPr
よくブログなどで、 携帯メールを指定アドレスに送る→ブログに更新 なんてのがありますが、具体的にどうやって実装すればいいでしょうか。
>>600 ctime - unix系で言うところのinodeの情報(所有者やグループ、パーミッション等)が変更された時。
>>600 マニュアルにも書かれているが、
filectime
>注意: 多くのUNIXファイルシステムでは、i-ノードが変更された際、つまり、パーミッション、所有者、グループ、
>または他のメタデータが書き込まれた際に、ファイルが変更されたとみなされます。
filemtime
>注意:この関数は、ファイルのブロックデータが書き込まれた時間を返します。これは、ファイルの内容が変更された際の時間です。
つまり、ファイルの内容が最後に更新された時間がfilemtime、
内容以外でもパーミッションなども含めて最後に更新された時間がfilectime
ということになる
ちなみに、fileatimeの所に
>いくつかのUNIXでは、ファイルのctimeはファイルの作成時間として参照されます。これは間違っています。
>多くのUNIXファイルシステムでは UNIXファイルの作成時間は存在しません。
とマニュアルには書かれている
どうもです。
606 :
600 :2006/01/28(土) 23:37:28 ID:???
ガーン。マジだ。statは調べたけどfilectimeなんてのもあったのか。 thxですた。∧||∧
607 :
600 :2006/01/28(土) 23:38:21 ID:???
>602さんにももちろんthxですた∧||∧ ∧||∧
お願いします! 今、WindowsXPのコマンドプロンプト上で動かすスクリプトを書いています。 内容はディレクトリの中身を表示すると言う単純なものなのですが、下のソースのように if(!is_dir($file))としているにもかかわらずフォルダ名まで表示されてしまいます。 この指定ならフォルダ名は表示されないと思うのですが間違っているのでしょうか? PHPのバージョンは5.1.2です。 <?php $dir = opendir("./foruda") or die("Directory is can not open !!"); while ($file = readdir($dir)) { if(!is_dir($file)) { echo "$file\n"; } } closedir($dir); ?>
609 :
608 :2006/01/29(日) 02:15:11 ID:???
すみません。タイプミスです。 ×echo "$file\n"; ○echo "$file\r\n";
>>608 is_dir() は不完全。is_dir() のマニュアルのユーザノートにも書かれていたと思うが。
本当にディレクトリかどうか調べるなら
filetype() の結果を使うべき。
611 :
608 :2006/01/29(日) 02:24:31 ID:???
>>610 おぉ、即レスどうもっす!
なるほど、解りました。早速使ってみます
612 :
608 :2006/01/29(日) 02:48:36 ID:???
キャッシュが消えない('A`) clearstatcache()でOKですよね? しかもfiletype()つかったらWarning: filetype(): Lstat failedって出てきた・・・ これはLstatが使えてないってことでしょうか?
615 :
608 :2006/01/29(日) 03:00:44 ID:???
すみません。出直してきます('A`)
616 :
nobodyさん :2006/01/29(日) 03:22:48 ID:Kr5RpJOz
<form ...> <input type="submit" value="再生"> </form> こういうタグがあった場合、再生と書かれたボタンを押したときに どんな変数が送信されるんでしょうか?name="..."という名前がない場合は どうなるのか疑問です
PHP4でDB接続をADOdbで行っています。 DBコネクションのオブジェクトでclassメンバの$dbconをclassの関数から呼ぶ場合 $this->dbcon ですが、dbconのメンバ関数を呼ぼうとして $this->dbcon->getRow($sql); これがエラーになります。 どうしてですか?スマートな解決策はありますか? 今は毎回以下のようにしててマヌケな感じがします。 $db = $this->dbcon; $db->getRow($sql)'
619 :
608 :2006/01/29(日) 04:38:15 ID:???
駄目だ・・・キャッシュの消し方とかstatが何なのかとかは良くわかったけど エラーが消せない('A`)
620 :
608 :2006/01/29(日) 06:21:48 ID:???
解った・・・やっと解った!!!!! filetype関数には絶対パスが必要なんですね!!
621 :
nobodyさん :2006/01/29(日) 09:17:52 ID:a2S36AV1
<?php $file = fopen("./ua.dat","a"); flock($file,LOCK_EX); $line = $_SERVER[?HTTP_USER_AGENT?]."\n"; flock($file,LOCK_UN); fclose($file); ?> UA(User Agent)をファイルに記録しようと思って、このようなスクリプトを作ったのですが… 次の条件を実現させるにはどうすれば良いでしょうか? 1.同一IPが二回目のアクセスした場合重複カウントしない 2.同じ名前のUAがある場合は次のように(ヒット数+UA)記録する: 12hit Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40607) 5hit Mozilla/4.0 (UA偽装)
>>621 1.COOKIE
2.同じUAを足していく
623 :
nobodyさん :2006/01/29(日) 10:12:02 ID:a2S36AV1
>>621 その前にファイルを読み出して UA とアクセス数のデータ取り出さなきゃ
重複チェックもアクセス数の計算もできないわけだけど
一気にハードルが上がっちまった気がするぞ
つかこれ記録できてる? できてないよね?
どうしてもリアルタイムで処理したいっつーんなら勉強するしかないが、
そうでないならそのまま append していってあとで集計すれば?
同一 IP のチェックなら cookie は要らないから
>>601 うちではこうやってる。
要件:
qmail1.03
PEAR
手順:
.qmailファイルを作成してphpスクリプトにリダイレクトする
例:
~blogpost/.qmail
------------------------------------------------
| /usr/local/bin/php ~blogpost/recieve.php
------------------------------------------------
するとrecieve.phpが起動し、メールの内容が(ヘッダも込みで)標準入力で受け取れるので、
Mail::mimeDecodeで解析する。このへんはPEARマニュアル見ればだいたいわかるかと。
あとは解析したデータを元に処理するだけ。
Mail::mimeDecode の解析結果って、マニュアルの記述は不備じゃありません?
まぁ、pearのマニュアルってのは、元々の英語版でさえ無い場合もあるし
日本語版ってのは善意で訳してくれる人が居なければ存在すらしないものだからねぇ。
気付いた人や必要になった人がやればいいと思うよ。がんがれ
>>626
今PHPの勉強中なのですが 買ってきた本のサンプルを動かしてみたのですが ログイン画面にIDとPASSを入力してボタンを押しても 画面が変わらないままです。 サンプルの中は基本的にそのままです。 (MySQLの接続に関する設定は変更しましたが・・・) 以前、他の本のサンプルでも同じようなことがありました。 スレ違いかもしれませんが もし原因がわかる方がいらっしゃったらおしえていただけないでしょうか
実際のコードを見ない事には何とも言えんべ。 その本のサポートページがあるのならそこで聞くなり、 このスレで続けるなら肝になる部分を適切に掲示するなり。
>>628 extract($_POST);
とかそんなのつかってね?
本のサンプルスクリプトが動かないことくらいよくあるから気にしないが吉
634 :
nobodyさん :2006/01/30(月) 02:02:00 ID:gG8yFj6C BE:167089853-
ごめんなさい、↓なんですけど
自分で「短い文字でもちゃんとSJIS→JISに変換できるように!!」
と入れた処理なんですが、後から見て何をやっているか
わからなくなってしまいました。
/* 文字数が少ないとエンコードに失敗するんだとさ。*/
$message = "あいうえお眉幅ABC".$message;
$body = mb_convert_encoding( $message , "JIS", "EUC-JP,UTF-8,SJIS,ASCII,JIS");
$body = substr ( $body , 3 + 14 + 3 + 3 );
@なぜ「"あいうえお眉幅"」ではなくて「"あいうえお眉幅ABC"」なのか
A最後の「3 + 14 + 3 + 3」の詳細
解読できる人がいたら助けてください。。。。
(
http://pc8.2ch.net/test/read.cgi/php/1136276300/から誘導していただきました 。
マルチではありません。。。。)
636 :
634 :2006/01/30(月) 02:06:21 ID:gG8yFj6C BE:89114742-
ちなみにソースはやむを得ない事情によりSJIS、 メールを送信するためにJISに変換、といった処理です。 (他にこうしたら効率的、では無くて、何でこういうことをしちゃったかを思いだしたいんです。。。)
638 :
634 :2006/01/30(月) 02:17:52 ID:gG8yFj6C BE:401015366-
639 :
637 :2006/01/30(月) 02:24:24 ID:???
>>637 ありがとうございます、
そのページでは
fopenでrbを引数として利用していますが、
手元のリファレンスではbはwindowsのみと書いてあります。
これはlinuxでも使用可能でしょうか?
640 :
634 :2006/01/30(月) 02:39:25 ID:gG8yFj6C BE:222786645-
641 :
634 :2006/01/30(月) 02:40:22 ID:??? BE:401014894-
>>640 ×→windowsでは、場なりで開こうとすると
○→windowsでは、バイナリで開こうとすると
バイナリタン(*´Д`)ハァハァ
643 :
634 :2006/01/30(月) 02:46:37 ID:??? BE:401015849-
>>639 さらに間違えた。
意訳
windowsではファイルを開こうとすると
ファイルの中身を勝手に書き換える機能があります。
そうされたくなかったから、'b'オプションをつけましょう。
なお、UNIXでは勝手に書き換える機能は無いので
指定しなくでもそのまま扱ってくれますが、
必要ないですが、念のため'b'をつけると確実です。
>>634 なんでお前さんが忘れるぐらいに思いつきでやってる処理を他人が判るんだよ。
>1. なぜ「"あいうえお眉幅"」ではなくて「"あいうえお眉幅ABC"」なのか
ISO-2022-JPにエンコードしても変化の無い文字で適当なのを入れたかったんじゃないの。
>2. 最後の「3 + 14 + 3 + 3」の詳細
3 = ESC $ B (エスケープシーケンス)
14 = あいうえお眉幅
3 = ESC ( B (エスケープシーケンス)
3 = ABC
でしょ。多分
>>634 ソースがSJISなら
// $message = "あいうえお眉幅ABC".$message;
$body = mb_convert_encoding( $message , "JIS", "SJIS");
// $body = substr ( $body , 3 + 14 + 3 + 3 );
でいい
>>635 これはむしろ本スレの方が回答得られるかも?
>>635 自分のところで試してみたけど
$this->conn->getRow($sql);
みたいな記述は、ちゃんと動いたよ
答えがないのは、そういう問題がおきている人がいないせいじゃないかな
PHPのバージョンは 4.3.9
648 :
nobodyさん :2006/01/30(月) 11:49:21 ID:PZnOPnCs
すみません、質問です。 他のサーバのcsvファイルを参照したい場合は どのようにすればいいのでしょうか?
相手サーバーのCSVファイルがhttpで参照できる位置にあるなら
PHPの設定次第だけどfile("
http://相手サーバー/xxxx.csv ");で参照できるかも。
駄目ならFTPで接続するとか、Web経由でCSVファイルをダウンロードするための
プログラムを相手サーバー上に用意するとか。
>>650 駄目な理由が明らかじゃないからなんとも言えんが、
httpストリームのファイルオープンが使用制限されてるだけで
相手側ではHTTPで取れるようなところにちゃんと置いてあるなら
PEARのHTTP_Requestクラス使って取り込んだら?
>>650 とりあえず相手サーバの管理者の聞くのが先でしょーよ。
どうやって共有しますかと。
phpを実行しようとするとダウンロード画面が出ますがなぜでしょうか。 環境 FC3 php5.1.2 Apache2 httpd.confに施した設定 AddType application/x-httpd-php .php の追加 他に何をすればこの問題は解決されるでしょうか。 ググってみたんですが解決出来ませんですた。
>651 ありがとう御座います。 無知なもので、ヒントをいただけるだけで非常にありがたいです。 PEAR HTTP_Requestクラスについても調べてみます。
PHPを動作させてるサーバのIPやホスト名を取得したいのですが、 これは環境変数から取得するってことであってますか? ぐぐったのですが、リモートのホスト名などの取得についてしか 見つかりませんでした
>>655 $_SERVER["SERVER_ADDR"]
>>653 あんま覚えてないけどLoadModule行とかいらなかったっけ??
後axpsとか組み込み方で設定が違ったような気がしますが・・
>>657 おれは $_SERVER['HTTP_HOST'] が取れるならそれ、だめなら
$_SERVER['SERVER_NAME'] の二段構えにしてる
ググっても大抵はマニュアルにたどり着くはずなんだけどな
マニュアル読めしか言えないカスはレスするな
まぁここで得られる情報よりもマニュアルの方が何倍もまともで有用だし マニュアルから自分の必要としている情報を見つけ出す能力も重要 なんだけどな
666 :
663 :2006/01/30(月) 16:42:37 ID:???
Suse Linux 10.0にphp5をインストールする方法を教えてください。
>>666 作られてるけど場所違ってるとかない?
俺昔探した記憶があるようなないような
669 :
666 :2006/01/30(月) 17:09:51 ID:???
>>668 find使って検索しましたが見つかりませんですた。
>>669 findなんて使ったことねーなぁ。
俺はもっぱらlocate使ってるけど・・。
updatedbだったかDB更新してからもっかいやってみ
>>663 ・--with-apxs2=/usr/local/apache2/bin/apxsとか抜けてねぇか
・ビルド時に該当するエラー出てないか
・作られてるけど、探し切れてないだけではないか
だいたいのディストリビューションにパッケージが あるんじゃないの? 野良ビルドなんてよほどの理由がない限りやんないけど。
>>666 FC3でパッケージ版ApacheにPHP5を入れようとしたら失敗した事がある
仕方ないからApacheのビルドから始めたらうまくいった
676 :
nobodyさん :2006/01/30(月) 21:13:14 ID:iPn7Dq8b
ページが読み込まれた際に指定したページへ飛ばす事は headerで作成出来たのですが 読み込まれた際に2つのサイトを同時に開く方法は ありませんでしょうか?
>>676 PHPは接続してきた相手にデータを返すのがお仕事。
それが別ウィンドウなのかとかフレームなのかとかはブラウザがするお仕事で、知ったこっちゃない。
なので、PHPに接続する前にJavaScriptやフレーム等で解決しておくか、
それらを利用できるようなhtmlをPHPで出力してあげましょう。
679 :
nobodyさん :2006/01/30(月) 21:28:25 ID:iPn7Dq8b
>>677 様
>>678 様
ありがとうございます。
javascriptにて現在奮闘中なのですが
urlはphpで得た変数となります。
javascriptにてbodyonlordで試しているのですが
頭が混乱してきました。もう少し粘ってみます。
>>679 PHPでJavaScriptを記述すればいいよ。
echo "window.open( $url1 ); window.open( $url2 );";
681 :
もっく :2006/01/30(月) 22:45:18 ID:5vpkjCd3
自分のサイトにポイント課金システムを導入したいのですが、 安く、占いで通話時間に応じて、減算できるシステム知ってる人いたら おしえてください。 ググっても高いし、出会い系ばっかりです。
682 :
もっく :2006/01/30(月) 22:46:26 ID:5vpkjCd3
自分のサイトにポイント課金システムを導入したいのですが、 安く、占いで通話時間に応じて、減算できるシステム知ってる人いたら おしえてください。 ググっても高いし、出会い系ばっかりです。
683 :
もっく :2006/01/30(月) 22:58:31 ID:+WpFBy1B
自分のサイトにポイント課金システムを導入したいのですが、 安く、占いで通話時間に応じて、減算できるシステム知ってる人いたら おしえてください。 ググっても高いし、出会い系ばっかりです。
684 :
もっく :2006/01/30(月) 22:59:06 ID:+WpFBy1B
自分のサイトにポイント課金システムを導入したいのですが、 安く、占いで通話時間に応じて、減算できるシステム知ってる人いたら おしえてください。 ググっても高いし、出会い系ばっかりです。
レッツPHP!さんの写メールBBSを設置したのですが 更新をクリックしても -ERR authorization failed と表示されるだけで投稿も出来ません。 サーバーはロリポップです。 よろしくお願いします。
>>685 メールのアカウントかパスワードの設定ミス
687 :
nobodyさん :2006/01/30(月) 23:35:51 ID:??? BE:356457784-
>>644 ありがとうございます。
思い出しました。すっきりしました。
Aはそのとおりですね。
@は、実際の文字列が半角で始まるか半角で始まるかわからないから半角で締めておけば
どっちがきても安心、という理由だったともいます。
>>645 >$body = mb_convert_encoding( $message , "JIS", "SJIS");
本当だ、うまくいきました。半角カナ1文字だけ、とかもちゃんといきますね。
こっちにします。
ありがとうございました。
文字化けが直りません・・・orz 十三 → 十\三 は if(get_magic_quotes_gpc()) {$sled_title=stripslashes($sled_title);} で直ったんですが、そうすると今度は ー の文字が [ になってしまいます。 そして次に mb_convert_kana で一度半角にしてから全角にすると直りました。 ・・・ しかし 表あった という文字が 浮?った に・・・orz 文字コードはSJISです。 どなたかお助けをお願いいたします。。 PHPのVer4.3.11です。
689 :
nobodyさん :2006/01/31(火) 02:34:19 ID:hnBahd6E
質問させてください。 既にPC内にあるデジカメで撮影した画像に、ドットを描きたいと思っています。 まずは試しに、画像の一番左上のピクセルに真っ黒いドットを描こうと試してみました。 結果は、一応うまくいったのですが、描けたのは真っ黒いドット(#000000)ではなく、 そのピクセルに既にあった色と合成されたような(#010410)のようなドットになってしまいました。 php.netのリファレンスを見て、imagealphablending関数が怪しいと思い使用してみたのですが、 引数をtrue、false、いずれに設定しても変化が見られませんでした。 (同関数のリファレンスページにある英語のコメントは読めませんでした;;) 環境は、PHP 5.1.2。 もちろんGDは使えるよう設定しています。 バージョンは2.0.28です。 どなたか解決法をご存知の方はご教授願います。 以下が、テストに用いたソースコードです。 $img = imagecreatefromjpeg('./hoge.jpg'); //imagealphablending($img, false); imagesetpixel($img, 0, 0, imagecolorallocate($img, 0, 0, 0)); header('Content-type: ' . image_type_to_mime_type(IMAGETYPE_JPEG)); imagejpeg($img);
692 :
691 :2006/01/31(火) 02:55:13 ID:???
すまん誤解を招く引用をした。 必要ではないけど速くなるっていみな。
PHPプログラミングのロジックを勉強するのにオススメの本はありませんか? どれもPHPで出来ることは書いてあるんだけど、 具体的にどんな感じにコードを書いていけば良いのかよく分からない…。
>>689 ひとまず、RECTを描いてみたらどうだろうか?
いや、モヤレの可能性はないかな?と思って。
>>689 User Contributed Notesによると、バージョンによって
imagealphablending()のデフォルトが違うらしい。
新しいものはデフォルトがTRUE。
・imagealphablending($img, FALSE)の戻り値はどうなっているか。
・imagecolorallocatealphaで不透明色を設定したらどうか。
697 :
nobodyさん :2006/01/31(火) 11:21:59 ID:DKAPyXEr
DBから取得したデータを javacriptのresponseXMLで受信させる場合、 simplexml_load_staringでXMLオブジェクトを作り、 渡そうと考えたのですが、 このやり方ってどうなんでしょうか? こういう場合の常套手段があれば教えてください。
698 :
nobodyさん :2006/01/31(火) 15:02:58 ID:b+k1eFbT
住宅ローンについて計算してみたかったんですけど、プログラムを以下の ようにしたところ動きませんでした。 <?PHP function calculate(){$principal = document.loandata.principal.value; $interest = document.loandata.interest.value / 100 / 12; $payments = document.loandata.years.value * 12; $x = pow(1 + $interest, $payments); $monthly = ($principal * $x * $interest) / ($x - 1); if (!isNaN($monthly) && ($monthly != Number.POSITIVE_INFINITY) && ($monthly != Number.NEGATIVE_INFINITY)) {document.loandata.payment.value = round($monthly); document.loandata.total.value = round($monthly * $payments); document.loandata.totalinterest.value = round(($monthly * $payments) - $principal);} else{document.loandata.payment.value = ""; document.loandata.total.value = ""; document.loandata.totalinterest.value = "";}} function round($x){return round($x * 100) / 100;} ?> どうやらif文のところがエラー起こってるみたいなんですけど、どこが 違っているのかがわかりません。 どうか、どうすればいいのか教えてください、お願い致します。
ビックリするほど見辛い。 あとそれは何言語だ。
>>698 document.loandata.payment.value とかよくわからんがちゃんと認識されている?
そこらへん一旦変数とかに格納させたら問題ないっしょ。
JavaScriptじゃないの? ここはPHPスレだよ。
>>701 <?PHP
〜
?>
で囲めばどんな言語も全てPHPに!!
見辛くて本当に申し訳ないです。 JavascriptからPHPにしたかったんですけど、どうすればいいのか よくわからなかったのです。 認識は・・・されているかどうかわからないんですけど、エラーが起こって いるのはその辺みたいです。
荒らしじゃねーの?これ
>>703 JavaScriptとPHPはかなり文法が異なるから
両方のマニュアルをよく読んで勉強しる。
>>706 list($a) = split("&", $_SERVER('QUERY_STRING'));
俺だったらvalueの値をPHP変数にもって引数として関数に送るけど みんなはどう?
710 :
706 :2006/01/31(火) 16:55:10 ID:SKUvf+xl
712 :
706 :2006/01/31(火) 17:04:46 ID:???
>>709 ソースってほどのもんじゃないし今更思ったんだがJSでやった方がよさそうな気もしてきたな。
PHPでするなら取りたい値をvalue=<?=$a?> とかでもたしておいて
計算したいタイミングでfunction cal〜($a,$b){}とか引数つけて呼び出せばok
でもJSみたいに表示させてる値そのまま変えれないと思う多分。どのタイミングで変えたいとかにもよる。
onclickでリロードさせてやるとかせんと駄目かも・・
あと基本的にPHPはサーバ側、JSはクライアント側で動くので・・
間違ってたら補足入れまくってください by 素人勉強中の意見
715 :
714 :2006/01/31(火) 18:42:38 ID:???
あ、値変えるなら&$aみたいに変えてやってね
717 :
nobodyさん :2006/01/31(火) 19:53:15 ID:FZIxO5Ot
PHP4+MySQL3を使用しています。 DBのテーブルに該当データが何件あるかを調べて、0件であればデータを追加する という仕組みを作っています。 $query = 'select * from table where id="1"'; $result = mysql_query($query); $count = mysql_num_rows($result); if($count == 0){ //データ追加 } 該当データが(id=1)1件以上ある場合には、エラーにならないのですが、0件の場合 supplied argument is not a valid MySQL result resource のエラーが返ってきてしまいます。 select count(*) from table where id="1"; にして、mysql_fetch_array()にしても同様のエラーが返ってきてしまいます。該当の データが0件でエラーを出さないようにするにはどうすればいいのでしょうか?
>>714 何 の 話 を し て い る ?
もうちょっと頭の中を整理してから書いてくれ
POST、GETの変数名隠蔽の手段で、リクエストURLを誤魔化すツールみたいなの無かったっけ? aaa.php?b=c → aaa/b/c/ みたいになるようなやつ
PHP4ですが htmlspecialchars() mysql_real_escape_string() ってやってから保存すると文字化けする事がありますか?
722 :
nobodyさん :2006/01/31(火) 20:59:56 ID:UhWLOiX4
if($_GET){エラー表示 exit;} と$_POSTの配列を全部htmlspecialchars()でチェックしてるんですが、これでセキュリティ的にバッチグーと言えますか? $_GETは100%使わないスクリプトです。
>>717 mysql_query($query)がTRUE(ついでにFALSEの場合も実装しとけ)を
返す時の処理を追加。
>>719 Apacheのmod_rewriteがそれ。
もしくは aaa.php?b=c → aaa.php/b/c/ なら PATH_INFO
725 :
719 :2006/01/31(火) 21:39:32 ID:???
>>722 変数の使用用途によってバッチグーか大馬鹿か決まるのでどうとも言えん
727 :
nobodyさん :2006/01/31(火) 22:12:15 ID:UhWLOiX4
>>726 つまり馬鹿と天才は紙一重と言いたいわけですね。ありがとさんです。
レッツPHP!さんの写メールBBSを設置したのですが メールを送って更新しても投稿されません。 サーバーはロリポップです。config.phpの設定は // 受信メールサーバーの設定 // POP3サーバー $host = "mailxxx.lolipop.jp"; // ユーザーID $user = "lolipop.jp-dpxxxxxxxx"; // パスワード $pass = "xxxxxxx"; としました。ここと更新後のジャンプ先と 対応MIMEサブタイプだけjpgにしてあとの全てはデフォルトです。 どうすれば正常に使えるようになるでしょうか? よろしくお願いします。
729 :
721 :2006/01/31(火) 22:43:58 ID:???
>>724-725 aaa/b/cでも、htaccess+PATH_INFOでいけるよん。
aaa.phpをaaaにリネームして、
htaccessで
<FilesMatch "^aaa$"> ForceType application/x-httpd-php </FilesMatch>
aaa(.php)で
$data = explode("/",$_SERVER('PATH_INFO'));
後は$dataを適当に利用。
730 :
nobodyさん :2006/01/31(火) 23:00:39 ID:JNPr6KIK
すんません、質問です。 PHP+GDでV602SHで撮った写真を、ImageCreateFromJPEGで開こうとすると、 'XXXXXXXX.jpg' is not a valid JPEG file となります。 GDで開けないJPEGファイルというのは存在するのですか? ちなみにIEでは普通に見れますが、 Photoshopでは挙動がおかしく、一度上書きしてEXIFの情報をリセットしないと別名での保存ができません。
731 :
nobodyさん :2006/01/31(火) 23:49:51 ID:sD84bde5
すみません。 $a1="onetwethree"; $a2="onethree"; $a3="one"; のような状態で、検索をかけて文字列にマッチする場合のみtrueを返したいです。 検索条件は oneとtweで検索すると$a1が oneとtweとthreeで検索すると$a1が oneで検索すると$a1,$a2,$a3が という風にしたいのですが、おそらくeregを使うと思うのですが書き方がわかりません。 どなたかお願いいたします。
>>731 一発でやろうとしないで、条件語句をひとつずつつき合わせながらフラグでも立てるが吉
それよりも、英語の勉強をやり直した方が良いぞ。
>>730 >GDで開けないJPEGファイルというのは存在するのですか?
あるよ。詳しく調べてないけど。
GDじゃなくても、Windowsの画像ビュアーでも
ツールによって大丈夫なJPEGと駄目なJPEGとかがある。
ZIPとかRARなどのアーカイブも似たような対応度の差異があるね。
735 :
734 :2006/02/01(水) 00:17:22 ID:???
GDのJPEG機能はlibjpegに依存するんかな。 やりくりを考えるなら、そっちを調べた方がいいかも。
736 :
731 :2006/02/01(水) 00:21:04 ID:ECRbG5Uq
>>732 英語は苦手で・・・
フラグの使い方をご伝授いただけないでしょうか?
ソースお願いします
>>736 最初にフラグ変数0に初期化して比較して1たしていくだけじゃん?
738 :
730 :2006/02/01(水) 01:13:38 ID:o8148rQE
>>731 $a1="onetwethree";
$a2="onethree";
$a3="one";
foreach(split(" ", $_GET["search"]) as $g) { //検索単語はsearchに空白区切りで入るとする
$search .= "(?=.*$g)";
}
foreach(array($a1, $a2, $a3) as $a) {
if(preg_match("/$search/", $a)) $ret[] = $a;
}
var_dump($ret);
740 :
731 :2006/02/01(水) 01:38:00 ID:ECRbG5Uq
>>739 丁寧な説明付きでありがとうございます。
今入れ替えてみたところ動作いたしました。ありがとうございました。
tweも直してやれよ・・・
PHPのSOAPでは 1.PHP5純正のSOAP 2.PEARのSOAP 3.NuSOAP どれがお奨めですか?
ばかやろ、ソープは本番するところだろ。 まがい物入れたりできねーんだ。 純正の1にしておけ
>>744 建前上、ソープで本番は禁止されております。
また、生は衛生上望ましくありません。
746 :
:2006/02/01(水) 14:42:36 ID:???
配列に別の配列を追加したいのですが間単にできる関数とかないでしょうか? foreach(){ array_push() } こんな感じで1個ずつ入れていくしかない??
>>746 array_push()やarray_unshift()は複数のデータをまとめて追加できる。
他にもarray_merge()やarray_splice()なども同様で、配列のどの位置に追加したいかで使い分け。
>>746 array_push ( array &array, mixed var [, mixed ...] )
749 :
746 :2006/02/01(水) 15:08:06 ID:???
むしろマニュアルには1個しか追加しないならarray_pushを使うのは無駄だから $array[] = 値; を使うことを推奨してるくらいだ
PHP+MySQLでデータのリストを1ページ何件とページに分けて表示するときなんですが こういう場合はSQL内でLIMIT(OFFSET)を使い取得するデータを選ぶほうがいいのか 全部取得してしまってPHPで表示するのを取捨選択するのとどっちがいいでしょうか。 LIMIT使うほうがサーバへ負荷が少なくて済みそうな気がするんですが この場合、全部で何件のデータがあるのか調べる場合 もう一度SQL打たないと駄目でどっちにすべきか迷ってます。
>>752 俺なら総件数が確実に少ないなら全部取得して、
多くなる可能性があるときは2回selectを打つな。
754 :
軟式PHP :2006/02/01(水) 16:55:11 ID:???
>>752 総件数を表示したい。とかいう場合でなければ
offset 位置 limit 表示数 + 1
で取得すれば、次のページが必要かどうかわかるお。
乱数生成関数rand()について質問なんですが、 AとBの2つの乱数を生成した時に、 乱数の値がかぶってしまった場合に、 再びやりなおすといった処理はどのようにやればいいのでしょうか? ヒントがあれば教えていただければありがたいです。 srand(); $i[] = rand(1, 5); $i[] = rand(1, 5); echo "{$i[0]}\t"; echo "{$i[1]}\t";
756 :
軟式PHP :2006/02/01(水) 16:59:39 ID:???
↑に加えて、全部で何件のデータが調べる場合は続けてcount()打ったほうが負荷は低いはず。
LIMIT 使っても全件数が取得できる方法があったはず。 MySQLの機能で。
>>755 $i[] = $a = rand(1, 5);
while(($b = rand(1, 5)) == $a) 1;
$i[] = $b;
echo "{$i[0]}\t";
echo "{$i[1]}\t";
759 :
755 :2006/02/01(水) 17:14:35 ID:???
>>758 おぉー。お早い回答ありがとうございます。
早速100回ほど試行したところ1回もかぶりませんでした。
しかし仕組みがわからないorz
マニュアル引いて勉強してきます。
どうもありがとうございました。
760 :
757 :2006/02/01(水) 17:23:01 ID:???
762 :
752 :2006/02/01(水) 17:33:09 ID:???
>>760 うおおお!ありがとうございました。
勉強不足でしたすいません。
データ数によっては
>>753 氏の言うように全件取得し
count()もよさそうですね。
>>ALL
SQLの話になり申し訳ない
763 :
nobodyさん :2006/02/01(水) 18:03:21 ID:xx2TLFWy
変数の中に入っている値の、決められた文字列n個目までを取り出したい場合は、 一端splitで切って配列にしてから…って以外にないのでしょうか?
765 :
763 :2006/02/01(水) 18:36:57 ID:xx2TLFWy
>>764 例えば、
「あけましておめでとうございます。今年は戌年です。去年は猿年です。来年は猫年です。」
と言う文章があって、
この文章の"。"の3個目までを取り出したいとき、です。
わかりずらくてスマソ。
>>765 素直に explode/implode すれば?
767 :
765 :2006/02/01(水) 18:53:07 ID:xx2TLFWy
>>766 やっぱそれしかないのでしょうか。
変数の中が大量でも遅くなったりしないのでしょうか?
>>767 そんな心配するくらいだったら、最初から設計を考え直すべし。
mbereg("^[^。]*。[^。]*。[^。]*。", "あけましておめでとうございます。今年は戌年です。去年は猿年です。来年は猫年です。", $hoge); だめ?
>>765 やりたいことが良くわかんないけど、
前方から"。"をサーチ&カウントして目的の位置を取得
文字列の頭から目的の位置までを抜き出せば良いんじゃないの。
オーソドックスでベタなやり方だけど、別に問題がある訳でもないと思うが。
<textarea>から受け取ったテキストで、 改行コードの前に改行数をつけるような処理をしたいのですが、 うまくいきません。 preg_replaceで置き換えるようにしてるのですが、ループのところでつまってしまいます・・・。 $temp = $_POST['temp']; //テキストエリアから取得したもの function hoge($str,$count) { preg_replace("/\r\n/",$count."\r\n",$str); } hoge($temp); こんな感じにして、どういう風にループをまわせばよいのか・・・。 ループの終了条件を取得するために改行数を取得しようとしましたが上手くいかず・・。 どなたかご教授いただけると幸いです。
×ご教授 〇ご教示 まず日本語を(ry
これからPHPについて学んでいこうと思うのですが、 バージョンは5.x.xのものを使えばいいんでしょうか?
775 :
765 :2006/02/01(水) 22:39:48 ID:fBKX7o67
>>771 実際は、
$hoge="今日から2月。<br>昨日は1月。<br>明日も2月。<br>そして水曜日。"
と言う変数があったとして、
ブラウザで表示させた時の2行目までを取り出したいのです。
なので、文字列<br>が2個目までのモノを取り出したい、という事で…。
>>775 おまえしつこい。
>>771 の通りだろうが。
「。」を「<br>」に置き換えりゃ済むことだろうに。
それとも何か?
ソース丸ごと書かなきゃ満足しないのか?
だったら、ホカイケ。
>>772 $temp $_POST['temp'];
print preg_replace('/(\r\n)/', '(++ $i) . "$1"', $temp);
>>777 書き間違い
$temp $_POST['temp'];
↓
$temp = $_POST['temp'];
>>775 素直にexplodeして取り出すのが速い。
多分、それ以外の方法だとかえって遅い。
PHPがweb上で呼び出されたとき、 それがhttpかhttpsのどっちで通信されているかを 判断する方法を教えていただけませんか。 よろしくおねがいします。
781 :
765 :2006/02/01(水) 23:16:50 ID:fBKX7o67
あ、ごめん
>>771 しか見てなかった。
>>769 >>770 サンプルありがとー。
でも、正規表現よりは配列に格納した方がいいのか〜。
なるほど。ありがと。
>>779 そっか。じゃあ素直に…とりあえず報告。
↓↓↓↓↓
//----------------------------------
//ブラウザに2行分だけ表示させる
//----------------------------------
$hoge="今日から2月。<br>昨日は1月。<br>明日も2月。<br>そして水曜日。"
//<br>ごとに配列に格納
$hoge_array=explode("<br>", $hoge, 3);
//2番目の配列だけを表示
for($nCnt=0; $nCnt<=1; $nCnt++){
echo $hoge_array[$nCnt] ."<br>\n";
}
>>776 お門違いですぜ。
>>777 どうも、ありがとうございます。
やはり改行コードで行数取得なのですね・・・。
ありがとうございます。
事故解決しました
$HOGE = 'hoge'; echo "string is $HOGE"; という動作を期待して define(HOGE, 'hoge'); echo "string is HOGE"; と書いてもうまくいきませんよね。 echo "string is ". HOGE; とすればいいのですが、あまり" "で分けたくありません。 一気に書く方法ってありませんでしょうか。
786 :
784 :2006/02/02(木) 00:09:00 ID:???
補足です。 echo "string is {HOGE}"; echo "string is {constant(HOGE)}"; echo "string is {constant('HOGE')}"; 全部うまくいきませんでした。
>>784 個人的に興味があるだけなんだけど、なんで" "で分けたくないの?
処理的に理由がある?
短いならいいんですが、長くなると echo "orenge : $HOGE1\n apple : {$HOGE2}\n banana : $HOGE3\n
間違えて途中で送信してしまいました。すいません。
>>788 短いならいいんですが、長くなると
echo "orenge : {$HOGE1}\n apple : {$HOGE2}\n banana : {$HOGE3}\n";
は綺麗ですが、
echo "orenge : ". HOGE1. "\n apple : ". HOGE2. "\n banana : ". HOGE3. "\n";
は見難いからです。
HTMLのソースを出力するときにクオーテーション(' ')などが含まれると
さらに見づらくなります。
HTMLだとこんな感じです。 $orange = 3; $apple = 5; $banana = 10; echo "<a href='index?orange={$orange}&apple={$apple}&banana={$banana}'>"; 上をdefine使って定義した場合、 define(ORANGE, 3); define(APPLE, 5); define(BANANA, 10); echo "<a href='index?orange=". ORANGE. "&apple=". APPLE. '&banana='. BANANA. "'>"; となります。下は見づらくないでしょうか。括弧の対応関係がよくわからなくなります。 define使わないほうがいいんでしょうか・・
>>790 見づらい見づらくないは主観の問題だから答えられないが。
そこまでしてdefineを使う理由は?
>>792 session idなどが最初からdefineされているなどの理由です。
わざわざ $sid = SID; としてから$sidを使うという事ですか?
defineで定義した定数を何度も呼び出す事なんて無いと思うんだけどな。 どうしても見難くていやなら関数用意して定数放り込むようにしたらどう?
まあ、別に変数を使ってもいいんですよ。 ちょっと心持気持ち悪いですが。 ただ、defineのままできる方法があるのかなと思いまして。 結局ないんでしょうか。
>>796 リンク張るときに
echo "<a href='
http:// ". URL_WEB_SERVER. "/". THIS_FILENAME. "'>hoge</a>";
とか。結構使うんですが、こういうのってやめたほうがいいですか?
全部変数にするべきですかね。
>>750 すごいショック。
ほんとだマニュアルにも確かにそう書いてある・・・。
マニュアルは結構まめに確認するほうだけど、完全に見落としてた。
>>798 いや。そのままで良いんじゃないの。
784はその書き方が気持ち悪いみたいだから関数用意したらって言っただけだよ。
なるほど、参考になりました。 echo "{HOGE}"; でHOGEの中身が出力されるって仕様があってもいい気がするんですけどねー。 しないのは何か理由があるのかなあ。
そもそも定数って何のためにあるのか分からないんだけど・・ 変数じゃなくって定数にしなきゃいけないって状況がある? これも単なる興味の質問だけど
既出だったら申し訳ない。 セッションを使ったi-mode向けの掲示板を作っているのですが、 前のページに戻る際なんかにキャッシュが効かなくなりました。 毎回通信して読み直しています。この方が都合が良いといえば良い のですが・・・。(D901iで検証しています) PCではキャッシュが効いているようなのですが、これはi-modeの 仕様なのでしょうか?
>>805 変数だって勝手には変わらないじゃない?
>>806 その変更がないことを視覚的にも(普通は大文字で書くよね)
はっきり表現したいんじゃない?
大勢でプロジェクト組むとき勝手に変えられる恐れがないからかな
>>808 なるほど
個人で作っているから分からない発想だった
thnx
さて くだらなくなくなってきました。
上級者には当たり前の疑問も気軽に議論出来るのがこのスレの存在意義だろー
<?php // // 西暦を和暦に変換する // include_once("display.inc"); include_once("input.inc"); include_once("calc.inc"); include_once("result.inc"); if (empty($_GET['yyyy'])): $_GET['yyyy'] = ""; endif; display_input_area();// 入力エリアの表示 if (!empty($_GET['yyyy']) && input_is_valid()):// 妥当性チェック $result = calc_gengou();// 元号の計算 display_result($result);// 元号の表示 endif; ?> ↑を実行したら、 Warning: main(display.inc): failed to open stream: No such file or directory in D:\Program Files\xampp\htdocs\~test\part1\chap2\test8.php on line 5 Warning: main(): Failed opening 'display.inc' for inclusion (include_path='.;D:\Program Files\xampp\php\pear\') in D:\Program Files\xampp\htdocs\~test\part1\chap2\test8.php on line 5 というエラーが表示されました。 なにがいけないんでしょうか? 同じディレクトリにdisplay.incはあります。 PHPは4.4.1です。
>>812 考えられるのは実際のファイル名とincludeしてるファイル名が違うこと。
>>801 たぶん、本当の答えは「テンプレートエンジンを使え」だと思う。
文字列の連結って結構わけわかめになるからねー。
気持ち悪いのは分かるよ。
>>801 CとPerlのいいとこ取りをしようと張り切った挙句に
ポリシーが曖昧で中途半端な仕様になってるだけ
816 :
軟式PHP :2006/02/02(木) 10:19:32 ID:???
だがそれがイイ。
817 :
nobodyさん :2006/02/02(木) 10:32:23 ID:20uSXYKW
P-WEBの自動リンク集のスクリプトで一番下のリンクって消していいんですか?
>>817 該当スクリプトのライセンスと日本の国内法を確認しろ。
>>812 試しに
<?php
var_dump(glob("*.inc"));
?>
ってのを動かしたとき、表示内容の中にdisplay.incはあるか?
>>813 >>819 array(4) { [0]=> string(8) "calc.inc" [1]=> string(11) "display.inc" [2]=> string(9) "input.inc" [3]=> string(10) "result.inc" }
と表示されました。
今やってみたらなぜか動きました。
何がいけなかったんだろう?
お騒がせしました。
フレームがあるページをPHPで書くとするとどう表現すればいいでうか?
それHTMLだし
html何ですが、今までindex.html、left.html、right.htmlでフレームを作ってましたが これをPHPのecho等でhtmlで出力する時にどう表現すればいいのかを知りたいのですが
って思ったんですが、これはhtmlで1ファイルで実現できないとphpでも出来ないですよね。
>>823 index.php、left.php、right.phpでいいやん
>>825 それを1つのファイルでできないかなっておもいまして・・・
>>826 だからまずは、
複数のフレームを1つのHTMLファイルで実現する手段を見つけなよ。
それさえ出来れば、後のことは引き受けた。
>>823 何も難しく考えることはない。
フレームなんてブラウザが同じ画面に構成してるだけなんだから。
index.php、left.php、right.phpという、それぞれ元のhtmlを吐き出す
PHPスクリプトからはじめてみな。
>>826 んじゃ、index.phpを
index.php?f=main、index.php?f=left、index.php?f=right
で呼び出した時にそれぞれのフレームの内容を吐くようにつくれば?
ただHTMLのフレームって、ファイルをまとめるためじゃなくて、
寧ろ分けたままのものを、表示の際にまとめるための手段だと思うんだけど。
GETで配列を渡したいのですが今とりあえずserializeでやっていますが 結構長くなってしまうのでもうちょっと短くする方法はありませんでしょうか?
833 :
nobodyさん :2006/02/02(木) 20:01:06 ID:ix6GldKp
配列使え
835 :
833 :2006/02/02(木) 20:42:59 ID:ix6GldKp
四文字で解決ってどうなのよ…
下質です
838 :
nobodyさん :2006/02/02(木) 21:09:46 ID:E0bq5JaA
それで解決できるってすげーよ。
839 :
nobodyさん :2006/02/02(木) 22:02:31 ID:AVLZG/Ha
他の掲示板にPOSTでデータを送るにはどうすればいいの? 悪用するわけじゃないけど、荒らしスクリプトみたいなのってどういう仕組みなのかなって思って。
>>839 さんざん既出。ソケット使え。(梨でも良いが)
>>840 荒しとヒントの区別の付かない人には無理だと思う。
842 nobodyさん sage投稿日: 2006/02/02(木) 22:18:02 ID:???
>>840 荒しとヒントの区別の付かない人には無理だと思う。
興味本位で便乗するけど、同じ名前のフォーム部品を持つHTML作って送りつければいいだけじゃないの?
まぁ、手動でぽちぽちするならそれもありかもな。
ある意味正解。しかしたいていの「まともな」スクリプトやサーバーは制御されてる。
既に答えは出たし、こういう話題は荒れるからここで終了。
post
PHPエディターを置いてるサイトの解説を見て、PC上でPHPを動くように最新版をダウンロードしまくったのですが、php.ini?の設定で変えておいた方がいい箇所ってありまつか?
PHPエディターを置いてるサイトの解説を見て、PC上でPHPを動くように最新版をダウンロードしまくったのですが、php.ini?の設定で変えておいた方がいい箇所ってありまつか?
>>852 実際にどこかのサーバで動かすスクリプトの開発環境として使用するなら、
そのサーバの環境に合わせる。(エンコード周りとか結構重要)
「とりあえず、遊んでみるだけ」って言うなら、当面はデフォで桶
累計17万5千ダウンロード突破(2006/1/8) ・・そんなに使ってるのか!?
>>853 ありがd。とりあえずこのまま開発してって不具合があったら調整していきます。
857 :
nobodyさん :2006/02/02(木) 22:52:27 ID:5dJz86s1
次のような方法で、グローバル変数を関数内で呼び出せることは分かっています。 <?php $var_A = 1; function Test() { global $var_A; //グローバル文で宣言 echo $var_A; } Test(); ?> しかし、関数Aで定義した変数を、関数Bで使う方法が分かりません。 function A() { $var = "hoge"; } function B() { print $var; } これで $var を表示する方法が知りたいのです。 検索をかけても、グローバル変数を関数内で呼び出す方法が載っているサイトばっかりひっかかって、 下記の方法がなかなか見つからないのです。 ご教示お願いします。
858 :
857 :2006/02/02(木) 22:55:15 ID:???
追記です 後者は、 A(); B(); を実行した場合についてです。
859 :
857 :2006/02/02(木) 22:59:26 ID:???
関数Aと関数Bの両方で 「global $var;」を宣言したら使えました。 phpのスコープの概念が他の言語とかなり違っていて混乱していました。 global $var; は、 「グローバル変数 $var を 関数内で使用することを許可する。」というだけではなく、 「関数 $var を グローバル変数にする。」という処理も同時に行うという事なんですね。 自己解決でスレを汚して申し訳なかったです。
>>859 スコープの「概念」自体は他の言語と大差ないよ。
ただ、デフォルトがグローバルなのかローカルなのかの差はある。
861 :
857 :2006/02/02(木) 23:47:17 ID:???
>>860 関数内での宣言がデフォルトでローカル変数の言語は使ったことがあったので良かったんですが、
グローバル変数を関数内でそのまま呼び出せない部分で混乱したようです。
| global $var; は、
| 「グローバル変数 $var を 関数内で使用することを許可する。」というだけではなく、
| 「関数 $var を グローバル変数にする。」という処理も同時に行うという事なんですね。
と考えていたのですが。
| ローカル変数 $var と グローバル変数 $var は別に存在する
| 関数で「global $var;」と宣言した場合には、その関数内ではグローバル変数の $var が使われる。
| 他の関数内でそのグローバル変数 $var を使いたい場合には、そっちも global $var; と宣言する必要がある。
とシンプルに考えたらなんだか理解した気になれました。
別の関数内の変数を必要とした事が一度もないんだけど
そもそも、グローバル変数を介した関数間の変数のやり取りはよろしくない。 クラスにしてメンバ変数つかうのが妥当だと思われる。
globalを使わなきゃいけない状況ってどんなのがあるの?
865 :
857 :2006/02/03(金) 00:19:30 ID:???
>>862 うんと、本来の「関数」ではないところに、
作業の流れを分かりやすくするために関数扱いにして
一番上で条件ごとにどの関数を呼び出すのかを列挙している感じに使ってます。
866 :
857 :2006/02/03(金) 00:25:50 ID:???
具体的にはこんな風に関数を使っているので、 関数から他の関数で使っている変数を呼び出す必要があるんです。 # 処理内容を順番に列挙 LoadFile(); if ($_POST['Type'] == "表") { FileTable(); } else { FileG(); } # ファイル読み込む function LoadFile { $ファイル内容 = fopen("hogehoge.dat", "r"); fclose($ファイル内容); } # ファイルの内容を表にする function FileTable { 〜ここで変数 $ファイル内容 を使う〜 } # ファイルの内容をグラフにする function FileG { 〜ここで変数 $ファイル内容 を使う〜 }
867 :
857 :2006/02/03(金) 00:26:34 ID:???
()を抜かしていたので修正 # 処理内容を順番に列挙 LoadFile(); if ($_POST['Type'] == "表") { FileTable(); } else { FileG(); } # ファイル読み込む function LoadFile () { $ファイル内容 = fopen("hogehoge.dat", "r"); fclose($ファイル内容); } # ファイルの内容を表にする function FileTable () { 〜ここで変数 $ファイル内容 を使う〜 } # ファイルの内容をグラフにする function FileG () { 〜ここで変数 $ファイル内容 を使う〜 }
ところで、引数を使うのはダメなの? function LoadFile () { return $handle = fopen("hogehoge.dat", "r"); } $naiyou = LoadFile(); if ($_POST['Type'] == "表") { FileTable($naiyou); } これじゃダメ?
配列$x に 二次元配列$y[2][1] の値を代入したくて、次のような式を書きました。 print "$x[$y[2][1]]"; そうすると、パースエラーになってしまうようです。 Parse error: syntax error, unexpected '[', expecting ']' in /ディレクトリ階層/hogehoge.php on line 数字 原因を教えて頂けると幸いです。
870 :
857 :2006/02/03(金) 00:36:49 ID:???
>>868 上級者の方はそういうコードを好まれるみたいですね。
自分の場合は、関数から引数を2つ出力できなかったり(配列使えばできるけど)するので
なんとなく867みたいなやり方がわかりやすい気になっちゃうんです。
自分のコードは脆弱性を作りやすい書き方みたいですので、他の人のを参考にして綺麗なコードを書くように心がけます。
>>869 $x[] = $y[2][1];
print_r($x);
じゃ駄目なのかな
872 :
869 :2006/02/03(金) 00:47:34 ID:???
>>871 あ、すみません。
表現がおかしかったようです。
(誤) 配列$x に 二次元配列$y[2][1] の値を代入したくて、次のような式を書きました。
言葉で説明できないのでコードで書きますね。
このようなコードを1行に書きたいんです。
配列に配列をいれることをよくやるので1回一時的な変数にいれたりするとまどろっこしいので。
| $hoge = $y[2][1];
| $x[$hoge];
これを多くの言語では、$x[$y[2][1]] と書けばできるんですが、
phpではこのようにシンプルにやる方法はないのでしょうか?
>>867 なんか昔のBASICのサブルーチンを思い出すようなコードだな。
>>872 普通にできるだろう。
869のエラーはそれを”〜”中で書いてるせいだと思う。
875 :
無知ですまそ :2006/02/03(金) 02:01:46 ID:SfkSG4GR
パスワードチェックで if ($FORM{'mail'} ne 'aaa') { &error("パスワードが違います"); } としたのだけど、aaaとbbb以外は違うとするにはどうすればいいのか教えてください。
876 :
無知ですまそ :2006/02/03(金) 02:02:53 ID:SfkSG4GR
if ($FORM{'pass'} ne 'aaa') { &error("パスワードが違います"); } でした。
>>870 基礎からやり直したほうがいいと思う。
用語も間違ってるし、全くわかってないだろ。
ASPのServer.Transferのように GETとPOSTとSESSION以外で別ページに変数渡す方法ないでしょうか? やりたいことは別PHPプログラムへ変数を渡すことです、 GETとPOSTはセキュリティの関係上使用したくありません、 変数を渡されるPHPプログラムは全く弄ることができないので、 SESSIONでも難しい状態です。 宜しくお願いします。
PHPってオーバーロードできないんですね・・^^;
php で関数をラップするにはどうしたら? wrapper(1, 2, 3); function wrapper() { $args = func_get_args(); //return original($args); //これでは original(1, 2, 3) ではなく original(array(1, 2, 3)) } python かなんかだと配列渡すと勝手に展開してくれた記憶が。 同じようなことをやりたい。
>>883 call_user_func_array()
>>881 渡されるプログラムをいじれないなら、渡されるプログラムが
受け取れる方法を確認するのが先じゃないのか?
つか渡されることを前提に作られていないなら get, post 以外は
無理だろ、ふつー。
>>881 ASPのServer.Transferだって渡される側を改造しないとデータは受け取れなくなかったか?
>>881 変数をファイルに書き出して、FTP(もしくはSCP)で相手環境に投げる
・・・・んなバカなw
>>857 >>520- からの流れを読んで class 使うのが吉
>>889 こんな分割の仕方をする人がそのままの感覚でクラスを使ったら
めちゃめちゃメモリ食いのプログラムが出来上がる予感
atomのパーサ・ジェネレータでC++のフリーのライブラリってありますか?
ここはPHPの質問スレなんだが
893 :
883 :2006/02/03(金) 14:18:12 ID:???
>>890 今時そんな貧乏的なプログラミングする必要あるの?
どんな分割しようがこの時代において大差ないだろ。
そんなに、負荷が気になるなら eAccelerator でも使ってコンパイルすりゃいいじゃん。
そしたら分割がどうのなんてことによる差なんて殆どなくなるから。
$a = &$b; と $a =& $b; って一緒ですか?
>>895 $aと=と&と$bはそれぞれ別のtokenだからスペースの有無は関係ないと思う
>>894 あの単なるラベルにしかなってないレベルの機能分けでクラスにしたら
大半の変数をメンバ変数に抱えてグローバルで持ち回る羽目になると思うし、
しかもそれをいちいちオブジェクトを通した間接参照することになる。
そういう状態になると、PHPってメモリを無駄に馬鹿食いする上に激遅になるんで
ホントにそのためだけにアクセラレーターなどを導入する羽目になりかねないと思う。
設計はどうでもPHP使うならアクセレータはあった方がいいよ
899 :
nobodyさん :2006/02/03(金) 19:47:52 ID:QzQwZT7X
おい require_once "Auth/Auth.php"; function loginFunction() { /** * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; } $dsn = "mysql://user:password@localhost/database"; $a = new Auth("DB", $dsn, "loginFunction"); $a->start(); if ($a->getAuth()) { /** * サイトの出力はここ。 */ } 動かないんだが、 テーブル指定してないのにつながるの? 教えて下さい。
オーイ(^o^)/~~~~~オーイ エスパーさんお呼びですよ
動かないんならつながらない。 答えは出てるんじゃまいか。
>>899 それ配布するつもりか?
プログラム言語触ったことないやつにはecho "";なんて意味不明だ。
別ファイルにhtml部分は書き出したほうがいいんじゃないか?
>>896 そういうことか、さんくす
あるところに=&を参照代入の演算子だって書いてあったから=&で1つなのかと思った
SJISで mb_ereg(preg_quote($a),"あと"); で $a="あ"; だと真で $a="あと"; だと偽 になるんですが両方とも真にしたいのです。原因わかる方いますでしょうか?
>>906 良く判らんがSJISに対応してないpreg_quoteで処理したら
そもそもおかしいのでは?
>>906 再現しない。普通にどっちも真になった。
SJISだ、と言ってるが、実はソースがSJISなだけでphp.iniの設定はSJISじゃなかったりしないか?
>>906-907 あれま、そうなんですか。よく確認してませんが、php.iniではEUCかもしれません。今起きたばかりなんであとにしますが、php.iniをいじれないのでme_internal_encoding()、ini_set()あたりでいけますかね?
・元になる配列はn個ある。(全てにキーが付けられていて、配列の長さ・並び順は同じ) ・共通部分を抜き出した配列を作り、重複するキーと値のペアを削除したい。 $array1 = array( 'a'=>1, 'b'=>2, 'c'=>3 ) $array2 = array( 'a'=>1, 'b'=>3, 'c'=>5 ) ↓ $array1 = array( 'b'=>2, 'c'=>3 ) $array2 = array( 'b'=>3, 'c'=>5 ) $result = array( 'a'=>1 ) $result = array_intersect_assoc($array1, $array2 [, array ...]) マニュアルを調べて重複する物を取り出す方法は分かったけど、重複してるのを消すには各配列毎にunsetしなきゃダメかな。 もっとスマートな方法があれば教えてください。
911 :
906 :2006/02/04(土) 08:30:29 ID:???
INI_SET("mbstring.internal_encoding","SJIS"); でできました。ありがとうございました。
「List」が「いst」に見えました。 俺、疲れてるんでしょうか?
>>910 array_unique()使うといいのでは
array_unique() は一つの配列内での値の重複を無くす関数で、 複数の配列間で共通の物を抜き出す用途には使えないんじゃないかな。
あ〜そっか。 array_diff()だな。
>array_diff() は、他の引数のいずれにも存在しな いarray1の値の全てを有する配列を返します。
ってなってるから
>>910 の例に則ると、array_diff($array1, $array2) の結果は array( 'b'=>2 ) になって、
欲しい結果として例示してる $result と 各$arrayには当て嵌まらなく・・ orz
mysqlで、abc.txtの中身 あいう|aabbccdd|1234 えおか|eeffgg|4321567 等100件くらいのデータを登録したいのですが、10件ほどしか登録できません。 どうしたらいいでしょうか? $text = "abc.txt"; $mi = file($text); $i = 1; foreach($mi as $val){ $jon = explode('|', $val); mysql_query("INSERT INTO dare VALUE ($i,'$jon[0]','$jon[1]','$jon[2]')"); $i++; }
関係ないけどforeachでやってる意味なさそうな
>>916 $array1と$array2の共通部分が$resultならそれを各配列から除けばいい。
$array1 = array_diff_assoc($array1, $result);
多分こんな感じ。
>>917 クエリー発行の代わりにechoでもして変数の中身を確認してみ。
>>919 あぁ、なるほど・・勘違いして妙な事言ってすみません。
動作チェックをして意図した通りに動く事を確認しました。ありがとうございます
>>920 echoはちゃんと100件ほど表示されるんですよ。
navicat使っとく事にします。
ありがとうございました。
>>917 mysql_query("INSERT INTO dare VALUE ($i,'$jon[0]','$jon[1]','$jon[2]')") or die(mysql_error());
やべぇ。 PEAR が ペアって読むって TV 見てて初めて気付いた。。 てゆーか梨だったと今更気付いたしorz
>>924 m9(^Д^)プギャー
オレもだorz
うえ?ピアーじゃないの?
梨
発音はピに近いペアー 日本語読みだとペアー
くだらない質問がおkということでやってきました。 当方WindowsでPHPをコーディングしているのですが、仕事場ならまだしも自宅でコーディングする時に あの登録されていない拡張子のアイコンがとても気になります。Javaとかは良いアイコンがあったので 変更しているのですが、PHPファイルの良いアイコンがなかなか見つかりません。 誰か良いアイコンご存じないですか?
933 :
930 :2006/02/05(日) 03:59:17 ID:???
うおおおおおおお!!!!!! ありがとうございます! こんな素敵なアイコンがあったのか・・・ やる気が出てきたです! しかしアイコンとかちょっとかえるだけで何か凄い新鮮な気分だ
0602/0131.dat といったフォーマットの文字列から、 1〜4文字目と8〜9文字目を抜き出して 06 02/31 というフォーマットに変換にしたいんですが、どうやるのが手短ですか? 自分がやるとsubstrとか何度も使いまくってエライことになりそうなんですが…。
>>934 正規表現かsscanf。自分でやるなら正規表現だけど、どっちでもいいと思う。
937 :
nobodyさん :2006/02/05(日) 04:50:40 ID:uUJqicme
元あるHTMLファイルにコメントを書き込んでいくスクリプトを製作しているのですが、 書き足していくと、もとある文章の上に書き足されてしまいます。 もとある文章の下に加えたい場合はどのような操作をすればよいのでしょうか?
自分も始めたばかりでよく分からないのですが <? $logpath = "hoge.txt"; $lines = @file($logpath); $fp = @fopen($logpath , "w"); flock($fp, LOCK_EX); $lines[] = "追加したい文字列<br>\n"; foreach($lines as $value) fputs($fp, $value); flock($fp, LOCK_UN); fclose($fp); /*確認*/ $lines = @file($logpath); foreach($lines as $value) print($value); ?> こんなんでどうでしょう
>>937 fopenの第二引数について調べておいで。
941 :
938 :2006/02/05(日) 05:17:52 ID:???
なるほどaにすればforeach使う必要ないのかw 勉強になりますた
wは必要ない時はあんまり使わない方がええよ。
モジュール版のphpって Apache 自体が処理するんですよね。 ってことは、無限ループphpを作って実行した場合には、 そのphpを終了することはできないのでしょうか? 終了するためにはApache再起動が必要になるんですか?
>>943 そこのあたりあんまり詳しくないけど多分そうだと思う。
しかもApache2からはタスクバーにApacheアイコンあるでしょ?
それからはApacheの再起動とか出来なくなっちゃう。
マイコンからサービスで止めなきゃダメポ
長いソースはってもいいですか
ステップ数にも夜が 出来るならどっかにあげてくれ
947 :
943 :2006/02/05(日) 05:58:55 ID:???
>>944 ということは、例えば共有レンタルサーバでスクリプトを無限ループさせちゃったら、
サーバ管理者しか止められないということなんでしょうか(´・ω・`)
948 :
945 :2006/02/05(日) 06:01:16 ID:???
MySQL用のDB操作クラスなんですが、基底クラス+派生クラスで158行あります。 空白改行とコメント含んでます。貼るには長いですかね。。 はれる場所さがしちゅ
949 :
945 :2006/02/05(日) 06:20:23 ID:???
なさそうなんで、切り抜いて貼ります。 すごく初歩的な質問になりますけれど、継承というのはこういう使い方でおかしくないでしょうか? 質問の仕方が悪いかもしれませんが、どう聞くべきかむずかし。。 親クラスに↓こんなメソッドがある場合、 //レコード取得 public function Set_Data($result, $row) { mysql_data_seek($result, $row); return mysql_fetch_array($result); } 子クラスでそれを使いたい場合は↓のようにしている。 //結果取得 public function Setdata($row=0) { $rs= parent::Set_Data($this->result, $row); $this->setBbsdate($rs["bbsdate"]); $this->setBbsid($rs["bbsid"]); $this->setUsername($rs["username"]); $this->setTitle($rs["title"]); $this->setBody($rs["body"]); $this->setMailaddress($rs["mailaddress"]); $this->setWebaddress($rs["webaddress"]); $this->setDeletekey($rs["deletekey"]); $this->setRemotehost($rs["remotehost"]); }
>>949 普通、子クラスから親クラスのメソッド呼び出すときも
$this->Set_Data(); ってやると思うぞ。
>>937 HTMLのどの位置にどうやって書き込んでるのさ。
現状の上書きしちゃうっつー方式がよく分からんぞ。
952 :
949 :2006/02/05(日) 06:34:24 ID:???
>>950 ありがとうございます。
例えば、こんな親のコンストラクタがある場合、
//親コンストラクタ
public function __construct() {
$this->constr = mysql_connect('*******', '****', '*******');
$this->dbname = '******';
mysql_select_db($this->dbname);
}
子のコンストラクタから親のコンストラクタを使う場合、↓みたいにしなきゃいけなかったので
親の使うときは全部こうなのかと勝手に思い込んでました。
//コンストラクタ
public function __construct() {
parent::__construct();
}
ご教授ありがとうございました。
953 :
nobodyさん :2006/02/05(日) 09:10:19 ID:iOU2xOeQ
質問させてください。 formのtextareaタグで以下のデータを入力します。 aaa bbb ccc スクリプトで、 $arr = explode("\n",$data) のように、改行コードで配列に格納し、 if ($arr[0] == "aaa") で比較しても条件にマッチしません。 var_dump($arr[0])したところ、4文字になっていました。 どういうことなのでしょうか?
改行コードについて詳しく調べてみなさい さすれば道は開けよう
\r\n
trim
>>953 みて思ったんですけど
str_replace("\r","\n",$text);
str_replace("\r\n","\n",$text);
って常にやっとけばいいのかな?
>>957 \r\n \n \rの3パターンがある。(\n\rは無い)
それぞれの場合にその処理をするとどうなるか考えてみると、おのずと答えがでる。
perlから移行中なのですが、正規表現におけるphpとperlの違いをドキュメント化したサイトはありませんか?
>>959 perlがわかってるなら、phpマニュアルみれば違いがわかるのでは?
___ _ | ̄| /> _ _ / _| | | /> | |// \ \ __ / / \ \. | |// | \ \ \/ \/ / 〉 ヽ. | \ | |\ \ \ /\ / | ̄ ̄ ノ | |\ \ /::::/'"  ̄ヾi /  ̄ ̄ \ /::::/'" ̄ ̄ヾi /  ̄ ヽ |:::::::| ,,,,,_ ,,,,,,| | ^ ^ | |:::::::| ,,,,,_ ,,,,,,| | ^ ^ | |r-==( 。);( 。) | >ノ(、_, )ヽ、.| |r-==( 。);( 。) | >ノ(、_, )ヽ、.| ( ヽ :::__)..:: } ! ! -=ニ=- ノ ! ( ヽ :::__)..:: } ! ! -=ニ=- ノ ! ヽ ー== ; \ `ニニ´ / ヽ ー== ; \ `ニニ´ / \___ !  ̄ ̄ \___ !  ̄ ̄ ̄
963 :
nobodyさん :2006/02/05(日) 14:37:05 ID:6eXZDRj2
指定したURLから読み込んだhtmlファイルから、特定の場所の値を取り出す方法は、何かありますか? 例えば、2番目のテーブルの3行目の左から4個目のセルの値を取り出す方法。 やっぱり、文字列処理をしないといけないのでしょうか?
当然。
>>949 何かを取得するためのメソッド名が setXxx なのは絶対におかしい。
getXxx にしとけ。
>>959 PHPにはPerl互換の正規表現を扱うpreg系ライブラリがあるから
それ使ってればそれほど違いを意識しないで済むよ。
若干の仕様差はあるけど、pregのマニュアルの中で明記されてる。
Perl互換でないereg系は要するにPerl拡張の入ってない標準的な正規表現です。
967 :
944 :2006/02/05(日) 15:57:34 ID:???
>>947 今の俺の理解力ではそういうことになる。
一応そこに確認してみたらどうだろう?
で、結果が解ったら俺に教えてくれ('A`)
>>947 共有サーバだったら、PHPなりPerlなりの実行時間には制限が設けられていると思う。
1ユーザがリソースを食い尽くさないようにね。
なので、その制限時間を越えたら、問答無用で強制終了されると思われ。
ちょっと思ったんだけど、ローカルでチェックしてても無限ループする可能性があるのってどんな場合が考えられるのかな?
エクスプローラからドラッグアンドドロップでファイルをアップロードできるようにしたいのですが、 ActiveXを組み合わせる以外に方法はありませんか?
既出か分からないけど、 トップーページと入力すると 本来ならば%83g%83b%83v%83y%81[%83WのはずなのにPHPは%83g%83b%83v%83y%81_%83Wと受け取ってしまう。 [となるべく部分が_になってしまう。 [[[とすると_[[と受け取るので最初の[のみ誤認してしまうようです。 これの対処はどのようにすればいいでしょうか?
>>947 CGIだから無限ループが問題にならないということはないよ。
リソース食えば同居してるApacheの足を引っ張るから。
普通のまっとうな管理者ならリソースの制限をしてるので、
ユーザの過失で無限ループに陥っても、管理者が手動で止めるまで際限なく
ループが続くということはない。Apahce+PHP(サーバモジュール/CGI/suExec等)の
組み合わせにもよるので、制限や監視のしかたにも色々とあるが
そういった用意は管理者がしてるものなので「管理者が止めないとだめ」というのは正しい。
制限、監視をしてても、それらは一時的にはサービスの提供に支障が出るので、
テスト自体を共有サーバでしてるような香具師は注意・警告の上、
何度も繰り返すようなら契約の解除ぐらいはやります。他の人に迷惑だからね。
>971ですが状況が分かりづらくてすみません
>トップーページと入力すると
というのはURLに入力という意味で
『
http://.../index.php?トップページ 』
としたときです。
このように入力した後 echo key ($GET); とするとトップペ\ジとなります。
それと、環境はPHP5を使用しています。
OSはWindowsXP SP1でAN HTTPDとApacheの両方で同様の誤動作を確認しています。
情報足らずで失礼しました、
引き続き対処の程を教えていただけるようお願いします。
>>947 ブラウザ閉じればPHPも途中で終了するんじゃないかな。
>>973 それで理由が分かったよ。
それ、PHPの仕様。マニュアル嫁。
-> ↑の説明って、マニュアルのどこにありますか?
>>976 クラスの章かな
単体で->の説明は無いけど使い方ならサンプルソースで分かると思う。
>>975 なる程、仕様なのですね。
配列とkey関数のマニュアルは読んで見ましたが該当していそうな部分は見当たりませんでした。
さすがにあの量の中から探すのも大変なのでどこに書かれているか教えていただけませんか?
ついでに報告として
$test = Array ("トップページkey" => "トップページvalue");
print_r ($test);
print (key ($test));
を実行して見ましたが、トップペ\ジkeyとは表示されませんでした。
valueの方も同様にトップペ\ジとはなりませんでした。
>>977 そこは読んだのですけれど、分からなかったのです。
説明しているサイトとかないでしょうか?
簡単にでも言語化してあれば自分でいじってみるのですが…。
検索エンジンにもかからないんですよね…。
「php クラス」で検索すればそこそこヒットする筈なんだが。。。(そのページの拡張子がphpのものもヒットしてしまうが)
>>980 ありがとうございました。
検索してみます。
$n="00000000236"; みたいになってるデータをただの「236」という数字に直すにはどうしたらいいんでしょうか?
文字列で <a href="yahoo.co.jp">yahoo</a> <a href='yahoo.co.jp'>yahoo</a> <a href=yahoo.co.jp>yahoo</a> の違いって何でしょうか。 echoで出力するときにあんまり" "や' 'で囲むと複雑になるので 囲まないでやりたいんですが、どう使い分けるんでしょうか。
使いわけつーか、html4仕様で属性での " や ' が省略できる時の条件つーのが決められている。 自分で調べてみるかWeb制作板で聞いてみそ
>>983 即席で申し訳ないが
$num = sscanf ($n, "%d");
>>984 URIの場合は "" や '' で囲まなければならない。
1つのブラウザでたまたま表示できても、他のブラウザで表示できる保証はない。
<a href="
http://www.hogehoge.foo/my document.html">test</a> みたいに、
URIに空白が含まれていたら、囲わないと殆どのブラウザで表示できなくなるぞ。
ちなみに、URIに空白文字の使用は認められている。
989 :
937 :2006/02/05(日) 20:21:24 ID:uUJqicme
おかげさまで解決できました ありがとうございました
>>983 条件にもよるけど、intval($n)とか(int)$nでいいと思う。
992 :
>>953 :2006/02/05(日) 20:52:41 ID:JmIOlMc7
ありがとうございます!!
php-cgi.exeをコマンドライン上で起動すると、正常に機能するのに AN HTTPDから起動させようとするとうまくいかないのはなぜでしょうか。 php.exeなら動くのでAN HTTPDの設定は問題ないと思うのですが・・・
埋め
>>993 その段階だと俺はphp-cgiで動くなぁ、とか言うコメントしかできないかも。
OSとかAN HTTPDの設定とか書いてくれると色々アドバイス貰いやすいよ。
1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。