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

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

■ このスレッドは過去ログ倉庫に格納されています
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
0455nobodyさん04/09/25 00:03:00ID:???
マジでいってんのか?
0456nobodyさん04/09/25 01:54:46ID:???
>>36
亀レスですまんが、ありがとう。
<?php echo "<?xml ...?>"; ?> をやっちゃうとそれがXML文書じゃなくなっちゃうので困ってました。
short_open_tag = Off でいきます。
ありがとうございました。
0457nobodyさん04/09/25 02:02:53ID:???
>>454
ケータイ側のアプリも併用してる場合は、一応テストするけどね。
メンテ工数には入ってないから、要望があればだけど。
まあ実機テストも限度があるので元々既存の機種でもそんなに揃えてやってない。
本テストで自分ならパケ死するぐらいの金額逝った…それを何台もはちょっと
045845704/09/25 02:07:34ID:???
ついでだけど、ケータイ用の回線エミュレータいれてる人いる?勿論会社で
そもそもケータイ用のがあるのかも知らないんだけど、一般電話回線用のは昔導入して使ってた。
0459nobodyさん04/09/25 02:18:40ID:???
phpize ←オマイラこれを発音して書け
0460nobodyさん04/09/25 02:19:23ID:???
>>451
ケイタイのみってのはapacheの設定で、ホストでキルのがベスト。
端末ごとの判断はUserAgentか、HTTPヘッダ(x-jphone-msnameとか)

>>457-458
うちはオープン前に全機種チェックするぞ。時間いくらで借りられるとこあるし、
公式サイトでボダEZなら端末センターで無料で使えるし。
0461nobodyさん04/09/25 05:11:05ID:???
>>459
PHP化(ぴーえいちぴーか)
0462nobody04/09/25 05:26:25ID:???
お助けください。

現在、インデックスリストを表示するやつを組んでます。
dir() に日本語表記のフォルダ読ませるにはどうしたらよいのでしょうか…。
さっきから色々試してるけどもう限界…
0463nobodyさん04/09/25 05:32:25ID:???
>>459
ぴーえいちぴーず??
0464nobodyさん04/09/25 05:36:18ID:???
>>462
なんの工夫もなく読めますが。
文字コードで躓いてるのかもしらんが、
環境も処理も書かないアホは死んだ方がいいんじゃない?
0465nobody04/09/25 06:39:05ID:???
>>464
なんか嫌な事でもあったのか?
0466nobodyさん04/09/25 06:47:58ID:???
>>465 汚ねー野郎だなこいつ
0467nobodyさん04/09/25 06:48:30ID:???
>>464
言い過ぎ。
0468nobodyさん04/09/25 07:38:30ID:???
釣りまがいの質問にも答えてるいい奴じゃないかw
0469nobodyさん04/09/25 07:40:34ID:???
いいかげんネタ質おおすぎ






0470nobodyさん04/09/25 08:04:23ID:???
>>457-458
>>460
これだけ揃えれば完璧
ttp://image.itmedia.co.jp/mobile/articles/0409/10/l_300_1.jpg

でも壮絶
04711204/09/25 10:06:38ID:???
>>13
>>14
ありがとう。ようやくインストーラがでけた。
package.xmlの書き方がいまいちわからんが、ライブラリファイルをコピーするだけだからなんとかなった。
これからインストーラつくるひとはここらへんを読め。
http://www.1x1.jp/php/manual_pear/developers.packagedef.html
http://www.phpexamples.net/pearman/developers.packagedef.html
0472nobodyさん04/09/25 10:23:16ID:???
phpは自動で型を変換してくれるのに
キャスト演算子があるのはなぜなんですか?
0473nobodyさん04/09/25 10:32:08ID:???
便利だから
0474nobodyさん04/09/25 10:42:09ID:???
強引に型変換したいから
047544204/09/25 12:34:18ID:???
ちょっと高度な質問だったみたいですね
0476軟式PHP04/09/25 12:45:15ID:???
藁
0477nobodyさん04/09/25 12:54:34ID:???
442は日本語が意味不明
0478nobodyさん04/09/25 13:00:13ID:???
確かに解読するのに高度な技術がいるな
0479軟式PHP04/09/25 13:06:54ID:???
7行あるけど1行の文だしな。
0480nobodyさん04/09/25 13:58:56ID:???
>>442
正直いって他の人と同様やりたいことがわかんねぇよ。
(他の人は判ってんのかも知んないけど)

