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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/03/16(日) 17:23:27ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0232nobodyさん2008/03/23(日) 13:23:56ID:???
どこで聞けばいいのでしょうか?
一番、ここが近いような感じがしたのでここで質問させてもらいました。
0233nobodyさん2008/03/23(日) 13:24:34ID:???
>>230
php.iniで設定できる項目があるから、それをやれば一発。
わざわざアップローダーを探す必要ない。
0234nobodyさん2008/03/23(日) 13:38:33ID:???
>>233
ファイル種別ごとに制限するのってどうやるの?
0235nobodyさん2008/03/23(日) 13:41:00ID:???
MAX_UPLOAD_SIZE_PER_MIMETYPEか
0236nobodyさん2008/03/23(日) 14:00:45ID:???
そんなディレクティブ無いんだが…
ぐぐってもヒットしねーし
0237nobodyさん2008/03/23(日) 14:00:51ID:???
>>235
http://www.google.co.jp/search?hl=ja&q=MAX_UPLOAD_SIZE_PER_MIMETYPE&btnG=%E6%A4%9C%E7%B4%A2&lr=
HITしないのだが・・・汗
0238nobodyさん2008/03/23(日) 14:09:29ID:???
>>235
>>141→>>145→>>150か。
0239nobodyさん2008/03/23(日) 14:12:44ID:???
無いから諦めるのか、無いなら作ってみるのか、人生の分かれ道だな。
0240nobodyさん2008/03/23(日) 14:48:35ID:???
前スレ見れないorz
0241nobodyさん2008/03/23(日) 16:23:02ID:???
iniで設定した
サイズ以下
なら
_FILES情報を参照して
○×を
判断するコードを
書けば
済
む









よ
0242nobodyさん2008/03/23(日) 16:44:26ID:???
MAX_UPLOAD_SIZE って自鯖が前提??
0243nobodyさん2008/03/23(日) 16:54:24ID:???
そんなことはない
0244nobodyさん2008/03/24(月) 00:30:37ID:uH/l/FDX
mktime の挙動について知りたいのですが最新バージョンでは
サマータイムの指定が消えているときいたのですが
サマータイム期の時間を入れると勝手に考慮して返してくるのでしょうか?
0245nobodyさん2008/03/24(月) 00:33:21ID:???
タイムゾーンがそうなっていればyes
0246nobodyさん2008/03/24(月) 01:15:16ID:9vjRnJNj
Cookieの有効/無効を確認する方法についてですが、
初回アクセス時にCookieを送信 → 再読み込み(?)してCookieを取得できるかどうかで判断
という方法しか思いつかないのですが、初回アクセス時に確認する方法はないでしょうか?
0247nobodyさん2008/03/24(月) 01:17:40ID:???
>>246
php.iniで確かそれを設定する方法があったと思う。
0248nobodyさん2008/03/24(月) 01:17:43ID:???
初回アクセス時に確認するならcookieはいつセットされんの?
0249nobodyさん2008/03/24(月) 01:22:08ID:???
セットしないでって事じゃないの?そんな方法知らんけど
0250nobodyさん2008/03/24(月) 01:32:39ID:???
COOKIE_FROM_FARST_ACCESS = true
0251nobodyさん2008/03/24(月) 01:39:23ID:???
そもそも、cookieって何で必要なんだろう?
httpパケットが送信元のブラウザに返ってくるということは、
httpレベルでコネクションが保障されているわけだろ。
同じパソコンで複数のコネクションをしていた時なら、保障はされないが、
それは仕様ということで問題ないと思うのだが。
0252nobodyさん2008/03/24(月) 01:40:10ID:???
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&num=50&q=COOKIE_FROM_FARST_ACCESS
0253nobodyさん2008/03/24(月) 01:41:00ID:???
一番最初にはセットされないで
次からのアクセスでcookieは判定できるようになるからムーリー
0254nobodyさん2008/03/24(月) 02:00:56ID:???
php4のforeachでオブジェクトの入った連想配列を参照渡しで回したいんだけど
foreach ($foo as &$bar)ってやったらエラーorz

どう書けばいいんだろ…
そもそも無理なのかな?
0255nobodyさん2008/03/24(月) 02:06:51ID:???
>>254
困ったならマニュアルを何故見ない
http://jp2.php.net/foreach
0256nobodyさん2008/03/24(月) 02:21:01ID:???
>>251 春だねぇ。
02572542008/03/24(月) 03:25:37ID:???
>>255スマソ下の方まで読んでなかった

