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

【PHP】下らねぇ質問はここに書き込みやがれ 24

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/07(金) 14:54:53ID:KnVubDvE
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0302nobodyさん2006/07/12(水) 01:11:36ID:???
$a = getValue('aaa');
とかやるくらいなら
$a = $article->aaa;
ってやりゃいいじゃん。
0303nobodyさん2006/07/12(水) 01:22:40ID:IbIRSqg8
>>301
画像は$upfileにパスが入ってます
こんな感じで送ってます

$length = "Content-type: application/x-www-form-urlencoded\n";
$length .= "Content-Length: ".strlen($buffer)."\n";
$gazou = "Content-Type: image/jpeg\n";
$gazou .= "Content-Length: ".filesize($upfile)."\n";
//socketで送るデータ
$dat = "$method $path HTTP/1.0\n";
$dat .= "User-Agent: $agent\n";
$dat .= "Referer: $d_ref\n";
$dat .= "Host: $host\n";
$dat .= "Connection: close\n";
$dat .= "$length\n";
$dat .= "$buffer\n\n";
$dat .= "$gazou\n";
$dat .= "$upfile\n\n";
0304nobodyさん2006/07/12(水) 01:32:31ID:???
>>303
…multipart/form-dataって知ってる?
0305nobodyさん2006/07/12(水) 01:35:14ID:???
>>302
単なる変数参照じゃなく前後に処理を挟みたいと思ったらメソッドがいるだろう。
0306nobodyさん2006/07/12(水) 01:36:39ID:???
298じゃだめなの?
0307nobodyさん2006/07/12(水) 01:49:45ID:???
.htaccessで設定したあと、それを変更できているか確認する方法はありませんか?
0308nobodyさん2006/07/12(水) 02:01:41ID:???
何を設定したんだい
0309nobodyさん2006/07/12(水) 02:22:34ID:???
Fatal error: Cannot unset string offsets in

これはunsetできなかったってことですよね?
なぜunsetできないのですか?
0310nobodyさん2006/07/12(水) 03:55:24ID:IbIRSqg8
>>304
独学なのでさっぱりでした
調べてみましたが
Content-Disposition: form-data; name="message"
こんな感じで送ればいいのでしょうか?
0311nobodyさん2006/07/12(水) 06:10:47ID:???
>>309
エラーだけ示されてもわかる訳ないでしょ?
昨日テストで答えが間違ってますって言われたんですが、どこがおかしいのでしょうか?
って言われて何と答えるよ?
0312nobodyさん2006/07/12(水) 06:48:05ID:???
掲示板スクリプトに書き込み内容のプレビューを付けようと思ってます。
フォームから受け取り、プレビューを表示した後の処理で、
プレビューのフォームにhiddenで内容を埋め込むか、セッションを使おうと
思ってますが他になんか良い方法ありますか?
0313nobodyさん2006/07/12(水) 06:57:38ID:???
>>312
君の言ってる方法が良いと俺は思う。
0314nobodyさん2006/07/12(水) 07:17:19ID:???
>>312 Ajax
0315nobodyさん2006/07/12(水) 07:25:07ID:???
>>314
プレビューにAjaxなんかいらんだろう。
そのデータはクライアント上にあるってのに。
0316nobodyさん2006/07/12(水) 07:45:18ID:???
>>283
PHP4.1.0-4.2.3なら可能
それ以降のバージョンでは出来ない
0317nobodyさん2006/07/12(水) 07:47:01ID:???
そっとしといてやれ。覚えたての知識をひけらかしたいだけだろう。
Ajaxが一体どういうものかも知らず、JavaScript=Ajaxと覚えてるだけとかな。
0318nobodyさん2006/07/12(水) 07:51:31ID:???
>>279
RFC****のdate formatとか
03192442006/07/12(水) 08:33:55ID:???
>>257
煽られたのでまたきました。

256 244 sage 2006/07/11(火) 16:27:42 ID:???
257 nobodyさん sage 2006/07/11(火) 17:10:33 ID:???
私が解決しましたと書き込んでから40分間以上書き込んでない状況に対して、
「これ以上続けるなら」とはどういう了見ですか?

