トップページ⇒php
1001コメント289KB

【PHP】質問スレッドpart22【php】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん04/09/16 18:17:37ID:/HV017tY
・PHP全般の質問スレです。
・新規質問の方は上げてください。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
0821nobodyさん04/10/02 13:32:37ID:XE0I1+gL
PHPにてユーザー認証のあるwebサイト(YAhoo等)の
認証後に表示されるデータなどを取得したいのですが
どうすればよいのでしょうか?
当然、ユーザー名やパスワードは自分のものを使ってです。
0822nobodyさん04/10/02 13:46:39ID:???
>>821
どうすればいいって・・・とりあえず自分でやってみれ。
HTMLを読んでAction属性で指定されたドキュメントに必要な値をPOSTすればいい。
書式は認証機構による。初心者はブラウザのHTTPリクエストとレスポンスを
横取ってながめてみるといい、というあたりが一般常識かな。
0823nobodyさん04/10/02 13:55:44ID:???
>>821
認証がBASIC認証だったら、それに対応したHTTPクライアントライブラリを利用する。
認証フォームを使ってPOSTで送ってるタイプの認証も同様にPOST送信が可能なライブラリを利用。
どちらもPEARにある。また他にも公開されてるライブラリがある。

自分でSOCKET通信しても良いと思うけど、既に有用なライブラリがあるんだから
それ使うのが良いでしょうな。

他には外部の対応しているプログラム(例えばwget)を利用する手もある。
0824nobodyさん04/10/02 14:05:29ID:???
漏れはpearのじゃなく でつ 使ってる。思いっきりなネーミングが好きだw
http://sourceforge.net/projects/snoopy/

あと、最初は全部自分で書いてみた方がいいね。コーディング量もたいしたこと無い。
エラー処理が必要な個所や、とくにHTTP/1.1の決まりごとはざっと知っておく必要がある。
Socket関数は無理だろうから、fsockopenかstream_socket_clientを使って。
0825nobodyさん04/10/02 14:22:25ID:???
せっかくPHPなんだからどのみちソケット関数はないだろう
まずはfsockopenのサンプル使ってPOSTを成功させてみるところからじゃないの
0826nobodyさん04/10/02 14:22:55ID:???
A
<?php
$a = "abc";
if (ereg($a, abcdef)) {
echo "1";
}
?>

B
<?php
if (ereg("abc", abcdef)) {
echo "1";
}
?>

AとBは、目に見える結果としては同じになると思うのですが
実行速度やメモリ使用量などの観点から見ると
どちらのほうがメリットが大きいのでしょうか?
それともまったく変わらないのでしょうか?ご教授ください。
0827nobodyさん04/10/02 14:40:00ID:???
A, Bともに未定義の定数abcdefが存在するためエラー処理のロスがある。
A, Bともにダブルクウォートを使用しているためパースされるロスがある
Bは変数に代入してい分早くメモリ消費も少ない

以上はマニュアルと常識的な思考ができれば自明。
A, Bの差異はエラーを除いて誤差の範囲であり、実際上無意味なので気にするのはナンセンス。
初心者ほど速度や負荷ネタで盛り上がるが、答える方は無意味な質問に答えされられるため
大変うざったく死んでほしいといつも願っている。
0828nobodyさん04/10/02 14:44:19ID:???
速度比較するならベンチ取るぐらいしてから聞けよ。
早い糞コードより読みやすく移植性の高いコードを書けよ。
毎度毎度毎度同じ回答で申し訳ないとは思うがね。
0829nobodyさん04/10/02 14:45:40ID:???
>>824
でつって商標登録されてんだろうと思ってたが、、、。
大丈夫なのかw
0830nobodyさん04/10/02 14:49:21ID:???
>>827
おおかた自分が予想していたとおりの答えが得られて満足しました。
どうもありがとうございました。
0831nobodyさん04/10/02 14:51:28ID:???
そういや正規表現はPosixよりPCREのほうが早いって書いてあったけど、あれどうなったん?
別ライブラリつかってるままなんだっけ?
083282704/10/02 14:52:48ID:???
>>830
このソースならstrstrを使え、というのもあるがな。
何にしろ腹立たしいアホだ。
0833nobodyさん04/10/02 15:03:18ID:???
>>831
そのままじゃない
どっちもeregだから関係ないけど

