【PHP】下らねぇ質問はID出して書き込みやがれ 88
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/ ◆質問用テンプレ
【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に保存?
→ 好きにしてください
スレ立てたなら報告しろやバカ
無能には高度な誘導がわからなかったようだな
もうこれだ。 だから次スレいらんと言ったのに。
前からそういうルールだろ
マニュアル読めって言うお前ら、
>>1 位読んで下さい。
12 :
nobodyさん :2009/09/16(水) 13:34:38 ID:98tPbj3w
質問いいか? mysqlへの接続に関してなんだが var_dump(mysql_connect($this->m_HostName,$this->m_UserName,$this->m_Password)); localhostだと→resource(5) of type (mysql link) ?? と出る これはまぁいいんだがレンタルサーバーに挙げる際だと →bool(false) そして何故かgoogle曰く このページはでデンマーク語のページです翻訳しますか? と。 host,user,passは合ってた。 なんで上げたらデンマーク行ってんの??
fetchって困るんだよな 女性が居る前とかで「おい、お前フェッチしろよ」とか言うと変な目で見られそうで・・・
>>12 デンマークは知らんがbool(false)ってことはDBへのコネクト失敗してるんじゃないの?
15 :
nobodyさん :2009/09/16(水) 13:40:56 ID:98tPbj3w
>>14 コネクト失敗の原因がデンマークじゃないかと思ったんだが・・・
16 :
nobodyさん :2009/09/16(水) 16:53:16 ID:lLF0irRw
なんでこのスレは気性が荒い人が多いんですか?
虚勢を張ってるだけだよ 本当はリアルで会うと萎縮しちゃうヘタレばっかり
まるで某スレのOCNだな
>>16 俺もそれは前から思ってた
すぐキレるんだよな、全員が全員とは言わないけどさ
20 :
nobodyさん :2009/09/16(水) 20:57:32 ID:sA/eEQSw
【OS名】CentOS
【PHPのバージョン】PHP 5.2.9
【連携ソフトウェア】mysql
現在携帯サイトを構築中です。
DB の文字コードを UTF8 にしている関係上
mb_substitute_character('long')を使用し
絵文字を BAD+FFFF の形式に変換をして保存しています。
http://ke-tai.org/blog/2007/12/03/emoji_escape/ ページを表示時には SJIS で吐き出すため、絵文字に関しては
下記のような関数で、絵文字を復元しています。
$regex = '/BAD\\+(F[346789][0-F]{2})/e';
return preg_replace($regex, "pack('H*', $1)", $str);
mb_substitute_character('long')を使用すると
ローマ数値や丸文字も下記のように変換されてしまいます。
@ → JIS+2D21
T → JIS+2D35
こちらを復元する関数がわかる方はいますでしょうか?
よろしくお願いします。
>>20 DBに入れる前にsjis -> utf-8の変換をしているってことだと思うんだけど、
これをsjis-win -> utf-8にすればイケるんじゃないだろうか。
22 :
20 :2009/09/16(水) 21:47:28 ID:sA/eEQSw
>>21 mb_convert_encoding($str, 'UTF-8', 'SJIS-win'); とすると
別のライブラリ(toInlineCSSDoCoMo)でこけるので
ちょっと厳しいんです^^;
>>22 > toInlineCSSDoCoMo
バージョンアップしてHTML_CSS_Mobileになってるそうだけど、これでも同じかな?
普通に考えるとsjis-winを使うことになると思うんだけどな
@やTのutf-8変換自体はそれでできるわけだし
HTML_CSS_Mobileの中身をチラッと見ても、shift_jisの場合はsjis-winを使っているようだし
まあ使ったことないので実際のところはわからないけども
24 :
20 :2009/09/16(水) 22:47:55 ID:sA/eEQSw
>>23 同じです。
HTML_CSS_Mobile だと使ってるテンプレートライブラリが
うまく動かなかったので toInlineCSSDoCoMo を使ってます。
この辺のライブラリの変更は厳しいので
JIS+2D21形式をSJISに変換する関数を探しているところです。
php5の例外について try{ throw new Exception($error); } catch (Exception $e) { echo "例外キャッチ:", $e->getMessage(), "\n"; } 例外使用時通常上記のように、try でthrowをして catchすると思うのですが、下記のように try catchをせずに直接throwをした場合どう違いがあるのでしょうか。 public function myError($message = null) { throw new myException($messag); }
>25 その関数の呼び出し側でキャッチしなければいけなくなる。 キャッチされなかった場合、さらにその呼び出し元に遡る。ずーっと上までキャッチされるまで上っていく。 最終的に誰も例外をキャッチしなかった場合、エラーになる(確か500 Internal Server Error)。
28 :
nobodyさん :2009/09/17(木) 05:40:12 ID:h/ZKc5z/
base64_encode() にint値を渡すと文字列に変換されてからエンコードされてしまうのですが int値をバイナリで渡すような関数とかないでしょうか? echo base64_encode( '65535'); echo base64_encode( 65535); // '65535'と同じ結果 echo base64_encode( 0xffff); // '65535'と同じ結果 echo base64_encode( "\xff\xff"); // 意図した結果 $val = 65535; echo base64_encode( $val); // 意図してない結果
29 :
nobodyさん :2009/09/17(木) 06:35:22 ID:9yQ2lneq
あるメールアドレスにメールが送れるか否かを調べるのって checkdnsrr($host,'mx') || checkdnsrr($host,'a'); でokですか?($hostはメールアドレスの@以降)
30 :
nobodyさん :2009/09/17(木) 06:36:43 ID:9yQ2lneq
あ、ユーザの有無は送ってみるまで分からないので ホストの有無を調べる目的です
31 :
nobodyさん :2009/09/17(木) 06:55:57 ID:xpaZffPp
【OS名】vine linux 【PHPのバージョン】php5 【連携ソフトウェア】無し 【質問内容】 重みを付きランダム数値を出したいのですが、 どのようにしたら良いのでしょうか? 具体的には、1〜6の数値を、 1は40%、2は30%、3は20% 4は5%、5は3%、6は2% の割合で取得したいのです。 アドバイスよろしくお願いします。
↑へ追記です。 重み(割合)は、小まめに変更させる必要があるため、 40:30:20:5:3:2 の部分は、 変更しやすい作りであると助かります。
>>29 いいんじゃないかな
おれはdnsに問い合わせるまでもないやつをはじくために
その前に簡単に形式チェックも行ってる
当然ながら、問い合わせる先のdnsがちゃんとした結果を返すというのが前提
自分で設定したネームサーバーの場合は注意
キャッシュしている内容が既に古くなっているかもしれないとか、
dnsレコードは残っているけどサーバーが既にない、一時的に停止している
とかで通信できない可能性はあるけど、それはどうしようもないし
>>31 指定の割合で1-6の数字が含まれる文字列を作成
その文字列の中から1文字だけ取得する
何番目の文字を取得するかは乱数で決める
とかで、それらしくなるんじゃないかな
>>20 参考に
$str = "JIS+2D21JIS+2D35";
echo preg_replace_callback("/JIS\+([a-zA-Z0-9]{4})/",
create_function(
'$match',
'return mb_convert_encoding( pack("H*","1B2440".$match[1]."1B284A") ,"SJIS-win","JIS") ;'
),$str );
36 :
31 :2009/09/17(木) 10:10:18 ID:???
>>34 ありがとうございます。
えっと・・・・重要なポイントである
「指定の割合で1-6の数字が含まれる文字列を作成」
これの方法が見つかりません。
詳しくは調べますので、ヒントをお願いいたします。
そういう方向でのサンプル $ratio = array(1=>40,2=>30,3=>20,4=>5,5=>3,6=>2); $randstr=""; $randnum=0; foreach( $ratio as $eachkey => $eachval ){ $randstr .= str_repeat($eachkey,$eachval); $randnum += $eachval; } $rand = mt_rand(1,$randnum); print substr( $randstr , $rand ,1);
皆はさ、PHPってどうやって学習したわけ? 自分の部屋で一人で構文やデータベース構築などやったの? それとも会社とか学校で人に教えられながらとか、元々ほぼ設定されていたところで勉強したとか どんな環境で勉強したの?
>>38 >自分の部屋で一人で構文やデータベース構築などやったの?
やったよ
10年前のphp3の頃の話だが。
>>38 自分の部屋でコツコツやってたな。
学校は商学部だったしプログラムの類は一切やったこともなかった。
趣味のホームページ作りが高じてって感じかな。
深くやるつもりもなかったしネットに転がってたマンモス本を読んで基礎を学んだ。
そこから2chのこのスレ(もう4.5年前だが)で質問して色々教えてもらって、
スレ眺めながらたまに出るいい質問と回答を見ながら勉強したもんだ。
どういうわけか今じゃ基本情報なんて資格もとるほど結構はまってる。
結局今やってる仕事とは無関係で趣味の領域ではあるけどね。
>>28 よく分からんがこうか?
$val = 65535;
echo base64_encode ( pack( "H*", dechex($val) ) );
42 :
20 :2009/09/17(木) 13:19:40 ID:nJam0Pem
>>35 ありがとうございます。ばっちり変換されました!
43 :
nobodyさん :2009/09/17(木) 13:21:30 ID:gTpdsldO
>>37 あ、あ、あ、あ、ありがとうございます。
何か、内容がチンプンカンプン(^^;
PHP辞典で調べながら習得したいと思います。
ありがとうございました!!
>>37 さん
ようやく概要が見えてきました。
「指定の割合で1-6の数字が含まれる文字列を作成」
は、この文字列↓を生成する、って事だったんですね!
1111111111111111111111111111111111111111222222222222222222222222222222333333333333333333334444455566
すごく勉強になったと共に、思いつかなかったアイデアで驚きです。
これで十分に求めている事が出来ます。
ほんとうに本当にありがとうございました!
>>45 ごめん。
$rand = mt_rand(1,$randnum); を
$rand = mt_rand(0,$randnum-1); にしてね。
47 :
nobodyさん :2009/09/17(木) 14:56:51 ID:3Z6JGFqV
すいませんtestって出力したいのですがエラーがでます。 どこか間違ってる箇所がございましたらご教授お願いします。 <?php print "test"; ?>
>>39 PHP3ってそんな昔からあるのか。
どうやってPHP3の存在を知ったの?
10年前ならADSLが出てきたぐらいだったから普通にインターネッツで調べられるわな
52 :
nobodyさん :2009/09/17(木) 17:41:42 ID:9yQ2lneq
PHPでTCPの3ウェイハンドシェイクをやりたいのですが どうやればいいですか? socket_createのSOCK_RAWでやればいいと思うのですが それ以降どうやればいいのか分かりません
>>47 こちらでは、なんのエラーもなく
実行されているが?
>>50 ネットやっててWeb制作してれば自然とphpという文字が目に入ってくるからな。
PHP/FIとかの時代はperl触ってたわ
HTML埋め込み型ってのにひかれてPHPはじめた
>>46 何か、たまに取得できないな〜、
って思って調べていた所でした。
またまた助かっちゃいました。
ありがとうございました!!
>>40 に同じく
サイト作ってたら必要になって、って感じ
>>54 >HTML埋め込み型ってのにひかれてPHPはじめた
同じだわ
学生の頃、まだblogとか無いときに、HTML/CSSを勉強して、次は動的ページにとなった時に
Perlは正直サンプルのソースが懲りすぎてて俺にはわかりにくくて挫折した。
そんな時にHTMLに埋め込む形で作成できるphpと出会い、簡単に動的ページ作れて感動した。
58 :
28 :2009/09/17(木) 22:13:50 ID:h/ZKc5z/
>>41 意図した結果になりました。
pack()は試してたんですが、dechex()も使うとは気付きませんでした・・・
早々にレスを頂けて助かりました。
皆コツコツとPHP勉強してんだな・・・
そして次第にHTML埋め込み型は可読性に欠けてメンテナンス性に優れないため、 結局分離して作っていく流れになるんだよな。
案件によるのでは
構文よりOOPやらのほうが厄介
フレームワークが使えるようになれば問題ないさ
OOPなら、ある程度PHPのシステム作っていけば、多少は自然と出来るようになるんじゃないかな。 作ってたシステムが大きくなりすぎれば、否応無くOOP的なプログラムを書かざる得ない状況になる
cakeとかZFとかはデザイナには無理
そりゃプログラマじゃないから全てフレームワークを理解するのは無理だろう だいたいデザイナってデザインが仕事だしまともな会社ならそれ以上のことはさせられない まともじゃない会社でもview部分だけいじらされるだけなんじゃね
「PHPフレームワークで生産性が上がった」という場合、本当に重要なのはMVC構造の導入だったりする事が多いからな。
それがフレームワークの一番の機能では?
♪モーデル、ヴュー、コントローラー
70 :
nobodyさん :2009/09/18(金) 04:12:01 ID:yZl5pJrO
ある文字列が全部半角かどうかを調べるにはどうしたらいいですか?
半角カナのこと? それとも英数字のこと?
英数字です 外国からSPAMされてるので・・
$string = "This is a pen."; if( preg_match('/^[\x20-\x7f]+$/',$string) == 1){ echo "日本語でおk"; } 文字列$stringの最初から最後までが\x00-\x7f(ASCIIコード)の範囲内のみであれば日本語でおkと表示する 文字列には改行などの制御文字が入ることが予想されるので16進で書いた方がスマートで分かりやすいかな
盛大にかぶっtt
全く同じコードw
ワロタ 条件式で、==使うのと使わないのとで遅い早いとかあるんだっけというの だけふと気になった
CVSリポジトリやらグループ開発したことない初心者が集って グループ開発を体験してみようなんていう2chでのプロジェクトってないのかね SourceForge当たり使って誰でも参加可能な感じで
初心者以外の誰得 君が作ればいいじゃん
まずはsvnとか使わずにグループ開発させて、デグれさせてから svn導入すると感動すると思うw
>>80 SEは求めすぎだとしてもプロジェクトリーダー経験者ぐらいじゃないと
段取りがわからなくてまとめられないと思うから自分じゃ無理なんだわ
昔はなんかそういうスレあった気がするけどもうやってないんだろうね
> 自分じゃ無理なんだわ スレチな話題を平気な面して書き込むぐらいだから言わなくても分かるよ
やらなきゃ覚えないよ
別にスレチじゃないんだけどな
87 :
nobodyさん :2009/09/18(金) 11:18:14 ID:bD/6aRH+
ファイルの種類に合わせて処理を分岐させたいと思い、 mime_content_typeでファイルの情報を調べようとしたら Call to undefined function mime_content_type() というエラーが出ました。 これはmime_content_type関数が無いという意味ですよね? こういう場合どうしたらいいのでしょうか?PHPは5.2.5です。
お前らもサッサとコンストラクタをガンダムで例えて表現しろよ! どっかのスレの質問者がお怒りだぞ!
>>90 そうだな
すまんかった
fileコマンドを使った代替関数が載ってたから、PECL使うより敷居が低かろうと思ってな
92 :
nobodyさん :2009/09/18(金) 12:00:56 ID:+5AwuBV9
xamppに入ってるphp.iniと本家からダウンロードしたphpのphp.ini.recommentedみたいな名前の設定ファイルで 設定が異なる部分ってどこでしょうか? xamppを導入したいのですがなるべくphp.ini.recommentedの設定にあわせたいのです
自分でdiff取った方が早いとおもうぞ
94 :
87 :2009/09/18(金) 12:05:41 ID:bD/6aRH+
公式にはPECLのFileinfoを使えとあり、現在の環境にインストールを
試みたのですが、なぜか上手く行きません・・。
WindowsのPHPが原因かも知れませんが、ネットで調べると
同じようにインストールできない人がいます。
それで
>>89 さんの方法が手っ取り早いかと思い、
ソースをコピーして実行しても何も出力されません。
おそらくWindows環境なのでexecのfileコマンドが動作してないと思います。
と言うわけで、自分の環境に問題がありそうなので環境を見直します。
>>89-90 さん、ありがとうございました
index.php3 ナツカシス
>>96 だからdiffを(ry
xampp落としてきてdiffとって見たが、差分多すぎて書ききれないぞ?
ざっと見た限り、xmappはメモリ使用量とか多めになってるみたいだな
とりあえず一部だけ抜粋な
※()内がphp.ini.recommented
max_execution_time = 60 (30)
memory_limit = 128M (8M)
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED (E_ALL)
display_errors = On (Off)
display_startup_errors = On (Off)
log_errors = Off (On)
post_max_size = 128M (8M)
extension_dir = "\xampp\php\ext" ("./")
include_path = ".;\xampp\php\PEAR" (".;c:\php\includes")
で、extensionも結構違うから、xmappのphp.iniを素直に使ったほうがいい。
なるべくphp.ini.recommentedにあわせたいといっても、php.ini.recommentedの設定にしたら
動かなくなる箇所もあるからな。
やっぱり自分で差分みて一つ一つ確認するのが良い
>>97 デマ乙
本家のiniでもメモリリミット128MBに設定されてますよ
普通に公式のPHP入れればいいのでわ?
>>98 すまんかった、見てるphpが違った・・・
>>98 5.2以前と5.2とそれ以降で違うみたいだね
>>96 使うxmappのバージョン(phpのバージョン)かけよ
php5.3にはもうphp.ini.recommentedなんてないんだけど
>>88 コンストラクタ:合体前にコアチェンジ・ドッキング・ゴーと言うタイミングで
アムロがやっている何か
デコンストラクタ:こんなに嬉しいことはに・・・というタイミングで、アムロが
やっている何か
105 :
nobodyさん :2009/09/18(金) 19:33:17 ID:dQen4OfJ
checkdnsrr等を実行した時、相手のDNSが落ちていた時って もしかしてずっと反応が返ってこないのでしょうか? Net::DNSを使えばタイムアウトを設定できるそうですが そっちを使った方が無難ですか?
>>105 ソースを見るとres_searchを呼び出すようなので、実行するサーバーの環境変数やresolv.confの設定とかに依存するんじゃないだろうか
Net::DNSでタイムアウトを指定でき、かつ実際に効果があるなら、それを使うのが無難だし環境に左右されなくて安全なんじゃないかと。
Net::DNSは中でresofv.conf関係の環境変数を読み込んでるだけで 独自にソケット通信してるみたいですね
109 :
nobodyさん :2009/09/19(土) 11:33:21 ID:cyMxg+G4
Vista homeエディション 32bitにApache2.0を入れてます PHP5.3について質問なんですがスレッドセーフとノースレッドセーフはどちらを使えばいいのでしょうか? Windows版Apacheはスレッドセーフって対応してませんよね?
失礼致します。 あるウェブサービスAPIを取得して、XSLT処理をしたあと、XML出力するという PHPのコードを書いています。 このコード自体問題なく動いているのですが、問題はこのXMLのある文字列を 置換したいのですが、その場合のstr_replaceの書き方がわかりません。 XSLT処理後XMLが格納されている変数 = $result 置き換えたい文字列 = hiropon 置き換え後の文字列 = <iframe src="xxxx" border="0"></iframe> xxxにはURLが入ります。 そのまんま、str_replace('hiropon',置き換え後の文字列,$result)でやっても うまくいかんのです。 変数にHTMLのタグを丸ごとつっこんでも駄目でした。どうしたらいいでしょうか?
113 :
110 :2009/09/19(土) 16:56:25 ID:???
>>111-112 あの・・・・ 俺、マルチしてないんですが・・・
しかも、ウェブサイトつくるためのXMLじゃないんですが・・・
>>113 誰が「ウェブサイトつくるため」と言ってるんだ?
115 :
110 :2009/09/19(土) 17:04:42 ID:???
>>114 >>112 の板そのものが、ウェブ製作となっているから。
そもそも、PHPからXMLで出力後、アプリケーションで使う為のXMLに
コードを入れるのが目的なのに、なんでweb製作板に張ってあるのか
それすら、自分のものじゃないし。
それでマルチって言われても迷惑なんですよ。
>>115 「どっかの誰かが自分の書き込みをコピペして他スレに勝手に貼り付けた
自分は関係無い、迷惑だ」
こう言いたいのか?
ID出してないし。
119 :
110 :2009/09/19(土) 20:39:28 ID:???
>>117 >>116 そっちも知らない。
俺はここにしか投下していない。すごく迷惑だ。
真面目に質問しているのに。だいたい、PHPのコードを書いているって
書いてあるのに、他のスレにコピペしているどっかの馬鹿は本当に迷惑
だ。
>>119 スレタイとテンプレ無視して真面目に質問とは笑える
まあ、マルチでなくても、ちゃんとID出してたとしても、 いいはず としか。
大体、ちゃんと関数リファレンス読めば、あっさり解決することだし。
運営はipアドレスわかってるからな。 マルチかどうかもバレバレ。
id出さない奴って態度がでかいよな
ID出さない奴を相手にするなって 本人かどうかも判らんのだから構うだけ無駄だろう
>>110 真面目にここみてる俺からしたらルールも守れない質問者は激しく迷惑
ていうか前例がないよな 他人を煽るためにわざわざ他のスレにマルチ装って投稿するって
反応するな
>>122 ありがとうございました。
htmlspecialchars関数で解決できました。
130 :
nobodyさん :2009/09/20(日) 01:12:48 ID:mauzFl2w
質問。 Mysqlに接続されているかされていないかって簡単に判断する方法はありませんか? mysql_real_escape_stringあたりがたまにエラー出してて気になるので、 ちゃんとこの関数が使えるかどうかをチェックするための処理がほしいと思っています。
その関数、mysql接続必要ないだろ、普通に考えたら 3行くらいの、DB接続しないでmysql_real_escape_string呼ぶスクリプト書いて確認してみれ?
>131 >131 >131 >130 mysql_connectした時点で確認しろ。
律儀にmysql_close呼んでたり?
>>130 mysql_connect 時にリンクが確立されているのに、
途中でmysql_real_escape_stringが使えなくなるって事?
本来なら途中で使えなくなる原因を特定するべきだけど、
とりあえず、mysql_stat あたりで確認してから
mysql_real_escape_string実行するようなfunction作っちゃえば?
DBの関数は全部返り値チェックしようよ。
137 :
130 :2009/09/20(日) 11:52:17 ID:???
mysql_statですね。分かりました。
a, b, c, d, eのキーを持つ配列からa, b, eだけ抽出するようなことって、 ひとつひとつアクセスする以外に方法はありませんか?
どういう条件で抽出するんだよ あとスレタイ
140 :
nobodyさん :2009/09/20(日) 12:12:08 ID:pS/nR+SK
すみません a, b, c, d, eをキーに持つ配列xがあったとして、 x->foo(array('a', 'b', 'e')) みたいにしてa, b, eをキーに持つ配列を得ようとしてるんです
標準関数には無い
array_intersect_key(x , array('a', 'b', 'e') )
>>141 標準関数にあるなしなんて聞いてねえよ
てめえみてえな初心者回答者はすっこんでろ
>>142 第二引数はキーで比較だから、array_flip入れないとだめじゃね?
146 :
nobodyさん :2009/09/20(日) 13:21:44 ID:b7b/LRof
hetemlっていうレンタルサーバでhtmlをphpとして実行したいんですけど、 .htaccessに AddType application/x-httpd-php .html と書いて、htmlへアクセスすると、ブラウザには表示されず、 htmlがダウンロードされてしまいます(phpもそのまま見えてしまう) どっか設定見落としありますか?
>>147 ありがとう、自分で契約してる鯖じゃないんで、直接聞くのも時間かかるのでココできいたのでした…
あきらめて鯖屋さん経由をとります
149 :
nobodyさん :2009/09/20(日) 17:42:12 ID:61IiHty0
超不思議なんですけど <?php class foo { var $bar = 'I am bar.'; } $foo = new foo(); $bar = 'bar'; $baz = array('foo', 'bar', 'baz', 'quux'); echo "{$foo->$bar}\n"; echo "{$foo->$baz[1]}\n"; //echo "{$baz[1]}\n"; ?> で、なんで I am bar. I am bar. と表示されるんですか? 一つ目は分かるんですけど、二つ目はてっきりbarだけが表示されると思ったんですけど… (echo "{$baz[1]}\n"; にすると bar だけになりました)。 ていうか、$foo->$baz[1]って呼んでますけど、$baz[1]ってclass fooのメンバーじゃないんじゃないですか? 何が起こっているのかさっぱり分かりません。 どなたか説明してください。
あらら。 つまり $foo->$baz[1] は $foo->bar って解釈される。 $bar = 'bar' $foo->$bar が理解できるのなら同じだと思うけどー。
152 :
149 :2009/09/20(日) 18:04:08 ID:61IiHty0
>>150-151 あア、ナルほど!
二段階で変換されてるんですね。
ありがとうございました。
exif 形式のjpgだとTemp_nameとかその他の情報が取れないんですが、 サーバーに何かが足りないんでしょうか?
154 :
nobodyさん :2009/09/20(日) 21:11:13 ID:r/z84N/d
出すの忘れました。
155 :
nobodyさん :2009/09/20(日) 23:12:32 ID:qCT4pyHG
おい貴様らひさしぶりだなシルバーウィークは楽しんでるかね SQLiteの使い方がわからねえんだけどこれはどこにデータが保存されるのか教えてくんない?
ストアドプロシージャ
157 :
nobodyさん :2009/09/20(日) 23:34:49 ID:7Axymed3
文字コードで wMOV8seKwJSdvpCElt0←こういうタイプのエンコード何を使ってるのか分かる人いませんか?
Base64
159 :
nobodyさん :2009/09/20(日) 23:50:48 ID:7Axymed3
base64_encodeか ありがとう
> ウェブとの親和性も高いから、mdb形式よりも使い勝手はいい > かもしれない。 シングルユーザ データベース全体ロック
途中で送信してしまったスマン SQLiteは上記の問題があってウェブアプリケーションには向いてない スタンドアロンで動くからこそ重宝されてる
どうやってもファイルである以上ファイル単位でロックされるのは仕方ないんだなあ
>>161-162 WebAppって(もしくは用途によっては)SELECTがほとんどだからファイルロックの
影響はそれほど無いと思ってたんだけど、読み込みでもロックの被害甚大?
165 :
nobodyさん :2009/09/21(月) 07:00:02 ID:5/lX4mwC
ちょっとスレ違いかもしれませんが質問させてください。 よくフォームなどで、 そのページで入力された値を自身のファイルで受け取り、 チュックし、セッションに保存して、 次の確認ページなどに飛ばす という一連の動作を使います。 このときフォームのactionに指定するURIは 自身のページのURIになるのですが、 いちいち自身のURIを記述するのは煩わしいですし、 コードの融通性の観点からもあまりよろしくないと思われます。 そこでフォームのactionに自身のURIが指定されるようにしたいのですが、 どのような方法がベストなのでしょうか? 考え付いたのは 1・$_SERVERで取得しactionに指定。 今のとこ自分の中で最有力候補? 2・actionに値を指定しない これで自動で自身のページに飛ぶかと思いきやダメでした…。 3・セキュリティーの観点から絶対にきちんとURIを記述し指定する。 本末転倒ですが、取得するのは危険だという可能性もあるかと思います。 見当違いなこと書いてるかと思われますが、 ベストな方法をご教授ください。
>>164 でも、MTなんかではSQLite使われているよね
>164 読み出しはスケールさせるのが比較的簡単だが、書き込みはスケールしにくい DB全体ロックだと、利用者が増えると比較的すぐ行き詰ると思う MTなんかは、書き込みをするユーザー数が少ないからあまり問題がないのだろう 恐らく設置の容易さを取ったんだろうな
>>166 MTって、
書き込みは、ロックで待たせても別にいいだろうし、
読み出しは再構築のときくらいでしょ。それもロックで待たせておk。
って、触ってたのは3年くらい前のことなんで、
近頃では再構築不要とか言うなら、また違う話になるかもしれん。
169 :
nobodyさん :2009/09/21(月) 10:04:51 ID:xFfP11ss
【OS名】linux 【PHPのバージョン】php5 【連携ソフトウェア】 【質問内容】 htmlに @html APHP Bhtml のようにPHPを使ってますが Fatal error: Maximum execution time of 5 seconds exceeded になった場合このAのエラーのPHP処理をスキップさせて Bを表示したい場合どうすればいいですか?
要するに、エラーが起きてもおきなくても(3)の部分を表示させたい、と? (1) (3) (2) の順に記述する。 (2)のPHP部分でも(正常なら)何かを表示するので、上のようにしたら見た目上の位置関係が 崩れるというのなら、スタイルシートで対応。 では駄目かの? でもなあ、5秒超かかる処理ってどんなの? そういう処理が十分有り得る状況なら、5秒で致命的エラーとされる設定の方を何とかすべき だろうし、そうでないなら、5秒以上かかってしまっていることを何とかすべきじゃなかろか。
172 :
nobodyさん :2009/09/21(月) 11:22:59 ID:c8BcA53t
PHPって $string = "もじ"; $string = (function($string){ return $string.$string; })(); echo $string; //もじもじ のように無名関数を使うことは出来ないのですか
できるお
175 :
nobodyさん :2009/09/21(月) 12:28:34 ID:c8BcA53t
>>174 文字列を渡すのか・・これはひどい
ありがとう
177 :
nobodyさん :2009/09/21(月) 12:31:22 ID:/inoxiUx
windowsでphp5.3を使いたいのですがスレッドセーフとかいうのが2種類あってどっちを使えばいいですか?
スレッドセーフにしたい時はスレッドセーフ版 スレッドセーフにしたくない時はノンスレッドセーフ版
179 :
nobodyさん :2009/09/21(月) 12:37:46 ID:/inoxiUx
Apache使ってるんですけどスレッドーセーフとスレッドセーフにしないを切り替えるにはどうしたらいいのでしょうか? あとスレッドセーフにするとどうなるんですか?
それくらいはぐぐってください
181 :
nobodyさん :2009/09/21(月) 12:38:54 ID:c8BcA53t
>>176 javascriptなどで実装されている("(function(){〜})()"のような)スマートな使い方は出来ないかなあと思って質問しました
リンク先読んだの?
183 :
169 :2009/09/21(月) 12:43:41 ID:???
ご返信ありがとうございます。
>>171 @ではちょっと無理でした。
>>172 スタイルシートは出来る限り使わない方法を探しています。
通常は1秒もかからないんですがなぜかたまにタイムアウトに?
すべて自作ではなくPEARを使った処理なのでその内部をいじれるほどPHPに慣れてないので
なんらかの方法でスキップができればと思います。
184 :
nobodyさん :2009/09/21(月) 12:52:24 ID:c8BcA53t
>>182 読みました。
例2 変数への無名関数の代入
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
たとえばこれは変数に関数を代入していますが直接結果を代入したいのです。
このような感じで既存のコードを置き換えたいと思っています
function example(){
return "aaa";
}
$test = example();//aaaが返り$testにaaaが代入される
↓
$test = (function(){//aaaが返り$testにaaaが代入される
return "aaa";
})();//関数を()で囲って末尾の()で関数を実行している
ググったら無理なようであきらめます・・PHP6で実装されることを祈りながら
>>184 PHPは構文解析周りが貧弱なので諦めて下さい
俺も下記とかやりたいわ…
$a = new stdClass():
$a->b = function () {};
$a->b();
187 :
nobodyさん :2009/09/21(月) 13:40:18 ID:rQWWzoEt
【OS名】win32 【PHPのバージョン】php5.3.0 【質問内容】 外部からGETで取得した値が数字でも、is_intで整数値じゃないと言われてしまいます。 外部から取得した値が整数かを調べる方法はありますか?
>>186 まじっすか!
と思ってPHP6のスナップショットまで確認したけどできないじゃないか
ぬかよろこびさせやがって畜生…
数値の12+34は46だが、文字の"12"と"34"を足すと"1234"になる。 文字の"1"と数値の1は本来は別物。PHPは必要に応じて自動で変換してくれるからあまり意識しないけどな。 is_intは1を許可し、"1"は許可しない、PHP内では珍しい関数(というか、両者を区別するための関数) 多分最速なのはctype_digit()。ただし、"009"とかが通るし"-10"は通らない。 あとは「整数値」のルール次第。たとえば、負の整数や0はどうするんだ?"009"は?(郵便番号とかなら有効だよな)
intvalで変換してif使って
191 :
nobodyさん :2009/09/21(月) 14:14:12 ID:rQWWzoEt
>>189 ,190
回答ありがとうございます。
自然数以外を弾きたかったので最初に ctype_digit() で数字以外を弾いて preg_match("/(^0)(\d)/" , "") で009等を弾くことにしました。
>>191 それだと動かないよ先頭に数字が付けば1が返る(1abcdもOKになる)
先頭に"-"も含めるなら /^-*[^0](\d)+$/
あーctype_digit()で弾いてるのか でもctype_digit()の後にpreg_matchするならpreg_matchだけで済ました方がいいんじゃないかな
[^0]だと0以外何でもありになるから /^-*[1-9]\d+$/ だな
それ--11も受け付けるし2桁以上ないと受け付けないから /^-?[1-9]\d*$/ だろ
自然数と言ってるのにマイナス付けてどうする $はD修飾子なしじゃ改行にもマッチするぞ
197 :
189 :2009/09/21(月) 17:01:17 ID:???
と、ご覧のように、正規表現は分かりづらい上にバグの原因にもなりやすい。 こんな下らん事で悩む時間が惜しい。>190に一票。
198 :
165 :2009/09/21(月) 17:19:58 ID:SD2dtHFE
だれか165お願いします。。。
ベストなんて無いよ
>>198 $_SERVERからとってるかなぁ
でも値のチェックはするべき。
201 :
nobodyさん :2009/09/21(月) 17:49:34 ID:uPBGfkai
あ
>>198 2がダメならいちいち書いた方がいいんじゃないか
203 :
198 :2009/09/21(月) 18:30:02 ID:FunJFz74
>>200 ドメインなんかをチェックすることを考えたら、
直書きのがパフォーマンスもいいしセキュリティ的にも安心なんですね。
サイト内検索の場合、どのページでも使うので手書きは避けたいのですが…。
>>202 やっぱりそうですか。
$_SERVER['PHP_SELF]を使わないで $_SERVER['SCRIPT_NAME']を使っていれば良いと思う もちろん値の確認は必要だが。
>>203 basename(__FILE__);で自分自身のファイル名が取れるよ
206 :
nobodyさん :2009/09/21(月) 20:02:54 ID:MAV91RaJ
自サーバのMACアドレスを知るにはどうしたらいいですか?
>>206 環境は?
ifconfigの結果から取得するとか。
ifconfig(windowsはipconfig /all)でコマンドから取得しれ
209 :
nobodyさん :2009/09/22(火) 00:18:54 ID:cla4TgUg
なんかさっき2ちゃんねらーっぽい4人組みと道ですれ違った
逝ってよし オマエモナー ってな会話でもしてたか?
鯖移転とか感謝厨とか話してたんじゃね?
212 :
nobodyさん :2009/09/22(火) 11:42:42 ID:Mwzzxg9y
テンプレートとデータを分けたときのキャッシュファイルの作り方がわかりません 大まかにどのような仕組みなのでしょうか?
どこでキャッシュするかによるな。一番外側でキャッシュするなら 例えばhoge.php?aaa=1&bbb=2とかいうページで(他に変数なし)、ユーザーによって表示内容が違ったりしないという前提で 1.普通に処理して画面表示するが、ついでにhoge_1_2.htmlとかいうファイルに結果を書き出しておく 2.アクセスが来たらパラメータに応じてhoge_?_?.htmlというファイルを探す。あればそれを読み込んでそのまま画面表示する なければ1同様に普通にに処理してファイルに書き出して画面表示する 3.この際、htmlの方には有効期限を決めておく。読み込みの際に更新日時をチェックし、古かったら消す。 あるいは、データが更新されるとかでキャッシュが無効になるタイミングがあるなら、その時に消すというルールでもいい。 という機構を実装するのが一番シンプル。 ファイルじゃなくてmemcacheとか使ってもいいし、phpに処理を渡さずにwebサーバだけでなんとかする手段もあるし リクエストがあったその場で生成するんじゃなくてデータが更新された時点でHTMLを書き換える手もあるし、その辺は色々。 上記は「あるリクエストに対し、どういうHTMLが返るか」をキャッシュしたわけだが。 一歩内側でキャッシュするなら、「あるリクエストに対し、どういうデータがテンプレートに渡るか」だけをキャッシュする手もある。 さらに内側だと、「あるSQLに対し、どういうデータが返るか」をキャッシュしても速度は向上する。
ページをキャッシュしファイルかメモリかDBにURIとタイムスタンプを記録して そのURIに次にアクセスがあったときにタイムスタンプと比較してライフタイム以下だったら キャッシュを出力、越えてたりデータが更新されてたら新たに生成して出力しする、 民主に入れたならそれ位わからなきゃねw
この60年で日本が劣化したのは自民信者が原因だったことがよく分かった
そういうことにしておきたいってことがよく解った
217 :
213 :2009/09/22(火) 12:29:14 ID:???
キャッシュする戦術は使える容量やアクセス数、更新頻度次第。 「外側」の方がキャッシュされた時のレスポンス速度はいいが、組み合わせ数が増える。 (たとえば、10パラメータが10通りの値を取る時、一番外側でのキャッシュなら10^10通りのキャッシュが必要になる SQLをキャッシュする形式なら、各パラメータがそれぞれ独立で各1つのSQLにしか影響しないなら、10*10通りで済む) 組み合わせ数が増えると、キャッシュのヒット率が落ちるので、初回アクセス時のレスポンスが落ちる。 100通りしかパターンが無い場合と、10,000,000,000通りのパターンがある場合だと、「既にキャッシュがある確率」が段違いだからな。 SQLキャッシュだと、「4つのパラメータのうち3つは既出」という場合でもキャッシュの恩恵が受けられるので、速度が上がるというのもある。
218 :
nobodyさん :2009/09/22(火) 12:33:16 ID:6wpNucdw
>>204 ありがとうございます。
二つの違いについて詳しく調べてみます。
>>205 それを相対パスで指定すると良さそうですね。
セキュリティ面はどうか調べてみます。
ありがとうございます。
勉強になりました ありがとうございます
220 :
nobodyさん :2009/09/22(火) 13:48:04 ID:HmGOH+g/
classとかの書き方や使い方を覚えたいのですが コードサンプルが掲載されているわかりやすいサイトってありませんか? 国内でも海外でも問いません
あー、自分も知りたい。 綺麗なソースコードのある程度の規模のアプリとか。
フレームワークのソースはいいよ オブジェクト指向を勉強したいなら一度Javaを勉強したほうがいい
224 :
nobodyさん :2009/09/22(火) 14:43:52 ID:dG0Jqx1c
『リファクタリング』読んどけ 結果を見るより、過程を見るほうが勉強になる。
key[] が問題 key[1] や key[2] とかで
>>224 ?の直後の=は、ただ単にここに書いてる分だけのこと?
228 :
224 :2009/09/22(火) 16:03:05 ID:dG0Jqx1c
自己解決しました 配列の受け渡しはもう少し考えるべきでした
>>228 一応、どう自己解決したのか書いて欲しい
値がこないとかいう前にvar_dampやprint_rしないのは何故なんだろう?
ごめんなさい、質問させていただきます addressというテーブルを作りたく、以下のようにしました フィールドレイアウトで、usernameは主キー、unamは漢字で設定したいのですが主キー、漢字の設定というのが分かりません どのように書き換えれば良いのでしょうか? <?php try { $db=new PDO('samples'); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec('CREATE TABLE address( id INTEGER PRIMARY KEY ,username VARCHAR(50) ,password VARCHAR(32) ,unam VARCHAR(50) )'); print('addressテーブルの新規作成に成功しました。'); } catch (PDOException $e) { die('エラーメッセージ:'.$e->getMessage()); } ?>
まずスレタイを読んでくれ
234 :
232 :2009/09/22(火) 22:35:27 ID:qHgxG+da
すみません、ID出し忘れました
日本語はDBの文字コードをsjisなりujisなりutf8に設定していればテーブル作成時に指定せずとも入力できるよ 主キーの書き方は PRIMARY KEY (id)
236 :
232 :2009/09/22(火) 23:42:40 ID:qHgxG+da
>>235 ありがとうございます
この場合、
$db->exec('CREATE TABLE address(
username VARCHAR(50)
,password VARCHAR(32)
,unam VARCHAR(50)
,PRIMARY KEY(username)
)');
のように設定すればいいのでしょうか?
友愛のPHP
238 :
nobodyさん :2009/09/23(水) 00:04:21 ID:kQ5zUYAt
CREATE TABLE test (username VARCHAR(50),password VARCHAR(32)) というので、usernameにPRIMARY KEYを設定したいのですが、 CREATE TABLE test (username VARCHAR(50),password VARCHAR(32) PRIMARY KEY(username)) のように設定すればいいのでしょうか? 主キーの設定の仕方が分からないもので教えていただけたらと思います
239 :
238 :2009/09/23(水) 00:05:48 ID:kQ5zUYAt
ごめんなさい、live2chで上に書いていたものがそのまま記入されてしまいました 間違いです 無視して下さい・・・ごめんなさい
SQLって最初は難しいよね
仕事に必要なことだけテンプレ使っててもSQLは上達しないぜ マニュアルサイトみて、実際にDBを弄りながら覚えるのが一番。
>>238 最初は、phpmyadmin でやってみたらいいと思う。
都度に発行したSQLが表示されるから参考になるよ。
>>240 MS Access とかあると理解早いんだけどなぁ。
SQL関係は情報ソースが浅いの多いのが難点だと思う。
実装が分散しているからね。共通点とツボを理解するには、
SQL92以降の、一般SQL規格を扱った参考書を読むといいと思う。
最初こそphpmyadminなんかに頼らないでSQLの基礎から学んだほうがいいと思うが
>>243 主キーって言ってる分にはテーブル構造ってコンセプトは理解してるんでしょ。
あとは記法の問題だからサンプルを得るには仕掛けに頼ってもいいんじゃん、
と思うけど。基礎から学ぶなら、実装を問わないSQLのコンセプトから理解した
方がいいとは思うけど、テーブル設計できる人がそこまで遡らなくてもいいと
思う。違う実装に移る前に、SQL**を一通りやったほうがいいとは思うけどさ。
記法の問題なら、記法を学べよw
俺はPHPやって、データベースの所で躓いて、「やべぇ、コマンドプロンプトって何だよ、SQLやらなきゃわけわからん」って感じでSQLやった 他にも設定とか訳分かんなかったし だから、PHPが簡単で、早ければ2日で習得できるとか言うヤツの言う事は聞かないw 皆はSQLはどういう過程で勉強したの? やっぱPHPとは別に勉強したでしょ?
勉強して覚えるのと経験して乗りこなすのとは全然違う。
ひどいゆとりを見た
>>246 実を言うと長門繋がりで・・・
まぁ仕事でも使うから設計あたりもちゃんと勉強したよ、うん。
SQLなんて勉強ってほどでもない CREATE DROP SELECT UPDATE INSERT DELETE こんだけ覚えれば趣味PHPで使う分には問題ないしな PHPをある程度理解している中級者なら1日で覚えられる もっと難しいことしたいならOracleの資格本でも読んでついでにとってみようって感じでおk
インデックスは?
長門って何だ?
1000レコード超えてからでいいんじゃねーの。
1000レコードて
マジで? 皆SQLで詰まらなかったの? 俺は1週間は勉強したけど
んでこのベテラン俳優とSQLがどんな関係があるわけ?
SQL開発した奴だが・・・ しらなかったのか?
そうなんだ、ただ使ってるだけでそういうのは全然知識が無い
>>251 実装ごとに癖がある最たる機能だな。
ただインデックスの概念は標準SQL規格で覚えておいたほうがいいと思う。
SELECT シリアルコード FROM データベース WHERE コードデータ RDER BY 攻性情報戦闘 HAVING ターミネートモード というネタのことかと思ったのに誰だよ俳優の長門って
統合情報思念体がそんなしょぼいデータ管理システム使ってることに逆に驚いたわ
263 :
nobodyさん :2009/09/23(水) 04:04:40 ID:RxoSRe3u
utf-8Nのファイルにutf-8Nのファイルincludeしてるのですが includeした場所にBOMが入ってしまって どうしても取れないんだけど消す方法ありませんか?
UTF-8NってBOM無しじゃなかったっけ?
265 :
nobodyさん :2009/09/23(水) 04:20:13 ID:RxoSRe3u
BOM無しなのにBOMが入ってしまって困ってます
じゃエディタで保存し直せばとしか
267 :
nobodyさん :2009/09/23(水) 04:23:33 ID:RxoSRe3u
何度も保存しなおしてますが出ちゃうんです
それはおかしい。もう一度確認してみ。
エディタは決して明かせません。 皆さん、推測で頑張ってください、という所か。
正しい質問ができる奴は自力で正解に行き着けるからな。 質問スレには、何も考えてない質問者しか来ない。
>>265 理屈上あり得ないのだよ。
EmEditorを使いなさい。BOMありなしこれで見分けがつくし、きちんとした
エディタだ。
実際に、俺も同じ事やっているが、プログラムでそういう処理をしている
場合を除いて勝手にもともとあったファイルにBOMがつくなんて、そういう
挙動が許されるわけがない。
はっきりいってセキュリティホールとまではいかないが、異常な動作だ。
272 :
nobodyさん :2009/09/23(水) 13:00:07 ID:hkbr2oQC
エディタはテラパッドです
273 :
nobodyさん :2009/09/23(水) 13:03:31 ID:hkbr2oQC
274 :
nobodyさん :2009/09/23(水) 13:11:43 ID:hkbr2oQC
>>271 ダウンロウドしたけど
レジストリいじるみたいなので気持ち悪いので捨てました
276 :
nobodyさん :2009/09/23(水) 13:19:02 ID:hkbr2oQC
インクルードやめて ob_start() ob_get_clean()したら出なくなりました
それ解決になってないw
278 :
nobodyさん :2009/09/23(水) 13:41:35 ID:hkbr2oQC
出なくなったんだから解決じゃん へんないちゃもんつけないで下さい
お前ほんとにそれでいいのか?
人生なんてそんなもんさ
>>272 Terapadは使うなっ!!!!!!!
俺もTeraPadです・・・
俺は秀丸・・
ところでおまいさん達はフレームワーク使用してるんかい?
フレームワークスレにいけばみんな使ってるよ
そりゃそうだろうけれど、このスレで聞いてるんだけど・・・
スレタイくらい読めよ
お前ら今日仕事?
289 :
nobodyさん :2009/09/23(水) 16:14:06 ID:9rOaA9Th
preg_replace_callbackからクラス内の関数を呼び出すのにはどうしたらいいんでしょうか。 preg_replace_callback('/\{([^\}]+)\}/', '$this->test', $str); preg_replace_callback('/\{([^\}]+)\}/', '\$this->test', $str); preg_replace_callback('/\{([^\}]+)\}/', $this->'test', $str); のようにやってもダメでした。 すいませんが教えてください。
>>289 preg_replace_callback('/\{([^\}]+)\}/', array( &$this, 'test') , $str);
参照必要なのか?
いらんかったな
293 :
nobodyさん :2009/09/23(水) 16:43:08 ID:9rOaA9Th
あれ?そうなのか。 でもなしでやろうとすると undefined function て言われてできなかったんだ・・・なんでだろ。
php4だから
Terapad使う奴は出て行けよっ!!!!!!!!!!!!!
断る!
>>295 なんでそんな悲しいこと言うんだよぉ。
秀丸ならともかく。
禿丸
ハゲって言うな、生え際が気になるじゃねぇか!
Terapadなんて正規表現も使えないしテキストエディタなんて言えねえんだよ!
メモ帳の存在を否定しなくても…
その他のまともなエディタ>>>>>>>>>>>>>>>>>>[負け組の壁]>Terapad信者(笑)や似たようなソフト
つまりvi最強ですね
ここでEmacsが颯爽と参戦
じゃぁココで決めよう フリーのテキストエディタと有料のテキストエディタで共に一番いいのは何かを
どうやって決めんの?
そろそろスレチだからやめなさいね
edlinだろ
そういや今も有るのかな? と思ってDOS窓で試してみた。 edlin って今も健在だったのね。
>>312 作者は亡くなられてしまったけれど、FDも未だ健在だ。
エディタじゃないけれど
314 :
nobodyさん :2009/09/23(水) 22:58:07 ID:YDDYzS74
なんで
>>1 も読めないバカばっかなんだ?
質問もしない、回答もしない、あげく回答者、質問者に文句だけ言う。
ほんとお前はクズだよ。 何回言えば分かるんだ?
>>314 そんなに怒らずに
こんな時は、松屋のフレッシュトマトカレーでも食べてきなよ。
松屋しょっぱすぎるだろ
えでぃっ太エディゴン最強伝説
SimpleText
この連休、ずっとPHPの学習で終わった・・・orz
で、成果は?
322 :
nobodyさん :2009/09/24(木) 10:18:27 ID:ZrqsxmrO
それは聞かないでくれ・・・orz
323 :
nobodyさん :2009/09/24(木) 10:55:43 ID:+rwbC943
それより「人権擁護法」という危険な法律を知っているかい? 民主党が次の臨時国会でこっそり成立させようとしています。 選任された在日朝鮮人が委員長を務める「人権委員会」に「差別を取り締まる」強力な権限を与える法律だよ。 人権委員会が差別と認定したら一般人はもちろん警察官も罰せられます。 つまり事件の容疑者に朝鮮人が浮かび上がった時点で、警察は捜査できなくなります。 容疑者が「俺が朝鮮人だから疑うのか!」と人権委員会に訴えて、それが差別と認定されれば警察官が処罰されます。 レイプ事件の犯人が「俺が朝鮮人だから拒否したのか!」と訴えて、それが差別と認定されれば被害者の女性が処罰されます。 このように人権委員会の権限は「非常に強固」あり「簡単に悪用」できます。 非常に危険な法律なのですが、民主党は実現させようとしています。 つまり彼らは「在日朝鮮人に悪い人はいない」と確信しています。 その確信は、民主党の根底にある非常に「偏った思想」から来ています。 「日本人は差別する悪い人種。朝鮮人は差別されて可哀相な人種。」という、 これはすなわち「日本は悪い国、日本人が嫌い。」という、 いわゆる「反日思想」です。 朝鮮人や中国人は日本が嫌いですが、日本人が日本を嫌いになるのは異常です。 異常な思想の人間が現在の日本には大勢います。 その原因は主に「日教組」にあります。 戦後GHQの指導で設立された日教組の構成員は、当時の在日朝鮮人であり、 彼らはごく自然に日本の教育現場に反日思想を持ち込んだのです。 戦後70年近く日本人に反日教育をやり続けた成果として、異常な日本が出来上がりました。 反日団体である「民主党」が日本人の圧倒的な支持を得て政権を取りました。 民主党は人権擁護法だけでなく、次々と反日政策が実現します。 在日外国人に日本の参政権を与えるのもそのひとつ。 受給者の7割以上が在日朝鮮人と言われている生活保護を手厚くするのもそのひとつ。 日本は朝鮮人の楽園になります。
くだらねえ質問じゃなくてくだらねえ自己主張がきた
現在、無料で手に入るテキストエディタならサクラエディタがおすすめ Terapadにこだわる人は何故なの? その理由を教えてくれよ 別に煽ってるわけじゃなくてその理由を聞きたいだけだから理由を聞いても別に煽る気はないからね 14歳 中学生より
terapadはねーよ
なんで
>>1 も読めないバカばっかなんだ?
質問もしない、回答もしない、あげく回答者、質問者に文句だけ言う。
ほんとお前はクズだよ。 何回言えば分かるんだ?
327 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
14歳のガキがこのスレにいたとはな・・・ やれやれだぜって感じだな
ちょっと待て、14歳って・・・今学校だろ! サボりか登校拒否か・・・
332 :
nobodyさん :2009/09/24(木) 14:44:04 ID:ZrqsxmrO
<?php require_once('HTML/QuickForm.php'); require_once('HTML/QuickForm/Renderer/Default.php'); function showProcess($values) { global $file; if($file->isUploadedFile()) { $file->moveUploadedFile('./doc/'); print('アップロードに成功しました。'); }else{ print('不正なファイルが指定されました。'); } } $form=new HTML_QuickForm('myForm','POST'); $form->addElement('header',NULL,'HTML_QuickFormアップロード'); $file=$form->addElement('file','name','ファイル名:'); //@ $form->addElement('submit','sbm','アップロード'); $form->addRule('name','ファイルを選択してください。','uploadedfile'); //A $form->addRule('name','ファイルサイズは10KBまでです。','maxfilesize',10240); //B $form->addRule('name','テキストファイルのみアップロード可能です。','mimetype','text/plain'); //B if($form->validate()) { $form->process('showProcess',FALSE); }else{ $renderer=new HTML_QuickForm_Renderer_Default(); $renderer->setRequiredNoteTemplate('<tr><td></td><td><font color="Red">*</font>必須項目です。</td></tr>'); $form->accept($renderer); print($renderer->toHtml()); } ?>
333 :
332 :2009/09/24(木) 14:45:12 ID:ZrqsxmrO
このPEAR::HTML_QuickFormのコードを実行すると、画面に表示されたファイル名という所の横に*マークが付きますが、 いったいこの*マークはどこがの何が作用してマークが付くのでしょうか? @のnameを変更すれば当然消えますが、Aのnameを変更しても消えます しかし、Bの部分のnameを変更したら消えません 自分にはどうしても分かりません
さすが中ニ病患者は妄想もすごいな どんだけ膨らませたらTerapad信者になるんだ
>>332 addRuleでuploadedfileを指定した場合は、必須になります。
QuickForm.php
function addRule($element, $message, $type, $format=null, $validation='server', $reset = false, $force = false)
337 :
nobodyさん :2009/09/24(木) 15:52:52 ID:Y4H9ZJk5
クリックカウンタは通常xxx.php?aaa=bbbみたいにスクリプトを通しますが、
それを通さずに特定の画像(例:www.hogehoge.com/hoge.jpg)を直接クリックした
カウントを表示するにはどのようにすればいいですか?
例として
ttp://naruserv.ddo.jp/img/ の○○viewsがそうです。
スクリプトを使ってるかどうかわからないのですが・・・
>>337 1、example.com/example.jpg のアクセスで実は count.php?file=example.jpgが起動してアクセス記録後画像表示。
2、アクセスログから集計。
>>337 何なんだ、この悪趣味なページは・・・恐
341 :
337 :2009/09/24(木) 16:39:07 ID:Y4H9ZJk5
>>338 ありがとうございます
サイトのソースを見てもcount.php?file=example.jpgのような記述がないのですが
どのように起動しているのでしょうか?
たびたびすみません。
mod_rewriteで
343 :
nobodyさん :2009/09/24(木) 16:59:20 ID:yE0K6uT6
今からプロバイダを乗り換えたいのですが PHPが動かないプロバイダってありますか?
>>343 回線接続業者のおまけウエブサーバー部分の話だったら、 PHP使えるところの方が少ないかと。
345 :
337 :2009/09/24(木) 17:15:11 ID:Y4H9ZJk5
>>342 ありがとうございます。
何となくですが理解できた気がします。
346 :
nobodyさん :2009/09/25(金) 01:29:16 ID:nHivhU16
mysqlでCDをauto_incrementにしている場合に CD 1 2 3 と次は4になって、仮に3番のレコードが削除されていても 4となってくれるのはいいのですが、 この3や4以前のレコードが削除されていた時に phpで4というのを知るにはどうしたらよいでしょうか。 いったんインサートして4を知るしか方法は無いのでしょうか。 早い話がphpadminでいうNext Autoindexを取得できないかな、と。 よろしくお願いします
347 :
nobodyさん :2009/09/25(金) 01:48:43 ID:nHivhU16
事故解決しました show table status like table_name でAuto_incrementに書いてありました。
348 :
nobodyさん :2009/09/25(金) 01:57:43 ID:nHivhU16
間違えました、テーブル名のところはクォーテーションでくくらないと だめみたいでした。 SHOW TABLE STATUS LIKE 'table_name';
349 :
nobodyさん :2009/09/25(金) 14:37:38 ID:Z7rJvuWo
<?php require_once('Cache/Lite.php'); $params=array( 'cacheDir'=>'c:/tmp/', 'lifeTime'=>600); $cache=new Cache_Lite($params); $cid='query'.$_GET['category']; //この部分の'query'の意味が分かりません if($data=$cache->get($cid)){ print($data); } else { $data='クエリ情報"category"の値:'.$_GET['category'].'('.date('G:i:s').')'; $cache->save($data,$cid); print($data); } ?> 失礼しますが質問させて下さい 上記のPEAR::Cache_Liteコードの、コメントを書いた部分の文字列'query'の意味が分かりません 実行しても別に画面上に出てくるわけでもないですし、何故この文字列を書き加えなければいけないのかが分かりません 何かキャッシュ実行時にqueryという文字がないとキャッシュと認識しないとかいう理由とかあって書き加えているのでしょうか?
>>349 よくわかんないけどプリフィックスじゃないの
>>349 キャッシュデータにつける名前みたいなもん。
だから、違うデータをキャッシュしたければそこは違う文字列にしないといけない。その後につけたしてる$_GET['category']も、名前の一部。
【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ って書いてるのに PEARスレあるだろ超過疎ってるけど もうPEARなんて使うのやめなさいよ
353 :
nobodyさん :2009/09/25(金) 19:41:22 ID:jTI+YC2w
セーフモードがかかっているレンタルサーバで、 mkdirやtouchでディレクトリおよびファイルを作成したいのですが、 作成する箇所の親ディレクトリのパーミッションが777でないと作成できません。 作成するときに親ディレクトリを一時的にchmodで777への変更を試みましたが、 chmod関数の仕様上不可能でした。 アップロード時のディレクトリのパーミッションがデフォルトで755です。 このパーミッションをアップロード時に777に変更すれば可能ですが、 変更せずに(755のままで)ファイルやさらにディレクトリをつくり出す方法はありませんか? あるいは上述した通り自分がやった方法ではできませんでしたが、 一時的に777にして作成後755に戻す方法でもよいです。 どなたか分かる方よろしくお願いします。
PHPでメールを送りたいのですが、自分でSMTPサーバを立てていないので検索したところ
yahooで無料でやっているとか
そこで以下のようにphp.iniを書き換えてapache再起動したのですが、
Warning: mail() [function.mail]: Failed to connect to mailserver at "smtp.mail.yahoo.co.jp" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
と怒られ、メール送信ができませんでした。
根本的に勘違いしているのでしょうか?
よろしくお願いします
[mail function]
; For Win32 only.
SMTP = smtp.mail.yahoo.co.jp
smtp_port = 25
; For Win32 only.
sendmail_from =
[email protected] (xxxxxは自分のもっているyahooアドレス)
355 :
354 :2009/09/26(土) 11:52:48 ID:???
yahooだと複雑そうなので、簡易的なradishというもの自分のPC内で立ち上げて使ってみます
windowsか smtpならxmail使っとけ
357 :
nobodyさん :2009/09/26(土) 12:04:29 ID:Ka/xy5+X
PHPとMYSQLが正常に接続できなくて困っています、宜しくお願いします。 【環境】 MySQL5.1.38 WindowsXP SP3 Apache2.2.13 PHP5.2.11 phpMyAdmin3.2.2 【エラー内容】 phpMyAdminに、以下のようなメッセージが表示されます。 「お使いの PHP MySQL ライブラリのバージョン 5.0.51a が MySQL サーバのバージョン 5.1.39 と異なります。これは予期しない不具合を起こす可能性があります。」 【詳細】 以前、MySQL5.0を使っていたため、それが残っていると思われるため、 以下の手順を試みましたが、エラーが直りませんでした。 1. C:\Program Files\MySQL\MySQL Server 5.1\bin\libmySQL.dllをC:\WINDOWS以下にコピーしてApacheを起動。 2. Apacheは起動するものの、PHPからDBに接続しようとするWindowsの予期せぬエラーで接続ができない。 3. Apacheのエラーログや、MySQLのエラーログにも、この件についてログが吐かれていない。 4. {phpのインストールパス}\libmysql.dllをC:\WINDOWS以下にコピーしてApacheを起動すると、正常にDBにも接続できます。 【そのほか】 libmysql.dllが、MySQLの5.1系に対応できていないためだと思われますが、 肝心のlibmysql.dllはどこから入手できるのでしょうか? また、MySQL5.1についてきたlibmySQL.dllのファイル名[libmySQL]のSQLが大文字であることも気になります。
>>357 まず、MySQLとPHPをアンインスコして、フォルダも消す。
できればその対象のファイルがレジストリに残ってないか調べておく。
その上で、PHPとMySQLをインスコする。
>>359 どうもありがとうございました。
そんな不具合があったんですね。知りませんでした。
手順通りやってみたところ直りました。
深く感謝します!
362 :
361 :2009/09/26(土) 13:32:04 ID:Ka/xy5+X
すみません。ID出し忘れていました。 助かりました。
363 :
nobodyさん :2009/09/26(土) 14:31:17 ID:kclaUDci
xamppliteポータブル版のインストール方法がわかりません perlとmysqlとphpが使えればいいのですが d:\xamppにインストールした後は何の設定ファイルをいじったらいいのでしょうか?
なんもいじらなくてもそのまま使えるでしょ あとはインストール用のbatクリックすればいいんじゃね xamppのHPにインストール方法かいてるんだからそれ嫁
365 :
nobodyさん :2009/09/26(土) 15:24:23 ID:Tg4hzrYm
ちなみにどのフォルダがドキュメントルートでしょうか?
初心者はxampp使うなや
367 :
nobodyさん :2009/09/26(土) 15:48:33 ID:Tg4hzrYm
教えてくださいお願いします
教えてくださいじゃないだろ・・・ 書いてることはちゃんとよめ 読むことすらしないやつはやる資格はない
369 :
nobodyさん :2009/09/26(土) 16:23:26 ID:Tg4hzrYm
そういわれましてもわからなくて・・・
これはひどい
>>358 再インストール時にレジストリなんて上書きされるんだからあんまし意味ないと思いますよ
>>372 まったく問題無いのか問題が出る可能性があるのかどっちなんだ?
>>374 話の対象はコンピュータとそのソフトなんだわ。
対象の性質を鑑みることが出来ない?
>>374 この場合は違うだろw
トラブルの原因となる可能性があるのであれば
しっかりとレジストリの掃除してからの方がトラブルが出た際に要因から外せる
絶対ならないのであればそれも要因から外せる
アドバイスをするのであればソースの確認なり検証なりして確実な答えが必要だと思うぞ
てっきりのレジストリの件についてソースを出してきたのかと思えば…
件に関係ないページかよ…
アンインストールすりゃレジストリからデータ消えるのに・・・
質問の解決に繋がらなかった
>>358 が煽られて荒らしてるんだろ
質問は解決してるんだらかまわりはスルーしてやれ
379 :
nobodyさん :2009/09/26(土) 23:25:24 ID:suqPWTbx
外部サイトにpostでデータ送信&リダイレクトさせる方法がわかりません教えてほしいです。
getであればlocation(
http://example.com/?hoge=piyo )
でいけるようなのですが。
また、http_clientやcurlでも無理なようでした。
perlならできるようなのですが、phpだと無理なのでしょうか?
>>377 ソフトウェアのインストールや設定時のレジストリを完全に綺麗にしてくれるなら
巷にあるレジストリクリーナーの役目は無くなっているんだがなぁ
その部分はどう思う?
MYSQLのインストーラは確実に消してくれているのだろうか?
>>379 HTTP_Client::post()で良いんじゃないの
382 :
381 :2009/09/26(土) 23:47:11 ID:???
>>379 補足。
HTTP_Client::post()の結果を受け取って自サイト内で(本来は外部サイトのコンテンツを)表示するのに問題があるのであれば、
post用のページを一枚はさんで、ユーザーに送信クリックさせる(あるいはjavascriptで自動submit?)のが簡単かな。
ところで、perlでやってる実例なりがあるのであれば、phpで同じことをすれば良いのでは?
383 :
nobodyさん :2009/09/27(日) 04:05:29 ID:wLv38OPr
質問です。
http://www.php.net/manual/ja/language.operators.bitwise.php の「例3 整数値のビットシフト」で
32ビットと64ビットの出力例が紹介されていて
自分のパソコンは64ビットなんですけど
32ビットで出力されているようです:
--- BIT SHIFT RIGHT ON POSITIVE INTEGERS ---
Expression: 2 = 4 >> 1
Decimal:
val=4
res=2
Binary:
val=00000000000000000000000000000100
res=00000000000000000000000000000010
NOTE: copy of sign bit shifted into left side
なぜだか教えてください。
どこかPHPの設定で64ビットに切り替えるところがあるんですか?
384 :
nobodyさん :2009/09/27(日) 05:30:09 ID:wLv38OPr
質問です。 ### "form_comparison_operators.html" ### <form action="comparison_operators03.php" method="post"> 名前:<input type="text" name="name" /> <input type="submit" /> </form> ### "comparison_operators03.php" ### <?php var_dump($_POST['action']); // 三項演算子の使用例 $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; if ('default' == $action) echo "デフォルト"; else echo "デフォルトじゃない"; ?> …この出力が NULL デフォルト になってしまいます。 ちゃんと"comparison_operators03.php"が呼ばれているんですから $_POST['action']は"comparison_operators03.php"になるんじゃないんですか? なぜ、NULLになってしまうんでしょうか?
>>384 挙動は正しいです
var_dump($_POST['action']); でNULLと出力されていますので$_POST['action']の中身はNULLです
よって(empty($_POST['action'])) はtrueとなり、$actionには'default'が入ります
最後にif ('default' == $action) がtrueとなり'デフォルト'と出力されます
>>384 あれ?意味が違う気がしてきた
<form action="comparison_operators03.php" method="post">
のactionがPOSTされると思い込んでいるようですが、全く意味が違います
また、form_comparison_operators.htmlのフォームからは$_POST['name'](NULL)のみPOSTされます
HTMLの勉強をお勧めします
387 :
nobodyさん :2009/09/27(日) 05:48:05 ID:wLv38OPr
>>385-386 ありがとうございます。
>$_POST['name'](NULL)のみPOSTされます
では、actionをempty「ではない」ように設定するには
form_comparison_operators.htmlをどう書けばよいのでしょうか?
上の結果から推測してみそ〜
389 :
nobodyさん :2009/09/27(日) 06:04:19 ID:wLv38OPr
>>388 では、
### "form_comparison_operators.html" ###
<form action="comparison_operators03.php" method="post">
名前:<input type="text" name="name" />
アクション:<input type="text" name="action" />
<input type="submit" />
</form>
…ですか?確かに
string(3) "foo"
デフォルトじゃない
という出力になりましたけど、
http://www.php.net/manual/ja/language.operators.comparison.php の「例2 デフォルト値を設定する」は本当にそういう意図で書かれてるんですかね?
変数に$nameではなく、$actionを使ってるところがすごく気になるんですけど…。
第三者の意見も聞きたいです。
俺第三者だけど〜
まぁいいや そういう意図じゃないってどういうこと? どうなるべきだと思ってるの?
392 :
nobodyさん :2009/09/27(日) 06:19:41 ID:wLv38OPr
>>391 「アクション:<input type="text" name="action" /> 」の行が無くても
$_POST['action']に"comparison_operators03.php"が入って
常に"デフォルトじゃない"と表示されるべきだと思っていました。
まぁ、
<form action="" method="post">
のようにactionが空だったら、
"comparison_operators03.php"すらも呼ばれないわけですから
三項演算子を使う意味がないですね。
結論として、
<form action="comparison_operators03.php" method="post">
のactionと
empty($_POST['action']
のactionは「別物」ということでいいですか?
…でも、actionが使われているのは腑に落ちないですねぇ…無駄にややこしいです…。
おまえはHTMLを勉強した方が良い
うむ 三項演算子より先にちゃんと基礎を身に付けたほうがいいかと
395 :
nobodyさん :2009/09/27(日) 06:34:16 ID:wLv38OPr
この例の変数としてactionが使われているのは無駄にややこしい …これに同意してくださるなら、HTMLを勉強してあげてもいいですけど
HTMLのaction属性とPHPの中で適当に付けてる変数名がややこしい?
397 :
nobodyさん :2009/09/27(日) 07:10:48 ID:wLv38OPr
超ウルトラややこCでしょう nameでもfooでもbarでもunkoでもいいから 本当に「適当な」変数名を付けてくれていれば こんな大惨事になることもなかったのに わざわざピンポイントでactionを使うなんて この例を書いた人の品性を疑いますね 昔から「李下に冠を正さず」「瓜田の靴を納れず」と言うでしょう? 疑わしい行動は慎むべきです 下記の者たちには次回からは気を付けていただきたいですね 著者: Mehdi Achour Friedhelm Betz Antony Dovgal Nuno Lopes Hannes Magnusson Georg Richter Damien Seguy Jakub Vrana
勝手に想像して、そうでないと文句言ってるようではこの先つらそうだ。
399 :
nobodyさん :2009/09/27(日) 08:38:48 ID:1afp6/JG
レンタルサーバで動かせる簡易的なクローラーを作りたいです。 用途は、特定10サイト程度を定期的に巡回して、新しいリンクが在ればリンク先を保存(2階層まで)する。 と、単純なものなのですが、PHPでの作成は適していますか? 何かアドバイスを頂ければ幸いです。
>>399 HEADでリクエスト送ってレスポンスヘッダのExpiresの値を前回のものと比較して違っていれば新しいリンクを探す
リクエストヘッダにIf-Modified-Since付けて304が返ってくるかの方が良いね PHPなら簡単にできる
>383 PHP本体をコンパイルしたCコンパイラのintの大きさに依存する。 設定ではなく、コンパイルからやり直さないとダメ。 WindowsならPHPのサイトから64bit版を落とせばいけるはず、あるか知らんが。
403 :
399 :2009/09/27(日) 11:44:01 ID:1afp6/JG
if ($line[$i] !== $oldLine[$i])
<?php function test($a, $b){ if ($a!==$b) { $r = "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"; }else{ $r = "lol"; } return $r; } $test_hensu = array_map("test", $line[$i], $oldLine[$i]); print_r($test_hensu); ?>
>403 そこを考える事を楽しめない奴はプログラマには向いてないな まあ、コーディングは手段であって必ずしも生業や趣味じゃないからどうでもいい話だが 追跡するのはリンクだけだろ?なら、更新の有無とかチェックしないで、毎回片っ端から全リンクを拾い出せばいい 取得済URLのリストだけ保存しておいて、なかったら新規に追加されたリンクと見なしてデータを取得する
407 :
406 :2009/09/27(日) 12:49:26 ID:???
あー、それだと片手落ちか 個々のファイルが更新されたか否かは、結局ファイルを読みに行かないと分からない 正攻法なら前回クロールで作ったファイルリスト全部に対しIf-Modified-Sinceを送り、更新されていたファイルを取得するのが効率がいい
408 :
nobodyさん :2009/09/27(日) 14:03:51 ID:wLv38OPr
>>398 初心者からも文句が出ないように書くのも教える側の義務だと思います
今度彼らに会ったらキツく言っておきます
義務を求めるのなら有料でPHP教えてくれる先生に聞けばいいよ ここは義務で回答しに来てるわけではなく、あくまでボランティアだ
410 :
nobodyさん :2009/09/27(日) 14:07:23 ID:wLv38OPr
>>402 あら、コンパイルからですか。
64bit版落とすのも面倒なので今回は諦めておきます。
次回PHPが大きくヴァージョンアップしたら、ついでに64bit版に変えてもいいですね。
ありがとうございました。
落とすのが一番楽だろw それが面倒なら何ができるんだw
412 :
チラシの裏 :2009/09/27(日) 14:36:50 ID:???
ticks、すげぇー!超便利! これCとかJavaにもあったらいいのにな
413 :
チラシの裏 :2009/09/27(日) 15:57:19 ID:???
でも、関数のオーバーロードはサポートされてない 残念っ!!!
>>408 あはは、あまりにあれ過ぎて君が頓珍漢な勘違いしたままなのだが誰も教えてくれないんだよ。
415 :
nobodyさん :2009/09/28(月) 00:37:04 ID:nPgUeQzt
>>415 $_SERVER['QUERY_STRING']
>>415 apache使ってるなら、mod_rewriteで置き換えるしか無いんじゃない?
localhost/index.php/文字列 とやって、PATH_INFOで受け取る手もある。拡張子隠蔽はMultiViewとかmod_rewrite
419 :
nobodyさん :2009/09/28(月) 00:58:51 ID:nPgUeQzt
>>416-418 迅速なレスありがとうございます
超絶初心者なのでわからない単語などありますが
そこらへんはググって試行錯誤やってみます
ありがとうございました
420 :
nobodyさん :2009/09/28(月) 02:52:20 ID:gXHj/gRY
422 :
nobodyさん :2009/09/28(月) 06:11:36 ID:xItyGbMU
http://www.php.net/manual/ja/language.oop5.iterations.php の「例3 IteratorAggregateを実装するオブジェクトの反復処理」ですが:
<?php
class MyCollection implements IteratorAggregate
{
private $items = array();
private $count = 0;
// Required definition of interface IteratorAggregate
public function getIterator() {
return new MyIterator($this->items);
}
public function add($value) {
$this->items[$this->count++] = $value;
}
}
$coll = new MyCollection();
$coll->add('value 1');
$coll->add('value 2');
$coll->add('value 3');
foreach ($coll as $key => $val) {
echo "key/value: [$key -> $val]\n\n";
}
?>
…を実行するとHTTP 500 Internal Server Errorが出ます。
最後のforeachをコメントアウトしてやるとエラーは出なくなりますが、真っ白で何も表示されません。
どこを直せばよいか教えてください。
>>422 echo "key/value: [{$key} -> {$val}]\n\n";
424 :
nobodyさん :2009/09/28(月) 06:59:12 ID:xItyGbMU
>>423 ありがとうございます。
残念ながら、{ }を付けてもやっぱりHTTP 500 Internal Server Errorが出ます。
何か他に思い当たるところはないですか?
425 :
422 :2009/09/28(月) 07:16:07 ID:xItyGbMU
ちなみに // echo "key/value: [{$key} -> {$val}]\n\n"; と、その行だけコメントアウトしてもHTTP 500 Internal Server Errorが出ます。 php.netによると、正しい出力は rewinding current: value 1 valid: 1 current: value 1 key: 0 key/value: [0 -> value 1] next: value 2 current: value 2 valid: 1 current: value 2 key: 1 key/value: [1 -> value 2] next: value 3 current: value 3 valid: 1 current: value 3 key: 2 key/value: [2 -> value 3] next: current: valid: …となるそうです。 何かのヒントになりますか?
トラブルの九割は、実に下らない取るに足りない原因で起きているという観点から一応聞いてみる。 もちろんMyIteratorクラスは、そのページのサンプル通りのものを ><?php >class MyCollection implements IteratorAggregate この二行の間に書いているか、またはincludeしてるんだよね? それと、エラーログ見てみようよ。
427 :
422 :2009/09/28(月) 08:13:11 ID:xItyGbMU
<?php class MyCollection implements IteratorAggregate { private $items = array(); private $count = 0; public function getIterator() { return new MyIterator($this->items); } public function add($value) { $this->items[$this->count++] = $value; print_r($this->items); // 追加した行; 配列の内容を表示するため } } $coll = new MyCollection(); $coll->add('value 1'); $coll->add('value 2'); $coll->add('value 3'); //foreach ($coll as $key => $val) { //echo "key/value: [{$key} -> {$val}]\n\n"; //} ?> 一行追加してみました。その結果、 Array ( [0] => value 1 [1] => value 2 [2] => value 3 ) …と、配列に正しくkeyとvalが入っているのが分かります。 後は問題は「なぜforeach文が正しく動かないか」です。 自分が出来るのはここまでです。どなたかお力を貸してください。
428 :
422 :2009/09/28(月) 08:18:10 ID:xItyGbMU
>>426 ありがとうございます。
>もちろんMyIteratorクラスは、そのページのサンプル通りのものを
>
>><?php
>>class MyCollection implements IteratorAggregate
>
>この二行の間に書いているか、またはincludeしてるんだよね?
いえ、MyIteratorクラスは
>>422 に書いた通りで、何もincludeしていません。
「何」を「どのように」includeすればいいんですか?
それと、エラーログはどうやって見るのですか?
429 :
nobodyさん :2009/09/28(月) 10:00:32 ID:A4zPaHMy
どっちかっていうとMysqlのことなんですが mysql_eofは廃止になったとことですけど mysql_errorやmysqlerrnoでどうやって終端チェックできるんでしょうか? if(mysql_errno($db)!=0){echo "End of Record";} とか if(mysql_errno($db)){echo "End of Record";} やってるんだけど0が帰ってきて、終端とそうでない場合に違いがでないんだけど...
>428 エラーログの出し方を知らずにコーディングとか、服を着ないで原宿に買い物に行くようなもの。 error_reportingとdisplay_errorでぐぐれ、もしくはマニュアル検索れ。
431 :
nobodyさん :2009/09/28(月) 11:51:50 ID:/RfVJ8GX
windowsでphp5.3のスレッドセーフ版を使う場合、 スレッドが作られる数だけ タスクマネージャのプロセスがたくさん表示されるってことでしょうか?
432 :
422 :2009/09/28(月) 13:50:33 ID:xItyGbMU
>>430 error_reportingは知ってたんですけど、
display_errorsがOffになってて表示されなかったようです
(どっかの例でdisplay_errorsをOffにしたんですよ、確か、ちきしょー)。
それでエラーメッセージ読んでたら速攻で解決しました。
ありがとうございました!
>>432 お前みたいな責任転嫁野郎は社会のゴミ屑だな
434 :
422 :2009/09/28(月) 14:13:46 ID:???
>>433 いやいや、マジでそうですって。
display_errorsはデフォルトではOnですし、それ以外考えられないですよ。
右も左も分からん人間にdisplay_errorsをOffにさせるなんて
オレオレ詐欺に次ぐ悪質な手口じゃないですか。
で、実際にどこで変えたのか検索しようとしたら
Windows Vistaの糞野郎が「拡張子が".php"のファイルの内容は検索できない」とか言いやがりますし、
世の中絶対におかしいですよ。
ちょっとこれから服を着ないで原宿に買い物に行ってみます。
どこが悪くて、どう解決したのか書かない奴ばっかりだな。
>>434 公開する段階ではdisplay_errorsはOffにすべき
おまえがちゃんと読まずに設定書き換えただけ
437 :
nobodyさん :2009/09/28(月) 16:06:56 ID:+8HTDnRb
まったく予測もできなく原因もわからないエラーが起こるので 例外処理を書きたいのですが try{ 例外が起こりそうな処理 }catch(Exception $e){ 例外時の処理 } これでよろしいでしょうか? なにか足りないものがあればお願いします
>>434 お前俺の友達に似てるな。
ネットに書いてあることをそのままコピペでやって
うまくいかなかったらそいつのせいだと?
馬鹿にするのも大概にしろよ。
>>437 それでいいよ
ただJavaのようにエラー全てを例外で処理するような言語ではないので
PHPで例外処理使う場合はPDOなんかの勝手にthrowしてくる最近のクラスだけでいいんじゃない?
PHPは後つけのオブジェクト指向なので昔からあるような関数はエラー出て止まるだけだから
そういうものに対しても例外処理をしたいとなると自分でthrowしないといけない
440 :
nobodyさん :2009/09/28(月) 16:32:03 ID:+8HTDnRb
>>439 予測不能な物は自分でthrowしなくていいんですね
ありがとうございます
サーバサイドで実行できるってのがうさんくさい紹介だな PHPなんだからサーバ側処理なのは当たり前だろ ただのjQueryライクにかけるようにしたクラスライブラリだろ PHP知らないJS使いが使う分にはいいがこのスレでは不要
そんなの既存の関数2つ使うだけで出来るだろ・・
どなたか431おねがいします
プロセスとスレッドは異なるもの。 タスクマネージャにスレッドまでは表示しないだろ。
448 :
nobodyさん :2009/09/29(火) 09:48:41 ID:ZXmjIu3r
時間に関するスクリプトを組む際、 ・ある瞬間をあらわす「時刻」 ・時刻と時刻の間を表す「時間」 ・時間の量 の三種類の別種のオブジェクトがありうると思いますが それらを提供しているライブラリがあれば教えてください
>>448 1
time(); or microtime();
2
意味がわからない
3
意味がわからない
具体的に書いていただかないと回答もつきませんよ
ディレクトリの使用サイズを取得する為に disk_total_spaceで取得すると、-844980224の様にマイナスになってしまいます。 正しく取得するにはどうしたらいいですか?
スレタイ
452 :
nobodyさん :2009/09/29(火) 11:00:21 ID:rvLghs2t
ディレクトリの使用サイズを取得する為に disk_total_spaceで取得すると、-844980224の様にマイナスになってしまいます。 正しく取得するにはどうしたらいいですか? 追記:マイナスは消えたのですが、実際のサイズとは違う値が返ってきました。
なんでマイナス消えたの?
>>452 二度も書くな
「ID出し忘れました。すみません」ぐらい言えないのかお前
457 :
nobodyさん :2009/09/29(火) 12:00:55 ID:CnNpVgYI
>>452 duコマンドでとったほうがいいんじゃない?
自分も昔PHPの関数でどうにかとろうとしてうまくいかなかったから
duコマンドで取得することにしたよ
Windowsの場合でも似たようなものがぐぐればVectorで配布されてるので
それ通してやればいいんでないかな
459 :
nobodyさん :2009/09/29(火) 13:54:45 ID:lVskSDkS
コードをヘッダの前にズラズラ書くのイヤンな俺はこんな感じで最後にメインルーチン書いて最初に呼び出す習慣なのだがみんなはこんなのやらないの? 他の言語もやってたから、なんかメインルーチン書くと落ち着くし。 <?php $var=main(); ?> <html><body> <?php echo $var; ?> </body></html> <?php function main(){return $var;} ?>
viewを最初に書くのは気持ち悪い
1ファイルでやる分なら別になんでもいいんでない
>>460 ケチつけるだけじゃなく、より理想的な代案を出すのが出来る大人と言うもんだがなぁ。。。
>>459 htmlは別ファイルに分けるからそんな事しないなあ。
main関数を作ることは多いけど。
464 :
nobodyさん :2009/09/29(火) 16:44:19 ID:nmAs+ASN
http://www.php.net/manual/ja/language.oop5.cloning.php の「例1 オブジェクトのクローン作成」について質問です。
<?php
class SubObject {
static $instances = 0;
public $instance;
public function __construct() {
$this->instance = ++self::$instances;
}
public function __clone() {
$this->instance = ++self::$instances;
}
}
class MyCloneable {
public $object1;
public $object2;
function __clone() {
$this->object1 = clone $this->object1;
}
}
$obj = new MyCloneable();
$obj->object1 = new SubObject();
$obj->object2 = new SubObject();
$obj2 = clone $obj;
print("元のオブジェクト\n");
print_r($obj);
print("クローンオブジェクト\n");
print_r($obj2);
?>
465 :
nobodyさん :2009/09/29(火) 16:47:50 ID:lVskSDkS
>>460 >>463 あー、ページ全体を別ファイルから読み込んだり変数から生成するってわけね。
なんか処理のオーバーヘッドが気になってなるべくできる場所は生HTMLで出力するようにしてるんだよね。
466 :
nobodyさん :2009/09/29(火) 16:49:33 ID:kJl2bky+
phpでecho "<p>〜<p>"とかしないで「<?p><?php〜?></p>」にするとメリットあるんですか?
467 :
464の続き :2009/09/29(火) 16:51:05 ID:nmAs+ASN
この出力が下のようになります: 元のオブジェクト MyCloneable Object ( [object1] => SubObject Object ( [instance] => 1 ) [object2] => SubObject Object ( [instance] => 2 ) ) クローンオブジェクト MyCloneable Object ( [object1] => SubObject Object ( [instance] => 3 ) [object2] => SubObject Object ( [instance] => 2 ) ) …でも、$obj2->object2が「2」になる理由が分かりません。$instancesはstaticですよね? だから $obj->object1 = new SubObject(); $obj->object2 = new SubObject(); で1, 2となって $obj2 = clone $obj; で3. 「4」になるんじゃないんですか?
>>467 無駄に改行するなよ!モニタが小さいからみずれえんだよ!
>$obj2 = clone $obj; ここでクローンが作成されてるのが、$obj->object1 だけだからだろ。
言い方悪かったな。 「$obj->object1 と $obj->object2 のうち、$object1 しかクローンが作成されてないからだろ」 だな。
471 :
464, 467 :2009/09/29(火) 17:11:25 ID:nmAs+ASN
>>469 ありがとうございます。
ええーっ!でもぉ?…と思ったら、アッー!
$this->object1 = clone $this->object1;
で $obj->object1 だけクローンが作成されてるんですね。
その際に ++self::$instances されるわけですね、なるほど。
$obj2->object2 の「2」は $obj->object2 のクローンのままの「2」なんですね。
ありがとうございました!
472 :
nobodyさん :2009/09/29(火) 19:05:29 ID:kJl2bky+
windows でmysqlをpdoで使いたいのですが pdoで動かすにはどのような設定とファイルが必要でしょうか? PHPは5.2.10です
>>472 ブラウザのアドレス欄に「php.net/pdo」と入れると説明が全部出てくる
474 :
nobodyさん :2009/09/30(水) 03:09:00 ID:PdAV1SS2
【OS名】Linux 【PHPのバージョン】php4.4.8 【質問内容】 特定のユーザーエージェントだったらフラグを立てる、というつもりで 以下のように書いたところ Fatal error: Cannot break/continue 1 level in 〜 と出てしまいます。break指定なんかしてないんですが・・・どういうことでしょうか。 function axs_ck(){ $mfl = 0; if($_SERVER["HTTP_USER_AGENT"] =="Webaster") {//自分専用エージェント名。 $mfl=1; }//この行がエラーとか言われてます。 } ここで立てたフラグを使って、管理者ページへのリンクを付けたり消したり、 立ち入り禁止ページを作ったりしようと思っています。
>>474 その記述ならエラーは出ないはず。
ファイルが違うとか保存してないとか参照先が違うとかもう一度見直してみるといいかも
476 :
474 :2009/09/30(水) 03:52:48 ID:???
ですよね・・・
axs.phpにこの内容を書いて、呼び出し元のindex.phpに
require("axs.php");
axs_ck();
と書いてUP済みです。
>>474 の内容をindex.phpに書けばエラー出ない・・・動く・・・普通に。うーん、どうしてだ。
ローカル変数になってるぞreturnで返してやれば
478 :
nobodyさん :2009/09/30(水) 15:17:52 ID:erJ6uHWW
<ul> <li>リストです</li> </ul> というHTMLから「リストです」の部分を抽出したいと思い preg_match("/<ul><li>(.*?)<\/li><\/ul>/s",$html,$array); という正規表現を書いたのですが、抽出できません。 見直すとHTMLが改行されていたので、改行を削除したら抽出されました。 しかし、改行する場合・しない場合もあり、両方対応させたいと思います。 上記コードをどのように変更すればいいのでしょうか?
パターン修飾子にmを追加してみれば? 試してないから間違ってたらsry preg_match("/<ul><li>(.*?)<\/li><\/ul>/sm",$html,$array);
480 :
nobodyさん :2009/09/30(水) 15:26:58 ID:6H2Mywyh
mt_randで$minと$maxに正の値を与えてるのに 返り値に負の値が出るのはなんでだろうorz
>>479 いくらs付けてもそれじゃ無理だろ
君のパターンでは<ul>と<li>の間に改行がこないパターンになってるんだから
<?php
$html ="
<ul>
<li>リストです</li>
</ul>
";
preg_match("!<ul>.*<li>(.*?)</li>.*</ul>!s",$html,$array);
print_r($array);
?>
482 :
nobodyさん :2009/09/30(水) 15:33:27 ID:i3D4XUwa
改行の後ろにゼロ回以上の繰り返しを入れる \n*
\ 使うのが面倒なので、こうかな。 preg_match("|<ul>.*?<li>(.+?)</li>.*?</ul>|ms",$html,$array);
mは不要
485 :
478 :2009/09/30(水) 15:50:44 ID:erJ6uHWW
>>479-484 みなさんありがとうございます。上手くできました。
/を|にして、ulとliに.*を入れれば良いんですね。
勉強になりました。
パータン内で|を使わないって決めてるならいいけど デリミタに|は使わないほうがいいよ #とか!とか&とかそういうほとんど使わないものをデリミタにしな
英文では #, !, & 出るから使わないのが常識だろ
488 :
474 :2009/09/30(水) 17:26:12 ID:PdAV1SS2
>>477 !!
index.phpからprint $mfl;としても真っ白な理由が分かった・・・
ような気がします。ありがとうございます。
どうやってもダメなので考え方変えました・・・フラグ立てずにアク禁だけの
ルーチンとリンク用ルーチンに分けることにしました。
スレタイ通りに超くだらない質問を最後に。
ページにアクセスした時にユーザーエージェントごとに違う内容を
100回ループで出力する時、
(1)ヘッダ付近でエージェントを取得してFフラグを立てておき、
ループの所でtrue or falseで出力
(2)ループの所でエージェントを取得してtrue or falseで出力
やはり(2)が効率悪いですか?
ホスト名取得だと負荷がかかるとかなんとか聞き覚えがありますが・・・
>>488 ホスト名取得はDNSに問い合わせに行くので負荷がかかる
>>489 エージェントは問題なし?
エージェント取得を一回で済ませるか、100回取得するか・・・
>>490 UAの取得って$_SERVER["HTTP_USER_AGENT"] 見るだけでしょ?
既に変数として定義されているんだから、フラグ用の変数を見るのと大差無い。
492 :
nobodyさん :2009/09/30(水) 18:01:48 ID:2VTuEGW2
【OS名】XP 【PHPのバージョン】php5 【連携ソフトウェア】? 【質問内容】 質問させて頂きます。 現在ウェブサイトを制作しており、cgiを弄っています。 そこで、何度やってもエラーが出るのですが ご教授お願い致します。 print "Content-type: text/html\n\n"; ↑たとえばこういうのだとまったく問題ないです。(当たり前ですが) print "<!--[if IE 6]>\n"; print "<![endif]-->\n"; ↑こういうのがうまくいきません。 多分!や--が悪いと思うのですが・・・ どうすれば<!--[if IE 6]>をprint出来るのでしょうか? ものすごく初歩的なことだと思うのですが、 検索しても全然それらしいものが出なかったので どなたかご回答をお願い致します。
493 :
nobodyさん :2009/09/30(水) 18:06:33 ID:i3D4XUwa
<!-- hoge --> が正しい。うしろにも前にも--
>>492 >>493 は何か勘違いしてるのでスルーするとして
コメントだから単にブラウザ表示されてないだけ
ブラウザのHTMLソースを見ればちゃんと出力されてるよ
あとPHPはWebアプリケーション専用に開発されてるのでPerlのように
print "Content-type: text/html\n\n";
みたいのは不要
495 :
494 :2009/09/30(水) 18:21:21 ID:???
ちなみにそのタグの意味を説明するために単に文字列として出力したいというのなら HTMLで<>を実体参照に置き換えるのと同じ要領でやればいい
>>492 PHPはデフォルトでHTMLとして出力するのでContent-typeとかは書かなくていい。
これを拡張子phpで保存して動かしてみるといい
--
<h1>
<?php
echo "Hello world";
?>
</h1>
--
明示的にContent-typeを変えたい場合は
header('Content-Type: text/plain');
こんな感じで。
|をデリミタに使うなら (a-z|0-9)こういうパターンの時に困るだろ
499 :
nobodyさん :2009/09/30(水) 19:04:05 ID:2VTuEGW2
>>494 迅速な回答ありがとうございます。
ブラウザ上で表示されていないのは分かるのですが、
internal server errorがでるのでソースを見ることすら出来なかったのです。
あとprint "Content-type: text/html\n\n"; は不要とのアドバイス
ありがとうございます。
文字列として出力するのもやりたかったので
ご回答嬉しいです。ありがとうございます!
とりあえず実態参照って何か分からないのでググってみます。
ご回答ありがとうございました!
>>496 こちらも迅速な回答ありがとうございます。
今編集しているのは、拡張子が.cgiというファイルです。
PHPじゃない悪寒
>>499 phpをApacheモジュールとして動かしてるのではなくてCGIとして動かしてるのか
環境ないから答えられないがやっぱりCGIとなると!が誤解釈されてるんだろうな
503 :
nobodyさん :2009/09/30(水) 21:46:51 ID:AbgTvS5i
504 :
503 :2009/09/30(水) 21:51:27 ID:AbgTvS5i
まず$threadの中に目的のソースを取得できたのか確認した?
506 :
503 :2009/09/30(水) 22:37:15 ID:AbgTvS5i
>>503 正規表現で1発で抜き出せるとは思うけど自分は苦手なのでこれが精一杯
$list = file("
http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658 ");
$a = array();
for ($i = 0; $i < count($list); $i++) {
if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
$a[] = trim($list[$i + 2]);
continue;
}
if (preg_match("/<td.*店舗名.*?<\/td>/", $list[$i])) {
$a[] = trim($list[$i + 2]);
break;
}
}
print_r($a);
510 :
503 :2009/09/30(水) 22:54:58 ID:AbgTvS5i
>>507 ありがとうございます。しかし、
Parse error: syntax error, unexpected '@' in
というエラーが出ました。
> if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
この行です。
そりゃインデントを全角スペースでやってるからだ コピペしただけじゃ動かない スペースを消すか半角スペースかタブにおきかえてくれ
512 :
nobodyさん :2009/09/30(水) 23:02:17 ID:3aUw1Dx6
質問です function hogeFunc($hoge1,hoge2){ if($hoge2==1){ $hoge1++; } return $hoge1; } 上みたいな関数を実行するのに hogeFunc(10); って感じに2つめの引数を指定しなくても動くわけですが NULLでもいいから指定すべきなんでしょうか? hogeFunc(10,NULL); 糞質問ですみませんがお願いします
それじゃクリティカルエラーでるでしょ デフォルト値設定すれば出ないけど
>>512 function hogeFunc($hoge1, hoge2=NULL){
}
にしとけばOK
515 :
503 :2009/09/30(水) 23:05:25 ID:AbgTvS5i
>>508 どうもです。
>>511 おお、正しく動きました。
ご両人のソースをこれからじっくり分析しようと思います。
有り難うございました。
516 :
nobodyさん :2009/09/30(水) 23:07:32 ID:3aUw1Dx6
>>513 そうそう、その問題なんですよ
エラーがずらずらでてきて動いてるのになんで?ってのが始まりで。
「まあ動いてるから良いか」的に思ってたんですが良いわけないですね…
>>514 なるほど、そのデフォルト値の設定ってこういう状況のため(?)にあるんですね
ありがとうございました
その引数を使わないからnullにしたいってこと? じゃあ、引数消せよと
518 :
nobodyさん :2009/09/30(水) 23:12:39 ID:3aUw1Dx6
いや、たまーに例外的に使われる引数なので。。 ほんとうにありがとう
汎用クラス自分で書く時によく使うね
520 :
503 :2009/10/01(木) 05:49:02 ID:ZppROofQ
<?php
for ($page = 80; $page < 10000 ; $page++) {
echo $page;
echo "\r\n";
$url = "
http://www.navit-tokubai.jp/tenpo.asp?ShopID= ";
$url .=$page;
$thread = file($url);
if (preg_match("/.*東京都.*?/",$thread[62]))
{
$WriteData=$page;
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[41]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[48]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[62]));
echo $WriteData;
$WriteData2.=$WriteData;
$WriteData2.="\r\n";
};
}
$fp = fopen("スーパー.txt", "w");
fwrite($fp,$WriteData2);
fclose($fp);
こんな感じで東京都にあるスーパーの住所録を全部抜いてやろと思ったのですが、↓みたいに途中で止まってしまいます。
これって、相手のサーバーが規制をかけた、ってことでしょうか?
521 :
503 :2009/10/01(木) 05:50:36 ID:ZppROofQ
80 81 82 83 84 85 86 86,イトーヨーカ堂,ザ・プライス千住店,東京都足立区千住3-287 87,イトーヨーカ堂,立石店,東京都葛飾区立石1-18-388 89 89,イトーヨーカ堂,曳舟店,東京都墨田区京島1-27-390 90,イトーヨーカ堂,戸越店,東京都品川区戸越6-8-2 91 91,イトーヨーカ堂,三ノ輪店,東京都荒川区南千住1-9-192 92,イトーヨーカ堂,ザ・プライス西新井店,東京都足立区興野1-12-793 93,イトーヨーカ堂,高砂店,東京都葛飾区高砂3-12-594 94,イトーヨーカ堂,上板橋店,東京都板橋区常盤台4-26-195 96 96,イトーヨーカ堂,金町店,東京都葛飾区東金町1-10-897 97,イトーヨーカ堂,東村山店,東京都東村山市本町2-2-1998 98,イトーヨーカ堂,府中店,東京都府中市本町1-13-399 99,イトーヨーカ堂,竹の塚店,東京都足立区竹の塚5-17-1100 101 101,イトーヨーカ堂,武蔵境店,東京都武蔵野市境南町2-2-20102 102,イトーヨーカ堂,ザ・プライス滝山店,東京都東久留米市滝山4-13-10103 103,イトーヨーカ堂,小岩店,東京都江戸川区西小岩1-24-1 104 104,イトーヨーカ堂,多摩センター店,東京都多摩市落合1-44105 105,イトーヨーカ堂,綾瀬店,東京都足立区綾瀬3-4-25106 106,イトーヨーカ堂,エスパ昭島店,東京都昭島市田中町562-1107 107,イトーヨーカ堂,四つ木店,東京都葛飾区四つ木2-21-1 108 108,イトーヨーカ堂,東久留米店,東京都東久留米市本町3-8-1109 110 110,イトーヨーカ堂,赤羽店,東京都北区赤羽西1-7-1111 111,イトーヨーカ堂,亀有駅前店,東京都葛飾区亀有3-26-1112 112,イトーヨーカ堂,恋ヶ窪店,東京都国分寺市東恋ヶ窪5-6-3 113 113,イトーヨーカ堂,大井町店,東京都品川区大井1-3-6114 114,イトーヨーカ堂,南大沢店,東京都八王子市南大沢2-28-1115 115,イトーヨーカ堂,八王子店,東京都八王子市狭間町1462-1116 116,イトーヨーカ堂,葛西店,東京都江戸川区東葛西9-3-3 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\xampp\akkun\baka002.php on line 10
>>521 んで
「php Maximum execution time」
とかでググれ
524 :
503 :2009/10/01(木) 06:01:53 ID:ZppROofQ
>>522 機械翻訳したところ、
『上回られる60秒の最大の実行時間』
だそうですが、これはどういう意味でしょうか?
PHPの実行時間が60秒を越えたらダメとか?
525 :
503 :2009/10/01(木) 06:04:45 ID:ZppROofQ
>>523 なんか、設定をいじればいいとか?
つか、もう寝ます。
526 :
sage :2009/10/01(木) 09:29:22 ID:XQ4QcZJw
>>525 質問しといて勝手に寝るな
php.iniみとけや
iniのコメント文読んで設定きちんとやっとけば絶対に出ない問題だね
528 :
nobodyさん :2009/10/01(木) 10:09:23 ID:twwty8uP
ちゃんとしたコーディングができるようになるにはどうやって勉強したらいいですか? クラスわけとか、メソッドわけ?とか。 動くものは作れるし、それなりに勉強してるつもりなんですが、 いまいち自信もてないので・・・
そこから先は、他人にコードを直してもらうのが一番勉強になる。 他人のコードを読む、でもある程度勉強になるが、優れたコードは読みやすいので良さに気づかずに何気なくスルーしてしまう事が多い。 本で勉強するなら、PHPの本ではなく、OOPの本を読む時期に来ていると思う。 このスレは書かれるコードが断片的すぎて設計レベルの勉強には向かない。
2ch見るのをやめることかも
531 :
nobodyさん :2009/10/01(木) 10:36:26 ID:twwty8uP
>529 レスどうもです。 ちゃんと指摘してくれそうなうな人が回りにいないんですよね・・・(^^; OOPの本でいいの知ってたら教えてください
>>531 blogに書いていればそのうち突っ込まれるようになるよ
533 :
529 :2009/10/01(木) 11:22:34 ID:???
>531 『リファクタリング』 『デザイン・パターン』 『コード・コンプリート』 『達人プログラマー』 上から順に、でいいかな。多分値段順、明日から使える順に並んでる。 『デザイン・パターン』は類書でもいいし、webでもいい。結城さんの本とか。
534 :
nobodyさん :2009/10/01(木) 11:24:52 ID:twwty8uP
>533 ありがとうございます。
535 :
nobodyさん :2009/10/01(木) 11:30:48 ID:qQSI8C4c
個人的意見だけど結城浩の本は悪書が多い とにかく説明が下手糞
>>535 それこそPHPのしつもんじゃないだろ
[L]をつけろ
>>535 って、よくみたら
同じ条件で変換しとるやんけアホか
できるわけないだろ
RewriteRule ^([^/]+)/pref_([^/]+)/$ view.php?q=$1&mode=pref&pref=$2 RewriteRule ^([^/]+)/city_([^/]+)/$ view.php?q=$1&mode=city&city=$2
それか RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&$2=$3
541 :
nobodyさん :2009/10/01(木) 13:48:26 ID:9PvgZ/Pg
PHPとあまり関係ないかも知れないけど、一つのwebサーバで複数のサイト運営するときって php.iniの設定はどうするの? サイトごとに別々に用意して読み込ませるとか出来るもの?
542 :
nobodyさん :2009/10/01(木) 14:08:55 ID:qQSI8C4c
543 :
nobodyさん :2009/10/01(木) 14:36:36 ID:twwty8uP
>541 共通のを使って、違うところはそれぞれのvhostの中で独自定義したりする
544 :
503 :2009/10/01(木) 14:40:00 ID:ZppROofQ
php.iniの max_execution_time = 60 を書き換えても、全然かわらないから、 ソース内に set_time_limit(0); を書いたらうまく行きました。 どうもでした。
545 :
nobodyさん :2009/10/01(木) 14:41:46 ID:/dzREAM4
便乗
>>543 レンサバで、そういうのいじれない場合はどうすればいいでしょうか。
>>545 いじれないことないと思うが。
普通ディレクトリ内にphp.iniを置けば認識する場合が多い。
でなければPHPスクリプト内で代用できるコマンドがあると思うけど。
上のset_time_limitみたいに
547 :
nobodyさん :2009/10/01(木) 15:01:25 ID:9PvgZ/Pg
>>543 なるほどー
凄く勉強になりました。ありがとう
548 :
nobodyさん :2009/10/01(木) 15:02:24 ID:v/9aEp65
xamppでphpのバージョンアップするときはどうしたらいいのでしょうか?
単純にファイル上書きでいいはず ただし設定ファイルを上書きしてしまわないよう注意 システム的にはこれでアップデートは完了だが 新しい機能を有効にしたい場合は当然設定しなおさないとだめ
551 :
nobodyさん :2009/10/01(木) 20:19:36 ID:PoVmDbv7
PHPで空メール送信機能を作りたいのですが処理とか必要なソフトとかどういう仕組みなのか教えてください
552 :
nobodyさん :2009/10/01(木) 20:32:26 ID:hYnFYsU3
Fatal error: Cannot redeclare class Exception in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\extended_exception01.php on line 7
553 :
湯ノ口 :2009/10/01(木) 20:39:02 ID:???
pcからmbのサイトを見れないようにする方法を教えてください。 .htaccessで教えて頂ければ助かります。 pcからmbにアクセスしたら、こちらはmb専用ページですと表示したいです。 その逆(mbからpcサイト)も教えて頂ければ助かります。 あとseoの事を考えると検索ロボットのipを全部許可したいんです。 これも教えて頂ければ非常に助かります。 もっと簡単でいい方法があればそれでも結構です。 以上宜しくお願いします。
スレタイ
555 :
nobodyさん :2009/10/01(木) 20:40:09 ID:hYnFYsU3
http://www.php.net/manual/ja/language.exceptions.extending.php の「例1 例外クラスを構築する」なんですけど、なにもコメントアウトしないとHTTP 500 Internal Server Errorが出ます。
それで、下半分をコメントアウトすると
Fatal error: Cannot redeclare class Exception in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\extended_exception01.php on line 7
が出ます(長いので次レス参照のこと)。
下半分をコメントアウトしたまま、クラス名をMyExceptionにすると、真っ白な画面ですが通ります。
これってクラス名は本当にExceptionのままでいいんですか?
それとコメントアウトせずに通すにはどうしたらいいんですか?
556 :
555 :2009/10/01(木) 20:41:14 ID:hYnFYsU3
<?php error_reporting(-1); ini_set('display_errors', 'On'); ini_set('log_errors', 'On'); class Exception { protected $message = 'Unknown exception'; // exception message private $string; // __toString cache protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception private $trace; // backtrace private $previous; // previous exception if nested exception /* public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone(); // Inhibits cloning of exceptions. final public function getMessage(); // message of exception final public function getCode(); // code of exception final public function getFile(); // source filename final public function getLine(); // source line final public function getTrace(); // an array of the backtrace() final public function getPrevious(); // previous exception final public function getTraceAsString(); // formatted string of trace */ /* Overrideable */ // public function __toString(); // formatted string for display } ?>
>>555 それは組み込みのExceptionクラスのインタフェースの紹介です。
文章と例2を読んでみてください。
558 :
555 :2009/10/01(木) 20:53:49 ID:hYnFYsU3
>>557 ありがとうございます。
ちなみに質問する前に例2も一緒にコピペしてみたんですけどダメでした。
しかも、困ったことに下半分をコメントアウトしない限りエラーメッセージも出ないんですよね。
cloneはfinalにしてあってcloneできないようにしてありますよね。
しかも、どこからも呼ばれていません。
ですからE_FATAL エラーの発生ではないですね。
Exceptionクラスのみでさえエラーが出るんですから
それ以上足しても・・・と思うんですけどどうですか?
マニュアルの文章を読んでください
560 :
555 :2009/10/01(木) 21:01:20 ID:hYnFYsU3
>>559 読んで分からないから質問しているんです。
マニュアル読んだだけですべて理解できるならこの質問スレの意義すらないでしょう。
せめてヒントをください。あなたのレスでは抽象的過ぎて分かりません。
答えが分からないけど回答者ぶりたい奴ってマニュアル見ろしか言わないよね 激しくうざい存在
>>560 あなたの質問内容がマニュアルを読めば解決するレベルだからです。
563 :
555 :2009/10/01(木) 21:24:20 ID:hYnFYsU3
>>561 激同です
(出来ればIDを晒して文句を言っていただけると幸いです、自演と思われるとアレですので…)。
前回質問したときも、まったく的外れだったことがあります。
>>562 こっちだって出来るだけのことは調べて質問しているんです。
あなたが教える気がないのは分かりましたのでお引取りください。
代わりに他の回答者の方、お願いします。
566 :
555 :2009/10/01(木) 22:03:39 ID:hYnFYsU3
自演じゃない煽りをスルーできない質問者もウザイということだ 答えが出てくるまで黙ってろボケ
>>562 本家PHPサイトの和訳を教えていただけませんか?
英語辞書あるから完璧ですよね
和訳を俺に伝授してくれませんか?^^
例2 例外クラスを拡張するの // 例2 try { $o = new TestException(TestException::THROW_DEFAULT); } catch (MyException $e) { // この型にはマッチしない echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // キャッチされる echo "Caught Default Exception\n", $e; } これだけためして ちゃんとExceptionしてくれてるよ
570 :
555 :2009/10/01(木) 22:42:33 ID:hYnFYsU3
>>569 ありがとうございます。
今、「例2 例外クラスを拡張する」のみを試したら、実行できました。
その中の「例1」「例2」「例3」「例4」も含めていますが、実行できます。
ということは、「例1 例外クラスを構築する」は元々既にPHPに組み込まれているクラスなのですか?
つまり、「例1 例外クラスを構築する」は「わざわざ打ち込んで実行する必要はない」という解釈で良いですか?
571 :
nobodyさん :2009/10/01(木) 22:44:17 ID:BF5xnbIm
>>570 よかったですねまともな回答者にめぐり合えて。
>>562 みたいな回答したいだけの香具師(知識はもちろん初心者レベルでしょうね)の事は気にしてはいけませんよ
572 :
nobodyさん :2009/10/01(木) 22:49:02 ID:59iiS7vg
>>570 >以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。
ってマニュアルに書いてあるでしょ?
解答示せと言うのもわかる。ググレで終わるのもどうかと思う。
だがそれに対して逆ギレするのもどうかと思うぞ。
>>1 のテンプレ位読んでくれ
すまないがそれでは下質ID認定回答者の証は与えられないかな
>>570 そのとおりだよ。
php5にもともと入ってるクラスを書きだしたのが例1
例2 例外クラスを拡張する の
class MyException extends Exception
の親クラスの中を見てみ
575 :
555 :2009/10/01(木) 23:21:44 ID:hYnFYsU3
>>571 応援、ありがとうございます。
正直、今回のは納得いきませんでしたね。
中途半端に回答して煽るくらいなら回答要りませんよね。
>>572 >以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。
それは「分かっている人の、分かっている人による、分かっている人のための」説明文でしょう。
では、少し長いですが「法人税法」第23条第2項を読んでみましょう:
「法人(公益法人等及び人格のない社団等を除く。以下この条において同じ)の株主等である内国法人が当該法人から
次に掲げる金銭その他の資産の交付を受けた場合において、その金銭の額及び金銭以外の資産の価値の合計額が
その交付の起因となった当該法人の株式(出資等も含む)の帳簿価額を超えるときは、この法律の規定の適用については、
その超える部分の金額のうち、当該法人の資本等の金額から成る部分の金額以外の金額は、利益の配当又は剰余金の分配の額とみなす」
・・・こういう文章がすっと頭に入る人は、頭が良いというより、「少しおかしいのではないか」と思う。 by 野口悠紀雄
確かに、どう見ても良い説明文ではないですよね。今回の件はそれと同じ印象を受けました。
それに、一言言ってくれれば済んだ話じゃないですか?
僕だって今はこうやって理解しているんですし。
回答者に不備があればこれからも一質問者として指摘していくつもりです。
その代わり、正しい回答が得られればきちんと感謝の意を示すつもりです。
576 :
555 :2009/10/01(木) 23:26:41 ID:hYnFYsU3
>>569 &
>>574 やはり、その通りでしたか。
実はエラーメッセージに「Exceptionが再度宣言された」とあったので
元のExceptionが既に宣言されているのではないかと察してはいました。
しかし、それならわざわざ例として出す必要もないと思っていましたし、
なんと言っても題名が「例1 例外クラスを構築する」でしたからね(それでMyExceptionにしてみた訳ですが)。
原文のように「例1 既に組み込まれている例外クラス(=Example #1 The Built in Exception class)」であれば理解できたはずです。
僕も将来、あなたのような回答者になれるように努力します。
今回は本当にありがとうございました!
>>575 タイトルが既に「例外を拡張する」なんだが
どうでもいいが顔真っ赤だぞ
例外を拡張するのページで例外を宣言する話してどうするのってこと
流れよく読んでないが クラスの拡張は継承してやってください
582 :
nobodyさん :2009/10/02(金) 00:40:26 ID:4UZHJi/j
IDの表示方法はこれであってますかね? 【OS名】ubuntu 804.3 【PHPのバージョン】php5.24 【連携ソフトウェア】apche2.1mysql5.05 【質問内容】 質問ですがあります。ご指導いただけないでしょうか 現在動画ファイルを ファイルアップロード時にmymeTypeを判別して条件分岐させる関数を作成しています。 しかし、正確にmymeTypeを判別しません。 fileinfoでも正確に判別できませんでした。 しかたないので、一度mymeTypeを判別してから 正確に判別できない動画ファイルのみ拡張子で条件分岐させています。 しかしこれでは、正確とは程遠いバグがある関数になってしまいます。 なにかphpに動画ファイルmymeTypeを正確に判別するクラスはあるのでしょうか? もしなければ、なにかポピュラーな判別方法をご教授いただけないでしょうか?
583 :
nobodyさん :2009/10/02(金) 00:43:55 ID:4UZHJi/j
ちなみに無理やり作った関数がこれです /** * 画像フォーマット判定 */ function t_check_movie_format($file, $type = 0) { // サーバーで判断できない場合使用 if ($file['type']== 'application/octet-stream') { // fileinfo $finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic"); $file['type'] = finfo_file($finfo, $file['tmp_name']); finfo_close($finfo); // 拡張子 $extens_tmp = strrchr($file['name'], '.'); $extens = strtolower($extens_tmp); } 下に続きます
584 :
nobodyさん :2009/10/02(金) 00:44:39 ID:4UZHJi/j
$format = false; switch ($file['type']) { case 'video/mp4': if (($file['tmp_name'])) $format = 'mp4'; break; case 'video/avi': if (($file['tmp_name'])) $format = 'avi'; break; case 'application/octet-stream': if (($file['tmp_name'])) ($extens=='.flv') ? $format = 'flv' : ''; break; case 'video/x-ms-wmv': if (($file['tmp_name'])) $format = 'wmv'; break; case 'video/x-msvideo': if (($file['tmp_name'])) $format = 'avi'; break; default: break; } return $format; }
586 :
nobodyさん :2009/10/02(金) 00:59:29 ID:4UZHJi/j
ご回答ありがとうございます。 でも現在使用しているphpバージョンは5.24ですので使用できません・・・ それ以外だとなにかありますか?
PECL入れればいいのでは?
588 :
nobodyさん :2009/10/02(金) 01:05:02 ID:4UZHJi/j
すいませんなにか勘違いしてました。 それ現在使用中です。
589 :
nobodyさん :2009/10/02(金) 01:07:13 ID:4UZHJi/j
PECL導入をしてfileinfoクラス finfo-fileを使用してもだめなんです。 なんとかならないですかね。
それってどんな風にバグがあるの?
それはあれだ 確かUnix系のコマンドでmimetypeを判別するやつがあったから その外部コマンド使ってやるのがベターだったような気がする もっと正確に判別可能な外部プログラムがあったらそれを通すのも手 とにかくPHPではやらないほうがいいと思う 昔自分もしょうがないからヘッダを見てmimetypeを決定するライブラリ作ろうとしたけど 車輪の再開発だからやめとけと説得されてやめた
592 :
nobodyさん :2009/10/02(金) 01:30:13 ID:4UZHJi/j
エラーは現在出ていません。 しかし、関数でmyme Typeを正確に判別していない点がバグと言った本当の意味なんです。 ですのでなにかご教授いただきたかったのですが。。
そりゃPECL導入しただけじゃ無理でしょ 条件に (PHP >= 5.3.0, PECL fileinfo >= 0.1.0) って書いてるんだから PHPのバージョンも5.3.0以上じゃないと
>>592 何をどう誤検出するのか分かると対策もあるかもしれないよ
まぁ591の方法でいいと思うけど
あとmimeな
>>593 できてるじゃないか
595 :
nobodyさん :2009/10/02(金) 01:35:07 ID:0fN7wMTr
現在携帯端末対応の掲示板を作成しているのですが、 携帯識別情報を送信しない場合は投稿を否定したいです。 どのように組めば宜しいでしょうか? refererチェックをうまく改変して作成したいです^^; #個体識別チェック if (!isset($_SERVER['HTTP_REFERER']) or !$_SERVER['HTTP_REFERER']){ #refererが無い場合は携帯からの書きこみチェック if (!strstr($_SERVER['HTTP_USER_AGENT'], 'DoCoMo') and !strstr($_SERVER['HTTP_USER_AGENT'], 'J-PHONE') and !strstr($_SERVER['HTTP_USER_AGENT'], 'SoftBank') and !strstr($_SERVER['HTTP_USER_AGENT'], 'UP.Browser')) DispError("ERROR!","ERROR:固体番号を送信してください!"); } ちなみに・・・ $_SERVER[HTTP_USER_AGENT] → 送信必須(SN,ser,ezweb.ne.jp) $_SERVER[HTTP_X_UP_SUBNO] → au $_SERVER[HTTP_X_DCMGUID] → ドコモ $_SERVER[HTTP_X_JPHONE_UID] → ソフトバンク です^^;
>>595 個体識別ってリファラでいいの?
HTTP_X_DCMGUIDなどでなく?
597 :
nobodyさん :2009/10/02(金) 01:45:42 ID:4UZHJi/j
>>593 ありがとうございます。勉強しなおします。
>>591 >>594 OSの登録myme Typeを確認・追加して
phpでUnixコマンド使うみたいな感じですかね
それならいけそうなきがしますね
ちょっとやってみます。ありがとうございます。
12時超えたあたりから ゆとり率がぐんと減ったなw
>>582 getID3()というライブラリを使うという手も
ttp://getid3.sourceforge.net/ mp3のタグ情報とかzipに入ってるファイルのリストとかも取れる
使い方も簡単。
include('../getid3/getid3.php');
$file = './test.zip';
$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($file);
getid3_lib::CopyTagsToComments($ThisFileInfo);
print_r($ThisFileInfo);
602 :
nobodyさん :2009/10/02(金) 11:01:05 ID:Zilzfd9c
環境:WindowsXP、Apahce2.0系、php5.2.9-2です。 phpでpostgresに接続ができなくて、phpPgAdminだと ------------------------------------------------------- データベースをサポートするように PHP のコンパイル・インストールがされていません。configure の --with-pgsql オプションを用いて PHP を再コンパイルする必要があります。 ------------------------------------------------------- というエラーがでます。Windowsなんで再コンパイルもくそもないだろうと思って php.iniを確認。 extension=php_pgsql.dll とかかれてるのでOKかと思ったら、Apache起動時に以下のエラーがphp.logに ------------------------------------------------------- PHP Warning: PHP Startup: Unable to load dynamic library 'C:/PHP/ext/php_pgsql.dll' - このオペレーティング システムでは %1 は実行されません。 ------------------------------------------------------- /がだめなのかと\に変えても駄目で、phpinfoをみてみると、php.iniはちゃんと 読み込んでる様子。ひとつわからないのが以下の部分で、 d:\〜とか書いてますが、そもそもDドライブなんて無いのになぜ出てるのか? ------------------------------------------------------- Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--with-snapshot-template=d:\php-sdk\snap_5_2\vc6\x86\template" "--with-php-build=d:\php-sdk\snap_5_2\vc6\x86\php_build" "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" ------------------------------------------------------- いろいろ調べてみたんですが、ぐぐっても解決方法は見つからないので、 何か調べるべきところがあれば教えてください。 ちなみにapache2.2もなぜか入ってたので、それは削除しました。
最新版でGO
604 :
602 :2009/10/02(金) 11:30:10 ID:Zilzfd9c
605 :
nobodyさん :2009/10/02(金) 16:48:17 ID:1rF2YxUP
1<>A<><> 2<>C<>7<> 3<>E<>7<> 4<>F<>1<> 5<>G<>4<> 6<>D<>2<> 7<>B<>1<> 上記の配列を 1<>A<><> 7<>B<>1<> 2<>C<>7<> 6<>D<>2<> 3<>E<>7<> 4<>F<>1<> 5<>G<>4<> というように並び替えたいんですが どうにも煮詰まってます。 何かいい知恵はないでしょうか A〜Gは仮の物なので実際は適当な日本語ですので アルファベット順でソートはできません。
<?php $a = array("いいい", "めめめ", "さささ", "ぎぎぎ", "ほほほ", "あああ", "こここ", "たたた"); $b = array("伊伊伊", "目目目", "左左左", "義義義", "歩歩歩", "亜亜亜", "子子子", "多多多"); sort($a, SORT_LOCALE_STRING); sort($b, SORT_LOCALE_STRING); print_r($a); print_r($b); ?> これ実行してみ これなら漢字もソートできてるように思えるが不確実な要素も多いので 漢字も含む場合はソート用にかな(orカナ)読みの配列を用意したほうがいいかもしれない
608 :
605 :2009/10/02(金) 17:33:10 ID:1rF2YxUP
>606 array(7) { [0]=> string(11) "1<>鈴木<><>" [1]=> string(12) "2<>佐藤<>7<>" [2]=> string(12) "3<>田中<>7<>" [3]=> string(12) "4<>小林<>1<>" [4]=> string(12) "5<>高橋<>4<>" [5]=> string(12) "6<>渡辺<>2<>" [6]=> string(12) "7<>加藤<>1<>" } 先ほどのA〜Gを置き換えました。 結果として 鈴木 ├加藤 │├佐藤 ││└渡辺 │└田中 └小林 └高橋 こんな感じの表示をしたいです。
>>608 その並べ方ををするには要素が足らなすぎる
610 :
nobodyさん :2009/10/02(金) 17:41:33 ID:Zilzfd9c
>608 階層はどうやって判断させる気?
ニ分木か
一度わかりやすいデータベースで構造をよく考えてから配列で考え直したほうがいいよ
>>609 の言う通り
>609 元々のデータがこんな状態でしたので悩んでいました。 足らない=できない と判断して諦めます。 >610 並び替えさえ上手くできればなんとかなるかなと思ってました。 皆様、ありがとうございました。
最初の要素がルートで、各名前の次の数字が親要素でしょ?
id , 名前 , parent_id 自己結合・自己参照・ツリー構造
まず参照IDで並べ替えしないと
参照はわかるんだが、どうやってその'並び方'になるかの要素がない
619 :
nobodyさん :2009/10/02(金) 20:12:17 ID:CFt8Mg+b
鈴木の下につく加藤と小林は初期の並びからは逆になったけど 加藤の下につく佐藤と田中は初期の並び通りなのはなにを基準にしてかな
620 :
nobodyさん :2009/10/02(金) 21:17:08 ID:3TAJH0/w
文字列(バイナリデータ)から、画像形式を取得する事って可能でしょうか? $res = imagecreatefromstring($data); でデータから画像リソースを生成する事は出来るのですが、生成元の画像形式を判別したいです。 それらしい関数が存在しないのですが・・・自前でバイナリデータを解析するしか無いのでしょうか?
622 :
nobodyさん :2009/10/03(土) 01:35:48 ID:uCD1ueGG
CMSっぽいものを作っていまして、 後からプラグインで機能を追加できるようにしています。 プラグインによっては別のプラグインに含まれている関数と 重複してしまうファイルがあるのですが、 その場合もプラグイン用のフォルダには必要なファイルを入れています。 同じファイルが2つ3つと増えていくので無駄だと思うのですが、 プラグインのような後から追加するかも知れないファイルの場合 どのように管理すればいいか悩みます。 同じようなシステムを作った事がある方は、助言をいただければ助かります。
ネームスペース使うとか?
ごめん、全然関係ないね 俺が思うに1TBのHDが1万円の時代に数十KBのPHPファイルが重複してどうこうとみみっちいこと気にしなくてもいいんじゃないかと リッチプログラミングってやつですよ
625 :
nobodyさん :2009/10/03(土) 01:46:40 ID:uCD1ueGG
いや、容量の問題じゃなくて 似たようなファイルがプラグイン毎にあるとおかしくないかな?と思いまして。 例えば、メール送信が入るプラグインって結構作ると思うんです。 それようの関数ファイルってプラグインによって微妙に違ったりするし。。
そこでカプセル化でうよ
どういうこっちゃ プラグイン化されてるってことはファイルの相互依存関係なんてないはずだと思うけど
628 :
nobodyさん :2009/10/03(土) 02:14:19 ID:uCD1ueGG
プラグインを作った時期によって微妙に違う事がありまして・・・ 後から自分が見て改善する事も良くありますから、 メール送信用の関数ファイルが、AのプラグインとBのプラグインで 違う事ってたまにないですか?
>>625 /plugin001/mail.php
/plugin002/mail.php
/plugin003/mail.php
こんな感じになってるって事?であれば共有出来るコードはプラグインから出して、共通ライブラリにでも配置すればいいんじゃないかね。
>似たようなファイルがプラグイン毎にあるとおかしくないかな?と思いまして。
おかしくは無いよ。
特定のプラグインの関数にだけ修正をいれたい時等に柔軟に対応出来る。
反面、全部の関数に修正をいれたい場合に面倒になるけど・・・
理想としては、共通コードは1つのファイルに纏めておくべきだけど、
プラグイン間の相互依存関係が複雑になるので、事前にしっかりとした設計が必要になるよ。
630 :
nobodyさん :2009/10/03(土) 02:15:28 ID:uCD1ueGG
でも、普通は常に最新版のファイルを用意しますよね・・。 Aが古くてBが新しければ、Aの該当箇所もB用に作り替えますよね。
なんかぶっとんだ回答者がいるなw
633 :
nobodyさん :2009/10/03(土) 02:17:37 ID:uCD1ueGG
>>629 そんな感じです。
共通ライブラリ(メインのCMSに元からあるファイル)を
定期的に更新しているのですが、判断に迷う時がありまして。
新しい作り方をしたからと言って該当するファイル全て修正するのは手間だし、
どういう設計・管理方法をすればいいか悩み、質問しました。
634 :
nobodyさん :2009/10/03(土) 02:20:06 ID:uCD1ueGG
>>631 メール送信の場合はclassを作っていますが、
作り始めの物は関数使っています。
だんだん規模が大きくなってきたらclassにしてますが
>>622 SDKのような感覚で
プラグイン作成に必要なものがあるならそれは共通ファイルとして分けておくべき
まぁその辺のCMSのプラグインは単独で動作するようになってるので
もう少しシステムを見直したほうがいいと思うけど
CMSに汎用性があるAPIつくればいいんでない
違うと問題があるなら一緒にすればいいじゃん。 具体的に何が問題で何をしたいか言ってくれないと分からん。
638 :
nobodyさん :2009/10/03(土) 02:30:09 ID:uCD1ueGG
いや、特に問題はないのですが、 指摘を受けているように効率化の面で設計がおかしいかな?と思いまして。 とりあえず、共通ファイルに分けられるものは分けるようにして、 必要なものは似たような関数(ファイル)でも入れておくようにします。 みなさん、アドバイスありがとうございました。
>>633 99%各プラグインで普遍的に共通であろう処理は、CMS側に実装すればいいんじゃない?
メールであれば、MIME処理や、mail送信処理とかね。
きっちりOOP設計して、細かいclass群にわけて置けば将来的に拡張し放題だろうけど、面倒だし管理も大変になるからなぁ・・・
今どんなに完璧に書いたとしても、1年後には書き直したい衝動にかられてるだろうしw
関数の切り方が悪い。 まず、共通になるように関数(クラス)のインターフェイスを変えろ 。 function hoge(a){ return fuga(a, 10) } みたいに処理の委譲を使うとか $mail = new Mail( new Signature('Masashi Tashiro') ); みたいに、非共通部分を引数化するとか。
「プラグイン」って言うんなら、CMS本体側に どんな機能を用意してるんだろう。 そのへん気になる。 ただ特定ディレクトリ以下のファイルを自動で includeするだけ、っていうオチもあるだろうけど。
プラグインとかいらないだろ 全て関数にすればいい
環境:WindowsXP、Apache2.0系、php5.3.0です。 ポストメソッドで大容量のファイル(600MBくらい)を扱いたく、 php.iniの、post_max_sizeを変え見たんですが、(post_max_size=1000M) 型がintegerなのか、512MBを超えるとのエラーが出てしまいます。 エラーは以下です。 Warning: POST Content-Length of 618534863 bytes exceeds the limit of 536870912 bytes in Unknown on line 0 サイズの制限をより大きく、あるいは無制限にする方法を教えてください。
644 :
nobodyさん :2009/10/03(土) 11:47:26 ID:pEIS+Jzz
↑すみません。さげてしまいました。
それはphpというよりOSの制限によるものです。 個人的には、Mac OSをお薦めします。 今の時代、Vistaの後継OSまで発売されている時勢に、XPは時代遅れです。 XPで開発していると、たびたびトラブルが発生しますので、 OSごと乗り換える方が得策ではないでしょうか?
>>643 upload_max_filesizeも変えてる?
647 :
nobodyさん :2009/10/03(土) 13:07:47 ID:pEIS+Jzz
>>645 解決法はないのですか?
>>646 変えてます。
無理なようですので、フォームではファイル名入力してもらうようにして、
ftpでアップロードさせるようにします。
他にいい方法があれば、ご教授いただければ幸いです。
サーバーのOSの問題だとしたら、なぜMAC-OS薦めるんだろう・・・
650 :
nobodyさん :2009/10/03(土) 13:18:44 ID:tYIqChf6
>>647 昼間はレベルの低い初心者回答者がいますので気長に夜まで待ってれば素晴らしい回答者が現れますよ
ぼくも応援するのであげますね
いや、完全にOSの問題だと思うが。 WindowsXPの場合、32bitだけど、 Mac OSの場合、最大1024bitまでオーバークロックできる。 XPの制約に飽き飽きしているし、 パフォーマンス改善に有効なメモリーも3.2GBしか認識できないなどサーバーとしては致命的。
>>651 \ / /
\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー / ̄`Y  ̄ヽ、
. __ / / / / l | | lヽヽ --
二 / / // ⌒ ⌒ヽ = 二
 ̄ | | |/ (●) (●)  ̄
-‐ (S|| | ⌒ ・ィ ヽ ‐-
| || | ト-=-ァ ノ
/ | || | |-r 、/ /| \
| || | \_`ニ'_/ |
/ \
/ ヽ
/ / 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
Local ValueとMaster Valueはどうなってる phpinfoで確認してみて
655 :
nobodyさん :2009/10/03(土) 17:13:59 ID:pEIS+Jzz
>>653 post_max_sizeでしたら、ともに1000Mと表示されています。
post_max_sizeとupload_max_filesizeの部分のSS上げて
>>651 典型的なリンゴ信者だなw
サーバOSに通常のXPなんかつかわねーよw
開発機にMac?比較にならんほどの資産があるWindowsを切り捨てるメリットがねぇよw
サーバOSがXPだとどう違うの?
> 比較にならんほどの資産があるWindowsを切り捨てるメリットがねぇよw っていうかサーバーならwindowsじゃなくて、 現状RedHatの方が数段上だろ。ほかのLinuxやUnixにしても同様。 windowsを使うメリットを教えて欲しいくらいだ。
660 :
nobodyさん :2009/10/03(土) 17:32:37 ID:pEIS+Jzz
XPはそもそもライセンス問題でサーバ用途では使えないよ。 WindowsServer系を使うのが普通だし、 MacOS使うくらいならLinux/Unix/BSD系を選択するわw
>>659 ごめん、開発機での話な。
素人でも導入が簡単、ネットに情報が溢れている、開発ツールも豊富、って意味でMACより楽だよ。と。
WindowsServerはインストールが簡単で、慣れ親しんだGUIで扱える、Windowsアプリが動作する、ってのがポイントかねぇ・・・
動画変換とか、WEBキャプチャとか面白いフリーソフトが揃ってるし。
WEBサーバとしてはウンコだけど
メモリ関連の設定全部洗えば? memory_limitが512Mになっとらんか? エラーの出方がそっちくさいんだが…
単に、持っているPCが中古で、メモリーが32GBだって落ちはないの?
665 :
nobodyさん :2009/10/03(土) 17:48:19 ID:pEIS+Jzz
>>663 それは-1になってます。
いままで、いろいろと値を変えて試してみましたが、
エラーの値に影響するのはpost_max_sizeの値だけでした。
xamppかよ・・・
667 :
nobodyさん :2009/10/03(土) 17:52:41 ID:pEIS+Jzz
うん
うんって決めつけかよ なんでだめなんだ?
671 :
nobodyさん :2009/10/03(土) 17:57:56 ID:UkWOIQsI
おれはちがうやつなんだがな IDだしたぞ 教えてくれ
xamppということで今試してみたが問題なくいけたな array 'name' => string 'CentOS-5.3-i386-LiveCD.iso' (length=26) 'type' => string 'application/x-iso9660-image' (length=27) 'tmp_name' => string 'D:\desktop\workspace\xampp\tmp\php354.tmp' (length=41) 'error' => int 0 'size' => int 724725760
分から無いくせに回答してたやつがてんこ盛りだったってこと?
単に、持っているPCが中古で、メモリーが32GBだって落ちはないの? 単に、持っているPCが中古で、メモリーが32GBだって落ちはないの? 単に、持っているPCが中古で、メモリーが32GBだって落ちはないの? 単に、持っているPCが中古で、メモリーが32GBだって落ちはないの?
>>651 > WindowsXPの場合、32bitだけど、
> Mac OSの場合、最大1024bitまでオーバークロックできる。
WindowsXPはSP2以降で物理アドレス拡張に対応してるから64GBまで利用可能
Macは知らんがオーバークロックの”クロック”がクロック周波数を指すなら単位はbitじゃなくてhzだろ
オーバークロックとか釣りだからスルーしとけって
メモリ32GBってすごいですねwwwwwwwwwww
つーか4GB(3.5GB)あたりで、32ビット/64ビット、windows/linuxの話になるならわかるが 512MBならそれらは関係無いだろ。
xamppときくと脊椎反射的に拒否反応おこすバカがいるからな
そしてそのバカに反応するバカが
>>678 お前は馬鹿なの?
ほかのソフトがメモリーを使っていることは一切ないのか?
Apache立ち上げるだけでも、設定によって使用メモリーが300MBになるのは普通にある。
PHPって、POSTのデータは最終的に受け取り終わるまで全てメモリ上に保持し、
ファイルに書き出すのは受信が終わってから、おもむろに全部一気になんですか?
>>681
>>682 まぁ、そういうこと。キャッシュ機能が働くからね。
メモリが32GBwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
俺が言いたかったことは、HDDのメモリーが32GBなんじゃないかってことだよ。 32GBに脊髄反応しているやつって、馬鹿じゃないの?メモリーなんて、PCの色々な個所につかわれていることをしらないのか? もっと情報工学とか勉強しろよwww
最近のHDDはキャッシュメモリが32GBも付いてるのか
腹いてえよw HDDのメモリーが32GBなんじゃないかってことだよ HDDのメモリーが32GBなんじゃないかってことだよ HDDのメモリーが32GBなんじゃないかってことだよ HDDのメモリーが32GBなんじゃないかってことだよ HDDのメモリーが32GBなんじゃないかってことだよ HDDのメモリーが32GBなんじゃないかってことだよ
なぜこんなところで腹筋崩壊しなきゃならんのだwww
HDDのメモリーwwwwwwwwwwwww
HDDキャッシュが32GBって何UのDISK装置だよw フェラーリ買えるぞw
ディスクサーバーにメモリ32GB積んでカーネルの使用量を 極限まで削ればdiskキャッシュ約32GBのディスク装置は構成できるぞ。 SANは解らんが、40Gbのinfini-bandで1対1接続すれば相当な パフォーマンス出せるとおもうが。 信頼性を気にしなければ100万ぐらいで作れるだろ。 フェラーリって何の冗談だ。
うちの共有DISK装置は3000万以上したけど32GBもキャッシュ無いな
>>692 ディスク装置が備えるべき高信頼性、高可用性、高保守性と
ディスクキャッシュのサイズは関係ないしな。
うちの製品はソフトウェア設計がカスなんで32GBのディスクキャッシュが
意味を持つかもしれんがw
もういろいろと酷いな…
>>643 のエラーは SG(request_info).content_length > SG(post_max_size) の時だけ出る。
んで exceeds the limit of 536870912 bytes のバイト数は post_max_size の値。
>>660 では1GB弱と認識されてるが、エラーが出るスクリプト上で phpinfo() してみたか?
SGって何?
>>696 PHPのソースコードで使われているグローバル変数用のマクロ
こんな、ど素人軍団が群がるphp そりゃ他言語になめられるわ
スレ違い
それくらいだとPHPの事例にでてきそうだな
php6で開発をすすめる事になったうちはどうかしてる
あれ?6ってもうでてたっけ?
でてないからどうかしてるって事w リリースが来年末だから今のうちから使っとけという事らしいorz
来年のカンファレンスで最速事例として発表できそうだな。 もっともunicode対応で手こずってるから1年後も出てないかもしれんが…
大垣たんはいつも言葉足らずな印象
710 :
nobodyさん :2009/10/04(日) 11:33:28 ID:BwS37vJU
>>701 ストレージ装置の高可用性とディスクキャッシュのサイズは
無関係だって
>>694 でいってんじゃん。
あと、DBのように局所参照性が強いファイルアクセスについては
キャッシュ増加に対するヒット率の向上はある閾値を超えたあたりから
急速に鈍化するから32GBに意味があるなんて主張してない。
むしろRAMの増加は装置全体の故障率の上昇に繋がるから、あえて
RAMの容量を絞るってのもディスク装置の構成としては正しいかもしれない。
んで、その装置のキャッシュをディスクキャッシュと認めるなら、
PC Linuxで作ったファイルサーバーのメモリもページキャッシュも
情報工学の定義上は立派な「ディスクキャッシュ」ですが?
「ディスクキャッシュのサイズを32GBにすること」だけが要件なら、
フェラーリが必要なほどの金がかかるわけねーぞ、という話なのに、
1000万円台で4GBキャッシュの装置の存在を示して何を主張したいの?
必死すぎるからあだ名はメモリ32GB君でいいよ
>>710 IDだけでなくテンプレ守って質問して下さい
>>706 php6は今からでも言語仕様変わるかもしれないから危険過ぎるだろ
来年末リリースって事は大規模プロジェクトだろ??
715 :
EM114-48-151-94.pool.e-mobile.ne.jp ◆ooIHwxrYyg :2009/10/04(日) 12:00:25 ID:+Jd1EQ8S
>>710 男ならIP出してID出してコテハン付けろ!
>>715 研究室のIPから書き込んでるから無理。
学科で2chとWinnyはダメってことになってる。
717 :
EM114-48-151-94.pool.e-mobile.ne.jp ◆ooIHwxrYyg :2009/10/04(日) 12:51:26 ID:+Jd1EQ8S
きめえまだWinny使ってる池沼がいたのかよ くたばれ社会のクズが!
718 :
nobodyさん :2009/10/04(日) 13:19:46 ID:tlZK7xE+
このスレをカームダウンさせる目的とphp6話にちょっと便乗で質問 このコマンドはPHP4.X.X以前だと動く、とかよく書いてあるんだけど そんな古いPHPのバージョン使わないといけない状況って実際にあるの? PHP4からPHP5にメジャーチェンジした場合なんかは その時点でコードもPHP5に変えるんじゃないの? ちょっとした手直しくらいならそのままにしとくかもしんないけど その後の生産効率を考えると変えた方が楽でしょ?
ダメってことは、つこうてないってことじゃねぇの?
コマンド?
非奨励の関数を使用しなければとりあえず大丈夫
他人が書いた古いコードをやっつけ仕事で変えることはよくある 動きゃーいいってレベルのはバージョン変わっても変えない
723 :
718 :2009/10/04(日) 13:50:04 ID:tlZK7xE+
ありがとうございます
>>721 怖いんでなるべく使わないようにします
>>722 いつか誰かが変えるだろうってのがあるんでしょうね
724 :
nobodyさん :2009/10/04(日) 13:58:41 ID:MEZU4PyM
今北産業 凄腕の天然釣り師登場?
システム起動用に10GBのSRAMディスク メインメモリに1GBのSRAM 容量は少ないが一度は使ってみたいものだ
>>723 俺はサーバリプレイスをよくやってる。
リプレイスする理由はスペック不足とかリース切れなどの理由
ハードを変えるからついでにOSも上げる場合が多い(RHEL4から5とか)
でもプログラムまで変更する余裕が無い場合が多く、古いPHPを使わざる得ない。
register_globals=on前提のシステムも驚くほど多いよ
いつか変えなきゃと思っても、今まで問題無く動いているモノになかなか費用はかけられない現実
一応指摘はするけど、「まぁしょうがないですよね」で終わる。
727 :
718 :2009/10/04(日) 14:28:25 ID:tlZK7xE+
>>726 ありがとうございます
>今まで問題無く動いているモノになかなか費用はかけられない現実
やっぱりそういう理由ですか
ではPHP4.X.Xの記法も一応知っておかなきゃですね
728 :
nobodyさん :2009/10/04(日) 14:28:59 ID:XbHwbnY6
HDDのメモリーが32GBなんじゃないかってことだよ
まだいってるよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww HDDのメモリ32GBってどんだけ多いの?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
SSDならメモリでもおかしくない
HDDとSSD違うしwwwwwwwwwwwwwwwwwwwwwwwwww
732 :
nobodyさん :2009/10/04(日) 16:11:53 ID:PUBs4o84
超軽量フレームワーク作ってみました たぶんここまでコード数少ないのは国内初めてだと思います どなたか採点お願いします <?php // キャッシュ生成 function kyasshu($file) { $fp=fopen($filename,"w"); flock($fp,LOCK_EX); fwrite($fp,$file); fclose($fp); } // 出力 function shuturyoku($kyasshufile) { echo $kyasshufile; } ?>
>>732 一瞬釣りだと思ったけど、
言われてみれば究極的にはそういうことだよな。
今フレームワークの改良をしているところなんだが、
おかげで良いアイデアがヒラメイタ。
ありがと。
>function kyasshu($file) { >$fp=fopen($filename,"w"); ?
735 :
732 :2009/10/04(日) 16:45:38 ID:???
>>734 あ
改良
function kyasshu($file) {
if (タイムスタンプの比較)
$fp=fopen("kasshu.html,"w");
flock($fp,LOCK_EX);
fwrite($fp,$file);
fclose($fp);
}
}
// 出力
function shuturyoku() {
echo file_get_contents("kyasshu.html");
}
736 :
732 :2009/10/04(日) 16:46:35 ID:???
ちいたん越えたわ
どういう風に呼び出すの?
738 :
732 :2009/10/04(日) 16:52:38 ID:???
kyasshu("更新したファイル"); shuturyoku(); 2行を書きっぱなしでおk あとはファイルを更新するだけでおk
739 :
732 :2009/10/04(日) 17:02:12 ID:???
クリエイティブなんとかってライセンスで公開するので 自由に使ってください^^
すれ違い
740はいつも友達と彼女とすれ違う孤独な人w
3次とかww PHPやってるなら2次だとJK
PHPでもオブジェクト指向な書き方が出来ると聞いたんですが、 具体的にはどんな感じになりますか?
744 :
nobodyさん :2009/10/04(日) 19:51:40 ID:XbHwbnY6
ググレカス
メモリ君こんばんは
まあ許されるってよりは、そういう発想を行動に移す奴がいたら徹底的に叱られて 強制されるべきと考えるほうが正しいな 俺は小学6年のとき、便所のカギを中から閉めて壁をよじ登り上から脱出できる技を閃いて 学校の女子トイレすべてそれをやったら、 時間外にテストを受けてトイレに行った女子が用を足せなくて漏らしちゃって大問題 当然俺は死にたくなるくらい叱られて、それ以来そういうバカな行動はとらないと心に決めた いっぺん死ぬほど叱られるか、罰を受けるかしないとだめだな 奇行癖のある人間は
( ・д・)
メモリ君のおかげでおもろい奴らがわいてきたなwww
749 :
質問 :2009/10/05(月) 07:25:13 ID:bFH+sh6G
<?php class obj implements arrayaccess { public function offsetSet($offset, $value) { var_dump(__METHOD__); } public function offsetExists($var) { var_dump(__METHOD__); if ($var == "foobar") { return true; } return false; } public function offsetUnset($var) { var_dump(__METHOD__); } public function offsetGet($var) { var_dump(__METHOD__); return "value"; } } $obj = new obj; var_dump(empty($obj["foobar"])); ?> ・・・この結果が string(17) "obj::offsetExists" string(14) "obj::offsetGet" bool(false) になる流れを教えてください。 まず、empty($obj["foobar"])なので、offsetExists("foobar")が呼ばれて、 ($var == "foobar")が真なのでtrueが返り値になりますよね? ←ここまでは自信あり 次に、offsetGet(true)が呼ばれて、(評価はどうであれ)"value"が返り値になるんですか?? 最後にempty("value")になって、「"value"が入っているんで空じゃないよ」ということでfalseになる、ということですか???
offsetExistsが呼ばれて、$varにアクセスしようとしたとこで、 offsetGetが呼ばれて foobarからvalueに変更されたので、 offsetExistsで$varは foobarではないので falseになります。
751 :
nobodyさん :2009/10/05(月) 10:00:19 ID:OAxwPoQM
みなさんはclass名の付け方をどうしていますでしょうか? よく見るのは、(システム名・略語)_(機能名)と言うのです。 例えば、Zend_Mailとか。 他には機能名だけ書く場合もありますが、毎回どういう名前にすれば 後々わかりやすいだろうかと悩みます。何か法則とかあるのでしょうか?
凝った名前を付けない。 愛称にしない。 スペル間違えない。
うちはCamalで書いてるな
phpで書いて
756 :
nobodyさん :2009/10/05(月) 11:46:32 ID:X54Rskkj
>751 現場ごとにルールがあったりするよ。 なければあなたの言うようなのが一般的かと
757 :
749 :2009/10/05(月) 12:56:00 ID:KN+hGN3y
>>750 ありがとうございます。
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
という順番から推測しますと
offsetExists の var_dump(__METHOD__); が実行された「後」の if ($var == "foobar") で
offsetGet が呼ばれてfoobarからvalueに変更され、
最後はoffsetExistsがfalseを返すんですね。
すみません、それを踏まえてもう一つ質問です。
var_dump(empty($obj["foobaz"]));
にした場合、結果が
string(17) "obj::offsetExists"
bool(true)
になるんですけど、これがoffsetGetを呼ばない理由が分かりません。
しかも($var == "foobaz")じゃないのに、結果はtrueです。
分かりますでしょうか?
758 :
749 :2009/10/05(月) 13:00:35 ID:KN+hGN3y
すみません、訂正です: ($var == "foobaz")じゃないのに、結果はtrueです。 ↓ 実際は ($var == "foobaz") で ($var ≠ "foobar") なので 評価式は偽となってfalseが返されるだろうはずなのに結果はtrueです。
ごめん、盛大に間違ったので750無かったことにして ><
>>751 zendのコーディング規約とpearのコーディング規約を参考にしてる
台風来てるで
>>751 俺はJava風につけてる
FileNotFoundExceptionみたいに
単語別に先頭に大文字をつける感じで
>>757 empty($obj["foobaz"]);
ってのは
!$obj->offsetExists('foobaz') || !(bool)$obj->offsetGet('foobaz')
と等価
764 :
749,750,757 :2009/10/05(月) 18:40:09 ID:KN+hGN3y
>>759 いえいえ、でも、為になりました。
>>763 なるほど、この炉利ORは短絡評価が適用されるので
!$obj->offsetExists('foobaz') が true であれば
!(bool)$obj->offsetGet('foobaz') の評価がなんであろうが
全体の評価は true になるんですね。
では、前回の問題に戻りますが、
var_dump(empty($obj["foobar"]));
の結果が
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
bool(false)
になるというのは、まず、!$obj->offsetExists('foobar') が false になるので
短絡評価にならずに !(bool)$obj->offsetGet('foobar') の評価が必要となるんですね。
!(bool)$obj->offsetGet('foobar') は (bool) に型変換されてますが
""以外の文字列はすべて true と評価されるので
ここの返り値 'value' も true と評価されるんですね。
それが ! で反転して false ということですね。
false || false = false
ということで bool(false) ですね。
ありがとうございました!
765 :
nobodyさん :2009/10/05(月) 18:49:30 ID:qMw9OmRL
phpの関数の内部で、どのような事が行なわれているか知りたいのですが、 どのような手順で見れば、ソースが分かるでしょうか? 例えば、substringの関数のソースを見るための手順を教えて頂けないでしょうか? 宜しくお願いします。
766 :
nobodyさん :2009/10/05(月) 18:50:44 ID:qMw9OmRL
すみません、substringではなくsubstrでした。 失礼しました。宜しくお願いします。
767 :
nobodyさん :2009/10/05(月) 18:51:11 ID:yHTqrIVV
PHPで、HTTPヘッダーを送信するときに実行されるフック関数みたいなのありますか。 HTTPヘッダーを送信するタイミングで、手動でクッキーを設定したいと思い、質問しました。
>>767 hook 系の処理はない。出力内容は、PHP側で、echo された
文字列やheader関数、cookie 系の関数または、session 系
の関数などの結果を常にバッファしており、必要なときに、
PHP側で出力順序を判断してから送信される。
ヘッダ出力直前に処理を行いたいのであれば、処理の最後に
関連の処理を記述することだと思う。
>>768 ガーン。残念。
> ヘッダ出力直前に処理を行いたいのであれば、処理の最後に
> 関連の処理を記述することだと思う。
これって難しくないですか?
MVCがきれいに分離できていて、フロントコントローラパターンをちゃんと使っていれば、簡単にできるんでしょうけど。
PHP4の時代から残っているようなごちゃごちゃしたソースだと、難しいです。
出力バッファ制御すりゃいいじゃん
<?php ob_start(); require("unko.php"); header("Set-Cookie云々"); ob_end_flush();
772 :
nobodyさん :2009/10/05(月) 23:14:52 ID:cxXnIhTs
【OS名】Windows NT 【PHPのバージョン】PHP Version 5.2.9 【連携ソフトウェア】 【質問内容】 blogの背景画像をランダムに表示させたく思い、phpを勉強しています。 とりあえず画像を表示させてみようと、以下の文を書きました。 <?php $imgpath="img/common/header.jpg"; readfile($imgpath); ?> これで画像は表示されたのですが header('Content-Type: image/jpeg');などの表記もしたほうがいいのでしょうか?
773 :
nobodyさん :2009/10/05(月) 23:31:32 ID:IP5avodC
htmlに埋め込むなら不要 画像だけを出力するならあったほうがよい
774 :
nobodyさん :2009/10/05(月) 23:38:29 ID:cxXnIhTs
HTMLに埋め込むってdataスキームのこと? どっちにしてもContent-Typeは必ず要るぞ
776 :
772 :2009/10/06(火) 00:33:26 ID:xjSaXbC3
>>775 ありがとうございます
header('Content-Type: image/jpeg');の挿入位置ですが、readfile()の直前で問題ないでしょうか?
<?php
$headimgdir='img/header/';
$dn=opendir($headimgdir);
while($file=readdir($dn)){if($file!='.' && $file!='..'){$files[]=$file;
// echo "ファイル名:$file<br>";}}
closedir($dn);
$imgnum= array_rand($files);
$imgpath=$files[$imgnum];
header('Content-Type: image/jpeg');
readfile($headimgdir.'/'.$imgpath);
?>
777 :
nobodyさん :2009/10/06(火) 00:33:28 ID:AOFtA4fU
$s = '{$hogehoge}'; ってのがあって、それを再評価するってのはどうやるんだっけ? eval以外にやり方ありましたっけ?
>>776 それで大丈夫
標準出力へ最初に出力されるときにヘッダも書き出される
779 :
772 :2009/10/06(火) 00:56:55 ID:xjSaXbC3
780 :
nobodyさん :2009/10/06(火) 02:21:00 ID:BEe+JBrP
Pearのpagerを使っていますが、動作が気に食わないので自前で別の手段を作ろうと思っています。 そこで相談です。 Pagerって、最初に対象の検索結果rowを全部取得して、その行数を指定した一ページ当たりのアイテム数で割って リンク部分を出力し、以降のページでは最初にとった全アイテムの連想配列を元にリストをつくったりしてるんだと思いますが、 最初に全部取得するのが気に入らないです。なので、 1)ページリンクを作るために全体の件数は欲しい 2)でも、全部の行を取得するなんて無駄はしたくない、最低限のrowの実データだけ取得したい 各ページでそれぞれ必要なアイテムをその都度取得したい 1ページ10アイテムでpageId=2なら where itemId>$pageId*10 and itemId<$pageId*10+10 みたいな… という要望を満たそうと思ったら、アイテムの実データを用意したテーブルとは別に、数だけをカウントするテーブルを 別に作らないといけないんでしょうか? それだと単純にデータベースの話になっていまいますが、PHPのプログラム的に解決する方法はありますか? それとも、こんな試み自体、意味ないでしょうか? 全部のデータを取得するなんて負荷になりそうだなぁという考えからですが。。 環境はPHP5.2.8 MySql5です
え?select count(*)でいいのでは
782 :
nobodyさん :2009/10/06(火) 03:00:16 ID:BEe+JBrP
おお! お返事ありがとうございます。 それってmysql関数って言うんでしょうか? 全くそっち系はわからないので。。 なるほどー 確かにそれを使えば簡単ですね! ありがとうございました
783 :
nobodyさん :2009/10/06(火) 08:52:12 ID:ldSI1eNe
>>775 ブラウザで解釈できるからgif,jpgはなくてもおk
ただ書いておいたほうがまし
>>780 PEAR::Pagerつかってるけど、全件取得しないよ。
全件数を取得するのにselect count(*)はするけど
個々のレコードはlimit使ってページ毎にそのページに表示する分しか取得しない
785 :
nobodyさん :2009/10/06(火) 10:25:01 ID:kghRGofU
imageconvolutionでのシャープ化についての質問です 使い方が分からずググったら、こういう感じで設定すれば良いとあり $matrix = array(array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1)); imageconvolution($img, $matrix, 8, 0); 実際シャープはかかったのですが、もう少し弱くかけたいのです それで値を変更してみると真っ黒になってしまいます どのように調整すればよいのでしょうか?
>>783 ましとかokじゃねぇよ、Content-Typeを勝手に推測してしまうのはIEだけだ
RFC2616読め
787 :
nobodyさん :2009/10/06(火) 12:12:24 ID:BEe+JBrP
>>784 あ、そうなんですか?
ありがとうございます、解決しましたw
>>786 顔真っ赤にしてないでOpera、Fx、Chrome、safari、IEで開いてみろよ
790 :
nobodyさん :2009/10/06(火) 13:31:23 ID:FPrhzfOJ
独学なphp初心者です。 <table> <?php foreach($_POST as $key=>$var) { echo "<tr><td>".$key."</td><td>".$var."</td></tr>\n"; } ?> </table> のようにフォームから受け取ったnameとvalueの一覧を表示させるのはできるのですが、 それを下記のようにmysqlに挿入するのに良い方法はないでしょうか? $sql="INSERT INTO `database`.`table` (`name1`, `name2`,…`, `namen`) VALUES ('value1', value2',…, 'valuen');"; $result = mysql_query($sql, $con) or die("クエリの送信に失敗しました。<br />SQL:".$sql); いちいち$a=$_POST["name1"];$b=$_POST["name2"];って書いてVALUES ('$a', $b',…を手書き入力してましたが もっとスマートな方法ないかな…と
array_mapで処理を作って反復しりゃいいじゃん
792 :
786 :2009/10/06(火) 13:57:30 ID:???
>>789 人にテストやらせんじゃねぇよ、死ね!
と思ったら俺の間違いじゃねぇか!
済みませんでした
省略したらapplication/octet-streamで扱うんじゃねぇの…
>>786 訂正
header('Content-Type: ...') を指定しないと default_mimetype (デフォでtext/html) が
送信されるからContent-Typeを無視するIE以外で表示できません
793 :
nobodyさん :2009/10/06(火) 14:16:53 ID:FPrhzfOJ
>>791 こんな便利なものが…
ありがとうございますorz
794 :
nobodyさん :2009/10/06(火) 17:33:25 ID:BEe+JBrP
以下のような形でプリペアドステートメント的なクエリ文を書こうと思ってるんですが(イメージです)、 $this->_db->fetchAll(" SELECT * FROM `hogeTBL` WHERE `hoge1`=? AND `hoge2` like %?% AND `hoge3`=? ", array($hoge1,$hoge2,$hoge3) ); hoge1,hoge2,hoge3の全てが「あってもなくても良い」条件の場合、どう書けば良いんでしょうか? 条件の変数があるかないかで全パターン書き分けしてたらかなり面倒で、上で動くと思ったんですが動かないし どうして良いのかわからなくて質問しました。 よろしくお願いします
使っているライブラリが違うけど、俺だったら・・・ $sql = <<<EOS select * from xxxx where 1 EOS; if($name){ $sql .= "and name like '%%%s%%'"; sprintf($sql,mysql_real_escape_string($name)); } if($age){ $sql .= "and age = %d "; sprintf($sql,mysql_real_escape_string($age)); } とか書くかも
796 :
nobodyさん :2009/10/06(火) 17:59:44 ID:BEe+JBrP
>>795 なるほど、ありがとうございます
「%%%s%%」と、%がたくさんあるのはなんなんでしょうか?
sprintfのマニュアルのフォーマット文字列んとこ読みなはれ。
798 :
nobodyさん :2009/10/06(火) 18:36:11 ID:BEe+JBrP
799 :
nobodyさん :2009/10/06(火) 18:40:11 ID:y7QUP1JZ
ajax(PHP4.0+javascript)についての質問です ajaxでは、 XMLHttpRequestを用いて「必要なデータをxml文書として返すphpプログラム」をコールしましが、 このphpプログラム内でauthによる認証を行う事は可能でしょうか。 以下のような動作にしたいと思っています。 1.特定の条件で(例えばボタンを押す等)javascriptプログラムが実行 XMLHttpRequestによる通信開始、指定のphpプログラムが実行。 ↓ 2.phpプログラム内でauth認証開始、 認証成功の場合⇒データベースに書き込み、 認証失敗の場合⇒書き込みは行わない。 3.phpプログラムは認証結果をxmlとして出力 ブラウザは認証結果に応じて動作を変える こんな感じでふ。 これが可能なのか、可能でないのかわからずにいます。 苦労との皆様、宜しくお願いいたします。
HTTPの仕組みというかWebアプリの動作を理解すれば何ができて何ができないか、 は判断できるだろうしできないのはどうかと思う。
能書きはいいから、さっさと教えろよ
802 :
799 :2009/10/06(火) 21:52:47 ID:62gXteWj
>>800 さん
authを利用できるかどうかという事は
XMLHttpRequestによって実行されたphpプログラムが
クライアントのクッキーを参照できるか??という事のような気はするのですが・・
(間違っていたらすみません)
これが実際どうなのか、何を調べたらよいのか、
できたとしても環境によって動作が大きく変わってしまうのか、
分からない状況になっています。
後学の為に詳しく教えていただけたらうれしいです。
とりあえずHTTPについて復習してキマシ(*`・ω・)ゞ
流し読みだけど、jsが走ってphpをリクエスト→リクエストされたphpの中で認証処理 →結果をレスポンスとして返す、というだけの処理なら、普通に考えてできるんじゃないの? もちろん、リクエストする時にCookieなりクエリなりPOSTなりで認証情報を渡す必要 はあるだろうけど。むしろ何故不可能だと思うんだろう
804 :
799 :2009/10/06(火) 22:31:43 ID:???
>>803 さん
ありがとうございます。
更にauthで既に認証済みのユーザがあえて、POST等でIDとパスを渡すことなくとも、
XMLHttpRequestによって実行されたphpプログラムでセッション情報を元に認証する事ができるか
というと、どうでしょうか。。
やはりphpプログラムがクライアントのクッキーを参照できるか??という事になると思うんですが、、、
806 :
799 :2009/10/06(火) 22:37:04 ID:???
ブラウザからphpプログラムを呼んだ場合、 ⇒phpプログラムはブラウザが保存していたクッキーを使用する事ができる。 という認識なんですが、 XMLHttpRequestによってphpプログラムを実行した場合、 ⇒XMLHttpRequestを実行したブラウザのクッキーをphpプログラムは使用する事ができるのか?? これが分からないのが問題なのかもしれません。 ぐるぐるしてすみません。
>>806 まぁここはくだ質だから嫌味な奴は気にするな
BASIC認証は感じ
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])
|| $_SERVER['PHP_AUTH_USER'] != 'namae'
|| $_SERVER['PHP_AUTH_USER'] != 'himitsu')
{
header('HTTP/1.0 401 Unauthorized');
header('WWW-Authenticate: Basic realm="sample"');
exit;
}
header('Content-Type: text/plain');
echo 'ok';
?>
これを
var request = new XMLHttpRequest();
request.open("GET", "a.php", false, 'HOGE', 'FUGA');
request.send(null);
alert(request.status);
で試してみるといい
あとはこっちを見る
http://jp.php.net/manual/ja/features.http-auth.php
>806 ためしもせずガタガタ抜かすな。 LiveHTTPHeaderかFirebugでも入れて、Ajax通信の中身を実際に覗けや。 www.example.comへのリクエストであれば、ブラウザのアドレスバーからだろうがリンクからだろうが<img src=>だろうがAjaxだろうがクッキーは送信される。
なんつーかphpを実行する、てところに捕らわれすぎてるように思う。 何でも良いけど、実際にどんなHTTPリクエストが飛んでレスポンスが 返ってくるのか一度見てみた方が多分勉強になるし、HTTPの知識無しで ajaxはちょっと心許ないと思う
810 :
799 :2009/10/06(火) 23:08:09 ID:???
>>808 さん
>>809 さん
ありがとうございます。
なんだかふわふわして、自分が何でわかんないのかもわかんない違和感、
その原因がHTTPなんだと気づかせてもらいました。HTTPリクエスト、レスポンスを
目で見てみたいと思います。
>>807 さん
ソースまで提供していただいて、もう涙出ます。
ためさせていただきます!勉強させていただきます!
ありがとうございます!
皆さんありがとうございました!
811 :
nobodyさん :2009/10/06(火) 23:18:46 ID:RPLcbD5P
includeやrequireのように取り込まずに別ファイルとしてphpファイルを実行するには どうしたらよいでしょうか?イメージ的にはExecuteのような感じです。
>>810 ごめん嘘書いてた、ifの条件式を置き換えてくれ
|| $_SERVER['PHP_AUTH_USER'] != 'namae'
|| $_SERVER['PHP_AUTH_PW'] != 'himitsu')
815 :
811 :2009/10/06(火) 23:36:14 ID:???
a.phpが読み込まれたときにinc.phpを実行させたいです。
inc.phpは他のファイルからも実行させたいのですが、呼び出し元の変数に
万が一影響しても困るので、includeやrequireは避けたかったのです。
>>814 さんのsystem("")でできました。ありがとうございますー
816 :
nobodyさん :2009/10/07(水) 17:41:32 ID:UWu9xUOc
<?php if(($_POST["mati"]==1))$count++; else if(($_POST["mati"]==0))$count--; if(($_POST["eiga"]==1))$count++; else (($_POST["eiga"]==0))$count--; if(($_POST["ame"]==1))$count++; else if(($_POST["ame"]==0))$count--; if (count==3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">; else if (count==2) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">; else if (count==1) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">; else if (count==0) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">; else if (count==-1) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">; else if (count==-2) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">; else if (count==-3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">; ?> これでリンク先を振り分けられないんだがどうしてか教えて欲しい 何回やっても一番したのリンクへしか飛ばないんだ・・・
マルチかよ
818 :
nobodyさん :2009/10/07(水) 17:52:07 ID:UWu9xUOc
>>819 気になってたんです、それ。
頂きました、ありがとう!
次に靴下を穿きます
次に出かけます
次に書店に入ります
>>816 それ、そもそもパースエラーが出る。
実際に動かしてるものをコピペしないと、
転載するときに間違ったのかソースが間違ってるのか分からないよー。
そのままコピペで貼り付けてる 動くには動くんだがどんなふうにやっても必ず一番下のリンクへ飛ぶんだ
といいつつ、$_POST値が来てないんじゃないかと推測してみたり。 先頭で var_dump( $_POST ) ;
>>829 コードを保守する前にまずスレのルールを守りましょう
自分の知っているphpだと、変数の頭は$で略せなかったと思うんだけど いつから条件式中で略せるようになったの?
>>827 え?それで動く??
if (count==3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">;
count は$countだろうし
HTML部分は echoなり、php抜けるなりしないとダメだと思うんだけどなー。
ロジックがおかしくて動かないんじゃなくて
そもそも、まったく動いてないんじゃ?
。ヨヌー、ホ、ソ、皈ウ・チテ・ア、・6クトヌ网、ケ?、?タ、ア、ノ、筅ヲ3クトソゥ、ル、ニ、キ、゙、テ、ソ。ラ 、ネ、、、ヲス?ュケ?、゚、ャネッテシ、ネ、ハ、遙「ツ賈?ワカ盻?、ヒ、マ・ウ・チテ・ア、ャ、ト、ュ、筅ホ、ネ 、ハ、テ、ソ。」2、チ、网?ヘ、・?ヒ。ヨ・ウ・チア。ラ、ネ、篆?ォ、・・」 、ウ、ホネト、ネ、マ、「、゙、・リキク、ハ、ッ。「・ヒ・蝪シ・ケ
すまん さっき改変してた <?php if(($_POST["mati"]==1))$count++; else if(($_POST["mati"]==0))$count--; if(($_POST["eiga"]==1))$count++; else if(($_POST["eiga"]==0))$count--; if(($_POST["ame"]==1))$count++; else if(($_POST["ame"]==0))$count--; if ($count==3) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">'; else if ($count==2) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">'; else if ($count==1) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">'; else if ($count==0) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">'; else if ($count==-1) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">'; else if ($count==-2) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">'; else if ($count==-3) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">'; ?>
たぶん勘違いだと思うんで、パースエラー部分は無視するとして。 最初にそのページを読み込むときは、絶対一番下の処理になるけど。
mjky これなんとかしてページを振り分ける方法ない?
if($_POST['submit']!=NULL){}
>>834 ほら。タブは全角スペース2つに置き換えてあるから注意な
if(isset($_POST["mati"],$_POST["eiga"],$_POST["ame"])){
$count = 0;
function count_post($str){
if($str == "1"){
return 1;
}else if($str == "0"){
return -1;
}else{
return 0;
}
}
$count = (count_post($_POST["mati"]) + count_post($_POST["eiga"]) + count_post($_POST["ame"]));
header('Status: 301 Moved Permanently');
switch($count){
case 3:
header('Location: kikubari.html');
break;
case 2: case 1:
header('Location: roman.html');
break;
case 0: case -1:
header('Location: kensin.html');
break;
case -2: case -3:
header('Location: zibun.html');
break;
}
}else{
echo "必要なパラメータがPOSTされてない";
}
>>839 なぜ飛ばないんだ・・・
URLへ飛んでくれない・・・
842 :
nobodyさん :2009/10/07(水) 22:44:35 ID:IEM8qI68
headerなのに絶対パスで書かないし
どこに相対パスも可って書いてあるの?
相対パスでも一応動くし、やる人もいるだろうねぇ。 俺はしないけど。
14.30 Location
The Location response-header field is used to redirect the recipient to a location other than the
Request-URI for completion of the request or identification of a new resource. For 201 (Created)
responses, the Location is that of the new resource which was created by the request. For 3xx
responses, the location SHOULD indicate the server's preferred URI for automatic redirection to
the resource. The field value consists of a single absolute URI.
Location = "Location" ":" absoluteURI
An example is:
Location:
http://www.w3.org/pub/WWW/People.html Note: The Content-Location header field (section 14.14) differs
from Location in that the Content-Location identifies the original
location of the entity enclosed in the request. It is therefore
possible for a response to contain header fields for both Location
and Content-Location. Also see section 13.10 for cache
requirements of some methods.
>>843 英語も読めない無知は黙ってろよ
絶対パスで書け
>>839-840 case -2: case -3:
header('Location: zibun.html');
break;
↓↓↓
case -2: case -3:
header('Location: zibun.html');
break;
default:
header('Location: countgaokashii.html?count='.$count);
break;
>>819 UPありがとう。
とりあえず、こんな流れで動きましたよ。
1行目が<?xmlで始まるPHP(複数個)
<?をPHPと認識して処理されてしまうのが問題なので、
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> に書き換える。
PHP5環境の場合、ファイルの初回ダウンロード時に
db.inc.phpの「if($date != date('Ymd', $lastact))」部分でエラーが出るので、
前に、if($lastact == ""){$lastact = 0;}; を挿入。
ツールを使ってSQLiteのDBを作成し、db.inc.php内記載のSQL文3つ
「CREATE TABLE BASE、CREATE TABLE RECENT、CREATE TABLE NOTE」を使って、
テーブルを作成。
filesフォルダにダウンロードさせたいファイルを入れる。
あとはアップロードして、/xfm/ファイル名 にアクセスすれば、
ダウンロードページが表示されます。
軽く触ってみて思ったこと。
config.inc.phpで、「ログ管理モード」の記載があるが、
どうやって「ログ管理モード」に入るのか不明。
集計結果の表示にパスワード認証をかける設定にしても、
パスワードを聞いてこず、集計結果が表示される。
>db.inc.phpの「if($date != date('Ymd', $lastact))」部分でエラーが出るので、 noticeじゃなくて?
>>850 ERRORでなく、NOTICEだったかもしれません。
その後。
自動的にダウンロードが始まります・・・・と出るが、自動で始まらない。
この点、修正が必要ですね。
>>819 まとめました。
インストール :
1行目が<?xmlで始まるPHP(複数個)
<?をPHPと認識して処理されてしまうのが問題なので、
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> に書き換える。
PHP5環境の場合、ファイルの初回ダウンロード時に
db.inc.phpの「if($date != date('Ymd', $lastact))」部分でNOTICEエラーが出るので、
前に、if($lastact == ""){$lastact = 0;}; を挿入。
dl_thanks.php のHEADセクション内に、
<meta http-equiv="Refresh" content="3;URL=<?php $this->put('dl_link'); ?>" />
を追加することで、3秒後に自動ダウンロード。
ツールを使ってSQLiteのDBを作成し、db.inc.php内記載のSQL文3つ
「CREATE TABLE BASE、CREATE TABLE RECENT、CREATE TABLE NOTE」を使って、
テーブルを作成。
filesフォルダに公開ファイルを入れる。
xfmフォルダ下全てをアップロード
使い方 :
・/xfm/ファイル名 で、ダウンロード画面が表示
・/xfm/stat で集計ページ表示
・ログ管理モードon/offは無効。(configには残っているがコードは無い)
・パスワード認証が通ると、ログの削除/編集が可能になるが、呼出方法不明。
853 :
nobodyさん :2009/10/08(木) 12:11:55 ID:HKU7amRg
select 10 as x union select 11 as x union ...(繰り返し)... union select 100 as x ↑のクエリを簡潔に書く方法教えてください
856 :
nobodyさん :2009/10/08(木) 12:49:11 ID:HKU7amRg
>>855 300-0000010〜300-0000100
300-0001200〜300-0001300
256-0000800〜256-0000900
みたいな口座の連番があって、
その中である条件にあてはまる口座だけ取りだしたい。
テーブルが持っているのは、口座の支店番号(上3桁)と
連番の開始、終了の下7桁だけ。
とりあえず有効範囲にある口座番号を持つ表を生成して、
そこからWHERE句とINNER JOINを使って条件にあてはまるのを出したい。
>>856 例えば300-0001234を抽出
SELECT * FROM table
WHERE 支店番号 = '300' AND '0001234' BETWEEN 連番の開始 AND 連番の終了
あとの条件をくっつけていく
PHP関係なくいけるんちゃう?
858 :
nobodyさん :2009/10/08(木) 18:16:45 ID:MSKkwYby
function getValidationScript ($options=NULL){ return array("var regex=".$this->regex.";\n" , " { jsVar } != ' ' && ! regex.test( { jsVar } )" ); } 失礼ですが質問させて下さい getValidationScriptというのを調べまくったのですが満足いく説明が得られず、英語サイトまで行ってなんとか少し分かりました どうやら配列を返し、その配列の第2引数に検証の正否を判定するための条件式を含めるようです で、上のコードなのですが、第2引数の意味が分かりません PEARのQuickForm.php自体の中のgetValidationScript関数も確認したのですが、物凄く長く難しく、自分には理解が出来ませんでした ただ、$testが使われているというのは分かりました { jsVar }というのは何なのでしょうか? 意味が分からないだけでなく、コレが何の形なのかも分かりません JavaScriptならばオブジェクトリテラルだという事は分かるのですが、PHPでは分かりません で、この第2引数ですが、{ jsVar }というものが空または正規表現.testが無ければ・・・何を返すのでしょうか? 検証の正否を判定するための条件式を含めるという事ですが、TRUE、FALSEとかでしょうか?
JavaScriptのコードを返しているだけじゃないの? jsVarはあとで置換でもされるのかと
860 :
nobodyさん :2009/10/08(木) 21:20:11 ID:MSKkwYby
では、{ jsVar}の形はオブジェクトリテラルか何かを表しているのでしょうか? QuickForm.phpのソースを見た感じでは分かりませんでしたが、何かそういうの作っているんでしょうかね・・・
フォームの入力値チェックでは?
>>860 紛らわしいが{jsVar}は置換用のプレースホルダ
フォーム要素のプロパティに置換される
RuleRegistry.php の HTML_QuickForm_RuleRegistry::getValidationScript() を読むといい
863 :
nobodyさん :2009/10/08(木) 22:22:56 ID:MSKkwYby
>>862 わぉ、ほんとだ{jsVar}がありました
ありがとうございました
ではこのコードは、
Returns the javascript test (the test should return true if the value is INVALID)
Return : first element is code to setup validation, second is the check itself
という事のようなので、
" { jsVar } != ' ' && ! regex.test( { jsVar } )" の検証の正否を求めて、つまり空やNULLでなければTRUEを返すという事ですね?
あれ、INVALIDって事は逆ですかね?
空またはNULLであればTRUEを返すのかな?
ごめんなさい、分からなくなりました・・・
864 :
nobodyさん :2009/10/09(金) 00:46:53 ID:prJCc7FF
値が50個ほど入った配列があり、この配列から任意の個数の値を取り出して、 「組み合わせを生成した配列」を出力するをするという処理を実装したいと思っています。 例えば、 $data = array('1','2','3'); という配列から、変数$outputに2個取り出すとすれば、 $output[0][0] = '1'; $output[0][1] = '2'; $output[1][0] = '1'; $output[1][1] = '3'; $output[2][0] = '2'; $output[2][1] = '3'; という組み合わせが重複しない、全3パターンの出力が欲しいのです。 取り出す個数が固定なら、forループのネストで実現できそうなのですが、任意の個数が欲しいので、いい処理方法が浮かびません… ぶしつけな質問で申し訳ないのですが、ご存知の方がおられましたら、ぜひともご教授いただけたらと思います。 よろしくお願いいたします。
866 :
nobodyさん :2009/10/09(金) 03:43:14 ID:prJCc7FF
色々試した結果、結局できなかったので、マニュアルページにある「全組み合わせを出力する関数」を改悪して作りました。
無駄が多すぎる…
//
http://www.php.net/manual/ja/ref.array.phpより拝借 function combinations2($elements,$anyvalue){
if(is_array($elements)){
$combinations=array(array());
foreach($elements as $element){
$new_combinations=array();
foreach($combinations as $combination){
$new_combination=array_merge($combination,(array)$element);
array_push($new_combinations,$new_combination);
}
$combinations=array_merge($combinations,$new_combinations);
}
$combinations_key = array_keys($combinations);
$combinations_size = count($combinations_key);
for($i=0;$i<$combinations_size;$i++){
$sn = $combinations_key[$i];
if($anyvalue != count($combinations[$sn])){
unset($combinations[$sn]);
}
}
return $combinations;
}else{
return false;
}
}
>>864 PHPでブルートフォースアタックしちゃだめよ
868 :
nobodyさん :2009/10/09(金) 08:19:27 ID:SDpPJ8L7
>>867 あぁ、そうか何の為にこんなコードが必要なのかと思ったら、暗号解読に使うつもりなのか・・・
>>866 $data = array('1','2','3','4','5');
print_r (combinations3( $data, 3));
function combinations3( $array , $num ) {
$n = count($array);
$x = (1 << $num ) -1;
$ret = array();
while ( ! ($x & ~( (1 << $n ) -1 ))){
$ret[] = arrayset($x,$array,$n);
$x =nextp($x);
}
return $ret;
}
function nextp($x) {
$s =$x & -$x;
$r = $x + $s;
$n = $r & -$r;
return ($r | ((floor($n/$s )
>>1 )-1));
}
function arrayset($x,$array,$n){
$r = array();
for( $i =1;$i<= $n;$i++){
if($x & 1) $r[] = $array[$i-1];
$x = $x
>>1 ;
}
return $r;
}
871 :
nobodyさん :2009/10/09(金) 10:55:42 ID:tvzB35Y7
おねがいします シェル関数を使い、PHPを実行させたいのです $command = 'php /virtual/hoge/hoge/hoge.php'; $output = shell_exec("{$command} 2>&1"); print_r ($output); これを実行すると Warning: shell_exec() [function.shell-exec]: Unable to execute このようなエラーになります $command の中身をlsとかtopにしたらちゃんと実行されます PHPからPHPをたたく?ということは置いておいて $command の記述が間違えているのでしょうか?
872 :
nobodyさん :2009/10/09(金) 10:57:15 ID:SDpPJ8L7
オリジナルの暗号化を作りたいんだけど誰か↓を暗号化できる人いませんか? abcd12345
人に作ってもらったらオリジナルじゃないじゃん
オリジナルを作りたいのに他人に聞いてどうするよ
875 :
nobodyさん :2009/10/09(金) 11:00:46 ID:mskr8tQ2
参考にするだけですよ^^
参考=コピー
暗号なんて研究者レベルのことしたいってのに こんなとこで質問するなんて釣りだろ おまえら釣られんなよw
md5は解析されるから使っちゃだめって言われました
md5は暗号化ではなく一方向のハッシュ化です 復号できないものを暗号とはいいません
>Enter your keyword which want to be convert to MD5 hash.
883 :
nobodyさん :2009/10/09(金) 11:51:56 ID:tvzB35Y7
>>879 ありがとうございます
さっそく実行しましたが同じエラーが出ました
php -qオプション要るんじゃない? やったことないけど
885 :
nobodyさん :2009/10/09(金) 13:20:47 ID:tvzB35Y7
>>884 ありがとうございます
同じエラーが出たので-fオプションで試したところ
sh: fork: Resource temporarily unavailable
このようなエラーに変わりました
これはどういうことでしょうか?
ぐぐれよ
ググレカス君こんにちは
>>885 実行しているのは自分で管理しているサーバ?
レンタルサーバだとプロセス数で制限かかってたりするからforkできなかったりするよ
forkって?
ぐぐれカス
スパゲティ食べるやつ
892 :
nobodyさん :2009/10/09(金) 14:36:12 ID:l1yyeg00
ID出し忘れましたforkってなんですか?
894 :
nobodyさん :2009/10/09(金) 14:43:30 ID:tvzB35Y7
>>886 >>887 わからないならスレ汚しになるのでいちいちレスしなくていいですよ
>>888 的確なお答えありがとうございます
レン鯖なので制限かかってるみたいです
ありがとうございました
答えが分かったとたん態度が急変する回答者
【OS名】Cent OS 5.2 【PHPのバージョン】php5.1.6 【連携ソフトウェア】特になし 【質問内容】 mb_convert_kana() の文字化けに困っています。 $ins_s = "?`?a?b?cアイウエオ"; var_dump($ins_s); $out_s = mb_convert_kana($ins_s, "KSA", "SJIS"); var_dump($out_s); スクリプトの文字コードはSJISです。 上記のソースで以下の様に $ins_s の4文字(fa60, fa61, fa62, fa63)が?(3f)に化けます。 string(13) "?`?a?b?cアイウエオ" string(14) "????アイウエオ" 化ける文字は上記の文字に限らず、第3水準(FA40 - FC4Bに配置されている文字) の文字だと概ね化けるようです。 php.ini の関連すると思われる設定は以下の様にしています。 解決方法があればお願いします。 mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off
>>897 $out_s = mb_convert_kana($ins_s, "KSA", "sjis-win");
マニュアル君きょうはいないなー
マニュアル君って?
902 :
nobodyさん :2009/10/09(金) 23:27:17 ID:+N74k5r8
テンプレの最後に入れといて 登場人物 マニュアル君 正規表現クン
質問も回答もしないで文句だけいってるお前も追加しとけ。
904 :
nobodyさん :2009/10/09(金) 23:34:06 ID:+N74k5r8
>>903 オメー自分のレスをよく読んでからからにしろ
テンプレに追加
揚げ足鳥クン
性格の悪いやつ君も入れといて
なんだ、自分のことだって自覚してるんじゃないかお前。
907 :
nobodyさん :2009/10/09(金) 23:38:50 ID:+N74k5r8
野次馬クン乙
908 :
897 :2009/10/10(土) 00:29:37 ID:???
>>898 あ、投稿も化けてますね…。
> $out_s = mb_convert_kana($ins_s, "KSA", "sjis-win");
これで解決しました。d。
909 :
nobodyさん :2009/10/10(土) 03:41:41 ID:K/ciw02z
【OS名】winXP 【PHPのバージョン】xampp-win32-1.7.2に入っているバージョンで多分最新だと思います。 【連携ソフトウェア】なし。 【質問内容】 <?php $str = 'プログラム1/PHP'; //カタカナ1文字以上+半角数字1文字+「/」+半角英大文字1文字以上にマッチ if(mb_ereg("([ア-ン]{1,}[0-9])/([A-Z]{1,})", $str, $ARRAY)){ print $ARRAY[0]; echo "<pre>"; print $ARRAY[1]; echo "<pre>"; print $ARRAY[2]; } ↑を実行すると↓の表示になります。 [ア-ン]{1,}で、『プログラム』を全部拾えないのでしょうか? ム1/PHP ム1 PHP
つうかID出さないほうのガキの喧嘩をこっちのスレに持ち込むなよ
911 :
nobodyさん :2009/10/10(土) 06:08:24 ID:CsfH1goL
某スレに質問したのですが、 トンチンカンな回答ばかりで、 解決ができなったので、 こちらでお伺います。 ユーザーIDに漢字を使いたいという客がいるのですが、 ユーザーIDに漢字を使うことの致命的なデメリットはなんでしょうか? 私もつかった事例がないので、分かりませんが、 文字コードの問題などは技術的に解決できると思うのですが。 宜しくお願いします。
エスケープしてUTF-8で扱うなら大した問題はない
別に良いんじゃない?
実際、ゲームのサイトとかで漢字のユーザーIDが使えるところは結構あるだろ?
>>911 の意図するユーザーIDとは違うのかもしれないが。
>>911 コンピューターはもともと欧米が先進となって
英数字などの1バイト文字を扱うことを前提に設計されてきたので
昨今の国際化によって徐々にマルチバイト文字でも問題ないようにはなってきてるが
やはりそれでもコンピューターにとって扱いやすいのは1バイト文字であるということ
そんな事情で通常コンピューターに処理させるような工程には1バイト文字を使うことが多い
マルチバイトにすることによって発生するデメリットといえば
処理速度が少し落ちるということぐらいではないかな
アドレスにユーザー名を使ってたりすると、「%が付いてる、みっともないから消せ」とか言われそうだ
> mbstring.internal_encoding = SJIS そもそもこれあかんでしょ。SJISはバグつきなんだから基本的にご法度だよな。 別にユーザ名漢字でもいいけど、エスケープするからそのまま読み取れないし、長くてデータの無駄遣いだろ。 個人的にはヤダ。
>SJISはバグつきなんだから おいおいこの程度の知識で語って大丈夫か?
例えばWindowsの場合、ユーザー名に全角文字を使うと、
テンポラリフォルダなんかのユーザー毎に分けられるエントリに全角文字が含まれて、
それが原因で上手く動かないアプリケーションが出てきたりする。
そういう状況を嫌って全角文字を避けたりするような。
「上手く動かないアプリケーション」を修正するなり使わないなりする選択肢もあるけど、
それにかかるコストに比して、得られるものは結局のところ自己満足でしか無いというか。
>>913 のいうようなゲームのサイトみたいに、
一定の閉鎖環境であれば検証・修正にかかるコストも限定化されるけど、
パソコンみたいに不特定のアプリケーションが入ってくる環境だと切りが無いよね。
ゲームの日本語名はユーザIDじゃなくてアカウント名でしょ
むしろキャラクター名だろう
「2009年10月10日」と表示しようとして SJISでdate("Y年m月d日")とかやると 年(0x944E)とdate関数のformat文字「N(0x4E)」がかぶってるために文字化けする。 こういうのを一つ一つ意識して作るのが面倒ならSJIS以外を使った方がいいよ。
>909 その処理の前にmb_regex_encoding('SJIS'); UTF-8なら"UTF-8"。 php.iniのmbstring.internal_encodingを編集してもいい。 正規表現はそれで問題ないが、「1文字以上」は普通+を使うと思う。つまり"([ア-ン]+[0-9])/([A-Z]+)"。
>>909 デリミタが入ってない件
ereg系は推奨できない件
mb_ereg("![ア-ン]+[0-9]+?/[A-Z]+!", $str, $ARRAY)
926 :
909 :2009/10/10(土) 12:50:11 ID:K/ciw02z
>>923 おお、ありがとうございます。
>mb_regex_encoding('SJIS');
で、解決しました。 感謝します。
しかし、この SJISとUTF-8の違いがなんだかさっぱりわかりませんw
>>870 お礼が遅れて申し訳ありませんでした。
本当にありがとうございます。
これで実装したいことができそうです。
928 :
909 :2009/10/10(土) 13:20:07 ID:K/ciw02z
>>924 <?php
mb_regex_encoding('SJIS');
$str = 'プログラム1/PHP';
if(mb_ereg("([ア-ン]+[0-9])/([A-Z]+)", $str, $ARRAY)){
print $ARRAY[0];
echo "<pre>";
print $ARRAY[1];
echo "<pre>";
print $ARRAY[2];
}
↑だと意図した通りに表示されるのですが、↓だと何も表示されません。 これはどういうことでしょうか?
<?php
mb_regex_encoding('SJIS');
$str = 'プログラム1/PHP';
if(mb_ereg("!([ア-ン]+[0-9])/([A-Z]+)!", $str, $ARRAY)){
print $ARRAY[0];
echo "<pre>";
print $ARRAY[1];
echo "<pre>";
print $ARRAY[2];
}
929 :
nobodyさん :2009/10/10(土) 13:35:54 ID:ogMq/uQO
ていうか何で()でくくってんの?
>>928 正規表現勉強しろ。
"([ア-ン]+[0-9]/[A-Z]+("
でもいけるんじゃない?
>>929 (a+b)/c は a+b/c とちがうからな。
>>930 ?
([ア-ン]+[0-9])/([A-Z]+)と書かないで[ア-ン]+[0-9]/[A-Z]+でいいだろって言ってんの
>>928 924の言う事は嘘
mb_ereg()にデリミタは存在しない
>>931 mb_ereg()の第三引数の意味調べな
>>911 「漢字を使う」て具体的にどういうことかなあ。
ユニークにならないとダメだから
一、二、三。。なら使えるけど例えば名前だとダメ。
というわけでシステム?が勝手に割り振るのならまだしも
「利用者が好きな文字を選ぶ」ってことなら
被ってないかの検証もいるねー。
-------------------------------------------------- 坊っちゃん(1906年4月、春陽堂刊『鶉籠』収録) 草枕(1906年9月、『新小説』/『鶉籠』収録) ... -------------------------------------------------- の様な文章から、 $author($date、$entry) の様な指定で、文字列を取得するのに、良い関数はないでしょうか。
>>934 関数はないが、正規表現がある
あとID出せ そしてあとはググレ
図書系のものには普通APIが提供されてないか?
937 :
909 :2009/10/10(土) 18:34:52 ID:K/ciw02z
>>932 > 924の言う事は嘘
> mb_ereg()にデリミタは存在しない
どうもです、了解しました。
938 :
nobodyさん :2009/10/10(土) 19:49:22 ID:WBQCef66
質問よろしくお願いします。現在、鑑定サイトを作成中です。
質問20問をラジオボタンで答えてもらい、結果を判定するサイトです。
ラジオボタンの値は、20問すべて(0,1,2)のどれか3つです。
これ以外の数値、又は、文字列がポストされた場合、
エラーメッセージを表示したいのですが、上手くいきません。
(0,1,2)のすべて正常な場合もエラーになってしまいます。
8月からPHPを始めたばかりなので、初歩的なミスかとも思いますが、
よろしくお願いします。
if ($data = $_POST){
foreach ($data as $value) {
if (($value != "0") || ($value != "1") || ($value != "2")){
$er_ms = '不正な値が入力されています';
$_SESSION['er_ms'] = $er_ms ;
header('Location:
http://hoge.jp/hoge.html ');
exit;}}
}
0と1と2のどれでもないならば でしょ? ||じゃなくて&&
941 :
nobodyさん :2009/10/10(土) 20:26:45 ID:WBQCef66
>>939 ありがとうございます。
どうしてエラーにひっかかるのか理解できました。
なるほどです。これで一歩前進できました。
if( !( $value >= 0 and $value <= 2 ) )
943 :
nobodyさん :2009/10/10(土) 21:17:44 ID:WBQCef66
>>942 レスありがとうございます。
不等式も考えたのですが、整数以外の桁数の多い小数など
を入れられた場合もエラーにした方が良いと思い、
>>938 のように
してみました。
だけど、&&で大丈夫だと思ったら、どこか別のとこがおかしいみたい。。
再度、検討中です。
>>939 >>942 ありがとうございました。
なんとか && で出来たみたいです。
構文がおかしいのかと考えていたのですが、
if文の中に、if文を入れ子にしていて、どこかおかしくなってたみたい。
if文を独立させたら、やっと動きました。
ありがとう!
945 :
nobodyさん :2009/10/10(土) 22:04:23 ID:Y6o2B77j
始めまして。 画像アップロードについての質問です。 たとえばSNSみたいなサイトを作るとき、プロフィール写真とかを アップロードすると思います。 アップロード(保存)の仕方について、二通りあるとおもいます。 ・DBに保存する(mediumblobとかで) ・img/とかのファイルに保存する 後々のこと(ajax使うとか、サムネイルを作るとか)を考えたとき、 どっちがいいのでしょうか? できたらその理由も教えてください。
946 :
nobodyさん :2009/10/10(土) 22:33:57 ID:m/iUbtet
現在pixivが落ちてますがphpの糞仕様が原因ですか? それともphperのノースキルが原因ですか?
>>946 まず君の脳みそを検査してもらうことが最優先だ
>>945 SNSの場合、一般的には全てデータベースで運用するので、
写真用にわざわざ管理領域を広げるよりもデータベースで一緒にやってしまったほうがいい。
949 :
nobodyさん :2009/10/10(土) 22:50:37 ID:m/iUbtet
どっちもという事ですか?
950 :
nobodyさん :2009/10/10(土) 23:49:25 ID:4SjhHbkn
PHPで.htaccessを新規作成する事は可能でしょうか? 先輩方、ご回答よろしくお願いします。。。 Orz
しねよかs
touch('.htaccess');
美しいコードのプログラムを探しています。 有名どころのプログラムならコードもきれいだと重い、phpBB、XOOPS、WordPressなどを ダウンロードしてみましたが、どれもdefineや関数で名前空間汚しまくりでした。 defineが必ずしも悪とも思いませんが、上記のような大規模なプログラムでは望ましくないと思ってます。 読んでて気が引き締まるような美しいPHPのプログラムを教えてください。
>>954 美しい の定義を聞きたい
たとえば可読性を少しでも取ったコードは汚いってことかな
>>954 なんつーかな。
おまえさ、何様なんだよw
>>954 俺はdefine嫌いだって独り言を質問スレに書くってどうなの?
defineそのものがってわけじゃなくね?
>>954 関数とdefineが気にくわないなら、
とりあえずZend FrameworkとZend Frameworkコーディング規約嫁。
>phpBB、XOOPS、WordPress
PHPでOOPをやろうって習慣が無い時代のコードなので仕方無い。
まぁ大規模コードを書く場合はコードの美しさより、設計の美しさの方が可読性に影響すると思うが。
961 :
nobodyさん :2009/10/11(日) 11:58:07 ID:I91rw7dl
今日も日曜なのにこのスレに張り付いてるしょぼい回答者共 俺様が勉強させてやるから感謝しろよks smartyでテンプレートとデータを分けて出力結果みたいにするにはどうやればいいのか教えろ HTMLのテンプレート <html> <head> <title>{$title}</title> </head> <body> <h1>{$h1}</h1> </body> </html> データファイル <?php $title="ホームページ"; $h1="見出し1"; ?> 出力結果 <html> <head> <title>ホームページ</title> </head> <body> <h1>見出し1</h1> </body> </html>
難し過ぎて答えられないです。
963 :
nobodyさん :2009/10/11(日) 12:04:53 ID:I91rw7dl
ggrやks
すれ違いだね
ここに書くってことは、下らねぇ質問って自覚はあるんだな。 そんなのチュートリアルレベルだろ。 その辺の入門解説読んでも分からんのなら、どこがどう分からないかを書くべし。
<title>ホームページ</title> に哀愁を感じる。 学校の宿題か何かだろう。
smarty使ったことないがテンプレートエンジン使用するなら どこかでassignしなきゃ一生出力されない あとはググれカス
968 :
nobodyさん :2009/10/11(日) 13:18:15 ID:I91rw7dl
>>967 そんな事貴様に言われなくてもわかってんだよks
smartyでのやり方を聞いてんだksg
970 :
nobodyさん :2009/10/11(日) 14:01:36 ID:I91rw7dl
【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
>>970 ksとかksgとか覚えたばっかりで使いたいのかな?
974 :
nobodyさん :2009/10/11(日) 16:17:24 ID:Brpi1lwU
http://www.php.net/manual/ja/function.mysql-info.phpを試しているんですけど 、何も表示されません。
まずはデータベースを作りました:
mysql> CREATE DATABASE idemailpeopl
mysql> USE idemailpeople;
mysql> CREATE TABLE people (id INT NOT NULL PRIMARY KEY, email TEXT);
mysql> INSERT INTO people SET id = 42, email = "
[email protected] ";
…そして、下のようなクエリを書いてみました:
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('idemailpeople');
$result = mysql_query("SELECT id, email FROM people WHERE id = '42'");
$result = mysql_query("INSERT INTO people SET id = 1, email = '
[email protected] '");
echo mysql_info($link);
?>
…ちゃんとMySQLには反映されていて id = 1, email = '
[email protected] ' は新しく挿入されましたが、何も表示されません。
直近のクエリについての詳細な情報を得るにはどうしたら良いのか教えてください。
>>974 最後のを echo mysql_error(); にしてメッセージ読むと分かるかな?
>注意:
>INSERT ... VALUES 文で mysql_info() が非 FALSE 値を 返すのは、
>文中で複数の値のリストが指定された場合に限ります。
って書いてるじゃん
MySQL APIのページにも
http://dev.mysql.com/doc/refman/4.1/ja/mysql-info.html >注意:
>mysql_info() は、INSERT ... VALUES ステートメントが複数レコードを挿入する形式の場合に限り
>(複数の値リストが指定された場合に限り)、NULL 以外の値を返します。
おそらくPHPのmysql_info()は同名のこのAPI使ってるんでしょ
そのSQLじゃNULLかFALSEが返ってきてるということなのでは?
ためしに複数のレコードを挿入して確認してみるといい
977 :
974 :2009/10/11(日) 19:34:54 ID:Brpi1lwU
ありがとうございます。
>>975 echo mysql_error();にしてもメッセージは出てきませんね。
>>976 $result = mysql_query("INSERT INTO people SET id = 11, email = '
[email protected] '");
$result = mysql_query("INSERT INTO people SET id = 12, email = '
[email protected] '");
…のように複数のレコードを同時に挿入してみましたが、やはり何も表示されません。
既に登録されているidを挿入しようとすれば、当然「重複している」とエラーが出ます。
実際にmysql_info()が値を返すような複数のクエリを教えてください。
echoのところを var_dump(mysql_info($link)); にしたらどうなってる?
>>977 $result = mysql_query("INSERT INTO people select * from people "); で 確認できました。
で、複数レコードではないのですが、
$result = mysql_query("INSERT INTO people select 333, '777' "); でも
Records: 1 Duplicates: 0 Warnings: 0
と出ました。
>>977 >>976 のリンクに書いてあるでしょ
> INSERT INTO ...SELECT ...
> 文字列の形式: Records: 100 Duplicates: 0 Warnings: 0
> INSERT INTO ...VALUES (...),(...),(...)...
> 文字列の形式: Records: 3 Duplicates: 0 Warnings: 0
> LOAD DATA INFILE ...
> 文字列の形式: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
> ALTER TABLE
> 文字列の形式: Records: 3 Duplicates: 0 Warnings: 0
> UPDATE
> 文字列の形式: Rows matched: 40 Changed: 40 Warnings: 0
981 :
980 :2009/10/11(日) 20:45:10 ID:???
規制でスレ立てできなかった 誰か頼む
984 :
974 :2009/10/11(日) 21:21:11 ID:Brpi1lwU
>>978 >var_dump(mysql_info($link));
Bool(false)でした。
>>979 > result = mysql_query("INSERT INTO people select * from people ");
一回目から"Could not run query: Duplicate entry '1' for key 'PRIMARY'"と出ました。
>$result = mysql_query("INSERT INTO people select 333, '777' ");
これはちゃんと出ました!:
Records: 1 Duplicates: 0 Warnings: 0
>>980 よぉうやく意味が分かりました。
INSERT INTO ...SELECT ... を INSERT INTO ... SET ... と勘違いしていました。
でも、ここだけ実例が省略されてるのってズルいですよ。
初めての人には分かりませんって。
…以上、ありがとうございました!
新しいApache試したけど、これ凄いね。 今までのApacheよりも、処理速度で1.8倍向上している。 メジャーバージョンアップでもよかったんじゃないか?
1.8倍といったって人間の感覚で誤差は感じられないマイクロ秒単位でだろ? そういうのは誤差の範囲内で流されるんだよ
Apacheがいくら最適化されてもコーディングが最適化されてないと意味ないし @演算子使わないとか$_POST使う前にissetで調べるとか==を===に置き換えるとか
===は遅くなるぞ?
遅い早い系の話はms単位での違いが明記されてないと感覚的に無視できるのかできないのか わからん
誰か暇なやつ1万行ぐらいいらぬコメント挿入して動かすのと コメントなくして動かすのじゃどのくらい差が出るかやってみてくれ
>>988 やってみた。厳密等価の方が3割〜1割程度早くなった
結果
厳密等価演算子
0.0059380531311035s
0.0058860778808594s
0.0058920383453369s
0.0058870315551758s
0.0058879852294922s
0.0059118270874023s
0.0059001445770264s
0.0058870315551758s
0.0058960914611816s
0.0058901309967041s
等価演算子
0.0065038204193115s
0.0064949989318848s
0.0064928531646729s
0.006479024887085s
0.0064821243286133s
0.0064840316772461s
0.0064849853515625s
0.006479024887085s
0.0064759254455566s
0.0064809322357178s
クイックソートとかヒープソートでベンチした方が良いかもしれないけど一応ソース。 単にランダムな数を生成して比較するだけ function test_a(){ $time = microtime(true); $tmp = array(0,0); for($i = 0 ; $i < 10000 ; $i++){ $rand = rand(0,100); if($rand === 0){$tmp[0]++;} if($rand === 1){$tmp[1]++;} } return microtime(true) - $time; } function test_b(){ $time = microtime(true); $tmp = array(0,0); for($i = 0 ; $i < 10000 ; $i++){ $rand = rand(0,100); if($rand == 0){$tmp[0]++;} if($rand == 1){$tmp[1]++;} } return microtime(true) - $time; } /*ループ*/ echo "<strong>厳密等価演算子</strong><br />"; for($i=0;$i<10;$i++){ echo test_a()."s <br />"; } echo "<strong>等価演算子</strong><br />"; for($i=0;$i<10;$i++){ echo test_b()."s <br />"; }
最適化のために1=="1"のところまで厳密にするとパスできないので 文字列1をintにキャストした後に厳密比較をしてみた結果もついでにたのむ
>>997 test_a 0.0088441371917725s 0.0088038444519043s 0.0087242126464844s 0.0087590217590332s
test_b 0.0095038414001465s 0.0094480514526367s 0.0093870162963867s 0.0095081329345703s
test_c 0.0095109939575195s 0.0094280242919922s 0.0094559192657471s 0.0094799995422363s
$array = array('0','1','2','3','4','5','6','7','8','9');
function test_a(){//キャストして厳密等価演算
global $array;$time = microtime(true);
$tmp = array(0,0);for($i = 0 ; $i < 10000 ; $i++){
$rand = (int)($array[rand(0,10)]);
if($rand === 0){$tmp[0]++;}
if($rand === 1){$tmp[1]++;}
}
return microtime(true) - $time;
}
function test_b(){//キャストして等価演算
global $array;$time = microtime(true);$tmp = array(0,0);
for($i = 0 ; $i < 10000 ; $i++){
$rand = (int)($array[rand(0,10)]);
if($rand == 0){$tmp[0]++;}
if($rand == 1){$tmp[1]++;}
}
return microtime(true) - $time;
}
function test_c(){//キャストせず等価演算
global $array;$time = microtime(true);
$tmp = array(0,0);for($i = 0 ; $i < 10000 ; $i++){
$rand = $array[rand(0,10)];
if($rand == 0){$tmp[0]++;}
if($rand == 1){$tmp[1]++;}
}
return microtime(true) - $time;
}
999
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。