【PHP】下らねぇ質問はID出して書き込みやがれ 76
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/ ◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易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プログラムとして実行された結果になる。
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に保存?
→ 好きにしてください
function arrayOut(&$array, $fileName=NULL) { $str = '<?php return '; $str .= arrayOut_($array); $str .= '?>'; if($fileName) { $fp = fopen($fileName, 'w'); fwrite($fp, $str); fclose($fp); } return $str; } function arrayOut_(&$array, $tab=0) { $tabs = str_repeat("\t", $tab); $tabs_ = $tabs ."\t"; $str = 'array( '; foreach($array as $key => $val) { $key = is_int($key) ? $key : "'". $key ."'"; $str .= $tabs_ . $key .' => '; if(is_array($val)) { $str .= arrayOut_($val, $tab + 1); } else { $val = is_int($val) ? $val : "'". $val ."'"; $str .= $val; } $str .= ', '; } return $str . $tabs .')'; }
7 :
6 :2008/11/13(木) 04:24:01 ID:???
使い方 $array = array( 2, 4, 8, 8 => 4, 10 => 'afe', 'test' => 'poen', 'kami' => 'ahonishi', array( 5 => 5, 'test' => 'aafafa', 'array' => array( 4,5,6,7, ), ), array( array( array( array( 'gogogogo' => 'nyaaaa', ), ), ), ), ); echo arrayOut($array, 'array.txt');
serializeかvar_exportじゃだめなん?
9 :
6 :2008/11/13(木) 11:25:56 ID:???
>>8 うわあああああああああああああああ
ああああああああああああああああ
あああああああああああああああああああああ
クソワロタ よく頑張ったよ
よくあることだ 人間はそうやって成長していくんだよ
なんでも丸投げ厨に比べたら偉いよ
974+1 :nobodyさん [] :2008/11/12(水) 22:40:31 ID:UDdKXaZu
PHPの質問ではありませんが、どなたか教えてください。
画面遷移の管理(というかセッションの管理)で、
ttp://www.j-tokkyo.com/2001/G06F/JP2001-160033.shtml のような特許が開示されているのですが、みなさん気にされていますか?
自分の場合、他サイト間連携の画面遷移なんかで以前から使いまくってたりするのですが、
コンプラ強化の流れで制限されそうになってますです。。
はて困った。。
14 :
nobodyさん :2008/11/13(木) 14:07:26 ID:bw3b61Qh
suEXECっていうのは、PHPを アパッチのモジュールモードで動かしているときは、 関係ないしろものなの?
そうです
16 :
nobodyさん :2008/11/13(木) 16:01:38 ID:bw3b61Qh
そうしたら、その場合は、パーミッションの設定は、 「suEXECが入っていない場合」、というのを 見て参考にすればいいの?
モジュールの場合、cgiのパーミッションは関係ない。 apacheが動作しているユーザーが読めればいいだけ。
要は、htmlと同じ扱い。あ、phpファイルのことね。 読み書きする外部ファイルの扱いはcgiと同じ。
http://www.e-provider.jp/server/cgi.html >レンタルサーバではグループの権限はゼロに設定すべきです。
>レンタルサーバではCGIは705、データファイルは606にすべきです。
>レンタルサーバでtelnetを開放している場合、他の住人のディレク
>トリーにも自由に入れます。CGIのパーミッションが755なら、telnet
>経由で他のユーザーはあなたのCGIのソースファイルを見ることが
>できます。CGI ファイルの中にパスワードが書いてあれば、パスワ
>ードも漏れます。データファイルのパーミッションが666ならtelnet経
>由でデータファイルを見るだけでなく、書き換え・削除できます。
↑ここのサイトに、こんなこと書いてあった。
こんな重要なことなのに、はっきり書いてある
サイトが少なくって。怖いなぁ。
ようは、拡張子が.phpで、 CGIモードでなくて、アパッチの モジュールモードで動くときに、 パーミッションの設定をどうしたらいいのか、 ちゃんと解説してあるサイトが少なくて 見つけられないんだよね。
グループ内の他人のディレクトリに普通入れるか?
22 :
nobodyさん :2008/11/13(木) 16:20:27 ID:bw3b61Qh
>suEXECでは、nobodyで動くのではなく、ユーザー権限で動きます。 って書いてあるから、「suEXECが入っている場合」、の 説明をマネすればいい感じかな?
23 :
nobodyさん :2008/11/13(木) 16:20:59 ID:bw3b61Qh
>>21 そのサーバーでtelnetが有効であれば
入れる、と書いてあります。
基本的に、まともなとこなら他人のHOMEには入れません。 でも、SuExecでグループ読み込みありだと、その他人のCGIから中見覗けます。 SuExecは、グループ書き込みできるファイルは実行できないようにしてるけどね。 基本的にどんな場合でもグループは0にすべき。 (専用鯖で多人数で作業してるとこは除く)
まだパーミッション厨いたのか
26 :
nobodyさん :2008/11/13(木) 16:44:48 ID:K5TW61gC
27 :
nobodyさん :2008/11/13(木) 16:45:42 ID:TS7LMUyh
質問なんだけど ポストで取得した文字列を、mecabというソフトにパイプで渡して その結果を得たいのですがproc_open()ではどうもうまくいきません。 windowsでPHPなのでmecabのPHPモジュールも使えないのです。 $mecab='C:\Program…' proc_open($mecab,…)というようにパスを入れるのでは ソフトを起動させられないのでしょうか? PHPマニュアルには proc_open('PHP',…)として、プログラムの名前が書かれています。 でもproc_open('mecab',…)では無理でした。 とりあえず外部プログラムを動かし値を得る方法を教えてください。
28 :
nobodyさん :2008/11/13(木) 16:48:29 ID:bw3b61Qh
>データファイルをDocumentRoot以下に置いてはいけない ってサイトに書いてあるんですが、そうなの?
>>28 わざわざDocumentRoot以下に置く理由もないでしょ。
危険の芽はつんでおくに限る。
30 :
nobodyさん :2008/11/13(木) 17:12:56 ID:mUWlC/Ng
下記のようなランダムPHPを使ってるのですが、 例えばこれを $txt を10個設定してから、 10個並べて出力させたとして、全部違う結果を表示させたいんですが どう記述を加えればいいでしょうか よろしくお願いします <?php $txt[0] = '0'; $txt[1] = '1'; $length = count($txt) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$txt[$num]"); ?>
>>30 下手のこと考えるより、array_rand
32 :
nobodyさん :2008/11/13(木) 17:28:24 ID:mUWlC/Ng
>>31 <?php
srand((float) microtime() * 10000000);
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
これの事ですか?
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
から1つづつ抽出してくれるという事ですか?
33 :
nobodyさん :2008/11/13(木) 17:47:11 ID:mUWlC/Ng
賠償まだー?
賠償はでないんじゃないかな? 本では結構かっこいいこといっていたし、 近藤さん好きだったんだけどな。 残念です。
お前らがちゃんと パーミッションの設定について 教えないせい
38 :
nobodyさん :2008/11/13(木) 20:15:10 ID:3XeZmcyK
PHPで作成したWebページが、IE7で見ると真っ白になります。 どうも文字コードの自動判別がうまく働かないようで、 UTF-8で作成したページがシフトJISと解釈されているようです。 頻出の問題らしいので関連サイト見て対処したのですが、未だに直りません。 下記の対処法以外に何かやるべきことがあるでしょうか? ■PHPでやった対策 ・ソースコードのファイルはUTF-8で保存 ・PHPコードの先頭付近で「header('Content-Type: text/html; charset=utf-8');」を記述 ・PHP.iniのdefault_charsetはコメントアウトされた状態 ■HTMLでやった対策 ・ファイルの<head>タグ内に「<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />」と指定 ・<title>タグは、上記のcharsetよりも後に記述 ・ファイルはUTF-8で保存 さらに面倒なことに、自宅のPCでは問題なく表示されるのです。 なぜか自分以外のPCで見ると、IE7のみ真っ白になるらしいです。 (数人から連絡を受けたので、どうも見えるほうが少数派のようです) なにかいい対策方法は無いでしょうか?
真っ白て。 ソースは取得できてるの?その文字コードは? PHPの内部エンコーディングは設定してないの? エラーコードは?(さらに言えばHTTPレスポンスは?) PC環境で明らかに違う点は?
40 :
たまちゃん ◆Emjcf.lfLU :2008/11/13(木) 20:34:49 ID:rj1jn7su
3gp.fmと言う、ネット上で音楽の拡張子を変換するツールを見つけました。
http://3gp.fm/Mob.aspx これは、ASPを使ってる見たいですが、PHPで作ろうと思いました。
私なりに構造を考えてみたのですが、どのような仕組みだと思いますか?
Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。
この浅はかな考えではうまく作れませんでした。どのようにしたらよいのでしょうか?
拡張子変換するだけなら文字列関数でできるぞ
後半読んでなかった >Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。 ぶw これはねーわw
43 :
たまちゃん ◆Emjcf.lfLU :2008/11/13(木) 20:38:33 ID:rj1jn7su
>>41 詳しくお願いします。
文字列関数…
ただ、拡張子だけでなく、ヘッダーもかえたいです。
.mp3が.3gpになっただけでは、携帯からは音楽が聞けません…
44 :
たまちゃん ◆Emjcf.lfLU :2008/11/13(木) 20:39:25 ID:rj1jn7su
外部アプリ使ってんでしょ
46 :
たまちゃん :2008/11/13(木) 20:47:04 ID:rj1jn7su
>>42 外部アプリ…
ってことは、aspxや、PHPだけではこのツールを作成することは不可能なのですか?
そのアプリは、どんなアプリでしょうか?
Windowsアプリケーションexeは、携帯には対応してません。
別に可能ではあるんじゃない? あとWindowsアプリケーションexeが携帯に対応してないってのが良く分からないけど
48 :
38 :2008/11/13(木) 21:16:44 ID:???
>>39 ソースは取得できており、IEの画面を右クリック→ソースを表示 で表示できます。
UTF-8のページを開く際に、IEの文字コード設定でシフトJISを手動選択すると真っ白になるので、
おそらくIEが勝手にシフトJISだと勘違いしているのだと思います。
PC環境についてですが、複数の人から「真っ白だ」と言われているため、
明らかに違う点が分からない状況です。(OSもXPとVistaが混在です)
あと、PHPのコードにはmb_internal_encoding("utf8");と記述しています。
レスポンスヘッダは以下です。
HTTP/1.1 200 OK
Date: Thu, 13 Nov 2008 12:14:09 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
何か分かるようでしたらお願いします。
49 :
たま :2008/11/13(木) 21:17:51 ID:rj1jn7su
>>47 どのようなプログラムを書けばよいか、大まかにでも教えてください。
50 :
nobodyさん :2008/11/13(木) 21:21:00 ID:KF88aCBc
>>49 >>47 じゃないが
>>47 がいいたいのは
サーバ側で別のアプリケーションを起動させて変換して返すってもの
wavをmp3に変換するツールとかあるでしょ?
そういうのでコマンドラインから実行できるようなものを
リクエストがあったらコマンドラインから該当ファイルを変換して返すような仕組み
ようするに処理自体はPHPでやってるわけじゃないってこと
>>50 そうそう。君はそうやって人の言うことを聞いとくべきだよ。
六年生とは思えないほど稚拙な文章だったけど、面白かったよ。
53 :
27 :2008/11/13(木) 22:14:36 ID:TS7LMUyh
もう分からないからCGIで動かす事にする。 CGIならmecabを動かせるし。 でもCGIやった事無いから分からないけど 一つのファイル内でCGIとPHPを混在させる事できる? PHPで文字列受け取ってCGIで処理してPHPで表示したい。 または例えばPHPファイル内で処理するスクリプト中に CGIファイルをインクルードして結果の配列をPHPに再び渡すってできない?
>>27 > $mecab='C:\Program…'
単にスペースが入ってるだけじゃねーの?
55 :
nobodyさん :2008/11/13(木) 23:42:29 ID:rLX4EmuO
セッションの使い方とセキュリティで悩んでいます。 ググって調べると、携帯サイトではGETでURLにsession_idを 付与するようですが、別サイトにリファラが残る場合があり、 セッションハイジャックの危険性があります。 他のプログラム(OpenPNEやMT)などをみると、 セッションをDBに保存して、毎回照合しているみたいです。 そこで質問ですが、どちらの方法の方がより安全で有効なのでしょうか? 前者であれば手間もかからず、負荷も少ないと思いますし、 後者であればセッション発行時のIPアドレスやUSER AGENTを保存すれば セッションハイジャックやなりすましは防止出来るのではないかと思っています。
56 :
27 :2008/11/13(木) 23:43:40 ID:TS7LMUyh
>>54 確かにそうでした。ありがとうございます。
pewershellではC:\Pro*s\mecab\bin\mecab.exeとしたらちゃんとmecab.exeが機能しました。
(それまではProgram filesでもいけると思ってました。)
しかしやはりproc_open()の方では無理です。
ソースはこんな感じ。
$mecab = 'C:\Pro*s\mecab\bin\mecab.exe';
$descriptorspec = array(0=>array("pipe","r"),1=>array("pipe","w"));
$process = proc_open($mecab,$descriptorspec,$pipes);
でこの後に
print is_resource($process);
としてみたのですが1(FALSE)しか返ってきません。
やっぱりうまくいかないようです。
58 :
nobodyさん :2008/11/14(金) 06:44:08 ID:LBY0wnii
アパッチで、ファイルの所有者が、 アパッチの場合と、nobodyの場合と、yamadaの場合と、 3種類あるようなんだが、これってどこで決まってるの?
>>56 print is_resource($process);
こんな事するより
var_dump($process);か
echo var_export($process,true);
>>58 PHPのスクリプトでtouch()とかで作られたファイルはアパッチになるよ。
nobodyやyamadaは知らん。俺yamadaになんてなった事ないから。
「nobody」も「アパッチ」も同じこと Apacheの実効ユーザで作成されてるってこと、PHPがApacheモジュールで動いてるからな suExec環境ならスクリプトの所有者で生成される、それがyamadaなんじゃね?
63 :
nobodyさん :2008/11/15(土) 06:36:19 ID:oW2TcjIK
http://www.standpower.com/php_form.html ここの、
input.htmlと、output.phpの2つのファイルをドコのフォルダに置けば入力した名前が表示されるのでしょうか?
input.htmlファイルをクリックしてinput.htmlを表示させ、「太郎」と入力まではうまく行くのですが、
クリックして、output.phpを表示させると、ソースコードが表示されます。 いったいどうしたらいいのでしょうか?
64 :
nobodyさん :2008/11/15(土) 06:39:47 ID:oW2TcjIK
ちなみに、 【OS名】winXP 【PHPのバージョン】php5.26 です。
65 :
nobodyさん :2008/11/15(土) 06:54:07 ID:oW2TcjIK
>>65 そんな小細工しなくても
素のままで普通に動いたけど。
ただし、元のページの解説にはバグがある。
<form action="input.php" method="post"> HTMLのformタグを使ってデータの受け渡しを行います。 action属性で指定してるファイルにデータを渡します。 ここではoutput.phpというファイルを指定してます。 method 属性ではデータを送る際の送信方法を指定します。post とはURLとは別にデータを送る方法です。 ↑ここの部分が間違ってる。 <form action="input.php" ↑ここ。inputでなくてoutputだから。 でもなぜかそのすぐ上の元のソースでは ちゃんとoutputってなってるところがなぞ。
68 :
nobodyさん :2008/11/15(土) 08:59:21 ID:oW2TcjIK
>>66 じゃあ、input.htmlと、output.phpの2つのファイルをドコのフォルダに置きましたか?
なんつーか、この辺がよくわかんないんですよね。
つまり、PHPの影響が及ぶエリアと、及ばないエリアがあると思うんです。
>>67 それは僕も思いました。
>>68 パスの話になると別の問題
相対パスでぐぐってきてください
>>68 xampp\htdpcs\php\
とかでいいとおもう。
なんでxamppやねん。ディレクトリ名も間違ってるしひどいな
>>63 初心者が陥りやすい問題だよね。
htmlのファイルはクリックしたらダメなのよ。
あくまでブラウザ操作が基本。
ブラウザに
http://localhost/root/input.htmlと入れるのが正解 (ちなみにrootはアパッチのconfファイルで設定した所ね)
ファイルをダブルクリックで開くとwindowsのディレクトリが表示されてしまう
(C:/root/input.html)
こうなると次にPHPファイルを開いてもアパッチでなくwindowsがテキストとして開いちゃうんだよね。
73 :
nobodyさん :2008/11/15(土) 12:39:59 ID:2pgE9K6y
最近パイプの質問ばっかりしてる俺が再びマジな質問ですが パイプを使って得た文字列に改行がありません。 コマンドプロンプトで表示させると ラーメン 名詞,*,ラーメン うまい 形容詞,*,うまい と表示されるのに パイプで取得すると ラーメン 名詞,*,ラーメンうまい 形容詞,*,うまい と改行無しになってしまいます。パイプで改行を得るにはどうすればよろしいですか?
基本的にXSS対策って、htmlspecialcharsすればいいよね?
改行の違いは?
78 :
nobodyさん :2008/11/15(土) 17:33:18 ID:nBA7qJcq
$binary = ""; for($i=0, $j=strlen($char); $i < $j; $i++) $binary .= substr(printf("%08b", ord(substr($char,$i,1))) ,0,-1); echo strlen($binary); といった感じのソースで、$charをバイナリにしてその後いろいろと処理をしたいと思っているのですが、 strlenで0しか返ってきません。 なぜなのでしょうか?
79 :
nobodyさん :2008/11/15(土) 17:40:18 ID:iYDkBqcl
変数定義する時 $var=(int)$var; って横にデータ型の名前入れたカッコってこれどういう意味?
型キャスト
82 :
63 :2008/11/15(土) 18:03:29 ID:oW2TcjIK
>>82 そんなものはapacheの設定次第だが、普通はindex.htm index.html index.phpくらいだな
84 :
63 :2008/11/15(土) 18:40:26 ID:oW2TcjIK
>>83 ありがとうございます。実際、index.phpというファイルがありました。
indexsを知らないでWebアプリ運用・・・ゴクリ
アパッチの設定で自由に決められる。 一般的には、 (1)index.html (2)index.htm (3)index.php などの順番で、上から順に探していく。 そして、そのファイルがあったら、表示する。
ちなみに、グーグルのボットもそのような動作をする。 つまり、「ありそうな名前のファイル」で、手当たり次第に アクセスをかけて、ファイルがあったら勝手にキャッシュされてしまう。
88 :
nobodyさん :2008/11/15(土) 19:17:45 ID:2pgE9K6y
どうせ2回実行してるんだろ
90 :
63 :2008/11/15(土) 19:23:33 ID:oW2TcjIK
rep2フォルダのindex.phpファイルに、 require_once './conf/conf.inc.php'; require_once P2_LIB_DIR . '/filectl.class.php'; という記述があります。 上は、ルートの/conf/conf.inc.phpをrequireする で、理解出来るのですが、 下が理解出来ません。 実際、C:\php\rep2\libフォルダにfilectl.class.phpというファイルはあります。 この、「P2_LIB_DIR .」の記述にはどういう意味があるのでしょうか?
定数
>>90 最初にrequireしているconf.inc.phpの中をよく見ればいいよ
phpの初心者本くらいは手元においておいた方がいいと思うぞ
93 :
63 :2008/11/15(土) 19:33:01 ID:oW2TcjIK
死んでくれ
>87 初めて知った。 クラックツールとか脆弱性監査ツール紛いの挙動だなw
>93 conf.inc.phpをP2_LIB_DIRで検索。 そこで使われてる関数をマニュアルで調べる。
97 :
63 :2008/11/15(土) 19:46:34 ID:oW2TcjIK
>>96 はい、やってみました。 そうすると、
require_once P2_LIB_DIR . DIRECTORY_SEPARATOR . 'p2util.class.php';
というのが出て来ました。
これはどういう意味なのでしょうか?
頼むからリファレンスくらい目を通してからプログラミングしてくれ
99 :
63 :2008/11/15(土) 19:49:12 ID:oW2TcjIK
100 :
63 :2008/11/15(土) 19:51:57 ID:oW2TcjIK
本は、はじめてのPHPプログラミング基礎編と、PHP5リファレンス&逆引きユーザー便利帳というのを持っています。
それを読んでからまた来てくれ
>99 他にもあるだろ。もっと検索しろ。 もういい、自分で勉強する気がないようだから解答。 どっかで define('P2_LIB_DIR', 'C\hogehoge'); みたいに宣言されてる。defineをマニュアルで引け。 . は文字列の連結演算子だ。演算子の項を読んで来い。 P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'なら確かに3つの文字列だが、 P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'を「つなげたもの」はひとつの文字列だ。
>>99 もう一度言う
最初にrequireしているconf.inc.phpの中をよく見ればいいよ
よく見て中になんて書いてあるか自分で調べて、それでも分からなければ
そこを引用して質問してくれ
あまりにも周りの書き込みをちゃんと読み解けていない
自覚した上で質問してるんだろ ほんとに腐った根性してる
105 :
63 :2008/11/15(土) 20:03:23 ID:oW2TcjIK
>>102 > P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'を「つなげたもの」はひとつの文字列だ。
なるほど、色々、宣言したものをつなげてるわけだ。 なんとなく理解出来ました。
そもそも.の結合を理解できないあたり、マニュアルは読んでないわ 買った本は肥やしにもなっていないことが容易に想像される
108 :
63 :2008/11/15(土) 20:26:06 ID:oW2TcjIK
引数という言葉すら知らんのか
厳密に言うと関数は括弧必要だけどecho,requireなどの言語構造は必ずしも必要としない
require系って言語構造じゃないの?
エサを与えないでください
113 :
63 :2008/11/16(日) 00:35:00 ID:???
>>110 ありがとうございます。
話は変わり、
<html>
<body>
<?php
$sWeek = date("l");
$sDisp = "今日は英語で言うと" . $sWeek . "よ!";
print $sDisp;
?>
</body>
</html>
を
day.phpで保存すると、表示されるのですが、day.htmlでは表示されません。
これを、day.htmlで表示させるにはどんなソースにすればいいのでしょうか?
apacheの設定ファイル(httpd.conf)で AddType application/x-httpd-php .html に設定変更してapacheを再起動してみそ
ハンガリアン規約ってどうなんだろうね。
116 :
63 :2008/11/16(日) 05:25:49 ID:???
117 :
63 :2008/11/16(日) 05:55:48 ID:TeIkZlvH
Q:DIRECTORY_SEPARATORとは何ですか?
118 :
63 :2008/11/16(日) 06:06:46 ID:TeIkZlvH
Q:DIRECTORY_SEPARATORとは何ですか? A: ディレクトリの区切り文字は、Windowsで「\」ですが、Linuxなどでは「/」が使用されています。 つまり、 "dirname" . DIRECTORY_SEPARATOR . "filename"; と書いた場合、 Windows環境では、dirname\filenameとなり、 Linux環境では、dirname/filenameとなるのです。 で、いいですか?
119 :
63 :2008/11/16(日) 06:43:03 ID:TeIkZlvH
121 :
63 :2008/11/16(日) 07:09:41 ID:TeIkZlvH
<html><body><?php $sWeek=date("l"); $sDisp="今日は英語で言うと".$sWeek."よ!"; print $sDisp; ?></body></html> この場合、 print $sDisp; でも、 print$sDisp; でも、 エラーにならずに表示されますねw
122 :
63 :2008/11/16(日) 07:14:46 ID:TeIkZlvH
124 :
63 :2008/11/16(日) 07:30:21 ID:TeIkZlvH
( ;^ω^)
126 :
63 :2008/11/16(日) 08:32:44 ID:TeIkZlvH
127 :
63 :2008/11/16(日) 09:01:56 ID:TeIkZlvH
それはそれとして、rep2のindex.phpの7行目に↓があります。 で、このauthorize()がわからんのです。 $_login->authorize(); // ユーザ認証
>>126 やってれば__FILE__が定数だなってことは自然とわかってくるわけで
長くやってるやつにそんな理由を聞いても返答に困るだけ
このスレをROMってるだけで相当力つくから独学でやるならROMってるといいよ
そのうちなんとなくわかってくるから
PHP初心者勉強会に参加しろよw
131 :
nobodyさん :2008/11/16(日) 11:53:15 ID:qwIcjEj2
>>ID:TeIkZlvH
・全部よむ
・検索する
どちらでもたどり着けます。検索する方がすぐ見つけられるけど、
一度全部読んでみるといいね!
検索の仕方がわからないんなら、教えてあげるからまた質問してね。
>>127 わからないことを、みんながわかるように書いてね。
ごめん
>>131 じゃなくて>>ID:TeIkZlvHだった
あまりに大人な対応に涙が出た
拡張子.htmlで PHPが実行されるようにアパッチを改造するのって セキュリティ的に、少し危険な行為なんじゃないの?
なんで?
PHPを使用していることを隠蔽できるから安全という考え方もあれば、 アホなコードを書けばすぐPHPが実行されてしまう考え方が、 と思ったけど、そんな状態なら拡張子がphpだろうがhtmlだろうが、関係ない気もする。
138 :
63 :2008/11/16(日) 18:30:34 ID:TeIkZlvH
>>131 > 検索の仕方がわからないんなら、教えてあげるからまた質問してね。
おお、有り難うございます。
では、フォルダの中に、サブフォルダもある。
その中に沢山の.phpファイルがある。
その多数のファイルの中から、authorizeの文字列を探したい。
この場合、どうすればいいのでしょうか?
>>138 grepツールを使う。
具体的にどういうソフトを使うかは環境次第。
140 :
63 :2008/11/16(日) 18:43:46 ID:TeIkZlvH
linux: fedora8 php ver: PHP Version 5.2.6 cronで定期的にasahi.comから天声人語だけ抜き取って自分にメールを送るのと、 バックアップとしてその日の日付の名前でテキストファイルに保存するphpを作ったんですけど cronが実行すると cron daemonからメールで PHP Warning: flock() expects parameter 1 to be resource, boolean given ... PHP Warning: fputs(): supplied argument is not a valid stream resource in ... PHP Warning: flock() expects parameter 1 to be resource, boolean given in ... PHP Warning: fclose(): supplied argument is not a valid stream resource in ... と返ってき、テキストファイルももちろん作成されておらず、どうも function write($filename, $input) { $input=serialize($input); $fp=fopen($filename,"w"); flock($fp, LOCK_EX); fputs($fp, $input); flock($fp, LOCK_UN); fclose($fp); } というファンクションのfopenの戻り値がfalseでかえってきてるみたいなんですけど 自分でブラウザでそのphpを実行すると問題ないんです、ちゃんとファイルもその日の日付のタイトルで内容も保存されます どうしたらcronで定期的にやってくれるように問題可決できるんでしょうか?教えてください。
ブラウザからじゃなく、cronで実行してるコマンドラインを流してみて確認すりゃ いいんじゃあ
144 :
141 :2008/11/16(日) 21:31:12 ID:wBVwAFbg
>>142 すみませんでした sageチェックはずしわすれてました。
>>143 cronでの実行ラインは/usr/bin/php ファイルパスで、
端末で実行するとメールと同じ内容のエラーメッセージがでてきますね・・・
で、ファイルも作成されずです。
コマンドラインじゃエラーになってブラウザだと通るって、なんでですかね?
クーロンの書き方勉強するか、chdir使うかフルパスでfopenすればいいかと
147 :
63 :2008/11/16(日) 22:24:57 ID:TeIkZlvH
>>141 > cronで定期的にasahi.comから天声人語だけ抜き取って自分にメールを送るのと、
> バックアップとしてその日の日付の名前でテキストファイルに保存するphpを作ったんですけど
それ、面白そうですね。
規模でいうと何行ぐらいのphpなんですか?
GETしてタグ抜いて書き出してメールなら、PEAR使っても1000ライン前後じゃないのかな。
>>144 コマンドラインで実行するとエラーが出るのはたまに経験あるな。
大抵、環境変数とかPHP側の設定とかが原因だった気がするが。
149 :
141 :2008/11/16(日) 23:05:52 ID:wBVwAFbg
>>147 50行ちょい
苦戦したといえば
自分は携帯にメールしてるため、
携帯で見れるための文字コード変換がややこしかった
>>148 やっぱり、PHP側の設定ですか
いや、今の箱の前に使用してたfedora7の箱だったら正常に作動してたから
phpのコーディングミスではないと確信だったので
ペアなんか使う気にならん。 ソース書くのが楽しくてPHPやってんのに。
人はそれを車輪の再発明と(ry
152 :
63 :2008/11/16(日) 23:27:27 ID:TeIkZlvH
>>149 > 50行ちょい
どうもです。少ないですね。 よかったらソースを晒して下さい。
やだよ
154 :
63 :2008/11/16(日) 23:57:20 ID:TeIkZlvH
う〜ん、それは残念。
155 :
nobodyさん :2008/11/17(月) 00:12:42 ID:uO1yzOV4
変数を初期化するにはどうしたらいいの?
156 :
63 :2008/11/17(月) 00:15:17 ID:DKgH+i/4
変数に初期値を代入すればいい。
今後の展開が容易に想像できるしなw
63、なんとなく人物像が想像できる。 貪欲に知識を吸収しようとする姿勢がカッコイイと思ってる。 アップルに感化されやすいタイプ。 マインドマップとか描いちゃうタイプ。 でも致命的にバランス感覚に欠けている。 身の周りの中では達観してるほうだと自分では思ってるが そのままなら1,2年もすれば煙たがられるようになる。 なんかしらんけどムカつくわ ハゲ!!
162 :
nobodyさん :2008/11/17(月) 04:07:56 ID:uO1yzOV4
ファイルロックしないとなんでファイルって壊れるの? 書き込みしている途中で 書き込み処理が完了していない状態で 誰かが同時に読み込みすると、中途半端な 書き込み途中のデーターを読み込んでしまって、 それで壊れるの?
163 :
63 :2008/11/17(月) 04:19:43 ID:VEc9l7C0
そうだよ
排他制御とかデッドロックとかでググってみ
165 :
141 :2008/11/18(火) 01:56:19 ID:V5bkwf3L
>>152 $filepath="dat/tensei_".date("Ymd").".dat";
if(!file_exists($filepath))
{
$handle = fopen("
http://www.asahi.com/paper/column.html ","r");
if($handle)
{
while(!feof($handle))
{
$buffer=fgetss($handle);
$buffer = mb_convert_encoding($buffer, "SJIS", mb_detect_encoding($buffer));
}
fclose($handle);
}
$content=$buffer[68];
write($filepath, $content);
}
else
$content=load($filepath);
あとは$contentをmail関数かなんかでメールしたってください
166 :
141 :2008/11/18(火) 01:58:29 ID:V5bkwf3L
あ あと loadファンクション function load($filename) { $fp=fopen($filename,"r"); flock($fp, LOCK_SH); $array=fread($fp, filesize($filename)); flock($fp, LOCK_UN); fclose($fp); $array=unserialize($array); return $array; }
行数で取得するのは危険ではないか DOM使おう
手っ取り早さ重視か。 fopenでhttpストリーム開く場合って、Proxyかましたい時とかどうすんだろ。
fsockopenかpear使えば?
170 :
141 :2008/11/18(火) 02:40:15 ID:V5bkwf3L
171 :
nobodyさん :2008/11/18(火) 07:04:09 ID:WbAApVvS
「DOMを使う」ってなんだ? PHPプログラマに関係あることなのか?
お前は何を言ってるんだ
XML専門のプログラマでも呼ぶのかw
お前は何を言ってるんだ
175 :
nobodyさん :2008/11/18(火) 10:21:28 ID:ueNxgoBD
You Tube のWEB APIについて質問させてください。
ちょうどいいスレがわからなかったのでここにかきます。
PHPの質問というよりAPIについてですね。
下記PHPを実行し画面の LINK をクリックするとエラーがでてXMLが表示されません。
デベロッパーIDは実際には取得したものを入力しています。
<?php
$dev_id = "XXXXXXXXXXXXXXX";
$tag = "vaio";
echo "<a href=\"
http://www.youtube.com/api2_rest?method=youtube.videos.list_by_tag&dev_id= ".$dev_id."&tag=".$tag."\">LINK</a>";
?>
エラーのXMLは下記のとおりです。
デベロッパーIDを新しいものに代えても同じです。
<?xml version="1.0" encoding="utf-8" ?>
- <ut_response status="fail">
- <error>
<code>8</code>
<description>Bad, unknown, or disabled dev_id specified.</description>
</error>
</ut_response>
176 :
↑ :2008/11/18(火) 10:29:16 ID:ueNxgoBD
PHPを使わずにWEBブラウザーに直接アドレス入れても同じエラーが返ってきます。
じゃ間違ってるんだろ APIの仕様を確認してこい
178 :
175 :2008/11/18(火) 11:41:14 ID:ueNxgoBD
もちろん何回も確認して、他のサイトもいろいろ調べました。 自分で調べもしないで質問するのは失礼だと思いますし。
>>175 まずエラーコードが何かどういう意味なのか調べろよ
>8 : Bad or unknown dev_id specified
>developer profileで登録されていない。
これでもエラーになるならエラーになるID晒すか
問合せしないと解んないと思うぞ
181 :
175 :2008/11/18(火) 11:54:01 ID:ueNxgoBD
確かに関係ないです............
182 :
175 :2008/11/18(火) 12:02:40 ID:ueNxgoBD
>> 180 > developer profileで登録されていない。 というのは私も見ましたがデベロッハーIDを取得している時点で 「developer profileで登録されていない」ということはないと思っていますが どうでしょうか。何回IDを確認してもあってますし、新しいIDを取得しても同じです。 意味がなくてもUTF-8にエンコードしたものを使用したりurlencode()したり、いろいろやってみましたが やっぱりだめです。
情報を登録してないから有効化されてないんじゃない? もしくは使いすぎて無効化されてるとか
多分だけど古いAPI使ってるからじぇねーの 本来のサイト見ずに誰かが書いてる解説サイトみてたりしない?
185 :
175 :2008/11/18(火) 12:49:13 ID:ueNxgoBD
>>183 最初私もそう思って、次の日やっみましたが、だめでした。
まだ数十回しかエラーみてません。大丈夫だと思います。
186 :
175 :2008/11/18(火) 12:55:52 ID:ueNxgoBD
リンクして表示してるphp書いてるってことは 動画の取得と検索したいんだろ? なんで認証セクション読んでるんだよ
ようつべapiの仕様って意外と丁寧に書いてあるんだな なんでわざわざ古いほう使うの?なにか問題があるのか?
古いのを使いたいんじゃなくて APIのページを読んでないから新しいのを知らない マニュアル読まないタイプ
191 :
nobodyさん :2008/11/18(火) 13:31:28 ID:A89iT03e
リストをincludeで読み込むって PHPのソースコードじゃないただのテキストをincludeしてるのか? 簡略化しないでちゃんとしたソースを出さないとエスパーすぎて答えようがない
193 :
nobodyさん :2008/11/18(火) 13:45:17 ID:A89iT03e
>>192 つまりそういうことです。
言葉足らずですみません。
ソースと言っても
〜HTML文〜
<?php
include(list.dat);
?>
〜HTML文〜
くらいしかないので
>>193 自分の環境だと正常だけども・・・
fileで読み込んでループさせて表示するとかでもいいんじゃない?
foreach(file("list.dat") as $value) {
echo $value;
}
とか
196 :
nobodyさん :2008/11/18(火) 14:06:10 ID:A89iT03e
エスパーっているんだな。 俺にはさっぱり理解できないや
198 :
nobodyさん :2008/11/18(火) 15:35:24 ID:WbAApVvS
ファイルロックしても、音が鳴らないから、 本当にロックされているのかどうか、わからない。 「ファイルロック発動!!」 「カシーーーン!!!!!」 とかって派手に音が鳴って欲しい。一回ごとに。
>>198 =171
アニメのロボットようですね。
そんなあなたの思った"DOM"は某アニメのそれだったんでしょうね
ロックする部分のスクリプトが信用できないなら 音がなったとこでどのみち一緒 音はなってるけど本当にロックされてるのかわからないとか言い出しそうだな
201 :
nobodyさん :2008/11/18(火) 16:31:39 ID:WbAApVvS
$_REQUEST と $_POSTの違いってなに? POSTでデーターがくるってわかりきってるときに $_REQUESTでわざわざ受けるのはセキュリティ的に危険な行為? (GETで送られたデーターも受けてしまう等)
202 :
nobodyさん :2008/11/18(火) 16:36:39 ID:x5+Y4KnD
どなたかご教授お願いします。 【OS名】linux 【PHPのバージョン】php4.3.1 【連携ソフトウェア】mysql 【質問内容】getimagesizeを使って、ただ単純に画像の縦横幅を取得し、cssのクラスを振り分けたいだけなんですが、実行はうまくいっているのに 以下のエラーを吐きます。なぜでしょうか?※ちなみに、phpバージョン4.4.8のサーバではWarning吐きませんでした。初心者でして、ご迷惑おかけしますがどうかよろしくお願いします。 Warning: getimagesize() [function.getimagesize]: Read error! in /home/homepage/public_html/example/2008/0810319.php on line 71 ■phpの記述は以下です <?php $path = "../photo/".<MTIfNonEmpty tag='photodir'><MTphotodir></MTIfNonEmpty>; $dh = opendir($path); while (false !== ($filename = readdir($dh))) { $array[] = $filename;} $num = count($array); $max = 3; $cnt = 0; for ($i=0;$i<$num;$i++) { $filename = $path."/" . $array[$i]; list($width, $height, $type, $attr) = getimagesize($filename); if (Eregi('gif$', $filename) OR Eregi('jpg$', $filename) OR Eregi('jpeg$',$filename) OR Eregi('png$', $filename)) {if ($width > $height) {print("<li class='landscape'><a href='$filename' rel='lightbox[01]'><img src ='$filename' width='260'></a></li>");} else {print("<li class='portrait'><a href='$filename' rel='lightbox[01]'><img src = '$filename' width='260'></a></li>");}}} unset($array); ?>
203 :
nobodyさん :2008/11/18(火) 16:45:20 ID:WbAApVvS
phpの中で <!-----この形式------> のコメント書いても、ちゃんとコメントとして機能 するんだよね? だったら、全部、<!-----この形式------>で コメント統一してもいい?
>203 phpのコメントは「// 〜〜」と「/* 〜〜 */」
>>205 いろんな言語ごちゃまぜにしてるから
#なんてのもあったりする
207 :
202 :2008/11/18(火) 17:42:47 ID:???
>>204 回答ありがとうございます!
$arrayの中身を確認したら、不可視ファイルのサイズまでgetしようとしている事がわかりました。
お手間かけました。解決しました。
ありがとうございました。
>>202 ソースコード見ると突っ込みどころ満載だが
10段階評価でいえば3くらいかな
209 :
nobodyさん :2008/11/18(火) 21:13:41 ID:If9cERb/
質問ですがトラックバックpingをPOST受け取る場合 どういう名前で受け取るのですか? 一般的にポストは$_POST["test"]って感じで受け取りますが このtestの所に何を入れればいいか分かりません。 それと、送られてくるのは?titleなどとgetみたいに送られてくるようですがgetで受信しちゃっていいですよね?
なんていうかその・・・がんばれ
211 :
nobodyさん :2008/11/18(火) 21:51:25 ID:If9cERb/
頑張れません。 そのページを開けば自動的にpostになるんですか?
212 :
nobodyさん :2008/11/18(火) 21:55:48 ID:minqEeYS
('A`;)
>>209 グーグル先生に聞いてください10秒もかからずに分かります
214 :
nobodyさん :2008/11/18(火) 23:05:07 ID:WbAApVvS
http://blog.opsa.jp/archives/18 ↑ここを読んで、
「Notice: Undefined index: 」というエラーを消すための
方法を勉強してたんだけど、なんで
if(isset($_GET[”s”]) && $_GET[”s”]) {
/* 以下略*/
}
って、2つ書かないとだめなのかな?
理由をわかりやすく教えてくれる?
215 :
nobodyさん :2008/11/18(火) 23:06:05 ID:WbAApVvS
コードはのってるんだけど 理由が書いてないんだよね
>>214 おせんべいが腐っているかどうかを調べる前に、
おせんべいがそこにあるかどうかを調べるのさ。
217 :
nobodyさん :2008/11/18(火) 23:20:42 ID:WbAApVvS
>>217 少しは学習しろよ低能
パーミッションの時からちっとも態度が変わってねーじゃねえか
下らんことばっか聞いてないで少しは自分で考えろ
「教えて君」「教える君」というのは、 ネット上に存在する2種類の人種の人たちを示す揶揄された敬称のことであるが その影には「教えない君」という人種が多数いるの事にはあまり注目されていない。 しかし、実はその「教えない君」という人種が一番厄介かつ迷惑な存在だったりするのである。 そもそも荒れる原因というものは「教えない君」の、無秩序かつ、無神経なレスにある部分が 大多数なのだが、彼らの多くは、そういった感覚はどうやら持ち合わせていないようである。 第三者がそうした場面を見た場合に、誰に一番の非があるというのは 「教えない君」にあるというのが客観的事実であるのは明らかなのであるが、 彼らは認めようとしない。 表面上は、「教えない君」はネット上のルールや倫理や秩序などを叫ぶのであるが どうやら真相は、現実社会において蔑まれる存在である「教えない君」の 鬱憤晴らしのようである。 上記でそういった悲哀のレスを付けた人たちは、勇気を持って自らの弱さと過ちを認め 反省しなければならない。 それが、キミたちニートの人間的に成長できる数少ないチャンスなのである。
220 :
nobodyさん :2008/11/18(火) 23:38:38 ID:WbAApVvS
何がどうわからないからこれを教えてくれっていう質問ならわかるけど これはだめなの?どれ使えばいいの? いちいちそんな細かいことばっか疑問もってたら先に進まない 使ってみてだめなのかマニュアル見ながら動かしてみろよ 好きなの使ってみていろいろと発見してみろよ 全ての疑問に説明が必要な要領の悪いやつはプログラム向いてないからやらなくていいよ それでもやりたいなら金払って学校でもいけよ
検索能力は優秀だと思うよw ま少しは自分の頭使って考えてみ
0やnullがセットされているときはどうするのか、 そもそも変数が存在しない(送信されていない)ときはどうするのかということを考えろ お前が考えている仕様次第だ
224 :
nobodyさん :2008/11/19(水) 02:04:29 ID:73F27S5B
「<!--topentry-->PHPを使った正規表現処理<!--/topentry-->」 から「PHPを使った正規表現処理」という文字列を抽出したいのですが、上手くいきません。 ↓の方法のどこがいけないのでしょうか? preg_match("/<!--topentry-->(.*?)<!--\/topentry-->/",$data,$match);
<?php $data="「<!--topentry-->PHPを使った正規表現処理<!--/topentry-->」 から「PHPを使った正規表現処理」という文字列を抽出したいのですが、上手くいきません。 ↓の方法のどこがいけないのでしょうか?"; preg_match("/<!--topentry-->(.*?)<!--\/topentry-->/",$data,$match); var_dump($match); //array(2) { [0]=> string(54) "PHPを使った正規表現処理" [1]=> string(23) "PHPを使った正規表現処理" }
「<!--topentry-->PHPを使った正規表現処理<!--/topentry-->」は正しく抽出されますが、 「<!--topentry--> PHPを使った正規表現処理 <!--/topentry-->」はマッチしないのですが、この場合どうすればよいでしょうか・・・?
すみません。MySQLで列(カラム)の要素を配列として持ちたい (データベース内容をCSVで表すと "1","aaa","100" "2","bbb","150" "3","ccc","130" ↑このaaa、bbb、cccを配列として持ちたい)のですが やり方として、新しい空の配列を作ったあと、 mysql_fetch_array() とかで行を抜き出して 欲しい列の値を配列にarray_push するのが 一番効率いいのじゃないかと思っているのですが どうでしょうか。もしもっといい方法があったら教えてください。お願いします。
きっと下らなくない質問なのだとご主張なのでしょう
【OS名】CentOS5.1
【PHPのバージョン】php 5.1.6
【連携ソフトウェア】javascript
【質問内容】
画像ギャラリーのページを作ろうと思って、
minishowcase
http://minishowcase.net/?main を利用してみたのですが、大きい画像だけサムネイルが自動作成されません。
PHPのGDライブラリを使っているのですが(上記環境ではGD の2.0.28がインス
トールされています)、どのようにしてサムネを作成しているのかわからず、
原因が特定できません。
どなたか何かごぞんじですか。
231 :
nobodyさん :2008/11/19(水) 04:08:29 ID:sZvZzDwd
【OS名】CentOS5.1
【PHPのバージョン】php 5.1.6
【連携ソフトウェア】javascript
【質問内容】
画像ギャラリーのページを作ろうと思って、
minishowcase
http://minishowcase.net/?main を利用してみたのですが、大きい画像だけサムネイルが自動作成されません。
PHPのGDライブラリを使っているのですが(上記環境ではGD の2.0.28がインス
トールされています)、どのようにしてサムネを作成しているのかわからず、
原因が特定できません。
どなたか何かごぞんじですか。
上げ忘れちゃったのでもっかい。
ソース見てみれば?
頭が悪い人間が使いやすい言い回しや 言い間違いが目立つならそいつの間違いを 最初に考える。 経験則では、報告の文でやたら漢字を 使いまくる奴も大体は頭が悪い。 (やたら→矢鱈、しかし→併しとか) 一般的には平仮名で記述する言葉を 上手く判断できないということなのだろう。 数学の試験問題みたいなフォーマルな 記述が出来ている質問ならそいつは 馬鹿じゃない可能性が高いんでバグが あるのかもねと調べてみる。
日本語でおk
>>231 多分、memory_limit
エラーログ見てみ
>>238 その通りでした。ありがとうございました。
俺は精神の筋力がまるでないため、強いストレスを 感じると死体が往来を徘徊する幻覚が見えて、全く 無関係の人間をリビングデッドだと判断して物理的に 攻撃してしまうため、その症状を薬で抑えている。 俺は今から約二年前に都立松沢病院の閉鎖病棟に 入っていたが、あそこは精神力の足りない者の吐き溜め だった。生得的なものか環境によってねじ曲がったのか、 精神の病気になり真っ当な日常生活を送ることができず、 周囲の人間か或いは自分を物理的に傷付けて、時には 死に至らしめる。
なんかメンヘラが迷い込んでますね メンヘラお得意の体験談やポエムはブログでやってね
まぁここにキチガイかまってちゃんが 常駐してるのは今に始まった事じゃないしwwww
スレチは消えてね^^
244 :
nobodyさん :2008/11/19(水) 18:48:29 ID:rh/HC40w
質問 ファイルから「1」を読み込んで プラス1して返す、ってコードを書いたんだが、 ふと思ったんだが、この「1」を数字と解釈してくれるから 普通にプラス1できるわけだが、もしPHPがこれを 数値型でなくて文字型と解釈したら 「文字の1にプラス1加算とかできねーよwww」 とかって言われてプログラムが動かなくなると思うんだが、 なぜPHPはこっちの用意した「1」を数値型だと 認識しているのだろうか??
つマニュアル
>>244 それがPHPのよさであり悪さでもある
echo 1 + "3";
とかしてみればわかる
247 :
nobodyさん :2008/11/19(水) 20:29:08 ID:rh/HC40w
質問 「ボタンが押されたら数字をプラス1してファイルに書き込む」 ってプログラムで、以下のように書いたんだが、 今はこれで動いているんだが、こんな書き方でいいのかな? if (isset($_POST["aaa"])) { /*ボタンが押されたら*/ $fh=fopen("../../n.txt","r+"); /*ファイルを読み書きモードで開く、ファイルポインタに入れる*/ flock($fh, LOCK_EX); // 書き込みロック $a=fgets($fh); //ファイルの中味を取得して$aに入れる $a=$a+1; //$aをプラス1する fseek($fh, 0); // ポインタを先頭に戻す fputs($fh, $a); // さっきプラス1した$aを書き込み fclose($fh); // ファイルを閉じる }
248 :
nobodyさん :2008/11/19(水) 20:30:46 ID:rh/HC40w
特に 「ボタンが押されたら」 の部分の処理に不安がある 教科書に載ってない独自のやり方だから。 教科書のコードは意味の解説がなかったので 信用できんかったので自分で書いてしまったのだが。
249 :
nobodyさん :2008/11/19(水) 20:36:18 ID:rh/HC40w
いろいろググってみたんだが、unsetを使う方法、 emptyを使う方法、is_nullを使う方法、issetを使う方法、 &&で連結する方法、等、 多数の方法が入り乱れていて、どれを選択したらいいのかがわからん。
んなもんそれぞれの関数が どういう役目を持ってるか考えたら自ずと答えは出るだろ・・・ 誰かが食いもんか何かで例えてたけど みかんが存在しなければ食えないし isset みかんがあっても中身がなければ食えない 変数== ''等 で、中身があっても腐ってれば食えない バリデート等
前質問した人?
>>252 お、本当だ
つーかそこの人に連絡してやれよ
多分PHPが使えるディレクトリ等を制限してるんじゃないかな
んでそこを使えるように.htaccessかconfの変更忘れかで
そういう状況
>>254 >つーかそこの人に連絡してやれよ
じゃあ、それ専用のメール送信フォームをphpで書くところからだな
最後のhiddenわらた XXSし放題じゃん
>>256 XSSした所でそれをそのまま他の人に表示しなければ
問題ないからあんな所気にする必要無い
GETでパラメータ付けたURL踏ませたら?
誰に踏ませるの? 自分で踏んで自爆か?
260 :
nobodyさん :2008/11/20(木) 00:15:53 ID:GXD6uC7d
入力フォームを作成する
1.氏名を表示させる
2.男性、女性をreslt.phpで表示させる
男性の場合青、女性の場合赤で表示させること
3.趣味を表示させる
読書、ゲーム、映画、旅行、スポーツ
チェックした項目をreslt.phpで複数表示させる事
チェックした項目には
あなたの趣味は○○と○○ですね。と表示させる
読書、ゲーム、映画、2点以上 のみチェックした場合、「たまには体を動かしましょう」
スポーツ、旅行の 2点チェックした場合 「体を動かすのは良いことです。」
全てチェックを入れた場合には、(5点)「たくさんの趣味がありますね。」
と表示させる
3ができません
助けてください><
http://www9.uploader.jp/dl/naoya6628/naoya6628_uljp00007.zip.html 1,2はできました
C言語が間違ってるんだと思います
質問 「ボタンが押された時に、○○を実行する」 って処理で、issetで&&で if(A && B) { ○○ } (Bは $a!=""って記述) って書かなければいけない、っていうサンプルコードを よく見るんだけど、なんでBが必要なのかわからなかったんだけど、 もしかして、issetは $a=""; の場合をトラップできないので、そのための保険?として Bが必要なのかな?っていうところまでわかったんだけど、 じゃあ、どんな場合に$aが空白になるの? 今度それがわかんない。
262 :
260 :2008/11/20(木) 00:51:53 ID:GXD6uC7d
明日までなんです 練れないです たすけてくだしあ
>>262 result.phpの、
21行目くらいの、
if(isset($_POST["hobby"];)){
↑これ、余計なセミコロン;がついてる。
趣味はname="hobby[]"で受け取って配列回して表示な
265 :
260 :2008/11/20(木) 01:49:02 ID:GXD6uC7d
>>263 本当に感謝www
ライン51のエラーも分かって
sportsにチェック入れたらreadですねってでてきた!!!
間違ってるけどうれしい!!
もうちょっと頑張って本当に分からなければ質問します
ありがとです><
自分の環境で実験したら、 Parse error: syntax error, unexpected ';', expecting ',' or ')' in C:\xampp\htdocs\result.php on line 23 ってエラーが出たもんで、 unexpected ';' って書いてあるもんだから、余計な;セミコロンが あるんだろうなー、、、てわかったんだけど、 エラーメッセージは見なかったのかな?
267 :
260 :2008/11/20(木) 01:52:55 ID:GXD6uC7d
>>264 付け加えたら氏名がhobbyになりますた
xampp(笑)
<?php print $sports ; ?> ↑これが唐突に出てきてるんだけど、 $sports はどこで定義されてるの?
ところでこれって会社の宿題?
271 :
nobodyさん :2008/11/20(木) 02:02:58 ID:YCb8rCMr
非常にくだらない質問なんだが、 マニュアルをコピペしてるだけのサイトってなんなの? 検索でひっかかってすげーウザいんだけど。
272 :
260 :2008/11/20(木) 02:08:17 ID:GXD6uC7d
273 :
nobodyさん :2008/11/20(木) 02:16:54 ID:HLYnX99e
質問 Windowsでphpファイルを作成しているんだが、 エディタの設定で、改行コードは、windowsの標準のCR/LFで 保存されてるんだが、サーバーにアップロードするときに、 特に何もしないで、CR/LFのままアップロードしてるんだが、 本当はUNIX標準改行コードのLFに直してから アップロードしないとだめなの?
274 :
nobodyさん :2008/11/20(木) 02:24:44 ID:HLYnX99e
>>273 自己解決した。
アスキーモードでアップロードするなら、
FTPソフトが自動で改行コードも
変換してくれるそうです。
275 :
272 :2008/11/20(木) 02:24:59 ID:GXD6uC7d
頭痛い マジ分からんお手上げです>< 誰か修正してくだしあ
276 :
nobodyさん :2008/11/20(木) 02:35:00 ID:HLYnX99e
277 :
nobodyさん :2008/11/20(木) 02:36:28 ID:HLYnX99e
初期化されていない変数は、 デフォルトではNULLなのか?
279 :
nobodyさん :2008/11/20(木) 03:57:43 ID:8S9SJ1aO
$today = getdate(); を使って、 31日、毎日違う文を表示させたいのですがどう書いたらいいですか? フリーで探したんですけどなくて・・・
それで日付が取れるだろ? んで31個文章作るだろ? あとはそれ同士をくっつけて取ってくればおk
date()から日付けを文字列で返してそれを違う文配列のキーにすればおk
ID:bw3b61Qh ID:LBY0wnii ID:uO1yzOV4 ID:WbAApVvS ID:rh/HC40w ID:HLYnX99e
283 :
nobodyさん :2008/11/20(木) 05:36:52 ID:8S9SJ1aO
>>280 <?php
$today = getdate();
if($today[mday] == 1) {
include "1.php";
}
elseif($today[mday] == 2) {
include "2.php";
}
else {
include "3.php";
}
?>
似た感じのソースを見つけたんですけど、
こんな感じで elseif を増やしていけばいいですか?
最後のelseは例えばelseif を1〜30まで作って、
どれにも該当しない場合(31日)でる処理で大丈夫ですか?
よろしくお願いします。
>>283 switch文にしな
というかファイル名と日時が一緒なら
単にinclude($today["mday"] . ".php")でいいのでは?
285 :
nobodyさん :2008/11/20(木) 06:21:13 ID:8S9SJ1aO
>>284 ありがとうございます
<?php
$today = getdate();
include($today["mday"] . ".php")
?>
で、済むということですか!?
>>285 1.phpから31.phpを用意するならね
同じディレクトリだとファイル数が多くなってごちゃごちゃするから
もしやるなら別のディレクトリにしたほうがいい気がするけど
include("./dir/" . $today["mday"] . ".php")
今日は○日ですというだけのスクリプトならば
$today = getdate();
echo "今日は" . $today["mday"] . "日です<br>\n";
だけでいいし
数文字程度の占いみたいなメッセージをechoするだけなら
わざわざ30個ファイル作るよりswitch文使って条件分岐した方がいいと思う
その場合メッセージをreturn値にして関数化したほうがごちゃごちゃにならなくていいと思う
お前の回答がごちゃごちゃだわ
>>285 みたいにするならファイルが存在しない場合の処理にも気をつけてな
288 :
nobodyさん :2008/11/20(木) 09:17:44 ID:8S9SJ1aO
>>286 ちょっとreturn値とか頭がこんがらがりそうなので
先ほど教えてくれた、
include("./dir/" . $today["mday"] . ".php") でやってみる事にします。
ありがとうございました。
>>287 わかりました!
でもちょっとやり方がわからないので1−31まできちんと用意すれば
大丈夫ですよね?;
$today = getdate(); $inc_file = "./dir/" . $today["mday"] . ".php"; if (file_exists($inc_file)) { include($inc_file); else { echo "ファイルがないよ"; } 例外処理でやるのが理想的だけどわからなそうだから 簡素化するとこんな感じかね
290 :
nobodyさん :2008/11/20(木) 11:19:40 ID:8S9SJ1aO
>>289 助かりました、そのまま使わせていただきます
親切にありがとうございます!
file_exists($inc_file) && include($inc_file); とかどう
>>291 その時点でincludeされてしまうだろ
is_readableとかならわかるけどさ
きりがないしそこまでやる必要はないと思うけどね
無かったらされないよ?
ああ、if文に書くわけじゃないのね 2回includeするもんだと思ってたわ でも条件演算子を普通に使うのは違和感がある
if文に書いたとしても無かったらされないだろ
296 :
nobodyさん :2008/11/20(木) 17:02:26 ID:HLYnX99e
質問 変数を初期化する、って言ったら、普通 $a= ""; ってするものなの?
必要な初期値で初期化する
298 :
nobodyさん :2008/11/20(木) 17:12:49 ID:HLYnX99e
$a= ""; ↑これでもいいの?
>>295 if文でどう書くの?
if (file_exists($inc_file) && include($inc_file)) {
}
この中身を空にするわけ?
いろいろと構文的にもおかしいよ
何言ってんだ
>>295 が言いたいことは「ファイルがなければ(読めなければ)includeされない」こと
ここを汲み取れ
ちなみにincludeするファイル内にreturn書いてない限りifにincludeを書かない方がいいよな
読めなければfalseになるが、E_WARNINGを制御出来るわけじゃないし
ファイルが存在して適切なパーミッションが設定されていれば includeはできるわけでincludeできることを前提で書いたほうがいい もしファイルが存在して読み込み可能なのにincludeできないなんてことが仮におこった場合 それは普通の状態でないわけで 書き手がそこまで責任を負うことはない
303 :
nobodyさん :2008/11/20(木) 17:47:16 ID:AwsGLaDA
>>299 「仮に」ifの条件中に書いたとしても動作は同じだよってこと言ってるんだと思うが。
ちなみに構文的にどこがだめなん?おかしくないよ。
305 :
nobodyさん :2008/11/20(木) 17:53:21 ID:HLYnX99e
質問 <form name="abc" action="abc.php" method="post"> <input type="submit" value="push" name="def"> </form> <php print_r ($_POST['abc']); print_r ($_POST['def']); print $_POST['abc']; print $_POST['def']; ?> これで、何も表示されないんだが、なんで?
POST送ってないから
includeする前にチェック入れるのってwarning対策ってことが大半だよな? じゃぁifの中にinclude入れると意味ないんじゃ・・・ includeすることが前提で読み込まなきゃ先に進めないようなものならrequire使うだろうし でも構文的には間違ってないな、目的の用途しては適してないだろうけど
308 :
299 :2008/11/20(木) 17:56:49 ID:???
>>304 勘違いしてた
if文の中身書かないとなんかwarnが出たと思ったけど気のせいだった
もし中身書くなら条件文を否定にすればいいのかな?
if (!file_exists() && !include()) {
echo "includeできない";
}
310 :
nobodyさん :2008/11/20(木) 17:57:28 ID:HLYnX99e
>>306 ごめん、初心者なんでそれだけだとわかんない。
313 :
nobodyさん :2008/11/20(木) 17:58:52 ID:HLYnX99e
>>309 あのさ、キミいつも
教え方があまりにも抽象的すぎるんだよ
会社でもそういわれるだろ?
「もっと具体的にわかりやすくしゃべれ」って。
>>308 if (file_exists($inc_file) {
include($inc_file);
} else {
echo 'includeできない';
}
でいいじゃん
と言うか早く「<php」になってることに気付け
>>314 ずばりそれ
別に短く書くことを競ってるわけじゃないしな
後はis_readableとか、is_file絡めるくらいっしょ
317 :
nobodyさん :2008/11/20(木) 18:02:29 ID:HLYnX99e
>>315 サンキュー
構文チェックしたら
No syntax errors detected
になるんだけど、なんで??
無料のエディター使ってるから?
>>307 その通り
ファイルの存在チェックとincludeできるかの評価を
一緒の式ですべきでない
もしやるとしたら
if (file_exists($inc_file)) {
if (include($inc_file)) {
}
}
どうみても冗長だけど
無料のエディタ使うとエラーになるとかwwww
320 :
314 :2008/11/20(木) 18:06:04 ID:???
>>316 ってまぁ
>>289 で既に書かれてたから蛇足もいいところだけど
>>318 それだったら波括弧いらなくね?
てかifの中に入れる場合の議論をする必要性がわからないw
「ifだったら
>>291 は動作しない」→「仮にifに入れても動作は同じ」っていう仮定の話だったのにw
321 :
nobodyさん :2008/11/20(木) 18:06:44 ID:AwsGLaDA
323 :
nobodyさん :2008/11/20(木) 18:07:52 ID:HLYnX99e
次の質問。 <form name="abc" action="ghi.php" method="post"> <input type="submit" value="push" name="def"> </form> <?php $_POST['abc']=""; print_r ($_POST['abc']); print_r ($_POST['def']); print "<br>"; print $_POST['abc']; print $_POST['def']; ?> これで push push と表示されるようになったけど、 <form name="abc" の「abc」と、(1) name="def"> の「def」は、(2) 必ず、違う文字列にしないとだめなの? もし(1)と(2)を同じ文字列にして(例えば「aaa」とか) そんでそれをprintするってときに、 どっちのaaaなのか、phpはちゃんと判別できるの?
325 :
nobodyさん :2008/11/20(木) 18:14:43 ID:HLYnX99e
<form name="abc" action="ggg.php" method="post"> <input type="submit" value="push" name="def"> </form> <?php $_POST['abc']=""; //配列変数初期化 $_POST['def']="";//配列変数初期化 print_r ($_POST['abc']);//プリント print_r ($_POST['def']);//プリント print "<br>"; //改行 print $_POST['abc'];//プリント print $_POST['def'];//プリント ?> ------------------------ ↑これで、画面になんも表示されなくなった。 ということは、ボタンをプッシュする行為では、 変数には、なんの値もセットされない、という 理解でいいのか?
よくない
327 :
nobodyさん :2008/11/20(木) 18:18:31 ID:HLYnX99e
そうだよねー さっきボタン押したときに push って表示されてたもんねえ だからボタンを押すと、pushって文字列が 配列変数にセットされるはずなんだけど、 phpのコードの先頭で、配列変数を初期化してしまうと、 そっちの権力のほうが優先されてしまうのか?
328 :
nobodyさん :2008/11/20(木) 18:18:48 ID:AwsGLaDA
>>322 それ、321に対する回答でしょうか?
「一緒の式ですべきでない」のが「warning対策」という主張なら、
303に書いたリンクにかかれていることからも、実際に試してみた
結果からも、理解できませんでした。
>>327 変数使う時は初期化するのが原則だもんな。
発想は斬新で素晴らしいと思う。
>>328 322でも307でもないけど、307は
「ifは条件を満たしたときに実行したい処理を書くために使うもので、
Warning防止の目的なら291でいいし、未読み込み時の処理実行を防止したいなら
requireを使えばいい話だ」ということを言ってるんじゃないかな
普通に考えてもおかしいだろ includeできるかどうかをチェックするって発想が includeできる状態かどうかをチェックするっていう発想が正解 その上でincludeするのがプログラム的にも自然 この辺は感覚だからうまく説明できないけど まぁ慣れてくればわかるよ
だって2〜3行目が日本語になってないもの
2・3行目で言ってることが理解できないのなら君にはまだ早いわけだ
335 :
nobodyさん :2008/11/20(木) 18:45:45 ID:AwsGLaDA
>>329 307に書かれていることを質問しているわけではないですし、
その要約も318の「一緒の式ですべきでない」につながりません。
>>330 includeできる状態かチェックしても、includeしたとき
「includeできる状態」かどうかわかりませんよ。
ええ、くだらないこと書いてるのは百も承知です。
だけど、自分の正解がみんなの正解とは限らないんですよね。
2行目の最後は。だろ?もしくは脱字か。 悪文なのが原因
>>335 俺318じゃないからそういう言い方されても・・・
推測するしかないけど設計上の問題じゃない?
338 :
nobodyさん :2008/11/20(木) 18:48:54 ID:HLYnX99e
<form name="abc" action="hhh.php" method="post"> <input type="submit" value="push" name="def"> </form> <?php // $_POST['abc']=""; //配列変数初期化 // $_POST['def']="";//配列変数初期化 if (isset($_POST['abc'])){//もしボタンが押されたら print_r ($_POST['abc']); }//プリント print_r ($_POST['def']);//プリント print "<br>"; //改行 if (isset($_POST['abc'])){//もしボタンが押されたら print $_POST['abc'];//プリント } print $_POST['def'];//プリント ?> -------------------------- ↑これにしたら、Noticeエラーも出なくなったし、 ボタン押したら、「push」って表示されるようになった。 しかし、変数の初期化ができないではないか? 変数の初期化をすると、画面に何も表示されなくなってしまう。 どうしたらいいんだ?
339 :
nobodyさん :2008/11/20(木) 18:50:08 ID:HLYnX99e
もしかして、この場合は変数の初期化はしなくてもいいのか? しかし、その場合、セキュリティ上の危険性があるのではないか?
危険だからした方がいい
>>335 随分と疑い深い性格だね
要するにPHPの処理機構を信頼できないわけだな?
includeできる状態でincludeできないというのは起こりえない
その起こりえないケースを想定するなんて時間の無駄
342 :
nobodyさん :2008/11/20(木) 18:53:18 ID:AwsGLaDA
>>337 何を推測していただいたのか判りませんが、
私の頭の思考回路のことなら、たしかに問題あるでしょうね。
include出来る状態か否かチェックして、trueにも拘らずinclude出来ないならPHPにエラー吐いてもらうのが正常なんじゃね
345 :
nobodyさん :2008/11/20(木) 19:01:31 ID:HLYnX99e
>>340 しかし変数を初期化すると、
ボタンを押しても何も表示されなくなるんだよ
なんでなんだろうね?
346 :
nobodyさん :2008/11/20(木) 19:01:45 ID:AwsGLaDA
>>341 PHPが信用できないとは書いていませんし、そう思っている
わけでもありません。
状態を確認してから実際にincludeするまでの間に、
何かが起こる可能性を無視できないんではないかと言っている
だけです。
無視できる人は無視すればいいです。私も無視しています。
初期化してるからでは?
349 :
nobodyさん :2008/11/20(木) 19:03:32 ID:HrZmpLyB
すみません、質問します phpの本を買ったところ、php.iniの設定が必要とありました。内容は extension = pdo_mysql.so として、「MySQLのPDOドライバを有効にする」ということでした。 これは、この通りに書けばいいものなのでしょうか? 拡張ファイルpeclを落とさなきゃいけないのかなと思ったのですが不要ですか? また、拡張ファイルディレクトリ(C:\php\ext)を見たところ php_mysql.dll があり、phpinfo(); で見ても pdo_mysql PDO Driver for MySQL, client library version 5.0.45 とう項目があります。 これは関係ないんでしょうか? 設定関連が皆目わからないのでかなり妙な質問をしてるかもしれませんが よろしくお願いします。
>includeできる状態かチェックしても、includeしたとき
>「includeできる状態」かどうかわかりませんよ。
PHPの内部エラーかサーバのエラーとか想定外のエラーが起きた時にどうするんだみたいな?
昔そんな質問してきた新人がいて返答に困ったな。
そういうのは想定しなくていいとしか言えなかった。
というかID:AwsGLaDAは流れ的に
>>291 の式を支持してるんだよね?
↑の発言からするとID:AwsGLaDA的には
>>291 の式も信用できないんじゃないのかね?
>>346 >何かが起こる可能性を無視できないんではないかと言っている
何が起きるんだよwwwwwww
なんだ・・・最近迷い込んでるメンヘラちゃんか
353 :
nobodyさん :2008/11/20(木) 19:08:20 ID:AwsGLaDA
>>350 「ファイルがないケースもあるから、Warningでるとうざいし、
チェックしとこか」というケースなら、291を書くかもしれません。
330の「正解」という言葉に過敏に反応してレスしているだけです。
>>349 windowsならdllのほうでおkだしphpinfoで表示されてるならもう使える
357 :
nobodyさん :2008/11/20(木) 19:12:20 ID:AwsGLaDA
>>355 335で書いているように、
「自分の正解がみんなの正解とは限らない」です。
前提条件を共有しているならその限りではないです。
358 :
nobodyさん :2008/11/20(木) 19:14:35 ID:HrZmpLyB
>>354 どうもありがとうございます
.soっていうのはリナックス向けなんですかね? とにかく助かりました、ありがとう。
>>357 だから「この場合」のあなたの「自分の正解」を聞いてるんだが
360 :
nobodyさん :2008/11/20(木) 19:15:48 ID:AwsGLaDA
>>356 あ、ごめんね。
303で書いたのは、302の「書き手がそこまで責任を負うことはない」
の部分へのレスでした。
361 :
nobodyさん :2008/11/20(木) 19:18:59 ID:HLYnX99e
次の質問 phpでは、ハッシュと言わずに連想配列と言うの?
>>357 >自分の正解がみんなの正解とは限らない
めんどくさい人だなw
学校の先生ですか?
この世界は答えは1つなんですよ
includeは制御構造であって関数じゃないんです
364 :
nobodyさん :2008/11/20(木) 19:23:07 ID:AwsGLaDA
>>359 「この場合」って
>>285 とか?
自分で 285 のコード書いたとして、
特に問題があるとは思いません。
1から31まで用意しておけば動くんでしょ?
いやいや・・・ includeするタイミングとか方法の話をしてるんじゃないのか?
>>364 ∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
367 :
nobodyさん :2008/11/20(木) 19:34:27 ID:AwsGLaDA
>>365 えーと?
「includeできる状態」をチェックするのがWarningを抑制するためなら、
めんどくさいから
@include();
でいいんじゃないかと。
それ以外の理由なら、その理由による。
>>367 期待はずれでがっかりしたよ
随分自己主張するもんだから期待してたのに
そんな下らない答えだしてくるなら絡みなさんな・・・
369 :
nobodyさん :2008/11/20(木) 19:45:38 ID:AwsGLaDA
>>368 何を期待していたんですか?
たぶん私が考えている「この場合」と他の人のが
違うんでしょうね。まあ当然だけど。
370 :
nobodyさん :2008/11/20(木) 19:51:38 ID:HLYnX99e
次の質問 一般的に、GETで入力値を受け取るのは、危険な行為?
yes
なんかバカばっか
include時の処理なんてクライアント次第だろ
細かくエラー情報残したいってクライアントなら
別々に書いて細かくエラー情報書いたりするし
ある前提でいいよと言うクライアントには
@で制御するだけでいいだろ
そもそもそのチェックが通らないと
画面が真っ白とかっていう状態になるのが
容易に想定できるなら話は別だが
>>370 ちゃんと値チェックすればいい
因みに配列は連想配列と言うほうがPHPでは一般的
あと$_POSTや$_GET等には値を自分で入れ無い方が良い
$defData = $_POST['def'];
等として$defDataを使えば良い
まぁ値を代入する前に値チェック等はきっちりした方が良いけどね
と想像で物語ってる馬鹿がおります includeまわりをクライアントがどうこう注文つけてくると思うか? 保守だってクライアントがやるわけじゃないしアフォか 仕事でPHPやってるふりはしなくていいです すぐやってないってわかるから
それはお前の場合だろ? includeで指定する訳ではなく エラーがあった場合という事は考えられんのかw 画面に出さずにエラーログだけでいいと言う人も居れば 分かり易い言葉でエラーログにと言う人も居るんだよ 仕事自体も完全請負もあれば 一部の機能単位での開発や開発補助というものもある 開発補助の場合はできたら相手に送って 何かしらの問題がでれば対応という風になったりする訳だが そういう事も考えられんのんだろ?
たまにいるんですよ 俺は仕事でPHPやってるんだ!ってウソでもアピールして 自分ペースに有利に話進めようとするのが
たまにいるんですよ 自分で考えられない事を突っ込まれてウソを言ってる!ってアピールして 自分ペースに有利に話進めようとするのが
必死すぎてフイタw
必死すぎてフイタw
痛いとこを突かれて猿真似に走ったか 雑魚め
380 :
nobodyさん :2008/11/20(木) 22:23:23 ID:L838VyLV
ベジータみたいなのがいるな
痛いとこを突かれて猿真似に走ったか 雑魚め
382 :
nobodyさん :2008/11/20(木) 22:55:38 ID:qsQyZgQW
【OS名】Windows 2003 server 【PHPのバージョン】PHP Version 5.2.4(FastCGI for IIS6) 【連携ソフトウェア】mysql 【質問内容】 Fatal error: Call to undefined function mb_ereg_replace() がでる。 Windowsサーバー上でmb_ereg_replaceだけエラーがでます。 mb_convert_kana mb_convert_encoding のようなMB系関数はうごきます。 Fatal errorなので関数がないよっていわれてるんだとおもいますが、mb_ereg_replaceだけないのでおかしいなと。 僕の認識だとMB系は一セットだとおもってたんですがmb_ereg_replaceだけないとかあるんでしょうか? よろしくお願いします。
今どんな気持ち?
∩___∩ ∩___∩
♪ | ノ ⌒ ⌒ヽハッ __ _,, -ー ,, ハッ / ⌒ ⌒ 丶|
/ (●) (●) ハッ (/ "つ`..,: ハッ (●) (●) 丶 今、どんな気持ち?
| ( _●_) ミ :/ :::::i:. ミ (_●_ ) | ねぇ、どんな気持ち?
___ 彡 |∪| ミ :i ─::!,, ミ、 |∪| 、彡____
ヽ___ ヽノ、`\ ヽ.....::::::::: ::::ij(_::● / ヽノ ___/
/ /ヽ < r " .r ミノ~. 〉 /\ 丶
/ /  ̄ :|::| ::::| :::i ゚。  ̄♪ \ 丶
/ / ♪ :|::|
>>372 ::::| :::|: \ 丶
(_ ⌒丶... :` | ::::| :::|_: /⌒_)
| /ヽ }. :.,' ::( :::} } ヘ /
し )). ::i `.-‐" J´((
ソ トントン ソ トントン
384 :
nobodyさん :2008/11/20(木) 22:59:56 ID:L838VyLV
2回書き込んでいるやつはなんなんだ?
キャッシュが残ってて二重投稿してるんだろw
猿真似してるだけ
387 :
nobodyさん :2008/11/20(木) 23:15:35 ID:HrZmpLyB
質問します
http://localhost/index.php をブラウザのURL欄に入れてEnterおすと
このURLに移動しますよね?
やったところ、 「このアドレスへのリクエストに対するサーバのリダイレクト設定がループしています。」という
メッセージが出てきます。
これ自体はプログラムがミスしてるんだなと思うんですが、なぜかこのときURL欄をみると
http://localhost/index.php/ という風に最後に / がついてしまっています。
これはなぜでしょうか?
わからないのですが、、
環境は php5 apache2 でZendFWを使っています。
388 :
nobodyさん :2008/11/20(木) 23:18:57 ID:AwsGLaDA
>>382 全然原因が思いつかないけど。。
コマンドプロンプトで、
> php -rf mb_ereg_replace
とか
> php -re mbstring
とかしたときに、それらしいものは出てきますか?
index.htmlにアクセスしてみ たぶん同じのでるから
rewriteでループしまくってんじゃねーの
>>387 そういうフレームワークの仕様なんじゃないの?
ワードプレスでもそうなるよ
392 :
387 :2008/11/20(木) 23:54:47 ID:???
応えてくれた方、ありがとうございます。 仕様なのかもしれないですね、ループしてしまう部分もあわせて どうにか解決したいと思います。 これからはZendFWのスレで聞きます。 ありがとうございました。
393 :
nobodyさん :2008/11/21(金) 00:22:41 ID:zW/fBXPA
時と場合による
395 :
nobodyさん :2008/11/21(金) 00:31:02 ID:rCZA/W6t
掲示板とか検索機能付きサイト登録とか作りたいんだけど PHPとかPerlとか全く知らないんだけど どっちか片方覚えておけばいいの? それとも両方覚えないといけないの?
片方でおk
>>396 あんがとさん
PHPっていいらしいけど、それでいいかなぁ
あーっと マジで聞くことがあったWebプログラミングを勉強する上で UNIXで動かさないとダメなの? Windowsにアパッチ入れてみたけど、それで勉強したとして それで出来上がったファイルをレンタルサーバに入れて おk?
400 :
382 :2008/11/21(金) 01:33:25 ID:F+S9pS9u
>388 さん Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C:\Documents and Settings\Administrator>php -rf mb_ereg_replace PHP Warning: PHP Startup: zip: Unable to initialize module Module compiled with module API=20060613, debug=0, thread-safety=0 PHP compiled with module API=20060613, debug=0, thread-safety=1 These options need to match in Unknown on line 0 PHP Warning: PHP Startup: pdo_mysql: Unable to initialize module Module compiled with module API=20060613, debug=0, thread-safety=0 PHP compiled with module API=20060613, debug=0, thread-safety=1 These options need to match in Unknown on line 0 PHP Parse error: syntax error, unexpected $end in Command line code on line 1 とこんな感じでエラーが出ます。検索しまくってるんですが、なかなか糸口もみえずぜひアドバイスいただければと思います。
mb関数なんてきっぱりあきらめて自力でゴリゴリ書くよろし
再インスコ
OS : WinXP SP3 PHP : 5.2.6 MySQL : 5.1.29-rc 先ほど環境を整えたのですが、 mysql_connect 関数を呼び出すと httpd.exe に強制終了が起きてしまいます。 Client API header version は 5.1.29-rc で本体と一致しています。 何が原因でしょうか。 ご教授をよろしくお願いいたします。
405 :
nobodyさん :2008/11/21(金) 02:09:46 ID:AgX6JP+G
403です。 ID出し忘れました。失礼しました。 ご教授ください、は誤用なんですね……。
406 :
403 :2008/11/21(金) 02:35:55 ID:???
MySQLのバージョンを5.0系へ落とすことで自己解決しました。 何でも最新がいいわけではないんですね。 失礼しました。
407 :
382 :2008/11/21(金) 02:43:19 ID:???
ご教示なんですね。全くすれ違いですが参考になりました。笑 ふつうにご教授頂ければ幸いです。とかつかってたよ。はずかしい。。。
おれ先月、CCNP取ったけど、何か質問あるか? とあるスレで発言したら、焼き餅焼かれてひどい目にあったので、こっちに来た。 CCNP取ったって言ったけど、元はweb系のSE。 web系の案件も何件かやって、やり尽くした感があるので、今はweb系より高度な技術が要求されるインフラ系のSEにスキルアップ中。
>>408 やきもちじゃなくてスレ違いで勘違いな余計な自己紹介するからだろ
410 :
nobodyさん :2008/11/21(金) 07:34:39 ID:BR6mi0Le
>>400 ごめん。
php --rf mb_ereg_replace
php --re mbstring
だった。
php -h でコマンドラインオプションが確認できます。
間違っていることに気づいて、正しいオプションで実行した結果が
あれなら、重大な問題があるような気がします。
エラーログにも残っていると思うけど、IISだとどうなのか
よくわからないなぁ。
>>398 パーミッションの設定以外は
windowsで実験可能
412 :
nobodyさん :2008/11/21(金) 08:35:35 ID:zW/fBXPA
質問 ウチが借りてるレンタルサーバーは phpファイルのパーミッションが400で 動いているんだが、これでいいのかな?
413 :
nobodyさん :2008/11/21(金) 08:42:11 ID:zW/fBXPA
最初、 「なんで実行権限与えてないのにPHPのファイルが 動くんだろう?」 って思ったけど、もしかして、 「アパッチのモジュールとして動いているから、 実行権限は与える必要は無い」 って解釈であってるのかな?
414 :
nobodyさん :2008/11/21(金) 14:46:23 ID:wJTKWOfA
SMTPとの通信をトレースしているのですが まずSMTPに $socket=fsockopen($server,$port); します fputs($socket,"EHLO $server\r\n"); した後応答が複数行あるのですが、通信をタイムアウトさせることなく 過不足なく取得するにはどうしたらいいでしょうか $response.=fgets($socket,1024);では単行しか取得できず、 fgetsがまだ用意されていないのにfgetsを実行した場合、 通信のタイムアウトまで待ってしまいます
415 :
nobodyさん :2008/11/21(金) 15:03:24 ID:wJTKWOfA
自己解決しました [RESPONSECODE]-[RESPONSESTRING] //最終行以外 [RESPONSECODE] [RESPONSESTRING] //最終行 ですね
くだらなくねえ高度な質問でした
417 :
nobodyさん :2008/11/21(金) 15:43:29 ID:XpwRzbFr
Dreamweaver使ってPHPしてる方とかいますか。
それはできればやめとけ
419 :
nobodyさん :2008/11/21(金) 22:01:25 ID:zW/fBXPA
質問 拡張子が.phpでもSSIって使えるの? よくある設定だと、SSIを使いたいときには、 拡張子をshtmlにしてください、とかあるじゃん。 そしたら、php使えなくネ?って思うわけだ。
>>414 fget()は1行ずつ取る関数。
それならループで回せばいい。
PHP5ならstream_get_contents()が楽ちん
本物の変態だなw
425 :
nobodyさん :2008/11/21(金) 22:21:20 ID:zW/fBXPA
質問 何回も使うファイルをincludeするのに、 SSI使う方法と、phpのinclude使う方法と、 2つの選択肢があると思うのだが、 どちらを使ったほうがいい?
>>361 PHPでは配列と連想配列との区別はない
よって全てを「配列」と呼んでおけばいい
っていうか、そもそも連想配列=ハッシュでないので。
>>277 <?php
var_dump($hoge);
exit;
ハッシュって何だっけ?
↑かっこよすぎるw てかID:zW/fBXPAは連日むかつくよ。 PHP以外の言語も知っているような口ぶりだけど なんでそんなにえらそうな聞き方するんでしょう? 自分で調べようとしてなさそうだし 教えてもらったのならありがとうの一言くらい言えばいいのに。
433 :
たまちゃん ◆ExGQrDul2E :2008/11/22(土) 00:21:58 ID:AbVJZ2V5
この掲示板のように、本文の改行数がn文字以上なら、省略と表示させたいのですが、 省略を表示する以前の文字が表示されません。 文字...略14としたいのです。 $mess = <<< FORM 文字列<br><br><br>あさささ<br>xf文字<br><br><br>czdvf FORM; $msgline = substr_count($mess, "<br>") + 1; if ($msgline > 3) { preg_match("/(.*) <br>.*/U", $mess, $match); $message = $match[1]."<br> 省".$msgline."</a>"; } echo "$message<hr>"; これでは、ただ(省)とだけ表示され、略される前の(文字列)と言う文字は表示されません どのようにすればよいか、教えてください。
>>432 if (淡々と答える事が出来る) {
淡々と答える;
} else {
スルー;
}
>>428 「ハッシュテーブル」とかでググるといいよ。
まぁperlとかでは連想配列をハッシュと呼ぶのが通例だし細かい事は気にするな
>>425 require
PHP5ならautoloadなんかも上手く使うといい
>>433 $encoding = 'UTF-8'; // 実際は定数にする事
$str = 'オリジナルの文字列';
$len = 10;
$str2 = (mb_strlen($str, $encoding) > $len) ? mb_substr($str, 0, $len, $encoding) . '省略' : $str;
echo $str2;
>>433 preg_matchの中の<br>の手前にスペース入ってるよ
437 :
435 :2008/11/22(土) 00:37:53 ID:???
悪い。よく読んでなかった。 $num_br_max = 3; $str = '文字列<br><br><br>あさささ<br>xf文字<br><br><br>czdvf'; $ary = preg_split('/<br>/i', $str); $str2 = (count($ary) > $num_br_max) ? implode('<br>', array_slice($ary, 0, $num_br_max)) . '省略' : $str; echo $str2;
>>435 は質問よく読んでいない
更にmb関数使ってる癖にmb_strimwidthを使わない不思議ちゃん
439 :
438 :2008/11/22(土) 00:40:46 ID:???
っと、ごめん(´・ω・`)
>>438 おお。よく読んでなかったぞ。
しかもmb_strimwidth()とか知らなかったし。吊ってくる
>>434 スレが荒れるから回答者は全員スルーしたほうがいい
過去にも何度もあったことだ・・・
このままの調子だと
回答者はマナーのなってない質問者には回答してはならないっていうルールができてしまう
444 :
たまちゃん ◆ExGQrDul2E :2008/11/22(土) 01:19:45 ID:AbVJZ2V5
>>437 ありがとうございました。
うまく動きました。
>>435 これだと、タグの途中で切れたら
意味がなくなるみたいです。
底辺で生きてる奴はちょっと自分が優位だと思うと豹変するんだよねぇ。 些細なミスをした店員を執拗に罵倒してる客とかたまに見るけど、 普段怒られてばっかで、怒ることに慣れてないから必要以上に相手を罵っちゃうんだろうな。 加減が分からないって可哀想だよね。
まんまお前のことじゃねえかw
ワロタ
448 :
nobodyさん :2008/11/22(土) 16:01:33 ID:ngL3J7iI
PHP5使えるレンタルサーバーで 広告が入らないところといったら、 一番安いのは、さくらになってしまうのかね?
450 :
nobodyさん :2008/11/22(土) 17:11:51 ID:iSnXxlqn
最初、出だしの部分だけ表示して 「続きを読む」をクリックして 全文を表示させるようにしたいのですけど、どうやるのでしょう? 「続きを読む」という文にリンクをかけて、もう一つ全文記事を作って そこで全部書けばいいのでしょうか?
トップページには出だしだけ切り取って表示すれば?
>>450 最近のMovableType4.2なんかだと「本文」と「続き」が別々のフォームで
保存も別にされてる様子。
1個の枠だけで「続きを読む」をやる場合は
まず本文の文字数をチェック。
↓
本文が○文字より長い場合は、頭から○文字までを表示して
一番最後に「…」みたいな省略がある事を明示する文字を付け足して
レコードの個別IDを含んだ全文表示用リンクを表示する。
↓
そうでない場合はそのまま表示する。
って感じだな。
記事の要約をトップページに表示したり
RSSへページの概要としても提供するなら
短い説明文と本文は分けて置いた方が良いと思う。
目次を表示する時に、各項目が「…」で省略されてるのは
クリックするまで中身が完結しないから、目次として微妙になってしまう。
わざと完結させないでPV増やすって技もあるかもしれないけど
他のサイトの方が読みやすければ廃れるのも早いと思われ。
453 :
nobodyさん :2008/11/22(土) 20:48:34 ID:MJ/AoE7Y
質問です。 ブラウザ経由ではなく、コマンドラインでPHPを対話的に操作したいのですが、 1. PHPの対話環境はありませんか?Rubyのirbのようなものです。 php -a は試しましたが、<?php ... ?> に囲まれないと出力されませんし、文 法エラーがあると強制終了だしで、実用に耐えませんでした。 2. 対話環境がないとしたら、 php -f PHPファイル名 しかないと思うのですが、 printのような関数で、最後に改行してくれるものはありませんか? Java の System.out.println(), Ruby の puts のようなものです。
455 :
nobodyさん :2008/11/22(土) 21:25:18 ID:b7xKLs1N
ここを見てアップローダを作ろうとおもったのですが
ttp://w1.nirai.ne.jp/freeze/main/file09.html ----------------------------------------------
$updir = "./updir/";
これが変数に保存用のフォルダを代入している部分です。
$filename = $_FILES['data']['name']
これを、指定フォルダの中に保存するのが、
move_uploaded_file($_FILES['data']['tmp_name'], $updir.$filename)
その後、echo命令で画像を表示しているわけです。
--------------------------------------------
$updir = "./updir/"の部分を他のサーバ、例えば
http://www.example.com/down/ に保存したい場合、どのようにすれば良いでしょうか?
そのまま$updir = "./
http://www.example.com/down/ "とした時、アップロードするとエラーが出てしまいます。
無理です
457 :
nobodyさん :2008/11/22(土) 22:03:15 ID:P3cvCpOq
iisでphpを動かすのと apache + mod_phpで動かすのだと どっちの速度が速い?
場合による
>>455 他のサーバにアップロード用のプログラム用意して、socketで画像データをpostするとか
勿論セキュリティ上出来ない場合もあるだろうし、何より改変は変数一つ書き換えるだけでは済まない
他のサーバにPOSTするぐらいなら、ftpで保存先に送るシェルスクリプトを 流すようにした方が多分作るのは楽だろw
その保存したいサーバで実行すればいい
462 :
nobodyさん :2008/11/22(土) 22:17:29 ID:P3cvCpOq
464 :
nobodyさん :2008/11/23(日) 08:59:40 ID:7jpbyfc1
サーバーに test.php.jpgって感じのファイルでphpコードを書いたものを アップしたんですが、phpとして実行されてしまうようです。 これは、Apacheの設定の問題でしょうか? Apache/2.0.63 (CentOS) php 5.1.x httpd.confで下記のように設定しています LoadModule php5_module modules/libphp5.so AddHandler php5-script .php AddType text/html .php
ファイル偽装したいけどできないってこと? mod_mime_magicあたりが効いてるとかじゃないかな
466 :
nobodyさん :2008/11/23(日) 10:12:13 ID:7jpbyfc1
ありがとうございます ファイル偽装を防ぎたいけど、 AddType image/png png AddType image/gif gif AddType image/jpeg .jpg jpeg こんな感じで書いても phpinfoとか余裕で実行できちゃうんですよね。 LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule mime_module modules/mod_mime.so # TypesConfig describes where the mime.types file (or equivalent) is TypesConfig /etc/mime.types でmime.typesの一覧にはちゃんとjpgも入ってるんですけど・・・ mod_mime_magicが先頭の数バイトを読んで、phpと判断してphpに処理を 渡しちゃうんですかね・・・ そうすると、スレチですか。。
467 :
nobodyさん :2008/11/23(日) 10:40:35 ID:7jpbyfc1
mod_mime_magic を外してみたんですが、一緒でした。 もう少し調べてみます
*nix系ならfileってコマンドでファイルのタイプが分かるよ。 うる覚えだけどPHPからシェルコマンド実行する場合は 配列かなんかで戻ってきて、確か1番目が名前かサイズ?で 2番目とかにファイルタイプが入ってた様な気がする。 もしかしたら改行で分割して自分で配列に入れてたかも。 まあ細かい手順はともかく、*nix系なら、 fileコマンドでチェックすれば、拡張子にかかわらずファイルのヘッダ見てくれる。
普通に設定してたらありえなくねー? んなもんが余裕でできてたら今ごろ被害者続出だろ
質問です。
こんなコードが、問題なく動くようなのですが、PHPマニュアルのどこを見たら
この件が書かれているでしょうか?
<?php
class Test {
fuction() {
var_dump($this->hogehoge); // 定義に存在しないインスタンス変数にアクセス。
}
}
$test = new Test();
$test->hogehoge = 3;
var_dump($test->hogehoge); // 正常に実行。int(3)
$test->fugafuga(); // 正常に実行。iint(3)
?>
http://www.php.net/manual/ja/ PHP4、5の「クラスとオブジェクト」を読みましたが、載っていないようです。
471 :
nobodyさん :2008/11/23(日) 16:43:21 ID:I9fabXwC
あ、ID出し忘れました。
472 :
nobodyさん :2008/11/23(日) 16:57:45 ID:I9fabXwC
補足すると、この書き方はCakePHP1.2のソースを読んでいて見つけたものです。
定義しなきゃ代入しちゃだめなんて誰が言ってたの
474 :
nobodyさん :2008/11/23(日) 17:15:59 ID:I9fabXwC
以前知り合いから聞きました。 JavaやRubyではできませんから、自分もそうだと思ってました。 PHPマニュアルで、これに関する記述を探していますが見つかりません。
>問題なく動くようなのですが お前試してないだろ
476 :
nobodyさん :2008/11/23(日) 17:22:43 ID:I9fabXwC
失礼。元のクラスは長かったので、編集しましたがミスしました。 <?php class Test { function fugafuga() { var_dump($this->hogehoge); } } $test = new Test(); $test->hogehoge = 3; var_dump($test->hogehoge); $test->fugafuga(); ?>
477 :
nobodyさん :2008/11/23(日) 17:49:13 ID:I9fabXwC
追加の質問です。 同じくcakeのソースで、このような記述が見つかりました。 変数名をパラメタライズしている点で、可変変数に似ています。 これについても、該当するPHPマニュアルを探しています。 class Test { var $hoge = 1; function fuga() { $x = "hoge"; var_dump($this->$x); //これはOK。 } } $test = new Test(); $test->fuga(); // OK。 $y = "hoge" var_dump($test->$y); // これはNG. 特に知りたいのは、レシーバが $this なら実行できて、$testのような実変数 だと実行できない理由です。
>特に知りたいのは、レシーバが $this なら実行できて、$testのような実変数 だと実行できない理由です。 実行できない理由は、そういう風に作られているから 実行できないように作られた理由は、知らん
前の方の
>問題なく動くようなのですが
は親クラスで何か定義されてるんじゃないの?
>>477 「クラスの中」と「クラス内のメソッド」と「外」は、
それぞれスコープ違うよ。
じゃ無いとインスタンスの内部に保存した変数が
上書きされちゃって困るだろ。
732 名前: nobodyさん [sage] 投稿日: 2008/11/23(日) 17:51:46 ID:???
>>731 それはわかってますし、
>>726 でも「ローカル変数」って書いてます。
取り合えず
>>730 のスレにお越しください。
733 名前: nobodyさん [sage] 投稿日: 2008/11/23(日) 18:08:06 ID:???
喧嘩がしたかったようだね('A`)
734 名前: nobodyさん [sage] 投稿日: 2008/11/23(日) 18:12:23 ID:???
わざと喧嘩腰でデタラメ書いて、
顔真っ赤にした人が正解を書くのを釣るタイプ。
このタイプはもう飽きたよ。
735 名前: nobodyさん [sage] 投稿日: 2008/11/23(日) 18:12:48 ID:???
>>733 > 喧嘩がしたかったようだね('A`)
なんでそうなるのかぜんぜん理解できない。
誤解を訂正して誘導しただけじゃん。
736 名前: nobodyさん [sage] 投稿日: 2008/11/23(日) 18:14:32 ID:???
>>734 ぜんぜん釣りじゃないよ。
どこがデタラメなのか真剣に知りたいんだけど。
482 :
nobodyさん :2008/11/23(日) 18:35:38 ID:I9fabXwC
>>479 > は親クラスで何か定義されてるんじゃないの?
されていません。
>>476 のコードをお試しください。
>
>>477 > 「クラスの中」と「クラス内のメソッド」と「外」は、
> それぞれスコープ違うよ。
それは知っています。私は元々Java屋です。
しかし、スコープが違うことと、
$this->変数 は実行できても、変数->変数 が実行できないこととは
あまり関係がないと思うのですが。
いずれにせよ、これらの機能は、フレームワークのソースで使われているわけ
ですから、undocumentedな隠し機能をではないだろうと思ったのですが、典拠
を見つけられなくて困っているのです。
483 :
nobodyさん :2008/11/23(日) 18:49:20 ID:I9fabXwC
class Test { var $hoge = 1; function fuga() { $x = "hoge"; var_dump($this->$x); //これはOK。本来$thisは要らないけど、同じクラス内だから。 } } $test = new Test(); $test->fuga(); // OK。testインスタンス内のfugaメソッドを呼んでるから。 $y = "hoge" var_dump($test->$y); // これはNG. $yはtestインスタンスの中に無いから。
可変変数は関係なくて、難しく考えすぎてるだけじゃないの?
>>477 やってみたけどvar_dump($test->$y);も実行できたよ(int(1))
> 特に知りたいのは、レシーバが $this なら実行できて、$testのような実変数
> だと実行できない理由です。
$y = "hoge"の末尾にセミコロンがない
487 :
nobodyさん :2008/11/23(日) 19:13:15 ID:I9fabXwC
>>484 > var_dump($this->$x); //これはOK。本来$thisは要らないけど、同じクラス内だから。
細かいですが、$thisは要るでしょう?無ければ fuga()の出力は 1ではなく
"hoge"になってしまいます。
> var_dump($test->$y); // これはNG. $yはtestインスタンスの中に無いから。
ここが要点だと思うのですが、$testインスタンスの中の変数でしか、プロパティ
名のパラメタライズができないということでしょうか?
試してみました。
<?php
class Test {
var $x = "hoge";
var $hoge = 1;
function fuga() {
$x = "hoge";
var_dump($this->$x); //これはOK。
var_dump($this->{$this->x}); //これはOK。
}
}
$test = new Test();
$test->fuga(); // OK。
var_dump($test->{$test->x});// OK。
?>
おお、最後の行もちゃんとint(i)が出力されます!ありがとうございます。
この件について、参考になる資料をご存知でしたら、教えていただけないでしょうか?
あと、どなたか
>>470 (
>>476 )についてもお願いいたします。
488 :
nobodyさん :2008/11/23(日) 19:21:59 ID:I9fabXwC
>>485-486 大正解…。自分も確認しました。セミコロンか…ごめんなさい。
プロパティ名はどこでも変数でパラメタライズできる、ということのようです。
メソッドでも行けますね。
$y = "fuga";
$test->$y(); //int(1)
ありがとうございました。よろしかったら資料をご紹介ください。
あと、どなたか
>>470 (
>>476 )についても。
ああ、意味分かったよ。ゴメソm(__)m var_dump($test->$y);を var_dump($test->y); と思ってて、この人何言ってるんだろうと思ってた。 var_dump($test->hoge());が $a = "hoge"; var_dump($test->$a()); って出来る筈なのに出来ないのは何故だーって話だったのか。
490 :
nobodyさん :2008/11/23(日) 19:30:26 ID:CCu6AGm0
PHPってスタンドアローンのアプリ作れますか?
492 :
nobodyさん :2008/11/23(日) 19:55:18 ID:I9fabXwC
しつこく補足です。変数じゃなくて、リテラルでもOKでした。 $test->"fuga"(); // これはダメですが、 $test->{"fuga"}(); // これはOK! しかし通常の関数は、変数じゃないとダメ。 function fugafuga() { var_dump("fugafuga"); } $y = "fugafuga"; $y(); // これはOK。 {"fugafuga"}(); //こっちはダメ。 ? どこにこの仕様は載ってるんでしょう!?
確かに、どこに書いてあるんでしょうねぇ。 リテラルの動作とブレスの動作はそれぞれ意味があって、 不思議とは思わないんでスルーしてましたけど、 どっかに公開されていてもいいはずですよね。 Zendのテストにはその手の設問は結構あるから、日本語化されていないどこかに リソースがあるんでしょうけど。詳しい人いないですかね。自分も興味あります。
>>492 それは正式な仕様じゃないと思う。
おっぱいが式の前にパースされて、たまたま動いてるだけかと。
一手間増えても常に
$y = "fugafuga";
$hoge->$y;
にしておいた方が安全。
>>489 失礼、レスし忘れておりました。
私の質問の意図は、おっしゃるとおりです。
> と思ってて、この人何言ってるんだろうと思ってた。
Cakeスレの人たちもそのように誤解したのでしょうか。自分でははっきり書い
たつもりだったのですが、実際は分かりにくかったようです…。
書いてねーよ。内容といい嘘といい人に迷惑かけまくりな奴だな
あぁ、ちなみに、仕様がどこに書いてあるかは知らないけど 標準クラスの挙動が知りたいだけなら、Reflectionでソースを見ればだいたいわかる
498 :
nobodyさん :2008/11/23(日) 20:30:32 ID:DgqkQkfl
pagerの質問なんですが、現在のページの表示を変えられるということで ↓を試したんですが出来ませんでした。どこを直せばよいでしょうか?よろしくおねがいします。 <?php $data = array( '1件目のデータ', '2件目のデータ', '3件目のデータ', '4件目のデータ',); require_once 'Pager/Pager.php'; $params = array( 'itemData' => $data, 'perPage'=> 2 "curPageSpanPre" => "[", "curPageSpanPost" => "]" ); $pager = & Pager::factory($params); $pages = $pager->getPageData(); $links = $pager->getLinks(); foreach ($pager->getPageData() as $val) { echo $val . '<br>'; } echo '<p>' . $links['all'] . '</p>'; ?>
> var_dump($test->hoge());が > $a = "hoge"; > var_dump($test->$a()); > って出来る筈なのに出来ないのは何故だーって話だったのか。 出来るよ?
500 :
nobodyさん :2008/11/23(日) 20:39:18 ID:I9fabXwC
>>493 おお、興味を持ってくれた方が。
これはメタプログラミングに属する話題で、RailsのクローンであるCakeを成り
立たせた重要な技術だと思うんです。
>>494 そうですね。これは避けます。
そもそも、リテラルで呼び出すメリットはありませんから。
(関数名が固定だったら、直接 fugafuga() と書けば良い)。
>>496 書いてますので、冷静に読み直していただいたら、別の見解があるかもしれま
せん。つうか嘘って何?
>>497 よく分かりませんが、リフレクション機能のCのソースを読めとおっしゃってる
のでしょうか?
ご回答いただきありがとうございます。いったん所用でここを離れます。
>>500 >おお、興味を持ってくれた方が。
>これはメタプログラミングに属する話題で、RailsのクローンであるCakeを成り
>立たせた重要な技術だと思うんです。
get_class_vars
get_class
get_class_methods
call_user_func(array($obj, $method_name), $parameter);
辺りでどうにでもなると思うけど。
503 :
nobodyさん :2008/11/23(日) 21:12:49 ID:DgqkQkfl
>>502 !!!
ありがとうございました。恥ずかしいっスorz
504 :
498 :2008/11/23(日) 21:32:36 ID:???
恥ついでにもう一つ質問お願いします。498にcurPageSpanPreの値にspan.currentというタグを入れて とあるHPに乗っていたCSSを加えたのですが、一番左のブロックだけ上にずれてしまいます。 特に間違ってそうなところはなさそうなんですが・・・ご指摘お願いできませんでしょうか。 div.pager { font-size: 85%; } div.pager a, div.pager span { display: block; float: left; margin-right: 0.1em; padding: 0.2em 0.5em; } div.pager a { color: #105cb6; background-color: #fff; border: 1px solid #9aafe5; text-decoration: none; } div.pager a:hover { color: #003; background-color:#0000FF; border: 1px solid #2e6ab1; } div.pager span.current { color: #fff; background-color: #2e6ab1; border: 1px solid #2e6ab1; font-weight: bold; }
505 :
498 :2008/11/23(日) 21:33:15 ID:DgqkQkfl
↑ID出し忘れてしまいました。すいません
>>491 これってVBみたいにポトペタで作れるんで無くて、
コードをガリガリ書くタイプでしょう?
507 :
nobodyさん :2008/11/23(日) 21:40:21 ID:EISunP9D
質問 (1)東京か、地方か (2)年齢 (3)使用言語 (4)使用OS (5)分野(ゲーム、業務、ネットワーク、携帯等) (6)希望している月額の金額 (7)最終学歴 こんなアンケート作って 統計処理しようと思ったんだけど、ただ単純に データーを保存しただけでは、いわゆるカード型データーベースに なってしまうので、いわゆる統計処理をしたいのであれば、 最初から、リレーショナルデーターベース、(MySQLとか)に 保存するように設計しないとだめなのかな?
microsoft SQL Serverじゃないと無理じゃね。
509 :
nobodyさん :2008/11/23(日) 22:09:44 ID:EISunP9D
アンケートなら大した総数にならないだろうから 単純にファイルに行単位で追加書き込みしていってもいいかと思う
511 :
nobodyさん :2008/11/23(日) 22:16:42 ID:EISunP9D
>>510 いやだから。
そのあとで、統計処理するんですよ。
東京が何人で、地方が何人とか。
大卒で35才以上だけ抜き出して人数表示するとか。
そうしたらリレーショナルデーターベースでないと
できないんでしょう?
その統計処理とやらの部分を自分で実装すればいいじゃんw
統計処理なんて単純な足し算だと思うがなんか他に難しいことあったっけ?
514 :
nobodyさん :2008/11/23(日) 22:34:16 ID:EISunP9D
「地方」でなおかつ「高卒」でなおかつ「35歳以上」だけ抜き出す、とか そういうことです。
なおかつ っていうのは条件文 A && B で実現できるよ
例えばデータがプレーンテキストにあるデリミタで区切られて一行におさめられているとしたら、 それを行ごとに配列で読み込んで、 ループでif (地方 && 高卒 && 35歳以上) とすればいいだけ 個人でスケーラビリティ(状況に応じてデータベースサーバを何台も増設するみたいな)を考慮しないんであれば、 それで十分だよ
517 :
nobodyさん :2008/11/23(日) 22:49:43 ID:EISunP9D
518 :
nobodyさん :2008/11/23(日) 22:50:24 ID:EISunP9D
何百通りもあるんだよ!!! 、、、って書こうと思ったが、それは変数で処理すればいいのかな?
SQLだって条件で抽出するから同じこと
そのジャンルなら、めちゃくちゃ多く見積もっても数千だから カンマで区切って書き出すだけで.csvファイルとして エクセルに読ませれば並び替えと抽出できるし、 配列とかの処理すら不要に感じる。 以下のファイルをダウンロードして下さい(エクセル形式) で、押し通せば良いんじゃねーの? 「なんと、エクセルで読み込めるんです!」くらいの勢いで。
>>520 お前が会社でどういう扱いされているか
目に浮かぶようだ
>>500 自前でフレームワークを作ろうとしてるの?
観点が利用するという感覚じゃないようなので
単なるアンケートならば、簡単なINSERTとSELECTだけで事足りるはずだから、SQLったってそう難しくは無い。 そこまでの内容なら一日で覚えられるはずだし、どうしても複雑な条件を扱いたいならSELECTで抜いてからPHP側で処理する手もあるしな。 実行速度以前に、トータルの作業速度も恐らくSQL使ったほうが早い。 MySQLを導入するのがダルいってんなら、SQLiteかなんかに突っ込んでおけばいい。 インストール不要、ユーザー管理不要のお手軽DBMS。PHP5は標準で対応してる(5.2以降だっけか?)。
524 :
nobodyさん :2008/11/24(月) 01:18:49 ID:Wj+KImYJ
戻りました。IDは変わっていますが。
>>501 > get_class_vars
> get_class
> get_class_methods
> call_user_func(array($obj, $method_name), $parameter);
> 辺りでどうにでもなると思うけど。
ありがとうございます。 call_user_func() が
array(オブジェクトインスタンス, メソッド名の文字列) という引数を取れる
とは知りませんでした。
array(クラス名の文字列、メソッド名の文字列)しか取れないと思っていました。
つまり、スタティック呼び出ししかできないと思っていたのです。確かにこれ
なら、$test->$x() のような、インスタンスメソッドの呼び出しができますね。
しかし、マニュアルにもこうあったのですが。
http://jp.php.net/manual/ja/function.call-user-func.php > このパラメータに array($classname, $methodname) を指定することにより、
> クラスメソッドも静的にコールすることができます。
やっぱりこれも undocumented?
525 :
nobodyさん :2008/11/24(月) 01:24:51 ID:Wj+KImYJ
>>522 > 自前でフレームワークを作ろうとしてるの?
> 観点が利用するという感覚じゃないようなので
いえ、私は単にCakePHP、およびPHP言語自体を理解したいだけです。
ソースを追っていて理解できなかったので質問させていただいたのです。
しかし、まだどなたにも参考資料をご提示いただけません。もしかして、この
件は全部、PHPマニュアルには無いのでしょうか?PHPってこういう「隠し機能」
だらけなのでしょうか?
しかし仮にそうだとしても、これだけメジャーなフレームワークが採用するぐ
らいですから、ある程度、PHPコミュニティで知られた機能だと思うのです。そ
ういう準公式ドキュメントのようなものは、どこかに無いものでしょうか。
>>524 どこにオブジェクトを引数として取れると書いてあるの?
$classnameを$objと書き間違えたんじゃないの?
>>525 ドキュメントが適当でクラス機能が壊れてるのがphp
まず最初にこれを学習したことが一番大きい
後は自分でシコシコ解析しながら進める
これがphpならではの勉強方法
528 :
nobodyさん :2008/11/24(月) 01:45:50 ID:Wj+KImYJ
もう一つ、
>>470 (
>>476 )についても、補足させてください。
$test = new Test();
$test->hogehoge = 3; //クラス定義に存在しないプロパティに代入
var_dump($test->hogehoge); // 正常に実行。int(3)
この挙動には、二つの点で興味があります。
1つ目は、もし代入するだけでプロパティが生成できるのなら、var hogehoge;
といった変数宣言文は必要なかったじゃないか、という言語仕様上の疑問です。
実際、他の言語で代入でプロパティを宣言できる言語(JavaScript, Pythonなど)
には、プロパティの宣言文は存在しません。Rubyも、クラス内でしか代入でき
ないという違いはありますが(Rubyにはpublicなインスタンス変数は無い)、同
様に宣言文は存在していません。なぜPHPは二通りの宣言方法を用意したのでしょ
うか?
2つ目は、実用上の問題で、このようにして変数宣言なしで定義されたプロパティ
があるなら、ソースをgrepするときに困るということです。CakePHP以外でもこ
の書き方が多用されているなら、grep "var hogehoge" では見つからないプロ
パティ定義がたくさんあるはずで、これはどう対処したものか、ということな
のです。
その辺の疑問を解決するためにも、まずはこの機能の公式ページ、ないしは準
公式ページを知りたいと思っております。
529 :
nobodyさん :2008/11/24(月) 01:46:43 ID:Wj+KImYJ
あとどなたか、
>>497 さんの
> 標準クラスの挙動が知りたいだけなら、Reflectionでソースを見ればだいたいわかる
という言葉の意味を教えていただけませんか?
「Reflectionでソースを見る」とはどういう意味なのか、残念ながら見当が付
きません。リフレクションで分かるのは、ソースではなくて、生成されたイン
スタンスやクラスの特性だと思うのですが。
そんなマニュアルが揃ってる言語てあるんですか? WEBプログラムはWindowsアプリなどよりも ネットでのドキュメント量が豊富だと思いますが
532 :
nobodyさん :2008/11/24(月) 01:59:09 ID:Wj+KImYJ
>>526 > $classnameを$objと書き間違えたんじゃないの?
私も書き間違いかと思ったのですが、ためしに$objにオブジェクトインスタン
スを与えたら動いたんです。
>>527 > ドキュメントが適当でクラス機能が壊れてるのがphp
> 後は自分でシコシコ解析しながら進める
うう…。Java育ちにはつらい話です。しかし、みんなが undocumented な機能
を多用していたら、Zend社がそれを突然廃止したとき、困るのではありません
か?特に仕事で使っているのなら。
Tips/PHP/foreach関数が使えない? - ゼンド・ジャパン株式会社 技術情報コンテンツ
http://www.zend.co.jp/tech/index.php?Tips%2FPHP%2Fforeach%B4%D8%BF%F4%A4%AC%BB%C8%A4%A8%A4%CA%A4%A4%A1%A9 >>530 > そんなマニュアルが揃ってる言語てあるんですか?
> WEBプログラムはWindowsアプリなどよりも
> ネットでのドキュメント量が豊富だと思いますが
JavaやPythonは非常によくドキュメントが整備されています。Rubyは少し落ち
ますが、これほど大きな機能が undocumented になっているのは考えられません。
Windowsよりネット上のドキュメントが多いのは同意ですが、問題は、公式でな
い仕様はいつ変わるか保証が無いことです。
>>528 単純にあなたの検索力がかなり低いと思うのだが・・・
クラス機能が壊れてるから公式ドキュメントが無いんじゃないのw
535 :
nobodyさん :2008/11/24(月) 02:16:41 ID:Wj+KImYJ
>>531 すみませんがますます分かりません。コードを実行してみましたが、メソッド
名やクラス名、アクセス修飾子といった属性が取得できただけです。まあリフ
レクションとはそういうものですが。
そもそも、私の質問とどう関連するのか、申し訳ないのですが見当が付きません。
>>533 > 単純にあなたの検索力がかなり低いと思うのだが・・・
恥ずかしながら正解です。言い訳ですが、PHPは始めたばかりなもので。あつか
ましいとは思いますが、何とかお助けいただけないでしょうか。
>>534 > クラス機能が壊れてるから公式ドキュメントが無いんじゃないのw
そうかもしれません…。でも、コミュニティである程度は評価された機能でな
かったら、フレームワーク製作者はそれを利用しないと思うのですが。
>>528 cakePHPの
var hogehoge;
なんかはPHP5でも4との互換性の為にpublicとして動くんだけど
実際は非推奨になっててpublic/protected/privateを付けた方が良い。
PHP6になったらvarでの宣言は消される可能性がある。
メソッド内で宣言してないプロパティを使うと
null値のpublicプロパティとして扱われるけど、
ドキュメント化はされてないと思うから、本来は推奨されてない書き方。
cakePHPは4と5対応だから無理して両方で動く書き方してるに過ぎない。
ソース読むならZFかSymfonyにしといた方が良い。
PHPはまだオブジェクト指向を取り入れてる途中にあるから
クラスの細かい部分の説明が無いのは変わる可能性が
あると思ってた方が安全。
名前空間のセパレータが\になりそうで
\tHogeとか\nhogeの場合に気持ち悪すぎるって
騒ぎがあったのが最近だし。
537 :
nobodyさん :2008/11/24(月) 02:59:52 ID:Wj+KImYJ
>>536 大変詳しい説明、ありがとうございます。cakeはPHP4、5で動かすために、非推
奨の機能を多用しているということなのですね。
> $x = "hoge";
> $obj->$x; // $obj->hoge; と同じ。
や、
> $obj->hogehoge = 3; //代入でプロパティが宣言できる。
も、 undocumented な非推奨機能ということなのでしょうか?うーん。
ところで、cakeはなぜこれを採用したのでしょう?
自分がさっき考えたのは、プロパティの動的生成が目的だったのかな、という
ことです。例えば以下のような感じでしょうか。
<?php
class Test {
}
$test = new Test();
foreach (array("hoge", "fuga", "piyo") as $prop_name) {
$test->$prop_name = "hogehoge";
//$test->hoge, $test->fuga, $test->piyo が定義される。
}
?>
PHP(5)のリフレクションはほとんど知らないのですが、こういうことはPHP4で
は、公式の機能だけでは実現できないのではないでしょうか?まだcakeのソー
スは見始めたばかりで、こんなコードがあるかどうかはわかりませんが。
夜も遅くなりましたので、これで失礼します。明日また来ると思います。
宣言してないと notice とか e_strict とか出ないっけ
>>528 php4環境のことは忘れて、php5の最新版に絞ってはいかがでしょうか。
あと、ソースを読んでどうこうしたいならcakeみたいな実用FWはやめたほうがいい。
ZFのほうが技術的には吉かと。
> この挙動には、二つの点で興味があります。
> 1つ目は、もし代入するだけでプロパティが生成できるのなら、
> var hogehoge;といった変数宣言文は必要なかったじゃないか、という言語仕様上の疑問です。
単に冗長化してある仕様であるとしか。
なぜ、それを用意したかという動機の部分は、DevMLで聞くしかないでしょう。
宣言なしでも変数を最初に使った時に作成されるというphpの仕様です。
しかし、クラス変数にpublic protected privateなどで宣言したいケースが
存在することは問題ないですよね?
基本的に内部プロパティを持っていないクラス変数を作成するという機能を
自作クラスで抑制したいときは__set($name)で制御できます。
> 2つ目は、実用上の問題で、このようにして変数宣言なしで定義されたプロパティ
> があるなら、ソースをgrepするときに困るということです。CakePHP以外でもこ
Cakeにはphp4対応しようという歴史的経緯があって、ソースの解析を難しくして
しまっています。
同様にphp4 php5両対応のシステムは、oop的に??です、特にjava等本格的oop
出身の人がphp4のソースを扱うのは無駄です。労力的に。
貧弱でルーズなオブジェクト指向でむりくり実装しているので、それぞれのシステム
のポリシーに振り回されることになります。
540 :
nobodyさん :2008/11/24(月) 09:37:17 ID:161WFI/v
【OS名】windowsXP 【PHPのバージョン】php5.2.6 【質問内容】 ローカルでテストしていたら今まで問題なく動いていたファイルが fputsで書き込みが出来なくなってしましました fopenは出来ているようです また同じファイルがサーバー上では問題なく動いています ローカルではなぜかfile_put_contentsなら書き込み出来るんですが 借りているサーバーのPHPのバージョンが4なため途方にくれています 検索してみたのですがローカルでは動くがサーバーで動かないなどの逆の パターンばかりです 直前にいじっていたファイルがおかしい部分があったのでそのせいかと思い xamppを全てアンインストールし最新のものにしたのですがまったく変わらず fputsがきかない状態です $dataup = fopen("./data.dat", "r+"); flock($dataup, LOCK_SH); fputs($dataup , "$up\n"); flock($dataup, LOCK_UN); fclose($dataup); 上記の中に何か問題があるのでしょうか どなたかご教授お願いします
>>540 './data.dat'に書き込み権限が無いんでしょ。
つまりパーミッションを見直しましょうという事。
>>537 ここまでの流れも全く読まずにレス。
>>539 も書いてるが、PHP4とPHP5の両方に無理に対応させようとした結果、色々と冗長な部分がある。
他言語から入ってきた人でもしも環境が許すなら、PHP5一本に絞る事をお勧めする。
もう俺、PHP4のソースなんて見る気がしないわ(;´A`)
>>507 PHPならMySQLかSQLiteが手っ取り早いだろうね。
ただ予想されるデータ数が少なくてテキストファイルベースでやりたいなら、
ある意味頭の悪い方法ではあるが、一度全部配列にぶち込んでしまえばいい。
あとは抽出なりソートなりどうとでもなる。
542 :
541 :2008/11/24(月) 11:38:25 ID:???
>>540 あ、悪い。local(Windows上)で書き込みが出来ないのか。
phpのエラーログは?
あと質問とは関係ないが、「LOCK_SH」ではなく「LOCK_EX」だね。この場合。
初心者です。 自分のサイトで100以上のページを管理しているんですが、 すべて拡張子がhtmlになっています。 これからは管理しやすいように、 フッターとヘッダーとサイドバーを <?php include_once("header.inc"); include_once("footer.inc"); include_once("sidebar.inc"); ?> <body> <?php echo "*********" ?> </body> みたいにphpで取り込んで出力しようと思うんですが、 これまでhtmlだったファイルの拡張子をphpに変更すると、URIが変わってしまうので ページランクを継承できないかと思います。 URIを ***.html にしたまま、phpで取り込むうまいやり方はありませんでしょうか。
>>543 あまりお勧めはしたくないが、拡張子「.html」をPHPとして動作するようにするかな。
「AddHandler htaccess」でググって見たらいい。
htaccessが許可されてないがSSIなら使えるサーバーなら
ヘッダ・フッタの読み込みにSSIの#includeを使うという手もあるね。
>うう…。Java育ちにはつらい話です。しかし、みんなが undocumented な機能 >を多用していたら、Zend社がそれを突然廃止したとき、困るのではありません >か?特に仕事で使っているのなら。 なんで更新内容も吟味せずに100%機械的なアップデートが前提なんだ? マニュアル読めば分かるけど仮に将来廃止傾向にある要素があったとしても 相当前から警告してくれてるし、開発コミュニティで情報共有もされてる。 別に嫌味を込めていうわけじゃないが、もうちょっとPHPの経験積んでから色々いちゃもん付けたほうがいいんでないかな
546 :
nobodyさん :2008/11/24(月) 12:21:03 ID:MXksGNjb
>>544 さん
ありがとうございます
あまりお勧めされない理由とは何でしょう?
>>545 まぁ言いたい事はよく分かるがそれぐらいにしとこうよ。
>>532 おれもjava使いだけど、java育ちかどうかは関係ないんで、
java使いが誤解されるような書き方はちょっとね。
>>543 mod_rewriteが使えるならリクエストを1か所に集めて処理という手もある
549 :
540 :2008/11/24(月) 12:26:21 ID:161WFI/v
>>541 レスありがとうございます
local上なので権限はやっぱり関係ないですよね
エラーログは出ないんです
見た目問題無く済んだように見えて書き込みだけされていません
試しにfopenをwで行うとちゃんと新規ファイルが出来るのでどう考えてもfputsが原因のようなのです
fputs自体をチェックしてみたところfalse(0)が戻ってきました
file_put_contentsだったら書き込めるのでローカルではこれで動かしているのですが
サーバーでfile_put_contentsは使えないのでどうにか直したいのです
結論としては開発思想があいまいなCakePHPなんて使わずにZend使えってこった、Zend (てか「なぜ採用したのか」とかなぜCakeのdev-teamに聞かずにここの連中に聞く?)
>>549 おいおい fopen r+ で新規ファイルできないのはちゃんと仕様で決まってるぞ
552 :
544 :2008/11/24(月) 12:35:30 ID:???
>>546 >>544 のやり方は、一番簡単で手を抜いた方法。
Apacheモジュール使う方法とかもあるのだけど、その辺りはあえて紹介しなかった。(初心者と書いてたので)
簡単で手を抜いた方法は、サーバーにとっては易しくない場合がほとんどなので、
共有サーバーなら少し気をつけた方がいいかなと思ったまで。
他にもトラブルの元になる場合があるかな。
例えば、htaccess使って拡張子「.html」をPHPとして動作するようにすれば、
本当にただの「.html」ファイルでもPHPとして動作しようとするよね?
例えばphp.iniの設定で
short_open_tag が ON になっている場合、xmlの構文でパースエラーが起こる可能性があったり。
(理由はXMLは「<?xml」で始まるから)
553 :
541 :2008/11/24(月) 12:38:00 ID:???
>>549 fopen($path, 'w');
は新規ファイル出来るけど、
fopen($path, 'r+');
は駄目だよ??そこは大丈夫?(でもそれが原因ならエラーが出る筈だが)
file_put_contents()は糞便利なんだが、PHP5でしか使えないからねぇ。。
554 :
540 :2008/11/24(月) 13:02:49 ID:161WFI/v
レスありがとうございます
二度目の書き込みでwとかいたのはr+だとまったくファイルが変わらないためどこで詰まっているのかを確認するためにwで動かしてみた際の話です
サーバー上では問題ないんです
ローカルだけでfputsのみがおかしい状態です
>>553 鯖がPHP5でさえあればorz
一回冷静に頭の中整理したほうがいいよ 言ってることがメチャクチャだw
556 :
nobodyさん :2008/11/24(月) 14:28:28 ID:8C5l1Dvr
function echo_t_s_y($title, $sub_title, $year) { echo "$title <span class=\"gray\">(<em>$sub_title</em>, $year)</span>"; } みたいな定型処理を文中で利用しまくってるんですけど、 サーバへの負担は気にする必要有りますかね?
ないよ
ないことはないが気にするな
559 :
nobodyさん :2008/11/24(月) 14:32:08 ID:8C5l1Dvr
thanx(笑)
>>560 は書いてる時間帯的に、
PHP関連の各スレへ1行で恥ずかしい無知な突っ込みいれてる馬鹿か?
ちなみにthanxは普通にスラングとして使われる綴りだが。
pleaseをplsとか書くだろ。
関数名でforを4と略したりtoを2と略したりするのと一緒だ。
>>560 は書いてる時間帯的に、
PHP関連の各スレへ1行で恥ずかしい無知な突っ込みいれてる馬鹿か?
ちなみにthanxは普通にスラングとして使われる綴りだが。
pleaseをplsとか書くだろ。
関数名でforを4と略したりtoを2と略したりするのと一緒だ。
(笑)
日本人の馬鹿にいちいちかまってやんなよ
565 :
nobodyさん :2008/11/24(月) 17:24:18 ID:3UIztZ5+
質問 「file_put_contents」は文字列をファイルに書き込む関数、という 説明だが、もし「1」って書き込んだら、それは文字列と解釈され、 1+1などの計算をするときに、自動的に数値と解釈されなくなって しまうのか? それとも、コンテキストを見て判断して、数値と扱うべきところでは 自動的に数値になってくれるのか?
PHPはブラウザやテキストエディタ作れない時点で糞です
変な釣りはよせやい!
570 :
nobodyさん :2008/11/24(月) 18:01:26 ID:3UIztZ5+
質問 データーが連続して蓄積されるような状況があったとして、それを グラフで図とかで表したいんだけど、それってすっごく難しいの? 例えば、 1,2,3,4,5、、、 とかってデーターがあったとして、これを 折れ線グラフとかで表示したいんだけど?
パクッ
>>570 人による。
ググればそれなりのライブラリがヒットするよ
>>573 〃〃∩ _, ,_
⊂⌒( `Д´) < ヤダヤダ! だって構って欲しかったんだもん
`ヽ_つ ⊂ノ
ジタバタ
_, ,_
(`Д´ ∩ < ヤダヤダ 灯油まいただけなのに逮捕なんてヤダヤダ
⊂ (
ヽ∩ つ ジタバタ
〃〃
575 :
nobodyさん :2008/11/24(月) 18:45:34 ID:3UIztZ5+
>>572 図を表示したいときは
ライブラリを使うのが常套手段なの?
PEARとかっていうのではだめなの?
PEARはライブラリなんですけど・・・
577 :
nobodyさん :2008/11/24(月) 18:58:00 ID:3UIztZ5+
質問 WEBアプリのAPIってどうやって作るの? 「5」とかの数値がサイト上にあって、 それに対するAPIを開放して、外部から利用できるように したいんだけど?
質問 毎日釣り糸垂らして楽しいの?
581 :
nobodyさん :2008/11/24(月) 19:09:55 ID:Z9Lf2PTJ
質問しといてまともな答えが返ってこなくても 淡々と回答放置して次の質問出してるんだから 自己完結してるんだろ 独り言のようなもんなんだから構わなくていいよ
>>582 PHP入門の心得 1.0.10p1
・質問は霞ヶ関でも通用するような完璧な形式に。
・過去ログは紀元前までさかのぼって完全に調べる事。
・新機能ができても細部にこだわってできるだけリリースしない。
・「正しい」か「誤っている」かを結論づけないと気が済まない性格になる事。
・質問自体は無視して語句の間違いの指摘に熱中する事。
・初心者を見たらできる限り冷酷に排除。
・回答は1行以内で簡潔に。 例:「マニュアル読め」
・古いバージョンを使っていることがわかると最新にしろという。
・一日三回食後必ずperlをあざ笑う事。
・自分の状態に「自覚症状」を持たないこと。
・板違いの質問をしたperlerを徹底的に叩く事。
・forkする時はアニメ絡みの名前をつける事。
・気に入らない投稿が流れてきたらメールアドレスも含めて全文コピペ
・意味もなく全角英数字を使うやつは小一時間問い詰める事。
>>583 大体正しいけど、実際の設定はその人の設定だから
何で書いて何で出力したいか次第。
厳密に言えばPHPに内部エンコーディングが無い訳じゃない。
例えばPHPはShift_JISで書いても5cを展開しないようにも出来る。
echo "表";ってやってもエラー出ない様に出来る。
ただその場合は、mb.stringだけでは無くて
Zendエンジン側を含めて設定しなければいけない。
コンパイル時にzend multibyteをONにしてなければいけなかったと思う。
mb関数はかなりの文字コード対応してるけど作ってるの日本人だから
PHPメーリングリストにバグとか含めて詳しい情報がある。
かなり挙動に癖があって分かり難いんだけど、コンパイル時に指定できて
外部ライブラリが要らないメリットはデカイから覚えておいたほうが良い。
587 :
nobodyさん :2008/11/24(月) 23:17:04 ID:3K7Ub6cb
アクセス解析を作ろうとしています。 ログの保存で悩んでいるのですが、 MySQLなどのDBに保存するのかテキストベースで保存するのか どちらの方がアクセス解析の処理がしやすいでしょうか? 前者だと思っているのですが、ログが膨大になるとレコード数が増えて 検索しづらくなるのではないか?と危惧しています。 それに毎回クエリを発行するよりも、ファイルに追加する方が早いのかな?っと感じたり。 具体的なソースがググって見つけられないので、 どちらが適しているかわかりませんが、2ちゃんの皆さんなら知っていると思い、 質問させていただきました。よろしくお願いします。
588 :
nobodyさん :2008/11/24(月) 23:19:38 ID:Z9Lf2PTJ
グラフで作ろうぜ。
>>587 勉強のためならどっちもやってみたら?
具体的なソースじゃなくてファイルベースの利点と欠点、DBの利点と欠点を調べたほうがいいと思うけど。
もしくは↓の人が丁寧に語ってくれる。
apacheと同じ形式で書いて、analogに読ませる。
591 :
nobodyさん :2008/11/24(月) 23:35:47 ID:3K7Ub6cb
>>589 一応、単純なログ保存ならどっちも試した事があるのですが
そんなに変わらない気がします。DBを使ったログ保存でも
レコードが一定数になったら、削除したりテキスト化すると言う方法もあるし。
>>590 それは良いですね。analogとかawstatsとかおそらくアクセス毎に
ログファイルに記録してますが、そんなに遅いイメージ無いですし。
592 :
nobodyさん :2008/11/25(火) 11:31:32 ID:DHbzqImi
<form>の<select>にて参照した数値を次の画面で選ばれた数値により違うページを表示させたいのですが <select> <option>肉</option> <option>魚</option> </select> で、肉を選ばれたら肉のページ、魚を選ばれたら魚のページ、といったようにです。 簡単な雛形でいいのでどう書けばいいか教えて頂けませんか?
594 :
nobodyさん :2008/11/25(火) 11:51:22 ID:sWMxGR9l
すまん php.ini のSJISはJSPでいうところのShift_JISとWindows-31J のどっちに該当するの? #というのが見つからんかった
>>594 どこ調べた?
SJIS SJIS-win CP932等でググればわかる
JSPでいうところのっていうのが説明になってないよ 文字コードのクライテリアの話をするときにJSPって(ry
597 :
nobodyさん :2008/11/25(火) 12:10:45 ID:TqJfzk7a
ぼくは、java使いだから偉いんです。あなたとは違うんです ぼくみたいな偉いjava使いがわからないphpなんておかしいです。 こんなぼくにもわかるphpの公式ドキュメントはどこですか?
>>592 そういうのはjavascriptでやってくれたまえ
>>597 javadoc読めるならphpマニュアルだってなんとなく理解できるだろ
>>598 別にPHPでも良くね?
JavaScriptのほうが簡単なのは分かるがPHPでやるデメリットが何かあるの?
JS切ってる人も多いし
>>599 つまりいちいちメニュー選んだら送信ボタンを押せっていいたいんだな?
そんなマヌケなメニューなら最初から他の方法とったほうがいいと思うが
高齢者やPCに詳しくないユーザにはインタラクションがあったほうが使いやすいよ 個人的にもイベントハンドラで勝手に画面遷移したり非同期通信したりするのはうざく感じる。 そんなとこより他の本質的な所に力使ってくれよみたいな。 あと切ってる人はどうすんの?
>>601 <noscript>で代替も可能
というか切ってるわずか1%未満に対応させる必要はない
603 :
nobodyさん :2008/11/25(火) 13:16:08 ID:sWMxGR9l
>>595 すまん 色々見てたらわかった気がする
#mbstring.configuration.html 見てもちゃんと記述されてない気がしたから
function.func-name.html でいいのかな?>namazuしたのから探した
#JSP出したのは、いわんとしてることが、わかる人には正確に伝わると
#思っただけで意味はないよ>こういう言い方があってるかは不明だけどw
#oracleのJA16SJISTILDE 相当のは指定できないの?
#と聞いて見たかったりもしたんだけど
#あまり考えるのはやめよう>SQL鯖だし
ありがとう
高齢者やPC疎い人に配慮するなら、 そもそもそんなわかりにくいメニューを使うべきでない。 積極的にRIAを活用したほうがわかりやすいものができる。 しかしRIAのベースになるAjax(JavaScript)やFlashやSilverlightに ブラウザが対応していない場合はどうするか?(テキストブラウザ等) JavaScriptがOFFの場合JavaScriptをONにするように促せばいいし、 (そもそもデフォルトのままIEあたりを使うであろう高齢者やPC初心者がオフにするわけがない) プラグインが入っていないならインストールを促すようにすればいい。 だが対応していないブラウザを使っているたかだか数%のユーザを考慮して、 あらたなコンテンツを作るのは要領が悪い。 html版やFlash版なんかを用意しているサイトもあるが、 全ての環境の全てのユーザーに100%対応させることは限界がある。 よって最初から少数派を切る覚悟はしないときりがない。
605 :
nobodyさん :2008/11/25(火) 16:09:40 ID:QsUscf6u
PHPのソケットってWinSocketと繋がりますか?
606 :
nobodyさん :2008/11/25(火) 16:26:20 ID:uwgP5Nan
【OS名】VineLinux 【PHPのバージョン】PHP Version 5.2.0 【連携ソフトウェア】なし 【質問内容】 1.青空文庫のようなXHTMLをXMLとして読み込んだ後に 2-1.テキスト要素だけを取り出したい 2-2.a属性のテキストだけ取り出したい です 1は出来ているのですが、2がわかりません 2の条件として、XMLは外部のものを使うので、テキスト要素までのパスが可変で決め打ちできません 2-2は最後の属性がaのとき、という事です 宜しくお願いします
SimpleXML
>>607 すみません、SimpleXMLを使って読み込んでいますが、処理部がわかりません
2-2はXpathで一応出来ましたが正しいのかわかりません、2-1はさっぱりです
foreach ( $xml->xpath('//a') as $key => $val )
{
$array[] = $val;
}
609 :
nobodyさん :2008/11/25(火) 16:38:47 ID:uwgP5Nan
606=608 ID忘れました
値全部見てテキストだけ格納するんじゃだめなん?
>>606 こういうのは言葉で質問しづらいでしょ
実際にXMLを見せてもらわないとわからんよ。
それと、2-2の意味を掴みかねる。
>>606 SimpleXML使える環境ならどうとでもなるはずなので、
あとの事は実際にそのXMLの構造見て見ないとねぇ。。
>>605 なんか「ソケット」という言葉を激しく勘違いしてると思う。
>>598 ,600,602
携帯の事忘れてない?
最近は、フルブラウザならJavaScriptも動いたりするけどね。
携帯対応にするとめんどくさいから 普通はコンテンツ絞って分離するんじゃね?
>>613 そりゃそうだけど、結局携帯対応の為にJS使わない実装しないと駄目では?というお話。
ASP.NETだと、携帯の種類をソフトが勝手に判別して 適切なコンテンツを送る、って聞いたけど、本当なのかな?
自分の作りたいプログラムが作れるようになると プログラミングがすっごく楽しい〜(*^〇^*)
>>615 ソフトが勝手に判別というのは意味が分からないけど、聞いた事ないかな。
ASP.NETの前身の「ASP」での開発もしてた頃は、
小中規模の開発はみんなASPからPHPへと鞍替えしちゃったところが多かったよ。
最近はApacheモジュールで携帯向けの自動処理を何とかしようとするのが幾つかあるね。
どれもまだまだな感じだけど。
618 :
nobodyさん :2008/11/25(火) 23:54:53 ID:c9fpFVNb
質問 「ボタンを押したら、画面上の数字が増える」 ってアプリを作ったんだが、ボタンを押したヤツの IPを記録するって仕組みを作ろうと思うんだが、 さて、どんな風にしたらいいかな?
さて、どんな風に答えたらいいかな。
620 :
nobodyさん :2008/11/26(水) 00:06:33 ID:9Z6KcmDE
ボタンを押す、ときに そいつのIPをトラップするような関数があるのかな?
ん、画面遷移なしならajaxだからスレチだな
お前ら本当学習しないですね 放置しろ
624 :
nobodyさん :2008/11/26(水) 00:15:16 ID:9Z6KcmDE
質問 これってダメなの? <?php print "Hello World!"; ?>
そんなんで、いいわけがない 末尾の?>は省略すること <?php echo "Hello Again!";
変数の展開の必要のない文字列はシングルクオートだろ。 <?php echo 'Hello Again!';
固定文字列出力だけならechoいらんだろ。 Hello Again! <?php 〜〜
いやいや、echoいらんならこれでよくね? Hello Again!
629 :
nobodyさん :2008/11/26(水) 01:35:40 ID:6NDVGzGm
$date = date("Y-m-d H:i:s"); と言う条件があったとして、「11月を抽出」させる場合、 どういう方法が一番簡単で処理が早いでしょうか? やはり、上の状態からpreg_matchやexplodeで一旦配列に代入し、 そこからifで一致するか調べる方が良いでしょうか?
www
処理が早いでしょうかってベンチでも取らせる気か? 俺だったら元のunixtimeに戻してからその11月の範囲内か調べるね
explodeが速そう。 まあ好きにやりなよ
if(date("m") === '11') $date = date("Y-m-d H:i:s");
まじかw 失敗ってどんなんよ
あぁ、意味わかった
if ($time = time() && date("m", $time) === '11') $date = date("Y-m-d H:i:s", $time);
質問 文字コードは全てUTF-8で統一しています。 $s = mb_convert_encoding( mb_convert_kana( $str, "K", "UTF-8" ), "ISO-2022-JP", "UTF-8" ); って感じで半角カナを全角カナに変換してから文字コード変換を行ったんですが その変換した文字列をmail()で送信をしたら特定の文字が化けてしまいました。 文字化けした文字 全角半角のウ、全半角のゥ、全半角のェ この文字化けって普通は起こらないんでしょうか? 同じようなことがあった人教えてください。
化ける前はわかったけど、化けた後はどうなったの? それによって何が起きたかわかるかもしれない。
>>639 文字化けしたあとは
ウとゥは、
ウ瘢雹
のように末尾に不思議な文字が追加されて
ェは、
0街札・・w)・
という風に変換されてしまいます。
mb_convert_kana()で変換し、メールに合わせてエンコードした文字列は
smartyでfetchしたテンプレートにassignするように使っています。
mb_language("Japanese");したうえで、mb_send_mailでもだめかね?
mb_convert_kanaの段階では化けてないの? mb_convert_kanaの結果も見てみて。
それを行ったときに、mb_send_mail()で送信しようとすると subjectが7文字までなら正常に送信できるのですが、 subjectが全角8文字以上を超えるとLFが送信するメールのどこかに含まれてしまい RFCに準拠してないからSMTPエラーとなるので、mail()で送信するように変えました。
>>643 そういう現象にはなったことないけど、mailを使うんであれば、
エンコードは自前で?それともmb_encode_mimeheader?
その部分はチェック済みなのかな。
すみません、自己解決できました。 エンコードについてはmb_convert_encoding()とmb_encode_mimeheader() でエンコードしました。 mb_send_mail()のsubjectの件についてはなぜ8文字以上だと SMTPエエラーが起こるのかは詳しくわかりませんでしたが。 mail()で対処できたのでそれ以降はまだ調べていません。 文字化けについては、 assignするデータ、fetchしたデータにエンコードをしていて 2重でエンコードしたことが原因のようでした。 お騒がせしました。
どこが自己解決なんだろう
647 :
nobodyさん :2008/11/26(水) 15:02:08 ID:b+UaHm9e
http://alfalfa.livedoor.biz/archives/51372066.html 60 仕様書無しさん :2008/09/21(日) 22:34:33
Perler「Cとか古すぎwwwwwwメモリ管理やらせるとか何サマwwwwww」
Perler「MSの犬乙でありますwwwww」
Perler「ハッシュと配列の区別もつかねー糞言語が喋るんじゃねーよwwwwww」
Perler「ちょっとイテレーターとか使えるからって調子に乗ってんじゃねーよwwwwwendとかいちいちきもいんだよwwwww」
Perler「Javaとおんぶに抱っこなくせに出てくんなwwwwww」
俺の中だとPerlerはこのように極悪非道なやつらということになっている。
648 :
nobodyさん :2008/11/26(水) 23:40:10 ID:uu4IqJDf
>>648 display_errors = On
650 :
nobodyさん :2008/11/26(水) 23:57:19 ID:uu4IqJDf
display_errorsは Onになってます
>>650 error_reporing = E_ALL
652 :
nobodyさん :2008/11/27(木) 00:08:08 ID:Y4lx+bCY
>>651 ありがとうございます。
Undefined variable: PHP_SELF in C:********csvdb.php on line 8
$myself = basename($PHP_SELF); これが原因だったみたいです!
これはファイルの名前を取得するみたいなので要らないと思い削除したんですが
解決することができませんでした(汗
$myself= basename($_SERVER['SCRIPT_NAME']);
>>これはファイルの名前を取得するみたいなので要らないと思い削除したんですが ( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚) ・・・ (つд⊂)ゴシゴシゴシ _, ._ (;゚ Д゚) …!? とりあえずregister_globals=Onにしてみたら?
657 :
nobodyさん :2008/11/27(木) 07:01:16 ID:QDCpWLvT
>>652 s200辺りからUTF-8に変わったぞ
今は全部UTF-8かも?
いつXREAの話題になったのだ
いいんじゃねいつものやつだし適当な回答でwww
660 :
nobodyさん :2008/11/27(木) 13:27:44 ID:7SaHUKLW
DB(Mysql)のhogeテーブルのpriceフィールドの内容を hogehogeテーブルのpriceフィールドに格納したいのですが、 文字化けしてしまって困っています。 文字コードはSJISで 文字化けするのは"予"とか"ソ"といったいわゆる5Cを含む文字です。 1、a.phpのフォームからPOSTしてhogeテーブルに格納 2、b.phpでhogeから取得しhogehogeに格納 3、c.phpでhogehogeの内容を表示 といった動作なのですが、 1で予とPOSTしてもhogeには文字化けせずに格納されるのに 2でhogeから取得→hogehogeにINSERTすると文字化けしてしまいます。 つづく
661 :
nobodyさん :2008/11/27(木) 13:28:31 ID:7SaHUKLW
つづき b.phpは $sql = "select * from hoge"; $res = mysql_query($sql, $conn) or die("エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $move_price[] = $row["price"]; } $price_count=count($move_price); for($i=0; $i<$price_count; $i++){ $move_price = $move_price[$i]; $sql = "INSERT INTO hogehoge(price)"; $sql .= "VALUES("; $sql .= "'" . $move_price . "'"; $sql .= ")"; $res = mysql_query($sql, $conn) or die("エラー"); } こんな感じなのですが、、、 どなたか解決のヒントだけでもお願いしますm(__)m
SQLには副問い合わせってのもある
SQL一発でできるし、 エスケープ、理解してる?
ぅお、かぶった
うむ INSERT INTO hogehoge(price) SELECT price FROM hoge; とかでコピーできる。
666 :
nobodyさん :2008/11/27(木) 13:42:38 ID:7SaHUKLW
>>662 レスありがとうございます。
副問い合わせ
調べてみます。
>>663 エスケープ、、、いまいち理解していないと思います。
$move_price = stripslashes($move_price[$i]);
と試してみたのですが、文字化けは直りませんでした。。。
どこで化けたか、もう少し正確で詳細な情報を。
668 :
nobodyさん :2008/11/27(木) 13:56:51 ID:VS9OEG/Z
669 :
660 :2008/11/27(木) 14:12:12 ID:7SaHUKLW
>>665 ありがとうございます。
この方法では化けずにコピーできました。
>>667 どこで化けたか正確にわからないのですが、
b.phpのINSERT直前で var_dump($move_price); としても
化けていませんでした。
b.phpを走らせhogehogeに格納されたデータを
phpmyadminで確認したところ化けています。
c.phpでも化けて表示されてしまいます。
>>660 そのページはググって見つけました。
b.phpに
mysql_set_charset("sjis");
と記述してみたけど使い方が悪いのか文字化けは直りませんでした。
普通はDBに文字列を突っ込む前にエスケープするもの。 たとえば、mysql_escape_string等で。 文字化けが起きないというa.phpでもやっとくべき。 それで化けるならむしろDBとの文字コード変換部分をチェックする必要がある。 このとき、内部エンコーディングとかが影響するので、 詳細な情報がないとエスパーするにも限界がある。
671 :
660 :2008/11/27(木) 15:40:26 ID:7SaHUKLW
>>670 mysql_escape_stringを調べてみて
mysql_real_escape_stringを使ってみたところ
見事文字化けは解消されました。
まだまだ基本的な事がわかっていないので、
コツコツと勉強します!!
大変勉強になりました。
皆さまどうもありがとうございました。
672 :
nobodyさん :2008/11/27(木) 16:15:12 ID:nVMghs4x
野球,1 サッカー,2 テニス.3 という内容がテキストファイルに書き込まれていたとします。 例えば、野球の行の数字を2に変えたい時、どうすればいいのでしょうか? イメージとしては、行を取得してその行の数字の部分を新しい数字に置換 すればいいのだと思っていますが、特定の行だけ取得する事って出来るのでしょうか?
それは無理なので全部読み込め
675 :
672 :2008/11/27(木) 16:26:55 ID:nVMghs4x
>>673 と言う事は、全部読み込んで一行ずつ処理し、
strstrなどでその行に「野球」という文字が含まれていたら
野球,2 という文字列に置換するという考え方でよろしいのでしょうか?
まあそんな感じだけど、同一ファイルで読みながら書くのはやめたほうがいい。 長さが違うと不可能だし。
677 :
nobodyさん :2008/11/27(木) 16:50:13 ID:nsjkEY4z
正規表現で複数行にまたがるマッチングって出来ませんでしたっけ? $output = "foo\nbar"; preg_match('/.+/m', $output, $matches); print_r($matches); //foo しか出力されないのですが なんか方法ありましたっけ? なければ行ごとに分解するか、逆に改行を何かに置換するか・・・ お願いします。
/.*/s
679 :
677 :2008/11/27(木) 16:56:30 ID:???
ああ、そっちでしたか。ありがとうございます。
[[文字列>URL]]で<a>に置換してリンクできるようにしたいのですが そのために文字列とURLを抜き出したいのですがどうすればいいでしょうか [[ ]]の中だけは抜き出せるようになったのですが \[\[([^\[]+)\]\]
正規表現だけの話でPHPとは関係ないだろ っていうかID出せやコラ ていうかPukiWikiの真似ならPukiWikiのソース見れやコラ
682 :
672 :2008/11/27(木) 18:59:09 ID:nVMghs4x
>>676 なるほど。
じゃ、読み込んで新規ファイルに追加し、元ファイルを削除。
って流れが一番良さそうですね。
2ちゃんのログ検索とかどうしてるんでしょうね。
たぶんDBは使って無さそうだし。でも、結構速いし。
683 :
680 :2008/11/27(木) 19:15:46 ID:???
>>681 おちつけよwただの誤爆だw
pukiwikiは見たがわからなかったから質問した。
>>682 へ?2chのログ検索ってDATファイルを開いて検索して書き直してんの?
このスレで質問すれば誰かが見てくれるかもしれないですよ。 ただ催促すると放置される可能性があるので注意して下さいね。 基本、回答者に対して命令口調はやめてください。気分が悪いです。あなたは何様ですか? 回答者はいわば神です。一方、あなたは単なる質問者です。 神に対してはみんな、お願いをするものです。 平民以下の単なる質問者のくせして、神に命令するなんておかしいと思いませんか? 回答者はボランティアです。 自分の気分次第で嫌いな質問をスルーしたりすることに対しては何の問題もありません。 私は基本的に、自分の好きな時間に、自分が嫌いな質問や自分の嫌いなコテが書き込んだ質問を思う存分、集中的に叩きます。 自分勝手に私利私欲で叩きまくるのが基本です(笑) 私がPHP板の神ということを忘れないで下さい。 神を怒らせるととんでもないことになりますよ。 ヤスヒロや穴子という方をご存知ですか?彼は私を怒らせたのでまともな質問でも見つけ次第罵詈雑言浴びせまくっています。 その態度なんなんですか? とても気に入らない質問の仕方です
なにこれ
688 :
nobodyさん :2008/11/27(木) 22:15:45 ID:Y4lx+bCY
質問 自分が使ってるレンタルサーバーは sendmailが停止されてるんだが、 この状態でもサーバーからメールを送ったりできるの? PHPに独自に組み込まれたメール送信関数等を使って。
689 :
nobodyさん :2008/11/27(木) 22:18:51 ID:exzeZtET
PHPのアクセス解析で[ gethostbyaddr ]関数を使って ドコモユーザなど判別しているんですが もっと詳しくドコモ関東、ドコモ九州など地域まで 判別するのは不可能なんでしょうか?
690 :
nobodyさん :2008/11/27(木) 22:23:45 ID:Y4lx+bCY
>>689 IPアドレスの範囲で調べるとか?
0000−1111なら関東
4444−7777なら九州
とか、あらかじめ調べておいて、きめうち。
>>688 そのレンタサーバの公式見てメール使えないとか書いてあるなら使えない
>>688 phpのバージョンは?
php.ini等でSMTPに自前のSMTPサーバーを指定してやればできる可能性はある。
ポートが塞がれていたらちょっと工夫が必要になるだろうけど。
694 :
nobodyさん :2008/11/27(木) 23:14:36 ID:xeQLOWxL
phpの拡張機能でMS ACCESSのデータベースファイルを読み書きすることは可能でしょうか?
696 :
nobodyさん :2008/11/28(金) 01:35:36 ID:dY3rvFPa
質問 「ボタンを押したら、文字列が表示される」 ってプログラムを書こうとして、その予習として、 <form action = "1.php" method="POST"> <input type="submit" value="a"> </form> <?PHP print $_POST; ?> こういうプログラムを書いたんだけど、これを実行すると ARRAY って出るんだけど、どういうこと? 素人目には、理解不能は仕様なんだけど?
697 :
nobodyさん :2008/11/28(金) 01:39:49 ID:HHS1We1t
694>>可能 695>>そうだね。 696>>エラーなんだが
なんでアンカーが反対なの?
699 :
nobodyさん :2008/11/28(金) 01:58:46 ID:dY3rvFPa
<form action = "2.php" method="POST" > <input type="submit" name="a" > </form> <?PHP if (isset($_POST["a"])) { print "hello"; } ?> これで、できたわ。
>>695 PHPでどうやってそんな風に教えればいいんだ
この関数は再帰だから〜、とか、関数力つけておきましょう、とか?
701 :
nobodyさん :2008/11/28(金) 02:26:28 ID:dY3rvFPa
>>700 ただコードを「ベタッ」とはりつけてきて
補助的な解説が皆無なのがムカツクの。
>>701 具体的にどんな解説があったらええのん?
コードの流れを教えて欲しいな。 再帰とか頭がこんがらがってしまうから、 フローチャートを使いながら説明するとか。
何というボランティア精神養成講座
再帰ってフローチャートで書いても再帰以上に分かりやすく書けないような・・・
さぁ週末だ♪いま陽が昇る♪
708 :
nobodyさん :2008/11/28(金) 09:39:51 ID:eL/0HM2w
質問 なんでお前ら馬鹿なの?
>>706 これはあまりよろしくないな
こんなこと頑張って覚えても実際の業務に何の役にも立たないし
このような概念的なことは教本見れ自分で勉強すれば済むこと
710 :
nobodyさん :2008/11/28(金) 11:37:08 ID:skXTPrJy
public function &createNew($params) { //code here } このとき、functionについている「&」はどういう役割をしているのでしょうか?
713 :
nobodyさん :2008/11/28(金) 15:51:04 ID:skXTPrJy
>>711 ありがとうございます。
よくわかりました。
>>712 なるほど、マニュアルに書いてあったんですね。
ありがとうございました
714 :
nobodyさん :2008/11/28(金) 21:21:59 ID:fzzy5FaA
文字の後、<br/>\nみたいに改行の意味を2つ続けて書くのはなぜですか?
そりゃおまえあれやがな ウェブで見てもエディタで見ても改行されて見えるからやがな
716 :
nobodyさん :2008/11/28(金) 21:35:12 ID:fzzy5FaA
715じゃないが実際にやってみればわかるが <br>\n<br>\nってやれば 出力されるhtmlのソースは <br> <br> という具合に改行されるが、 <br><br>とやれば そのまま<br><br>と改行されずに出力される ソースの見た目であってhtmlの見た目上は問題ない
718 :
nobodyさん :2008/11/28(金) 22:27:32 ID:dY3rvFPa
PHPで書かれたフリーのメール送信フォームで 最強、定番のって、どれ? 自動スクリプトで5000通とか送信されて ぶっこわれたりしない、対策がちゃんと考えられてるやつ。
719 :
nobodyさん :2008/11/28(金) 22:41:20 ID:dY3rvFPa
720 :
nobodyさん :2008/11/28(金) 22:46:47 ID:dY3rvFPa
ちょっとまった。 もしかして、サーバー側で sendmailが停止されている場合、 メール送信フォームを設置しても 動かない可能性が高いのか?
PHPはコンパイル時に関数も制限できるはず。
723 :
nobodyさん :2008/11/28(金) 23:10:48 ID:HHS1We1t
sendmail関数を使えないサーバーってあるの? qmailとかで送れってか?
PHPにはsendmail関数なんてないだろ。 PHPにあるのはmail関数。 mail関数を使っても、送られてきた情報を そのままアパッチのsendmailに丸投げするだけだけど。
アパッチのsendmail?
php.iniに sendmail_path = /usr/sbin/sendmail と SMTP = localhost smtp_port = 25 っていう設定があるけど、mail関数を使った時は、sendmailコマンドに 送られるのかね、それとも、SMTPを直接叩いてくれるんだろうか
>>726 sendmail に丸投げするだけでしょ
SMTP鯖に投げられるのはWindows版の仕様、ってマニュアルに書いてなかったっけ?
729 :
nobodyさん :2008/11/29(土) 01:52:20 ID:Zwy93qXL
sendmailコマンドに送られる
730 :
nobodyさん :2008/11/29(土) 08:12:28 ID:Q7h0AD5b
自分もメールシステム作ってみようかと思ってるんだけど、 やっぱりZendFWやPearの本に載ってるような簡単なサンプルじゃ 大量の送信とかでエラー起こすものなんですか?
どこでエラーがおきるっていうんだい?
>>730 その簡単なサンプルがどの程度のものか知らんが、
スパムメール配信システムでも作るの?
メールサーバーによっては同時配信数に制限をかけているものがあるから、
その最大数に合わせて分割配送とか独自のキューを実装する必要があるかもね。
Web経由でやるんなら、タイムアウトとかもケアするとか。
スパマーだろ 放置放置
734 :
nobodyさん :2008/11/29(土) 10:14:58 ID:Q7h0AD5b
>>732-733 いや、そんなの作る気ないよ>スパム
せっかくサーバ借りるからやってみようって好奇心だけなんだけど
変なものできてトラブりたくないから聞いてみた 気に障ったならごめんね
mysql_connect() or die; とかの or die の使い方がのっているマニュアル該当部分てありますか? 探したんですが、orじゃ検索できないしいまいち動作がはっきりしないので情報を探しています。 論理演算子の or と同じ意味でしょうか。
737 :
735 :2008/11/29(土) 14:27:57 ID:khza+QN5
test() and print("after or!"); function test(){ print "in test()!!"; return true; } とか色々やってみてやっぱり演算子なんですね。 しかも、die以外もprintなら使えるけど、date()は使えない。 でも、自作関数使えるみたいで test() and test(); は出来た。 dateは駄目で、自作関数は駄目って基準が分からないw
マニュアル読め
>>737 式を評価する優先度と順番の問題。
A or B
でAがtrueならBは評価しない。だから、Aがfalseの時にしたい処理をBに書く。
C and Dで
CがfalseならDは評価しない。
741 :
735 :2008/11/29(土) 14:48:51 ID:khza+QN5
下記の通りで問題なく、他の関数も実行できました。 dateに限ってはprintを実行してなかっただけという orz test() or print(date("Y")); function test(){ print "in test()!!"; return false; } function test2(){ print "in test()!!"; //return false; }
うーん、釣り? function testがtrue返してんだから、 test() and test() は、最初がtrueだから、次をチェックしにいくんだから、両方実行されて当然でしょ。 仮にtestでfalse返してみなよ test() and test()は1度しか実行されないから
743 :
745 :2008/11/29(土) 14:52:05 ID:???
補足ですが、
>>740 の「booleanを返さないといけない」は大嘘ですね、すいません。
だらだらと書きましたが、誰かの参考になれば幸いです。
test() or ($test = date("Y"));
print $test;
function test(){
print "in test()!!";
return false;
}
とかやって、エラーフラグを変数に代入していけば、一個ずつif書くよりいいかもとか思いました。
date()は空文字返すでしょ
or dieはperlの真似した特殊な式だから perlのほうで調べてみ
printの返り値とか考えてる?
747 :
735 :2008/11/29(土) 14:54:31 ID:khza+QN5
>>742 えーと、そこは意図してそのような動作に・・。
既に書きましたが、test() or の後にdie以外を見たことが無かったので試していたら混乱したということです。
結果的には普通に何でも出来ますね。
アドバイス頂きありがとうございました。
>>1 も読まないマニュアルも読まずに見当違い質問して混乱させるとかひどい
749 :
735 :2008/11/29(土) 15:01:17 ID:khza+QN5
>>744 ,746
なるほどそのあたりも漏れてました。
しかし、
>>741 のtest2()で試したところ返り値があるかないかは、論理演算子の右辺は関係ないかと。
>>745 情報ありがとうございます。
perl絡みで調べてみます。
どうもこの構文はPHPとしては唐突でしっくりこなかったんですが、そういう経緯もあるんですね。
750 :
735 :2008/11/29(土) 15:02:35 ID:khza+QN5
>>748 ここってくだ質じゃないんですか?
何か勘違いしていたらすいませんw
くだらない質問用スレだけど下らない人間用スレじゃない いい加減にしてくれ
perlかphpかは関係ないと思うな。 構文のパースに過ぎないんだから。 チューリングマシンの基礎だな。 > 論理演算子の右辺は関係ないかと。 そう書く気持ちはわかるが、そういう考えでは本質は理解できんよ。
くだらない質問用スレだけど、下らない回答者用のスレでもないがな
754 :
735 :2008/11/29(土) 15:34:46 ID:khza+QN5
>>752 個人的には基礎が足りないというのは理解しております。。
もしよろしければですが、どういうアプローチをしたら右辺の意味について理解できるでしょうか?
755 :
nobodyさん :2008/11/29(土) 15:57:48 ID:Q7h0AD5b
>>751 「まあ答えてやるか」って人間がいる限り、そういう書き込みが一番空気悪くする
いやなら答えなきゃいいし見なきゃいいだけだと思うが
756 :
nobodyさん :2008/11/29(土) 16:27:03 ID:yRFYIZ4c
じゃあまとめるね。 ・式だけでも正しい構文 ・PHP では and/or は短絡評価 ・functionはreturn文が実行されなかったときはNULLを返す バージョンによる違いは調べてません。
757 :
nobodyさん :2008/11/29(土) 17:19:53 ID:N9fdCVij
Zend_Dbでは、行、カラムを指定してfetchOneすれば、 単体の値を抜き出せるのに、Zend_Db_Table使うと、 結局イテレータで出てきちゃうので、 $row->カラム名 ってしないと値が取り出せず、面倒な気がするんですけど・・・。 何か良い解決方法があったら教えてください。
ZFスレで聞けよ
759 :
735 :2008/11/29(土) 17:30:45 ID:khza+QN5
>>756 ありがとうございます。
・式だけでも正しい構文
というのは計算式だけでもOKって事でしょうか?
自作関数だけでもnullが返ってるんですね。勉強になりました。
たしかにvar_dumpで見たらnullが返ってました。
これもざっと見るとマニュアルに書いてないような・・。
やっぱりorの両辺は返り値(何らかの値)が無ければ駄目って事かな・・。
>>759 論理演算子で解釈できるようなものならOK
基本、関数ならいいけど命令ならダメ。
右辺なら関係ないとかやめてね
test1() or test2() or test3()
こういうことも可能なわけで、右辺はいつでも左辺になる可能性がある。
test() or echo "error";とかダメだから
761 :
nobodyさん :2008/11/29(土) 18:55:54 ID:yRFYIZ4c
2項演算子の右と左を右辺、左辺というのですか?
式だろ
左辺値/右辺値
うーんまぁ、式なんだけど、彼流に言えばって話
765 :
nobodyさん :2008/11/29(土) 20:05:02 ID:dnGnExVM
あるオブジェクトが、 自分に渡された引数が自分自身(同じインスタンス)かどうかを調べるには どうすればいいですか? ===は、ちょっと違いますよね?
>===は、ちょっと違いますよね? なんで?
オブジェクトの話をするなら、phpのバージョンは必須じゃね?
まぁ、省略したらphp5ってことで桶てなら、
>>1 のテンプレに加えた方がいいかも。
768 :
nobodyさん :2008/11/29(土) 20:35:59 ID:yRFYIZ4c
「5なら○○だ」って回答して、「4なんですけど…」って返ってきたら 「先にいえボケ」って言えばいいんだよ。
769 :
nobodyさん :2008/11/29(土) 22:44:20 ID:oQuyl2Tg
PHP5です。 ===は、値と型の同一性チェックで、 オブジェクトが自分自身の場合のチェックには使えないのでは?
ID変わったけど769=765です
>>769 オブジェクトが自分自身の場合は値と型が異なるの?
>>769 マニュアルの「PHP 5におけるオブジェクトの比較」読みました?
===はインスタンスの同一性チェックって書いてない?
>>772 そのとおりでした
ありがとうございました。
774 :
nobodyさん :2008/11/30(日) 22:01:17 ID:l1FWuDL6
こんばんは CSVは一つ一つデータを検索する必要がありますが、XMLだとどうなんですか? XMLの方がデータ検索は高速になるんでしょうか? mysqlはナシで
XMLは単なる記述形式
どれでも検索する必要はあるよ 関数が実装されてるかどうかの違いじゃないの。
CSVを舐めていくのが早いかXMLをパースするのが早いかって話なら、 試してみればいい。そして結果をここに報告すればみんな幸せ。
どっちが早いかなんて実装方法次第だろ イメージではパースする分XMLの方が遅い
779 :
nobodyさん :2008/12/01(月) 02:35:22 ID:L8HEfjQ3
一般的なレンタルサーバーに自前のPHPのスクリプトをアップして実行させたはいいけど、 下手くそなプログラムが災いして暴走し出した場合、これを止めるにはどうしたらいいと思う? たとえば誤って無限ループを入れてしまったりした場合とか。
鯖缶の仕事だから好きなだけ無限ループさせてもおk
max_execution_timeで止まると思う。
782 :
nobodyさん :2008/12/01(月) 12:02:32 ID:qgihvL7P
アクセス解析で疑問があるのですが 日がたつとIPからホスト名への変換は正しくできるのか疑問でして たとえば11/1に121.32.2.1というOCNのIPがあったとします。 そのIPを12/1にホスト名変換したときにOCNとして取得できるのでしょうか? IPとホスト名は両方ログに書き込んだほうがいいですか?
>>782 変わり得る。
ダイナミックDNSでもなけりゃそうコロコロ変わるもんでも無かろうけど。
一体なんのために解析してるの?そこをまず考えないと
いや、その理由分かるな。大量のアクセスがあるサイトだと、 ホスト変換に時間が掛かる。俺もログに書込む時はIPアドレスだけにして、 cronで、ホスト変換するプログラムを書いている。 そのプログラム分けて上げても良いけど、20万円でどう?期間は無制限でいい。
5分で書けるだろw
貧乏SOHOが必死に宣伝中wwwwww
webalizer入れるだけで解決しそうな予感。
残念ながら500円ぐらいですね^^;
790 :
nobodyさん :2008/12/01(月) 12:18:49 ID:qgihvL7P
アクセス拒否をしたいのですがIPですとコロコロ変わるため ホスト名でu1.p102.tokyo..setagaya.OCN.jpみたいに取得しておけたら ピンポイントで規制できると考えてます。 プロバイダへ接続の度にIPが変わる所もあるのですが、そうアクセス拒否する機会もそんなにないとは思うのですが 規制する時になったときのことを考えてどうしたらいいのかわかりません。 ちなみにcronは使えません。
そんなに負荷が死ねるくらいアクセス数があるの?
792 :
nobodyさん :2008/12/01(月) 12:23:23 ID:qgihvL7P
2500〜5000/1dayぐらいです ネタは情報発信系です
793 :
785 :2008/12/01(月) 12:26:36 ID:???
>>792 それなら、俺の書いたプログラムが最適。
通常は20万円だけど、同じ2chの同胞ってことで18万円でいいよ。どう?
795 :
nobodyさん :2008/12/01(月) 12:32:42 ID:L8HEfjQ3
>>780 >>781 どうも(・ω・)ノシ
つまりレン鯖のユーザーとしては一度暴走を許してしまったプログラムに関しては
鯖管が見つけて止めてくれるまでどうしようもないということでok?
796 :
nobodyさん :2008/12/01(月) 12:33:46 ID:qgihvL7P
でもやっぱりipとホスト名を両方書くのはログが増えるのでやめます
>>785 さんのプログラムだと私のサーバではcronが使えないのです
ホスト名で取得することにします
どうもありがとうございました
IPも変わればDNSも変わるんじゃないの?
799 :
798 :2008/12/01(月) 12:40:28 ID:???
DNSじゃなくてホスト名だ・・・ ネットワークプログラミングってむずかしいね
800 :
nobodyさん :2008/12/01(月) 12:52:20 ID:L8HEfjQ3
ネットワークプログラミングですらないし
/⌒ヽ / ^ ω^j、 _, ‐'´ \ / `ー、_ / ' ̄`Y´ ̄`Y´ ̄`レ⌒ヽ { 、 ノ、 | _,,ム,_ ノl 'い ヾ`ー〜'´ ̄__っ八 ノ \ヽ、 ー / ー 〉 \ \`ヽ-‐'´ ̄`冖ー-く || \ \ \ ∧_∧ || \ \ \ ( ´Д`) オイ、なんか変なのがいるぞ || \ \ \ / ヽ || \ \ / | | | || \ \∧_∧ (⌒\|__/ / ヽ( )絶対目合わせるな ∧_∧ / く \ ( ) うわー、なんか言ってるよ | \ \/ ヽ
kentwebではホスト名を記録してるから7年間ホスト名で記録してる俺が通りますよ
それはサーバ側で変換してくれてんだよ
805 :
nobodyさん :2008/12/01(月) 15:04:18 ID:YUzphIUV
806 :
nobodyさん :2008/12/01(月) 15:37:34 ID:L8HEfjQ3
>>797 >
>>795 シグナルアラーム使えば?
signal()
alarm()
に関してもう少しkwsk・・・
ふつうの設定では、クライアントが接続を切ったら(停止ボタンを押したら) PHPの実行は停止されるよ。 ignore_user_abort() とか調べてね。
808 :
nobodyさん :2008/12/01(月) 18:11:17 ID:L8HEfjQ3
>>807 それだとwhile(ture)ループや、一度始めると時間がかかる処理を途中で停止させることはできないよね?
>>808 PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。
外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
そいつは生き残るはず。
810 :
nobodyさん :2008/12/01(月) 18:47:06 ID:L8HEfjQ3
>>809 > PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。
え?そういう仕様だったの?
> 外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
> そいつは生き残るはず。
一度プログラムが呼び出されればユーザーがいなくても処理を続行させる方法と、
そうやって一度動か始めたプログラムを途中で好きなタイミングで停止させる方法を
解説してくれたサイトってない(´・ω・`)?
812 :
nobodyさん :2008/12/01(月) 19:16:24 ID:L8HEfjQ3
あるよ
POSTで送信されたデータを全てに対してaddslashes等の処理を行うのが面倒なので 一括で処理する方法はありますか?
スレタイ
816 :
nobodyさん :2008/12/01(月) 19:38:42 ID:g9VSv8cf
すみません、上げ忘れました
818 :
814 :2008/12/01(月) 19:39:43 ID:???
自己解決しました 816は偽者です
なんかそういう関数あったよな 思い出せない・・・
>>814 magic_quotes_gpc
まぁ非推奨な上にPHP6で廃止されるけどな
array_mapあたりかなぁ $_POST = array_map("addslashes", $_POST); って感じかな
822 :
814 :2008/12/01(月) 19:50:47 ID:g9VSv8cf
皆さんありがとうございます。
>>821 を試してみます
823 :
nobodyさん :2008/12/01(月) 19:57:15 ID:L8HEfjQ3
824 :
nobodyさん :2008/12/02(火) 00:24:01 ID:PVQb/nvw
「等しくない」の書き方が2つあるんですが、 PHP的にはどっちを使うの。違いあるのですか? 1 != 1 1 <> 1 あと、&&をandとか||をorとかも どっちで書くこと多い?
826 :
nobodyさん :2008/12/02(火) 00:47:56 ID:PVQb/nvw
ワロタw
>>826 好きなの使えばいい
他言語に慣れてる人を考慮していくつか用意してるだけだから
!=なんかはほとんどの言語で一般的に使われる
<>はSQLなんかで使う
else ifなんかもelseifと半角スペースあけなくてもPHPの場合問題ない
>>826 別に違いは書き方が違うだけでコチラじゃないと駄目というものは
無かったと思う
自分ひとりがメンテし続けるなら好きにしても良いんじゃないの?
828じゃないがif():endif;なんて書き方もあったりする
結合順位がちがくね?
831 :
826 :2008/12/02(火) 12:45:41 ID:???
気になるならなんで調べないの?
ゆとり世代にそんな高度なこと言っても・・・
835 :
nobodyさん :2008/12/03(水) 14:18:09 ID:769N0vO+
すいません質問です。
Start
>>1 >>3 こんにちわ
End
上記の文章で2chのようなテキストの「
>>1 」をURLリンク付けて置き換えしたいと思ってます。
eregなどで >>[0-9]+ これで対象部分はマッチ可能なんですが
マッチされたものを取得する方法等はありますか?
ereg_replace等であれば 変換された後のテキスト取得となってしまいます。
置き換えできればいいじゃないと思われますが、>>の後の数値が必要でして。。
何か良い事例などあるでしょうか。
>>835 preg_match("/pattern/", $string, $matchs);
837 :
835 :2008/12/03(水) 14:39:18 ID:769N0vO+
半分自己解決です。
色々と繰り返す中eregの第三引数で取得できると判明しました。すません
$match=">>[0-9]+";
$text="
>>1 >>2 おはよう";
ereg($match,$text,$getstr);
var_dump($getstr);
しかしながら、2つめを取得できません。どうしたものでしょう・・><
838 :
835 :2008/12/03(水) 14:41:52 ID:769N0vO+
>>836 ありがとう!そこまではなんとか辿りつきました。
preg_match_all("/>>[0-9]+/", "
>>1 >>2 おはよう", $matchs);
print_r($matchs);
840 :
アッー :2008/12/03(水) 14:46:26 ID:???
×matchs ○matches
841 :
835 :2008/12/03(水) 14:49:23 ID:769N0vO+
>>839 アーーッ eregばかりみてましたよ!
preg・・ すばらし
本当、くだらないヤツで申し訳ありませんでした。
解決いたしました! ありがとうございました。
来年の新卒からゆとり世代が社会進出するから気をつけろ
うぁ、現場にゆとり世代参入か、やべぇ お守り買ってこなきゃ
844 :
nobodyさん :2008/12/03(水) 16:36:30 ID:K11Uk0Wn
すいませんアクセス解析で得たIPがプロクシかPHPを通さないで調べたいのですが そういうサービス提供しているURLご存知のかたいらっしゃいましたら教えてください。
846 :
nobodyさん :2008/12/03(水) 17:35:06 ID:sIznGeZK
勉強がてらにこういう処理を書いてみたいんだが $test->foo->bar(); $test->bar(); なら書けるんだけど、これってどうすればいいの? どこか分かりやすいサンプルか解説があれば教えて欲しい。
barの最後にインスタンス返してないんじゃ?
どうすればいいのって何が? メンバ変数fooにオブジェクト入れとけばいいのでは? つか本当にしたいのはメソッドチェーンでなく?
849 :
nobodyさん :2008/12/03(水) 17:44:09 ID:f7FsbaSI
メール送信フォームをつくっています。
ある環境では想定どおりにメールが届くんですが、
別の環境でテストすると、メールの件名が途切れて、
メールのボディの先頭に
=?ISO-2022-JP?B?MUlVJDEkXiQ3JD8bKEI=?=
From:
[email protected] のようなヘッダが露出してしまいます。
正常に送信できたりするのは、MTAによって自動で長さを調整したりしてくれるのかな、と予想してるのですが、
わざわざヘッダを全部チェックして何文字目で折り返すとかいう処理を書かなきゃいけないんでしょうか。。。
>>849 受信したメールのソースを見るべき
件名が切れている部分に注目
症例: Headerの内容がBodyに流れると言うことはその箇所に改行が2つある可能性
折り返しの処理をどうするか、とかはそもそもメールが意図したソースで送信されているか確認した後に考えた方がいい
あれもこれもじゃ混乱するから
851 :
nobodyさん :2008/12/03(水) 17:59:53 ID:f7FsbaSI
>>850 アドバイスどおりメールサーバに入ってメールのファイルをviで見たところ、
---------
Subject: =?ISO-2022-JP?B?GyRCIVokKkxkJCQ5ZyRvJDshWyQqTGQkJDlnJG8kOyVVJSkhPCVgJE5B?=
=?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=
From:
[email protected] 以下のお問い合わせがありました
---------
こんな感じになっていました。
Thunderbirdで受け取ると、ボディに
=?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=
というヘッダが表示されてしまいます。
Subject: =?ISO-2022-JP?B?GyRCIVokKkxkJCQ5ZyRvJDshWyQqTGQkJDlnJG8kOyVVJSkhPCVgJE5B?=
=?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=
メールの仕様は確か、ヘッダの1行が長いと、改行したあと、スペースを付与する、
という仕様だったはずなので、↑を見る限り正しいように見えますが・・・
852 :
nobodyさん :2008/12/03(水) 18:47:25 ID:f7FsbaSI
subjectをbase64_encodeして、=?ISO-2022-JP?B? とかを自分でつけたして送信したらうまくいきました。 mb_encode_mimeheader()とMTAの相性が悪かったのか。。。 むやみに既存の関数に頼るのはよくないですね
>>851 メールの仕様は確か、ヘッダの1行が長いと、改行したあと、スペースを付与する、
という仕様だったはずなので、↑を見る限り正しいように見えますが・・・
ってそんなことRFC 2822の何処にも書いてなかったはず(記憶が定かじゃないが)
Subject:のケツの改行コードの問題な気がする
854 :
nobodyさん :2008/12/03(水) 19:02:51 ID:sIznGeZK
>>848 えっと、fooがいったい何でどう書けばいいのかが分からないんです。
メソッドチェーンではないです。
>>854 何言ってんのか分からない
もっと詳しく
>>854 $test->foo->bar();
これの意味が知りたいということ?
それなら、
>>848 が答え書いてると思うけど・・
$testというインスタンスのメンバー変数にあるインスタンスが格納されて
そのインスタンスのbarメソッドを呼び出してるわけだよね
class A {
function bar() { echo "hoge";}
}
class B {
function __construct() { $this->foo = new A(); }
}
$test = new B();
857 :
nobodyさん :2008/12/03(水) 19:27:24 ID:NrG8DUhG
PHPよりFirefoxの質問っぽいけど同じ問題にぶつかった人がいるかも と思ったので こちらで質問させてください。 オンラインのPHPマニュアルを頻繁に使っていますが、 ブラウザがWindows+Firefox3だと、"search for"(alt+S)のショートカットが効きません(ブラウザメニューに食われる) 唯一これが障害でデフォルトブラウザをFirefoxにできません。 何か良い方法はないですか
>>857 IE Tab等のプラグインを入れて
php.netをIEエンジンで開くようにする
というか完全にスレ違いだ
859 :
nobodyさん :2008/12/03(水) 19:54:30 ID:sIznGeZK
>>856 サンプルコードありがとうございます。
勉強する取っ掛かりになりました。
ctrl+Fは?
インスタンス自身をそっくり入れ替えるメソッドを実装することは可能でしょうか? メソッド中で$this = new hoge();とかで・・・
862 :
nobodyさん :2008/12/04(木) 10:28:26 ID:uRUEQ8oc
861です ID忘れ
>>861 PHP4は出来たと思う
でも明らかにおかしな動作だからPHP5では修正されているはず
オブジェクト自身が再アサインとかアフォかと
おまえらてさ童貞の臭いがプンプンするんだよね(苦笑
下手すぎるからもっと煽りの修行してから来いよ
童貞の臭いをプンプンさせながらPHPの勉強をする毎日です よろしくです
print_rの()を省略して出力する方法ない? var_dumpでもいいけど デバッグのためにデバッグ出力関数の後に()つけるのだるい print_r $debug みたいな感じで出力できれば、()でくくる時間が短縮できる
>>867 関数は括弧で引数取る、これ基本
と言うわけでムリ
871 :
nobodyさん :2008/12/04(木) 15:33:31 ID:Yfb/CJck
秀丸マクロ作った。 setcompatiblemode 0x0F; selectline replaceall "^([\t ]*)(.*)$" , "\\1print_r($\\2);" , regular, nocasesense, inselect;
【OS名】Debian etch 【PHPのバージョン】php4.06 【連携ソフトウェア】XML-RPC 【質問内容】 掲示板の更新があったときにホームサーバーにpingを飛ばして更新をチェックしています。 しかし、このpingを飛ばす処理に時間がかかり、掲示板の書き込み完了となるまで遅いです。 そこで、pingを飛ばす関数の処理を待たずに次の処理を開始することは可能でしょうか? (別プロセスにするのでしょうか??) <?php send_ping(); ←この処理が完了する前にnext_processに移りたい next_process(); ?> function send_ping(){ } 宜しくお願いします
874 :
872 :2008/12/04(木) 16:17:52 ID:4vOGiir2
すみません、ID晒し忘れていました。
>>874 別プロセスにして、切り離す方法もありだろうね。
execとかでスクリプトファイルを使う手がありそう。
あとは、先に出力をフラッシュしちゃってignore_user_abortで処理を続行する方法
負荷が高いなら、キューに保存しといて、cronで定期的にping飛ばすとか。
>>872 pingの処理を別プロセスでするしかないな
投稿と同時にping送る必要がないなら、
ファイルなりDBなりにフラグ立てて、バックグラウンド(cronとか)で定期的にフラグを確認してping送信
短い期間で複数の投稿があった場合、それらをまとめて1回のpingで済ませられる
877 :
874 :2008/12/04(木) 16:35:22 ID:4vOGiir2
>>875 とてもていねいなレスありがとうございます。
せっかくphpで書いたのですが、cronの方が良さそうですね。
cronでシェルスクリプト回すことにします。
ありがとうございます。
蛇足だけど、cronでphp廻してもいい
>>878 cronでPHP動かすことってできるの?
PHPって確か実行するユーザーがいなくなると自動的に停止してクリアしてしまうはずだが
もし時間がかかるPHPプログラムをcronで回した場合、cronはそのプログラムが終了する
まで付き合ってくれるんだろうか?
880 :
nobodyさん :2008/12/04(木) 17:54:13 ID:3hZlaj6e
数十〜数百人程度にメール送るphpをcronでまわしているけど問題ないよ
おまえは何を言ってるんだ
ユーザーがいなくなるとっていうのは、cgiインターフェースのときに ユーザーの接続断で停止って話のことだろうけど、 cronで起動するのはcliインターフェースだから、cronをセットした実行ユーザーで 制限時間まで実行できる。ちなみにWeb用の制限時間とは別だから普通は問題ない。
コマンドラインで動けばそのまま載せられるでしょう。 jspをcronでwgetで実行とかもやってるけど。
>>882 webサーバーがPHPをサポートしてると明言しているときは
CLIもCGIもどちらもサポートしていると思ってok?
html の中に php のブロックをいれるとき、 <?php // ここのインデントどうしてます? ?> <?php echo 'hoge'; ?> か、 <?php ____echo 'hoge'; ?> か。 php の class の場合は <?php class hoge ?> ってインデントとらないほうをよくみるんですが、<?php の次のインデントは どうあるのが美しいのかな、と。
スレタイ読まない人ばっかで悲しいですね
>>884 cronいじれる環境ならcliサポートしてるのが普通だと思うが、
レンサバだとサーバー会社によるだろうね。
シェルスクリプトを許可しているところもあれば、そうじゃないところもある。
そりゃ、サーバー会社の運用にそんな細かいガイドラインがあるわけないから・・・
888 :
nobodyさん :2008/12/04(木) 21:27:00 ID:LmXIHk8w
同じページにCSVを2枚読み込みたいんですが、可能でしょうか?
889 :
nobodyさん :2008/12/04(木) 21:41:05 ID:0wd2VBCD
可能だよ。 読み込んでどうするの?
コピペでやって上書きされてるに3echo
>>889 CD.csv と book.csvに別けてるんですけど
このデータを全部表示させたいんですよね
どうやるか教えてくれません?
892 :
nobodyさん :2008/12/04(木) 23:32:43 ID:LmXIHk8w
ID表示忘れました OTZ
>>891 1.CD.csvを読み込む
2.book.csvを読み込む
3.出力
どういう風に表示したいわけ? ファイルそのままを出力したいの?
>>891 内容をすべて一番手っ取り早く表示するならこんな感じ
echo nl2br(file_get_contents("CD.csv"));
echo nl2br(file_get_contents("book.csv"));
カラム単位でも分けたいならfgetcsvを使えばいい
ただしfgetcsvはロケールに注意すること
>>891 echo file_get_contents("CD.csv");
echo file_get_contents("book.csv");
898 :
nobodyさん :2008/12/05(金) 10:11:08 ID:bKPFEWzI
$part1から$part30まである変数にそれぞれ$_POST['OOO']をセットして if(!empty($partO))でechoする場合$part1から$part30までの式をいちいち 書く意外に方法ありますか?
${'part'. $i}
>>898 可変変数
for($i=1;$i<31;$i++){
$name = "part".$i;
echo $$name;
}
901 :
nobodyさん :2008/12/05(金) 12:25:28 ID:bKPFEWzI
>>899 >>900 ありがとう!これでいけた!
<?php
for($i=1;$i<31;$i++){
$name = "part".$i;
$part=$$name;
if(!empty($part)){
echo "$name <a target=\"_blank\" href=\"$part\">$part</a><br />";
}
}
?>
902 :
nobodyさん :2008/12/05(金) 12:50:04 ID:AszAo48q
連想配列の要素に式で値を入れるにはどうしたらいいでしょうか? define ('ABC', 'abc'); とあって、 $aaa = array ( 1 => ABC . 'aiueo'); のような事を実現する方法はありますか?
>>902 言ってることがわからないのだが
>$aaa = array ( 1 => ABC . 'aiueo');
これは普通にできるでしょ?
904 :
902 :2008/12/05(金) 13:19:06 ID:AszAo48q
>>903 すいません、普通にはできたんですが、やりたかったのは、
下記のような事です。
<?php
define ('ABC', 'abc');
class TestClass
{
var $a1 = array ( 1 => ABC . 'aiueo');
var $a2 = "あいうえお";
function debug()
{
print_r ($this->a1);
print_r ($this->a2);
print_r (ABC);
}
}
$_test = new TestClass();
$_test->debug();
?>
905 :
902 :2008/12/05(金) 13:20:15 ID:AszAo48q
途中で送信してしまいました。
>>904 のようにやりたいのですが、何か方法はありますか?
よろしくお願いします。
php5.26で開発してます blogのトラックバック機能を作りたいのですが車輪の再開発になるので ライブラリなどありましたら教えてください pearは知ってるので除きます
>>905 もしかして、ちがうとこでエラーが出てるとか?
var $a1 = array ( 1 => ABC . 'aiueo');
演算を含むならコンストラクタで代入した方がよさげ
909 :
907 :2008/12/05(金) 13:32:05 ID:LaqO+lJQ
id出し忘れました
910 :
nobodyさん :2008/12/05(金) 13:44:11 ID:lJXzjhqe
サイトのトップページに [1] <img src="access.php?ac=1" width="1" height="1"> [2] <img src="access.cgi?ac" width="1" height="1"> を両方埋め込んでアクセス件数をカウントしてるんだけど、 一日の合計で見ると、[1]の方が必ずカウント数が少なくなる。。 何故でしょう?
>>906 よーしエスパーしちゃうぞ〜
アレの中の値に定数で定義した値を埋め込みたいということだろうっと思う
やり方は知らんがね
最悪置換えとか?
912 :
902 :2008/12/05(金) 14:04:17 ID:AszAo48q
>>906 すみません、
Parse error: syntax error, unexpected '.', expecting ')' in \hoge\aaaaa.php on line 7
で、7行目というのが、
var $a1 = array ( 1 => ABC . 'aiueo');
ここです。
メンバ変数を定義する時点では、定数しか定義できないのでしょうか?
>>912 出来ない
そもそも演算子が使えなかったはず
(定義方法にはよるがスコープ演算子は除く)
ややこしい例出さないで class Test { var $a = "hoge" . "hoge"; } ができないって言えばよかったのに
>>912 やってみたがJavaでは可能だがPHPじゃ無理なようだ
>>908 の言うとおりコンストラクタでやるのがよさそう
916 :
902 :2008/12/05(金) 14:27:18 ID:AszAo48q
できないんですね…。 ありがとうございました。
917 :
nobodyさん :2008/12/05(金) 18:44:56 ID:kogFg3iz
mail関数の第5引数のadditional_parametersって
-fスイッチのとき(Envelope Fromの設定)ぐらいしか使わないような気がするんですが、
経験上他に使ったことありますか?
何が良いたいかというと、mailのラップ関数を作っているんですが、
additional_parametersをenvelope_fromという引数にして、
その引数はメールアドレスだけ受け取るというようにしようかなと悩んでいるのです。
つまり、"
[email protected] "と受け取らないで、
"
[email protected] "と簡潔にメールアドレスだけ受け取るようにしようかと迷っています。
918 :
nobodyさん :2008/12/05(金) 19:11:41 ID:nX6TiXRu
おい人力検索ボランティアども俺様の質問に答えろやクソがっ!
920 :
nobodyさん :2008/12/05(金) 22:42:21 ID:Ovdffo4F
どこで止まってるかくらい切り分けてから質問しろ
全自動デバッガか何かと勘違いされてるな
何かを表示するプログラムには見えなかったけど、気のせい? 配列のキーって0から始まるのがデフォルトだよね。 表示するところ、forをやめてforeachで作り直したらどうかね。
mktime(date(G), date(i), date(s), date("m"), date("d")-7, date("Y")); なんじゃこりゃ
↑あぁ、うそ。気にしないでww
あぁ、ごめ、誤爆。923のことね
誤爆・・・?
928 :
nobodyさん :2008/12/05(金) 23:49:13 ID:Ovdffo4F
だから?
これ、セットしてあるRSS用URLがRSS返してないだけじゃないの?
つうか丸投げすんなよ 他人が作ったスクリプトが使えませんって製作者に聞け 自分で作ろうとする意思がないならそもそもスレ違いだろ
932 :
nobodyさん :2008/12/06(土) 00:13:01 ID:8p/zyVJf
だから切り分け位しろと。 どんだけ初心者なんだよ 適当にdie('OK');を入れてどこまで実行出来てるかくらい確認しろ。
これが本当のコピペにマジレスだなw
恐ろしいことに気付いてしまった htdocs以下のディレクトリにあるファイルしか 表示できない、とマニュアルに書いてあるが、 <?php $fh=fopen("C:/CONFIG.SYS","r"); $a=fgets($fh); print $a; ?> とかってやれば、ファイルのフルパスさえわかっていれば、 ハードディスクの中の、すべてのファイルに アクセスできるではないか。
※下らねぇ質問をID出さないで書き込むスレではありません。
おいはやく質問しろよザコども
941 :
nobodyさん :2008/12/06(土) 13:20:21 ID:MnyC9XAb
配列のcurrent()ですが、ループ処理をする時によく使いますけど、 指定したキーまたは検索した値を元に、currentの位置を移動・指定することはできますか?
943 :
nobodyさん :2008/12/06(土) 13:58:39 ID:MnyC9XAb
ありがとうございます。 そこを見る限り、できるようには書いていないですよね。 ただ、他にポインタを移動する方法がないとまでは 書いてないように思ったんですが?
currentの位置を移動・指定って何だよ
945 :
nobodyさん :2008/12/06(土) 14:04:17 ID:MnyC9XAb
たとえば、 $a = array("apple", "grape", "orange", "pear"); ってあったときに、 next($a);ってすれば、 $a->current();で"grape"を取得できますが、 いきなり、orangeや$a[3]に移動したい。 で、3やorangeに移動したことを知らない他のメソッドから$a->current()で $a[3]と同じ値を取得したいのです。
>>945 $a = array("apple", "grape", "orange", "pear");
$a->current();
Fatal error: Call to a member function current() on a non-object
と出ます
947 :
nobodyさん :2008/12/06(土) 14:06:46 ID:MnyC9XAb
おっと、すんまそ、ArrayObjectでやってたから、 current($a)ですね。ありがとう。
948 :
nobodyさん :2008/12/06(土) 14:26:03 ID:MnyC9XAb
質問をちょっともう少しわかりやすくしますと、ArrayObjectだと、 $a = array("apple", "grape", "orange", "pear"); $ao = new ArrayObject($a); $ite = $ao->getIterator(); $ite->seek(3); echo $ite->current(); // pearが出力される 同じことが配列でできますでしょうか? あと、できれば、array_searchなどの値検索でポインタを移動したいんです。
949 :
nobodyさん :2008/12/06(土) 15:03:26 ID:h6rmosdR
糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ 糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ 死死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね その老いたすがた気持ち悪すぎ白髪しわ気持ち悪すぎ その老いたすがた気持ち悪すぎ白髪しわ気持ち悪すぎ その老いたすがた気持ち悪すぎ白髪しわ気持ち悪すぎ その老いたすがた気持ち悪すぎ白髪しわ気持ち悪すぎ そのみにくい姿で世の中に出てくんなよ 死ぬとき このレスの事思い出してくれよ しわしわしわしわしわしわしわしわしわしわしわしわ ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ちょっとは落ち込めよ そのみにくい姿で世の中に出てくんなよ 何回も言わすな死ねよ ボケ
950 :
nobodyさん :2008/12/06(土) 15:08:20 ID:F3HkPIHB
PHPの勉強として作ってたDBへの登録と検索を行うアプリを
ttp://d.hatena.ne.jp/toku-hiro/20061129 の記事を参考に、オブジェクト指向でMVCっぽく書き直してみたんですけども
記事のように
Controllerでユーザからのアクションを判定
↓
各処理用のクラスが定義されたphpファイルを読み込む
↓
インスタンスを生成し、クラス内のコンストラクタで処理を行う
(Controllerからメソッドは呼び出さない。
コンストラクタは$this->関数 でメソッドを呼び出し、実際の処理は行わない)
↓
処理した結果をpublicのプロパティに保存
↓
Controllerがそのプロパティをテンプレートエンジンに投げる
↓
テンプレートエンジンが整形を行って画面表示を行う
っていう方法は、正しいOOP+MVCのやり方なのでしょうか?
サンプルソースがあまり見つけられなくて上の記事が正攻法なのか判断できないもので。
952 :
nobodyさん :2008/12/06(土) 15:44:18 ID:MnyC9XAb
>>951 ありがとう
やり方をおしえてください!
>>950 「正しい」やり方なんてないので自分のやりたいことに適したやり方でやるべし
954 :
nobodyさん :2008/12/06(土) 19:46:53 ID:yGRUMO6W
955 :
nobodyさん :2008/12/06(土) 21:12:24 ID:MnyC9XAb
>>954 ありがとう
やり方をおしえてください!
少しは自分の頭使って考えろ乞食
957 :
nobodyさん :2008/12/06(土) 21:38:56 ID:MnyC9XAb
958 :
nobodyさん :2008/12/06(土) 21:40:57 ID:MnyC9XAb
考えてみたら、ArrayObjectじゃなくて、ArrayIteratorを使った方が早いですね。 $a = array("apple", "grape", "orange", "pear"); $ai = new ArrayIterator($a); $ai->seek(2); echo $ai->current(); // orangeが出力される
>>958 おお、確かに948より1行も少なくなってるね、素晴らしい!
おまえらいいこと考えたぞ
http://www.1x1.jp/blog/2008/06/php_framework_function_count.html ここのページに、「よく使われる関数」を、頻度順に、上から20個
リストしてあるので、よく使われる順に、初心者に教える
ページを作れば喜ばれるぞ
1. 16645 array
2. 1519 in_array
3. 1151 isset
4. 889 empty
5. 486 is_array
6. 454 str_replace
7. 378 unset
8. 314 strpos
9. 302 array_merge
10. 270 count
11. 241 sprintf
12. 235 preg_quote
13. 169 define
14. 165 date
15. 148 file_exists
16. 148 preg_match
17. 146 strtolower
18. 144 explode
19. 134 extract
20. 134 substr
arrayって関数っていうか言語構造だし
962 :
nobodyさん :2008/12/07(日) 00:37:09 ID:yd2i9hRL
プロキシ規制スクリプトを作りたいのですが 2chの公開プロキシリストってどこにあるかご存知の方いらっしゃいましたら教えてください
スレ違いもここまでくると気持ちがいい
かわいいは正義
注意: array()は、実際にはリテラル配列を表現するための 言語構成要素であり、通常の関数ではありません。
通常じゃない関数なんだろw
972 :
971 :2008/12/07(日) 06:37:59 ID:???
クソ、リロードし忘れてスレ違いに亀レスしてた バッキリ無視してくださいね
973 :
nobodyさん :2008/12/07(日) 11:33:48 ID:TyvySTN3
まったくの初心者です 1から始まって 1 2 3 4 ・・・ と 一つずつ数字を足していくIDをつくりたいのですが、 $id = "1"; $id = "$tb++"; ではできませんでした。どうしたら上手くいくのでしょうか?
$id = 1; $id = $id+1;
>>968 言語構造はちゃんと言語構造と書いてあるよ
ちなみにechoの注意
注意: これは、関数ではなく言語構造のため、可変関数 を用いてコールすることはできません。
>>963 ちょっと遊んでみるならこんなんもあり
function newID ()
{
static $lastid;
return ++$lastid;
}
$id1 = newID();
$id2 = newID();
スレ違いなレス 963 名前:nobodyさん[sage] 投稿日:2008/12/07(日) 00:58:16 ID:??? スレ違いもここまでくると気持ちがいい
>>975 結局arrayは関数なの?関数でないの?
979 :
nobodyさん :2008/12/07(日) 13:34:34 ID:GLlaP0t9
phpbbとusebbはどっちがセキュリティが高いかおしえてください
phpbb
その根拠は?
あたし女だけど自信満々に
>>1 とかいう人って自分に自信がないと思うの
ルールを守らない人間はルールにも守られない
荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。 荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。
>>985 ◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
通常の関数じゃないなら特別な関数なんだろ
うるせーよ!arrayは関数なんだよ!
プロシージャだろ シス単p.157の922にあるぜ
注意: array()は、実際にはリテラル配列を表現するための 言語構成要素であり、通常の関数ではありません。 Note: array() is a language construct used to represent literal arrays, and not a regular function. 通常の関数でないということが明示的に定義されてるだけで 特別な関数であるとは言っていない。 それだけで判断するのは早とちりであり間違い。
何?そ
配列関数のところで、配列を育成するとして一覧されており、 ヘルプのファイル名もfunction.array.phpとなっている。 関数でなければ、そのような分類にはならないでしょう。 というのは状況証拠。 言語構成要素が関数であってはならないということはない。 無論「regular」ではないわけだが、言語構成要素である イレギュラーな関数という可能性が高い。 結局、関数であるという傍証はあるが、関数でないという反証はない。 だから、関数だ!と言い切るつもりはないが。
>>994 関数じゃないならわざわざ「通常の」なんてつける必要ないだろ
そもそもhoge()の形で呼び出してる時点で関数
そもそも関数だろうがなんだろうが貴様らには関係ないことだ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。