【PHP】下らねぇ質問はここに書き込みやがれ 54
1 :
nobodyさん :
2007/09/09(日) 12:42:57 ID:64tYOx8R まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
2 :
nobodyさん :2007/09/09(日) 12:43:46 ID:64tYOx8R
3 :
nobodyさん :2007/09/09(日) 12:44:18 ID:64tYOx8R
4 :
nobodyさん :2007/09/09(日) 12:45:05 ID:64tYOx8R
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
5 :
nobodyさん :2007/09/09(日) 12:45:41 ID:64tYOx8R
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
/:/:.:.:.:.:.:.:/:.:.:.:.:./:.:.:.:.:.:.:.:.:.:.:.:./:.:l:.:.:.:l:.:.:.:.:.:.:.:.:.:.:.:.',:.:.:.:.:.:.ヽ ./:/:.:.:.:.:.:.:/:.:.:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:/:.:/:.:.:.::!:.:.:.:.:.:.:.:.:.:.:.:.:',:.:.:.:.:.:.:.:', ':.:!:.:.:.:.:.:.:.:!:.:.:.:.:/:.:.:.:.:.:.:.:.:.:.:.:.:.:///,:.:./:.l:.:',:.:.:.:.:.:.:.:.:.:.:.:!:.:.:.:.:.:.:.:.l :.:l:.:.:.:.:.:.:.:.!:.:.:.:/:.:.:.:.:.:.:.:.:.:.:.:.:./// ,:.:/:./:.:.:.',:.:.:.:.:.:.:.:.:.:.:|:.:.:.:.:.:.:.:.:! /|:.|:.:.:.:.:.:.l:.:.:/:.:.:.:.:.:.:.:.:.:.::/イ/ /:/:./ト、:.:.:.ヽ:.:.:.:.:.:.:.:.:|:.:.:.:.:.:.:.:!|:、 :.:!:.!:.:.:.:.:.:.l:`l丶、:.:.:.:.:.://., ' ./:/:./ !l ヽ:.:.:.:ヽ:_..- ':.:!:.:l:.:.:.:.:.l:.!:.ヽ :.:.!:.!:.:.:.:.',:.',:.!:.:.:.:.:>'<、/ //,:./ !l _><\:.:.:.l:./:.:.:.:.://:.:.:.: :.:.:',:',:.:.:.:.ヽV`ヾ〒_==ミー7/// ーrィ== 〒ア、/:':.:.:.:..://:.:.:.:.: -、,.ヘヽ:.:.:.:ヽヽ ヾ、_ー'_ノ /'´〃 弋_ー'.ノ ' /:.:.:.:.:.//、:.:r‐‐ ヽ.-l \:.:.:\、 /´ ヽ /':.:.:.// ,.-J 下らねぇ質問はここに書き込みやがれ ./ .! ヽ、:.ヽヽ、 i ‐,.'ィ":./ !/ ` って言ってるです。 ヽ、 ,! l l`ヾ.=- _._ _._ -‐"‐/l ! l ) / 〉 ) .! へ! // `丶、 ... ,. '´ l ! !< , く ヽ_ ̄l l ! `丶、 _.. '" !l ! / -,.、ノ: ヽ-、 ', ! !l /::,二 `"´二、:\ ,イl l ' /: : : : : :!: :} l ! !l /::/ //:「ト、\ \::\ / l.! l 〉: : : :
23.PHPでデ(ry → CakePHPを使ってください。
8 :
nobodyさん :2007/09/09(日) 15:10:52 ID:64tYOx8R
testdir パーミッション777 dir1 パーミッション777 /testdir/dir1/test.php に、mkdirでパーミッション777でdir2というフォルダを作るように mkdir("../dir2",0777); とし、ローカル環境でうまくいったのでレンタルサーバーに上げたらうまくいかない・・・ このときのエラーは SAFE MODE Restriction in effect. The script whose uid is〜 というエラーが出たのですがこの場合何が原因なのでしょうか
10 :
nobodyさん :2007/09/09(日) 15:26:10 ID:64tYOx8R
11 :
nobodyさん :2007/09/09(日) 16:07:50 ID:sHQ1gr/N
最新版でおk
>>7 >デ
CakePHPってところからしてデザインとロジックの分離ってところだろうか...
いずれにせよそんな短い(ryじゃテンプレに入れられないな。
14 :
nobodyさん :2007/09/09(日) 16:16:20 ID:sHQ1gr/N
>>12 有難うございます、インストールしてみます。
WebProgの78で質問したものです。
当時PHP質問スレは無かったのですが、こちらが出来たのでこちらで質問します。
前回はShift_JIS形式のファイルで色々やってもダメだったもので、
今度はPHPファイルをEUC-JP形式にて試しました
mb_internal_encoding ("EUC-JP");
$to = "
[email protected] ";
$subject = "認証メール";
$body = "本人認証ですhttp//";
$from = "From: test<
[email protected] > \r\nContent-Type: text/plain;";
$rs = mb_send_mail($to, $subject, $body, $from);
この状態で[http]と[//]の間に:を入れるとメールが送信されません
その時$rsには戻り値が入っており、if($rs)はtrueを通ります
mb_languageをJAに指定すると、英字が一つでも入ってたら駄目なようです
明確なエラーメッセージも無く解決方法が見つかりません
理由が分かるかた居ましたらよろしくお願いします
PHPはVersion 5.2.3です
$body = '本人認証ですhttp//';
>>16 レス有難う御座います
$body = '本人認証ですhttp//'; はいけるのですが、
$body = '本人認証です
http:// ';のように[:] コロンを入れると送信する事が出来ません
[""]でも['']でも同じ結果の様です
18 :
nobodyさん :2007/09/09(日) 18:00:28 ID:sHQ1gr/N
php-5.2.4-Win32.zipとapache_2.2.4-win32-x86-no_ssl.msiをDLして一通り設定してみたのですが phpinf();のファイルを作りlocalhostでアクセスしたのですが設定が反映されません。(WInXP) php.iniの設定は output_handler = → output_handler = mboutput_handler default_charset = "Shift_JIS" extension_dir = "./" → extension_dir = "C:/php/extensions" #自分が参考書で確認した際上記のC:/php/extensionsの部分のextensionsがextになっていましたが #phpをインスコした際のテストでモジュール指定がありませんのエラー内容にextでは無くextensionsとなっており #extというフォルダ名をexitensionsに直してしまいました。ですのでextensionsにしましたが・・・。 extension=php_mbstring.dll ;を取り有効に mbstring.language = Japanise 有効 mbstring.internal_encoding = EUC-JP 有効 mbstring.http_input = auto 有効 mbstring.http_output = SJIS 有効 mbstring.encoding_translation = Onにして 有効 mbstring.detect_order = auto 有効 mbstring.substitute_character = none; 有効 以上の設定をphpフォルダのphp.iniのファイル内容にて変更してみました。何が足りない部分があるのでしょうか?
19 :
nobodyさん :2007/09/09(日) 18:09:08 ID:jOYDLkNB
質問です。 1時間毎に1度ある数字に+1して通し番号を発行したいのですが 何を参考にすればいいでしょうか?
>>19 サーバーのcronで+1するPHPを動作させる
今の日時を時間に直して一時間未満を切り捨てれば良い
22 :
nobodyさん :2007/09/09(日) 18:24:59 ID:jOYDLkNB
cron使わないといけないようなので面倒だし諦めます。 ありがとうございました。
>>23 記述ミス申し訳ありませんでした。設定を一通り終えて、動作確認で
<?
phpinfo();
?>
というファイルをindex.phpとして作りhtdocsフォルダに置きlocalhostにアクセスしてみました。
しかしPHPに関するページの表示はされず、
<?
phpinfo();
?>
というファイル内容がそのまま表示されてしまいますが、色々と試しています・・・
アパチェ
>>24 アパチェのコンフィグでアドタイプしてサイキドウすればよろし
>>18 ・php.iniの読み込み指定
その1: Apacheのhttpd.confに PHPIniDir c:\php を書く、そしてApache再起動
その2: 環境変数 PHPRC で c:\php と指定、PCを再起動
好きな方を選べ
・extension_dir
phpのディレクトリに ext ってディレクトリがあるだろ
それがファイル名'php_'で始まる拡張モジュールの収まったディレクトリのこと
extension_dir = "c:\php\ext" って書いてやればいいよ
>>25-26 <IfModule mime_module>という中に
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追加してみたのですが、空白ページに今度はなってしまいました
>>27 その1、その2、extensin_dirすべてをやり最後にindex.phpのファイル内容の
<?
phpinf();
?>
を
<?php
phpinfo();
?>
このように変換した所ページ表示がやっとできました。やっと自宅でPHPできるようになりました!
設定ミス、長文大変見ずらかったと思いますが付き合って頂いて大変助かりました
皆さん親切に何度も有難うございました!
よかったのうよかったのう
30 :
nobodyさん :2007/09/09(日) 20:53:02 ID:+iLUvfjN
ヒアドキュメントから定数を参照する方法ってある? define("MAN", 'CO'); print <<<TEXT {MAN} TEXT; みたいな感じで参照できねっすか?
32 :
nobodyさん :2007/09/09(日) 21:50:17 ID:+iLUvfjN
>>19 現在のUNIXタイムスタンプ-基準になる時間のUNIXタイムスタンプを
時間に変換する。
$string = file_get_contents("./a.txt");
preg_match("/
http:\/\/[a-z0-9\/\-_\.]+/i ",$string,$match);
foreach($match as $key => $value){
$key++;
echo "$key"."+"."$value";
}
これに何か問題ってあるでしょうか?
あるかもしれないけどないかもしれない。 答えは君だけが知っている
>>34 preg_matchの修飾子に s を指定するべし
preg_matchではなく、preg_match_allを使うべし
[a-z0-9\/\-_\.]の中の / - . はエスケープする必要なし
- は最後に書くべし
37 :
nobodyさん :2007/09/10(月) 00:42:18 ID:v8+qYSiw
無駄に改行しないことから
sage
40 :
nobodyさん :2007/09/10(月) 04:56:57 ID:iLiEDXXm
phpのconfigure時にpostgresqlがはいっているいないってどう確認 っすればいいの? 自分は php info(); で dbx support enabled dbx version 1.1.0 supported databases MySQL ODBC PostgreSQL Microsoft SQL Server FrontBase Oracle 8 (oci8) Sybase-CT SQLite てでたんだがphpのconfigureの部分はなかった。 だめなのかな? 追加できないの?
既存の関数に、フィルタかけたいんですがどうすればできますか? たとえばecho関数にエスケープフィルタをアタッチして、 echoすれば必ずそのフィルタを経由する、みたいなことがさせたいんです。 ラッパー書けばできますが、 その関数名のままラップしたいんです
さくらインターネットでは phpをcgiで動かしていますが #!を行頭に書かなくてもphpが使えます どういう設定をしたらそんなことができますか
44 :
42と43 :2007/09/10(月) 09:10:54 ID:???
自己解決しました。
>>45 ID出さないやつは全員自己解決。ってことだろ
47 :
37 :2007/09/10(月) 11:30:10 ID:v8+qYSiw
49 :
37 :2007/09/10(月) 12:52:22 ID:v8+qYSiw
>>48 すみません。
これでも詰めたのですが、甘かったのですね。
50 :
nobodyさん :2007/09/10(月) 13:41:02 ID:nbKfi6vV
FLASHのactionscriptに値の渡し方について教えて下さい。 ボタンを押すとダイナミックテキストの変数ipに表示させたいんですけど、 これでいいんでしょうか? <?php gethostbyaddr(getenv("REMOTE_ADDR".$_POST["ip"])); ?>
$_SERVER["REMOTE_ADDR"]でいいよ
52 :
nobodyさん :2007/09/10(月) 14:25:24 ID:nbKfi6vV
>>51 さん、ありがとうございます。
変数は[ ]の中にいれるんでしょうか?
<?php
echo $_SERVER["REMOTE_ADDR".$_POST["ip"]] ;
?>
>>50 src="フラッシュファイル名?ip=<?php echo urlencode(gethostbyaddr($_SERVER["REMOTE_ADDR"])); ?>"
じゃないのかな。
他にも値の渡し方はいくつかあるけど。
>>52 $_SERVER["REMOTE_ADDR"]がIP調べるの定義済み変数だろ
そんくらい調べろ
echo $_SERVER['REMOTE_ADDR'] . "<br>\n" . gethostbyaddr($_SERVER['REMOTE_ADDR'];
>>44 あなた誰ですか?
解決してません
引き続き回答をお待ちしております
Apache関連は自鯖板とかで聞いて来い IDも出さない馬鹿には誰もまともに答えないよ
>>55 ID出さないとすぐ騙りが出て自己解決するのがこのスレ
58 :
nobodyさん :2007/09/10(月) 21:10:18 ID:nbKfi6vV
皆さんご回答ありがとうございます。
>>53 さんの方法でもPHPの変数が渡せるんですね。文字列としてやった事はあるんですけどね。
拡張子をphpにして、param と embedを修正したら表示できました。同じようにURLを入れて見たら文字列としてURLが表示しました。
他の方法も是非ご教授お願いしたいです。
>>54 さん勉強不足ですみません。何故だか何度やっても表示しないんですよねー。
59 :
nobodyさん :2007/09/11(火) 01:40:40 ID:j/8aPw/k
相対パスが嫌なら絶対パスでも使えば?
61 :
nobodyさん :2007/09/11(火) 02:02:18 ID:j/8aPw/k
62 :
42 :2007/09/11(火) 03:04:39 ID:zytLbqiK
ぐたぐたうるさいバカはほっといて・・・ だれかよろしくおねがいします
>>59 >>60 っていうかimages/a.gifも相対パスな罠。
普通にinclude("aaa.php");とか書けばいいじゃん。
相対パスだからって「./」は必須じゃない。
実行ディレクトリが違うという話なら最初に
chdir("基準ディレクトリ");すればいい。
65 :
59 :2007/09/11(火) 10:40:52 ID:???
>>63-64 相対パスが嫌な訳ではなく、../../など、階層をページによって書き直すのが嫌なのです
深い階層にいくと、./なのか../なのか、../がいくつ必要なのかよくわからなくなるので
ありがとうございます、調べてみます
66 :
nobodyさん :2007/09/11(火) 10:53:33 ID:TKViiXpy
少し聞きたいのですが、 switch文で1つのswitchが60個x12って1ファイルだと多すぎでしょうか? キチンと動いてるのですが、たまに12箇所で同じ部分が表示されない時はあるのです。
サーバルートからにすればいいじゃん"/imgdir/himei_butte.jpg" htmlの下質だな、スレ違いに気づけ。
$urlに格納すりゃいいじゃん。撃つ文字数がはぶける
>>66 switchが12個でそれぞれにcaseが60個という意味か
そんなに書いたことないなー
状況がわからないけど自分ならもっとスマートに書けそうな気はする
>>68 call_user_funcでアクション名を渡せば5行もかからないと思うけど
いくらなんでもswitchに詰め込みすぎ
>>66 普通に動きそうな気はするが、ものすごく読みにくくて
バグがあっても気付きにくい構造になっちゃってる気はする。
switch ($value) { case 1: echo "1";break; case 2: echo "2";break; . . とかすごく無駄なことをしてそう
>>66 > 12箇所で同じ部分が表示されない
これが少し気になるんだが、そのx12のswitchって
ひょっとして同じ条件を12回も再評価してるのか?
配列変数を使うとか、もう少し何とかならんのかそれ?
どういうものなのか気になるな・・・。 720行ものcase文を書き上げた根性だけは立派だよ。 スキルを身につければきっと伸びる。
>>77 > 720行ものcase文を書き上げた根性
同じ判定を12回やる内容ならコピペでしょ、ふつー。
わざわざ手で全部書いたのならそれこそバカかと。
レスありがとうございます /*===以前===*/ $min=現在時間 if(($min >="00")||($min <="15")){ $txta=現在時間00分; $txtb=現在時間15分; }else{ $txta=1時間+現在時間00分; $txtb=1時間+現在時間15分; } /*===現在===*/ switch(date("i")){ case 00: 〜〜〜〜省略〜〜〜〜 case 15: $txta=現在時間00分; $txtb=現在時間15分; break; case 16: 〜〜〜〜省略〜〜〜〜 case 59: $txta=1時間+現在時間00分; $txtb=1時間+現在時間15分; break; default: $txta="error"; $txtb="error"; break; } 以前はifのものでやっていましたが他の条件のもので取得した時間で前後1時間のずれがあったりしていたのでswitchに変更しました。 このほかにそれぞれの時間を表示する時に使うcssやそのほかのテキストも同じswitch内に入れています。 ifでやる方がシンプルだと思うのですが、どうしてかうまくいきませんでした。
81 :
nobodyさん :2007/09/11(火) 15:30:20 ID:TKViiXpy
>>80 いえいえ省略したcaseの部分はbreak; してませんよ。
他にcssや他のテキストも入れていますので実際は省略する部分も少ないですが。
82 :
nobodyさん :2007/09/11(火) 15:32:16 ID:dkCdLSVp
まず何をやりたいか書いてくれ
>>79 文字列は" "で囲めよ
で数値は囲むなよ
どうみても以前の方がわかりやすい
>>82 現在の時刻で分の部分が0-15なら
$txta = "現在時間00分"
$txtb = "現在時間15分";
それ以上なら
$txta = "1時間+現在時間00分";
$txtb = "1時間+現在時間15分";
を代入したいんだと思うがその使い道はまったく見当がつかない
トン吉チン平カン太!
86 :
nobodyさん :2007/09/11(火) 15:46:05 ID:TKViiXpy
87 :
nobodyさん :2007/09/11(火) 15:46:09 ID:dkCdLSVp
88 :
nobodyさん :2007/09/11(火) 15:49:40 ID:TKViiXpy
>>87 サイトを見てもらえばわかるのですが、
4コースのレースがあってそれぞれ1時間で1回のレースを行ってます。
なので、1レースが終わると次回は1時間後なのです。
$min=現在時間 if($min >='00'&&$min <='15'){ $txta=現在時間00分; $txtb=現在時間15分; }else{ $txta=1時間+現在時間00分; $txtb=1時間+現在時間15分; }
switchの使い方がおかしいと思うんだがな
91 :
nobodyさん :2007/09/11(火) 15:58:25 ID:TKViiXpy
>>89 どうもです。
以前までそのやりかたで書いてたのですが、
レース時間が、00:45〜01:15など時間をまたいだレースなどで
うまく取得できない場合がありました。おそらく条件式をうまく使えてないのが原因だと思うのですが。
if($min >='45'&&$min <='59'&&$min >='00'&&$min<='15'){
のような感じで書いてました。
92 :
nobodyさん :2007/09/11(火) 16:01:21 ID:Al3TIDzd
PHPと直接関係ない質問ですみませんが、 DBの設計を学びたいたいです。 とりあえず練習としてMySQL+PHPで掲示板を作りたいのですが、 どういうカラムが必要なのかとかがわかりません。 MySQLスレで過去に聞いてみたのですが返答もらえませんでした。 強引にPHPと結び付けてるようで申し訳ないですが、 MySQL+PHPでDB設計を学べるようなサイトがあったら教えていただけませんか? また、DBを使った掲示板を作る場合、 自分ならどういったカラムを作るかなど、助言いただけたらよろしくお願いします。
>>92 フリーの掲示板のログ読んで勉強すればいいと思うんだが
>>91 forで時間分だけ回して、インクリメントで分を足して行って、
該当分にだけ処理させるように記述すれば良いんじゃないかな?
>>94 ありがとうございます。
まだphp初めて間もないのでforも少し調べてみます!
俺ならdate('i')の判定でまわしながらやる。
if ( ($min >='45' && $min <='59' ) || ($min >='00' && $min<='15')){
>>97 × if ( ($min >='45' && $min <='59' ) || ($min >='00' && $min<='15')){
○ if ( $min >= '45' || $min <= '15' ){
沢山レスありがとうございます! if ( $min >= '45' || $min <= '15' ){ これ有効なんですか!以前のものを修正してみます。
caseが60個ある原因は分かったが、同じようなswitchが12箇所もある問題は?
>>92 必要なカラムは表示させたい内容や処理させたい機能によるので
「掲示板だからこのカラム」なんてパターンは無い。
まず掲示板ってどういう仕組みで成り立ってるのかから勉強してこよう。
必要な機能とデータを列挙する段階はPHPやDB以前の問題だ。
その上で、列挙された機能とデータから仕組みを設計するのがPHP(というかWebアプリ)の勉強。
それができた上で、さらにそのデータを効率化・最適化するのがDBの勉強。
102 :
37 :2007/09/11(火) 18:22:10 ID:dkCdLSVp
>>102 日本語構文についての理解と正規表現の勉強
>>92 初めはきちんとDBの勉強したほうがいいと思うよ。
アルゴリズムとデータ構造や、リレーショナルデータベースの科目取るとか、教科書読むとか
>>102 特殊な用語とかコードとかで語られても知らん。
もtっと一般化して質問してくれ。
>>102 こんな漠然とした内容で「精度を上げたい」と言われても
どういう場合に本文が抽出できないのかさっぱり分からんよ。
107 :
92 :2007/09/11(火) 19:12:38 ID:Al3TIDzd
>>93 他人のソースは正直何がなんだかわからなくて敬遠しがちです。
理解できるかは不明ですが、適当なものを探してみたいと思います。
>>101 どうもご丁寧にありがとうございます。
アドバイス通り掲示板にとって必要な機能とデータがどういうものなのか、
考えてみたいと思います。
考えてみたデータを生かしきれるかはわかりませんが、
不要なデータがあっても、とりあえず動けばいいみたいなスタンスで頑張ってみます。
>>104 そうですね。いくつか初歩的な構文は理解してるのみで、
詳細な部分は全く知らないので、いろいろ勉強してみたいと思います。
とりあえず学生ではないので授業は受けれませんw
文系だったのでそういった類の教科書も持っていないので、サイト巡回や本で勉強したいと思います。
>>107 キミには掲示板ですらまだ早すぎだと思うんだ。
早すぎるとか正気か? 掲示板なんてWebプログラムの初歩じゃないか。
Webプログラムの初歩どころかプログラムってな〜に?レベルだぞこいつ。
111 :
92 :2007/09/11(火) 20:16:24 ID:Al3TIDzd
>>110 よろしければどの辺を見てそう感じたか教えてください。
今後の質問の仕方の参考にしますので。
DBに関しては初歩レベルでさっぱりですが、
一応プログラムの初歩的なことに関しては理解してるつもりです。
>>111 放置しときな
いつもの答えられないけど何か言いたくて煽ってる人だから
113 :
nobodyさん :2007/09/11(火) 20:31:17 ID:WeIbshbr
メール送信しているのですが、 JISで送信すると、ヤフーメールで見たら文字化けしています。 「$BHdO*1c1i=P$N$4A*6J$*Hh$lMM$G$7$?!#(B」のようになっているのでJISになっています。 おそらくYahoo側でEUC-JPで表示していると思うのですが、 メールを送信するときにどの文字コードで表示するか設定できるのでしょうか? それとも、メールが届いた側で判別されるのでしょうか?
114 :
軟式PHP :2007/09/11(火) 20:37:11 ID:???
>>107-112 喧嘩はイクないよ^^
掲示板は勉強になるから最初に作るにはいいと思う。
特にDB絡めるのなら、いい勉強になるよ。
とりあえず以下のように機能を列挙したらどうかな。
そして、機能を実装するのに必要なテーブル設計を考えてみる。
簡単なやつだったら1つのテーブルだけで作れるから。
●付ける機能
・記事を書き込む
・記事を読み込んで一覧にする
●拡張するなら…
・記事にレスをつけれる。
などなど
>>111 とりあえず悩む前に作るのが一番いいよ
PK、名前、内容のフィールドを作って2〜3個のテストデータでもいれておいて
ちょっとつくってみて足りないものがあればどんどん付け足していくのでもいいから
とにかく思いついたものから作っていけばDBを使ったWEBアプリとは
大体どんなものか把握できるんじゃないか?
>>113 メールを送信するときに、メールヘッダの中に文字コードの指定を含める。
117 :
nobodyさん :2007/09/11(火) 20:58:11 ID:WeIbshbr
>>116 ありがとうございます
Content-Typ: text/text; charset=JIS
で解決しました。
118 :
92 :2007/09/11(火) 21:00:47 ID:Al3TIDzd
>>114-115 どうもアドバイスありがとうございます。
簡単な設計まで考えていただきありがとうございます。
作りながらDBの勉強をしたいと思います。
環境の再構築(DBインストールと設定)が今終わったので、
早速思いついたものからデータを入れて、取り出すテストからしてみたいと思います。
どうもお付き合いいただきありがとうございました。
>>作りながらDBの勉強 志望フラグ乙
PHPはPHPで DBはDBで 各ある程度理解したらPHP+DBがいいかも
121 :
37 :2007/09/11(火) 21:29:32 ID:Ftl8Pgh5
>>120 そんな切り離してやるもん?
PHP+DBっていう1つの分野って考えてもいいんじゃない?
HTMLとCSSの関係みたいなもんだと思うんだけど
>>122 DBの仕組み知っておかないとPHP+DBとかできないじゃん
PHP-DBがHTML-CSSの関係と同じとかってwwww
126 :
37 :2007/09/11(火) 21:43:03 ID:dkCdLSVp
>>123 ウイルススキャンした後UPしてます
書き忘れましたが、パスはphpです。
128 :
66 :2007/09/11(火) 21:54:26 ID:TKViiXpy
沢山レスを頂いた結果、最終的にifで出来ました。 ifでキチンとした時間などが出なかった理由は分の値の勘違いでした(;´д⊂) caseに比べると半分ほどのファイルサイズになりましたw みなさんアドバイスありがとうございました!
>>121 >>一般化といわれてもよくわからないですが
君にゃあ無理だ。一人でやるか諦めてくれ。
聞くは一時の恥、聞かぬは一生の恥 とは言うけどさ それは型から入って体現できる礼儀作法を学ぶには有効なんだ しかし、プログラミングは頭使って考えなくちゃならん 初学者の陥る罠はなんでも他人に聞いて一時的に理解した つもりになって、本当のところは何も理解していないんだ それがとても悲しくなるときがある
phpのGDにマスクレイヤー機能はありますか?
ググッたらありました。
133 :
nobodyさん :2007/09/12(水) 09:44:36 ID:xkG1TV3g
会員管理システムをつくりたいんですが、フローチャートはどんなかんじでしょうか?
会員になる>ログイン>やったー>ログアウト
>>134 それは会員登録だな
会員管理なんだから
ログイン>会員一覧表示>やったー>ログアウト
だろ?
管理システムなのに会員になるのか?
「isset」だと上手く動かないのに、「empty」だと上手く動くのはなんでですかね? 逆の場合も時々あります。
>>138 「上手く動かない」の状況が分からんよ。
その2つは全然意味が違うし。何をやろうとしたんだ。
単純にそれぞれで判定できないものを無理に判定しようとしただけで
ようするにマニュアルよく読みやがれこのカス野郎って話じゃないの?
140 :
nobodyさん :2007/09/12(水) 12:45:54 ID:rYUimiSO
PerlのPackage関数のように、別ファイルをrequireしたときに名前空間をつけてあげることは可能でしょうか。 ご教示いただけますと幸いです。
141 :
138 :2007/09/12(水) 13:00:19 ID:???
>>139 さんありがとうございました、そもそも判定基準が違いましたね。
PHPマニュアルを読むクセをつけます。
マニュアル読んでないのに何故issetとemptyを使おうと思ったのか不思議だ・・・
>>144 マニュアルを読んでないとは書いてないぞ
>>145 >PHPマニュアルを読むクセをつけます。
ここから読んでると判断する君の文章解析能力が心配だ
>>147 君は読解力がついてないみたいでかわいそうだね。
>PHPマニュアルを読むクセをつけます。
というのはちゃんと読むことを指してると思うんだが
ここは日本語スレですか?
常識的に考えて「マニュアルを読む癖をつけます」っていう言葉からは
今までマニュアルを読んでいないとは断定できないが
今まで読んでいたとも断定できない
つまりどっちともとれる表現であるというのが結論
つまり
>>145 の言ってることも正しいし
>>147 の言ってることも正しい
さらっと字面を追っただけで「読んだ」なんて言わねーっつの
くだらない質問に、くだらない突っ込みを入れた事に、くだらない突っ込みを入れるスレになってるなw
152 :
nobodyさん :2007/09/12(水) 17:04:11 ID:xkG1TV3g
ありがとうございます。あともうひとつ質問させてください。 if ($_SERVER['REQUEST_METHOD'] === POST) { } if ($_SERVER['REQUEST_METHOD'] === "POST") { } POSTが送信されたか判断するとき、↑のどちらで書けばいいのでしょうか? どちらの文も同じ動作でしたが文法的にどちらが推奨でしょうか。
if ($_POST[''])
154 :
nobodyさん :2007/09/12(水) 17:13:28 ID:bal64F9r
if ($_POST)
>>152 文字列をクォートしないのは論外。
送信されるパラメータで
if(isset($_POST['hoge']))
とするのもあり。
>>152 上のはこっそりとNotice errorが出ている
どうして上のをNoticeにしたのかわからないな
fatal エラーでいいじゃん
定数を勝手に文字列にしてくれる親切な仕様
>>152 上のは自動補正が働いてるだけで実際はミス。
>>142 func.phpというのをよんだとき、Perlのように頭に
package f; 書けば呼び出し元ソース内で f::kansuu();
といったように使えるようにしたいのです。
恐れ入りますがご教示いただけますと幸いです。
新しく取り組む言語でも自分の慣れた書き方で楽に済ましたいなんて甘い考えでプログラムやるな
161 :
nobodyさん :2007/09/12(水) 19:09:30 ID:hkjgamim
>>159 クラス定義の中でfunc.phpを読み込めばいいと思います。
162 :
nobodyさん :2007/09/12(水) 19:12:46 ID:5Xj/wG4U
empty関数について質問なのですが、引数で指定された変数の値を検査します。 変数に何もセットされていない場合には「false」を値が空だった場合には「true」を返します。 との事ですが(empty($_POST["test"])とした時、受け取った値が"123"ならば123ですよね falseとtureの場合の違いが分からないのですが、どのような場合なのでしょうか?
164 :
nobodyさん :2007/09/12(水) 19:19:55 ID:i+nu8B4+
$bool = trueだったら$bool = falseにして $bool = falseだったら$bool = tureに 一行でする方法ありますでしょうか?
!$bool
167 :
nobodyさん :2007/09/12(水) 19:31:29 ID:5Xj/wG4U
>>163 何となく理解する事が出来ました。サイトまで教えて頂き有難うございます。
>>161 class hoge {
include("func.php");
}
俺もこれで良いと思ったんだが、何気に出来ないんだな。
170 :
nobodyさん :2007/09/12(水) 20:07:55 ID:hkjgamim
>>161 で 「クラス定義の中でfunc.phpを読み込めばいいと思います。」 と申したあとに、
そんなことはできないかもしれないと思って試したら、 案の定できませんでした。
おそらくクラス定義の中ではメンバ宣言とメソッド宣言以外は不正なのでありましょう。
大変失礼しました。
じゃコンストラクタ使えばいいじゃん
クラスの使い方がおかしいだろ・・・
173 :
nobodyさん :2007/09/12(水) 22:16:11 ID:5Xj/wG4U
PHPを実行した後構文等が間違っていたら何行目が間違ってますみたいな表示を させる事は出来るのでしょうか? インターネットオプションの詳細設定からスクリプトエラーごとに通知にチェックを 入れたのですが何をしてもページが表示できません。で止まってしまうのですが
トン吉チン平カン太!
>>164 $bool ? false : true;
があるじゃーのん?
176 :
nobodyさん :2007/09/12(水) 23:14:21 ID:TcT1t6MR
PHP4で使えるORMなあれってどれがいいの? ActiveRecord?とか言うヤツ? PHP5への移行を視野に含めた上でお勧め教えてけろ
<?php session_start(); if(isset($_SESSION["login"])) { ?> <HTML> <HEAD> <TITLE>a</TITLE> </HEAD> <BODY> <form action = "secretlogin.php" method = "post"> //secret.phpかも ようこそ <?=$_SESSION["login"]?>様! <h2>掲示板に書き込む</h2> <a href = ./sread_list.php>一覧ページ</a>ここをクリック<br> //./無しかも <a href = ./logout.php>ログアウト</a>ここをクリック<br> <hr> <table> <tr><td align = right>タイトル</td><td><input type = "text" name = "title"></td></tr> <tr><td align = right>投稿者</td><td><input type = "text" name = "name"></td></tr> <tr><td align = right>記事</td><td><text area rows=5 cols=30 name="article"></td></tr> <tr><td><colspan = 2 align = "center"> <hr> <input type = "submit" value = "送信"><input type = "reset" value = "取消"></td></tr> </table> </form> </body> </html> 何故か実行出来ないのですがどの辺りに問題ありますか?
日本語で(ry
180 :
nobodyさん :2007/09/13(木) 01:41:33 ID:jFkqotf1
動的ページの場合 それぞれのページへsession_start();は書かないといけないのでしようか? read.php を読み込んでそこへ各ページ用ファイルを読み込んでるページなんですが。 ページを移動すると、セッションが切れてしまいます。
>>180 自己レス
list($GET_PAGE3,$_SESSION['navi_on'])=explode("-",$GET_PAGE03);
としていたので$_SESSION['navi_on']に何も入るはずがないページに行くと
セッションが空になっていたようです。
失礼しました
perlでは臨時で変数を使いたいときに、 { my $tmp = $foo; } ってブロック内で処理してたんですけど、 PHPではこういうときはどうやるんですか?
184 :
182 :2007/09/13(木) 09:25:06 ID:???
自己解決しました
185 :
182 :2007/09/13(木) 10:16:24 ID:NzuBOnrd
>>184 消えてくれませんか?
ここはレベルがほんとひくいですね。げんなりしました。
186 :
182 :2007/09/13(木) 10:24:30 ID:n543y+IO
>>185 185は私ではありません。
わざと人のことを騙って楽しむなんて気持ち悪い人たちですね。
信じられません。
もう質問はいいです。
187 :
182 :2007/09/13(木) 10:25:54 ID:NzuBOnrd
188 :
182 :2007/09/13(木) 10:29:18 ID:GzCzMpSl
もう騙りはいいんで
>>182 ここはこんなところだ
もう2度と来るんじゃないぞ
191 :
626 :2007/09/13(木) 11:41:49 ID:???
6つの変数が同じかどうか比較するためにはどう書いたら一番効率がいいでしょうか? 教えてくださいえらい人
なんつうか、専ブラじゃデフォでsage設定だったりして、
単純にID出し忘れるやつもいるんだから、
ID出してまで本人ぶるのはやめようぜ。
本当に
>>185 or
>>186 が本人だったらただの痛い人だが。
193 :
nobodyさん :2007/09/13(木) 11:47:57 ID:TsTr8KNx
〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓● TOSHIBAのCX925LL(ウィンドウズXP搭載)に市販のウィルス対策ソフトのウィルスキラーゼロ(E-フロンティア社)をインス トール後、アップロードしようとしているのですが、相性が悪いらしくアップロードできません。 付属されていない市販のセキュリティーソフトをインストール、アップロードするために、元々インストールしてあったソフトウェア 「ファイナルストッパー」、「マカフィー・パーソナルファイアウォールプラス」をアンインストールした後、市販のセキュリティー ソフトが相性が悪かった為か、うまくインストールアップロードできなかった場合、再度「ファイナルストッパー」「マカフィーパー ソナルファイアウォールプラス」をインストールすることはできますか? また、どうすればできますか? どなたか教えてください。お願いいたします。
>>191 if (($a * $b * $c * $d * $e * $f) / 6 == $a)
なんで整数って決まってんだよw
>>191 ageってww
そこまでしてID出したくないのかww
>>195 平均出すなら * じゃなくて + だろ
平均出してもしょうがないけど
6で割ってるのが見えないの?
+して/って1の方が早くない?
>>191 if ($a == $b && $a == $c && $a == $d && $a == $e && $a == $f) {
echo "同じ";
}
201 :nobodyさん:2007/09/13(木) 13:28:50 ID:???
>>201 相乗平均知らない低脳ハッケーン
191 :626:2007/09/13(木) 11:41:49 ID:???
6つの変数が同じかどうか比較するためにはどう書いたら一番効率がいいでしょうか?
教えてくださいえらい人
195 :nobodyさん:2007/09/13(木) 12:27:52 ID:???
>>191 if (($a * $b * $c * $d * $e * $f) / 6 == $a)
すべての変数が3という同じ値だとします。
(3 * 3 * 3 * 3 * 3 * 3) / 6 == 3
計算すると729 / 6 == 3
バカだな。ワロタwww
×と+の間違いだとしても、 (2 + 4 + 3 + 3 + 3 + 3) / 6 == 3 で全部同じじゃなくてもtrueになる。
perlで書くところのヒアドキュメント $obj->msg(<<EOT); ここにメッセージ EOT なんですが、phpで書いてもうまくいきません。 $obj->msg(<<< EOT) ここにメッセージ EOT; 正しい書き方教えてください。
寝る間もないくらい仕事がコンスタントにくるweb制作者というのは それだけで、いいweb制作者ということです。(低レートに甘んじてりゃ それなりに仕事くると思っている人がいますが、現実はそうじゃない) 当然レートは高いのです。 年収1000万なんて軽いですよ。
うん。技術力とは関係ないけどね。
212 :
nobodyさん :2007/09/13(木) 16:42:03 ID:e5IQPewW
PHP5のPDOで、HTTP_Session的に、 sessionをデータベースに格納してくれるライブラリってありませんか?
>>212 いまいち意味がわからないけどシリアライズでもしたら?
215 :
nobodyさん :2007/09/13(木) 19:14:09 ID:p1bkeaSR
携帯用掲示板を作っているのですが、 セッションを使わずに 入力→確認→投稿 のようなものを作りたいのですが 何か良い方法はないでしょうか? hiddenも考えたのですが、ページの容量(入力したテキスト)が2倍になってしまいます。
3画面構成のファイルを作りたいのですが、1ファイルのみで3画面を構成する事は出来ますか? 習った事を考えると3ファイル作らないと行けないのですが、出来ますか?
218 :
216 :2007/09/13(木) 19:38:43 ID:???
219 :
nobodyさん :2007/09/13(木) 19:45:40 ID:p1bkeaSR
220 :
216 :2007/09/13(木) 19:47:53 ID:HG9TD0jf
>>217 どのようにしたらいいでしょうか?POSTで別ファイルにデータを送り取得する方法以外で
ヒントでも教えて頂けると嬉しいのですが。
221 :
216 :2007/09/13(木) 20:09:07 ID:HG9TD0jf
PHP内で条件分岐をさせれば良かったのですね。すいませんでした
PHPに限ったことではないのですが、例えば if (・・・) { $error+=1; } else { if (・・・) { $error+=2; } else { if (・・・) { $error+=4; } else { //エラーが無いなら処理 } } } このように様のifのネストが深くなっていくことが想定された場合 swich (0) { default: if (・・・) { $error+=1; break; } if (・・・) { $error+=2; break; } if (・・・) { $error+=4; break; } //エラーが無いなら処理 } 上記の様にswitchまたはdo-whileなどで囲み、エラーはbreakで脱出するという書き方は邪道でしょうか?
ネストしない書き方にしろよ
>>223 それ以前の書き方に問題がある気がしてならない
正統も邪道もあるかい。自分がいいならそれでいい
基本的には好きなように書けばいいが、物には限度ってものがある
228 :
223 :2007/09/13(木) 21:43:20 ID:???
$sql = "SELECT hoge FROM tableA WHERE foo=?"; $res=& $db->query($sql, $foo); if (!DB::isError($res) && $res->numRows()==1) { $res->fetchInto($row); $sql = "UPDATE tableB SET hoge=? WHERE foo=?"; $res=& $db->query($sql, array($row['hoge'], $foo)); if (!DB::isError($res) && $db->affectedRows()==1) { $res->fetchInto($row); $sql = "UPDATE tableC SET hoge=? WHERE foo=?"; $res=& $db->query($sql, array($row['hoge'], $foo)); if (!DB::isError($res) && $db->affectedRows()==1) { //以下(ry } } } こんなケースはどうでしょう? どうやってネストを回避しますか?
あくまで一例としてエラー情報を持たせてエラー画面に飛ぶ 即座に中断 ぐらいは誰でも瞬時に思いつく
>>223 俺はこうする
if (・・・) {
$error+=1;
} elseif (・・・) {
$error+=2;
} elseif (・・・) {
$error+=4;
} else {
//エラーが無いなら処理
}
(1行目)|項目1-0,項目2-0,項目3-0,項目4-0,項目5-0 (2行目)|項目1-1,項目2-1,項目3-1,項目4-1,項目5-1 (3行目)|,,,, (4行目)|項目1-2,項目2-2,項目3-2,項目4-2,項目5-2 (5行目)|,,,, (6行目)|項目1-3,項目2-3,項目3-3,項目4-3,項目5-3 ↑…というcsvファイルを データのない行(上の例では3・5行目)で区切って、 1〜2行目、4行目、6行目とそれぞれ配列に格納するには どういう考え方でプログラムを組んだらよいでしょうか。 横方向であれば、file()で読み込ませた後に、 list()やexplode()関数で分割する考え方になりますが…
switch case
233 :
231 :2007/09/13(木) 22:17:17 ID:???
>>232 それで解決しました
ありがとうございます
>>228 function hoge() {
$sql = "SELECT hoge FROM tableA WHERE foo=?";
$res=& $db->query($sql, $foo);
if (DB::isError($res) || $res->numRows()!=1) return false;
$res->fetchInto($row);
$sql = "UPDATE tableB SET hoge=? WHERE foo=?";
$res=& $db->query($sql, array($row['hoge'], $foo));
if (DB::isError($res) || $db->affectedRows()!=1) return false;
$res->fetchInto($row);
$sql = "UPDATE tableC SET hoge=? WHERE foo=?";
$res=& $db->query($sql, array($row['hoge'], $foo));
if (DB::isError($res) || $db->affectedRows() != 1) return;
//以下(ry
return true;
}
or exit でいいじゃんw
つうか似たようなUPDATEが2回続いた時点で関数を分けたほうが(ry
237 :
nobodyさん :2007/09/13(木) 23:07:57 ID:KIVNzqAT
正規表現のエスケープを一括で行ってくれる関数ってないですかね。 皆さんは自力でエスケープしてます?
PHP 4.3.9 をダウンロードしたいのですが、 本家ダウンロードページでは最新バージョンへのリンクしか見つかりませんでした。 どこかでダウンロードできないでしょうか。
最新バージョンを使いましょう
242 :
nobodyさん :2007/09/13(木) 23:23:39 ID:KIVNzqAT
>>239 ありがとうございます。そしてさすがPHP。
かゆい所に手が届きすぎです。
3とかあるんだwww すげー、逆に使ってみたい。
>>241 見つかりました。ありがとうございます
なんでこのバージョンかというとクライアントの指定してきた
ミドルウェア(これもまた相当古いバージョンですが)が4.4系に対応していない為なのです。
最新版でもいけんだろ、と高をくくっていたら本当に4.4.7では動かなかったもので…
ともあれこれで作業できます。助かりました
ネックになってる箇所特定して修正したほうが数十倍はいいと思うが・・・
あー、確かに4.4で構造変わってPECLとか互換性無くなってたもんね。 まーそんなときもあるよな。
247 :
nobodyさん :2007/09/14(金) 01:10:03 ID:rv5QGrrD
質問させてください $a = "きしkydpxckdyyrxはにr6ksれなつにxsrrkyちてとyrkきくなにき"; ($aは不規則の連続文字) だとして行の先頭から指定の文字数(またはバイト)で 改行を差し込みたい場合はどうすればいいのでしょうか? mb_substrでバイトを測れても、これだと 最初の改行を入れた後に次の行の先頭から測ることが必要ですよね で、正規表現で測っても、eregi_replaceなどで変換ではなく 文中に差し込む必要があるため、どうしていいのかわからなくなってます;;
指定の文字列+残りの文字列で正規表現取って間にコード入れて次に改行コードで切って同じことすれ
つかmb_substrでいいじゃん。mb_substrがバイト数測るものとは知らなかったけど。
250 :
nobodyさん :2007/09/14(金) 01:56:33 ID:rv5QGrrD
>>248 すいません、どうかソースでお願いします。
>>249 文字列を返すものでした。無知です。
251 :
nobodyさん :2007/09/14(金) 02:36:09 ID:07nleTLs
すいません、初心者です。お教えいただきたいんですけど、 &&をつかうと"Parse error: syntax error, unexpected T_STRING " がでてしまいます。 if(($a) == "XX" && ($c) == "XX"){ でなにかおかしいところってありますか?
254 :
nobodyさん :2007/09/14(金) 03:26:09 ID:n3vYsmYw
OS:Windows DB:SQL Server or Oracle Webサーバ:Apache 次のような処理を現在ではPHP(+APC)を使っておこなっています。 これよりも、もっと高速に処理したい場合、どんな手段があるでしょうか? (例えば、Cで作ったCGIとか、Apacheモジュール使うとか) また、どの程度(1割くらい、とか倍以上、とかレベルでOK)早くなるでしょうか。 ちなみに、Webサーバを分散させる、マシンのスペックを上げる、そもそもHTTP使うな、 では、ちょっと無理な事情があるので、これ以外でお願いします。 やりたいこと クライアント(ブラウザではない)からPOSTされてきたデータを元に以下の処理をします。 1.SQL文のWhere句にくっつけて実行、結果の値をクライアントに返す 2.パラメータの値により異なるファイルをダウンロードさせる 3.ファイルがアップロードされてきたときは特定のフォルダに保存 ※1〜3はURLによって処理内容を分けています。 これらを1時間に20万リクエストくらいをさくさくこなしたい。 ちなみにサーバはCPU:3GHz、メモリ2〜3GBな感じを考えてます。 よろしくお願いします。
>>254 Cで専用のApacheモジュールを作るのが1番早いけど
ボトルネックはファイルのアップダウンでプログラムの処理する部分はたいしたことないから全然変わらないと思う
>>254 20万リクエストなんてそんなこそらじゃ出せないだろ。
会社の宿題かな?
アップローダでも作るんだろ Javaで作ったほうがいいと思うが・・・
258 :
nobodyさん :2007/09/14(金) 09:02:48 ID:rtA26Ijr
>>254 20万アクセスに耐えるプログラムは組めたとしても
サーバー構成が1台でWEB+DBの設計だと持たないと思われるので
むりじゃね?
>>254 処理内容を見る限りプログラム側の処理なんて微々たるもので
ほとんどはWebサーバーのパワーと帯域次第って感じに見えるから
PHPでもmod_perlでもJavaでもそんな変わんないんじゃないかな。
(CGIだとCで作ったって何で作ったって確実に今より遅くなると思う。
あとApacheモジュールって…PHPは最初からApacheモジュールなんだが)
ちなみにこれ、
1.Whereに付加する条件って何項目くらいあるの?十分に最適化されてるの?
2.ダウンロード・アップロードするファイルの平均サイズは?
3.ダウンロード・アップロードのリクエスト頻度は?
が気になるけど、処理速度を改善するとしたらダウンロード用か
アップロード用にWebサーバーと回線を分離してやるのがまず第一だと思うけどね。
聞いてる限りじゃボトルネックになりそうなのはここしか見当たらないから
それ以外に改善の余地なんてほとんどない気がする。
まずボトルネックになってるのはどこかちゃんと分析してやりなよ。
少ない資源でチューンしようって言うならそんな漠然とした話じゃ無理。
test
>>247 こんなんでどうだろ。
$a = "きしkydpxckdyyrxはにr6ksれなつにxsrrkyちてとyrkきくなにき";
$b = $a;
do {
$a = $b;
$b = mb_ereg_replace('^([^\n]{4})([^\n])', "\\1\n\\2", $a, "m");
} while($a != $b);
var_dump($b);
結果:
string(67) "きしky
dpxc
kdyy
rxはに
r6ks
れなつに
xsrr
kyちて
とyrk
きくなに
き"
262 :
nobodyさん :2007/09/14(金) 09:32:18 ID:ri4+Axdv
mb_strlenって文字の長さを取得する関数ですよね? <? $text = "あいうえお"; echo mb_strlen($text); ?> での出力が「8」になるのですがなぜでしょう? ちなみに、文字コードはUTF-8です。 Shift_JISに直すと「5」と、正常に表示されます。
>>262 mb_strlen("あいうえお","UTF8");
264 :
nobodyさん :2007/09/14(金) 10:01:15 ID:ri4+Axdv
>>263 有難うございます
文字コードを指定して使えるんですね。
完全に見逃していました。
>>262 >>264 つか、mbstring.internal_encodingの設定はどーなってんのよ。
266 :
nobodyさん :2007/09/14(金) 10:12:11 ID:ri4+Axdv
すんません、Shift_JISなってました
267 :
nobodyさん :2007/09/14(金) 13:16:52 ID:ri4+Axdv
include専用のPHPを作ったときって パーミッション何にするのがいいのでしょうか? 0700?
>>267 パーミッションは特に気にせずDOCUMENT_ROOTの範囲外に置くのがいいと思う。
269 :
nobodyさん :2007/09/14(金) 13:23:29 ID:ri4+Axdv
270 :
nobodyさん :2007/09/14(金) 13:30:44 ID:ri4+Axdv
と思ったらレンサバだから置けなかったorz
レン鯖でも置けるでしょ。今どきpublic_html内のみなんて鯖あるの?
272 :
nobodyさん :2007/09/14(金) 13:38:12 ID:ri4+Axdv
無料鯖ならめちゃくちゃあるね・・・
それじゃしょうがないな。 600か606にするしかないんじゃないかな。 600にしようと思ったらApacheの実行ユーザで アップロードしないといかんと思うけど。
274 :
nobodyさん :2007/09/14(金) 14:21:28 ID:ri4+Axdv
あ、606よりは604がいいのか。
あたしゃ拡張子を.cgiにしてパーミッションで実行させないように してるよ。
277 :
nobodyさん :2007/09/14(金) 16:45:35 ID:sODpU595
EUC-JPなPostgres上に登録されてある'@'という文字を含むデータを読み込んできて EUC-JPなPHPで処理をしているのですが、IE7やFirefoxなどでは化けてしまいます。 JIS-X0213(でしたっけ?)のローマ数字なのだと思うのですが、 正しく扱えない文字なのでしょうか?それともPHPが何か変な変換でも かましていたりするのでしょうか? UTF-8を使うのが正解なのかな。
>>IE7やFirefoxなどでは化けてしまいます。 こういう事では?
>>277 UTF-8がいいと思うけど
EUC-JPにも種類があってはしごたかやローマ数字等の拡張文字部分に違いがある
Postgresは知らないけどたぶんeucJP-ms(eucJP-win)だと思う
一方IEやFirefoxのEUC-JPはコードページ51932というやつ
最新のPHPではCP51932が使えたと思うから変換すれば使えるかも
$str = mb_convert_encoding($str, "CP51932", "eucjp-win");
でもEUCからEUCへの変換ってあほっぽいよね
何のために文字コード統一したのかわからない
で1行目に戻る
280 :
nobodyさん :2007/09/14(金) 18:46:54 ID:sODpU595
まず mb_convert_encoding($str, "utf-8"); のように、
utf-8やsjis-winに変換すると '?' になります。
>>279 さんのを試してみると見事に変換に成功しました。
("utf8", "eucjp-win"); とか("sjis-win", "eucjp-win");
でもうまくいけるようです。
EUCからEUCへ変換するのは確かに間抜けですけど、
まぁ仕方ないのかもしれません。
これがバッドノウハウって奴でしょうか。
>>274 htaccessが置けるなら、includeされるファイルを置くディレクトリを用意して、直アクセスは弾けば良い
282 :
nobodyさん :2007/09/14(金) 19:23:17 ID:sODpU595
>>280 追記
Javaで書かれたコードでは正しく処理されていたので、
Javaはeucjp-winと同じ方法でutf-8と変換していたという事でしょうか。
283 :
nobodyさん :2007/09/14(金) 21:37:58 ID:PTuC71hk
前回訪れた訪問日時を表示するように作りたいのですが、何かヒントを下さい・・・
1.日時を記録する 2.次に訪れたら保存した日時を取り出す+記録する 3.表示する
携帯端末は?
288 :
nobodyさん :2007/09/14(金) 22:09:16 ID:PTuC71hk
前回訪れた訪問日時なんて、 ログイン認証するようなサイトならともかく、 一般的な個人サイトならやめときな。 仕組み知らない訪問者は不気味がってアクセス数減るよ。
仕組み知ってれば尚更行かないけどな
292 :
nobodyさん :2007/09/15(土) 04:39:32 ID:V+kYhkB1
すいません。質問です。 10〜60の時はそのままで、0〜9の時は先頭に0をつけてて00や05にするには 何かいい方法ないでしょうか? 今は、if($a<10){ などとしてるのですが。
sprintf("%02d",$a);
>>293 うわ!すごい!ありがとうございます!
いままでifで数行使ってたのが1行で終わりました!
感謝です!
wwwwwwwwwwwwwwwww
296 :
nobodyさん :2007/09/15(土) 07:51:26 ID:rDYCANkK
おーーーーーーーーーーーーーーーーーーーーー
mbではじまる関数が多いけどこれはなにか意味があるのでしょうか?
っぱい
299 :
nobodyさん :2007/09/15(土) 11:52:54 ID:FRg1UB2S
300 :
nobodyさん :2007/09/15(土) 12:26:59 ID:V+kYhkB1
phpでブラウザーがjavascriptが有効か無効かを調べるのはどうすればいいのでしょうか
301 :
nobodyさん :2007/09/15(土) 13:56:23 ID:rxB3R/I3
サーバの情報色々表示するスクリプトだろ フリーの領域が何バイトあるかとか 別に危険な香りはしない
303 :
nobodyさん :2007/09/15(土) 16:02:42 ID:CbXLFV8Y
PHPでは関数オブジェクトって作れないのかね? $func = new Hoge(); $func('gorua'); こんなふうにやりたいのよ。
ん?何のために?
305 :
303 :2007/09/15(土) 17:08:47 ID:CbXLFV8Y
いや、特別な理由ではないんですけどね。 オブジェクトの主要目的は関数オブジェクトにしたいなーと。 $factory = new MyFactory(); $obj = $factory->produce('foo'); よりは $obj = $factory('foobar'); がイイナー。 まぁ、どっちでもいいんですが。 単にできないものかなと。
正規表現で $test = GetwordIntag("<title>ほげほげ</title><b>あああ</b><title>いいい</title>"); print_r($test); function Hoge($str) { preg_match("/<title>([^<]+)<\/title>/",$str,$match); return $match; } と、このようにして、titleタグで囲まれた文字を配列で全て返すようにしたのですが、結果は Array ( [0] => <title>ほげほげ</title> [1] => ほげほげ ) となってしまいました。 どなたか、全て返す方法をご存知ではないでしょうか?
>>306 $test = GetwordIntag("<title>ほげほげ</title><b>あああ</b><title>いいい</title>");
↓
$test = Hoge("<title>ほげほげ</title><b>あああ</b><title>いいい</title>");
です。すみません。
>>308 >>309 ありがとうございます。
preg_match_allにすることで解決しました。
PHP + MySQL でスケジュール表を作成中で、 縦に名前、横に日付、で○×という感じのUI (↓が例)にしたいのですが、 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 〜 31 名前1 名前2 名前ごとにSQLでforeachをさせるとHTML的にも簡単ですが、SQL回数が人数×日付になり 人数が増えた場合に速度や負荷が心配です。 (まあ気にするほどではないかもしれないが、設計的に間違ったスクリプトは嫌です) 日付でSQLをすると、該当月の末日数のSQLでDB鯖にはやさしいが まず配列などに結果を入れて、後で表示HTML用にforeachする感じになり複雑です。 時と場合によると思いますが、皆さんは根本的にはどちらが好みでしょうか?
>>311 日ごとに○と×なら整数型のビットフィールドにするとか。
1回のクエリーで1月分をまとめて取れるYo。
DBのテーブル設計を見直した方がよくないかい。
test.txtの内容↓ ああああああ いいいいいい というのを、phpで <p>ああああああ</p> <p>いいいいいい</p> と<p>タグで囲って出力したいのですが、方法が見つかりません どのようにすれば良いのでしょうか?お願いします
>>313 foreach (file('text.txt') as $line) { echo "<p>{$line}</p>\n"; }
こうか?
315 :
311 :2007/09/15(土) 19:53:28 ID:ITnns1Uw
>>312 1回!? マジですか
DBの設計まで行くと板違いになるので、情報小出しのようになってしまいましたが、
月の表示は
>>311 で、各○の部分はリンクで、押すと該当日のスケジュール(グラフ表示など)
という風にする予定です。 それでDBは日が中心のテーブルになってました。
(id, date, user_no, start_time, end_time, note こんな感じ)
DBのほうで月の表示用テーブルを増やし、各利用者が日のスケジュール登録時に
そっちのテーブルにも記録するような設計にする というのがイイのですかね?
いつもDB設計は変えず、表示のPHP側で色々複雑にしてた場合が多いので参考になります。
ただ、1回のクエリーでまとめて取る方法が分からないです。
もし宜しければ、簡単な表の例でいいのでSQLや処理を御教示お願い致します。
316 :
312 :2007/09/15(土) 20:12:00 ID:???
>>315 スケジュール表が、日ごとの有無と見えたので、
それなら1回のクエリで十分に見えました。
32ビットの整数なら1月分まとめて取り出せるなーと。
あと、1回のクエリで済ますなら配列を使う必要がありますね。
SQLは昔に少しかじった程度なのですぐに例をあげるのは無理です。
なんか偉そうなこといってスマンかった。orz
317 :
nobodyさん :2007/09/15(土) 20:23:33 ID:rDYCANkK
断るw
319 :
317 :2007/09/15(土) 20:26:26 ID:rDYCANkK
322 :
nobodyさん :2007/09/15(土) 21:06:45 ID:jy5G5jnH
phpの某コミュニティーでcookieのことを焼き菓子と読んでいたので、 それがずっと普通だと思っていて、金曜日の会社の設計会議で焼き菓子と何回か 発言したら、参加していた人から総スカンを食らった上に、 先輩に呼び出して、大目玉を食らいました。 ここの人は、cookieのことを焼き菓子って言ったりしますか?
いわねえよwwwwww ひさしぶりに吹いた
>>321 $pattern = '/\[(.*):title=(.*)\]/';
$replace = '<a href="\1">\2</a>';
$str = '[
http://hogehoge.com:title=ほげほげ] ';
print preg_replace($pattern, $replace, $str);
でできました!
ありがとうございます!
2ちゃん語をリアルで使うアフォと同じ。
>>322 初耳だな
クッキーといっても食べれませんよ
程度なら耳にするが。そんな変なコミュあるのか?
食べ残しに注意
むぉたぶぇらるぇないよぉ・・もぐもぐ
>>326 ビジネスの場で「ら」抜き表現は馬鹿っぽいからやめたほうが良いよ。
食べられませんって言ったほうがいい。
細かいけど。
オマエはATOKか
どっちかというと、Cookie発行をクッキーを焼く、取得を食べると表現するのを見かける。
332 :
nobodyさん :2007/09/15(土) 23:17:20 ID:Xmsi68ZJ
ページ間移動してもプルダウンメニューの選択項目を保持し続けたいのですが、 項目選択後、送信ボタンを押して次ページに遷移し、 「戻る」のリンクをクリックして元のページに戻ると 常に一番上の選択項目が選択された状態となってしまいます。 下記の記述のどの辺りに問題があるかアドバイスいただけると嬉しいです。 mail.php <?php if($_POST['submit']){ header("Location: confirm.php"); exit(); } require("./smarty/Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = './smarty/templates'; $smarty->compile_dir = './smarty/templates_c'; $smarty->cache_dir = './smarty/cache'; $smarty->config_dir = './smarty/configs'; $smarty ->display("mail.html"); ?>
333 :
nobodyさん :2007/09/15(土) 23:18:18 ID:NcWcmSvF
334 :
nobodyさん :2007/09/15(土) 23:18:41 ID:Xmsi68ZJ
>>332 の続きです
confirm.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<a href="mail.php">戻る</a>
</body>
</html>
mail.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="mail.php" method="post">
<select name="test">
<option value="あ">あ</option>
<option value="い">い</option>
<option value="う">う</option>
</select>
<br>
<input type="submit" name="submit" value="送信する">
</form>
</body>
</html>
336 :
nobodyさん :2007/09/15(土) 23:38:19 ID:Xmsi68ZJ
>>335 レスどうもです。
Sessionを使う事も試してみたのですが、プルダウンメニューの場合どう記述すればよいか分かりませんでした。
例えばtextareaだと
<textarea>ここに表示したい内容を書いておく</textarea>
でページ移動しても記述内容を保存できるのは確認できたのですが。
>>334 PHPというよりhtmlの問題じゃないの?selected属性ってなかったか?
338 :
nobodyさん :2007/09/15(土) 23:54:07 ID:Xmsi68ZJ
>>337 selected属性も試したのですが、常にselectedを指定したものが表示されてしまうようになりました
(例:「あ」にselectedをつけた所、「う」を選択して送信ボタンを押し、戻るリンクで前画面に戻っても
毎回selectedが効いてしまっているようで、「あ」が選択された状態になってしまいました)。
>>337 「う」を選択したという情報は$_SESSIONに保存してあるんだよね?
$_SESSIONの情報を元にselected属性を付けないとあかんですよ。
そりゃ当たり前じゃん・・・ ・selectedを付けると選択される ・ある要素を選択させたい ⇒ ・ある要素のところにselectedを付ければいい
「戻る」で入力項目を保持したい場合、通常はsubmitボタン使うけど、
ハイパーリンクにしたいのかな?
その場合はGETでmail.phpにパラメータを渡すか、JavascriptでPOSTに
してしまうか、セッション使うかになるかなあ。
submitボタンのが楽だと思うんだけど。
セッションは複数ブラウザ立ち上げたりするとアレなんで、フォームの
パラメータには使わないようにしてるなあ。
submitボタンを使う場合はhiddenでパラメータをformに埋め込み、
mail.phpにactionさせるだけ。
mail.phpには当然パラメータを受け取ってフォームに流し込む
仕組みが必要だけど、Smartyにはそのための関数やらがいろいろある。
もちっと調べなされ。
select〜optionあたりはべた書きじゃなく、↓みたいなのを使う。
http://smarty.php.net/manual/ja/language.function.html.options.php 個人的にはWebで基本かつ必須のformでの値の受け渡し方を理解していない
気がするので、まずはSmartyとか使わずにやってみた方がいいとおもう。
フレームワークやテンプレートエンジンは作業の効率化のためのものなので、
基本がなっていないと混乱すると思う。
342 :
nobodyさん :2007/09/16(日) 00:06:42 ID:84mMghay
>>341 >セッションは複数ブラウザ立ち上げたりするとアレなんで、フォームの
すいません、アレってどういうこと?
344 :
nobodyさん :2007/09/16(日) 00:16:53 ID:ZprS1LjJ
>>339 >>340 ご指摘ありがとうございます。
>>332 のソースでは省いてますが、一応$_SESSIONに保存しているつもりです。
ただ、
>>339 >>340 でご指摘されているとおり、$_SESSIONの情報を元にselectedをつけないといけないだろうなと言うのは想像が付くのですが、
記述の仕方が分かりませんでした。
>>341 ご指摘ありがとうございます。
submitボタンでは無くハイパーリンクにしたいです。
理由ですが、
>>332 は簡略化したものですが、実際には既存のソースを改造しています。
そしてご指摘の部分を触る権限があるか微妙なので。
どうしても無理ならsubmitボタンにする事も検討する必要があるとは思いますが。
後、ご指摘のとおりformでの値の受け渡しとか良く分かってません。
どうしても触る必要があり触っているのですが、まずはテンプレートエンジン無しで出来るようにしてみたいと思います。
>>343 IEでCTRL+Nでブラウザも1個起動した場合、同じセッションが使用され、
サーバからは区別できなくなる。
IE以外のブラウザでも同様の現象が起きたりする。
んで、ブラウザAでページAを開いてて、ブラウザBを起動。
そちらでページBを閲覧し、ページAでsubmitする。
もしページAとページBで$_SESSIONに同じ変数を格納して
いた場合、ページAで入力した値がページBのもので上書きされる。
PHPだけでなくWebプログラム全般で起こる問題。
CRSF用にワンタイムチケット発行するついでに、チケットと
関連付けて入力内容をセッションに保持させればいいのかな〜
とか回避策考えてるけど、めんどいので放置中。
有効な対策とか知ってたら教えてくださいませ。
>>344 退職者が管理してた社内システムの改修でもやることになったのかね。
PHPを勉強しつつ、ちょこちょこと機能追加や修正とか。
セッションにmail.phpでの入力値を全部格納してるなら、mail.htmlで
その値を取り出して動的に表示する仕組みを追加すればいいだけ。
confirm.phpの適当なところに
<?PHP print_r($_SESSION) ?>
って書けばセッションにちゃんと入ってるかどうかは分かるから確認。
Smartyはテンプレート(ここではmail.html)からセッションの値を
{$smarty.session.test}なんて記述で取得できる。
なんでさっきかいた{html_options}とか利用しつつ動的表示を行います。
でもま、他言語でのWebアプリ作成経験もない状態でアレモコレモは
却って習得に時間がかかると思う。
急がば回れで初心者向けPHPの本片手に基本からやった方がいいと思うよ。
フォームを利用したサンプルなんかは必ず載ってるし。
347 :
343 :2007/09/16(日) 01:13:51 ID:???
>>345 なるほど〜。
Webプログラムは専門じゃないのでこのような問題があるのは知りませんでした。
ありがとうございます。
348 :
age :2007/09/16(日) 02:27:57 ID:Ws+84egL
>>349 さんくす
読んでみたけどこれらの利点って、新たにファイルを読み込まなくていい事くらい?
pregで -html あああああ -html_end の「-html」から「-html_end」を抜き出そうと思ったのですが、 preg_match('/-html\n(.+?)-html_end/', $str, $result); としてもうまくいきません。どうすればよいのでしょうか?
-html_end の直前にも改行あるっしょ
>>352 それで試してみたところ、「-html」から「-html_end」が一行の場合は正常に出力したのですが、
-html
ああああああ
aaaaaa
-html_end
と、複数行になると、空のまま出力されてしまいます・・・
354 :
352 :2007/09/16(日) 19:31:09 ID:???
じゃあsオプション使えるかな? pregはPerl互換らしいけどおれ先週末からPHPはじめたからどうだかわからん /-html(.+?)-html_end/s
>>354 それでいけました。ありがとうございます
オプションの存在を知りませんでした…orz
356 :
355 :2007/09/16(日) 19:45:40 ID:???
>>354 何度もすみません・・・
まったく私には理解不能な挙動をしているので、お手上げですorz
$str = file_get_contents("test.txt");
preg_match('/-html\n(.+?)\n-html_end/s', $str, $result);
と、テキストをファイルから読み込むと(内容は先ほどと同じです)、何も出力されない状態となってしまいました。
どうかお助けください
357 :
352 :2007/09/16(日) 20:41:28 ID:???
/-html\n(.+?)\n-html_end/sじゃなくて/-html(.+?)-html_end/sでダメ? 挙動がおかしい? 前者でダメならテキストファイルの改行コードが実行環境の改行コードと違うのかな? もしsオプションが不安定なら /-html([.\x0a\x0d]+?)-html_end/ とかでどう?
>>357 >>358 ありがとうございます。
$str = file_get_contents("test.txt");
preg_match('/-html(.+?)-html_end/s', $str, $result);
これで解決しました。
360 :
nobodyさん :2007/09/16(日) 22:51:54 ID:4TCTiZPm
PHPのことを調べてもどうもよくわかるような解説がありません 具体的におしえてください
362 :
nobodyさん :2007/09/16(日) 23:44:45 ID:oQRqCBGu
メールを送信して、Yahooメールで見てみると、「山本」が「山」になってしまいます。 UTF-8からJISにエンコードすると、一部文字化けしてしまいます。 エスケープしてからエンコードしてエスケープを解除していても同じでした。 なので、件名をJIS、本文をUTF-8、ヘッダーのcharsetをUTF-8にしているのですが、 何か問題はありまs・・・・ありますよねorz
>>362 UTF-8からJISに変換したものをテキストファイルに書き出したり
HTML上に表示させたりしても、その内容は化けてるの?
変換で化けるのかメール送信で化けるのかは切り分けた方がいいと思うけど。
364 :
352 :2007/09/17(月) 00:18:42 ID:???
JISコードの「本」には\が含まれてるからじゃない? メールのヘッダ(件名や送信元)に漢字コードが含まれてる場合は普通はJISコードを BASE64エンコードをして7ビット(アスキー)表現するのが普通
質問です。 PHPが動作したときにある画像(例えばグーグルのロゴ画像など) を自分のサーバに保存するようにしたいのですが、 どうしたらよいのでしょうか。
366 :
365 :2007/09/17(月) 01:22:27 ID:???
自己解決しました。
>>366 まだ解決していないのに勘弁してください…
ダウンロードダイアログを開かずに自動でサーバに保存したいのです。
どなたかよろしくお願いします。
368 :
nobodyさん :2007/09/17(月) 01:34:39 ID:AzPlrYBe
>>1 > ◆質問する時の注意
> ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
369 :
365 :2007/09/17(月) 01:53:43 ID:H7YfkkRc
すいませんでした。 ID表示させることを忘れていました。
>>369 php.iniでallow_url_fopenがONに設定されていることが前提だけど、
file_get_contents()で該当URLの出力を読み込んでファイルに保存すればいい。
371 :
365 :2007/09/17(月) 02:00:06 ID:e+n8gM7j
↑は偽者です。
374 :
nobodyさん :2007/09/17(月) 03:10:54 ID:nPCszMjg
参照渡しの値渡しって速度的な違いってありますか? ほぼないですよね?
>>374 渡すデータのサイズ次第だとは思うが、
多くの場合、参照渡しは遅い。
377 :
nobodyさん :2007/09/17(月) 03:40:18 ID:H7YfkkRc
>>370 ありがとうございます。
おかげで出力できました。
ちなみにfile_put_contentsで1行でいけるな
エラーチェックくらいしようよ。
380 :
nobodyさん :2007/09/17(月) 06:33:42 ID:JQdZ1nWf
月曜日になってしまいましたがそろそろ
>>300 を教えて欲しいのですが。
>>380 javascriptでなんかの値をセット
↓
サーバに送信
↓
成功したらおk、失敗したら×
382 :
nobodyさん :2007/09/17(月) 07:16:14 ID:ySslSBrA
>>376 何言っちゃているの?お前?
オブジェクトのコピーが伴う値渡しが常に遅いに決まってるだろ。
PHPの場合、単純にそうとも言い切れない Cのような単純なポインタとは別もんだからな
PHPは実際に値が変更されるまでは データがコピーされないしな。
>>382 もうすこし具体的に説明しないとあなたの負けです
実際にベンチマーク出せばわかることだろ どちら側もベンチマークすら出してないでどっちの負けとか言う馬鹿がいるんだな
ばーかばーか
388 :
nobodyさん :2007/09/17(月) 12:47:59 ID:iCPVuNeR
$_SERVER['REMOTE_ADDR']はhtmlspecialcharsをしておくべきでしょうか? ipはクライアント側で自由に文字列を書き換えられませんよね。
しておくべき
390 :
nobodyさん :2007/09/17(月) 12:53:10 ID:iCPVuNeR
わかりました。date()もやったほうがいいんでしょうか?
はぁぁぁぁぁぁぁぁぁぁぁぁ?????
もう全部やっとけよw
393 :
nobodyさん :2007/09/17(月) 13:23:40 ID:W3Fsfqr5
395 :
nobodyさん :2007/09/17(月) 13:41:38 ID:RU4hBw1O
PHP とJavaScriptのちがいはなに?
(・(ェ)・)
>>395 1.文法や書式が違う。でも基本がC言語からの発展なので似てるとこは多い。
2.PHPはサーバー側で動作する。JavaScriptはブラウザ側で動作する。
>>395 PHP 3文字
JavaScript 10文字
>>395 PHP技術者の平均時給 2,700円(PG)
JavaScript技術者の平均時給 1,100円(PG/DN)
javascript技術者なんているのか・・・
401 :
nobodyさん :2007/09/17(月) 14:56:44 ID:ySslSBrA
>>400 いるだろ普通に、っていうか、それは思っていても言ってはいけないことだろ。
天皇陛下は贅沢三昧の税金どろぼう、とか
長嶋はもう廃人で外にでしゃばって出てくるな、とか
拉致なんかの小さいことにこだわるよりも国益を優先されろ、とか
思っていても言ってはいけないことがある事くらい察しろ。
酷い釣りだ
403 :
nobodyさん :2007/09/17(月) 15:12:38 ID:RU4hBw1O
>>397 PHPだとクライアント側はいっさいさわれないってこと?
当然です
405 :
nobodyさん :2007/09/17(月) 15:24:49 ID:kIYZsn2K
>>346 返信遅くなり申し訳ありません。
作業内容としてはそんな所です。
もっともPHPを勉強してという所はすっ飛ばして、いきなり本番といった所ですが。
あの後、いろいろ調べたのですが、
>>332 よりはマシになったのですが、
まだ解決していません。
それと、教えていただいたセッションに入っているか確認する方法で、
問題なさそうな事を確認しました。
後は、
>>341 のアドバイスに従い、テンプレート無しで試してみました。
また
>>339 >>340 のアドバイスを元に、$_SESSIONの情報を元にselected属性を付けてみたつもりです。
上記の状態で、Javascriptで戻った場合は大丈夫なのですが、普通にハイパーリンクで戻ると
設定項目は保持してません。
下記にソースを添付しますので、普通にハイパーリンクでも設定項目が保持できる方法をアドバイスいただけると助かります。
406 :
nobodyさん :2007/09/17(月) 15:25:22 ID:kIYZsn2K
mail2.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form action="confirm2.php" method="post"> <select name="toshi"> <option <? if($_SESSION['toshi'] == "あ")echo "selected " ;?>value="あ">あ</option> <option <? if($_SESSION['toshi'] == "い")echo "selected " ;?>value="い">い</option> <option <? if($_SESSION['toshi'] == "う")echo "selected " ;?>value="う">う</option> </select><br /><input type="submit" name="submit" value="送信する" /> </form> </body> </html> confirm2.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $_SESSION['toshi'] = $_POST['toshi']; print($_SESSION['toshi']); ?> <br /><a href="mail2.php">普通に戻る(NG)</a><br /> <a href="javascript:history.back()">JavaScriptで戻る(OK)</a> </body> </html>
<?php session_start(); ?>
408 :
nobodyさん :2007/09/17(月) 15:59:15 ID:kIYZsn2K
>>407 アドバイスどうもありがとうございます。
最初は使用していたのですが、途中から下記のwarningが出てしまったので取り外しました。
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
上記ソース内でセッションを切ってないのが原因かとも思いましたが、
切るタイミングがなさそうだったのでそのままにしてました。
なのでsession_start();を入れても設定項目を保持できない事にはかわりなかったりします。
410 :
nobodyさん :2007/09/17(月) 16:10:32 ID:kIYZsn2K
>>409 すいません、日本語すら怪しかったりします・・・
今試したら、Warningが出なくなっていました。
そして選択項目も保持していました。
アドバイスを頂いた皆様どうもありがとうございました。
また何かありましたらよろしくお願いします。
インクルードファイルの依存関係を図式化してくれるツールってありますか?
412 :
nobodyさん :2007/09/17(月) 18:46:11 ID:iCPVuNeR
>>393 たかぎさんのおっしゃることはわかるのですが・・・う〜ん
過ぎたるはなんとか
>>411 doxygenあたりでできないかなと思ってやってみたがincludeのグラフは無かった。
クラスのグラフは生成してくれた。
graphvizとPerl等のスクリプトで生成するのはどうよ?
415 :
nobodyさん :2007/09/17(月) 20:10:35 ID:YADbl6mN
>>412 たかぎさんはWEBプログラマではないと診た
>>410 挿入する場所が一番上だったり途中だったりしたんですね
418 :
nobodyさん :2007/09/17(月) 21:08:35 ID:kIYZsn2K
>>417 そのとおりです。
最初はbodyの下に入れてて、warningは出なかったのですが(ただし選択項目は不保持)、
何が原因かは分からないのですが、途中からwarningが出た為一度取り外しました。
その後
>>409 のアドバイスを元に、一番上に挿入した所、warinigがでなくなり選択項目も保持するようになりました。
後は本番に移植して動けば良いのですが、本番はソースが複雑だったので怪しい所ではありますが。
419 :
nobodyさん :2007/09/17(月) 21:46:41 ID:Pxt8ssvb
PEAR::DB、PEAR::MDB2とPDOを比べると、 もう比較レベルにならないぐらいPDOが速いし、prepareとかすごく便利だお。 でも、PEARライブラリは、PEAR::DB、PEAR::MDB2に対応してるのしかないお。 PHP5に移行考える人はどうした感じ? 1. PERA使いまくり、PDOはまだ封印。 2. PEAR封印、PDOで1から書きまくる。 3. PEARに、PDO用のコンテナ書きまくる。 4. PEAR、PDOなんかいらね。フレームワークと運命共同体 5. MySQL関数やPostgreSQL関数使ってるからどうでもいい
CakePHPのO/Rマッパーでオブジェクトとして扱って SQLなんてものはどうしても必要なとき以外書かないので どうでもいい。
Zend Framework使ってる人っていないのかね?
たびたび仕様変更→bugが紛れ込む→年月経てるわりに枯れてない感じ なんでフレームワーク、拡張ライブラリともに利用する気になれない #私見ですよ、私見。 悪意はありませんです、ハイ。
場合による。 とにかく速度重視ならSQL関数べた書き 特に案件さえ通ればおkならPDOやFWのO/Rマッパーで楽をする 洋梨は好かん
すみません、PHPを動作させる際にCGIモードとモジュールモード(mod_php)があるようなのですが、 自分のサーバでどちらのモードが有効なのか判断する方法はありますでしょうか? また、意識的にどちらで動くか設定する方法があれば教えてください。
429 :
nobodyさん :2007/09/18(火) 14:04:24 ID:FMVGiEK2
DB関係の話大丈夫かな・・・? 膨大な量のCSVデータをMySQLに全て格納したいんですが、 何か手っ取り早い方法はないでしょうか。 phpMyAdminのインポートでは、ファイルサイズがオーバーしているらしくて読み込めません。 ちなみに、100MBくらいあります。
>>429 手っ取り早いのはmyimportユーティリティ
>phpMyAdminのインポートでは、ファイルサイズがオーバーしているらしくて
単なるスクリプトの実行タイムアウトでは?
431 :
nobodyさん :2007/09/18(火) 14:11:24 ID:FMVGiEK2
>>430 phpMyAdminでインポートさせようとすると
「エラー
アップロードしようとしたファイルが大きすぎるようです。対策については ドキュメント をご覧ください」
との表示が出ます。
(ドキュメントが英語でわからないですorz)
432 :
nobodyさん :2007/09/18(火) 14:15:19 ID:FMVGiEK2
433 :
nobodyさん :2007/09/18(火) 14:30:50 ID:LV1060jK
空のテキストファイルを開こうとすると、以下の文でNGと表示されてしまいます。 テキストファイルに何か一文字でも入力して保存しておくとOKと表示されました。 このテキストファイルには掲示板のログとして、csv形式で保存するのに利用したいのですが、 空でも読み込んでOKと出すにはどうしたらよろしいでしょうか? $textfile = "test.txt"; if ($file = file($textfile)){ echo "OK"; } else { echo "NG"; }
>>433 返り血が読み込めたかどうかではなく、
読み込んだ結果何が入っていたかになる。
つまり、ファイルを開いたが何も入ってないと必然的にFALSE血が返る
435 :
nobodyさん :2007/09/18(火) 14:43:42 ID:LV1060jK
そういうことだったんですね。 ファイルが存在してて、ファイルを開けるかどうかって判断だけがしたいのですが、 file関数ではだめでしたね;;
437 :
nobodyさん :2007/09/18(火) 15:02:03 ID:LV1060jK
まさしくそれです! 勉強になりました。ありがとうございます。
438 :
nobodyさん :2007/09/18(火) 15:17:27 ID:YODMOTH4
ieは、川のほとりで「はしで待ってて」というと普通なら、橋か端で待つのに、箸屋を探しにいって戻ってこない状態。 理解できないと言うよりそもそも理解の意味も分かってない。
俺のたこ焼きだけたこが入ってなかったのですがどうしてですか?
たこ入ってないほうが好きなんだけど
変数展開がうまくいかないので書き方教えてください $str= "$this->opt['class']"; // -> Array[class]になってしまう $str= "${this}->opt['class']"; // -> Object->opt[class]になってしまう
444 :
443 :2007/09/18(火) 16:22:28 ID:???
事故解決しました
445 :
nobodyさん :2007/09/18(火) 16:31:11 ID:FMVGiEK2
mb_convert_variables結構多様するけど ループで回してmb_convert_encodingしたほうがいいのかな? なんとなく気になった・・・
>>444 真剣に質問してるのでそういうのはやめてください
真剣なら、おっぱいの画像をアッぷする位の気を使えよ。
俺は本当に事故解決したことがある。事故って納期延期とかマジわろす
社会人失格
>>449 遅れるのは仕方が無いとして、遅れる連絡を早くしろといつも言っているじゃないか!
こっちのスケジュールが空いてしまうんだよ、賠償もんだそ。
>>443 そのおっぱいカッコの使い方…さてはきさまPerl屋だな?
ここはPerlerも多いだろ
>>452 まぁそうなんだけど・・
Perlで書いてたモジュールをPHPで書いてるんだけどはじめてのPHPはむずいね
やっと変数展開の詳しいサイト見つかったからそこをヒントに解決したよ
みんなありがとよ おっぱいの画像は持ってないから勘弁を
455 :
nobodyさん :2007/09/18(火) 18:41:17 ID:dkyCnIzv
PHP+MYSQLの勉強してるんだけど 今、おみくじ・フォームから入力したものをそのまま出力・なんのエラー処理もしてない一行掲示板 WEBを取り込んで軽く処理をさせて表示する物を作ったんだけど 次何作ればいいかな、MYSQL使った掲示板作ろうかと思ってるんだけどなんか違うんだよね レベルが一気に上がりすぎてるのが原因か、いいサンプルが無いのか、今更掲示板作っても楽しくないのか 原因かわからないんだけど、どうも、やる気が出ない。
そこでPHP(Smarty) + MySQL + Ajax な画面遷移のないWEBアプリに挑戦。
掲示板作成の流れを基にCakePHPの使い方を教えてくれ。
include_onceで絶対パスが読み込めなくなりました。 相対パスで記述した場合は読み込めます。 この辺の設定はどこに関係しているのでしょうか? ドキュメントルートにtest.phpとtest.htmlを設置して、 単純に以下のように読み込ませるだけです。 -- <?php include_once '/test.html'; ?> -- しかし、以下のエラーが出ます。 -- Warning: include_once(/test.html) [function.include-once]: failed to open stream: No such file or directory in e:\www\html\test.php on line 2 Warning: include_once() [function.include]: Failed opening '/test.html' for inclusion (include_path='.;c:\php\includes;C:\php\pear') in e:\www\html\test.php on line 2 -- 環境は以下になります。 -- Windows 2000 Apache 1.3.34 PHP 5.1.2 -- 何卒よろしくお願い致します。
>>458 ドキュメントルートが/な訳ないだろwww
include_once 'test.html'; または include_once './test.html'; つかそれ絶対パスじゃないと思うが絶対パスにしたいなら include_once 'e:/www/html/test.html';
なんでID出してない奴に丁寧に答えてんだよ! ほんとにお前優しいから困る
462 :
nobodyさん :2007/09/18(火) 21:28:19 ID:WeDTSAXg
半年前の日付を求めるのはどうすればいいのでしょうか? date("Y-m-d",strtotime("-6 month")); では駄目でした。
>>419 に答えてくれた皆さんありがとう。
やっぱ、これがベストって感じなのは今はまだないっぽいですね。
465 :
nobodyさん :2007/09/18(火) 22:31:54 ID:YODMOTH4
phpで動的ページを運営しているのですが、 javaスクリプトがオンとオフで違うページ(内容)を表示したいのですがうまくいきません。 read.phpであくまでもイメージですが、 <noscript> <? $script="no"; ?> </noscript> <? if($script=="no"){ echo $mainpage_no; }else{ echo $mainpage; } ?> こんな感じでスイッチのようなものが欲しいのですが何か方法ないでしょうか
<script language="JavaScript"> <!-- JavaScriptコード //--> </script> <?php PHPでOnの時のHTMLをうんたらかんたら ?> <noscript> <?php PHPでOffの時のHTMLをうんたらかんたら ?> </noscript>
>>465 サーバとクライアントとを近藤してマイカ?
468 :
nobodyさん :2007/09/18(火) 23:00:42 ID:WeDTSAXg
>>464 すみません、できました・・。
別の質問ですが、
$month="06"だった場合、表示する時に"6"としたいのですが、
どうすればよいのでしょうか?
date("n",strtotime($month))としても駄目でした
>>468 echo sprintf('%d', $month);
echo substr($month, 1, 2);
echo (int)$month;
お好きなものを
470 :
nobodyさん :2007/09/18(火) 23:14:31 ID:YODMOTH4
>>466 どもです。
それもやってみたのですが、ソースを見ると同じ内容が2回も書かれてるのをみて唖然として
それで今スイッチを探してるのです。
ネットで探してもそれらしき情報ないようでPHPの使う人はJAVAスクリプトは使わないんですかね。
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('main').style.display = ""; } </script> </head> <body> <noscript> JavaScriptがoffな人のボディ </noscript> <div id="main" style="display:none"> JavaScriptがonの人のボディ </div> </body> <html> JavaScriptで振り分けたいなら、JavaScript使えばよろし。
ああよく考えたら466はなってなかったな。すまん。
>>470 JSが有効か無効かはサーバからは判断できないから
探してもそれらしき情報なんて出る訳が無い。
ソースまで気にするのならどっかにリダイレクトさせるなりするしかないんじゃね?
JSONつかってやるってのもあるだろうけど既存の動的なサイトがあるんなら
それを対応させるのは相当面倒になると思うよ
474 :
nobodyさん :2007/09/18(火) 23:28:11 ID:ZcU0BWXG
フォームからデータを受け取ったページで print_r($_SESSION); を記述しておくと下のように表示されました(一部抜粋ですが)。 Array ( [action] => process [timing1] => あ [timing2] => い [comments] => う ただし、print_r($_SESSION);の後に、 if(isset($_SESSION["○○○"]))を記述してみると(○○○にはtiming1などが該当)、 timing1はfalseに対し、 timing2とcommentsはtrueでした。 timing1もtrueになるようにしたいのですが、思い当たる点があればアドバイスいただければと思います。
475 :
nobodyさん :2007/09/18(火) 23:53:14 ID:YODMOTH4
>>471 ありがとうございます。
やってみたところ希望してた動作をしてくれています。
感謝感謝です!
476 :
nobodyさん :2007/09/18(火) 23:57:05 ID:dkyCnIzv
>>456 知らない言葉が沢山ですが
とりあえず、ググって見ようと思いますありがとう!
477 :
nobodyさん :2007/09/18(火) 23:57:32 ID:YODMOTH4
>>473 >>471 をみてオンの人の所で読みに行くphpでオン用オフ用で分けて変数が空なら
オフの内容を、変数に例えば$java="on";と入ってればオン用内容を出すようにしてみました。
かなりいいとこまで出来てきました。
え
>>480 ありがとうございます
でもdocumentationらしくものがなく・・・お手上げです
せっかく教えていただいたのにすみませんが私ではムリそうです
なんのdocumentation? つかどの質問なのか分かんないけど
483 :
nobodyさん :2007/09/19(水) 00:44:57 ID:FnoZX1AE
>>480 レスありがとうございます。
print_r($_SESSION);で表示されてもセットされないって事があるんですか?
タイプミスは一応気にしてみてみたつもりですが、再度チェックしてみます。
485 :
nobodyさん :2007/09/19(水) 01:32:59 ID:FnoZX1AE
>>484 申し訳ない。
コードは今手元にないんだ。
明日と言うか今日再チャレンジしてみて、どうしても駄目だったら、
現象が再現する最低限のソースを出せるように準備したいと思います。
<?php function f(&$arg) { return $arg['c']; } function g(&$arg) { return $arg; } function h(&$arg) { return isset($arg['c']); } $a=array(); f($a); // error g($a['c']); // not error h($a['c']); // not error ?> なんでこの言語設計者はこんなバッドノウハウを埋め込みやがりますか?
487 :
nobodyさん :2007/09/19(水) 01:43:48 ID:gkslbv3A
変数と式と値の違い、その他注意すべき構文上のグループがあればおしえてください。 isset() が関数ではなくステートメント(スペシャルフォーム?) なのは分かった。
490 :
nobodyさん :2007/09/19(水) 02:01:10 ID:gkslbv3A
isset (PHP 4, PHP 5) isset ― 変数がセットされているかどうかを検査する $a=array(); isset($a['b']]); でエラーは出ないので$a['b']は「変数」ということでしょう。驚くべきことに。 んでは、「変数」って$aや$a[index] の他に何があるの? もうPHPのソース読むしか無い?マニュアルすらアテにならんのだが。
オッパッピー
492 :
458 :2007/09/19(水) 02:02:47 ID:RXNedNOk
458です。 >461 ID表示させず申し訳なかったです。 >459 >460 レスありがとうございます。 勉強不足で申し訳ないですが、 ドキュメントルートを起点にしたインクルードってできないのでしょうか?
>>489 Undefined index: c in hoge on line 4
とでた
Notice はエラーじゃねーよ
E_NOTICEのEはexceptionとかerrorのEではないと? これ、PHPのプログラムとして誤りではないんですか?
497 :
458 :2007/09/19(水) 03:32:07 ID:RXNedNOk
>>496 もう少しヒントを頂けると嬉しいです、、。
include_pathに設定なんかを行う感じでしょうか?
特別なことをせずにインクルードできるなら是非教えて頂きたいです。
よろしくお願いします!
>>486 エラーが出るのがおかしいと感じてるのか、出ない下2行をおかしいと感じてるのか分からんが、
http://www.php.net/manual/ja/language.references.php ここ読んでなんとなくリファレンスとはそういうもんかなあと俺は思った。
関数の引数に限らず、
<?php
$a = &$hogehoge['aaaaaa'];
?>
リファレンスの代入でエラーになる事は無いみたい。
まあ俺なら
if (isset($a['c']) g($a['c']);
か、
g($a);
function g(&$arg) {
if (!isset($arg['c')) return;
}
とするけどね。
499 :
nobodyさん :2007/09/19(水) 05:20:58 ID:Y/2cENkk
>>486 >>498 のように参照元が未定義でも黙って勝手に定義しちゃうな。
仕様と言われたらしょうがないが、嬉しくない動作だ。
error_reporting(E_ALL | E_STRICT);
unset($a);
$b = &$a[0]; # 沈黙
var_dump($a); # array(1) { [0]=> &NULL }
>>490 変数が定義済みかつ NULL 以外かどうかを bool で返す言語構造だ。
エラーを出すなんてマニュアルのどこに書いてあるのよ。
>>498 のような答えを待ってました、ありがとうです。
まだよくわかんないですが。。
どちらがオカシイというか、
・一貫性がないなぁ
・他のプログラミング言語ではみられないし、直観的でない動作だなぁ
という風に思ってました。
頭がおかしいとか言っちゃってる人?がいますが、この程度のこともハッキリできないって正直怖くね?
と思ってたのでちゃんと分かって有り難かったです。
でも例えば、
$a =& $hogehoge['b'];
return $a['c'];
これはE_NOTICEが出ないのに、
>>486 のf($a)でエラーがでるのはなんでだろう。
こんなん、エラーが発生した位置から実際のバグが特定しにくいと思うんだけど…
とにかくPHPの参照と配列が組み合わさると地雷、という風に理解すればいいかねぇ。
502 :
nobodyさん :2007/09/19(水) 09:18:42 ID:gkslbv3A
これがE_NOTICEを出さないって意味です。
>>486 のf($a)はE_NOTICEを出すので
厳密に参照引数と参照変数が同じというわけではなさそう。
<?php
function g() {
$a =& $hogehoge['b'];
return $a['c'];
}
g();
?>
まあとにかく地雷ってことか…
503 :
nobodyさん :2007/09/19(水) 09:56:38 ID:rpyBUC34
504 :
nobodyさん :2007/09/19(水) 10:53:55 ID:Y/2cENkk
>>501 ごめん。
八つ当たりをしてしまった。
気にしないで下さい。
オマエ童貞だろ
506 :
nobodyさん :2007/09/19(水) 12:45:03 ID:Ur82wVvy
phpのプログラムの納品が終わりまして、一般ユーザー向けにマニュアル書いているんだけど、 言葉使いに迷っております。 ある機能があるんだけど、 hogehoge機能という言葉を使う代わりに、 hogehogeエンジン、hogehogeシステム、hogehogeプログラム、hogehogeロジック って書こうと思いますが、どれが一般人に分かりやすいですか?
PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot sendsession cookie - headers already sent by (output started at /foo/bar.php:167) in /foo/bar.php on line 184 PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot sendsession cache limiter - headers already sent (output started at /foo/bar.php:167) in /foo/bar.php on line 184 session_start()のところでこんなエラーが出てスクリプトが止まってしまいます。 なにが原因でしょうか?
次どうぞー
>>506 一般ユーザって社内?コンシューマ?
社内ならシステムでいいんじゃね。
てか、その辺はお客さんと折衝してるときの
ニュアンスで決めちゃうからなー。
よくわからんわ。
>>507 >>1 IDを表示させてね。
>Cannot sendsession cookie - headers already sent
既にヘッダー文字列が送られている為にセッションを開始することが出来ません。
よくあるのは、空白とかが<?php ?>の前にある時ですかね。
510 :
nobodyさん :2007/09/19(水) 13:02:09 ID:Ur82wVvy
>>509 レスありがとうございます。紛らわしくてすみません。
一般ユーザーというのは、一般消費者向けです。
マニュアルといっても、電子マニュアルでして、
サイトに載せる予定です。hogehoge機能のhogehogeの部分が横文字なので、
機能じゃなくて別の言葉はないか、とクライアントに言われて困っています。
511 :
507 :2007/09/19(水) 13:07:07 ID:qdL49ylm
>>509 ありがとうございます。
確かに先にheaderでというものをやってました。
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
session_start()はこれより前にやらないといけないということですね。
後で確認してみます。
512 :
nobodyさん :2007/09/19(水) 14:36:21 ID:ywTkCFki
掲示板で 入力→確認→書き込み の流れをファイル分担させずに、綺麗なソースで書きたいんだがお勧め方法ある?
>>512 丸投げするなよ
綺麗なソースかどうかなんて見てみないとわかるわけないだろ
ていうかファイル分けないとか謎制限いらんだろ
フレームワークでも使って作れ
>>514 すげーーー、ここ月額でたった80円かよ。
しかも、めちゃめちゃ高機能。
おれも、ここに変えようかなぁ。
516 :
nobodyさん :2007/09/19(水) 14:42:13 ID:ywTkCFki
>>513 ん〜、何ていうんだろ
いろんなとこでこの作業を行いたいからファイル分けると増えすぎてゴチャゴチャする
swtich ($resgit){
case "A":
require_once("hoge1.php");
break;
case "B":
require_once("hoge2.php");
break;
case "C":
require_once("hoge3.php");
break;
}
だと早いけど、
この実行するPHP「hoge1〜3.php」を何かの変数に格納して
あとで実行できないかなと・・・
>>514 うわぁ、すごい安い!!!
それに、すごいかわいい。こんなに初めてかも。
おれ、ここの掲示板使ってみる。いい情報ありがとぉーーー
2chでの宣伝行為はひろゆきに金とられるぜ?
>>517 早速おれも見てみた。
すごいね。これ。
しかも、すごい運用実績があるし、信頼できそうだね。
今使っている掲示板ダメダメなので、早速これ使ってみるよ。
>>516 MVCをしたいってこと?
なんかフレームワーク使ってる?
それとも、デザイン込みで1ファイルにしたいの?
質問ばかりでごめんね。
やりたいことがはっきり見えなくて。
522 :
nobodyさん :2007/09/19(水) 14:50:09 ID:ywTkCFki
>>521 こっちこそ詳しくかかずにすみません
PEARを使ってます
デザイン込みで1ファイルなので
<?
$type1 = Aの場合のPHP+HTML文
$type2 = Bの場合のPHP+HTML文
$type3 = Cの場合のPHP+HTML文
?>
<html>
<body>
<?
switch ($regist){
case "A":
$typeAのPHP+HTML文を実行
break;
case "B":
$typeBのPHP+HTML文を実行
break;
case "C":
$typeCのPHP+HTML文を実行
break;
}
?>
</body>
<html>
523 :
nobodyさん :2007/09/19(水) 14:50:41 ID:VHjt1ihL
>>516 require_once("hoge{$resgit}.php");
かな
524 :
nobodyさん :2007/09/19(水) 14:53:58 ID:ywTkCFki
>>523 どもです。
ですが、require_onceを使うためには実行するPHPを別ファイルで保存しなくてはいけないので、
それをしないで、実行する文を変数か何かに格納して条件別にそれを実行したいのです。
ヒアドキュメントで
$text = <<<_HTML_
<html>
<body>
<? echo "テスト" ?>
</body>
</html>
_HTML_;
eval($text);
としてみたのですが、evalはPHP文のみみたいですね・・・。
525 :
nobodyさん :2007/09/19(水) 14:56:09 ID:DH/EOPt7
>>524 やろうとしている事がアホすぎるってのは理解して、尚それをやろうとしてるの?
それとも、やろうとしてることがアホだって理解してないの?
527 :
nobodyさん :2007/09/19(水) 14:58:33 ID:VHjt1ihL
>>524 はぁはぁ、つまりユーザーアップロードのテンプレートを使わせたいわけだろ。
アップロード時に検査して問題がなければPHPとして置き換えたらいいでしょ。
それが嫌なら毎回置き換えろ。
528 :
nobodyさん :2007/09/19(水) 14:59:54 ID:ywTkCFki
>>526 よく考えたらそれでよかったです・・・
有難うございましたorz
PECLってペックルかとオモテたらピックルだったのね。
ピクルかと思ってた
俺はレガートにピークルってよんでたぜ
533 :
nobodyさん :2007/09/19(水) 15:44:14 ID:ywTkCFki
$hogehoge = "あああ"; $test = "example.com"; $2ch = "まろゆき"; function Test(){ global $hogehoge; global $test; global $2ch; echo $hogehoge; echo $test; echo $2ch; } Test(); 外部の変数を取り込むにはglobalが必要ですが、 上記の場合では、 global $hogehoge; global $test; global $2ch; としなくてはいけないですが、 変数を全て取り込むような宣言はありませんか?
534 :
nobodyさん :2007/09/19(水) 15:48:17 ID:VHjt1ihL
$GLOBALSとか?
535 :
nobodyさん :2007/09/19(水) 15:52:00 ID:DH/EOPt7
>>533 何がしたいのかよくわからないが、引数で配列にでもして渡せば?
グローバル変数なんて使うなよ・・・
perl慣れした人だとPHPは違和感あるかも
Perl慣れした人がPHPに違和感感じなかったらPHPは何なんだよ
つまりは $GLOBALS[hogehoge] = "あああ"; $GLOBALS[test] = "example.com"; $GLOBALS[2ch] = "まろゆき"; function Test(){ global $GLOBALS; というわけだよ っうか global $hogehoge,$test,$2ch; でよくね? これで20個渡したりする場合もあるよ?
>global $GLOBALS; ( д) ゚ ゚
>>539 なんだそりゃ・・・
$hogehoge = "あああ";
$test = "example.com";
$2ch = "まろゆき";
function Test()
{
echo $GLOBALS['hogehoge'];
echo $GLOBALS['test'];
echo $GLOBALS['2ch'];
}
用途がわからんから何ともいえんがこれでいいだろ・・・ class ex { private $hogehoge = "あああ"; private $test = "example.com"; private $ch = "まろゆき"; public function ex_print(){ echo $this->hogehoge; echo $this->test; echo $this->ch; } } $a = new ex(); $a->ex_print(); もしくは $a = array('hogehoge'=>'あああ','test'=>'example.com','2ch'=>'まろゆき'); test($a); function test($output_array){ foreach( $output_array as $val ){ echo $val; } }
仕事中のおまいらに質問 $hogehoge['aaa'] $hogehoge[aaa] ''って使ってる派? 使わない派? どっちが多いのかな
>>546 俺は使ってる
たしか、使わないと変数としての「aaa」かどうか判断するために時間かかるって聞いたぞ
使わないとか意味がわかんねーよ、使わないでできるのかよ、って思ってやってみたらできたけどNoticeでるぞ
>>546 明示的を重視して使ってる。(noticeもエラー扱いだし)
うちは’(シングルクォート)だけど、
’(シングルクォート)と”(ダブルクォート)だとどっち使ってる人が多いのかな?
>>550 基本的にはシングル、用途によってダブル
つうかさ、グローバル変数の使い方なんてバッドノウハウもいいとこ
>>550 基本的にシングル。ダブルは滅多に使わない。
$foo[bar]は古いスクリプトに残してるだけで使うなボケって、 PHPマニュアルさんがファビョってたから $foo['bar']つかう。
>>552 グローバル変数使う奴なんて馬にけられて死ねばいい
だけど、自作フレームワークにsmarty組み込む時に、
一々assignするのがめんどうでGLOBALSの中身全部assignしてしまった俺も死ね
クオーテーション付けないと定数として解釈されるんじゃないのか?
$foo = array('bar'=>1, 'boo'=>2); echo $foo[bar]; define('bar', "boo"); echo $foo[bar];
>>556 >下位互換性の維持のため、未定義の定数は同じ名前の文字列に自動的に変換されます。
PHPは地獄だぜヒャッホー
グローバル変数が何でそんなに嫌われているのか PHP初心者のおれにもわかるように説明して下さい エロイ人
>>558 今色々試してみたけど、何この糞仕様。
PHPなんてなくなったほうがいいんじゃない・・
>>559 グローバル変数は、ご存知のとおり適用範囲が必要以上に大きくなってしまう。
例えば、レンタルサーバーの場合、一人の住民がグローバル変数の値を変えると、
その変数を使っているレンタルサーバー内の住民の変数が全て変わってしまう。
そういう事情があって、使わない方がいいというより使ってはいけない。
>>561 むちゃくちゃ言ってるな、そんな環境があったら怖いわ!。
久しぶりにスレが熱い気がス
568 :
nobodyさん :2007/09/19(水) 17:32:51 ID:DH/EOPt7
>>559 10ファイルくらいのスクリプトをグローバル変数だけで書いてみな。
意味がわかるだろ
>>559 僕が、globalを嫌ってる理由はね。
理由1 ソースを追っかけにくい
どこで変数の値が変わるか分からないので、
いちいち全体を追っかけないといけない。
モジュールが増えれば増えるほど困難になる。
理由2 多人数での開発が難しい
適用範囲が広いってことは、変数名がぶつかったり
途中で違うものになったりして結合時などに大変なことになる。
理由3 昔の自分が書いたソースは意味不明w
理由1とほぼ同じ。
'' についてmicrotimeで各5回づつ検証してみたぞ $hogehoge['1'] = "ほげほげほげお"; for($i=0;$i<300000;$i++){ print $hogehoge['1']; } $hogehoge["1"] = 1.14〜1.22秒 $hogehoge['1'] = 1.22〜1.33秒 $hogehoge[1] = 1.11〜1.2秒 結論 30万回ループで差がない=変わらない。
文字列定数でやってみておくれ
$hogehoge[ほげほげほげお] = "ほげほげほげお"; for($i=0;$i<300000;$i++){ print $hogehoge[ほげほげほげお]; } $hogehoge["ほげほげほげお"] = 1.2秒 $hogehoge['ほげほげほげお'] = 1.2秒 $hogehoge[ほげほげほげお] = 1.6〜1.7秒 差はでたが微妙すぎる
PHPでUnicodeの正規化する方法ない? NFCとかNFDとか
ここでPHP今日の一句。 「Noticeを、許したタイポで、地獄見る」 define('type', false); if(typo){ echo "PHP「罠にかかったな小僧!」\n"; };
POSTで送信したら''がクオートするけどさ 皆は自動でクオートするように設定してる? 自動にすると、なんかこの機能っていろんな意味で不便じゃね?
>>576 自動ONでやってる。
"の送信が\"になるのは
$_POST[a] = eregi_replace("[\]", "", $_POST[a]);
で回避してる。
>>577 何でstripcslashes使わないの?
>>576 マジッククォートに左右されないように書いてる。
基本はOFF。
582 :
577 :2007/09/19(水) 18:17:29 ID:???
stripcslashesってn・・・ あーーー!!!!
\n(改行)が連続 + $(末尾) の正規表現はどう書くか教えて下さい。 ---------- ... ... 文章この行まで(以下空白部分を削除したい) -----------
584 :
583 :2007/09/19(水) 18:27:08 ID:???
ID出していないので自己解決しました
ID以前にPHP関係ねぇ
$test['abc'] = 'def'; $begin = microtime(true); for($i=0; $i<=300000; $i++){ if($test['abc'] == 'ghi'); } echo microtime(true) - $begin . "\n"; $begin = microtime(true); for($i=0; $i<=300000; $i++){ if($test["abc"] == 'ghi'); } echo microtime(true) - $begin . "\n"; $aaa = microtime(true); for($i=0; $i<=300000; $i++){ if($test[abc] == 'ghi'); } echo microtime(true) - $begin . "\n"; 結果 0.054291009903 0.0549669265747 0.413056850433 相当遅い。
↑間違えた$aaaは$beginね あとこういうのやってみた。 $test['abc'] = 'def'; $key = 'abc'; $y = 'y'; for($i=0; $i<=300000; $i++){ if($test[$key] == 'ghi'); } for($i=0; $i<=300000; $i++){ if($test["$key"] == 'ghi'); } for($i=0; $i<=300000; $i++){ if($test["ke$y"] == 'ghi'); } for($i=0; $i<=300000; $i++){ if($test['ke'.$y] == 'ghi'); } 0.0560829639435 0.0782399177551 0.2595911026 0.241644859314 やはり差が出る。
微妙すぎるよねぇ
30万箇所書いたとしても0.2秒という人間の感覚ではわかるようなわからないような差か
動作環境書かなきゃ意味梨
>>589 相当な差だろ
人間の感覚で云々言ってるうちは気にせずプログラムしてて良いと思うが
ループ中で使った場合なんかに簡単に0.05〜0.1秒程度の
レスポンス差を生んでしまうならそれはかなり大きな問題だと思うがな。
体感で分からんとか言ってるやつは、その0.1秒の差が
サーバーが対応可能な秒間アクセス数を確実に決定付けるという
高負荷サーバーのチューニングとかやったことないレベルの人だろう。
>>586 1番遅い結果が出た $test[abc] はPHPの処理でかなり遅い
シンボルの検索をやるのが致命傷なんだろう。
リファレンス使った参照渡しとかもこれが原因で処理遅いんだよな。
>>587 > for($i=0; $i<=300000; $i++){ if($test["ke$y"] == 'ghi'); }
> for($i=0; $i<=300000; $i++){ if($test['ke'.$y] == 'ghi'); }
この辺が遅いのは内部的にメモリのリアロケーションが発生するせいかね。
>>592 チューニングとはボトルネックになっているとわかってから
効果がある場所にかぎってやるもの。
すべての箇所でやるもんじゃない。
>高負荷サーバーのチューニングとかやったことないレベルの人だろう。 こういうこと言う奴はどうしようもないよな その程度の負荷をチューニングするくらいならもっと元気のいいCPUにかえたほうがスマートなやり方 次にアルゴリズムとかデータ構造見直すとかした後の話だろ、カーネル再構築とか微妙なチューニング云々は
ワロス
597 :
nobodyさん :2007/09/19(水) 20:47:18 ID:6jpSclPO
ini_set("magic_quotes_gpc", 0); で、magic_quote_gpcがオフにならないのですが、何が原因なのでしょうか・・・。
598 :
597 :2007/09/19(水) 20:53:07 ID:6jpSclPO
関係ないですが、 文字コードを変換した場合にも勝手にクオート入るんですね・・・。 厄介ですorz
imagegif($image,"test.gif")とやってもファイルに保存されずにブラウザに出力されるんだけど なんでや
>>599 boolで返ってくるからリソースを別の所で吐いてるんでしょ
>>594 ボトルネックを最優先で改善するのは当然の話だが
全てのコードが満遍なく遅いってのはそれ以前の糞プログラム。
チューニングの余地すらない。全部書き直せ。
>>600 ゴメン単にパーミッション設定してないだけだった
603 :
nobodyさん :2007/09/19(水) 21:32:47 ID:+/kMM8g5
質問です。 OSはRedHat、verは4.4.6です(lolipopのレンサバです) <?php if($_POST['mail'] == 1 && strlen($_POST['message']) != mb_strlen($_POST['message'])){ mb_language("Ja"); mb_internal_encoding("SJIS"); $mailto = "自分のアドレス"; $subject = "件名"; $message = $_POST['message']; $host = getenv("REMOTE_HOST"); $addr = getenv("REMOTE_ADDR"); if(!$host){ $host = gethostbyaddr($addr); } $ua = getenv("HTTP_USER_AGENT"); $message = $message . "\n\n--------------------------------------------------\n" . $host . "\n" . $ua; mb_send_mail($mailto, $subject, $message); } ?> 続きます。
604 :
603 :2007/09/19(水) 21:33:38 ID:+/kMM8g5
html側は <form action="スクリプトのパス" method="POST"> <input type="text" name="message"> <input type="submit" name="submit" value="送信する"> <input type="hidden" name="mail" value="1"> </form> 1行目は文字数とバイト数が一緒なら半角のみと判断して送信しないようにしています。 このようなスクリプトを作成し、フォームからメールを送信しました。 すると、「ああ」とか「あああ」で送信できないのに「いい」とか「あいあ」だと送信できます。 これはどういう現象なのでしょうか?
答えられていない質問がスルーされるのはここの決まりですか?
どの質問を書き込んだのかおじさんに言ってみ
誰の義務になるの? 質問も自由。(マルチとスレ違いはだめだが) 答えるのも自由。 じゃないのか?
>>604 なんか2行目でmb_languageを今更jaに指定してるけど、
1行目の段階ではこれはどういう設定になってるの?
文字コードが変な解釈されてる気がするけど。
答えられない人は黙っててください
>>603 PHPは、送られてきた文字列のエンコードを知らないわけだから、
それなのにmb_strlenしてもデフォの内部エンコードが使われて、正しくないエンコードで計算されて期待した値にならない
612 :
603 :2007/09/19(水) 23:17:34 ID:+/kMM8g5
文字コードがおかしいということで mb_language("Ja"); mb_internal_encoding("SJIS"); の位置を先頭にしたら動きました。ありがとうございました。
>>612 その2行を先頭に持ってきたくらいじゃ根本的な問題解決にならんよ
期待している"SJIS"以外が送られてきたら不具合出るんじゃね?
614 :
nobodyさん :2007/09/20(木) 00:25:09 ID:TpeEYAA9
>>484 亀レスすいません。
あの後試してみた所、ほとんどソースをまっさらにすると、すべてtrueとなりました。
どうも自分が改造する前のオリジナルのソースでセッションが貼られてるようです(←これが本当かどうかも怪しいですが)。
それに対し、自分も別にセッションを貼ったため問題が出たのかもと思いました。
そう思ったのは
>>474 で書いた print_r($_SESSION); の結果が、
↓のように、一度の print_r($_SESSION); 内で timing1 や timing2 が2回実行されていたからです
(今手元に正確な情報がないのでこんな感じだったということで)。
Array ( (略)=> Array ( [action] => process [timing1] => あ [timing2] => い (略) => Array ( [timing1] => ) [timing2] => い (略) => )
そして、timing1 が一度「あ」が入力された後、空文字?で上書きされてしまっていた為、問題がおきていたのかもと思いました。
もっとも、まっさらにしたソースでは使い物にならないので、既存のソースを解析する問題は残ったままとなりますが・・・。
ともあれアドバイスいただいた皆さん、どうもありがとうございます。
$_POST[a] = eregi_replace("/(\n)+$/", "", $_POST[a]); 動かないんですが・・・
616 :
603 :2007/09/20(木) 01:01:49 ID:ROB03O5/
>>613 フォームのあるhtmlはShift-JISで宣言してあるのですがそれでもダメでしょうか?
>>615 正規表現を ./ で括るのはpreg系だけだよ
>>617 ご指摘ありがとうございます
でもeregi_replace("(\n)+$"も動きません
とりあえずID出そうな。
620 :
山田真一 :2007/09/20(木) 10:38:42 ID:RRR2JFqm
最近WEBの仕事を始めた者ですが自社のHPのPHPのページが Warning: main(db/.php): failed to open stream: No such file or directory in /home/webmaster/public_html/link/yomi.php on line 21 Fatal error: main(): Failed opening required 'db/.php' (include_path='.:') in /home/webmaster/public_html/link/yomi.php on line 21 となって表示されません。 一応21行目を確認したら require("db/$cfg[db_sql].php"); となっていました。 誰かわかる方教えてもらえませんか?
$cfg[db_sql]が設定されていない
自社のプログラムのトラブルをここで聞くか…
624 :
nobodyさん :2007/09/20(木) 10:51:06 ID:RRR2JFqm
>621 具体的にはどうすればいいんですか? >622 新人だけど一人でやってます・・・
会社でyomi-searchを使ってるのはなぜ?
627 :
nobodyさん :2007/09/20(木) 11:55:42 ID:IWhkcLGD
>>620 そんな会社普通はすぐやめる。
webの会社でhpが表示されないとかありえない。
車売ってるくせにエンジン直せないのと同じこと。
いや、Webの会社とは一言も言ってないけどな。 新人1人しかいない時点でそりゃWebの会社じゃないだろ。
629 :
nobodyさん :2007/09/20(木) 12:40:38 ID:IWhkcLGD
最近WEBの仕事を始めた者が働いてる会社が八百屋なわけがない。
631 :
620 :2007/09/20(木) 12:59:19 ID:RRR2JFqm
>626 ありがとうございます^^早速見てみますね >627 会社はWeb系ではないです^^;
633 :
nobodyさん :2007/09/20(木) 13:59:56 ID:KlmMrt1+
マジッククオートを自動で付加しているのですが、 POSTで取得したときに「ソ」や「表」に「\」が入りますよね。 これはどの時点での文字化けを防いでいるのでしょうか? POSTで取得したデータを全てクオート解除しても大丈夫なのでしょうか?
634 :
nobodyさん :2007/09/20(木) 17:01:09 ID:KlmMrt1+
誰もいなすwww preg_replace_callbackってPHP5.0.4と5.1.1で動き違うんだけど 5.1.1でバグ発生してるとかないよな?
>>633 ホントだ
なんでこんな余計なのが付加してるの?
636 :
635 :2007/09/20(木) 17:24:46 ID:???
よかった解決した php.iniっての作ってmagic_quotes_gpc = Off で再起動だね、、憶えておくよ
こらこらSJISの仕様で問題あるからそうなってんだよ
638 :
nobodyさん :2007/09/20(木) 17:45:37 ID:QNx3pq8z
>>636 勝手に解決するな
ini_setで解決しないんだよ
>>634 なんでそんな古いバージョンのを使うの?
>>639 レンタルサーバーに入っているからだろ?
>>638 目に余るレスを見かけたので続きのほうは以下のスレへ訪問よろ
くだらない質問でもど偉そうに聞いていいスレ
ヤフーでググれカス
答えられないやつはだまっとれ
645 :
nobodyさん :2007/09/20(木) 20:57:35 ID:bTS/b7yb
PHPとMySQLを使ってツリー構造をHTMLで表示させたいんですけど 一応、DBにカテゴリ名、ID、親IDとして保存させてるんですけど 表示させるときにどのようにしたらいいのかわからないのですが どのようにしたらできますか?
一応じゃないスキーマを考える
647 :
645 :2007/09/20(木) 21:05:10 ID:bTS/b7yb
一応、親ノード取得してその親にポインタしてる子ノードを 探して・・ってやってるんですがすべてのノード表示させるようにできないんです いくらノードを追加してもすべてのノードを表示させる方法ってないですか?
一応じゃないアルゴリズムを設計する
649 :
645 :2007/09/20(木) 21:08:07 ID:bTS/b7yb
どのようにして設計したらいいのですか? 一応、5日ぐらい考えたのですが僕の脳みそじゃ解決しません
わかんねーやつはレスすんな
どんだけ〜
全部じゃなきゃどこまで表示出来てんだよ 原因の切り分けをする努力を放棄してたら先に進むわけなし
どんだけ〜
654 :
645 :2007/09/20(木) 21:47:26 ID:bTS/b7yb
$sql = "SELECT * FROM `CATEGORIES` WHERE `親ノード番号` = {$親ノード番号} "; $parent_nodes_result = mysql_query($sql); while ($row = mysql_fetch_array($parent_nodes_result, MYSQL_ASSOC)) { echo "<li>{$row['ノード名']}\n<ul>\n"; $sql = "SELECT * FROM `CATEGORIES` WHERE `親ノード番号` = {$row['番号']} "; $child_nodes_result = mysql_query($sql); while ($row = mysql_fetch_array($child_nodes_result, MYSQL_ASSOC)) { echo "<li>{$row['ノード名']}</li>\n"; } echo "</ul>\n</li>\n"; } こんな感じなんですけど これだと2階層までしか取得できないんです
もう一個付け加えれば3階層までできるじゃん!
656 :
645 :2007/09/20(木) 21:53:25 ID:bTS/b7yb
>>655 それがもっと多い階段まであった場合に、すごいソースになってしまうので
なんかwhileを使って出来ないかと思って考えてるんですがわからなくて
>>645 あなたみたいな人はフレームワークを使えばいい
思い通りの動作をやってくれるでしょう
線形で増えていくだけだから大した問題ではないよ。 すごいソースで何が悪い。見た目なんか気にするな。
660 :
645 :2007/09/20(木) 22:02:48 ID:bTS/b7yb
みなさん返信ありがとうございます
>>654 読んでみます
661 :
645 :2007/09/20(木) 22:03:42 ID:bTS/b7yb
木構造といったら、まず再帰を考えないか普通
どんだけ〜
664 :
nobodyさん :2007/09/20(木) 23:42:57 ID:mjQwk2aW
プログラムで実行される関数がどのファイルで定義されているかを効率的に 探す方法を教えてください。少し規模の大きなプログラムだと見つけるのに 時間がかかってしまします。 エディタの機能になるのでしょうか。もしそうであればそのエディタを 教えてください。
どんだけ〜
functionで検索〜
どんだけ〜
668 :
nobodyさん :2007/09/21(金) 06:54:05 ID:/lN3SBgs
$data = array("$data","$data2","$data3"); fputs($fp, implode("", $data)); $data = $data.$data2.$data3; fputs($fp, $data); どちらが負荷が低くなりますか?
>>668 上は関数呼び出しが2回多いから下のほうがいい気がする
phpの標準関数を自分の作った関数で置き換えって出来ないですよね?
できる
ありがとう。自分で置き換えてみます
675 :
nobodyさん :2007/09/21(金) 14:25:51 ID:5JzPFtpG
phpでxml文書のノード名と属性の値を指定して部分的にデータを取得するには どうすればよいですか?
>>675 SimpleXMLとかpearのXML_Unserializerとかを使えば良いんじゃ
677 :
nobodyさん :2007/09/21(金) 14:41:31 ID:QV6ADNlt
PEARのMDB2に乗り換えようとしているんですが、 require_onceしただけでStrict Standardsエラーがたくさん出るのは何故? エラーレベルを高くしてるから? どなたかよろしくお願いします。
678 :
nobodyさん :2007/09/21(金) 14:49:28 ID:fJKnQpQm
php5でpear使うと吐きまくるよ。 だから俺はpear使わない。 error_repoting E_STRICT とかでぐぐればエラー出さない方法はわかるとおもうけど。 厳密にはエラーっていうかワーニングか、動くしな ちなみにオブジェクトをリファレンス渡ししたり、クラスのオーバーロードすると出る
>>677 そう
実際使うときはwarningあたりかE_ALLでログに全部書き出しだろうから
気にする必要ない
680 :
nobodyさん :2007/09/21(金) 14:56:05 ID:QV6ADNlt
>>678-679 ありがとうございます。
開発レベルではStrictで行いたいのですが、MDB2だけのエラーを非表示にできないんですか?
あるいはリファレンス渡ししない方法などはないのでしょうか。
681 :
nobodyさん :2007/09/21(金) 14:59:59 ID:5JzPFtpG
>>676 SimpleXMLの場合での取得方法がわからないんです。
<tag1 id="1" >
<tag2 >a</tag2>
<tag2 >b</tag2>
<tag2 >c</tag2>
<tag1 id="2" >
<tag2 >d</tag2>
<tag2 >e</tag2>
<tag2 >f</tag2>
の場合に<tag1 id="1" >のデータ(a,b,c)を取り出したいんですが
この場合SimpleXMLでだとどうすればよいのですか?
>>681 オブジェクトとして返されるから
それを取得するような感じでいいんじゃね?
683 :
nobodyさん :2007/09/21(金) 15:12:23 ID:5JzPFtpG
>>682 すんません、初心者でXMLのデータ処理をするのが初めてなので
取得方法自体がわからないんです。
どう書けばよいの?
684 :
nobodyさん :2007/09/21(金) 15:12:57 ID:fJKnQpQm
>>680 pearの
$a =& new ex();
って書き方の「=&」ここの部分を全部「=」に直せば問題は解決さ、どれくらいあるかわからないけどw
もしくはpearモジュル使う部分のファイルにだけerror_reporting(E_ALL);とか書いておけばいいんじゃねーの?
685 :
nobodyさん :2007/09/21(金) 15:19:00 ID:QV6ADNlt
>>684 後者の方法で頑張ります^^;
ありがとうございます。
>>687 単純に =& が問題なわけじゃないから全部置換するのはどうかと思うだよね〜
オブジェクトのリファレンス参照時のみ限定だから、それ以外は置換しないほうがいいし
じゃあ、 =& new のとこ置換すればすむのかな・・・
689 :
nobodyさん :2007/09/21(金) 15:52:52 ID:oG3isgYA
$fp = fopen($path, 'r+'); でファイルを読み込み・上書き(更新・一行削除)をしているのですが 上書き前のデータより小さいデータを保存する際最終部にごみがつき 困っています 保存直前にtrimしたりもしましたがだめでした。 このごみを何とかする方法を教えてもらえませんか?
>>689 ごみって何だよ、具体的に書け。そんなんでわかったらエスパーだっつーの
あと、環境と文字コードも書け
あとfputs使ってるんだと思うがそこのコードと書き込む内容生成してるとこも書け。
692 :
689 :2007/09/21(金) 16:04:48 ID:oG3isgYA
自己解決
どのようにだよ。まじ最悪な質問者だな
694 :
nobodyさん :2007/09/21(金) 16:36:47 ID:OocRHBzD
phpBB2の質問はここでいいですか?専用スレが過疎ってるようで反応がありません。
>>689 みたいなのになったことあるな
1:aaaa
2:bbbbb
3:ccccc
みたいな3行のテキストファイルを加工しようと全部読み込んで、
1・3行目だけを書き出したら実際のファイルが
1:aaaa
3:ccccc
3:ccccc
みたいになるってことだろ?(3行目の3:cccccがごみ)
>>694 ここ数日中に色々なところで
phpBBでrss配信したいんだゴルァ
ってのがマルチされてるけど、それじゃないなら答えない事もない
697 :
nobodyさん :2007/09/21(金) 16:54:42 ID:OocRHBzD
>>696 マルチなんですけどよかったら教えてください。どこいっても反応がないんですよね。
>>697 rss生成するスクリプト作るなりして
phpbbで投稿あった時に走らせるようにしたらいいやん
699 :
nobodyさん :2007/09/21(金) 17:10:36 ID:OocRHBzD
>>698 どうもありがとうございます。
そういうスクリプトをつくれないので、出来合いでなにか
そういうものがないかなと探しているのですが、どうもしっくりくるものが
ありません。どこかそういうスクリプトを公開してるサイトなどないもので
しょうか?
701 :
nobodyさん :2007/09/21(金) 17:21:40 ID:OocRHBzD
>>693 解決法はftruncate( )しかないだろう
>>701 少しずつ段階的に解決してけばいい。
それすら怠る怠け者なら自力で探してくるしかない。
>>701 これ、お前の母親だろ
近所の住民を「殺すぞ」などと脅したとして、大阪府警吹田署は20日までに、
暴力行為等処罰法違反の疑いで、吹田市片山町、主婦井手真知子容疑者(49)を逮捕した。
嫌がらせは15年ほど前から続き、引っ越した住民もいたという。
井手容疑者は「わたしが被害者だ」と容疑を否認している。
調べでは、井手容疑者は8月25日から9月2日にかけ、近所の男女3人に対し、家の壁をたたいたり、「なめとんのか。殺すぞ」などと脅したりした疑い。
706 :
nobodyさん :2007/09/21(金) 22:14:49 ID:QV6ADNlt
MDB2のプリペアドステートメントした後に、executeすると、 Call to undefined function: MDB2_Driver_mysql::execute() となります。MDB2のmysqlドライバはインストール済みです。 ソースは以下です。 require_once 'MDB2.php'; $dsn = array(dsnの指定); // 省略 $mdb2 =& MDB2::connect($dsn); $sth = $mdb2->prepare("INSERT INTO board VALUES (?, ?, ?, ?, ?)"); $data = array(データ * 5); // 省略 $mdb2->execute($sth, $data); $mdb2->disconnect(); ちゃんとprepare関数は実行されてるみたいなんです。 どなたかよろしくお願いします。
708 :
706 :2007/09/21(金) 22:20:19 ID:QV6ADNlt
>>707 PEARのマニュアルを主に参考にしましたが、理解不足のようです。
710 :
706 :2007/09/21(金) 22:34:10 ID:QV6ADNlt
711 :
nobodyさん :2007/09/21(金) 22:56:05 ID:n9Z4wW7K
PHP 5.2.4 (cli) @ winXPでshell_execを用い外部コマンドラインアプリを起動したいのですが、うまくいきません。 例えば7zでファイルを解凍するとき、 shell_exec('"c:\program files\7-zip\7z.exe"'); は起動しusage他を返してくれるのですが、 shell_exec('"c:\program files\7-zip\7z.exe" x "c:\program files\7-zip\archive.zip"'); などにすると起動せずPHPのエラーも発生しません。 (プロンプトに直打ちで起動するのは確認してます) どうやら引数に”が入るとダメみたいですが解決法はありますか?
ありまsn
713 :
nobodyさん :2007/09/21(金) 23:22:41 ID:QV6ADNlt
たびたびすみません・・・ PHPからのデータをデータベースに格納するとき、文字化けしてしまいます。 php.iniのenternal_encodingはutf-8、mysqlのdefault-charsetはutf8、データベースの照合順序はutf8_general_ciとなっています。 この解決方法として、データベースに格納するときに、 SET NAMES utf-8; というクエリを発行すると良いということが分かったのですが、そのほかに方法はありますか? よろしくお願いします。
>>713 FWなんかだと回避方法が色々あるかもしれんが
べた書きでSQLのバージョンがいくつか忘れたがある以上のバージョンだとそれしかない。
716 :
nobodyさん :2007/09/21(金) 23:47:48 ID:QV6ADNlt
>>714-715 ありがとうございます。
文字コード問題、難しいですね。
とりあえず今は開発段階なので、自分のサーバのMySQLの[mysqld]のところに、
skip-character-set-client-handshake
を記述して一時退避と思います。
717 :
nobodyさん :2007/09/22(土) 06:08:18 ID:+WbXSWsd
URLに日本語をそのまま流すとな?
mb_convert_encodingを使うと何故か変なところに変な文字が挿入されることがあります。 EUC-JPをUTF-8に変換すると、 「プロバイダー」が「プロ ff8 バイダー」になったり、ならなかったり、 「退会」が「退 198 会」や「退 ffa 会」になったり、ならなかったり… これは既知のバグなのでしょうか?何か設定がおかしいのでしょうか? 環境はPHP4.4.7cliで、 mb_regex_encoding('UTF-8'); mb_internal_encoding('UTF-8'); mb_substitute_character(63); を指定しています。スクリプトの文字コードはUTF-8です。
720 :
nobodyさん :2007/09/22(土) 07:13:25 ID:v/rJVSv7
age忘れました。
既知のバグです
722 :
nobodyさん :2007/09/22(土) 07:24:14 ID:v/rJVSv7
そうですか… 回避方法とかは無いのでしょうか?
ありません
724 :
nobodyさん :2007/09/22(土) 07:30:04 ID:v/rJVSv7
そうですか。 ちょっと投げやりすぎる回答が気になるので、ソースをお願いします。
726 :
nobodyさん :2007/09/22(土) 07:38:06 ID:v/rJVSv7
大丈夫ですか?
ググレカス
解らないなら答えなけらばいいのにとんだカスだな
>>719 fputs で HTTP/1.1 使ってるのが原因でした。
HTTP/1.0 にして解決しました。ありがとうございました。
>>719 もとがえうcとわかっているならえうcからうtf−8としていすればよい、
>>724 投げやりすぎる質問するならそんくらい自分で探せ
732 :
nobodyさん :2007/09/22(土) 14:32:49 ID:RkVrJ9bm
phpで繋がっているMySQLのテーブル情報を見やすく出力するいい方法教えてください
734 :
733 :2007/09/22(土) 14:36:28 ID:???
自己解決しました
737 :
nobodyさん :2007/09/22(土) 16:34:13 ID:xEVbhTq3
>>732 これが違法ならGoogleとかのキャッシュや
WEB翻訳サービスも違法になるんじゃないか?
当事者同士で話し合うしか無いと思う。
そのサイトからのアクセスをはじけばいいだけのような気も
739 :
nobodyさん :2007/09/22(土) 16:44:36 ID:6iih+fTY
PHPでXHTMLを記述しても、ブラウザにうまく出力されないんですが どうすればうまく出力されますか? <?php $str=<<<XHTML //XHTMLの記述 XHTML; echo $str; ?> ではだめで、単にファイル名を.xmlとして記述すると 今度はPHPが読み込まれません。 サーバーのMIMEタイプとかの問題なんでしょうか?
>>739 >サーバーのMIMEタイプとかの問題なんでしょうか?
どちらかというと、雅子が男子を産もうとしない方の問題。
phpの質問なんだけど 検索してもよくわからなかったので誰か教えてくれ。 任意の文字列を2分割にsplitして出来た2つの文字列を それぞれ連想配列のキーと値に入れたいんだけどどうやるの? 下みたいにやると普通の配列(要素数2)で保存されてしまうのです $foo = split('/', $hoge, 2);
742 :
nobodyさん :2007/09/22(土) 18:14:49 ID:6iih+fTY
配列を別に用意するしかない気がするんですが。 $arr[$foo[0]]=$foo[1];
743 :
nobodyさん :2007/09/22(土) 18:19:40 ID:Jfl+L6xk
>>742 そうですか('A`)ありがとうございます
ではsplitした要素の片方だけを 変数に格納せず そのまま取り出すことは可能でしょうか
perlだと
split('/', hoge, 2)[1]
みたいなことが出来たんですが phpはできないみたいで・・
関数作れよ
745 :
717 :2007/09/22(土) 20:49:14 ID:+WbXSWsd
度々すみません。
wikipediaではURLに日本語が入っているのですがこんなことをxreaでできますでしょうか?
http://example.com/ほげほげ これを内部的にswitchで読み込むHTMLを変換して表示させたいのです。
mod_rewriteで/以下を?id=に
switch($_GET['id']) {
case 'ほげほげ':
readfile(hogehoge.html);
break;
・・・・
}
>>746 お前俺が何も知らないからって威張り腐っていんじぇねーぞ!!!!!!!
>>743 phpは配列にしたら一度変数に格納しないとエラーになるですよ
だから他の言語みたくsplit(....)[0]と一回で出来ないのが難点
>>748 お前がキモいしウザいんだよ!!!市ね!!!!!!!!
>>749 他の言語っつーか、そんなことできるPerlの方が言語としては気持ち悪いんだけどな。
PHPの仕様はごくごく普通ですよ。
>>751 >PHPの仕様はごくごく普通
えー・・・
Java使いからしたらPHPはかなり気持ち悪いよ
Cでもできるのに…
とあるPHPスクリプトのソース見たら出てきたんですが、 safenameっていう関数か変数か知らないですけど、ありますか? あ あ あ だと あ_あ_あ になるみたいなんですが 他のスクリプトでも使ってみようと思い試したら Fatal errorが出ました>< ごきようじゅ下さい お願いします><
あるかないかくらいマニュアル読めばわかるだろ
758 :
754 :2007/09/22(土) 23:17:50 ID:JPmP1x2o
いち行で言うと、半角スペースを _ に変換したいです>< お願いします ↑ 読み方しりません><
str_replace
strtr
761 :
754 :2007/09/22(土) 23:43:47 ID:???
762 :
nobodyさん :2007/09/23(日) 10:48:42 ID:8QFSYDAR
外部からクラス内に定義した変数に、インスタンス化せず静的にアクセスする方法はありますか? class A { public $a = 'hoge'; } $b = ○○○; // Aの$aを取得したい
A::$aでアクセスできたようなできなかったような publicって書いてるって事はphp5として考えるけど 5ならconstにするかメソッド作ってカプセル化すればいいのに
764 :
762 :2007/09/23(日) 12:13:07 ID:8QFSYDAR
>>763 ご回答ありがとうございます。
Aが変数(AだったりBだったり)なので、class_get_varsした後に取り出しました。
class A { public static $a = 'hoge'; } echo A::$a; ~~~~~
767 :
nobodyさん :2007/09/23(日) 13:22:33 ID:ByDzcAVc
if ($a === true) { echo "正解"; } これ書き方あってますよね? ===を使う場合、trueを"で囲むと文字列になるから 囲まないで書くべきですよね?
>>767 == は、値(暗黙の変換含む)の一致で true になる
=== は、値と型両方が一致した場合のみ true になる
$a = 1;
if ($a == true) // 暗黙の変換により true になる
if ($a === true) // intとboolで型が違う為 false になる
769 :
nobodyさん :2007/09/23(日) 13:38:01 ID:x8KAGuvr
.=って何?=と違うの?
>>769 それすら自分で調べようとしなかったらもはや末期だな
くだらねえ質問なんだからいいだろ
772 :
743 :2007/09/23(日) 14:26:13 ID:???
>>752 言えてる
javaとperlがメインだったけど perlは相当気持ち悪い でも適当でもOKだから仕事以外で便利
phpも相当気持ち悪いが どうせ気持ち悪いならperl並に徹底してくれないと困る
文字列の連結に.を使うでしょ? だから.=は+=とおんなじ意味 $str = "hoge"; $str .= "huga"; echo $str; hogehuga
775 :
nobodyさん :2007/09/23(日) 16:23:22 ID:giEVgmm5
phpinfo()の項目にあるVirtual Directory Supportって何? どうやったらenableになるのかわからなくて気持ち悪い・・・
pearのmdb2を使って勉強してるんだけど、pearのマニュアルや他のサイト見てると queryAll等の結果セットをfree()で解放してあげましょうとなっています。 queryAllをした直後に結果セットの内容を使うのであれば、すぐにfree()してしまえば 良いと思うんだけど、その結果セットをその後の処理でも使いまわす場合は、どうするのが 一番良いのでしょうか? 今考えてるのは、結果セットを新しく作った配列にコピー後に、結果セットはfree()してしまおうかと 思っているのですが、何となく無駄な事をやってる気がして・・・。
779 :
775 :2007/09/23(日) 17:42:36 ID:giEVgmm5
>>777 スマン、書き込む前に必死にググッたりマニュアル読んでみたり
関連リンク回ったりしてみたんだが見つからなかったんだ。
もう少し調べてみるわ。ありがとう。
780 :
nobodyさん :2007/09/23(日) 18:04:44 ID:20rGQLTi
文字列操作で四苦八苦しています。 複数の文字列の共通項を取り出す処理をしたいのですが、 そのような便利な関数がありますでしょうか? 例 $a = "テレビを昨日見た。"; $b = "昨日テレビを見た。"; $c = "テレビを明日見る。"; $result = function_X($a, $b, $c); echo $result; $resultが$a、$b、$cの共通項の「テレビを」が出力されると、 いいのですが、substrとかで一文字ずつの総当りの組み合わせで共通項の検査すると、 ものすごい計算量になるので、何とかもっと簡単な方法はないかと悩んでいます。 宜しくお願いします。
つ形態素解析
782 :
nobodyさん :2007/09/23(日) 18:09:03 ID:20rGQLTi
>>781 レスありがとうございます。
形態素解析も考えたのですが、今回は文法レベルで単語分けをする必要がなく、
又英語などや記号も混じってしまうので、機械的に複数変数の共通部分の文字列のみを
取得したいと思っています。
言葉足らずですみません。引き続きよろしくお願いします。
そのような関数はない。文字列関数らへん見て自作すれ。
784 :
nobodyさん :2007/09/23(日) 18:13:29 ID:CMYUgsUj
正規表現で、各文字列について走査すればよい
786 :
nobodyさん :2007/09/23(日) 22:59:17 ID:d1xYr/lj
またわからない perlのtruncateに該当するphpの関数ってありますか?
ググれ
くだ質でググれって言っちゃう奴は、何考えてるんだろうね。 答える気が無いなら、書き込まなきゃいいのに。
>>788 なんでくだ質スレでググれと言っちゃいけないのか詳しく
792 :
nobodyさん :2007/09/23(日) 23:49:44 ID:mTLKY/f7
foreachで↓みたいなテーブルを作成したいのですがうまくいきません。 初歩的な質問で申し訳ないのですが、どなたかご教示願えませんか? よろくしお願いします。 ______________________ | 一段目 | td一 | td二 | td三 | td四 | td五 | | 二段目 | td六 | td七 | td八 | td九 | td十 | | 三段目 | td一 | td二 | td三 | td四 | td五 | | 四段目 | td六 | td七 | td八 | td九 | td十 |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>791 それに関して検索してどういうサイトを見つけろと?
それが示せないようならまともな回答になってない
なにこの流れ? 786=788=791か? くだ質だからなんでも質問すりゃいいって、どんだけユトリなのよ
796 :
nobodyさん :2007/09/24(月) 00:24:55 ID:JxEty0kG
>>794 編集してて遅くなりました。ごめんなさい
こう書いたんですがこれじゃ駄目ですよね…
>>792 みたいな横に長いテーブルを出したいのですが(;´Д`)
echo "<table>";
$table = array (
"一段目" => "td一", "td二", "td三", "td四", "td五",
"二段目" => "td六", "td七", "td八", "td九", "td十",
"三段目" => "td一", "td二", "td三", "td四", "td五",
"四段目" => "td六", "td七", "td八", "td九", "td十"
);
foreach ($table as $key => $value) {
echo "<tr>";
echo "<td>$key</td>";
echo "<td>$value</td>";
echo "</tr>";
}
echo "</table>";
>>796 なんじゃそりゃ。
コード書く前に落ち着いて頭の中で整理してアルゴリズム考えてみ。
798 :
nobodyさん :2007/09/24(月) 00:56:56 ID:Wq/5iUlO
>>796 foreach ($table as $key => $value) {
if(!is_numeric($key)){
echo $tr."<tr>";
echo "<td>$key</td>";
$tr = "</tr>";
}
echo "<td>$value</td>";
}
echo "</tr>";
echo "</table>";
>>796 これって
$table[一段目], $table[0], …$table[二段目], $table[4], …
こういう配列になるわけだろ?何が嬉しいのかわかんない
802 :
796 :2007/09/24(月) 01:55:21 ID:JxEty0kG
>>798 できました!
何が嬉しいのかと言われたら確かにその通りですが(;´Д`)
ありがとうございました。
803 :
798 :2007/09/24(月) 02:10:26 ID:Wq/5iUlO
>>802 上の方で言われてるようにその配列は使い勝手が悪いです。
柔軟性に欠けますから工夫が必要です。
頑張ってください。
>>796 > $table = array (
> "一段目" => "td一", "td二", "td三", "td四", "td五",
> "二段目" => "td六", "td七", "td八", "td九", "td十",
> "三段目" => "td一", "td二", "td三", "td四", "td五",
> "四段目" => "td六", "td七", "td八", "td九", "td十"
> );
これって本当は
$table = array (
"一段目" => array("td一", "td二", "td三", "td四", "td五"),
"二段目" => array("td六", "td七", "td八", "td九", "td十"),
"三段目" => array("td一", "td二", "td三", "td四", "td五"),
"四段目" => array("td六", "td七", "td八", "td九", "td十"),
);
ってしたかったわけじゃないのか?
見た目と構造が全然かみ合ってないそ。
>>804 その構造なら条件分岐がいらないね
printf("<table>\n");
foreach($table as $key => $list){
printf("<tr><td>%s</td>", $key);
foreach($list as $value){
printf("<td>%s</td>", $value);
}
printf("</tr>\n");
}
printf("</table>\n");
>>805 でもそれじゃぁ全部の段が同じ数じゃないと
HTML的に変になるという
まぁそこまで考えんでもいいか・・・
>>806 変にループ条件いじるくらいなら
先に変数側を正規化した方が楽だけどね。
808 :
nobodyさん :2007/09/24(月) 12:43:32 ID:aGF/5enb
$table_names = array ( "0" => "一段目", "1" => "二段目", "2" => "三段目", "3" => "四段目", ); $table_values = array ( "0" => array("td一", "td二", "td三", "td四", "td五"), "1" => array("td六", "td七", "td八", "td九", "td十"), "2" => array("td一", "td二", "td三", "td四", "td五"), "3" => array("td六", "td七", "td八", "td九", "td十"), ); $table_count = count($table_names); こうしないでいいの? 俺てっきりマルチバイトダメだと思ってたよ
欧米か!
>>806 そもそも配列の要素数が行毎に異なるなんてのは考えたくないけど。
つじつま合わせの補完計画。
$maxcount = 0;
foreach($table as $list){
if($maxcount < count($list))
$maxcount = count($list);
}
printf("<table>\n");
foreach($table as $key => $list){
$list = array_pad($list, $maxcount, "-");
printf("<tr><td>%s</td>", $key);
foreach($list as $value){
printf("<td>%s</td>", $value);
}
printf("</tr>\n");
}
printf("</table>\n");
811 :
nobodyさん :2007/09/24(月) 13:37:12 ID:BGlF/jIi
登録→確認→完了 というフォームがあるとします。 登録フォームで間違えた時は、そのページの上部にエラーメッセージが出る と言った処理方法だとします。 エラーがある場合、セレクトメニューに入力した値が消えてしまうのですが、 以下のような方法以外に、出来るだけ簡単に対処出来ないでしょうか? function selectForm($form_name,$val){ $names = array("あああ","いいい","ううう"); echo "<select name=\"$form_name\">"; for($i=0;$i=count($names);$i++){ if($names)[$i]=="$val"){ $selected='selected="selected"'; }else $selected=""; } echo "<option value=\"$val\" $selected>$val</option>\"; } echo "</select>"; } selectForm("test",$_POST["test"]);
812 :
nobodyさん :2007/09/24(月) 14:05:59 ID:3GSML6xR
function valsclear($vals){ if (is_array($vals)){ array_map(array($this,'valsclear'),&$vals); }else{ $vals = ''; } 値だけを消去したいのですが、どうしたら良いでしょうか?
813 :
nobodyさん :2007/09/24(月) 14:45:48 ID:HSprOhmP
txtファイルをUPして、その内容を表示したいのですが、文字化けしてしまいます。 PHPの記述・HTMLの表示はEUC-JPで、txtファイルはShift-JISです。 $data = file_get_contents("test.txt"); $data = mb_convert_encoding($data,"EUC-JP","auto"); echo $data; としてみたのですが、 p"・・・・畿4ウチu"�ょ"・・A介潤・逐・縲・・楳氈E・・ とこんな感じになってしまいます。 test.txtをEUC-JPで作ると問題なく表示されます。 どうすれば解決できるでしょうか。よろしくお願いします
auto→SJIS
確かに、 auto だとちゃんとconvertできてないことあるよね。 なんでだろ。 PHPのソース見れば分かるんだろうけど。
816 :
813 :2007/09/24(月) 15:47:27 ID:/07n7WU2
>>814 ありがとうございます、ちゃんと表示されました。
autoは万能じゃないて事ですかね。
>>808 マルチバイトどころかコントロールコード入れるのだってアリだよ
>>811 これ、本当に動いてますか? 怖くて手を着けたくないっす。
>>812 function valsclear($vals){
if(is_array($vals)){
foreach(array_keys($vals) as $atom){
if(is_array($vals[$atom])){
valsclear(&$vals[$atom]);
} else {
$vals[$atom] = '';
}
}
} else {
$vals = '';
}
}
とりあえず 2×2×5 の多次元配列までやってみたけど、どうだろうか
819 :
nobodyさん :2007/09/24(月) 16:41:55 ID:9opMSOGn
php4.xにてクラス内のメソッドから継承関係に無い別のインスタンス内の プロパティにアクセスするにはどうすればよいでしょうか?
>>819 メソッドへの引数でインスタンスを渡してやれば?
821 :
nobodyさん :2007/09/24(月) 17:09:15 ID:9opMSOGn
>>811 どうしたってセレクトのアイテム数分ループさせて比較しなきゃいけないんだから、それ以上工数は減らせないでしょう。
ただ見た目的にシンプルかつ柔軟な関数にするだけでいいならこんなんでいかかでしょうか?
function selectForm($select_name, $option_values, $selected_id='')
{
$strbuf = "<select id=\"{$select_name}\" name=\"{$select_name}\">";
foreach ($option_values as $id => $val) {
$selected = ($id==$selected_id) ? ' selected="selected"' : '';
$strbuf.= "<option value=\"{$id}\"{$selected}>{$val}</option>\";
}
return $strbuf;
}
$arrbuf = array(0=>"あああ", 1=>"いいい", 2=>"ううう");
echo selectForm('test', $arrbuf, $_POST['test']);
($_POST['test']の中身が値ではなくそれに対応するidが入っているという前提になってます)
823 :
811 :2007/09/24(月) 19:42:41 ID:???
>>822 ソースありがとうございます。参考にさせていただきます。
ただ、やはり一般的には811の方法しかないですよね。。
>>823 Javascript前提なら、PHPでは比較しないでループで書き出すのみにして
onloadでJavascriptに比較させてもいいんだけどね。
普通はやらんねw
>>823 基本的には811のやり方で、後は些細な書き方の差になると思うけど、
例えばif文を使わない版。ただし、valueの種類に "" を含むと誤動作する。
$name = "test";
$values = array(0=>"あああ", 1=>"いいい", 2=>"ううう");
$select = array($_POST[$name] => ' selected="selected"');
$html = "<select name=\"$name\">\n";
foreach($values as $id => $val) {
$html .= "<option value=\"$id\"{$select[$id]}>$val</option>\n";
}
$html .= "</select>\n";
echo $html;
>>825 空文字valueがある場合でも
$select = array($_POST[$name] => ' selected="selected"');
を
$select = (isset($_POST[$name]))? array($_POST[$name] => ' selected="selected"'): array();
にするだけかと。
なんか更に難しく(ややこしく)なっている気が…
828 :
nobodyさん :2007/09/24(月) 22:43:12 ID:JlRJpJ4M
あるクラスの__destructメソッド内でMySQLの接続を切るmy_closeメソッドを記述してます。 ほかのクラスで上記クラスをインスタンス化して保持します。 このインスタンス変数をinstanceとした場合、DBの接続を切るには、 instance -> __destruct() と記述すればいいのでしょうか?
>>828 デストラクタはインスタンスが破棄される時に自動実行される。
$instance->__destruct()とした場合、デストラクタは実行されるが、インスタンスは破棄されておらず、
インスタンスが破棄される時(関数を抜ける時や実行終了時)にもデストラクタが二重実行されてしまう。
明示的に変数を破棄する場合はunset($instance)を使う。
但し、unset($this)といった様にインスタンスが自身を破棄することは出来ないので注意されたし。
830 :
nobodyさん :2007/09/24(月) 23:57:32 ID:JlRJpJ4M
>>829 どうもありがとうございました。
Smartyを使ってMVCに基づいたプログラミングをしてます。
Controlはポストデータ受け、Modelのインスタンス生成、戻り値(ResultSet)のsmarty->assignセット、Viewであるテンプレートコール。
ModelはSQLの実行など。
Smartyクラスを継承したサブクラスを作り、そのconstructでMySQLやDBへの接続をしてます。
DBの切断をどこでやるか迷っていたのです。
いろいろあると思いますがなかなか設計が・・・
831 :
nobodyさん :2007/09/25(火) 00:00:45 ID:8D5Ec5Bn
切断処理は必要?
832 :
nobodyさん :2007/09/25(火) 00:10:05 ID:ibGZ3o0m
なんか明示的にあった方がいいかなと・・・
>Smartyクラスを継承したサブクラスを作り、そのconstructでMySQLやDBへの接続をしてます。 Smartyの派生クラスでDB接続って、MVCがごっちゃになりそうなもんだが。
834 :
nobodyさん :2007/09/25(火) 00:45:59 ID:ibGZ3o0m
>>833 そうですね。
DB接続用のクラスを作ってSmartyクラスの派生とは分離させてみます。
ありがとうございました。
835 :
nobodyさん :2007/09/25(火) 14:56:33 ID:RlJd1MSD
$hoge = include("hoge/hoge.php"); ↑ こういうことやりたいのですが これだと$hoge関係なしにそのままインクルードされてしまいます 実現方法を教えてください
>>835 もともとそういう使い方をするものではない
getして放り込んで実行しろ
837 :
nobodyさん :2007/09/25(火) 15:07:19 ID:RlJd1MSD
>>736 ありがとうございます。わかりました
GETのやりかたをGOOGLEで検索してみます
>>835 多分でしかないけど
ob_start();
include("hoge/hoge.php");
$obj = ob_get_clean();
--- hoge.php --- return <<<EOF なんたらかんたら EOF; --- 読み元.php --- if ($contents = @include('hoge.php')) { echo $contents; } else { echo 'hoge.phpがねーぞ'; }
840 :
nobodyさん :2007/09/25(火) 15:33:42 ID:RlJd1MSD
>>838 ありがとうございます できました
>>839 ありがとうございます コードを保存しました こんどやってみますね
841 :
nobodyさん :2007/09/25(火) 16:25:55 ID:QDhH7pTb
いまA鯖からB鯖にFTPでファイルをアップロードするphpプログラム作ってるんですが ログインしてカレント移動までは正常にいくのですいが、ファイルのアップロードがうまくいきません。 まったくうまくいかないのかというとそうではなくて、B鯖に’HOGE.txt’までは作られるんですが、 ’hoge.txt’の内容はまったくなく、真っ白の状態です。 プログラムを実行すると、かなり時間がかかったあと、ファイルのアップロードに失敗したといわれます。 ------------------------------------------------------------------------------------- <?php $ftp_server = "www.example.jp"; $ftp_user = "hoge"; $ftp_pass = "passwd"; $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) { echo "Connected as $ftp_user@$ftp_server\n"; } else { echo "Couldn't connect as $ftp_user\n"; } ftp_chdir($conn_id, "public_html"); $file = 'hoge.txt'; $remote_file = 'HOGE.txt'; if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) { echo "successfully uploaded $file\n"; } else { echo "There was a problem while uploading $file\n"; } ftp_close($conn_id); ?> ------------------------------------------------------------------------------------- どこがいけないのでしょうか?
文字列の中で開始文字列と終了文字列の間に挟まれている部分だけ取り出したい。 開始文字列と終了文字列は別、取り出したいものは一ヶ所という前提です。 $src = "ここはいらないstartここがいるendここもいらない"; $s = "start";$e = "end"; $ary = explode($s, $src); $tmp = $ary[1]; $ary = explode($e, $tmp); $tmp = $ary[0]; echo $tmp; なんかもっと効率のいい書き方はないでしょうか?
echo preg_replace('start(.*)end', '\1', $src);
844 :
nobodyさん :2007/09/25(火) 18:07:39 ID:Bc2ZA9JH
filter関数便利じゃねって調べてたんだけど、 これさ元からあるフィルタ以外に拡張したい場合、 FILTER_CALLBACKしか無い感じですか? 新しいフィルタ定義して呼び出すとか無理っぽい? それでもfilter_listやfilter_idが存在するのは ソースコード書き換えてPHPからコンパイルし直せつうこと?
845 :
nobodyさん :2007/09/25(火) 18:14:45 ID:9q66wLmd
自分で掲示板を作ると愛着がわくのでだれかcgiで掲示板を作成する サイトを教えてください。
>>844 filter_id は ext/filter/filter_private.h にあるC的にスタティックなID番号を示すぽいので、
スクリプト実行時に動的に増やすのはcallback以外ムリじゃないかな。
「100」とか「50」という文字列を「100.00」「50.00」というように表示したいのですが number_format($str,2)だと「100」「50」となってしまいます。 何か方法無い物でしょうか? 出力はSmartyを通してます
>>846 どうもです。やっぱりそんな感じなんですね。
うーん使い勝手がいきなり微妙に・・・
>>848 うほ!ありがとうございます!
printfでやって駄目で、sprintfで試してなかったです
851 :
841 :2007/09/25(火) 20:34:09 ID:xfKDGXzl
>>841 です
追加情報
A鯖からftpコマンドでは正常にやり取りできます。
会社のTurboLinux10サーバーからA鯖である自宅のCentOS5へ向けて
さっきのスクリプトを走らせると正常に処理が完了します。
A鯖から外部へ向けて走らせるとまったくだめです。
会社のTL10S、ローカルWindowsのFTP鯖、ジオシティーズすべてだめでした。
シェルからFTPコマンドではすべて正常に処理できました。
phpinfoで再度確認してみましたが ftp enable となっており使える設定のはずですが。。。
Apache2.x自体 yum にてインストールしました。
スクリプトではなくA鯖に問題があるのでしょうか?
852 :
841 :2007/09/25(火) 20:41:52 ID:xfKDGXzl
>>851 失礼しました、自己解決しました。
A鯖のiptablesの設定ミスをしていました。
ありがとうございました。
質問です。phpでsendmailのパスを設定する方法が分からず困ってます。 CGIのように設定する必要はないのでしょうか。
854 :
853 :2007/09/25(火) 21:00:48 ID:???
すみません、自己解決しました
856 :
nobodyさん :2007/09/25(火) 21:38:42 ID:Wp8RlZHh
PHPでアセンブリ言語って使うことできますか? ある一定の作業だけアセンブリで書きたいのですが。
どんな作業よ
ある問題に一元的な答えを追及し自己解決したというのは、 オレから言わせれば、欺瞞でありアイデンティティーの欠如に他ならない。
>>856 linuxならバッククォートで囲む。
windowsはやったことないからしらん。
インラインで書きたいってのならミリ
860 :
nobodyさん :2007/09/25(火) 22:07:27 ID:259tGTbD
すみませんが、どなたかわかる方レスお願いいたします。 環境:WindowsXP SP2+Apache2+PHP5+MySQL5 PHPからmysql_query("SELECT HogeHoge From Table WHERE ・・・");を 実行して結果をテキストファイルに書き込む処理をしています。 ブラウザでPHPファイルを読み込んだ一発目は成功するのですが、二度目 (つまり、F5によるリフレッシュ、自身へのリンクをクリックして再読み込みした場合など)では ファイルに何も出力されておらず途方にくれています。 MySQLの方でもエラーログに何にも記載なし、Apacheのほうもエラーなし。 アクセスログにも怪しげなものなし。 そもそも、なんで同じコードなのに1回目は成功して二回目は失敗するの? (推測したこと) ・1回目の処理でファイルが排他モードになってて2度目のときにロックがかかってて処理ができない。 →レコード以外にもfputs($Fhandle,"書き込めるよ");などとやったら「書き込めるよ」はちゃんと出力される。 ってかそもそも、ちゃんとfclose実行してるし。。。 ・よくわからんけどMySQLが同一ユーザーからの処理を受け付けないようになってる? 同じID,Passwordで検証しているからこれが有力と思いきや →ID,Passを1度目と2度目で分けても結果は変わらず。 ・もしかして発行するSQLCommandを間違ってるとかいうDQNなオチ? →QueryBrowserで確認するがちゃんと表示される。 さぁ本当にお手上げだ。 誰か心優しい方、ヒントだけでもぜんぜんOKなんで俺を助けてくれ。
まずどこで失敗してるのか切り分けてから出直して来い
862 :
860 :2007/09/25(火) 22:14:56 ID:259tGTbD
860っす。 説明下手くそですんません。 失敗しているのはおそらくここっす。 $rs=Func_Query("SELECT A,B FROM HOGE_MASTER WHERE A='" . $_GET['key'] . "';"); while($row = mysql_fetch_array($rs)) { fputs($fhandle,$row[0] . "," . $row[1] . "\n"); }
うん、そこがどうなるわけ?
864 :
860 :2007/09/25(火) 22:19:26 ID:259tGTbD
1度目はOpenしたファイルに書き込めるのですが、2度目は真っ白けっけのファイルができて 何にも書かれていないのです(涙) ちなみにファイルはw+でオープンしています。 (つまりファイルオープンはエラーじゃないと頭悪いなりに考えをめぐらせて見ました) ということは$rsに何にも入っていないか、fputsが失敗しているかのどっちかかなと。
内容確認せずGETをクエリにってちょ、ま、おま!
866 :
860 :2007/09/25(火) 22:25:38 ID:259tGTbD
え?まずいっすか(笑) 一応ここには決まったStringしかプログラムが返さないようになっているので平気かと。 しかも、1回目はうまくいくんですよ〜。 ヒントだけでもいいんでお願いします〜〜。
外から来る変数は全て汚染されてる前提でチェックするのが吉。
860ワロス
869 :
860 :2007/09/25(火) 22:31:47 ID:259tGTbD
了解っす♪ 今はLocalでテストなんで平気ですけど、最終的にはかならず切り分けしてチェックを通ったものだけを 実行するようにいたします。
まず$_GET['key'] の内容をそのファイルに書き込んでみたら? リロった時に入ってないとかってオチかもしれんよ
871 :
860 :2007/09/25(火) 22:48:49 ID:259tGTbD
ほんまじゃあああ。めっさ興奮。 直で値、書き込んだらなぜか動作しないっす。 ただし、同じものをコピペしてQueryBrowserで実行するとなぜかきっちり実行される。 これってどういうことなんですかね。 本当にアホな質問なんでしょうがよろしくお願いします。。。
>>871 そのFunc_queryってのがへんなんじゃない?
普通にmysql_queryで書いたらどうだね
873 :
860 :2007/09/25(火) 23:05:27 ID:259tGTbD
なんか引き継ぐ前のおっさんが「ややこしい処理を全部外部ファイルにまとめといたよ♪」とのこと。 俺もFunc_Queryってなんだろうって思って確認したら function Func_Query($strSQL){ $rs=mysql_query($strSQL); return $rs; } って書いてありますたorz ちなみに今回はmysql_queryでやってもまったく同じ結果ですね。 もしかして日本語を代入してるのがまずいんでしょうかね?
875 :
856 :2007/09/25(火) 23:12:14 ID:Wp8RlZHh
>>859 レスありがとうございます。
仰るとおりCの様にインラインで書きたかったのですが無理なのですね。
参考になりました。どうもありがとうございます。
876 :
860 :2007/09/25(火) 23:20:06 ID:259tGTbD
たしかにその線ぽいです。 先ほどの$_GET['key']の中をsampleみたいに半角英数字のみで構成させると動作する場合が多いです。 (それでもリロードしたあとに動作しないことが多々あり原因は不明) 現在SJISで書かれたウェブの中にあるSelectOptionsの中身に AjaxでPHP(EUC)がUTF8で書き込んだファイルの内容を一行ずつ表示させて、それをクリックしたら またその内容をPHPで受け取ってさらにファイルを生成するというむちゃくちゃな仕様に なっています。 引き継いだときにはこんな状態だし、私は完全に畑違いなのに毎日画面とにらめっこで 泣きそうです。 とりあえず、糸口だけでもつかめて本当に参考になりました。 お答えいただいた方は1人?2人??よくわかりませんが、本当にありがとうございます。 いったんここで質問をCloseさせていただきます。
大量の計算処理をしている場合に、熱暴走することがあるのですが、 例えば、蛍光灯と裸電球と比べると、蛍光灯は同じ電力量で明るいと思います。 これは、蛍光灯が熱エネルギーも全て光エネルギーに変換しているためですが、 どうしてCPUも熱エネルギーを計算処理にリソースを割かないのでしょうか? CPUから熱エネルギーを生成している意義がよくわからないです。
SJISだけはマジで鬼門だからそれだけでも今のうちになんとかする事をオヌヌメする
>>878 携帯サイトなのでSJIS使ってるけどマジ鬼畜
でもそんなの関係ねぇ!
884 :
nobodyさん :2007/09/26(水) 06:06:53 ID:VlwtrPtd
>>859 に興味があるのですがどのように記述するんですか?
PHPで他の言語が使える?ってこと?
初心者丸出しですみませんorz
>>884 バッククォートで囲む=外部コマンドとして実行する。
その場でアセンブルして実行ファイルを生成して、即実行しちゃえ、ってことでしょ。
他の言語が使えることは使えるけど、むっちゃ遅いのであんまり使い道は無い。
すでに開発済みのPerlスクリプトに一部処理を任せる、みたいな目的なら可。
virtualって便利だな
887 :
nobodyさん :2007/09/26(水) 10:46:54 ID:QWy2Zkw0
ブログやニュースサイトの本文のみを表示するにはどう書けばいいでしょうか?
>>885 それphpでアセンブリ言語使っているって言わないw
アセンブリ言語を使うなら、普通はDLLにする罠
891 :
nobodyさん :2007/09/26(水) 16:38:40 ID:4b9p4uCs
PHPで携帯サイト作ろうと思って <?php echo "a"; ?> というhoge.phpをau携帯(W31SA)から見たら 「リクエストされたページは表示できません。」 と返されたのだが、何が問題でしょう??
リクエストされたページは表示できません。でググれ
>>891 HTMLの基礎の基礎の基礎からやり直せ
>>891 携帯端末はPCと違ってちゃんと<html>とかから始めないと表示できない。
895 :
nobodyさん :2007/09/26(水) 17:33:42 ID:Mqjw2ZGS
>>893 基礎の基礎の基礎だと、テキストに「a」とだけ書けば表示されるんだけど?
htmlになってしかも携帯だから表示しないだけで。
>>895 htmlの書き方を勉強しなおせ、とりあえず動けば良いってお前は中国人かw
897 :
nobodyさん :2007/09/26(水) 17:37:54 ID:Mqjw2ZGS
>>895 どこのhtmlの基礎の基礎の基礎の勉強で
htmlを使わないでウェブページを作れと教えてあるんだボケナス
別にWebページはHTMLでしか作れないわけじゃないんだけど… 特にauはHTML以外でもページ構成できるわけで。
>>894 携帯ブラウザってプレインテキストは表示できないのか
初めて知ったわ
>>900 キャリアによる。
auはダメだけどDocomoは問題ないんじゃなかったかな。
>>901 >>891 をつくってやってみたらドコモは表示できたw
こういうのって質問する前に自分で試したほうが早いと思うんだけどねー
>>902 あうはWML(笑)だよなー
906 :
nobodyさん :2007/09/26(水) 18:17:00 ID:bO9sGA13
PHPのデータベースを操作するライブラリってなにが有名? MDB2さわってみたけど、資料やエラー報告が少なくて見送ろうと思うんだけど・・・
絶対パスから相対パスに変換する関数ってあります? なかったらコードが乗ってるサイトしりませんか? 自分でちょっとがんばってみたんですが・・・ バカなんで・・・無理でした・・
>>907 >>1 それと質問がエスパーすぎ
相対パスにする必要ないし、何を相対パスにしたいのかがわからない。
911 :
906 :2007/09/26(水) 18:44:11 ID:bO9sGA13
ラッパークラスかどうか
913 :
nobodyさん :2007/09/26(水) 18:50:59 ID:nbOl+lTy
空メール送信に対して自動的に返信するのを作ろうと思うのですが、 メールをトリガーにして実行するスクリプトか、 クローンで数秒ごとに動くスクリプトにしようか迷ってます。 メールをトリガーにする場合は、あくまでトリガーになるだけで スクリプトに直接メールの内容は行かないんですよね? 何か助言などがあると嬉しいです。
914 :
nobodyさん :2007/09/26(水) 18:54:21 ID:F6zSEDUt
915 :
891 :2007/09/26(水) 19:33:54 ID:4b9p4uCs
>>894 なるへそ、そういうことか。さんくす。
でもおかしくね?誰だよこんな仕様にしたのww
PHPでSELECTBOXなどで文字に数字を割り当てる場合にはSQLでENUMに設定しています? それともSQLは数字だけでPHP側で処理してます?
日本語でおk
918 :
916 :2007/09/26(水) 20:02:46 ID:???
あああ、DB板とまちがえた LANケーブルぬいて回線きって首つtt(ry
>>915 auは複数のフォーマットをゲートウェイで変換表示するから
フォーマットを特定できない形式は扱えないんだよ。
吊った写真あっぷキボン
吊った本人がうpしてたらそれ心霊げn(ry
>>910 あるファイルやディレクトリのロケーションのパスが
絶対パスで送られてきたものをpwd(現在のディレクトリ)に対しての相対パスに変換するようなものなんですけど
なにかありませんか?
先述がわかりづらくてすみません
924 :
nobodyさん :2007/09/27(木) 00:07:42 ID:IFCMbMTa
>>923 ドメインをとっちゃえば相対パス完成じゃね
>>923 >>1 って言われてるんだから
>>1 見ろよ
それと丸投げしないで自分でちょっと頑張ったとこまでソース乗せてみなよ
>>923 ちょっと考えればそこまで複雑じゃないアルゴリズムだとおもうが?
てかPHPでやらない方が簡単な領域な気がする。
だから、アルゴリズムじゃなくて、アルゴニズムだろ。
algorithmをカタカナにしたら、アルゴリズムの方が近くないか? 逸れた話はどうでもいいが。
>>930 近いとか近くないとか以前にアルゴニズムなんて言葉はねーよ。
なんだそれ、アルゴン(不働)理想主義者か?ニートになれと言ってるのか?
>>923 それ、何のために必要なの?
用途が分かれば最善策が何か出せるかもしれないが。
でもその前に
>>1 をちゃんと読んで自分の間違いを正そうな。
辞書引いて発音記号見ればニズムなんて発音はありえんね アルゴニズムでググるとけっこう間違えてるやつ居るみたいだから釣りじゃなくてマジなんだろうけど googleもヤフーもアルゴリズムじゃありませんか?って訊いてくるな
英語の発音の問題だから、日本語としてその人にそう聞こえるならそう綴ればいい。 他者と意思の疎通が出来るかは別だが。 正しい綴りと発音は、algorithmのみ。
>>927 相対から絶対にするよりは簡単だと思うけど、PHP以外ってシェルコマンド?
それよりはPHPの文字列置換使った方がまだ早そうだけど。
ルートから一致するとこまでを削除して、残った階層の分だけ「../」を付加すりゃいいんだろ?
ていうか使用用途がものすごく謎だよなぁ Webアプリを作るにはまず必要ない作業だと思うが・・・ なんかローカルでファイル操作でもするんかね
>>936 それにしたって絶対パスのままでいいと思うがね。
用途があるとしたらDOCUMENT_ROOTからの相対パスに変換したい場合かな。
だけどうpろだにしたってそもそも保存ディレクトリのルートを相対パスで持っとけば
後はそれにサブディレクトリを足すだけだから、わざわざ絶対パスから
変換するこたないんだよな。
カフィをコーヒー、 ビアをビール、 カービュレイタをキャブレタ、 キリがないw
>>935 相対から絶対パスにはrealpath()で楽勝。
>>939 リとニは完全に音が違うぞwww
言い訳になってねぇwwww
943 :
887 :2007/09/27(木) 08:51:49 ID:2ULegsZC
>>889 すみませんでした。
どのような判定基準でコーディングすればいいかということです。
HTMLタグで文を分割し、その中の句読点が多い文を本文として抽出しようとしてますが、
広告が多いサイトや個人ブログだと、本文以外の部分が抜き出されます。
他にどのような方法がありますか?
>>943 ブログだったらわざわざHTMLタグ解析しないでRSS,Atom使ったほうがいいっしょ。
ニュースサイトなら著作権違反だから辞めたほうがいいっしょ。
preg_matchかpreg_replace使ったらいんじゃない? 自分でテストしてみたソースのっける方が早いと思うよ 丸投げなら金払って作ってもらうかできなきゃやめたほうがいい
>>945 論点ずれてるな。
各HTMLタグに囲まれた文章の「どれが本文か」を判定するロジックを
考案しれ、と言ってるんだよ
>>887 は。
つか、ちょっと前にも同じような質問をしてたやつがいたが、基本的に
それは商品なら実用新案とか取れるだろう画期的アイデアの類なので
そもそも他人に聞くのがおかしいんだよ。
>>946 ちょwwww
<html>の中の<body>と</body>に囲まれいるところを正規表現で取れば終わりだろww
そんなもんが画期的アイデアって、どんだけお前の脳みそは空疎なんだよ。
ホント何も詰まってないじゃないの、脳みそ???
>>943 >>944 の言うとおりBlogやニュースサイトは配信用に通常RSS等が用意されてるので、
SimpleXML等の関数を使って本文の部分だけ抜き出して表示すればいい。
最新の数件しかおそらく取得できないが。
RSSの中には本文を途中できっててパーマリンクを貼ってるだけのものもあるので、
そういうのにはこの方法は向いていないけど。
(続きを読むでhtmlにリンクされてるものもあるがそれは仕方がないとして)
なんにせよ求めてるものには完璧な方法はないよ。
広告がいやなんでしょ?
ページごとにhtmlを読み込んで、広告のhtml部分を置き換える方法もあるけど、
やるにしても、全てのページが同じ構成でない限り全て対応するなんて不可能だし。
広告がGoogle AdsenseならJavaScriptをきったブラウザで見ればいいんじゃない?
ニュースサイトの著作権については簡易RSSリーダーとして個人利用なら問題ないと思う。
一般公開する時も、広告のはってあるサイトはまずいけど管理人に金銭が絡まないサイトなら平気なんじゃないかな?
普通は見出しだけ貼り付けて、2.3行引用して続きを読むでリンクするのが一般的だと思う。
ニュースサイトなんかで提携先の新聞社とかにリンクするときはその形だよね。
>>947 お前、blogとかニュースサイトとか見たことないのか。
951 :
nobodyさん :2007/09/27(木) 11:52:41 ID:aINn7Cdu
>>948 この場合、まず勉強しないといけないのは日本語だと思う
つーか、ニュースサイトや個人の記事をいっしょくたに考えてるほうがおかしくね? ニュースサイトだとある程度構成がきまってるからわりと可能性あるけど 個人ブログのどこにニュースがあるかなんて書き手次第なんだから そんなの人間か人工頭脳でない限りプログラムでは判断できんでしょ。 ニュースサイトや個人ブログのURLもなければなんの情報もない状態 のもんだから<body>〜</body>をpreg_***で取得、というぐらいしかないんじゃないか? HTML勉強とか日本語勉強とか見当はずれも(ry
俺は887みたいなタイプの奴が一番嫌いだ 肝心要の情報と雑音を選り分ける手法が決まってないのに コーディングはどうのと聞いてるんだぜ? こういう輩が出来ることといったら、せいぜい他人のコードを 丸写しして「できました!」とか、さも自分が頑張って実現した かのように振舞うことくらい(おまえは何もしてないだろうて) あー、なんか先が見えてきちゃうよ
スレタイ嫁
>>952-953 だから
>>877 の質問は「万能な本文抽出のアルゴリズム教えれ」って質問なんだっつの。
ド素人でそれがどれほど難しい技術なのかも理解してないだけだろ。
それに対しての回答は一言「無理」で終わりでいいじゃん。
「BODYの中身全部表示しろ」とか手法を聞いてるやつに「手法も決まってないのに」とかアホかと。
ところで確か、ちょっと前に質問してきたやつも「句読点をカウント」とか書いてたけど同一人物かね?
956 :
955 :2007/09/27(木) 15:09:43 ID:???
>>953 禿同。
>>887 は
>>889 に注意されてから
改めてした質問が
>>943 だもんな・・・
せめてブログだったら、どこのブログの
htmlソース内のこのタグの部分が欲しいとか
そのためのphpのソースをここまで書いたとか言えよ。
そうすれば、ここにいる皆も具体的にアドバイス
できるのに、
>>943 みたいなアホな質問のせいで
実用新案とか人工知能とかすっとんきょうな
言葉が出てくる。
質問もろくにできないコミュニケーション能力のない
馬鹿は何をやっても無駄無駄。
もう、こんな香具師はスルーでいいよ
PEAR:Authの質問なんですが、 「未認証状態で、認証が必要なディレクトリ内のA.htmlにアクセスした場合、一旦ログインページにリダイレクトし、認証完了後に再度目的のページA.htmlにリダイレクトさせたい。」 要するに、ログイン前にアクセスしたページに戻したい、ということなんですが、 「A.html」という情報をどういう風に持ち回すのが常套手段でしょうか?単純にクッキーなんかでやるんでしょうか。 そもそも、認証が必要なページそれぞれの頭で、new Auth()してgetAuth()で認証済みか確認する、という認識で正しいでしょうか?
959 :
nobodyさん :2007/09/27(木) 23:15:40 ID:dB1cM3ii
全部が半角文字なのか調べる方法ってmb_strlenとstrlenで比較するだけで完璧なんでしょうか?
この世に完璧な事なんて無いさ
>>959 mb使ったときに文字コードの判定にミスったらアウトだよ
array_rand で1000ぐらいの配列をランダムに取り出そうと思うのですが これだと負荷は高いでしょうか? 1000ぐらいなら大したことはないかな?
大したことないんじゃない?
964 :
nobodyさん :2007/09/28(金) 01:26:39 ID:Ju5H8hfj
//php $test = 1300 % 152.5; 結果 84 //JavaScript test = 1300 % 152.5; 結果 80 この違いってどうにかなんないのでしょうか
>>958 俺だったら面倒くさいからログインページにLocationするときにGETでページ名を渡しちゃうかなぁ…
あえて隠さなきゃいけないような情報でもない気がするし。
各ページでの認証確認はどこまでPHP::Authの機能を利用したいのか…
有効期限判定とかを利用したいなら各ページgetAuth()で判定すべきだと思うけど、
特に条件とか無いんならセッションにログイン中とか格納してそれ判定するのもアリかと。
>>964 echo fmod(1300, 152.5);
結果 80
>>966 うお!!!ありがとうございます!
これだと小数点以下の時もきちんと計算してくれる(ぐぐってみました)ようですね!
大変助かりました!
968 :
nobodyさん :2007/09/28(金) 08:59:19 ID:C1fO/C39
mysql_query('INSERT〜')の返値は成否に関わらずnullなのでしょうか?
>>968 mysql_queryのまぬある見てみ
はっきり詳しく書いてあったぞ
追記すると、MySQL関係のエラーが出てもPHPでは吐き出してくれないので
mysql_error()を使うことをおぬぬめする
970 :
958 :2007/09/28(金) 09:48:55 ID:???
>>965 ありがとうございます!
モヤモヤが晴れました!
971 :
nobodyさん :2007/09/28(金) 11:13:39 ID:mmYDhnMN
POSTとGETを1スクリプトに混同させているのですが、 どちらのメソッドでリクエストがきたかを調べる方法ありませんか? ただたんにif ($_POST)とやってみたのですがどうもそれだとできないようで。 アップローダみたいのを作っていて、POSTでアップロードしてGETで削除するんですけど、 POSTしたときに値のチェックやらをしているので、 GETで削除するときにPOSTで行う値のチェックがはいってしまって、 余計なエラーが出てしまうという現象に・・・ 自分のロジックが悪いのはわかっているのですが自分の力じゃまだうまく作ることができないので、 とりあえずごまかしでPOSTかGETで受け取ったかのチェックを入れたいと思ってます。
request method
973 :
971 :2007/09/28(金) 11:31:37 ID:???
>>972 どうもありがとうございます。
$_SERVERにあるのを見落としてました。
助かりました。
974 :
ニュー速+より :2007/09/28(金) 17:21:01 ID:C4xfMcX2
975 :
nobodyさん :2007/09/28(金) 22:52:42 ID:+eamzCjp
質問が2つあります。 1. jsonが標準で組み込まれるようになったとのことですが、json.phpはどこにinstallされてるのでしょうか? (MacOSXの場合) 2. 最近アップデートをさぼってたら、素直にinstallできなくなりました。 (MacOSX10.4+php5.2.1が現在の環境) どうやらGDあたりでインストールが止まる様子。 どなたか解決方法ご存知でしたらお願いいたします。
>>975 1) > PHP 5.2.0 以降、JSON 拡張モジュールはデフォルトで PHP に組み込まれます。
というわけでデフォでは入っていない。
2) 5.2.1だったかな。MacOS Xではパッチを当てないとインストール出来ない時があった。
5.2.4は特に何もせずmake出来たし、使えているよ。
du コマンドみたいに指定したディレクトリの容量を調べる関数ってありますか?
下らねぇ
980 :
977 :2007/09/29(土) 10:14:10 ID:???
携帯用のHPを作って携帯から編集できるようにするには どういうスクリプトが必要ですかね? TOPページとかだけでもいいんですが
ずっと疑問に思っていたんだがPHPの登録フォームから登録したらすぐに使える連鯖とかってあるじゃないですか? あれってsystem()関数使ってコマンド送ってユーザの登録とかしているんですかね? でもそしたらWebサーバはLinux系だとrootユーザで動かさなきゃいけないし、system()関数をONにしているっていうだけでセキュリティ的に不安な部分があるんですが・・・・。 エロい人、どうやってるか教えてくだしあ
あ〜分かるけどエロくないや〜残念
985 :
nobodyさん :2007/09/29(土) 12:29:59 ID:EESSDSHo
>>984 そんなこと言わずに教えてくだしあ偉い人
>>983 やり方は千差万別
そういう方法も当然1つとしてあるだろう
自分がやるとしたらDBにいれるまでの作業しかPHPでは行わないが
>system()関数をONにしているっていうだけでセキュリティ的に不安な部分があるんですが・・・・。
これはちょっと誤解
987 :
nobodyさん :2007/09/29(土) 13:42:33 ID:EESSDSHo
>>986 んー、色々あるんですか。
>自分がやるとしたらDBにいれるまでの作業しかPHPでは行わないが
これちょっと気になるので調べてみまつ
>>system()関数をONにしているっていうだけでセキュリティ的に不安な部分があるんですが・・・・。
>これはちょっと誤解
例えばアップロードしたPHPファイルが
<?php
system('cat /etc/passwd');
?>
とかだったらpasswdファイル内のユーザと暗号化されたパスワードが表示されちゃいますよね。
そしたら・・・・・(ガクブル
とりあえず色々な方法を探してみます。
ありがとうございました
>>987 いやだから誤解。
必ずしもsystem()を許可しなくても同様のことは実現できるし、
登録システムでsystem()を使用してるからといって
ユーザも許可されてるとは限らない。
その辺はやりようはいくつもある。
もちろん、全然ダメなとこもあると思う。
試しに登録して自分で内情を確認してみれば?
単純な方法としては、PHPではDBへの登録だけやって、 あとはcronで実行されるroot権限のバッチスクリプトに ユーザ環境の作成処理をやらせる手があるね。 cronでの監視を1分おきとかにしとけばほぼ即時で処理できる。 リアルタイムにこだわるなら受付プログラムを常駐させておく手もある。
perl -MCPAN -e shell install File::Remove とやると、 There's a new CPAN.pm version (v1.92) available! [Current version is v1.59_54] You might want to try install Bundle::CPAN reload cpan without quitting the current session. It should be a seamless upgrade while we are running... って出たまま止まってます(><) どうすればいいですか?
>>983 レン鯖に限らずとも、blogサイトなどで登録するとサブドメでアカウントもらえるような処理にしたって
裏でDNSの更新やらcronでの処理やらで色々rootで動かすね
rootで動かすスクリプトとかsystem関数使ったりすると、Webプログラムの域を超えてるというか
なんかちょっと不安な気持ちになる時期が俺もありましたw
993 :
990 :2007/09/29(土) 15:28:58 ID:???
おらの場合登録受付はPHP、その後の処理をC#でやってるだよ。
ログを読み込んでHTMLを再構成させるブログのようなもの作ってるんですが、 インターフェース部分のphpは100行程度、そこからglobで得た情報を元に 1500行ほどのphpにincludeして実行させていました。 最近までうごいてたのですが、実処理プログラムのコードが1500行を超えた せいか、最後まで処理せず2回目の処理ですぐにとまってしまいます。 きちんと動いていたときは50回ぐらいの処理をこなしていました。 実処理phpは1回のみの処理でまわすときちんと動いてくれます。 なぜこんなことがあるのでしょうか?
仕様が悪すぎる 設計やり直し
995の頭の仕様もやりなおした方が良いと思われ
998 :
nobodyさん :2007/09/29(土) 18:24:56 ID:At7oASnV
999次スレおながい
/ _ノ _ノ \ / /iニ)ヽ /rj:ヽ ヽ | 〈 !:::::c! {.::;、! 〉 | おつかれちゃん | ''`''"ヽ___/ 'ー'' | ヽ //// ヽ / /// / /⌒l \ ヽ_/ ノ ノ ノ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。