まるであなたが話しをひっぱって続けているようにしか見えません。
0320nobodyさん2006/07/12(水) 08:42:19ID:???
http://pc8.2ch.net/test/read.cgi/php/1152251693/
こいつらコッチに丸投げしてぇ
0321nobodyさん2006/07/12(水) 08:43:13ID:???
間違えた。コッチな
http://pc8.2ch.net/test/read.cgi/php/1150088761/
03223122006/07/12(水) 08:57:58ID:???
>>313
d
今回はセッション使う事にしました。
コメントスパムツール対策にもなりそうなので

携帯もあるのでjsはパスです。書いとくべきでしたね。
0323nobodyさん2006/07/12(水) 09:00:53ID:???
>>320
反応するとまた書き込んでくるから、何も書かない方がいい。
反応さえしなければ無害だ。
多分お前の書き込みになにかレスしてくるぞ。
0324nobodyさん2006/07/12(水) 10:25:33ID:???
>>313
どっちがいいんですかね。
Webアプリ作るときいつもそれで迷いますね。。
0325nobodyさん2006/07/12(水) 10:30:02ID:???
>>324
セッション使え
0326nobodyさん2006/07/12(水) 10:49:04ID:???
>>323にて、「多分お前の書き込みになにかレスしてくるぞ」
と、320にレスしてくるのを予言されたので、レスせざるをえませんでした。

>>320
誰にでもミスはあるんだ。だからミスを責めることはできない。
0327nobodyさん2006/07/12(水) 12:11:09ID:/vjOPwv1
mb_ereg_replace()を使用して、URLを<a>タグに置き換える処理を作っています。
そこで、URLの判別に次のようなルールの正規表現を作りたいんですが、なかなかうまく行きません…。

・URLを判定する正規表現
・ただし、「 :;」が含まれている場合は許可しない。

URLを判別する正規表現というのは、

