【PHP】質問スレッドpart23【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/10/05 17:36:38ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0052nobodyさん
04/10/06 18:05:15ID:???この流れ見たら>>46があなたじゃないのはわかるから、安心汁。
Web制作板のCGI探しスレに、いまは依頼者叩き・回答者叩きの両方が
棲みついてて荒んでるから気をつけてね。
0054nobodyさん
04/10/06 22:27:31ID:???0055nobodyさん
04/10/06 22:33:23ID:???0057nobodyさん
04/10/06 22:45:24ID:???0059nobodyさん
04/10/06 22:53:32ID:???PHP4とPHP5がよく似た別の言語みたいに言うのは止めてくれw
しかもなんでいまさらその質問
下位互換確保されまくり。いっそ全部整理しなおせよといいたいくらい
>PHP4とPHP5ってそんなに互換性ないの?
けど最近5で書くのになれつつあるのか、4ではどうだっけとなることがある
エラーと例外をスタティックにしようと思ってパブリックなプロパティを作ってたら、lintした時すげー怒られたりとか
こればかりは自分がやらにゃどうにもならんのですけどね
>>58
AはBに互換性があるけど、BはAに互換性がないってことが言いたいんでそ。phpで言うと、
4のソースは結構5で動くけど、5のソースは4じゃ動かないよってことだと思われ
おい、ちょっと待て。それは当たり前だ!!
0060nobodyさん
04/10/06 23:01:44ID:???PHP4とPHP5は互換性がないの?
⇒ YesかつNo
PHP4はPHP5と互換性がないの?
⇒ No
PHP5はPHP4と互換性がないの?
⇒ Yes
これでいい?
程度問題だけど、4のソースは大抵そのまま動いちゃう。
>>59
> いっそ全部整理しなおせよといいたいくらい
正直OOP周り、Zendエンジンのレストアと中の人のことだから、派手な印象はなかったねえ。
中途半端感ただよう4系に比べれば設計は楽できるようになったと思う。
0061nobodyさん
04/10/06 23:06:34ID:???0062nobodyさん
04/10/06 23:08:24ID:???手続き型で書いてる分には4も5も気にする必要はないな。どっちでも大抵動く。
PHPは突然変異的には変わらんのだが、いつもちょっとずつ変更来るんだよなあ。
メジャーバージョンうんぬんよりも枯れてないことのほうが遥かに手がかかる点だと思うのだが。
006563
04/10/06 23:14:18ID:???0067nobodyさん
04/10/06 23:34:13ID:???$result =& $db->query($sql);
$result = $db->query($sql);
上の二つはどう違うんですか?
=& ってよく見るんですが、どういった働きなんでしょうか?
だれか教えてー
0068nobodyさん
04/10/06 23:35:58ID:???http://jp.php.net/manual/ja/language.references.php
値をコピーしない時に使う
0069カポコン
04/10/07 03:06:16ID:???まーUMLで継承を汎化っていうのと同じようなもんか
0070カポコン
04/10/07 03:24:05ID:???変数にはポインタ型というものがあります。例えば $a = 255;
と宣言した場合、変数はメモリ上では アドレス:値 の順で保持される。
これに$a =& $b とした場合、$bは$aのアドレスを直接値に持つ変数に
なりますこれをポインタという。図と式で示すとこんな感じ。
変数 = 値 //変数名 アドレス:値
$a = 255; //$a 23400:0xff
$a =& $b //$b 23401:23400
$c =& $b //$c 23402:23401
$bはポインタ型で、$aの'アドレス'を保持しています。
$cもポインタ型で、$bの'アドレス'を保持しています。
ちなみに$cの事をポインタのポインタという言い方をします。
メモリにおける変数の構造が、アドレス:値である以上、
アドレスからその変数を探すのが手っ取り早いのです。
故にポインタ型や参照型を設置して、代入の頻度が高い変数のポインタ変数
を予め用意しておくとCPUが探しやすいんだけど
今はコンパイラやPHPの高バージョンでは、参照渡しって排除の方向だから
余り意識しなくても問題無いだろ、C覚える輩はともかく。
ただ、その分オブジェクト指向は強くなりすぎて参照型までついたらもうPHPは・・・w
0071nobodyさん
04/10/07 03:40:36ID:???自分のtxtに書き込むのはできるか、質問したものです。
勉強しまくって、ようやく取り込んでtxtに書き込みまで出来た。
後は文字列関数使ってなんとかなる見込みたった。
つうかさ、PHPマニュアル見難くて分かりにくすぎ。
色々探したら、もっと分かりやすい所あって
そこ参照してたら、すぐ出来た。
アホな質問をしたなと思ったけど、同時にマニュアルの糞さに腹が立った
0072nobodyさん
04/10/07 03:43:15ID:tqokV3dzなぜかHotmailに送ると迷惑メールフォルダ行き。
factoryはsmtpを指定
同じサーバからsendmailコマンドで送信するとふつーに送れる
ヘッダが悪いのかな〜と思い見てるけどよく分らず。
Message-Idとかがないのが問題なのかな・・・
誰か分る人います?
0073nobodyさん
04/10/07 03:44:28ID:???自分の脳の糞さに腹を立てた方がいい。
0074nobodyさん
04/10/07 03:46:47ID:???0075nobodyさん
04/10/07 03:53:32ID:???例えば、名前の知らない料理を出されて
これをそっくりそのまま作ってくださいと言われて
料理本100冊渡された感じ
何冊目にその料理があるのか、分からずに闇雲にページめくってる感覚に似てる
だんだん流れ読めてきたから、なんとなくあのマニュアルのよさが分かりつつあるけど
それでも無駄が多く感じる。
例えば各関数で使用頻度ベスト10くらいのをあげて
○○ ・・・××するタメのもの
とかにすれば見やすいのに、、、と思った。
0076nobodyさん
04/10/07 04:20:04ID:???> Message-Idとか
シラネ。RFCではつけることになってるからつけて見たら? ついでに他のも色々と。解決したらレポ希望。
>>75
そういうのはチュートリアルね。PHPオフィシャルのは個別の関数リファレンスと言語リファレンスですよ。
最初は、たとえば配列なんかは何にでも使えるのでコンテクストがないと何に使うのかわからねーよって
なりがちなんだよね。71のようにチュートリアル形式で目的別に集められた情報を探すってやりかたはアタリ。
ついでに言うと、関数リファレンスには「イントロダクション」のとこにXXするためのもってズバリ書いてあるよ。
関数の梗概文も基本的に動詞形式になってて、何が出来るのか把握しやすいようになってる。#phpに限らず
使用頻度で分けるのは面白そうだね。人や仕事内容次第だからどうやってレーティングするのか漏れには思
いつかんが、便利そうなので作ってみれ。
0077nobodyさん
04/10/07 04:28:36ID:???0078nobodyさん
04/10/07 04:55:09ID:???みればいいってだけ。チュートリアルが欲しくなったら、主要な関数のとこに一つの関数についてじゃなくて、
その項の関数を色々使った一連の流れを示すサンプルがあることがあるのでそれを探して見るといいよ。
fopenをみてファイルの開き方が分かったら、次は下の方にある関連項目を見てみる。すると、fread()とか
fwrite()なんていうのが見つかるというわけ。例えばだけど>>71のようなことがやりたいなら、http://www.php.net/fread
をみればネットワークに繋いでデータを取り出すまでが書いてあるし、fosockopen()へのリンクも一応ある。
ユーザーの投稿記事も参考になる。
ネットワークに繋ぎたい、ファイルを読みたい、更新状況を知りたい、データを保存したい、みたいにやりたいことを
明確にしておくとマニュアルはかなり引きすくなる。ほんで>>76が言うように、慣れてくると引けるようになってくると
いうのは、どんな手続きをやるのかってのがもうイメージできてるので、それにあった項目を引くだけになってるっ
てことなんだろうね。
手続きがどういう処理単位で書かかれるか分からないころは、まず何を探せばいいのかはっきりしない。だから、
やりたいことにあわせてマニュアルを引くんじゃなくて、まずマニュアルを引いてみてどんな手続きで実現するのか
ってことからやらなきゃいけない。不要な情報も大量に入ってくる。最初はファイルあつかうのにファイルポインタを
ラップしたものを使用するんだなんて想像もつかないしね。
こういうのって誰もがとおる道だと思う。
0079nobodyさん
04/10/07 05:03:07ID:???その通りだと思う
ただ、勉強で初めから分厚い本を選ぶ人はいないのと同じで
基本・中級レベルのをさらっと書いてあるのが好み
1行に効果
2〜5行で用例を載せたのが、頻度順で出てあるのがベスト
それだと、1項目につき5行で済むし。
0080nobodyさん
04/10/07 05:03:21ID:???PEAR MDB_Common::limitQuery()
が動きません。
mixed &limitQuery (string $query, array [$types], integer $from, integer $count)
第2引数の arrayは何を入れるんでつか?
0081nobodyさん
04/10/07 05:06:36ID:???入れてみたらphpMyAdminが問題なく動いてるし
おいらももう全面的に5に旅立ちます
0082nobodyさん
04/10/07 05:11:26ID:???世界のゴミ溜めことhotmailのフィルターは日進月歩だからねえ
ちゃんとした仕様把握してるのはM$とスパム屋だけだったりして
>>78
一応どこの言語のmanも工学的に考えられてて構成は同じだろ
phpが違うのは平易さだろうな。冗長に感じる部分もあるがコトバで説明されてるとことか
ソートやろうと思ったときphpはマニュアルから検索すればすぐにわかるが、
例えば初心者がCでやろうと思ったらどうだろう?
http://www.google.co.jp/search?&q=sort+search.c
0083nobodyさん
04/10/07 05:38:52ID:???動かんって言われてもしらんがな。
$typesとあるようにカラムの型。textとかtimestampとか。
エラー処理に使うだけだろうからSelectなんかとは関係ない。
NULLでいいよ。
0086nobodyさん
04/10/07 05:55:41ID:???読むべきもの・個所を誤るととんでもない時間の無駄になる
0088nobodyさん
04/10/07 07:15:08ID:???0089nobodyさん
04/10/07 07:56:52ID:???上手く使えない俺はプチリファレンスPHP4買って勉強した。
>>85みたいな謗りは免れないけど4.3以降対応なんで重宝したよ。
0090nobodyさん
04/10/07 09:26:47ID:???それぞれ分けて考えたほうがいいよ
皆が言ってる「よくできたマニュアル」はリファレンス。
初学者がよく欲しがるのはチュートリアル。
上で文句言ってる人が欲しがってるのはクックブック。
0091nobodyさん
04/10/07 09:32:39ID:???phpって文字列を数値に変換した場合0になるんじゃなかったっけ?
家の環境(4.3.4)で 'aaa' > 0 は folse になるけど、
レンタルサーバー(4.2.2)では true が返ってくる。
バージョンによって違うの?
0092nobodyさん
04/10/07 10:08:35ID:???0093nobodyさん
04/10/07 11:04:26ID:???$title='メールタイトル';
$content='メール本文';
以上2つの文字コードはEUC-JPです。
これをメール送信したいのです。
はじめそのままmail($e-mail, $title, $content);で送信したのですが、完全に文字化けしていました。
そこで、
$title = mb_convert_encoding($title, "SJIS", "EUC-JP");
$content = mb_convert_encoding($content, "SJIS", "EUC-JP");
として再度行いました。
すると、$contentの方はうまく表示されるのですが、$titleは相変わらず文字化けしたままです。
2つとも文字化けせずにメール送信できる方法がお分かりの方、どうかご教授いただけないでしょうか。
よろしくお願いします。
0097nobodyさん
04/10/07 12:54:04ID:???文字化けするから素直にmb_send_mail使うといいよ。
0098nobodyさん
04/10/07 14:25:31ID:???ereg()で使う正規表現で躓いています
検索したい文字列は\OW\で
$aaa = file ("./xxx.txt");
foreach($aaa as $bbb){
if(ereg("\\OW\\", $bbb)){
echo $bbb ;
echo "<br>";
}
}
上記の様に書いて実行したら
Warning: バックスラッシュの後 in /home/site〜
のようなワーニングが出ていました。
\は文字列として扱うのに\\と書くまではgoogleに教えてもらえたんですが
解決法を教えて下さい
0099nobodyさん
04/10/07 14:48:36ID:???0100nobodyさん
04/10/07 15:08:21ID:???ヒアドキュメントの中で式を評価させる
ことってできますか?
関数を呼び出したいんですが
0103nobodyさん
04/10/07 15:13:15ID:hyBgkm6Mできません
0104nobodyさん
04/10/07 15:20:36ID:???phpのparserが\をエスケープに使うから
>>100
> ヒアドキュメントは、2重引用符を使用しませんが、
> 2重引用符で括られた 文字列と全く同様に動作します。
0105nobodyさん
04/10/07 19:12:49ID:Q6Hyz1yaSQL Server(データベース)自体は自家サーバー上に設置してあり、このデータベースに
レンタルサーバー上にあるPHPページから接続してデータを処理したいのですが、
そもそもこれは可能でしょうか?
PHPマニュアルのサンプルコードを参考に
$conn=odbc_connect("DRIVER=SQL Server;SERVER=".$ser.";UID=".$user.";PWD=".$pass.";
DATABASE=".$db.";Address=".$ser.",1433","","");
という感じで接続を試みているのですが、
「S1090 文字列またはバッファの長さが無効です」というODBCエラーが出ます。
このエラーの意味するところがまた良くわからず閉口してます。
ちなみに自家サーバー上に実際に接続を行うPHPページを置いた場合は接続がうまくいきました。
今までACCESSのmdbファイルにodbc_connect()で直接接続していたのですが、
今回MS SQL Server経由で接続することになったため、そのままなんとかodbc_connect()で
接続しようとしてるんですが、mssql_connect()に切り替えれば済む話なのでしょうか?
どなたかお助け下さい!
0106nobodyさん
04/10/07 19:24:41ID:???そのまんまじゃ先ず無理。
レンタルサーバ屋に設定してもらう必要があるが、
そこまで顧客の要望を受け入れるクラスのサービスを借りてるの?
0107nobodyさん
04/10/07 19:34:54ID:Q6Hyz1ya書き込みありがとうございます。
レンタルサーバー会社にその辺の問い合わせをしてみます。
ちなみに通常、サーバー会社にはどういうことを設定してもらう必要があるんでしょうか??
SQL Serverをインストールしてもらう、とかでしょうか???
0108nobodyさん
04/10/07 20:03:39ID:????Windowsのサーバなの、借りてるのは。
サーバ屋にも、借りてるサービスの内容にもよる。
細かく設定について依頼をしないと駄目な場合と、
借りてるサーバで動いてるPHPから自宅のMS SQL-Serverに
ODBCで繋げたいから、そっち側の基本的な設定やってくれで済む場合もある。
インターネットを経由したリモートのDBMSから情報を引き出すって、
結構高度というかそれなりに必要があってやることだけど
PHPの動いてるWebサーバとDBMS間の通信のセキュリティとか考慮してる?
ただ今借りてるところでMS SQL-Serverが使えないって理由だけなら
使えるようにセットになったWindowsサーバのサービスを借り直した方が良いよ。
0109108
04/10/07 20:10:19ID:???簡単なのは自宅の方にWebサーバを立ててしまうことだ。
外のコンテンツから必要に応じて取り込んでもいいし、
全部自宅から出力してもよい。
0110nobodyさん
04/10/07 20:34:52ID:Q6Hyz1ya>>108
レスありがとうございました!
セキュリティに関しても気にはなっていたのですが、
108さんのおっしゃるように自家サーバーにデータベースに接続するページだけを
置いてレンタルサーバー上の他のページからリンクするようにすれば、
WEBサーバーとDBMS間の通信のセキュリティはとりあえず大丈夫!
ということでしょうか?
いろいろ聞いてすみません。はっきり言ってド素人なもので。。。
0111nobodyさん
04/10/07 20:36:04ID:Q6Hyz1ya108、109さん宛の間違いでした。
0112nobodyさん
04/10/07 20:49:09ID:???0113nobodyさん
04/10/07 20:59:45ID:kpmAjhNuhttp://tatsume.net/123456/
0114nobodyさん
04/10/07 21:07:21ID:???問題は自宅側だろ?
自宅のMS SQL-ServerはちゃんとODBCの外部接続はできるように
してあるんだろうな?
0115nobodyさん
04/10/07 21:25:53ID:???単純に繋ぐとそれもダダもれなんで、自己認証でもいいからHTTPSで喋る
ようにするとか工夫しないと充分とは言えないと思う。
最もセキュリティは扱う情報のレベルの応じて考えるものなんで、
そんなことは不要かもしれないし、そもそもWebサーバから
読めるようにしてはいけないのかも知れない。
ド素人だったら全部込みでセキュリティ関係の設定も
考慮されてるサービス選ぶのが最適解だと思うよ。
共有サーバなんて危なくて使えネェぐらいと言えるぐらいの
知識を付けた賢い客になるべきで、賢い技術者になる必要はない。
0116nobodyさん
04/10/07 21:45:38ID:eGrZpUzkやっぱC言語風に「"」ですか?
0118nobodyさん
04/10/07 21:52:17ID:???>そんなことは不要かもしれないし、そもそもWebサーバから
>読めるようにしてはいけないのかも知れない。
そんなんじゃ、Webアプリの価値なんてなくなるよ。
必要なら、Webサーバ-DBサーバ間を暗号化すればいいじゃない。
まあ、セキュリティのみに関して言えば、共用サーバという時点で
論外だけどな。
0120nobodyさん
04/10/07 22:13:38ID:???いや、Webアプリの価値は開発から運用まで巷のツールなどが利用できること。
そこで言いたいのは、VPNとかの採用を考慮すべきで情報の内容ではないのかってこと。
0122nobodyさん
04/10/07 23:09:19ID:YIBUt39D>必要なら、Webサーバ-DBサーバ間を暗号化すればいいじゃない。
話が高次元になったところですみませんが、この暗号化は実際にはどうすればできますか?
PHPの関数でcryptみたいなものを使うのでしょうか?
サーバーを適切なところに変えるのが一番安全なのかもしれませんが、
理由あって変えないで済むならなんとか方法を探したいと思っており。。。
012398
04/10/07 23:40:46ID:???レスありがとうございました
【php パーサ バックスラッシュ エスケープ】でぐぐったら
http://php.s3.to/man/ref.info.html
がかかりました。
DB側でなくphp側でエスケープ処理がかかってたんですね。
で、
phpinfoのmagic_quotes_gpc,magic_quotes_runtime,magic_quotes_sybase
はLocal、Masterとも全部Offになっていましたが
それでもエスケープしてしまうものでしょうか?
マニュアルはOnの時にエスケープ処理が入るとありましたが
他にも関係する設定箇所があるのでしょうか?
0127nobodyさん
04/10/07 23:57:13ID:???http://pc5.2ch.net/test/read.cgi/php/1095633323/l50
0128118
04/10/08 00:03:08ID:???>105がどういう内容のアプリを作ってるのか知らんから適当に言うが、
VPNは外部公開せずに拠点間をネットワークで繋ぐエクストラネットだろ?
今回はそういう話じゃないと思うんだがな。
VPNの導入だってめんどくさいし。freeのでなけりゃコストもかかるし。
>>122
phpの関数レベルじゃできないと思うよ。
OpenSSL、OpenSSHのSSHポートフォワーディングでいけるが、
共用サーバなので、root権限を使った設定は無理だろうな・・・。
ということで、どこまでのセキュリティを確保したいかで、
変わってくるけど、その共有サーバでは無理かもよ?
0129nobodyさん
04/10/08 00:17:17ID:???本当に理解してないから、すぐ言えないんだよね
感覚でしか覚えてないから。
0130nobodyさん
04/10/08 00:30:25ID:???>>126が正解だけど、使い分けに関しては慣れだね。
俺の場合は連想配列のキーや文字列リテラルは「'」で
シーケルは「"」で括るのが個人的に見やすいと思ってそうしている。
もちろん、改行・インデント・コメントの三大マナーをきっちりやった上でね。
0132nobodyさん
04/10/08 00:57:34ID:???マニュアルも読めないほど日本語不自由な人は別としても。
0133nobodyさん
04/10/08 01:04:06ID:???パパ「百科事典嫁」
↑ドラえもんでのネタ
0134nobodyさん
04/10/08 01:12:58ID:???痛いところを突かれたからって、いちいちレスするな。見苦しい。
熟練者ならどんな些細な質問にも初心者が一番理解しやすい方法で回答できる。
0135nobodyさん
04/10/08 01:13:57ID:???0136nobodyさん
04/10/08 01:15:57ID:???それは君が実装方法を丸暗記しているだけで概念も含めた総論として
その解決方法を理解できていないからではないかね?
0137nobodyさん
04/10/08 01:18:56ID:???この世界には>>136で挙げたような「なんちゃって習得者」がいかに多いことか。
いいかげんPGはコーディングできる技能を"特別な技能"だとする思い上がりを捨てるべきだ。
0138nobodyさん
04/10/08 01:20:10ID:h9hTVebP0139nobodyさん
04/10/08 01:20:57ID:???少なくとも俺は自分のことを"エンジニア"とは称さない。
0140nobodyさん
04/10/08 01:23:57ID:???SEだからね。
0141nobodyさん
04/10/08 02:20:58ID:???それは同意だが、マニュアル嫁はとても良い回答だと思うよ。
俺は家電のマニュアルもちゃんと読む。、
0142nobodyさん
04/10/08 03:12:11ID:Gf9YwG4zいざ出力されたhtmlを見るとげんなりする。
みなさんどうしてますか?
0143nobodyさん
04/10/08 03:14:19ID:???HTMLのインデント?
0144nobodyさん
04/10/08 03:22:19ID:???0145142
04/10/08 03:22:43ID:???0146nobodyさん
04/10/08 03:23:16ID:???0147142
04/10/08 03:26:59ID:???0149nobodyさん
04/10/08 03:35:38ID:???出力されるhtml(と解釈されるテキスト)には、
インデントはおろか改行すら入れないようにしている。
どうせデバッグの時しか見ない、転送量の削減等の理由で
よく動的に生成されるページでコメントとか入っているのがあるが
あれはデザイナ向けか?
0150nobodyさん
04/10/08 03:36:20ID:???0151142
04/10/08 03:38:21ID:???デバッグ終わったら整形してうpすりゃいいってことか。
何もそのまま使うことはないのか…おれの馬鹿
■ このスレッドは過去ログ倉庫に格納されています