ここの質問見てるとereg使ってる人が妙に多いけど、なんの影響だろうね
0834nobodyさん04/10/02 15:05:31ID:???
>>832
なるほど。改良点はたくさんあるわけですね。
勉強になります。
0835nobodyさん04/10/02 15:07:49ID:???
>>831-832微妙にいい人 ( ´_ゝ`)ウフーン
0836nobodyさん04/10/02 15:22:02ID:???
いや俺はホントに腹立ってるんだって。
メモリの使用なんてPHPをソースハック出来るレベルになって初めて分かることだろ。
理由わからずにどっちが速いなんて丸暗記してどうすんの。
正攻法で学べよと思う。
速度にしたってmicrotime()でベンチとればいいだけだし、""のパースとかでかい変数は
参照渡しにするとかDBの正規化とかっていうのはいちいち聞かれてたらたまらんつーの。
基礎の組み合わせなんだから、ベンチやって人のソースを読んでマニュアル読んで少しずつ
分かっていけばいいのにさあ。
やってみて巨大なボトルネックが出来て質問されたなら答える方も挑戦してみようと思うじゃない。
マニュアルに書いて有るようなレベルで速度がどうとか聞かれてもうざいだけだわ。
つーかなんだこの分量バカだろ俺はほんとに
0837nobodyさん04/10/02 15:24:24ID:???
>>836
どこ縦?
0838nobodyさん04/10/02 15:27:00ID:???
>>836
普通の初心者はそういうこと聞かないマナーは心得てるよ
PHPはたまたま池沼がおおいだけだ
あまり気にするな

http://pc5.2ch.net/test/read.cgi/php/1077753522/271-n
気にしちゃだめだぞ
0839nobodyさん04/10/02 15:46:24ID:f1jlg8jO
文字列中の「"」や「\」の前に\を付けて「\"」や「\\」にしたいんですけど、
$changed = preg_replace( "/([\"\\\])/", "\\ \\1", $str );
こうすると「\ "」「\ \」となるんですが、置換文字列のスペースを詰めて
$changed = preg_replace( "/([\"\\\])/", "\\\\1", $str );
とするとうまく行きません。
どうしたら良いでしょうか?
084083904/10/02 15:50:41ID:f1jlg8jO
たぶん、
$changed = preg_replace( array("/\"/", "/\\\/"), array('\"', '\\'), $str );
こんな感じにすれば動作はすると思うんですが、見た目がややこしいのでもっと簡潔に書きたいんです。
どなたかよろしくご教授お願いします。
0841nobodyさん04/10/02 15:50:42ID:???
>>836
たしかにおまいはバカだがいいやつだ。
0842nobodyさん04/10/02 15:53:09ID:???
やってないけど preg_replace('/([\"\\\])/', '\\\\\\1', $str); の間違いじゃないの。
0843nobodyさん04/10/02 15:58:44ID:???
おおスマン。
'/(["\\\])/' か "/([\"\\\])/" どっちかだな。
細かいことは正規表現スレのリンク読めば分かるかな。
# そもそも正規表現の仕事じゃないような気がしないでもないが。
0844nobodyさん04/10/02 16:26:08ID:UuykfYQH
実運用でPHP5使っている方います?
まだ安定性にも不安があるしバージョンアップの間隔も短いので、
やっぱりPHP4で作る方が安心ですよねぇ。
PHP4のクラスは、インスタンスごとにメソッドまで作る(共有しない)らしいので
インスタンスをたくさん作るプログラムはPHP5の方がよさそうですが…
084583904/10/02 16:30:35ID:f1jlg8jO
>>843(842)
ありがとうございます。
ヽ(´▽`)ノ
# それにしても \\\\\1まではやってみたんですが、\6個だったとは...ムズカシイ orz
0846nobodyさん04/10/02 16:30:42ID:???
simpleXMLが使いたかったのでPHP5にしてみた
今はちょっと反省している
0847nobodyさん04/10/02 16:42:00ID:???
リテラル\一個に対して \\\\ ね。参照が \\1 なので計6個。
$1で参照するなら \\\\$1 の4個。
後者推奨とマニュアルにはある。
0848nobodyさん04/10/02 16:45:51ID:???
ねぇねぇ、ダウンロードしてきたPHPマニュアルが
文字化けしてるときはどしたらいいの?
ねぇねぇ
0849nobodyさん04/10/02 16:47:16ID:???
>>848
折角だから文字コードについて学ぶ
0850nobodyさん04/10/02 16:49:20ID:???
>>848
winのchmだろ。散々既出なんで自分で治せ。
0851nobodyさん04/10/02 17:42:51ID:???
質問です。
ファイルへの書き込みで、
ファイルの先頭へ書き込みたいんですが、
うまいやり方がわかりません。
w モードで開いて、新しく全部書き込む方法は
行数が増えた時に負荷も大きくなりそうで心配です。
行数が増えても負荷を小さくして書き込むことはできないでしょうか?
お願いします。
0852nobodyさん04/10/02 17:52:33ID:???
>851
'a' 書きこみのみでオープンします。ファイルポインタをファイルの 終端に置きます。ファイルが存在しない場合には、作成を試みます。
これの意味分かるか?
085385204/10/02 17:53:52ID:???
>851
いや、スマン。
読み間違い。
'x' 書き込みのみでオープンします。ファイルポインタをファイルの先頭に置きます。
こっち。
0854nobodyさん04/10/02 17:57:26ID:???
え、、えっくす




