【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
0103nobodyさん
2005/07/19(火) 02:57:47ID:???ブラウザに出力させる時、直接バイナリデータを出力する場合、「echo」でいいのでしょうか?
DL等は普通に出来、ファイルも壊れては居ないんですが、元のファイルとMD5が一致しなくて悩んでいます。
同じデータをファイルに出力した場合、MD5が一致するので、ブラウザに出力した時に
なにか余計なものが混じっているんだと思います。
原因がわかる方いたらご指南ください。
0104nobodyさん
2005/07/19(火) 03:03:55ID:???ごめんなさい!
010598
2005/07/19(火) 23:03:38ID:???PHPのexif_read_data()に対応していない気が・・・
読んでる最中にプログラムが固まってそれ以降が表示されなく
なってしまいます。
直接バイトを指定して値を読み込ませないとダメですかね?
010798
2005/07/20(水) 12:37:22ID:???ttp://aki.adam.ne.jp/
ここのDezi Boardにexifを読む関数を自作されてる人がいました。
0109質問
2005/07/20(水) 22:56:51ID:???■■■■■■■
■■■■■■■
■■□□□□□
■■□□□□□
■■□□□□□
■■□□□□□
■■□□□□□
■■□□□□□
■■■■■■■
■■■■■■■
↑のようなレイアウトのホームページを作りたいと思います。
全体はHTMLで構成されていますが、
□はxxxx.phpで表示します。
□は固定では無く、縦方向に長くなったり短くなったりします。
それを実行しようと □の部分に
<!--#include virtual="xxxx.php" -->
と書いたのですがうまくいきませんでした。
以上の事を実行するにはどのようにしたら良いのでしょうか?
0110nobodyさん
2005/07/20(水) 23:03:33ID:???先にHTMLの勉強して来い
0111nobodyさん
2005/07/21(木) 00:58:56ID:zkn/ba81「うまくいかなかった」
とはどのようにうまくいかなかったのかを具体的に書かないと何も分からない。
そもそも virtual には対応してるの?
virtual が使えない設定の鯖も結構あるが。
0112nobodyさん
2005/07/21(木) 12:48:51ID:2O2ppr6p-------------
<html>
<body>
〜HTML記述〜
<?php
〜phpプログラム(100行くらい)〜
?>
</body>
</html>
-------------
これを、下のように1つはHTML、もう1つはPHPプログラムの2つのプログラムに分けようと思います。
-------------
---(index.php)---
<html>
<body>
〜HTML記述〜
<?php
〜hoge.php読み込み(なるべく短く)〜
?>
</body>
</html>
-------------
---(hoge.php)---
<?php
〜phpプログラム(100行くらい)〜
?>
-------------
〜hoge.php読み込み(なるべく短く)〜の部分にはどのような記述をすればよいでしょうか。
またその際に(hoge.php)を書き換える必要はあるのでしょうか。
0113nobodyさん
2005/07/21(木) 13:11:29ID:QJOhteRKincludeで調べてみ
0115112
2005/07/21(木) 15:15:30ID:2O2ppr6p<?php include 'hoge.php'; ?>
と書くことでうまくいきました。ありがとうございました。
追加で質問で申し訳ないのですが、112のindex.phpの拡張子をindex.htmlにした場合は、どのようにしたら良いでしょうか?
0120nobodyさん
2005/07/21(木) 23:57:28ID:OPf2mV1L�@九九表
�A2次方程式の解 ax2+bx+c=0
0121nobodyさん
2005/07/22(金) 00:09:46ID:???えーっ!?
for ($i = 1; $i <= 9; $i ++)
{
for ($j = 1; $j <= 9; $j ++)
printf("%3d", $i * $j);
echo "\n";
}
$d = $b * $b - 4 * $a * $c;
if ($d == 0)
echo -$b / (2 * $a), "\n";
else if ($d > 0)
echo (-$b + sqrt($d)) / (2 * $a), ", ", (-$b - sqrt($d)) / (2 * $a), "\n";
else
echo "解なし\n";
0122nobodyさん
2005/07/22(金) 00:50:13ID:1VklDg1R0123nobodyさん
2005/07/22(金) 00:56:19ID:ubHtE5eN例) $temp[0x010f] = 1
この配列をechoで表示させようとして
echo "temp[0x010f]";
とやったんですがうまく表示されませんでした。
キーの16進数を10進数に変換すれば
echo "temp[271]"; //10fの10進数表記は271
正常に表示されました。
なんとかキーは16進数のままechoで表示させることはできないでしょうか?
0124nobodyさん
2005/07/22(金) 00:57:18ID:1VklDg1Rおねげーします。
0125nobodyさん
2005/07/22(金) 01:03:41ID:???0126nobodyさん
2005/07/22(金) 01:05:41ID:1VklDg1R0127nobodyさん
2005/07/22(金) 01:10:58ID:???えーっ!?
<pre>
<form action="<?=$_SERVER['PHP_SELF']?>" method="GET">
a = <input type="text" name="a" value="<?=@$_GET['a']?>">
b = <input type="text" name="b" value="<?=@$_GET['b']?>">
c = <input type="text" name="c" value="<?=@$_GET['c']?>">
<input type="submit" value="OK">
</form>
<?php
if (isset($_GET['a']) && isset($_GET['b']) && isset($_GET['c']))
{
$a = $_GET['a']; $b = $_GET['b']; $c = $_GET['c'];
$d = $b * $b - 4 * $a * $c;
if ($d == 0)
echo -$b / (2 * $a), "\n";
else if ($d > 0)
echo (-$b + sqrt($d)) / (2 * $a), ", ", (-$b - sqrt($d)) / (2 * $a), "\n";
else
echo "解なし\n";
}
?>
</pre>
0128123
2005/07/22(金) 01:12:46ID:???echo "{$temp[0x10f]}"
のように{}で囲ったら正常に表示されました。
(´-`).。oO(なんでだろう・・・)
0129nobodyさん
2005/07/22(金) 01:17:26ID:1VklDg1R0131nobodyさん
2005/07/22(金) 01:24:26ID:???>123だと配列に”$”ついてないからじゃないの?
echo "temp[0x010f]";
echo "temp[271]";
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:???■ このスレッドは過去ログ倉庫に格納されています