php4のforeachは参照渡し出来ないのね
Notes見て書き直した thx
0258nobodyさん2008/03/24(月) 08:12:46ID:0RNOryeF
困ってます。
/home/username/www/foo.php
を用意し、このスクリプト内で
shell_exec("/home/username/www/bar.php");
としているのですが、期待する動作をしてくれません。
(反応がなくなり、しばらくするとService Temporarily Unavailable
しか表示されなくなります)
動作させる方法はないでしょうか?

●foo.php
<?php echo shell_exec("/home/username/www/bar.php"); ?>

●bar.php(パーミッションは705)
#! /usr/local/bin/php
<?php echo 'hoge'; ?>

●環境
FreeBSD
www639.sakura.ne.jp
Apache/1.3.39 (Unix)
PHP Version 4.4.8
Server API CGI
0259nobodyさん2008/03/24(月) 10:22:43ID:???
safe-modeとかじゃないの?
0260nobodyさん2008/03/24(月) 10:53:22ID:???
それだと何にも動作しないだろ

"php /PATH/TO/FILE"
0261nobodyさん2008/03/24(月) 11:26:50ID:0RNOryeF
>>260

●foo.php
<?php echo shell_exec('php -f '.dirname(__FILE__).'/bar.php'); ?>
●bar.php
<?php echo 'hoge'; ?>

としてみましたが、状況変わらずです。
0262nobodyさん2008/03/24(月) 13:00:12ID:BuclIAIb
この流れで申し訳ないんだがちょっと質問です。

今サーバ二つ借りてるんですが
少し疑問に思ったことがあったのでお願いします。

AサーバからBサーバのphpをrequireしてみたらできました。
プログラムもしっかり動いてます。

これって危険なんじゃないかと思いますがそんなこともないのでしょうか?
.htaccessのリファラとかで規制するものなのでしょうか?

よろしくお願いします。
0263nobodyさん2008/03/24(月) 13:02:53ID:???
bサーバのphp中の処理がrequireできたの?
0264nobodyさん2008/03/24(月) 13:11:40ID:BuclIAIb
>>263
そうですね。


Aサーバのphp
<?php
require_once("http://www.Bサーバ.com/hoge.php");
?>

Bサーバのhoge.php

<?php
echo "aaa";
?>


こんな感じです。
0265nobodyさん2008/03/24(月) 13:27:33ID:???
よくもそんな恐ろしいことを…
0266nobodyさん2008/03/24(月) 13:32:08ID:???
ワロタ
0267nobodyさん2008/03/24(月) 13:34:17ID:BuclIAIb
>>265
具体的にどう恐ろしいのでしょうか…?

1.無断で他サーバに接続し、勝手にプログラムを使用していること。
2.サーバの管理状態の適当さ

今パッと思いつくのがこの程度なのですが。
0268nobodyさん2008/03/24(月) 13:59:15ID:???
偽装し放題だな。
0269nobodyさん2008/03/24(月) 14:03:28ID:???
262さんに質問です。
こんなことは可能ですか?

Aサーバのphp
<?php
$hoge_str="ほげほげ";
require_once("http://www.Bサーバ.com/hoge.php");
?>

Bサーバのhoge.php
<?php
echo $hoge_str;
?>
0270nobodyさん2008/03/24(月) 14:26:16ID:BuclIAIb
>>269
できませんね。

requireでもphpで処理して出力したHTMLしか取得してないということですかね。
少し勘違いしてました。

ありがとうございました。
0271nobodyさん2008/03/24(月) 14:31:06ID:???
おぉ恐ろしい
0272nobodyさん2008/03/24(月) 15:11:37ID:gLm40CNz
require_once "HTTP/Request.php";
$req =& new HTTP_Request($url);
if (!PEAR::isError($req->sendRequest())) {
$body = $req->getResponseBody(); }

$bodyが大きすぎる場合があります
例えば$bodyを5KByteだけ読み込みたい場合はどうすればいいでしょう
0273nobodyさん2008/03/24(月) 15:37:15ID:???
substr
0274nobodyさん2008/03/24(月) 15:48:51ID:???
>>273
ありがとう
0275nobodyさん2008/03/24(月) 17:35:29ID:???
それだと全部読んで5kにつめるからwhile分回しのがいいやね
あるいは何バイトまで読むか関数に引数いれとくとか
0276nobodyさん2008/03/24(月) 17:46:23ID:???
ID:BuclIAIbはネ申!
0277nobodyさん2008/03/24(月) 17:49:58ID:???
他サーバの呼び出せたらAPI作ることに関しては自由度が高まりそうだが
セキュリティ的に不可能じゃね?試してないが
0278nobodyさん2008/03/24(月) 20:18:25ID:???
APIって基本的にXML化されたファイルを読み込んで
PHPで処理する方式だろ?AmazonAPIとかGoogleとかそうだったはず。
0279nobodyさん2008/03/24(月) 21:00:43ID:???
>>278
簡単にいえば内部で使っているものを外部でも簡単に使えるようにするための仕組み。