知らなかったよ



どうもありがとう


バカ!
0855nobodyさん04/10/02 17:58:49ID:???
なんだかよく分かりませんが、
どこにファイルポインタを置こうが今回の件に関しては関係無いのではなくって?
085685404/10/02 18:13:02ID:???
xにするとファイルがあった場合WARNINGになってしまうみたいなので、
r+で開いて書き込んでみたんですが、
Windowsでいういわゆる Insertキーを押してある状態みたいに
なってて、
文字が上書きして入力されてしまいます。
書き込んだ文字分だけシフトさせることはできないんでしょうか?
0857nobodyさん04/10/02 18:14:38ID:???
>>856
それを実装するのがあなたの仕事です。
085885404/10/02 18:23:01ID:???
思いつきません(;_;)
0859nobodyさん04/10/02 18:33:16ID:???
一発でどうにかできる関数がなさそうな以上、
自分で組むしかないでしょう

重いかどうかは、実装してからベンチ
086085404/10/02 18:35:16ID:???
見当すらつきません。
やっぱり書き直すしかないのかなあ(;_;
0861nobodyさん04/10/02 18:40:38ID:???
$filename = "hogehoge";
$add = "先頭に付け足すデータ";
$contents = file_get_contents($filename);
file_put_contents($filename, $add . $contents);
086286104/10/02 18:44:03ID:???
・バイナリは未対応
・でかいファイルはどうなるかしらん
・ドキュメント読んだだけなんで動くかどうかはわからん

・ってゆーか、マニュアルくらい嫁
ttp://php.s3.to/man/ref.filesystem.html
>file_get_contents -- ファイルの内容を全て文字列に読み込む
>file_put_contents -- 文字列をファイルに書き込む
086386104/10/02 18:48:03ID:???
>860
あ、そーゆーことか、すまん

書き直すしかないだろう
0864nobodyさん04/10/02 18:52:28ID:???
>>860
そういうことは「出来ない」と諦める手もあるよ。
諦めるレベルに差はあれど、誰しも技術的、経済的な理由等々で諦めてるもんだ。
0865nobodyさん04/10/02 19:04:37ID:vlVC7o1I
.htmlの拡張子に一部分.PHPの拡張子を読み込みさせたいのですが
宜しくお願いします。 
086682104/10/02 19:05:47ID:XE0I1+gL
>>822
ありがとうございます。
とりあえずアドレスにパラメータつけてrequireとかで読み込ませたんですが
”現在お使いのブラウザの設定ではログインできません。
(クッキーを無効にする設定になっています)”
とか表示されてうまく入れませんでした。
PHPの方でクッキーを読ませたりして認証通すことはできるのでしょうか?
0867nobodyさん04/10/02 19:06:25ID:???
>>860
別にちっちゃいファイルなら、簡単にできるけど。
追加する部分を新規ファイルに書く、いままでの部分をその新規ファイルにアペンド
ファイルネームを変更。みたいに。

でもね、これ、極めて馬鹿らしい方法だよ。

例えば、ファイルのありとあらゆる場所に追加するようなのが必要なら、データベース使うとか
双方向リストを持たせた多数のファイルをつくるとか。
追加するのが先頭だけってんなら、逆順に書いて、ファイルの最後尾に追加していくとか。

なんにしても、アルゴリズムが悪すぎると思うよ。
0868nobodyさん04/10/02 19:08:13ID:???
httpd.confの設定で、.htmlでもphpを呼ぶようにしたらどうだ?

っか、質問意図不明杉
0869nobodyさん04/10/02 19:33:08ID:???
>>865
AddType application/x-httpd-php .php .html

これで、.htmlファイルもphpくぐってから出力される
という意味でよいんだな?
0870nobodyさん04/10/02 19:51:12ID:???
>>854
文脈からテキストファイルのようだけど、
書き込み時の負荷だけ下げたいのであれば、ファイル内の文章を逆にして
読むときに逆から読むようにすれば良いのでは?
例)
"World"と書かれたファイルの先頭に"Hello "を挿入したいとする。
元ファイルの内容を"dlroW"にし、末尾に" olleH"を追記する。
読み込み時に逆から読めば"Hello World"と書かれたファイルが出来上がってるという寸法。
087182204/10/02 20:06:12ID:???
>>866
なんか明後日の方向めざしてるね。
他のレスにかいてあるけど、fsockopenのサンプル見た?
HTTPでブラウザが鯖にどうやってリクエストしてるか分かった?