session_destroy→session_id(NewID)→session_startってことか?
0481nobodyさん04/09/25 14:28:38ID:???
>>480
まさかそんな簡単な質問するのに7行も書いてないって。
0482nobodyさん04/09/25 14:35:49ID:???
>>480
違う
AというページからBというページにtarget="_blank"でリンクして
BのページとAのページとで違うセッションを持ちたい ということ
デストロイするとAのページで持っていたセッションも破壊されるので
だめだよ
0483nobodyさん04/09/25 14:38:52ID:???
session_startすると勝手にセッションIDが振られるけど
このセッションID名のようなものを自分で生成したいと思ったら
どうしたらいいかな?32文字の0〜fを羅列すればいいだけ?
0484nobodyさん04/09/25 15:09:58ID:???
>>482
その挙動はセッション変数で管理した方が早いんじゃないのかな?
0485nobodyさん04/09/25 15:13:48ID:???
442氏と似たようなことかどうか判らんけど。

1.PHPLIB使って認証してるページのフォームボタンから
 JavaScript経由で別ウィンドウを呼び出し
 (その別ウィンドウは認証やセッションをしない)
2.その別ウィンドウを閉じる
3.元ページを操作(submit)すると再認証を要求される

という流れがあって、はて?と思ったら、元ページにアクセスする際
(当然最初だから認証画面が出てくるわけだが)、
ブックマークから飛ぶと上記の再認証は発生しないのだが、
別ページのリンクから飛ぶと上記の再認証が発生するという現象に
出くわした。

これについて何故そうなるのか教えていただける人いますか?
ブラウザはIE SP6です。
0486nobodyさん04/09/25 16:39:45ID:???
>>483
乱数を種にユニークなIDでも生成して、そのMD5ハッシュ値でも取る。
中でも同じようなことやってた筈。

>>482
ならば session_destroyはしないで、session_id(NewID)→session_start
とすれば良いだけ。後で戻る時に元のIDを返してやるように保持しとかんと駄目だけどね。
つか、そんならsession_name使って別セッション名でパラに持った方がすっきりするんじゃないのか。
0487nobodyさん04/09/25 17:25:50ID:???
スクリプトをEUCで書いてShiftJISで出力するため、
ob_start("mb_output_handler")を使っています。
この場合、最後にob_end_flush()をコールしてもしなくても
同じ結果になると思っていいでしょうか。
0488nobodyさん04/09/25 18:17:44ID:???
>>486
ありがとう
とりあえず時間+乱数とかでやってみます。
そのIDでsession_nameやれば多分いけそうですな。
0489nobodyさん04/09/25 19:51:01ID:???
勝手にSESSID振られるとまずいの??
0490nobodyさん04/09/25 20:17:34ID:???
>>488
>>489と同じ疑問。
わざわざ生成する意味は何?
0491nobodyさん04/09/25 23:20:01ID:???
すいませんPHPで
一定時間内に一定回数以上のアクセスがあったIPアドレスからのアクセスを
一定時間制限するようなページってできますか?
0492nobodyさん04/09/25 23:20:35ID:???
できますよ
0493nobodyさん04/09/25 23:21:42ID:???
それはどういう風にすればいいのでしょうか?
どこかに出来合のモノがありますか?
0494nobodyさん04/09/25 23:22:51ID:???
それからできればサイト全体をそうしたいのですが
それもできますでしょうか?
0495nobodyさん04/09/25 23:24:12ID:???
サイトの全部のページをPHP化するのは出来ませんから
PHPを通してアクセスするような感じにしたいです
0496nobodyさん04/09/25 23:28:39ID:???
して下さい
0497nobodyさん04/09/25 23:30:06ID:???
そんな面倒なことをしなくてもwebサーバでやればいいじゃないか?
要求にあった拡張機能(モジュール)を探して使え。
現在のところ349個あるらしいから大抵は見つかるだろう。
http://modules.apache.org/
モジュールが見つからない場合は自分で作れ。
そして一生メンテナンスしろ。
これでOK?
0498nobodyさん04/09/25 23:34:28ID:b9Ydmcot
新規質問だったからageます
0499nobodyさん04/09/25 23:38:27ID:b9Ydmcot
>>497
使えるものを知りませんか?
モジュールを作るのは大変そうです
一生メンテナンスする人っていますかね?
0500nobodyさん04/09/25 23:53:27ID:???
↓次の人どうぞ〜
0501nobodyさん04/09/26 00:01:39ID:???
↑難しいみたいですね
0502カポコン04/09/26 00:39:51ID:???
echo(DAY_1);
0503nobodyさん04/09/26 01:25:20ID:xki5KZNu
下記のようなスクリプトを作ったのですが、
実行すると
Fatal error: Call to undefined function: () in ****.php on line 8
というエラーが返ってきます。
どうも最後の行に問題があるようですが、どうしても解決できません。
何がだめなのでしょうか?
<?php