例えば内部処理だけで使っている配列を、外部の人も使いたいといった場合、
配列にアクセスするための仕組みを提供したりする。
方法は配列を返す関数を作ってgetリクエストで呼び出したり、
配列をXMLに書き出してXMLで提供したり。
0280nobodyさん2008/03/24(月) 21:42:32ID:???
このスレには中高生しかいないw
0281nobodyさん2008/03/25(火) 00:03:26ID:???
>>280
中高生しかいないんですか?ということは>>280さんも中高生?
僕は中1です。
最近ホームページはじめたのでPHPに興味あります。
これで掲示板とカウンター作って将来会社たてたいとおもいます。
よろしく。
0282nobodyさん2008/03/25(火) 00:05:32ID:???
やるなら目標はもっとでかいことにしようぜ。
0283nobodyさん2008/03/25(火) 00:16:05ID:???
>>280
恥を知れ
0284nobodyさん2008/03/25(火) 00:18:02ID:???
突然ですが質問すみません

当方、PHP4.4.6でmb_send_mail でメール配信していたのですが、
PHP4.4.1 環境に移したところ

メール本文の途中が切れて送られるようになったり、
まったく空だったりするようになりました。
切れる場所も、文字数で切られている訳でもなく、
原因が掴めません。

メールが長い場合、(5KB以上程度?)の時に起こるようです。
しかし、MaxMessageSize を超えていることもなく・・・

似たような現象ご存知の方いらしゃれば
ご教授お願いします
0285nobodyさん2008/03/25(火) 01:31:10ID:9FmYRybR
シグマリオン3でPHPのコーディングしたいんですが
良いエディタないですか?
0286nobodyさん2008/03/25(火) 02:52:44ID:???
exec() あたりで1時間ほどかかるシェル処理をしたいんですが、
普通にブラウザから処理したらタイムアウトになりそうなんで、
何か良い方法ないでしょうか。
0287nobodyさん2008/03/25(火) 03:16:25ID:???
>>286
ブラウザに定期的に何かを出力すればいいんでない?
flushあたりの関数使って
一応set_time_limitを0にしてやったほうがいいと思う
まぁ普通にバッチ処理でいいと思うけど
0288nobodyさん2008/03/25(火) 03:16:42ID:???
>>286
何がしたいんだ
0289nobodyさん2008/03/25(火) 08:57:49ID:???
>>286
exec("重い処理処理.sh > /dev/null &");
0290nobodyさん2008/03/25(火) 09:15:14ID:tA2earVE
xbitのサーバーがphp4.4.18から4.3.9にダウングレードされるのですが
同じでphp4でも、コード修正が必要な事はあるのてじょうか?
0291nobodyさん2008/03/25(火) 09:17:33ID:???
>>290
http://php.net/ChangeLog-4.php
0292nobodyさん2008/03/25(火) 09:56:17ID:tA2earVE
ぉぉぉ
ありがとうございます
0293nobodyさん2008/03/25(火) 13:23:00ID:j8ua+z8X
すみません、質問します
スケジューラを作ってるんですが、カレンダーの画面で各日にちの
イベント名と簡単な概要が表示されるとします
この場合、たとえば3月なら31回(日にち分)sqlのリクエストをループまわして
そのイベント名なり概略なりを個別に受け取るべきなんでしょうか?
where month=3 and day=1 … day=31って感じで。
それとも、ループはせずにwhere month=3と一回だけにしてphpのプログラムで
結果を解析・表示すべきですか? どっちが効率がいいというか安全なのか、、
皆さんどうやってますか?
0294nobodyさん2008/03/25(火) 13:35:18ID:???
前者にどういうメリットがあると思ってるわけ?
02952932008/03/25(火) 13:56:51ID:j8ua+z8X
いやー、メリットなさそうだなと思いつつ、経験豊富なプロの方なら
別の考え方も提示してくれるかもと思ったもので。。
そんなことないみたいですね ありがとうございました!
0296nobodyさん2008/03/25(火) 14:44:38ID:???
やっぱ中高生しかいない。
0297nobodyさん2008/03/25(火) 16:37:28ID:DHM98VQb
会員ログインの仕組みなどで