初心者にすすめるべきサイトではないかもしらんが、
http://X68000.q-e-d.net/~68userのHTTPクライアントの項を
眺めて感じをつかんでみたら。これからやらないといかんことは同じだから。

Cookie情報はつまるところHttpヘッダフィールドのテキストなんで、
リクエスト時にいっしょに送信するだけ。ただCookieのOn/Offをどうやって
判定してるかはサイトによるので自分で調べてね。
0872nobodyさん04/10/02 20:18:44ID:???
>>851 以降を読んで...
それを効率よく実装されたものがデータベースとして幅広く使われてるんだけど。
データベース使うほどでもないけど、簡単でより効率のよい実装方法さがしているのであれば、

データファイルをインデックスと実際のデータ部分にわけて、
インデックスは勿論実データへのアドレス参照(tellなどで得られる)と確保したデータ領域の長さを持つ。
データ部分は、パディングをもたせて少し冗長な構成にする。
データを更新する時はseekでそのデータの先頭にポインタをセットし、上書きする。
データがパディングを含めた予め確保した領域の長さを上回るようであれば、
新しいデータ領域をファイル末尾に確保し、インデックスを更新する。
インデックスは更新する必要があるので固定長で。

説明に不備あるかもしれないけど、大筋はこんな感じで。
インデックスと固定長データを使った方法を提案してみる。
利点は用途によってはもっと最適化出来る事。欠点は拡張が難しいこと。
でも、開発/保守コスト考えると素直にDB導入したほうがいいよ。


0873nobodyさん04/10/02 20:19:37ID:???
>>866
GETじゃパラメータ渡らんだろ。そもそもrequireは問題外だし。
鯖にコネクトしてHTTPに則ってPOSTしてみな。
HTTPは解説サイトを見つつ、分からないことがあれば定番のこれで確認。
http://www.mars.dti.ne.jp/~torao/rfc/rfc2068-ja.html
Cookieは認証ページを読んだときに送られてきとるんで、これの値を送り返さないとCookieが
使用できないとみなされログインできないんだろう。
CookieもこまかいことはRFCかネスケの仕様書に書いてある。
0874nobodyさん04/10/02 20:21:37ID:???
。o O (認証にしろHTTPにしろあんまりスレと関係ないなあ)
0875nobodyさん04/10/02 20:21:41ID:???
パケットdumpアプリ使えや。
087685404/10/02 20:28:03ID:???
>>872
こんな詳しく、どうもありがとう!<(._.)>
いやー、難しそうですね。
DB使うほど大げさな物でもないので、
多少の負荷はかえりみずとも
簡単な方法でいこうと思います。