$local_file = 'http://www.****.com/test.gif';
$remote_file = '/public_html/';
$ftp = ftp_connect('ftp.****.com');
ftp_login($ftp, '$id', '$pass');
$ftp_put ($ftp, $remote_file, $local_file, FTP_ASCII);
?>
0504nobodyさん04/09/26 01:28:11ID:???
_$ftp_put ($ftp, $remote_file, $local_file, FTP_ASCII);
↑
0505カポコン04/09/26 01:47:53ID:???
ポジティブ?<?=POSITIVE_SIGN?>
ネガティブ?<?=NEGATIVE_SIGN?>
0506nobodyさん04/09/26 02:15:15ID:???
文法ミスとは情けない限りだな
しかもたったの8行で



漏れは1行でも英語の文法ミスるが
0507nobodyさん04/09/26 02:33:46ID:???
>>503
> ftp_login($ftp, '$id', '$pass');
これじゃ>>504の指摘してるミスがなくても動かない。
一重引用符は内容を解釈しない。
050850304/09/26 02:34:02ID:xki5KZNu
わいはあほや〜

わいはあほや〜

わいはあほや〜
0509nobodyさん04/09/26 02:48:43ID:???
関西人ならしょうがないか
0510nobodyさん04/09/26 08:32:50ID:???
関西民国人ならしょうがないな
0511nobodyさん04/09/26 10:02:15ID:???
関西は独立国?
0512nobodyさん04/09/26 11:06:37ID:???
分子レベルで分解して霧散してくれ
0513nobodyさん04/09/26 11:27:08ID:???
∩( ´Α`)< 先生、質問です!!

∩( ´Α`)< FLASHからPHPを読み出して、リアルタイムでFLASHを挙動させたいんです!

∩( ´Α`)< そんなことは可能なんでしょうか!?

∩( ´Α`)< つまり、誰かとリアルタイムでネット対戦とか、そういう感じです!
0514nobodyさん04/09/26 11:39:24ID:???
お前は上司にもそうやって質問するのか?
0515nobodyさん04/09/26 11:53:10ID:???
>>513
じゃあhttpのしくみについてレポートを作って職員室まで来なさい。
0516nobodyさん04/09/26 13:08:33ID:???

∩( ´Α`)< 先生!早速やってみました!!

∩( ´Α`)< HTTPは、HyperTransferProtocolの略であります!!

∩( ´Α`)< HTTP は 1990年から存在するようになりました!

∩( ´Α`)< 現時点のHTTPはRFC2616で定義されています!http/1.1です!!

∩( ´Α`)< HTTPは、共同的ハイパーメディア情報配布システムのためのものです!

∩( ´Α`)< そして、先生!HTTPは、ポート80を標準として使用します!

∩( ´Α`)< HTTPは、WebブラウザとWebサーバの間での通信プロトコルであります!

∩( ´Α`)< ちなみに、通信プロトコルとは、ネットワーク上での通信の規約の事です!

∩( ´Α`)< 通信プロトコルは、大きく分けて7層に分かれています!

∩( ´Α`)< 物理層、データリンク層、トランスポート層や、アプリケーション層等です!

∩( ´Α`)< ちなみに、先生!HTTPの場合、第7層のアプリケーション層に含まれます!

∩( ´Α`)< 第7層には、FTPや、POP3、SMTP等もあります!

∩( ´Α`)< 先生!今回このレポートを書いて、インターネットの色々な事がわかました!

∩( ;´Α`)< 先生!先生!でも、ごめんなさい!!殆どWikiPediaで調べました!

