【PHP】質問スレッドpart16【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/04/07 01:06ID:HTcWOpWf上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
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-5
0136nobodyさん
04/04/12 16:41ID:???なら余り考えない方が良いよ。
素人の浅知恵(煽りじゃなくて)
わかる言語(Perlか?)で、今使ってるスクリプトの
設計を見直す。わかる言語が無けりゃ、何種類かの
スクリプトを使用感や性能比較して選択する。
自動車だって乗ってる奴が全員エンジン設計や
車体設計が出来るわけじゃないだろ、それと同じ。
ユーザはユーザでやるべき事がある。それくらいはやれ。
0138nobodyさん
04/04/12 16:55ID:???だったら尚更どれかひとつの言語をちゃんと習熟した方が
良いと思う。Perlで全然問題ないよ。
囁きって私信だよね。
今ログはグローバルな発言と囁きで分けて、混合してるの?
それとも混在してるものを出力時にパーソナライズ?
0139nobodyさん
04/04/12 17:40ID:???あ。PHPって全部勝手にモジュールになるんだとおもってますた。(阿呆)
いわゆる普通のレン鯖だとphpはCGIになるんかな。
>>136
だいたい高速化はperlと同じだろー、だったらオーバーヘッド少ないほう使おうーという浅知恵。
>>137
レン鯖に入れてもらえないんじゃゴルァ!
>>138
現在の仕様
■ログファイル:
<b>モナー></b>えー、しんじらんなーい<br>
<b>ぎこ></b>電話番号教えてよ<br>[私信:モナー<>127.0.0.1]
■処理
while(<IN>){
next if (ログ行が私信 and 俺は私信を受け取る人物じゃない)
print $_;
}
0140nobodyさん
04/04/12 17:41ID:???「モナーgD45hj5aei0.htm、ぎこbR93DPaigy22.htm」
と用意して発言があったときに両方更新して、
リロードは<META HTTP-EQUIV="Refresh">、という方法。(IPを元にハッシュをつけて他人が見られないように)
2chのチャットスレで見たのは、更新された発言数行だけを得て、表示はjavascriptで行う方法。これは早かった。
ただ、チャットの表示形式はある程度の柔軟性・拡張性が必要です。
マルチルームで部屋ごとに別の設定が求められるためです。
極端な例としてはある月は発言色を動的にグラディエーションに、ある月は縦書きにするだとかが求められることもあります。
# ぜんぜんPHPスレじゃなくスマソ。
0141nobodyさん
04/04/12 17:51ID:N7Xr04dJTESTPAGE<br>
<form action="<? echo $_SERVER[PHP_SELF]; ?>" method="POST">
URL: <input type="text" size="60" name="url" value="http://www.yahoo.co.jp">
<input type="submit" value="get"><br>
<?php
if(ereg("^http://",$_POST[url]) && isset($_POST[url])):
$page = readfile($_POST[url]);
echo "<hr>総バイト数 $page";
endif;
?>
作動しないんですけど何が原因でしょうか?
0142nobodyさん
04/04/12 18:47ID:???mb_convert_encoding等の関数を利用するにはどうすればいいんでしょうか…?
0143nobodyさん
04/04/12 19:27ID:???php.iniでmbstringエクステンションを
ロードするように、コメントアウト
;extension=php_mbstring.dll
してるのを外す。それで上手くロードできなければ
マニュアルみてphp.iniの設定関係を見直せ。
0144nobodyさん
04/04/13 00:28ID:gpEMrt78ほとんど一緒ジャン。でかPerlの面倒なとこを関数化しちゃったのがPHPでそ?
0145nobodyさん
04/04/13 01:29ID:???あんまりPerlさわってないけど、CPANのライブラリ(といえばいいのか?)を
使いこなしている人は、関数でゴリゴリすることもないのかも。
もう少し日本語ドキュメントが充実すればいいのだろうけど。
0146nobodyさん
04/04/13 01:56ID:???できないことはないだろうね。
でも、PHPは関数が多すぎてめんどくさいのよ。
perlの関数なんて全部覚えきれる程度しかないから
それを使ってあとは自分で書いたほうが早いし。
0147nobodyさん
04/04/13 06:56ID:7nSUeYQsメール送信するとhotmailのバルクメール扱いになってしまいます。
これはサーバの設定が原因でしょうか?
0148nobodyさん
04/04/13 11:00ID:???必要になったときにWEBで検索かける
0149nobodyさん
04/04/13 11:50ID:???ttp://jp.php.net/manual/ja/funcref.php
はカテゴリ毎に分けられているので便利。
でも abc 並びなので英語とカタカナ混在で探すのが面倒。
abc → アイウエオ並びになると見やすくなりそう。
0151nobodyさん
04/04/13 12:22ID:???get_cwd() のように現在のファイル名だけを知りたいのだけど、何か適当な関数ありませんか。
前から気になってたんだけど、結局見つかってないんで。
パスの付いた価を取って explode() して array_shift() とかいう無駄な処理しか思いつきません。もうちょっと何とかならないかと。
0153nobodyさん
04/04/13 14:05ID:???下記のような方法を取っていたのですが、
これをphpで行う場合、multisortでは1項目でのソートしか出来ないと
マニュアルに記述されていますが、どのような処理でなら可能でしょうか?
@DATA = sort { (split(/,/,$b))[1] <=> (split(/,/,$a))[1] || (split(/,/,$a))[2] <=> (split(/,/,$b))[2]; } @DATA;
0154nobodyさん
04/04/13 14:37ID:Dw9h1MU+わかるかたいませんか?
0156nobodyさん
04/04/13 14:55ID:???$_SERVER[PHP_SELF] -> $_SERVER['PHP_SELF']
$_POST[url] -> $_POST['url']
0157nobodyさん
04/04/13 15:11ID:Dw9h1MU+php.iniですか・・・
>>156
やってみましたが動作しません。
エラーも出ずボタンを押しても無反応です。
0159nobodyさん
04/04/13 15:33ID:7nSUeYQs0160nobodyさん
04/04/13 15:39ID:7nSUeYQs0162nobodyさん
04/04/13 15:57ID:Dw9h1MU+これと同じように指定したページそのものを
表示したいのですが。
みなさん>>141で表示されますか?
ちなみにhttp://php.s3.to/net/get1.phpは表示されるので
やっぱりphp.iniなのでしょうか?
0164155
04/04/13 16:09ID:???そうなるとちょい気になるんだが、PHPのバージョンは?
>>163
いやいや、表示されないからお困りなんでしょ(^^;
0166nobodyさん
04/04/13 16:11ID:Dw9h1MU+TESTPAGE<br>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="GET">
URL: <input type="text" size="60" name="url" value="http://www.yahoo.co.jp">
<input type="submit" value="get"><br>
<?php
if(ereg("^http://",$_GET['url']) && isset($_GET['url'])):
$page = readfile($_GET['url']);
echo "<hr>総バイト数 $page";
endif;
?>
で挑戦してみたところURLは/test.php?url=http%3A%2F%2Fwww.yahoo.co.jpのように
しっかり渡されているようなのですが下にページが表示されない状態です
0167nobodyさん
04/04/13 16:13ID:Dw9h1MU+0168155
04/04/13 16:15ID:???$HTTP_POST_VARS使ってください....
0169nobodyさん
04/04/13 16:19ID:Dw9h1MU+やっぱりバージョンでしたか・・・・
管理者に頼んでUPしてもらいます。
0170nobodyさん
04/04/13 16:27ID:Dw9h1MU+これを使用した場合表示先>>141ならyahooの
アドレスは閲覧者にはどうやっても知られずに済みますか?
表示先のURIを知られたくないのですが・・・
0171nobodyさん
04/04/13 16:33ID:???0172nobodyさん
04/04/13 16:42ID:???ヽ|/
/ ̄ ̄ ̄`ヽ、
/ ヽ
/ \,, ,,/ |
| (●) (●)||| |
| / ̄⌒ ̄ヽ U.| ・・・・・・・・ゴクリ。
| | .l~ ̄~ヽ | |
|U ヽ  ̄~ ̄ ノ |
|  ̄ ̄ ̄ |
0173nobodyさん
04/04/13 16:43ID:???$_SERVER,$_GET,$_POSTなどのスーパーグローバル変数か使えるのはPHP4.1.0以上。
http://php.benscom.com/manual/ja/reserved.variables.php
0174nobodyさん
04/04/13 17:13ID:???日本語版をダウンロードしたら日本語じゃなかった…
0176nobodyさん
04/04/13 17:17ID:gpEMrt78φ(°°) メモ φ(。。) メモ φ(°°) メモ φ(。。)
0177nobodyさん
04/04/13 17:18ID:???http://www.php.gr.jp/
ここのどっかに日本語版あったよ。
0178177
04/04/13 17:19ID:???http://www.php.gr.jp/project/doc/
これだ。
0180nobodyさん
04/04/13 17:50ID:Dw9h1MU+で、結局自分のやりたい事は出来なかったのですが
こういうことは不可能なのでしょうか?
http://○○○/Aというページとhttp://○○○/Bというページがあるのですが
http://○○○/に入るにはユーザー名とパスワードが必要です。
http://○○○/Aを見せるためにユーザー名とパスを入力した状態にしておいたのですが
パス見えなどのソフトを使われユーザー名とパスがばれてしまい見せたくない
http://○○○/Bも見られてしまいました。
ちなみにhttp://○○○/のページは編集出来ません。
そこで考えたのがさきほどの>>141でhttp://○○○/Aをゲットしたページを見せようかと
思ったのですが結局PASSとユーザー名は入れるはめになるので困ってます。
ミラーも無理だろうし・・・
なにかいい方法はないでしょうか?
0181nobodyさん
04/04/13 17:53ID:???バカバカしい・・・ ┐(´д`)┌
0182nobodyさん
04/04/13 18:08ID:???0183nobodyさん
04/04/13 18:39ID:Dw9h1MU+でも必死に色々試した結果でした。
PHPなら出来るかと思い挑戦したのですが
どうやら不可能な問題みたいですね。
ありがとう御座いました。
0184nobodyさん
04/04/13 18:40ID:???>なにかいい方法はないでしょうか?
いい方法を考えるよりも、その制約の多い構造を
見直した方が良い。大体○○○は全部同じで
そんなことしてるのかよ。
0185nobodyさん
04/04/13 18:48ID:???俺はよくわからないんだが・・・
AとBが同じパスワードで見れてしまうのを避けたいんだよね?
Bは編集できるんだから、Bにまた違うアクセス制限かけたらいいんじゃないの?
よく理解してないので見当違いのレスならすまぬ
0186nobodyさん
04/04/13 18:49ID:???>PHPなら出来るかと思い挑戦したのですが
>どうやら不可能な問題みたいですね。
できる。
でも教えたところで意味不明なこと言い始めそうなんで放置。
0187nobodyさん
04/04/13 20:41ID:???if (!isset($_SESSION['register']) || $_SESSIN['register'] != 0){
}
・・・なんですが、issetの前にある!は何の意味なのでしょうか?
お教え下さい。m( _ _ ;)m
0189nobodyさん
04/04/13 20:49ID:???自己レスですが、単なる否定でよいのかなぁ・・・
どういう意味になるのでしょうか?
空白を入れなくても良いのでしょうか?
! isset($_SES・・・ てな感じに・・・
↑
0191nobodyさん
04/04/13 21:00ID:???0192nobodyさん
04/04/13 21:03ID:???:¥・」:\\\\\\\\\
0193187,189です
04/04/13 21:17ID:???0194nobodyさん
04/04/13 22:00ID:???|
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ
_ ム::::(,,゚Д゚)::| 俺が釣られると思ってんのか!
ヽツ.(ノ:::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
0195nobodyさん
04/04/13 22:47ID:???Kent-webさんのところのWeb quizのようなPHPスクリプトありますか?
CGIがおけないので、PHPのを探してます。
自分で作れるほどの技量はないので人様のを拝借しようと・・・
0196nobodyさん
04/04/14 00:04ID:???クイズファイルを
問題<>選択1<>選択2<>選択3<>回答
問題<>選択1<>選択2<>選択3<>回答
問題<>選択1<>選択2<>選択3<>回答
(デリミタは見やすくしただけ、タブでいいよ)
こんな風に書いて、file()関数で行ごとに配列に入れて
array_rand()関数でランダムに問題を出す
で、回答用の配列作って、あってたら1、違ってたら0を入れる。
で、最後に出力
こんなもんでいいんじゃね?
0197nobodyさん
04/04/14 01:00ID:???0199nobodyさん
04/04/14 09:22ID:???だったら逝ってくれ
0200nobodyさん
04/04/14 11:20ID:???状況次第とは思いますが、オブジェクト変数等を unset() する事でメモリや実行速度の節約につながる事はあるのでしょうか。
クラスライブラリの取り込みや処理が多いので不要になったオブジェクト変数は unset するべきかどうか迷っているのですが。
今もエンバグしないようにリファレンス参照を行っている場合は unset するようにしています。
0201nobodyさん
04/04/14 13:08ID:kCgzRk8J前の方の文字列を取り出す方法を御伝授ください。
具体的に
あいうえお<br>かきくけこ<br>さしすせそ<br>たちつてと<br>・・・・
の文字列から
3回目の<br>の前まで
あいうえお<br>かきくけこ<br>さしすせそ
を、取り出す方法です。
お願いいたします。 (o*。_。)oペコッ
0202nobodyさん
04/04/14 13:33ID:???$a="あいうえお<br>かきくけこ<br>さしすせそ<br>たちつてと<br>・・・・";
$b=explode("<br>",$a,3+1);
array_pop($b);
echo implode("<br>",$b);
0203nobodyさん
04/04/14 14:06ID:kCgzRk8Jすばやい御回答、ありがとうございました。
感謝です
m(_ _"m)ペコリ
0204nobodyさん
04/04/14 14:50ID:???スクリプト終了時にメモリは自動的に開放されるので、スクリプト中にそれほどメモリを消費していないのであれば、
unset() しない方がパフォーマンスは良かったような気がする。
未然にバグを防ぐために unset() するのは安全なのでいいことだと思うけど。
メモリに関しては、PHP を --enable-memory-limit オプション付きでコンパイルしていれば、 memory_get_usage() を
使って調べるのが確実。
0205nobodyさん
04/04/14 16:11ID:???Webアプリケーション等の場合にはスクリプト実行中にやるよりも、
終了時に自動でさせた場合、HTTPの出力は既に終わったあとの
処理となるので、ユーザにとって結果を受け取るまでの時間が
短いと言う意味でのパフォーマンスは良いが、スクリプト
パフォーマンスとしてはほぼ同等。分け隔てなく一切合財
開放するんで細かくみると若干良いけどね。
0206nobodyさん
04/04/14 16:29ID:rE+vE3GS0207nobodyさん
04/04/14 16:40ID:???0210nobodyさん
04/04/14 20:14ID:???<form action="ses1.php?<? echo strip_tags(SID)?>" method="post">
の echo って必要ですか?無くても動くようですが。
<form action="ses1.php?<? strip_tags(SID)?>" method="post">
にしてはいけないのでしょうか?
URL欄にIDが出てくるのはいやなんですが・・・
よろしくです。
0211nobodyさん
04/04/14 20:29ID:???下のPHPタグには何の意味が?w
さておき、4.2.0以降か、それ以前でtrans-sidが有効になっていれば、必要ないです。
0212nobodyさん
04/04/14 20:51ID:???<?
session_start();
?>
<form action="ses1.php" method="post"> ← .phpの後に何も付けない
どの参考書を見ても
<form action=“ses1.php?<?=SID?>” method=“post”>
とか
<form action="ses1.php?<? echo (strip_tags(SID))?>" method="post">
と書かれているので・・・
PHP4.3.2なのでいらないんでしょうね・・・
0213nobodyさん
04/04/15 01:28ID:???0214nobodyさん
04/04/15 01:49ID:pZEIIwSWブラウザーからのデータの取得は$_POST["message"]などを使うと思います。
でもこれってv4.1.0以降じゃないと使えないですよね?
v4.0.6の場合どうやって取得します?
register_globalsはOffのことも考慮して
$messageは使えないとしてお聞きします。
0216214
04/04/15 02:35ID:???レスサンクス。
あー、アホや自分。
マニュアルは「キーワード」で$_POSTを探していた。
「検索」で探したら一発で出てきた。
$HTTP_POST_VARS['message']
しかも$HTTP_SERVER_VARS['SCRIPT_URI']使っていたから気づけよ(´・ω・`)
0217nobodyさん
04/04/15 03:47ID:???function foo($a){ 【処理】 }
$a = array('x1'=>'x2','y1'=>'y2','z1'=>'z2');
foo($a);
は、参照渡し?
0218nobodyさん
04/04/15 03:59ID:e3RhHgHW0219nobodyさん
04/04/15 04:15ID:???なんかわかりずらいな…さんくすこ。
0220nobodyさん
04/04/15 04:23ID:e3RhHgHW0221nobodyさん
04/04/15 10:03ID:???IMAP関数って Windows では使えないんでしょうか?
0223nobodyさん
04/04/15 10:24ID:NQbEU4pX教えてなさい。お願いします。
0224nobodyさん
04/04/15 10:27ID:???参考になれば・・・
http://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&c2coff=1&q=%83J%81%5B%83g%83%89%83b%83Z%83%8B&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0225nobodyさん
04/04/15 10:57ID:NQbEU4pXグッジョブ!
_| ̄|○ ガク
0227nobodyさん
04/04/15 11:30ID:+OQgNtC5参照渡しをしたければ
function foo(&$a) {}
にしたほうが将来的にはいいみたいだ
0228nobodyさん
04/04/15 15:20ID:???for ($i=0;$i<$hensuu;$i++){
echo "<select name=test[$i]>\n";
while($row = mysql_fetch_array($res)){
echo "<option value='$row[name]'>".$row["name"]."\n";
}
echo "</select>\n";
んで↓試してみたけどだめでした。
for ($i=0;$i<$hensuu;$i++){
$test[$i] = $HTTP_POST_VARS["test[$i]"];
}
どなたか識者の方お教え下さい
0229nobodyさん
04/04/15 15:38ID:???0231nobodyさん
04/04/15 16:03ID:???そのまま表示させると text/html 以前なのでソースが表示されてしまいます。
なので
$debug = '';
などで出力を配列の中身を入れてから出力させているのですが、
そうすると配列の中身が改行されないで表示されてしまいます。
みなさんはどのようにしているのでしょうか?
googleやマニュアルを2,3時間調べてみましたがわかりませんでした。
function debug などでprint_rしている例や、
$debug .= var_export($str);
などやってみましたが、うまくいきません。
デバッグの説明ページなどにも書いてないです。
PHPの本も3冊位みましたが出ていません...
英語のURLなどでもよいので、何か手がかりを教えて頂ければと思います。
0232nobodyさん
04/04/15 16:23ID:???ごめん、俺頭悪いんで、あなたの状況がいまいちわからん。。。
>text/html 以前なのでソースが表示されてしまいます
ってどういう状態?
>そうすると配列の中身が改行されないで表示されてしまいます
print_rの出力で改行されないって話?
それはブラウザがHTML的にレンダリングしてるからじゃないの?
ソースを見るか、print_rの出力前後に<pre>タグいれるかしたら解決しない?
なんせ理解しきれてないので見当違いなら悪かった。
0233nobodyさん
04/04/15 16:36ID:???説明不足ですみません...
>> text/html以前
というのは、ヘッダーを出す前ということです。
Content-Type : text/html\n\n
を出す前に print_rするとhtmlがソースで出てしまうので、変数にデバッグ情報を格納して
HTMLの中で表示したいという意味です。
print_rみたいなのの内容を変数にいれて、<pre></pre>で囲ってもなぜか、ちゃんと
改行されないのです。
print_rやvar_dump()の結果など変数に入れられないので困っています。
やりたいことは、ただ変数や配列の中身を調べたいだけなのですが...
0234nobodyさん
04/04/15 17:00ID:???>$debug .= var_export($str);
多分、var_export()の第2引数のところをよく読めば解決。
http://www.php.net/manual/ja/function.var-export.php
あとは出力バッファリングを制御して、var_dump使う手もある。
0235nobodyさん
04/04/15 17:03ID:???ただこれはphpinfo自身もヘッダー出力するのでダブって出ちゃうけど、
ブラウザが宜しく表示してくれるので、簡易的には使える。
0236nobodyさん
04/04/15 17:31ID:???$debug .= var_export($str, TRUE);
にしてみました。うまくいってないようです。
引き続き調べてみます。
>>235
> phpinfoに引数与えて、変数のあたりの項だけ出力つうのもあるな。
そんな方法もあるのですね試してみます。
preで表示されない件は、どうやら以下のように指定することで解決したような
感じです。xhtmlとかcssの新しいので仕様が変わったんでしょうか...
<pre style="white-space: pre">
■ このスレッドは過去ログ倉庫に格納されています