ほんとにどうもありがとう(*´ω`*)
0877nobodyさん04/10/02 20:33:26ID:???
> 初心者にすすめるべきサイトではないかもしらんが

ム板じゃ「問題ありのサイト」なんてリンクされてるが、
最初の一歩としてはお手軽でいいかなとも思う
821のやりたいことならphpマニュアルでことたりるのだろうが
0878nobodyさん04/10/02 21:09:47ID:???
>>875
Mozilla + Live HTTP Headerプラグインがお手軽でお勧め。
(Firefox1.0PRにもいつの間にか対応してたし)
0879nobodyさん04/10/02 21:11:36ID:/4BoaAqc
ブラウザからディレクトリ内のファイルを消すプログラムを作っています。

□ファイル名1
□ファイル名2
…
[削除]

こんな具合にファイル名の横にチェックボックスにチェック
を入れて削除ボタンを押すと消える、という仕組みです。

この場合、formから送った情報を$_POSTで受け取るんですが
チェックが複数だった場合はどうすれば受け取れるでしょうか…?
0880nobodyさん04/10/02 21:16:48ID:???
マニュアルにちらっと書いてあるが、name属性には配列が使える。
name="del_f[]" とすると、$_POST['del_f'] が配列になる。
0881Imo ◆.jC7ANgFY. 04/10/02 21:40:13ID:???
誰も使わないと思いますが置いときますね。
whoisをPHPで実現するサンプルです。

$fp = fsockopen('whois.nic.ad.jp', 43);
fwrite($fp, "php.gr.jp\r\n"); $data = '';
while(!feof($fp) and $dat = fread($fp, 4096))
$data .= $dat; fclose($fp);
echo mb_convert_encoding($data, 'SJIS', 'JIS');
0882nobodyさん04/10/02 21:47:18ID:CVirW+JC
今まで、WoodyでLAPPをしていました。
Woodyですので、PHP4.1.2でした。

この度、「まるごとPHP!」を買って、WoodyにLAMPを導入
する記事を参考に、softagencyからPHP4.3.8をインストール
しました。
しかし、'--without-pgsql'でビルドされているみたい(?)で、
PostgreSQLに接続できなくなりました。

ですが、WoodyのPHP4.1.2も'--without-pgsql'は同じ?
みたいなので、ひょっとして、このPHP4.3.8もなんとか
PostgreSQLに接続する方法がありませんか?
0883Imo ◆.jC7ANgFY. 04/10/02 21:49:39ID:???
誰か使うかもしれないので置いときますね。
httpでのソケットのサンプルです。
# エラーチェックは実装してません

echo http_get('2ch.net', '/');

function http_get($host, $path) {
$fp = fsockopen($host, 80);
fwrite($fp, "GET $path HTTP/1.0\r\n" .
"User-Agent: PHP\r\nReferer: http://$host/\r\n" .
"Host: $host\r\nConnection: close\r\n\r\n");
while(!feof($fp) and $dat = fread($fp, 4096))
$data .= $dat; fclose($fp);
return $data;
}
0884nobodyさん04/10/02 21:50:24ID:???
>>Imo
自分の日記に書いてください
0885 ◆.jC7ANgFY. 04/10/02 22:02:50ID:???
>>884
はぃ、以後そうします。(いつになるかわからないけど
# もう3つぐらい貼り付けようと思っていた
0886nobodyさん04/10/02 22:03:00ID:???
>>882
普通にコンパイルしなおせばいいんでない?
extensionにpgsqlのモジュールもあると思うけど、それを毎回読み込む方向でいけば
再コンパイルせずに使えるかも。
0887nobodyさん04/10/02 23:13:31ID:???
廃棄すれだけどここでやるとか<サンプルコード
http://pc5.2ch.net/test/read.cgi/php/1068190843/l50
0888nobodyさん04/10/02 23:37:00ID:???
888get, zuzaa
0889nobodyさん04/10/02 23:53:03ID:CVirW+JC
>>886
自分でビルドする腕はありません。(汗
Woodyの純正のPHP4にはPHP4-pgsqlというパッケージが
ありました。でも、>882に書いたPHP4.3.8をインストール
するときにREMOVEされてしまいました。
なんか、モジュールがあったんだと思いますが・・・
そのモジュールだけ、作る事って出来ないんでしょうか?
もしくは、どこかから持ってくるとか?
0890nobodyさん04/10/03 00:27:46ID:???
Woodyのパッケージはしらんけど、pgsql.soみたいなdsoはないの?
dl()するかphp.iniでロードするように指定できたと思うんだけどな。
他のパッケージも検索すればあるとは思うよ。MySQL以外のDB使ってる人も多いだろうし。
0891nobodyさん04/10/03 00:46:43ID:???
オフィシャルであるような気がするなあ
野良パッケージにまわされるほどマイナーなのか・・・
0892nobodyさん04/10/03 00:59:30ID:dJZy1DJi
fsockopenのtimeout引数は「接続してからのtimeout時間」
socket_set_timeoutは
「有効なファイルポインタが確保されてからのtimeout時間」
という認識でよいですか?
それでソケット接続までの時間がかかる場合に全体でtimeoutを
設定してエラー処理するにはシグナルほにゃらら(理解していない)で
処理するしか方法はないんでしょうか?
今fsockopenやsocket_set_timeoutを設定して運用してるんですが
接続先のサーバが込み合ってる場合、効果ないようです。
0893nobodyさん04/10/03 01:58:38ID:n1LZAPOp
>>891
woodyのが古杉
sargeのPHP4.3.8は依存関係の問題でwoodyには
入れられませんでした。
本で紹介されてたのはwoody用にビルドされた物で
よさげでしたが・・・pgsqlが無いのが残念
0894nobodyさん04/10/03 03:08:58ID:???
Woodyって何ですか?
0895nobodyさん04/10/03 03:20:55ID:???
きゃい〜ん天野の相方
0896nobodyさん04/10/03 03:39:23ID:???
Panasonicのパソコン
0897nobodyさん04/10/03 04:16:49ID:???
PCエンジンみたいなもんだよ。
タウンズがメガドライブな
089889304/10/03 08:47:32ID:n1LZAPOp
PHP側の工夫でなんとかならないかと思ったけど、
woodyの問題なのかなぁ。
そして結局、たらい回しになりそうな希ガス
0899nobodyさん04/10/03 14:48:19ID:???
>>850
コンパイルしなおせば直る感じ?
でもまんどくそいから、誰かやってよ
一番最新のやつ
0900nobodyさん04/10/03 15:08:05ID:???
掲示板機能を利用した多人数参加型ゲームCGIの作成について質問です。
Indexページで現在参加できる部屋にリンクし、ユーザーは好きな部屋に入り、
各部屋内ではスクリプトとユーザーの投稿によってゲームが進行するようにする予定です。
Indexページで、存在する部屋のリストと、各部屋が参加募集何人しているかを横に表示したいのですが、
IndexページもCGIで出力する予定でしたが、このページはもっともアクセス数が多くなると思うのでできるだけ負荷減らしたい。
そこでページが要求されるたびにCGIで出力するのではなくて、ページが更新されるたびにCGIでhtmlファイルを鯖内に作成し、
これをユーザーに見せるようにすれば負荷が軽くなるかな?と思ったのですがどうなのでしょうか
使用言語はPHPとMySQLです。
0901nobodyさん04/10/03 15:31:19ID:???
なにかPHPで作れるサイトのネタないかな。
0902nobodyさん04/10/03 15:48:41ID:???
>>892
確かに、相手のサーバに接続できない場合、socket_set_timeout() で設定した
タイムアウト時間が過ぎても無反応になる。

同じ問題で困った時には、socket_set_blocking() で non-blocking モードにして、
自分でタイムアウト処理を書いて回避した。
0903nobodyさん04/10/03 17:39:42ID:???
>>900
軽くなります。以上。
0904nobodyさん04/10/03 17:42:24ID:???
>>900
負荷を考えるならCGIで作るのは止めた方がいいな。
別の方式でWebプログラムを組んだ方がいい。
0905nobodyさん04/10/03 18:27:51ID:2j245/56
セッションを使ったパスワード認証を試しているのですが
バグが自分では解決できませんでした
$passはフォームからPOSTで受け取っています

〜login.php〜
session_start();
$fp = fopen("./pass.txt","r");
$fps = fgets($fp, 32);fclose($fp);
if($_POST['pass'] == $fps){
$_SESSION['login'] = 1;
header("Location: http://********/***.php");
}else{print("パスワードが違います");}

〜移動先〜
session_start();
if(isset($_SESSION['login'])){
}else{header("Location: http://********/login.php");}

バグは、パスワードが合っていてもlogin.phpに飛ばされて
一度パスワードを間違えてから正しいものを入れるとやっと認証されます
ご指摘の程、よろしくお願いします
0906nobodyさん04/10/03 18:47:39ID:???
>>905
要するに header("Location: 〜")した時にsessionが引き継がれないってことかな?
それは正しい動作です。
どうしてもsessionを引き継ぎたい場合は Locationの時に明示的にSIDをつけましょう。
0907nobodyさん04/10/03 18:48:39ID:???
"0xff" という文字列を 255 に変換する方法はありますか?

一桁までは 0x0〜0xF をキーにした連想配列でやってたのですが
2桁はさすがにちょっと・・・
0908 ◆.jC7ANgFY. 04/10/03 18:51:50ID:???
$str = '0xff';
if (substr($str, 0, 2) == '0x') {
echo HexDec(substr($str, 2));
}
0909nobodyさん04/10/03 19:00:06ID:???
> それは正しい動作です

Locationは302 foundだからSession Cookieセットされるし、
飛び先でブラウザはSessID送信するけど。
0910nobodyさん04/10/03 19:20:44ID:cGVfVdlB
ファイルから一行だけ読みこむ時はfopen(),fgets(),fclose() と file(),array_shift() ではどちらがよいでしょうか?
0911 ◆.jC7ANgFY. 04/10/03 19:21:19ID:???
>>910
前者の方が高速です。
0912nobodyさん04/10/03 19:22:11ID:cGVfVdlB
高速レスありがとうございます。
リロードしてびっくりしました。
0913nobodyさん04/10/03 19:35:10ID:???
>>912
それもまた、fopen()の恩恵です
0914nobodyさん04/10/03 21:35:01ID:???
>>907
<?php
$str = "0xff";
print( eval("return $str;") );
?>
0915nobodyさん04/10/03 23:24:39ID:???
>>908

hexdec("0xff") でいいんじゃない?
0916 ◆.jC7ANgFY. 04/10/03 23:35:31ID:???
>>915
ほんとだ、、ヘルプちゃんと見てなかったですね。
それなら何も使わずそのままいけますね。
ありがとうございます。
0917nobodyさん04/10/04 00:25:36ID:???
お勧めの入門書があれば教えてくだちぃ。
サーバサイドスクリプト自体が初めてです、というか
Webプログラミング自体が初心者です。
JavaScriptなら趣味で少々という程度。
PHP+mySQLの組み合わせだそうです。
0918nobodyさん04/10/04 00:28:58ID:???
スレ違いですね。
0919nobodyさん04/10/04 00:29:37ID:???
PHPでは、文字列のバイト数を知るにはどうしたらよいですか?
長文をiモード用に出力する時に、10kbまでとかに抑えたいのですが。。。
一文字一文字を、文字コードから英数字→1byte、日本語→2byteとかやるのは、
我ながら「ちょっと違うな。。。」という気がするので。
0920nobodyさん04/10/04 00:34:18ID:???
>>919
PHP: Strings(文字列関数) - Manual
http://jp2.php.net/manual/ja/ref.strings.php
レス数が900を超えています。1000を超えると表示できなくなるよ。