【PHP】質問スレッド Part5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/11 14:15ID:FWA0CpdU■本家
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あたりにきっと誰かが……。
0482471
02/10/21 11:00ID:???ログに$_SERVER[PHP_SELF]とfunction名と行を出そうと思ってるのですが
function名を文字列として渡すのは面倒&function名が変わったら修正増
ということでなんとかして関数その他で取れないかな、と。
0484nobodyさん
02/10/21 16:27ID:???・ひたすらがんばる
$array = array("a", "b", "c".......................................................);
・forでまわしてみる
for($i = ord("a").................................................)
というのが簡単に思いつくんですが、もう少し簡単で綺麗な
書き方はないでしょうか
0485nobodyさん
02/10/21 16:59ID:RKsFdcBa$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $a);
print_r($alpha);
こんなんで、どや
0486すいません
02/10/21 17:00ID:???本当にくだらない質問なんですが
PHPで、ユーザーエージェントによって
携帯端末用とPC閲覧用で表示を変えたいのですが
どういう風にすればよいのでしょうか?
なんとなく形はわかるんですが、それを実際に
PHPで動作させるのがわかりません><
たぶん・・・
環境変数からユーザーエージェントを見て
i-mode/j-sky/ezwebならこっちを表示
それ以外ならアッチを表示・・・というプログラムになると思うのですが・・・。
どなたかお優しい方ご教授お願いいたします。
0487485
02/10/21 17:01ID:???$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $alpha);
print_r($a);
0490458
02/10/21 20:12ID:Z25MjzcQUserAgentのデータベースを作りましょう。
http://www.hyuki.com/yukiwiki/wiki.cgi?UserAgent
サルにもわかる正規表現入門
http://www.mnet.ne.jp/~nakama/regexp1.html
制御構造について
http://homepage1.nifty.com/~takaot/prprpr/controlblock.html
PHPマニュアル
http://www.php.net/manual/ja/
0491hmk
02/10/21 21:09ID:???私は、$array = array("a", "b",...); にするべきだと思う。
他人がコードを読むときのことを考えると、意味がはっきりするほうが良いと思います。
0492458
02/10/21 21:14ID:Z25MjzcQ同意。
たとえだと思うけど、a〜z間での配列を作る前に、それが本当に必要なのか、
検討すべきだと思う。
俺は、他人がコードを読むときなんてあんまりかんがえんが、
a-zと綺麗に並んだ配列を用意する時点で遠回りしている感じはするね。
で、1字づつの配列でいいのなら、
$array="abcdefg......";
でええのとちゃう。
0494nobodyさん
02/10/22 00:47ID:n3viipFn簡易伝言板のようなものを作ってるんですが、ログファイルが変なことに。。。
---------
name<>mes<>date
name<>mes<>date
name<>mes<>date
--------
といった感じに、改行数がどんどん多くなってしまいます。。。
表示などには特に問題は起きないんですが、ログファイルが見づらくなるので。。。
よろしければ対策を教えて下さい。
0495494
02/10/22 00:48ID:n3viipFnif($_POST{'name'} && $_POST{'mes'}) {
$name = $_POST{'name'};
$mes = $_POST{'mes'};
// 現在日時取得
$date = gmdate("d(D) h:i a", time() + 60 * 60 * 9);
// フォーマット
$data = "$name<>$mes<>$date\n";
$logs = file($logfile);
$fp = fopen($logfile, "w");
fputs($fp, $data);
$log_max--;
for($i=0; $i<$log_max; $i++) {
fputs($fp, $logs[$i]);
}
fclose($fp);
}
http://php.s3.to/tt/tt5.php
ここにあるサンプルのゲスブも同じ事態になりました。。。
0496nobodyさん
02/10/22 09:50ID:???0497nobodyさん
02/10/22 10:08ID:TXJWZ2fS1台のサーバでApacheのVirtualHost機能を使って
aaa.hogehoge.com
bbb.hogehoge.com
を作るとします(ドメインは同じ)
この場合、aaa.hogehoge.comで登録したセッション変数を
bbb.hogehoge.comで参照することはできるのでしょうか?
同一サーバなので/tmpが参照できるから問題ないのかなあとか
思うんですけど、環境が作れなくて実験できません。
やったことのある方、すみませんが教えてください。
基本的には可能。
但し、cookie経由でSessionIDを取得することは普通出来ない。
相対リンクでないので、URLに自動付加もしてくれない。
で、PHPSESSID=....を自力で出力する必要があると思う。
0499497
02/10/22 16:46ID:TXJWZ2fSPHPマニュアルに「session.cookie_domain」ってのがあったんですけど
これを指定すればcookie経由で使えないですかね?
教えてクンでごめんなさい。
なるほど、
session.cookie_domain=hogehoge.com
ってことだな。
運営上セキュリティに問題がない場合はそれでいいんじゃない。
0501nobodyさん
02/10/22 18:25ID:AaVCn9+u\rコードを削除すればいい。
0502458
02/10/22 19:13ID:TmLjz4JJデリミタをタブやカンマじゃなくて<>にするのは、
流行ってるの? 壺の影響か?
0503nobodyさん
02/10/22 19:45ID:???俺もやっているが、俺はKENT氏の真似。つか、ログ互換にしたかったので使った。
<>は、htmlでは <> に変換されるから、内部表現に使えて便利。
カンマにしてcsvにしても良いが、カンマを含む文字列を使う時は""でくくる必要が
あるけど、fgetcsvを使うほうが効率的かな?
0504458
02/10/22 19:48ID:X7v1eaNofwritecsv(int fp, array data, str delimiter)
というのがあれば便利なんだけどね。
0505nobodyさん
02/10/22 20:43ID:???流行ってるとかじゃなくて単に普通の文書中では
まず使われる事がなく、且つフィールドの境界が
目で見て分かりやすいからじゃないのかな。
0507503
02/10/22 21:12ID:???ぉぃぉぃ、俺は &lt;&gt; って書いたはずだぞ。
2chは & を & に変換しないのか?
0509努力が&rlo;いなり足
02/10/22 21:38ID:???0510503
02/10/22 21:50ID:???> <>は、htmlでは <> に変換されるから
ぉぃぉぃ、俺は <> って書いたはずだぞ。
2chは & を & に変換しないのか?
0513nobodyさん
02/10/23 00:49ID:y/QVQMdnことにしている。
読み出すときに、<>&"'などを「&xx;」に変換して表示するようにしている。
のでデリミタを<>はしないです。
0514nobodyさん
02/10/23 02:04ID:???0516nobodyさん
02/10/23 03:06ID:???\t オーソドクスに
↓
, CSV
↓
| psqlマンセー
↓
<> Kentさん好き!!
↓
Unicode NULLモジ
↓
\t に戻る。
0517nobodyさん
02/10/23 07:08ID:???0519nobodyさん
02/10/23 11:25ID:???0520nobodyさん
02/10/23 13:02ID:knm2mfqY末尾に要素を追加するにはどうすればいいのでしょうか?
0522486すいません
02/10/23 17:28ID:???一応参考程度に自分がやったソースを・・・。
<?php
$test = explode("/",$HTTP_USER_AGENT);
if ($test[0] == 'DoCoMo')//←i-mode閲覧
{
●●●
}
else//←PC閲覧
{
○○○
}
?>
汚してすいません。
0523nobodyさん
02/10/23 18:43ID:???ファイルの先頭に#!/usr/local/bin/php4が必要だったりして、
Apacheの一部として動作するPHPと違ってたりするので、
PHP関連の書籍とか見ても、それに触れてるものを見かけません。
CGIでPHPを使うことに関して詳しいHPとか書籍とかあったら教えてください。
0524458
02/10/23 21:10ID:???foreach ($ua as $val) {
if (preg_match("/$". $val ."\//", $_ENV['HTTP_USER_AGENT'])) {
$pda = true;
break;
}
}
if ($pda === true) {
携帯端末用処理;
} else {
一般向け処理;
}
マニュアルにはPOSIX準拠のeregよりもpregの方が早いと書いてある。
0525nobodyさん
02/10/24 05:31ID:5F/44dYx0526nobodyさん
02/10/24 06:13ID:kpV1tydg同じ名前の最後の項目しか表示されません。何が悪いのでしょうか?
<input type="checkbox" name="1" value="あ">
<input type="checkbox" name="1" value="い">
<input type="checkbox" name="1" value="う">
<input type="checkbox" name="1" value="え">
foreach($_REQUEST as $key => $value) {
if($key == "1") { print $value; } //項目1を表示
}
0527526
02/10/24 06:15ID:kpV1tydg同じ名前の最後の項目しか表示されません
↓
同じ名前のチェックした最後の項目しか表示されません
の間違えです。
whileでループさせても同じ結果です。
0528nobodyさん
02/10/24 07:54ID:uytwvD+vPHPのincludeを使ってXSLを呼び出すことはできますか?
0529nobodyさん
02/10/24 08:18ID:???<input type="checkbox" name="1[]" value="あ">
<input type="checkbox" name="1[]" value="い">
<input type="checkbox" name="1[]" value="う">
<input type="checkbox" name="1[]" value="え">
それと、nameに数字はよろしくなさげ
$1とすると別の解釈される場合もあったような・・・
その動作で正しい。
名前を変えるか、配列に汁。
0532531
02/10/24 08:23ID:???0533nobodyさん
02/10/24 12:58ID:7cFeMhsmStringBufferで解決したという経験がありました。
PHPでは . で連結するよりよい(軽い)方法は
用意されていないのでしょうか?
. 連結でもさすがにJavaほど重くならないようですが。
0534nobodyさん
02/10/24 14:09ID:rG1bP6CfIEやNNの右上についているツールや履歴の表示非表示を切り替えるボタンって
無効化できますか?
javascript の Openwindow()でツールバーやURLの表示無しオプションで
コンテンツ表示しているのに、そのボタンでURLなどが表示されてしまいます。
FLASHのゲームコンテンツなど、このボタンのおかげで困るケースがあります。
0536nobodyさん
02/10/24 15:35ID:F6+LZK6Zレスキューってどうなったんですか?
0538nobodyさん
02/10/24 16:16ID:IkTbxMct見たらArrayって入れられてたんだけど(fputs(),fwrite())
0540526
02/10/24 17:44ID:kpV1tydgあーそうなんですか。なるほど。
perlのときはそれでいけたような気がするけど。うーん。
0541nobodyさん
02/10/24 17:49ID:???mb_send_mail で添付ファイルを送信するやり方がよくわかりません。
どのように指定すればよいのでしょうか?
0542nobodyさん
02/10/24 17:59ID:???0543nobodyさん
02/10/24 20:52ID:Ya2zNF/W変数を破棄すると、どんな利点があるの?
例えば、メモリが解放されるとか? <- この考えであってる?
普通の変数を破棄するときはあまりないけど、配列を弄っているとき
例えば不必要な要素を破棄して並べ替えみたいなときに、たまに使う。
0547nobodyさん
02/10/25 00:23ID:???負荷軽減のスレでちょっと話題になりかけていたんですが。
0548538
02/10/25 00:46ID:AgSiPFdD>>539
ありがとうございます。
これで保存はちゃんと出きるようになりました。
けど読み込みが上手くできません。。。
色々実験してみたんですが、
$file = file($filepath);
というように読み込んだ場合、配列として代入されるため
$file = unserialize($file);
としてもうまく動かないようなのですが。。。
とりあえず配列$fileを更にシリアル化して変数に直し、
それをunserialize()で配列に戻して、更にその要素をunserialize()で戻して
ファイルの各要素を取り出すという効率無視の処理をしているんですが、
何かもっと効率のいい方法はないでしょうか。
$file = file("$filepath");
$file = serialize($file);
$file = unserialize($file);
$file = unserialize($file[0]);
0549538
02/10/25 00:47ID:AgSiPFdD訂正(するまでもないですけど
× $file = file("$filepath");
○ $file = file($filepath);
0550荒川太郎
02/10/25 12:33ID:ykDTClkjオラクルクライアントが入ってないと、アクセスできないでしょうか?
自分の環境で試したところ、PHPをコンパイル後なら、$ORACLE_HOMEの中にある、
Network と sqlplus の二つのディレクトリが残っていれば動きましたが、他の環境に
そのファイルを単純にコピーしても動くか疑問なのと、ライセンス違反のような気がす
るので、できればOracleクライアントなしで接続できればと考えています。
0551538
02/10/25 12:34ID:AgSiPFdD我ながら意味不明なことしてました。
スマソ
0552nobodyさん
02/10/25 14:40ID:iOPLrEschttp://php.s3.to/data/#dl
PHPを使ってasf(or asx) ファイルを再生させずに
ダウンロードさせたいのですが
asfの場合プラグインが動いてしまい再生が始まってしまいます。
asxの場合プラグインが反応し再生されません。
どうしたら良いのでしょうか?
0554nobodyさん
02/10/25 15:35ID:???とか書いてみる。
055761
02/10/25 19:35ID:???ご報告が遅れました。ナマケモノレススマソ…。
0558nobodyさん
02/10/25 19:42ID:???header("Content-type: video/x-ms-asf");
header("Content-Disposition: attachment; filename=hogehoge.asf");
/* asf の内容 */
0559nobodyさん
02/10/25 20:06ID:???0560nobodyさん
02/10/25 20:31ID:???4.2.0以降導入で、php.ini-dist, php.ini-recomendedをベースに
php.iniを作成した奴でregister_globalsを知らない奴はOFF
4.1.0以降4.2.0未満導入でphp.ini-distベースならOn、
php.ini-recomendedベースならOff
それ以前は、On
最近の厨は、Offだけど、Onが標準だったときのスクリプトを
拾ってきて質問しまくり
過去の資産のしがらみでOnは結構いる
厨と、まじめにセキュリティ対策を兼ねてコーディングを修正
したところはOff
厨が増加しているからOff比率も上がってるはず、たぶん
0561nobodyさん
02/10/25 20:38ID:???漏れは、Onの時のスクリプトの先頭に
import_request_variables を書き加えているだけで
よしとしていますが、やばいですか?
新規スクリプトでも$_POST['']とか書くの面倒なので
import_request_variables 使ってます。
php3もつかってるでし。
0562nobodyさん
02/10/25 20:51ID:???別にかまわんが、
<?php
// $debug = 1
if ($debug = 1) {
// coding for debug
// みちゃだめよデータ表示部分
}
// 後のコード
?>
みたいに未代入の変数を0と仮定した様なコーディングしてると
import_request_variablesはregister_globals=Onと一緒で意味無し
ttp://localhost/test.php?debug=1
でアクセスされると見えちゃう。
だから、未代入変数の評価が無いようにコーディングできるなら
register_globals=Onでもいいが、ケアレスミスの防止のためにも
_POST/_GET/_COOKIE['hoge']を使っておくのが安心なわけ
まじれすしてしまった
0563561
02/10/25 22:19ID:???なるほど、
これからは$_POSTなどを使うようにします。
今までは、たとえばDBをいじるときなど(つまりSELECT以外)のときは
POSTしか受け付けない、といったポリシーで構築していたのですが、
その場合のみimport_request_variablesを使わないようにしていました。
import_request_variables の代わりに
function hoge ($label) {
if (@$_POST[$label]) {
$$label= $_POST[$label];
}
}
という風に問題のないものだけインポートするというのはだめですか?
0564561
02/10/25 22:32ID:???たとえばその値がPOSTされたモノでもGETされたモノでもいいけど、Cookie
では困る。という場合は
import_request_variablesでは困るわけですね。
でも、
if (($_POST['hoge'] == "bar") || ($_GET['hoge'] == "bar")) {
hogehoge;
}
とするのはあまりにも面倒です。
この場合、セキュリティーを考慮しつつ、ミニマルエフォートでかいけつするにはどうしたらいいですか・
よろしくお願いします。
variables_order と $_REQUEST でどうよ。
0566nobodyさん
02/10/25 23:32ID:8xkByx7Qdefault値をあげたいのですが、
if(!isset($_GET['id'])
if(empty($_GET['id'])
if ($_GET['id'] == "")
のどちらが望ましいですか?
0567nobodyさん
02/10/25 23:34ID:0gq4LIHAケースバイケース
ってか、必須項目ならそれ以前に大切な事があるだろう。
0569nobodyさん
02/10/26 00:35ID:???誰か知ってたらこっそり教えてください。
言語は日英独のいずれかで。
0570nobodyさん
02/10/26 00:36ID:???必須か必須でないの2択だけなのなら
$var = (empty($_GET['id'])) ? 'デフォルト値' : $_GET['id']);
って記述は良く使うかも。
0572nobodyさん
02/10/26 19:11ID:cHKiK7hP迷惑メール攻撃スレ【未承諾広告※】
http://cocoa.2ch.net/test/read.cgi/phs/1033486267/l50
0573nobodyさん
02/10/26 19:25ID:yRABunW1$b="";
で、$aと$bを判別する方法はありますか?
0575さるる
02/10/26 20:20ID:???お許しください。
無料のPHPな鯖を、作ってみますた。
また、質問をこっそりとすると思うので
よろしくお願いします。
http://fh.aaacafe.ne.jp/
0576573
02/10/26 20:37ID:yRABunW1$a=0;
$b="";
if($a==NULL) echo '$a==NULL<br>';
if($b==NULL) echo '$b==NULL';
を実行すると、
$a==NULL
$b==NULL
と表示されるんだけど、なんか間違ってる?
0577573
02/10/26 20:45ID:yRABunW1$b="";
if(is_null($a)) echo 'is_null($a)<br>';
if(is_null($b)) echo 'is_null($b)<br>';
では、何も返さなかったです。
0578573
02/10/26 20:49ID:???0579573
02/10/26 20:50ID:???0580nobodyさん
02/10/26 21:08ID:???ってどんなVerなの?
今最新が4.3.0なのに それの上があるの?
■ このスレッドは過去ログ倉庫に格納されています