ログイン→DBの登録情報を確認→正しければアクセス許可

としているのですが、ID情報をセッションで持ち回して
どのページでも上の処理を入れて毎回アクセスをチェックしています。
最近、こういう方法だとアクセスの度にSQLを発行するので良くないのでは?
っと思っているのですが、いかが思いますか?より良い方法があれば教えて下さい。
0298nobodyさん2008/03/25(火) 16:44:42ID:???
ログイン済みかどうか、
セキュリティを考慮したユーザID
をセッションに登録し
後の動作でそれを確認するのが普通だろ
0299nobodyさん2008/03/25(火) 17:50:35ID:???
>>293
クエリの回数が少なくなるようにしようぜ。
あとその日付をバラバラにしたカラムじゃ
「2007年3月15日〜2008年3月15日を削除」とかやってらんないぜ。
「日ごとのスケジュール登録件数」が欲しくても集計使えないぜ。
日付にふさわしいデータ型使え。

>>297
セッション変数に残すのは認証されているかどうかを表すフラグと、
認証されている場合はそのユーザの識別子、この二つだけでも十分なんだぜ。
クエリの事だが必要だったら遠慮せず発行するもんだぜ。
データベースを使うセッションハンドラとかよくある話だしな。
0300nobodyさん2008/03/25(火) 21:10:54ID:???
>>298
素人丸出しのレスだなwww
二重ログインという言葉自体知らないんだな。
0301nobodyさん2008/03/25(火) 21:12:46ID:???
>>300
経験不足っぽいレスだな
0302nobodyさん2008/03/25(火) 21:59:53ID:1pYd+uTd
こんばんわ

ログインしてページ内容を取得したいのですが
ヘッダーに
<noscript>
<meta http-equiv="Refresh" content="0; URL=http://javasをonにしてね.html"/>
</noscript>
という壁がありまして・・・どうにかいい方法はないのでしょうか?
0303nobodyさん2008/03/25(火) 22:00:46ID:???
>>300 >>298のレスから「二重ログイン」がどこから出てくるんだ?
覚えた言葉をすぐ使いたがる中高生だろオマエw
0304nobodyさん2008/03/25(火) 22:06:37ID:???
女子高生ですが何か?
0305nobodyさん2008/03/25(火) 22:23:04ID:???
>>304
んなヒゲの生えた女子高生がおるか!
0306nobodyさん2008/03/25(火) 22:40:34ID:???
>>304
メールくだしあ

「中高生」って流行ってるの?
0307nobodyさん2008/03/25(火) 22:40:56ID:???
>>303
DBを使う代わりに、セッションにログイン情報を格納すればすむという安易な考えが本当素人考え。
0308nobodyさん2008/03/25(火) 22:55:33ID:???
>>306
流行ってるわけない。
春休みで変なのが沸いてるだけだから華麗にヌルー
0309nobodyさん2008/03/26(水) 00:43:09ID:???
>>307
エスパーか藻前は?
03103072008/03/26(水) 00:57:54ID:???
なんでわかったんですか!
はい、伊藤です。
0311nobodyさん2008/03/26(水) 02:43:19ID:???
エスパーときたら、魔美
0312nobodyさん2008/03/26(水) 02:46:00ID:???
>>311
kwsk
0313nobodyさん2008/03/26(水) 03:44:58ID:???
毎回のように娘をベッドの上で裸にする父親が
主人公のアニメ・漫画。
0314nobodyさん2008/03/26(水) 06:12:28ID:???
愛情の反対は嫌悪じゃなくて、無関心だと言う。

どうしてココの住民は、無関心ではいられないのだろうか。
何かとすぐ切れやすい子どもが、このスレに体現されているとしか評価しようがない。
0315nobodyさん2008/03/26(水) 07:17:30ID:BV+jSJbq
phpの質問なのかmysqlの質問なのかわからないのですが、
やりたい事がphpを使って操作する事なのでこちらで質問させて頂きます。

php+mysqlでアクセス解析を作りたいのですが、UA、リファラー、現在の日時等を取得して、
UA、リンク元、累計アクセス数、日別・月別・曜日別アクセス数などを表示したい場合、
全て1つのテーブルに保存するのと、項目ごとに別のテーブルに保存するのではどちらが効率的でしょうか?

書き方がわかりにくいと思いますが、全て1つのテーブルに保存する場合、
1行目 useragent=IE6, referer=http〜, date=2008/1/1 0:00:00
2行目 useragent=IE5, referer=http〜, date=2008/1/1 0:00:00
という形になり、テーブルの内容を全て配列に入れてからphp側で検索・ソート等して出力するか、
表示したい項目ごとにデータベース側で検索して出力する事になると思います。