(http:|https:)(\/\/[-_.!~*\')a-zA-Z0-9;\/?:\@&=+\$,%#]+)

で行ってるのですが、「 :;」を除外できません。
どなたかご助言頂けるとありがたいです。
0328nobodyさん2006/07/12(水) 12:19:05ID:???
>>327
ちったぁ正規表現覚えろよ
ttp://pc8.2ch.net/test/read.cgi/tech/1131028296/
03292972006/07/12(水) 12:42:04ID:67ROEMVu
>>298
ありがとうございます。
そのまんま「$hoge_data->$variable」でよかったのですねorz

# $article を $hoge_data に置換し損ねていましたorz
0330nobodyさん2006/07/12(水) 13:45:17ID:xb5eEiQB
DB::connectの「::」ってなんですか?
0331nobodyさん2006/07/12(水) 13:48:43ID:???
>>330
特に必要ない、見やすいようにしてるだけ
DBconnectでも大丈夫
0332nobodyさん2006/07/12(水) 13:49:39ID:???
>>330
クラスとそのメンバを繋ぐ記号。

DBクラス内にある、connect という関数を実行せよということだな。
0333nobodyさん2006/07/12(水) 13:50:26ID:???
>>331
うそつき!
0334nobodyさん2006/07/12(水) 13:53:19ID:xb5eEiQB
「->」と「::」の違いはなんですか?
0335nobodyさん2006/07/12(水) 13:54:55ID:???
>>334
特に違いはない、気分で変えるだけ
m9(^Д^)でも大丈夫
0336nobodyさん2006/07/12(水) 13:56:15ID:???
注意しなければならいのが、 -> との違いだ。
Foo クラス内の、 func() という static関数を呼び出すときは、
Foo::static だが、

$foo = new Foo(); としたクラスからメソッドを呼び出すときは、
$foo->myFunc();

となる。これは、 $foo は作成されたオブジェクトの参照値(リファレンス)であり、
-> という記号は、デリファレンスすることをあらわす。
0337nobodyさん2006/07/12(水) 13:56:51ID:???
ここで質問するよりマニュアル読んだ方が多分早くて正確。
0338nobodyさん2006/07/12(水) 14:05:14ID:???
>>336
ようするにstaticな関数を呼び出したいときにつかうんですね。ありがとうございました。
0339nobodyさん2006/07/12(水) 14:49:48ID:???
>>333
2chの情報を鵜呑みにすんなよ・・・
金貰ってるわけじゃないから嘘言っても詐欺とかにならないんだぞ
名誉毀損とかなら別だが・・・
0340nobodyさん2006/07/12(水) 16:12:26ID:hqxdU0Dg
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、教えてください。
0341nobodyさん2006/07/12(水) 16:17:56ID:???
可能
0342nobodyさん2006/07/12(水) 16:38:42ID:hqxdU0Dg
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
0343nobodyさん2006/07/12(水) 17:21:46ID:???
>>342
可能。
quittimeファイルを読み込んで構造を解析して、縦と横のサイズを取得すればおk。
0344nobodyさん2006/07/12(水) 17:26:05ID:???
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
0345nobodyさん2006/07/12(水) 17:27:17ID:???
可能。まずはサイズ小さめのmovファイルをメモ帳で開け。
0346nobodyさん2006/07/12(水) 17:52:50ID:???
>>127ですが、>>129,130さんありがとうございました。
0347nobodyさん2006/07/12(水) 18:29:01ID:BdFa9tBW
PHPを使って

指定したurlからhtmlソースを取得するAPIなどはありますでしょうか?
ありましたら、そのAPI名を教えてください。
0348nobodyさん2006/07/12(水) 18:32:18ID:???
PHP を使って…、が流行ってるな。
>>347
最近見た話題なので、ログを一通り読めばあるはず。
0349nobodyさん2006/07/12(水) 18:36:07ID:BdFa9tBW
>347ですが、>348さんありがとうございました。
0350nobodyさん2006/07/12(水) 18:36:10ID:???
関数じゃなくてAPIでいいんか?
それならPHP APIなんていいんじゃね?
0351nobodyさん2006/07/12(水) 18:41:03ID:BdFa9tBW
>350さん

すみません。質問の仕方が悪かったです。
APIではなく、関数教えて頂けませんでしょうか?
0352nobodyさん2006/07/12(水) 18:41:51ID:???
セッションに文字列をキーとして値を代入すると
次のページで保存されてないのは仕様ですか?
0353nobodyさん2006/07/12(水) 18:42:24ID:???
間違えた、文字列ではなくて数字です
0354nobodyさん2006/07/12(水) 18:43:58ID:???
察してやれよ。
0355nobodyさん2006/07/12(水) 20:44:26ID:BdFa9tBW
「abcdefghijk」から「cdef」の文字列を取得する実現方法を
教えて頂けませんでしょうか?
0356nobodyさん2006/07/12(水) 20:52:20ID:???
くだらん質問ばかりするなよ
自分で考えろ
0357nobodyさん2006/07/12(水) 21:11:44ID:bxIkUHnK
>>355
http://jp.php.net/manual/ja/index.php
ここに載ってるよ。

てか、ほとんどの質問、ここの関数調べてきゃ普通に一発で行きつくものばっかじゃねーかYO!
くだらない質問というよりも丸投げだろ!
0358nobodyさん2006/07/12(水) 21:12:02ID:???
俺様は優しいから教える

substr ("abcdefghijk", 2, 4);
0359nobodyさん2006/07/13(木) 00:01:37ID:???
>>355
その質問は明らかに悪い
何がしたいのかがわからない

元データがはっきりとわかっていて、取得する文字列もはっきりとわかっているのなら
$foo = "cdef";
とか書かれても仕方ないぞ
0360nobodyさん2006/07/13(木) 00:22:14ID:???
全くだ。
「n桁目〜m桁目までを取り出したいんです」
なのか
「bからgまでの内容を取り出したいんです」
なのか
「cdefって文字があったら取り出したいんです」
なのか、まったくさっぱり。
きみたちゃ小学生レベルかと・・・
0361nobodyさん2006/07/13(木) 00:38:26ID:4CgVM/D8
レンジリクエストって言葉分かります?
0362nobodyさん2006/07/13(木) 01:11:19ID:???
>>361
何だその人を馬鹿にしたような聞き方は
0363nobodyさん2006/07/13(木) 01:13:28ID:???
>>361
PHP関係ないね。Apache辺りのWEBサーバーのスレ行ってみれば?
0364nobodyさん2006/07/13(木) 01:22:32ID:???
>>361
まずググれ。話はそれからだ。
0365nobodyさん2006/07/13(木) 04:51:44ID:???
http://pc8.2ch.net/test/read.cgi/php/1150088761/
0366nobodyさん2006/07/13(木) 09:16:19ID:???
>>361
まずククレカレー。チキンラーメンはそれからだ。
0367nobodyさん2006/07/13(木) 18:03:28ID:4QScch9z
チキンラーメンうめーよ。
03681482006/07/13(木) 18:58:37ID:???
>>148
スレ違いだとは思いますが、開発言語がPHPなのでここで質問させてもらいました。
問題を解決するためにどのような情報(header関係だとは思うんですが・・・)を調べればいいのかわかりません。
ヒントだけでもいいのでどなたかわかる方いましたら宜しくお願いします。
0369nobodyさん2006/07/13(木) 19:02:00ID:???
http://example.com/a/login.php
http://example.com/b/login.php
上記のように「a」と「b」二つのフォルダにそれぞれセッションによる
ログイン認証が必要なスクリプトを置いたとき、「a」でログインした状態で
「b」にアクセスすると、既にログイン済みの状態となってしまいます。

上記の現象は、違うディレクトリ間でセッション・ファイルを共有してしまっている…と
いうことなのだと思うのですが、これってPHPの仕様ですか?
ちなみにサーバはXREA+です。
0370nobodyさん2006/07/13(木) 19:07:50ID:???
この糞暑いのにチキンラーメンなんかくってられっかよ!
0371nobodyさん2006/07/13(木) 19:20:47ID:???
>>369
http://jp2.php.net/manual/ja/ref.session.php

> 複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。

逆に聞くが、ディレクトリやファイルが変わった時に
保持されないようなセッション情報に何の価値があると?

まずはログインしているかどうかの判定を見直せ。
0372nobodyさん2006/07/13(木) 19:38:22ID:???
>>371
そうかねぇ?
http://example.com/admin/login.php
http://example.com/users/login.php
でセッション情報を分離したいとかよくある要求だと思うけど。

>>369
http://jp.php.net/manual/ja/function.session-set-cookie-params.php

http://jp.php.net/manual/ja/ref.session.php#ini.session.cookie-path
を限定してあげれば良いと思うよ。
0373nobodyさん2006/07/13(木) 19:44:17ID:???
忘れてた。
http://jp.php.net/manual/ja/function.session-name.php
で session ID を別々に分けておかないとごっちゃになるよ。
0374nobodyさん2006/07/13(木) 19:49:21ID:???
ファイルごとやディレクトリごとにアクセス権限が違うような
状況を想定しているのだろうな
0375nobodyさん2006/07/13(木) 19:57:48ID:???
>>372
それだとCookie無効時に不具合が生じるんじゃ?

セッションデータにユーザレベルなり何なりを組み込んで
そっちで判断した方が良いんじゃないかと思うが。
0376nobodyさん2006/07/13(木) 20:01:30ID:???
>>375
> それだとCookie無効時に不具合が生じるんじゃ?
あ"? そんなの /a/ と /b/ で分離するとかしないとかに関係ない話じゃん。
そもそも Cookie が無効でもセッション情報が扱えるように
URL に ID 付与とかあるわけで、今回の話題と何の関係が?
0377nobodyさん2006/07/13(木) 20:13:10ID:???
>>376
  _, ._
(;゚ Д゚)…!?
0378nobodyさん2006/07/13(木) 21:32:54ID:???
あの・・・素人にも分かりやすいように解説してください
0379nobodyさん2006/07/13(木) 21:45:50ID:???
>>372
http://example.com/a/login.php
でログインした状態で
http://example.com/b/login.php
に行くと既にログイン済みになるという問題が起こっている。

>>371は基本的にセッションデータはサーバ上でひとつなので、
ログイン中かどうかを判断するルーチン
(恐らく『セッションデータがある=ログインしている』とかそんな感じと思われ)
を見直せと言った。

>>372-373
http://jp.php.net/manual/ja/function.session-set-cookie-params.php
でセッションキーを補完するクッキーの有効ディレクトリを制限してやれば
ディレクトリを移った時にはそのクッキーは食わないのでログイン済みにはならないと言った。

>>374>>372の方法だとクッキーを無効にしてある場合、つまり
http://example.com/a/login.php?SID=hagehagehogehoge
のようにURLパラメータとして受け渡す場合に
http://example.com/b/login.php?SID=hagehagehogehoge
のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
セッションデータの中に今どちらにログインしているのかを示すデータを埋め込むべきだと言った。
要するに>>371と同じくログイン中かどうかを判断するルーチンを変えろと。

すると何故か>>377=372はキレ出した。

それを見た>>377は呆れていた。




一方ロシアは鉛筆を使った。
0380nobodyさん2006/07/13(木) 21:49:19ID:???
ごめん。

× 補完
○ 保管
0381nobodyさん2006/07/13(木) 21:51:39ID:???
さらにごめん。

× http://example.com/a/login.php?SID=hagehagehogehoge
http://example.com/a/login.php?PHPSESSID=hagehagehogehoge
0382nobodyさん2006/07/13(木) 21:54:18ID:???
>>379
> http://example.com/a/login.php?SID=hagehagehogehoge
> のようにURLパラメータとして受け渡す場合に
> http://example.com/b/login.php?SID=hagehagehogehoge
> のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
ログイン済みにはならない。>>373 があるから。
0383nobodyさん2006/07/13(木) 22:14:17ID:???
おーなるほど。そいつはごめん。
03843692006/07/13(木) 22:16:38ID:???
>>369です。
皆さんのご意見を参考に、セッションデータに格納するログイン判定用のデータを、
ディレクトリ毎に変えてみたら上手くいきました。

以下のような感じです。
$_SESSION['loginOK'] = "a-logined"; //「a」でログイン成功時に格納するログイン済みフラグ
$_SESSION['loginOK'] = "b-logined"; //「b」でログイン成功時に格納するログイン済みフラグ

今回のような事例に関しては、意外と気付かないでいる人も多いのではないでしょうか?
同じドメインでディレクトリやサブディレクトリ毎に別のWebアプリを置いていて、
ログイン判定データが同じだったら全部のログイン認証が筒抜け・・・というのは盲点でした。

一種のセキュリティ・ホール(?)になりうるので、このスレのテンプレにも入れたらいかがでしょうか?
0385nobodyさん2006/07/13(木) 22:25:36ID:dYQP4E5n
<form action="<? $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<label>
<input type="file" name="upfile" size="35" />
</label>
<label>
<input type="submit" name="Submit" value="送信" />
</label>
</form>
<?

if($_POST['Submit'] == "送信"){

echo $_POST['upfile']:

}
?>

アップローダーを作ろうと思っているのですが、
上記のようにしても、upfileには何も格納されないのです。
どうすれば格納されるようになるのでしょうか?
03863692006/07/13(木) 23:03:37ID:???
追記です。
さらに実験してみたところ、
仮にログイン判定用のセッション・データ(>>384で書いたログイン判定フラグ)が全く同じ場合でも、
session_name('a');
session_name('b');
などのようにsession_nameをディレクトリ毎に分けて設定する(毎回session_startの前にコールする)という方法でも
大丈夫だということが分かりました。
0387nobodyさん2006/07/13(木) 23:28:13ID:???
当たり前のように
$_SESSION["siteA"]["色んな情報"] = ...
$_SESSION["siteB"]["色んな情報"] = ...
ってやってたけどこれじゃ何か問題あるの?
0388nobodyさん2006/07/14(金) 00:04:24ID:???
>>387
実際にテストしてみれば??
0389nobodyさん2006/07/14(金) 01:29:17ID:???
テキストファイルの最後の行1行だけ削除したいんですが
一度、全ての行を、変数にいれて、
最後の行だけを除いて、保存するというやり方しかないんでしょうか?

テキストファイルがでかくなるとメモリの消費が辛いんですが、変数を節約するいい方法を教えて下さい
0390nobodyさん2006/07/14(金) 01:33:50ID:???
>>389
1行のデータ量が決まってるならシークしてやればいいがそうでないなら無理。
DB使え
0391nobodyさん2006/07/14(金) 03:23:20ID:???
>>389
やりようはあるよ
ftellで場所を記憶しながらfgetsで取得していって
最後にftruncateでいける。

行の長さがある程度予想つくならば、最初にfseekしてパフォーマンスを上げられる。
0392nobodyさん2006/07/14(金) 03:27:25ID:???
>>389
最終行の先頭位置さえ分かればftruncate()で以降を削除できる。

最終行の位置を探すには
1.頭から1行ずつ読み込んでいって行末のftell()を保持しながら最後まで探していく
2.fseek()でファイル末尾に移動して1文字ずつ後ろから読み込んでいって1つ前の行末を探す
3.fseek()でファイル末尾から1行以上の分量だけ戻った位置に移動してそこから行単位に読み込む
などのアルゴリズムが考えられる。
3番は1行の最大長が分かってる場合は比較的有効。これが全然不明だと
100バイト戻って探索→ダメだったらさらにもう100バイト戻って…みたいになって大変。
この辺は対象ファイルのでかさなどからどこまで手間をかけるべきかを自身で判断しる。
処理時間は問題にならず単に消費メモリ量だけの問題なら1番で十分対応できる。

この種の末尾削除処理が頻繁に発生するなら、そもそもファイル書き込みの段階で
各行の先頭位置をインデックスファイルとして別途保存するか
そもそもファイルなんてやめてDB使った方がいい。
0393nobodyさん2006/07/14(金) 03:29:28ID:???
>>389
あと、全部丸ごと変数に入れなくても、
1行読み込み→その行を別のファイルに出力
というのを行単位に繰り返していって、
最後に元ファイル削除&別のファイルをリネーム、
って手順でも単純ながらメモリはほとんど食わずに処理できる。
でも、分量が多いならftruncate()の方が処理が軽いけどね。
0394nobodyさんNGNG
マルチバイト文字をsjisコード(8進)に変換したいのですが、
どうやればいいでしょうか?

"あ" を "202 240"
"犬" を "214 242"

というふうにです。
ご存じの方がいればよろしくお願いします。
0395nobodyさん2006/07/14(金) 04:19:14ID:???
>>394
$c = "あ";
$o = decoct((ord($c{0])) . " " . decoct(ord($c{1}));
echo $o;
0396nobodyさん2006/07/14(金) 05:37:32ID:???
>>384>>386
言われてみて自分の管理してるサイト調べてみたら、
別々のシステムなのにログイン情報(セッションファイル)が共通になってた…orz
0397nobodyさん2006/07/14(金) 07:08:44ID:???
>>385
マニュアル嫁
http://jp.php.net/manual/ja/features.file-upload.php
0398nobodyさん2006/07/14(金) 11:50:58ID:uuZ6ZGyp
$fp=fopen("test.txt","w");
fwrite($fp,'こんにちわ');
fclose($fp);

上記のようにファイルを作成する際に、
文字コードをUTF8に指定するには
どう記述すればいいんでしょう???
0399nobodyさん2006/07/14(金) 11:55:52ID:???
>>398
「こんにちは」が UTF8 になっていれば UTF8 になる。
ファイルに文字コードという属性はない。
0400nobodyさん2006/07/14(金) 12:12:07ID:???
fwrite($fp, mb_convert_traditional('こんにちわ', 'UTF-8', '内部エンコード'));
04013942006/07/14(金) 12:26:35ID:???
>>395
ありがとうございました。後で試してみます。

それで、逆を聞くのを忘れていました。

"202 240" を "あ"
"214 242" を "犬"

というパターンです。よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています