【php】part29【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/07/06(水) 09:57:54ID:0DucnAyH・新規質問の方は上げてください。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-10辺り
前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ
0134131
2005/07/22(金) 01:55:28ID:???言語仕様はわからないけど、>123の書き方($をつけて)だと連想配列とみなされてるみたい。
あと配列自体を引用符で囲まないと期待する値が出力された。
$temp[0x010f] = 1 ;
$temp["0x010f"] = 9 ;
echo "$temp[0x010f]"."\n"; # 9 を出力
echo $temp[0x010f] ."\n"; # 1を出力
0135nobodyさん
2005/07/22(金) 02:02:00ID:???PHPの配列は全て連想配列ですよ。
で、配列のキーは型(int, stringなど)を区別するので、
0x010fと"0x010f"は別のキーとして扱われます。
これは、$temp[0]と$temp["0"]とかでも同様。
0137nobodyさん
2005/07/22(金) 02:12:14ID:???>PHPの配列は全て連想配列ですよ。
ここは合ってると思うけど、
>で、配列のキーは型(int, stringなど)を区別するので、
>0x010fと"0x010f"は別のキーとして扱われます。
これは、>>136が正解じゃないかな。
0138nobodyさん
2005/07/22(金) 13:19:17ID:???ttp://ilia.ws/archives/58-Path-Disclosure-and-PHP.html
$_GETをhtmlspecialcharsしている人はご注意を。
Fixされるまでしばらくの間
display_errors = Off
は必須かな?
0139nobodyさん
2005/07/22(金) 14:32:19ID:???へぇー!そんな問題あったとは気付かなかった ORZ
まあリクエストパラメータのバリデーションには通常issetを使うと思うけど、
script.php?name[]=hoge
を故意にやられてしまうと、文字列を引数にとる関数func($_GET['name'])でwarning吐いて、
そこにスクリプトのパスが表示されちゃうって話でしょ?
issetでのチェックだけでは不十分だからis_stringもやるべしって話でまとめちゃまずい?
まー何にせよ、情報�d。
0141nobodyさん
2005/07/22(金) 21:52:42ID:???PHPとフリーDBの勉強をしようと環境を作っているのですが
PHP5からpostgreSQL8にpg_connectで接続しようとすると
エラーになり接続できません
Apacheのエラーファイルを確認すると下記のようなメッセージが出力されています
Selinuxで5432ポートも空けていますし、postgresql.confのlisten_addressも*にしてます
pg_hba.confも問題無い様で、Windowsのpsql,pgAdminからも接続できています。
もちろん、pgsql.iniにてpgsql.soも設定してます
いろいろ調べたんですが、解決策が見つからず困ってます
他にチェックする所があるとか解決事例がありましたら教えてください
よろしくお願いします
記述コマンド
$pg_con=pg_connect( "host=192.168.0.200 dbname=mis-db")
PHP Warning: pg_connect() [<a href='function.pg-connect'>function.pg-connect</a>]:
Unable to connect to PostgreSQL server:
could not connect to server:
Permission denied\n\tIs the server running on host "192.168.0.200"
and accepting\n\tTCP/IP connections on port 5432?
環境:
OS : FedoraCore4
DB : PostgreSQL8.0.3
Script: PHP5.0.4
Web : Apache2.0
0142nobodyさん
2005/07/22(金) 23:04:42ID:???と言われてるんでは?
0143nobodyさん
2005/07/23(土) 23:42:17ID:6cphWLEe0144nobodyさん
2005/07/24(日) 00:09:13ID:9XtCkZCEミスってたようで、改めて確認してみたら接続できました
selinuxが邪魔してたみたいですね
オンにしてどう設定したら接続出来るかいじってみます
0145nobodyさん
2005/07/24(日) 13:54:57ID:???使用中のレンサバでmcryptが使えないようなので、
何か手ごろな可逆暗号化、復号化クラスをご存知ないでしょうか。
あるいはこの用途に使える関数など・・・。
解読されても問題ない内容なので本当に単純な仕組みで構わないです。
0146nobodyさん
2005/07/24(日) 14:24:02ID:???セッション使えば送信されるのはセッションIDだけだし解読もクソもないかと。
いや、クッキーをわかりにくくする必要あるのか疑問だけど、
解読されてもいい(?)ってなら文字列を逆順にするとか・・・
っていうか解読されてもいいのにわかりにくくするの??
0147nobodyさん
2005/07/24(日) 14:35:04ID:???md5()でいいんじゃないの?
複合できないけど、生成された文字列をキーとして処理したらいいのではないかと。
$key = md5(time());
とかやると、こんな感じの文字列ができる。
763d2c1cc3a1368d05eb0b835b3fcea3
サーバ側に上記の文字列と同じファイル名でファイルを作成して、保存しておきたい内容を保存。
クライアント側には、上記の文字列のみをクッキーに保存。
で、クライアントがアクセスしてきたときに上記の文字列をクッキーから取り出し、
サーバ側に同じファイル名が存在すれば、ファイルを読み込んでデータを取り出す。
0148nobodyさん
2005/07/24(日) 14:50:28ID:???考えてみるとセッション使うのが一番無難な気がしてきました。
今はセッションを使う代わりにIPとIDを元に暗号化した文字列とIDをクッキーに保存して
認証に使っています・・。
簡単なページではIPとIDのみで照合して、重要なページではDB使って照合を。
IDその他がクッキーにそのまま載るのが何となく気になりだしたので暗号化して
全体を分かり難くできないかと思いこんな質問になりました。
>>147
説明不足ですんません。今使ってるのがその方法と似た感じですね。
0149nobodyさん
2005/07/24(日) 21:41:12ID:???対処するには実際どうすべきなのかしら。
if(!array_key_exists("hoge",$_GET) or !is_string($_GET["hoge"])) die("まともな値をよこせやボケ");
$huga = $_GET["hoge"];
とでもやって、文字列値では無い $_GET["hoge"] を排除すべきか、それとも
if(!array_key_exists("hoge",$_GET)) die("値をセットしろやボケ");
$huga = (string)$_GET["hoge"];
という風に、どんな値が来ても強制的に文字列値としてしまうべきか。誰か、
ヒマなら答えて頂戴。問題が無いなら、後者の方が対処し易そうなのだわ。
0150nobodyさん
2005/07/25(月) 01:16:06ID:???>138の一番の問題は不正なリクエストをされた際に、エラーが起こる事によって、
エラーメッセージでシステムパスがばれる事にある。
よって、display_errors = Off が現時点でもっとも確実な且つ有効な対処法。
自分が意図しない不正なリクエストにまできちんと処理を返す必要はないと考える。
(自分のボケで不正リクエストになるような場合は首を括る)
0151149
2005/07/25(月) 04:01:18ID:???レスありがと。
>自分が意図しない不正なリクエストにまできちんと処理を返す必要はないと考える。
>(自分のボケで不正リクエストになるような場合は首を括る)
これを読んで、少し気が楽になれたのだわ。そういえば今までは「きちんと処理
を返す」事以外は意識もしなかったわ。あまり厳密にし過ぎる事も無いのかしら。
でも、ごめんなさい。スルーされたかと思って、もう既に対象スクリプトの
修正対象箇所は全て !is_string 判定を追加しちゃった後なのだわ。もう少し
早く、レスに気付くべきだったわ。
ああ。。もうすぐ cron.daily の時間ね。この辺で失礼するのだわ。
0152nobodyさん
2005/07/25(月) 13:16:43ID:???0153nobodyさん
2005/07/25(月) 14:15:47ID:???0154nobodyさん
2005/07/25(月) 15:47:31ID:???0155IEXPLORE.EXE
2005/07/25(月) 16:31:13ID:???0157nobodyさん
2005/07/25(月) 19:11:15ID:???デスクトップが青一色だ
0159nobodyさん
2005/07/25(月) 22:33:16ID:???0161nobodyさん
2005/07/26(火) 19:55:31ID:???ネットワークドライブ上のファイルを開くのに失敗してしまうのですが、
解決策しりませんか?
これ
ns1.php.gr.jp/pipermail/php-users/2002-February/005175.html
とおなじ問題っぽいですが、解決策が見つかりません。
<?php
// ローカルドライブOK。
fopen( "E:\\test.php","r" );
// ネットワークドライブ、ダメ。
fopen( "T:\\test.php","r" );
?>
Warning: fopen(T:\test.php): failed to open stream: No such file or directory
0162161
2005/07/26(火) 19:56:19ID:mQBqjAPV0163nobodyさん
2005/07/27(水) 11:17:28ID:???0166nobodyさん
2005/07/28(木) 11:25:58ID:???if($hoge)とif(isset($hoge))はどちらとも同じ動きをしますが、
どちらを使った方がよいのでしょうか?
0167nobodyさん
2005/07/28(木) 11:28:54ID:???0168nobodyさん
2005/07/28(木) 11:31:54ID:???if(isset($a)) echo 'isset';
if($a) echo 'boolean';
ナイス・ジョーク!!HAHAHA
0170nobodyさん
2005/07/28(木) 12:29:35ID:???$a = $b
}
if($a) $a = $b
上記のように{}で囲まないのと囲むのでは何か違いが有るんですか?
0171nobodyさん
2005/07/28(木) 13:06:53ID:3SB2huz60174nobodyさん
2005/07/28(木) 13:52:11ID:???別に単文に付けていても問題はないんで、わざわざ外すことはないんだけど。
この辺りは宗教論争になっちゃうので、どちらがいいとは言えないんだが、
ifの中にデバッグ目的でecho等を挿入するときに便利なので、単文でも
付けるようにしている。
0175nobodyさん
2005/07/28(木) 13:55:05ID:???if(〜)
if(〜)
method()
てな感じだと分かり辛いから、オイラは単文でも{ }を付けちゃうな。
0176nobodyさん
2005/07/28(木) 14:32:02ID:???そこらへんは宗教戦争にもなりかねんし。
俺はバグテストでecho()追加したりしたときに{}付け忘れると嫌なので前もって{}つけるな。
0178nobodyさん
2005/07/28(木) 16:25:36ID:3SB2huz6俺は威嚇テストでミサイル追加したりしたときにテポドン付け忘れると嫌なので前もってスカッドミサイルつけるな。
0179nobodyさん
2005/07/29(金) 10:38:18ID:XelBBjlr自分の環境でphpinfo()項目のdbaのSupported handlersで、使用できるDBAハンドラを確認した所、
cdb
cdb
make
db3
inifile
flatfile
が使用できるようでした。
例えばレンタルのサーバーで動かすことを考えた時、どのハンドラを使用するのが
汎用性の高いものとなるのでしょうか?そのあたりの事情に詳しい方いましたらご教授ください。
■PHP マニュアル DBA
http://php.s3.to/man/ref.dba.html
0180nobodyさん
2005/07/29(金) 17:29:32ID:???それともPHPスクリプトの使い回しの話かな?
dbmなんて、アプリ埋め込みにしか使わない代物だから、
ぶっちゃけ汎用性なんて必要ない気がするけど。
0181nobodyさん
2005/07/29(金) 19:04:09ID:XelBBjlrありがとうございます。
ハンドラによってはレンタルサーバーに入ってない物もあると思いまして、
なるべく多くのサーバーでサポートされているハンドラを使いたかった訳です。
しかしながら、dbm試してみたのですが、挙動がよく分からない部分が多々あり、
結局はdbmライクなファイルクラスを自作してしまいました。お騒がせしました。
0182nobodyさん
2005/07/30(土) 20:51:28ID:knyULaEMrequire_once("../temp.php");
ようにやって、上の階層のファイルを呼び出したいのですが
うまくいきませんでした。
phpではどのように記述すれば良いのでしょうか?
0183nobodyさん
2005/07/30(土) 22:23:58ID:???指定はそれで合ってる。
・include pathの設定でカレントディレクトリが含まれていない。
・該当ディレクトリへのアクセスがPHPの設定で禁止。
・喪前の勘違い。
0185↑
2005/07/30(土) 23:05:19ID:???もうできたからいいけど
0186nobodyさん
2005/07/30(土) 23:09:21ID:???| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0187nobodyさん
2005/07/30(土) 23:50:36ID:???0188nobodyさん
2005/07/31(日) 00:45:16ID:4+E/wjls[s2] fedora core3/utf-8/apache2/php5.0.4
ログファイル・html出力・スクリプトのファイル、共にeuc-jp
ログファイルの中身--------------------------
1,あ,111
2,か,222
3,sa,333
php.ini--------------------------------------
mbstring.detect_order:no value
mbstring.encoding_translation:Off
mbstring.func_overload:0
mbstring.http_input:auto
mbstring.http_output:EUC-JP
mbstring.internal_encoding:EUC-JP
mbstring.language:Japanese
mbstring.substitute_character:no value
[s1]では問題ないけど[s2]ではfgetcsv で ログファイルを開くと、分割は正常にできてるけど、日本語が表示されない。
|-----------
| 1 | | 111
|-----------
| 2 | | 222
|-----------
| 3 | sa | 333
|-----------
explodeで回避はできたんですが、これってバグですか?それとも設定とか("つけるとか)の問題ですか?
0189nobodyさん
2005/07/31(日) 01:10:36ID:ktRqZs9f「僕は馬鹿で貧乏です」ってアピールしてるようなもんじゃんW
0190nobodyさん
2005/07/31(日) 08:50:04ID:QgIzX2jSそもそもさ、なんでPHPなんて使ってんの?って、わざわざ書き込みしてんの?
「僕は馬鹿で低能です」ってアピールしてるようなもんじゃんW
0191nobodyさん
2005/07/31(日) 09:02:41ID:???同感なのだが、
”そもそもさ、「なんでPHPなんて使ってんの?って、わざわざ書き込みしてんの?」
って、わざわざ書き込みしてんの?”
とやりたくなった僕は馬鹿で低能かもしれません。
0192nobodyさん
2005/07/31(日) 09:26:49ID:???0194nobodyさん
2005/07/31(日) 12:01:01ID:???0195nobodyさん
2005/07/31(日) 12:20:40ID:???0196nobodyさん
2005/07/31(日) 13:13:52ID:kiEZ3GHA0198nobodyさん
2005/08/01(月) 08:38:24ID:???やっぱ本か?
0199nobodyさん
2005/08/01(月) 09:20:07ID:???0200nobodyさん
2005/08/01(月) 09:21:54ID:???0202nobodyさん
2005/08/01(月) 09:28:14ID:???0203nobodyさん
2005/08/01(月) 09:28:55ID:W+K0FGe80204nobodyさん
2005/08/01(月) 09:35:26ID:???本を買うより新しい情報を得られるネットの方が良い感じ。
php入門系のサイトは沢山あるしね。
0205nobodyさん
2005/08/01(月) 09:39:10ID:???0206nobodyさん
2005/08/01(月) 10:05:46ID:mZBBp/SZネットの情報っていい加減なことが多いから、
マニュアル以外、使い物になりません。
PHP は特にイタイサイトが多すぎ。
0208nobodyさん
2005/08/01(月) 10:13:48ID:???0209nobodyさん
2005/08/01(月) 10:15:16ID:???0210nobodyさん
2005/08/01(月) 10:28:43ID:???そうか?
俺の本購入暦
php4+mysql本>php5登場>php5+mysqlサンプル集購入>PEAR?SMARTY?>SMARTY本購入
みたいな。特にSMARTYは理解してないと最悪ソース読めないもん。
0211nobodyさん
2005/08/01(月) 10:33:07ID:???画面をずっと見てると目がしょぼしょぼする。
0212nobodyさん
2005/08/01(月) 11:13:25ID:???0213nobodyさん
2005/08/01(月) 11:26:06ID:???俺も初めはとっかかりとして初心者向けの本なりサイトなりを参考にしたよ。
0214nobodyさん
2005/08/01(月) 12:17:40ID:39k1+tgV管理人14歳
0215nobodyさん
2005/08/01(月) 12:34:28ID:Zfu0t8jaわざわざ宣伝しに来るな。
0216質問します
2005/08/01(月) 13:43:08ID:avDbJoF4画像アップ掲示板に来て書籍付属のソースコードで試しても文字化けして
つまづいてます。
アップ先のサーバ環境はApache/2.0.54 (FreeBSD) PHP/5.0.3です。
分かる方いましたら教えて頂けないでしょうか お願いします
これがソースコードのファイルです
http://ranobe.sakuratan.com/up/updata/up48980.zip
0217nobodyさん
2005/08/01(月) 14:13:54ID:ez5cOkguflock処理に関して
LOCK_EX,LOCK_SH,LOCK_UN はサポートされていれば TRUE しか返さない。
要求が通るまで処理は中断する。
LOCK_SH は LOCK_EX が要求された段階で新たな要求は通らなくなる。
LOCK_NBと第三引数(WouldBlock)
要求が通らなくても FALSE で制御を戻す。
この際、WouldBlock は FALSE だが、要求が通った段階で TRUE に変わる。
バッファリング
lock権解放前にファイル書込を終了せねばならない。
バッファサイズ0にする方法は1度のシステムコールで書込が終わる状況ならばパフォーマンスの低下を招かない。
一般的にはバッファリング有で fflush する方が楽。
fopen
flock が必要な状況で 'w','w+' は鬼門。lock権確立前にファイルサイズが0にされる。
'r','r+'は存在が確実なファイルで使う。file_existsで確認後に使うのはNG。その一瞬で過去の情報になる恐れあり。
rewind と fseek
SEEK_CUR,SEEK_END はlock権確立後に使わないと過去の情報になる恐れあり。
SEEK_SET,rewind は過去の情報でも問題ないのでlock権確立前で構わない。
flock と pid
lock権の管理にはpidが使われる。
同一pidの他スレッドが要求したlock権との区別はされない。
0218nobodyさん
2005/08/01(月) 14:19:28ID:W+K0FGe8「10日でおぼえるPHP入門教室」こんなのにします。
以上。
0219nobodyさん
2005/08/01(月) 14:37:34ID:???斜め読みだけど、03-03.phpの16行目と17行目はおかしいと思われ。
> $BBSRecord = array( date( "Y/m/d H:i:s" ), $name, $body, $FilePath );
> AppendCsvToFile( BBS_DATA, array( $BBSRecord ) );
arrayし杉。17行目の2つ目の引数は$BBSRecordだけでいいんじゃないかと。
漏れは動かしてないが、動かしたらちゃんとエラーメッセージでるんじゃないの?
0220216
2005/08/01(月) 14:48:07ID:???エラーメッセージなしでちゃんと動くんですが文字化けします
ブラウザの文字コードをeuc-jpとs-jisにしても両方とも
文字化けしてしまう現象です
0222nobodyさん
2005/08/01(月) 23:54:38ID:v8DZZv2UIE6でクッキー有効になってます。試しに他のPCからテストしても同じでした。
a.php
<?php
session_start();
echo ''.$_SESSION['test'].'<br><a href="b.php?a=aaa">test</a>';
b.php
<?php
session_start();
$_session['test'] .= $_GET['a'];
header("Location:a.php");
exit();
試したスクリプトです。?PHPSESSID=としてセッションIDをつけると期待どおりの動作をします。
どこかおかしいとこありましたらよろしくおねがいします
0223222
2005/08/02(火) 00:19:41ID:???php.iniのどのへんの設定をいじるといいんでしょう?
デフォルトの設定ではできないものでしょうか?
0224nobodyさん
2005/08/02(火) 00:20:19ID:???0225nobodyさん
2005/08/02(火) 00:23:58ID:???デフォルトでいけたと思うけど。。。
php.iniでsession.use_cookies=1となっていないのかな。
もしくはスクリプトで以下のように書いてみては。
ini_set('session.use_cookies', true);
session_start();
・・・
0226222
2005/08/02(火) 00:38:23ID:tr08P2cl>>225 試してみたのですがやはり同じでした。
その他cookieができない原因になりうることはあるでしょうか?
0227222
2005/08/02(火) 02:00:01ID:???レンタルサーバーで試したところ問題なくできてました。
サーバーの問題だと思うのですが、どこが悪いんでしょう?
自分でも調べますが、もし何か気づいた方いましたらよそ行くお願いします。
redhat7.3+apache1.3.23+php4.3です
0228nobodyさん
2005/08/02(火) 02:14:04ID:???ちゃんと保存されなくてめっさ悩んだ覚えが
0229222
2005/08/02(火) 02:20:20ID:???http://user.domain.com/a.php NG
http://192.168.0.10/~user/a.php ローカルIPでのアクセスok
http://sv1/~user/a.php ローカルのホスト名でのアクセスok
バーチャルドメインでのアクセスだけ不具合が出てます。
バーチャルドメインだとcookie発行するのに特別な設定が必要なのでしょうか?
0230222
2005/08/02(火) 02:31:43ID:???http://domain.com/~user/a.php はokです。
バーチャルドメインではなくバーチャルホストでした。
バーチャルホストのアクセス時に限って起こるっているみたいです。
PHPの話じゃなくなってきましたね。。
0231nobodyさん
2005/08/02(火) 02:36:18ID:???>fopen
> flock が必要な状況で 'w','w+' は鬼門。lock権確立前にファイルサイズが0にされる。
そうなの?そうすると、厳密には、w,w+はflockで使えないってこと?
0232nobodyさん
2005/08/02(火) 02:38:28ID:???そういや俺も、IEだと保存するけど、Firefoxだと保存しないってのがある。
Firefoxだけ有効期限が効かない。ブラウザを開いている間は大丈夫なんだが、
閉じると忘れる。調べりゃ出てきそうなんだが、調べもせずに放置中。
>>229
ノートンとかのセキュリティソフト関係で弾いちゃっているとか。
ネットワーク構成がわからないのだけど、ドメインを正引きしたときのIPアドレスと
LAN内でIPアドレスが食い違っているとかなんとか...
■ このスレッドは過去ログ倉庫に格納されています