項目ごとにテーブルを作る場合、
テーブル「useragent」
name count
IE6  2
IE7  5
という形になり、テーブルの内容をほとんどそのまま出力すればいいだけになります。

アクセス時の処理では前者の方が後者より速く負荷もかからないと思うのですが、
表示時の処理はログが増えるほど前者が後者より遅く、高負荷になるのではないかと考えています。

mysqlについてはphpmyadminで軽く触った程度なので、根本的に間違っているor意味不明な質問かもしれませんが、
「ここはおかしい」や「こうした方がいい」等のアドバイスでも構いませんので、ご回答お願い致します。
0316nobodyさん2008/03/26(水) 09:07:29ID:???
>>315
サイトのアクセス状況による
一日数十とか数百単位しかアクセス無いなら前者で良いだろうけど
2ちゃん並にくることが予測されるなら後者の方が良いと思う
とりあえず前者でサイト開いてみて段階踏んだらどうよ?

あとログとしてデータが残り続けるなら前者である一定の値にきたら
offsetかましてcountの効率を上げる方法もある…
0317nobodyさん2008/03/26(水) 09:14:01ID:???
>一日数十とか数百単位しかアクセス無いなら前者で良いだろうけど
>2ちゃん並にくることが予測されるなら後者の方が良いと思う

10か3億か、ってお前極端すぎww

病院に行け
0318nobodyさん2008/03/26(水) 09:15:32ID:???
テーブル設計の問題だなぁ
>>315
dbスレ行ったほうがいいんじゃね?

つか普通は全部纏めて入れる
日ごとにUAの集計したら「午前中」とか「リファラの無いIE6」とかが欲しくなった時どうにもならないし

表示スクリプトは数十行だろうから、とりあえず両方書いてダミーデータで速度見るのもいいかもね
03193022008/03/26(水) 09:50:54ID:ynVuNR2N
やっぱり無理ですよね・・・
0320nobodyさん2008/03/26(水) 11:09:58ID:???
>>319
何がしたいのかよくわかんねーんだわ
0321nobodyさん2008/03/26(水) 11:19:54ID:ynVuNR2N
>>320
mixiなりアマゾンなり、phpからログインして情報取れますよね?
例えば今回liveアカウントへいこうとすると
javascriptを有効にしてくださいというページに飛ばされてしまいます
単純にnoscriptでジャンプされてしまうのですが、どうしたら良いのか思いつかず・・・
0322nobodyさん2008/03/26(水) 11:22:07ID:???
phpで取得したときに勝手に飛ばされるっけ?
0323nobodyさん2008/03/26(水) 11:55:25ID:YOiMNcCa
>>322
いや飛ばされない。IEで解決。
0324nobodyさん2008/03/26(水) 12:00:13ID:???
意味分からんことばっか言って混乱させるなよ・・orz
0325nobodyさん2008/03/26(水) 12:03:32ID:???
奥さん、昨晩旦那が浮気していましたよ。
03263022008/03/26(水) 12:12:25ID:ynVuNR2N
ちなみにPEARでやってみているんですが
最初のレスポンスの時点でjs有効にしてねというページが返ってきます
0327nobodyさん2008/03/26(水) 12:16:09ID:???
まさかmetaが入ってる文字列を出力して開いてるなんてオチじゃないだろうな?
0328nobodyさん2008/03/26(水) 12:37:10ID:tSZRDvWr
PHPでXML(Atom)をつかっての送受信をしたいのですが、
署名による認証のしかたがわかりません・・。
(PEARにもXML-RPCはあるのですが、暗号化や複合化ができるようなものはなさそうで)
わかる方がいればおしえてください。
03293022008/03/26(水) 14:58:59ID:ynVuNR2N
標準関数でも
いろいろ試して見ましたが、解決せず
PEARスレに行ってきます
ありがとうございました
0330nobodyさん2008/03/26(水) 15:07:16ID:???
行ってらっしゃ、気をつけて。(^ー^)ノ~~
0331nobodyさん2008/03/26(水) 16:08:50ID:oGx/hZT1
$test = "1,2,99";
if(strstr($test,"9")){
echo "含まれています";
}

とした場合、$test内に「9」が含まれていないのに、
「99」でもヒットされてしまいます。どういう風に修正すればいいのでしょうか?
0332nobodyさん2008/03/26(水) 16:08:58ID:???
奥さん、昨晩旦那が浮気していましたよ。
■ このスレッドは過去ログ倉庫に格納されています