∩( ´Α`)< 先生!先生!何か、罰をください!

∩( ;´Α`)< 先生!先生!先生!もう32行なのでかくことが出来ません!!
0517nobodyさん04/09/26 13:14:15ID:???
暇ね
0518先生04/09/26 13:33:55ID:???
>>516
間違い大杉でやり直しだバカチン
ついでにwikiも修正して来い
0519nobodyさん04/09/26 13:52:19ID:???
>>516
それは「TCP/IPにおけるhttpの位置付け」だな。
「ちなみに」が多い割にしくみについて全然触れておらんので
それじゃあ10点しかやれんよ。
0520nobodyさん04/09/26 13:53:04ID:???
session_start などの関数がありますけど、
イマイチ「セッション」という概念が良く分かりません。
ぐぐっても、本見ても詳しく書いてないんですが、
だれか教えてくりそ
0521なちじょあ ◆yEbBEcuFOU 04/09/26 13:54:41ID:???
( ● ・3・ ● ) エェー >本見ても詳しく書いてないんですが
      .         嘘つくなYO
0522nobodyさん04/09/26 14:06:29ID:???
便乗質問。
session関数と同様の働きする関数ってある??
0523nobodyさん04/09/26 14:11:53ID:???
>>522
同様の働きをするものが二つも三つもあっても仕方なかろう・・・
そりゃ一部にはchopとかエイリアス関数はあるが
0524なちじょあ ◆yEbBEcuFOU 04/09/26 14:14:06ID:???
( ● ・3・ ● ) エェー > session関数と同様の働きする関数ってある??
                 session関数使えYO
052552204/09/26 14:26:40ID:???
いや、sessionが必要な働きするスクリプトなのに、
どうもsession関数が使われてないの見つけたんだよね。
だから聞いてみた
0526nobodyさん04/09/26 14:50:38ID:???
>>525
ほんとかよ
「Cookieに記憶させてました」じゃねーだろーな
0527nobodyさん04/09/26 14:52:33ID:???
きっと自作しちゃったんだよ
0528nobodyさん04/09/26 15:01:45ID:???
すいません、日記スクリプトを書いてて文中のURLに自動リンクを貼ろうとしてます。
で、勉強して間もない自分では難しかったので検索で見つけたのが、このスクリプト

$text = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)(\n)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);

ただ、日記スクリプトなので、一度書いた日付の日記を再編集する機会が多く、

<a href="http://hoge.com" target="_blank">http://hoge.com<;/a>

このようにリンク済みの状態になっている二つのURLの両方共に、
それにイメージタグの中のimg src=の後にまでリンクが貼られる始末です(;´Д`)

よく使われるスクリプトだと思われますが、
皆さんはどのような方法で対処してるんでしょうか…。
0529nobodyさん04/09/26 15:04:24ID:???
ぶっちゃけ、セッション関数が無くても
サーバにデータ保存できるなら
セッション関数を自作することは屁の河童です。
0530nobodyさん04/09/26 15:05:53ID:???
PHPでのアップロードってサーバーの実メモリ以上の容量のファイルもアップロード可能でしょうか?
0531なちじょあ ◆yEbBEcuFOU 04/09/26 15:08:00ID:???
>>528
( ● ・3・ ● ) エェー 表示する時だけタグつければいいBE
0532nobodyさん04/09/26 15:09:24ID:???
>>528
保存する時に変換するのではなく、表示する時に変換するとか?
0533nobodyさん04/09/26 15:12:26ID:???
>>530
試してレポートよろ。
HTTPのPOSTでギガ単位レベルのアップロードなんて、どれだけ実用的なんだか知らんけど。
0534nobodyさん04/09/26 15:16:32ID:???
>>531
>>532
ああ、なるほどー、と思ったんですが、
それだけだと日記文中のイメージタグの中のimg src=の後にもリンク貼られちゃいますよね?

後、今気づいたけどこのスクリプト、URLに入った日本語部分はすっ飛ばされる…。
0535なちじょあ ◆yEbBEcuFOU 04/09/26 15:28:10ID:???
>>534
( ● ・3・ ● ) エェー URLの拡張子見て囲むタグ変えればいいんじゃないのKANA
0536nobodyさん04/09/26 15:50:04ID:???
>>535
画像を画像として日記中に表示させたい時もあれば、
余所サイトにいわゆる直リンしたい時もありますので…。
0537なちじょあ ◆yEbBEcuFOU 04/09/26 15:53:07ID:???
>>536
( ● ・3・ ● ) エェー 今までどうやって区別してたんだYO
0538nobodyさん04/09/26 15:58:43ID:???
>>536
他のタグに囲まれてない時って感じにすればいいんじゃないか?
普通、画像表示は相対パスにすると思うけどな
0539nobodyさん04/09/26 16:20:16ID:???
>>537
ハイ、それが出来ませんでした…。

>>538
> 他のタグに囲まれてない時って感じにすればいいんじゃないか?

それが自分の力で出来たらいいんですが…。



すいません、初心者スレ行ってきます。
0540nobodyさん04/09/26 18:03:08ID:???
といいつつあれからずっと触ってたんですが、
とりあえず考え方として、URLの直前に改行コードがある場合にのみ
リンクを貼る、というやり方にしようと思いました。
これでタグで囲まれている時、及びimgタグの中である場合には無視できるのでは、と。

で、もう一息(多分)なのですが、どうもリンクが貼られないようです。
よければアドバイスなどいただけないでしょうか。

$text = ereg_replace("(\n)(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
0541nobodyさん04/09/26 18:28:33ID:???
せめてID出すか、質問した時のレス番号を名前に入れろよ。
誰が誰か分からんし。
0542nobodyさん04/09/26 18:49:17ID:???
最長マッチ使え
0543nobodyさん04/09/26 18:53:04ID:???
>>129 >>132
亀レスで失礼

PHPの4.2.0以降のバージョンでは、セキュリティ強化の為、POST・GETによるフォームデータが以前のような「$変数名」では取得できない設定になっています。
php.iniファイルのちょっと下の方にある
 register_globals = Off
と言う設定文がそうですが、デフォルトで「Off」に設定されています。
ここを「On」に替えれば、以前のように簡単にフォームデータが取得できます。
0544nobodyさん04/09/26 18:58:16ID:???
>>543
そうか。「最新 PHPハンドブック」のサンプルソースの
ページを見ていて、なんでかなーと思っていた疑問が
解決した。
・・・が、面倒な仕様変更だね。仕方ないか。
0545nobodyさん04/09/26 19:36:27ID:???
>>544
例えばこんな関数があるとする。

function check(){
 if( 送信されたフォームデータのチェック ){
  $flag = true;
 }
 if( $flag == true ){
  return true;
 } else {
  return false;
 }
}

これを使うスクリプトに http://hoge.com/check.php?flag=true なんてのを送られてきた場合、
フォームデータのチェックが通っても通らなくても true が返ってしまう。
これじゃ危険だろ?この返り値がtrueならデータの削除処理などをする、なんて時とかは特に。
0546nobodyさん04/09/26 19:42:30ID:???
まぁそんなヘンテコは関数作る奴は居ないけどな
いや、例としては分かるけど
0547528=54004/09/26 20:04:13ID:???
>>541
すいません
528=540です。

>>542
> {}? 最短マッチ(? がないと最長マッチになる)

最長マッチ入れてみましたがリンクが貼られませんでした。

$text = ereg_replace("{\n}(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
0548nobodyさん04/09/26 20:13:53ID:???
http://php.s3.to/man/ref.pcre.html
こっちこっち
0549nobodyさん04/09/26 20:17:22ID:???
何でそんなに回りくどいことしようとしてるの?
改行の次は行頭だから、
^(https?|ftp)
こっちじゃ駄目なん?
0550528=54004/09/26 20:32:42ID:???
>>548
>>549

その二つを織り交ぜて変更しました。

$text = preg_replace("^(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);

ついにエラーが出て動かなくなりました。
すいません、僕は愚図でノロマな亀です…。
0551528=54004/09/26 20:43:37ID:???
あ、エラーは出てないや。
ただ、$textが空っぽになった模様。
0552nobodyさん04/09/26 20:46:18ID:???
何がしたいのか見えてこない
0553nobodyさん04/09/26 20:50:23ID:???
そりゃあーた
preg_replace_allしないと
0554528=54004/09/26 20:50:40ID:???
>>552
単純に、頭がhttp|ftpで始まる行があったら自動で<a>タグのリンクをくっつけたいんです。

$text = ereg_replace("(^https?|^ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);

行頭の「^」の位置を増やしてみたけどスルーされるなあ。
■ このスレッドは過去ログ倉庫に格納されています