【PHP】くだらねぇ質問はここに書き込みやがれpart3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/02/07 21:47:15ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
0655nobodyさん
05/02/27 00:12:08ID:G/Og0QBFカゴとクライアントをどのようにつなげてよいかわかりません。
つまり、カゴにIPアドレスを付ければある程度誰の買い物籠か
わかりますが、それではproxyを経由しているPCたちはみんな同じ
カゴになってしまいます。どうしたらよいのでしょうか?
0656nobodyさん
05/02/27 00:16:33ID:???0657nobodyさん
05/02/27 00:21:39ID:???ここはPHP(言語)スレですよ。
買い物カゴのように複数のhttpアクセス間でデータを継続するには
セッションと呼ばれる仕組みを使います。
perlにもセッションを提供するモジュールがありますが、
簡単な物の場合は自作してしまってもよいでしょう。
自作する場合には、
1. cookieや urlの一部に データそのものを付加する
2. データ本体はサーバ上のファイルに保持しておき、
そのデータへのIDとなるものをcookieやurlの一部に付加しておく
の2つの方法があります。
0658nobodyさん
05/02/27 01:13:03ID:G/Og0QBFなるほど、ありがとうございます。場違いな場所…すいませんでした。
クッキーを使ってみます。本当にありがとうございました!!
0659652
05/02/27 02:28:21ID:Quvh5uNr受け取ったバイナリデータを$dataに入れ
filesize($data);
とやってもエラーになるのですが、バイナリデータのサイズはfilesize()
では取れないのでしょうか・・・(T.T)
0660nobodyさん
05/02/27 03:02:55ID:???変数のバイト長ならstrlenでいいんじゃない?
アップロードされたファイルのサイズを知りたいなら一時ファイルのサイズで
filesize()すればいいだけだよ。
0661659
05/02/27 03:51:26ID:Quvh5uNrそうでした。strlen()でいけました。
ありがとうございます。
0662nobodyさん
05/02/27 18:49:25ID:/nNhQDUH内部の文字列を一部変更したいのですが、
どのようにすればいいでしょうか?
0664nobodyさん
05/02/27 23:32:30ID:???実行時に読み出すようにしているのですが、この設定ファイルを当該スクリプト以外から
読み出されないようにするにはどうすればいいでしょうか?
ちなみに共用サーバーなのでサーバー側の設定はいじれません。
0667nobodyさん
05/02/28 00:54:06ID:???そうです。
もしくは読み出されても悪用されないようにデータを暗号化しておくなどでもいいのですが。
あと、サーバー情報ってどんな事を書けばいいのですか?
0668nobodyさん
05/02/28 09:08:11ID:Cd7H0ok5PHPを4.3.10にしようと思い、
・c:\php\以下を全部削除、
・4.3.10の中身をコピー
・php.iniをwindowsフォルダにコピー
そしてapacheの再起動しました。
エラーで起動せず、イベントビューワーにはphp4apache2.dllが見つからないと。
もちろんパスは合っているし、直前まで前VERで動いていた、
何か変更でもあったのでしょうか?
0673nobodyさん
05/02/28 11:23:49ID:???考えているのですが何処かにパターンマッチの参考になる
スクリプト等をご存じないでしょうか?
0674nobodyさん
05/02/28 21:09:40ID:NQSvt/750676nobodyさん
05/02/28 21:57:28ID:???のようにDATAファイルのファイル名を不特定にする表現ってどうするのでしょうか?
英字や数字もカバーしたいんですが「.*」じゃだめでした。
もう一つ質問なんですが、PHPとあまり関係なくて申し訳ないのですが
Windowsは半角のバックスラッシュ(\)は普通に打ち込めるものなんですか?
当方Mac+miなんですがマニュアルサイトをIEで見ると\に化け、
iCabで見るとちゃんと半角バックスラッシュ、それをコピペするとやはり\。
文字パレットでバックスラッシュを打ち込もうとしたんですが
全角しか無く、参ったんですが…
0677nobodyさん
05/02/28 22:06:46ID:???とりあえずプログラミング…というか、PC自体素人?
半角の場合、¥と表示するか、「\」とするかはフォント次第。
Macの見やすいOsakaフォントをWinで使おうプロジェクト
http://osakattf.hp.infoseek.co.jp/
このOsakaフォントはきちんと「\」になってるよ。
漏れ、WinでのPGはOsakaしか使ってない気がする・・・。
で、"*.dat"だけど、どんなときに使うの?
使用する場所によりけりで実装の仕方変えるべきだぞ。
preg_match("/^[0-9A-Z]+\.dat$/i",$hoge)なり使うとかになりそう。
0678nobodyさん
05/02/28 22:06:59ID:???ではドゾー
↓
0680nobodyさん
05/03/01 15:36:15ID:???php4+smarty+jpgraphで、グラフを作っています。
以下を参考にして、MVC(よく理解してませんが)で作ろうとしています。
ttp://www.stackasterisk.jp/tech/php/phpMvc01_02.jsp
この場合、グラフを出力する処理はどこに書くべきでしょうか?
1. index.phpでGETを受け付け、そのGETをそのまま、表示部で引っ付ける
<img src="index.php?action=display_graph&以降パラメータ" >
controller.phpの中でclass/graph.phpを呼び出して、その中で処理。
index.phpがページ表示とグラフ表示を両方行う。
2. graph.phpという別単独スクリプトを作って
<img src="graph.php?以降パラメータ" >
index.phpがページ表示、graph.phpがグラフ表示を行う。
2.は MVCでないような気がします。
1.もなんとなく間違っている気がします。
1.の場合だと、一度パラメータを受け取って、もう一度それを出力すると
いう無駄な処理があるのですが、これでいいのでしょうか?
スマートな方法を教えて頂けないでしょうか?
よろしくお願いします。
0681nobodyさん
05/03/01 21:32:45ID:3VPrEAk/0682nobodyさん
05/03/01 22:17:17ID:???0685nobodyさん
05/03/02 02:32:19ID:???正確には
Uinux系は1024個、 Windows系は128個
じゃなかったか。リファレンステーブルの限度だよな。
0686nobodyさん
05/03/02 03:13:37ID:???ひとつのファイルにまとめて
1<>0<>〜〜
2<>1<>〜〜
3<>1<>〜〜
1番目は記事番号、2番目は0が親記事、1が子記事として
読み込み時に判定させる方法と
親記事と子記事を別々のファイルに保存し、
子記事は親記事の記事番号をキーとして持っており、
親記事は子記事がいくつ存在するかの情報を持たせて、
3つ存在するなら、子記事ファイルのほうから自分の記事番号と
一致する子記事を3つ読み込む
というような方法のどちらを使ったほうが効率がいいのでしょうか?
効率がいいか悪いかの判断は書き込みのほうが多いのか表示するほうが多いのかで
判断するのでしょうか?
0687nobodyさん
05/03/02 03:40:35ID:???親記事と子記事は入れ子になるの?
>効率がいいか悪いかの判断は書き込みのほうが多いのか表示するほうが多いのかで
>判断するのでしょうか?
意味がわからない。
0688nobodyさん
05/03/02 03:58:19ID:???単純に表示だけで考えたら
もしKENTのYY-BOARDのような表示形式を考えてるなら
前者の方が効率がいいと思う
2chのようにスレッドタイトル(親記事)を一覧表示させて
そこから子記事(スレッド)を表示させるっていうなら後者の方が効率がいい
あとファイルサイズとファイル数の問題もある
前者は大規模で使われると途端にファイルサイズがでかくなり
目的の記事を探すのに時間がかかるだろうし
後者は大量の親記事に1個2個程度の子記事が作られたとき
小さいファイルが大量に出来ていく
全然答えになってなくてゴメンって感じだが
要は用途を想定しないと効率なんて考えられないってことだ
0689nobodyさん
05/03/02 05:09:54ID:XnVo8Giwという条件はどう書くんでしょうか?
if ($name == ('abc'|'def'))
ダメですorz
0690nobodyさん
05/03/02 06:27:07ID:???0691689
05/03/02 06:37:20ID:???お早うございます。
やっぱりそう書くしかないんでしょうか?
$name が重複してしまうのが、何となく嫌な感じがして、
perlでは>>689のように書けたような気がしまして。
とにかく、どうもありがとうございました。
0692nobodyさん
05/03/02 08:43:58ID:???正規表現がそのまま書けてしまうのは
ある意味特殊(Perlの特色)なので、必要であれば
"普通"に正規表現関数を使って書けばよいのでは?
0693nobodyさん
05/03/02 08:56:03ID:???意味ねーナ
0694nobodyさん
05/03/02 10:20:55ID:???正規表現使いたければ
if (preg_match("/^(abc|def)$/", $name))
ただ正規表現使うと確実に重くなる
正規表現使う必要がなければorやandを10個並べても全然嫌じゃないです
0695nobodyさん
05/03/02 11:46:53ID:???>if($name == "abc" or $name == "def")
なパターンは、switchで書くようにしてる。
switch($name) {
case 'abc':
case 'def':
echo "Match";
break;
default:
break;
}
0696nobodyさん
05/03/02 12:32:21ID:???こういう単純な比較を10個並べた場合、and/orとpreg_matchはそれほど変わらないと思う
とくにどれにもマッチしないとかそういう時は。
もちろん最初の一個にマッチした場合はorの圧勝だろうけど。
0698nobodyさん
05/03/02 20:53:02ID:???print "PIKA";
}
という条件式を、Perlの場合、
print "PIKA" if $hoge == $hage;
という書き方ができました。
PHPで同じような書き方はできないでしょうか?
0699nobodyさん
05/03/02 21:03:27ID:???echo 'Hellow';
?>
と、
<?php
/*
複数行用のコメント
以下数万行(約10000K)
*/
echo 'Hellow';
?>
<?php
echo 'Hellow';
/*
複数行用のコメント
以下数万行(約10000K)
*/
?>
では、リクエストされてから表示されるまでの時間に差異は出るのでしょうか?
実際に試してみたいのですが、今使っているサーバ自体が糞で、
同じスクリプトを呼んでも、レスポンスにばらつきがありすぎて確認できません。
0700nobodyさん
05/03/02 21:03:47ID:SuYdpkb90701nobodyさん
05/03/02 21:03:56ID:???0702nobodyさん
05/03/02 22:30:57ID:???配列とかで取得できると後が楽でうれしいです。
PHPポケットリファレンスとphp manualを読んでそんな関数が見つからなかったので教えてください。
お願いします。
0703nobodyさん
05/03/02 23:03:36ID:???調べてもわからなかったんで実際に変数作ってみたら100万個までは作成できるみたいなんですけど。
0706nobodyさん
05/03/02 23:10:35ID:???0708689
05/03/02 23:35:30ID:???詳しい解説と考察をありがとうございました。マニュアルには
>複雑な処理を行ったり、 重い繰り返し処理を行う場合、
>switchの方がより処理が速い可能性があります
とありますが、今回のは簡単な処理だと思いますし、行数を
減らしたいので if を使います。
0709nobodyさん
05/03/02 23:55:12ID:???もう何がなんだかちんぷんかんぷんです。
どなたかどういう警告で何が原因なのか教えてくださいお願いします・゚・(´Д`)・゚・
------------------------------------------------------------------------------------
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 11005 is not allowed to access /tmp owned by uid 0 in /PHPicalendarまでのパス/functions/ical_parser.php on line 1070
Warning: fopen(/tmp/parsedcal-Home-2005): failed to open stream: No such file or directory in /PHPicalendarまでのパス/functions/ical_parser.php on line 1070
Warning: fwrite(): supplied argument is not a valid stream resource in /PHPicalendarまでのパス/functions/ical_parser.php on line 1071
Warning: fclose(): supplied argument is not a valid stream resource in /PHPicalendarまでのパス/functions/ical_parser.php on line 1072
Warning: touch(): SAFE MODE Restriction in effect. The script whose uid is 11005 is not allowed to access /tmp owned by uid 0 in /PHPicalendarまでのパス/functions/ical_parser.php on line 1073
------------------------------------------------------------------------------------
0710nobodyさん
05/03/03 00:58:57ID:pcZIX8SU$_SESSION['$a']
こんなかんじで使いたいのですが、$aを展開する書き方はありますでしょうか?
$_SESSION['$_SESSION[$a]']
↑できればこれも。。
わかりづらい説明ですみません。うまく説明できないです。
0711710
05/03/03 01:20:37ID:???上で710程度の質問してるくらいなので詳しいことはわかりませんが、
SAFE MODE phpで検索すればそれらしきものが出てきます。
一行目:今のUIDでは/tmpへアクセスができない
二行目:fopen(/tmp/parsedcal-Home-2005) 作成されるはずだったファイルがないため開けない。
三行目:存在しないので、ロックもできない
四行目:存在しないので、書き込みもできない
ということではないでしょうか?詳しい方どうでしょ?
0712nobodyさん
05/03/03 02:01:11ID:???シングルクォートを外せば良い。
$_SESSION[$a]
$_SESSION[$_SESSION[$a]]
>>709
711 の説明でだいたい正しいように思う。
SAFE MODE を外せないのであれば、テンポラリファイルを作成する
場所を /tmp から適当な httpd の動作権限で書き込み可能な
ディレクトリに変更すれば動作するのでは?
0714nobodyさん
05/03/03 09:13:21ID:L91eb6rnPHPで、リロードせずに時刻を常に更新させたいのですが、どのように
すれば良いのでしょうか。
<?php
while(True)
{
print(date("Y/m/d h:i:s"));
}
?>
と書くと、「2005/03/03 09:16:57」という文字が連続して表示され、
1秒も進みません。
時刻を更新し続けたいのですが、どなたかやり方を教えて頂けま
すでしょうか。何卒、宜しくお願い致します。
0715nobodyさん
05/03/03 09:36:32ID:???print(date("Y/m/d h:i:s")) が実行にかかる時間をちょっと調べてみようか。
$start = microtime(); // マイクロ秒単位でunixタイムスタンプを取得
print(date("Y/m/d h:i:s"));
$stop = microtime();
print ($stop-$start);
一回だけの試行なので信頼性はあんまり無いんだが、
うちの環境だと 0.000204秒になった。4900回/秒 くらいってことだな。
sleep()を使って1秒に一回くらいのペースでdate()を実行させるか、
そもそも鯖側で実行させずにJavaScript等のクライアント側でやらせた方がよいと思われ。
0716nobodyさん
05/03/03 09:40:35ID:???metaタグでリフレッシュする(結局リロードと一緒なのであまりサーバには良くない)
表示するだけならJavaScriptでやっとけ
0717nobodyさん
05/03/03 10:40:32ID:7OeoLBplものですか??
でたらめなアドレスを送信先引数にしてもTRUEが返ってくるのですが・・・。
0719nobodyさん
05/03/03 11:24:02ID:7OeoLBplインターネット内で電子メールを配送するソフトウェア。
ユーザが送信したメールを受け取って、他のサーバと連携して
バケツリレー式に目的地まで配送したり、
届いたメールをユーザが受け取るまで保管したりする。
ってことは送信先に届けましたよってことでTRUEが返ってくるわけでは
ないということでしょうか??
0720nobodyさん
05/03/03 11:53:35ID:???例えばsendmailの場合、下のurlにあるような結果(終了コード)を返す。
ttp://www.linux.or.jp/JM/html/sendmail/man8/sendmail.8.html
sendmailがどう設定されているかはその鯖の管理者にしか分からん。
そして、PHPはこの終了コードだけを見て適当に加工してmb_send_mailの返り値としている。
phpのソースコードをぱっと見た感じでは、EX_OKの時にtrueを返しているみたいだな。
つーわけで、mb_send_mail == trueになったからと言って、
そのメールが確実に相手に届いているかどうか(届く予定かどうかさえも)分からない。
確実に届いたかどうか確認したきゃ、メールの中にidを含んだURLを書いておいて
相手にアクセスさせるくらいしかないわな
0721nobodyさん
05/03/03 12:32:41ID:7OeoLBpl感謝です。
0722nobodyさん
05/03/03 13:08:25ID:T3a2sbueそのとき、ページAの中心部分に、外部テキストデータBを挿入したいと考えています。
しかし、外部テキストデータBを呼び出すには多少時間がかかるため、
可能ならばページAを表示した後、時間差で外部テキストデータBを表示したいと考えています。
これを実現するためにはPHP内でやるよりも、iframeを使うのがいいのかなと思っているんですが、
iframeだと最初に縦横サイズを決めておかねばならず、テキストの量が変化するし実に不便です。
時間差で後からテキスト文を挿入する方法があれば、教えてください。
0724nobodyさん
05/03/03 13:53:11ID:???0725nobodyさん
05/03/03 15:11:55ID:T3a2sbueJavaScriptだと、時間差で読み込みできますか?
document.write(外部ファイル)
みたいな感じでいいでしょか?
0726nobodyさん
05/03/03 16:18:55ID:7OeoLBplmb_send_mailでエラー返送先Return-Pathを指定しなかったら
fromで指定したところにエラー返送されますか??
0727709
05/03/03 16:51:52ID:???丁寧なレスありがとうございます
-------
1067行 // write the new master array to the file
if (isset($master_array) && is_array($master_array) && $save_parsed_cals == 'no' && $is_webcal == FALSE && $cal != $ALL_CALENDARS_COMBINED) {
$write_me = serialize($master_array); ~~~~
$fd = fopen($parsedcal, 'w');
fwrite($fd, $write_me);
fclose($fd);
1073行 touch($parsedcal, $realcal_mtime);}
-------
色々試行錯誤した結果、力技といいますか
警告を受けていた「functions/ical_parser.php」の↑の波線部分の所をyesからnoに変えたらなんとか警告は出なくなりました
この変更によってどういう影響をもたらすのかさっぱりですが・・・('A`;)
0728nobodyさん
05/03/03 18:19:00ID:???しかし、外部テキストデータBを呼び出すには多少時間がかかるため
どんなでっかいテキストデータなんだ?
どれともローカル以外にあるとか?
いずれにしても、PHPでopenしたほうが手間無いと思われ。
0729nobodyさん
05/03/03 18:48:52ID:???0730nobodyさん
05/03/03 18:52:01ID:sBw8KeR2いろんなphpの見よう見まねで作った、近々ある社会の用語テスト用のくだらないスクリプトなのですが、
うまくいかないのです・・・もしよければ相談に乗っていただけませんでしょうか?
スクリプトの内容は
<?
$question = array( "問1","問2","問3" );
$answer = array( "答1","答2","答3" );
print("[問]<br>$question<br><br>[答]<br>$answer");
?>
この4行ですorz
ためしに動かしてみたのですが、なぜか「問1」とか「答1」とか表示される所に「Array」と表示されました・・・
それでarrayを消してもう一度動かしてみたのですが、こんどはエラーで動いてくれませんでしたorz
構想としては「問1」とでるならば「答1」とでるように、つながってて(?)ほしいです・・
もしよければ悪い点を指摘して頂きたいです。phpの勉強もしてみたいので。。。
では宜しくお願い致しますorz
0731nobodyさん
05/03/03 18:58:50ID:???この$question は "問1"、"問2"、"問3"、が入っている配列そのものを指していると思えばよい。
だから、配列を意味するArrayという文字が出てくる。決してarray()の"array"が表示されているわけではない。
問1(つまり配列の0番目)にアクセスするにはこの変数の後ろに[0]という添え字をつける。
$question[0]
問2であれば、
$question[1]
だ。
配列の先頭は1番目から数えるのではなく、0番目からスタートする。
0732nobodyさん
05/03/03 18:59:26ID:7OeoLBpl配列一つづつ表示させたいんですよね??
以下のようなやりかたで表示されるのでは?
for($i=0;$i<3;$i++){
print "[問]<BR>$question[$i]<BR><BR>[答]<BR>$answer[$i]
}
0733nobodyさん
05/03/03 19:00:19ID:7OeoLBplmb_send_mailでエラー返送先Return-Pathを指定しなかったら
fromで指定したところにエラー返送されますか??
0734nobodyさん
05/03/03 19:02:27ID:sBw8KeR2大変勉強になりますです 無事、表示できました。
ところで、ランダムに表示する事は可能でしょうか・・・?
また、その場合においてもquestionとanswerは結びついていて欲しいのですが・・・orz
0735nobodyさん
05/03/03 19:03:42ID:W+vZoiDKよいですか?やっぱり、無理ですか。
0736nobodyさん
05/03/03 19:04:40ID:7OeoLBplもしくは
return 文字列;
でできるのでは?
0738nobodyさん
05/03/03 19:19:44ID:???$i = rand(0, 2); // ← 0 〜 2 までの乱数を取得
print "[問]<BR>$question[$i]<BR><BR>[答]<BR>$answer[$i] ";
0739nobodyさん
05/03/03 19:20:32ID:7OeoLBplSMTPの関係で今実際にメール送信ができないのです。
safe_modeを有効にした状態でmb_send_mailの第5引数に
Return-Pathを設定すると設定したアドレスにエラー返送できる。
ということまで分かっているのですが、
もし、このReturn-Pathを設定しなかったら。
”答えは「鯖の設定による」 ”ということは
safe_modeが有効だったらfromで指定したアドレスに返送される
ということでしょうか?
0740nobodyさん
05/03/03 19:24:31ID:sBw8KeR2ありがとうございます!!
できました!!
スレッドの皆さん、お世話になりました
これで勉強が少しやりやすくなりましたです 本当に有難うございました
0741nobodyさん
05/03/03 19:52:32ID:???0742nobodyさん
05/03/03 20:25:50ID:???0743nobodyさん
05/03/03 20:29:59ID:???0744nobodyさん
05/03/03 20:40:30ID:???0746nobodyさん
05/03/04 14:53:02ID:isNQAP9U0747nobodyさん
05/03/04 15:12:57ID:???どこまでやって、何につまってるのか書いてないので適当に答える。
・mail()関数を使う場合
Linux -> sendmail等を直接叩くので不可
Windows -> SMTPサーバ接続のみ利用可なので適切な設定でOK
・fsockopenでSMTPを直接喋る
SMTPに則って、適切に実行する。ググればサンプルもあるはず。
つーか、他の言語ではこの形式のものが多いから他言語のものであっても参考に汁
0748746
05/03/04 15:22:55ID:???でも、Linuxだと、mail()関数は使えないんですね。
参考になりました。ありがとうございます。
0749nobodyさん
05/03/04 16:11:59ID:???フォームから$_FILES['upfile']['tmp_name'] で取得できる一時ファイルはどのタイミングで消えるんでしょうか。
$_SESSIONに一時ファイルのパス情報をいれて他のページに移動、
移動先のページで処理(アップロードファイルの確認とか)した後に$_SESSIONに保存しておいたパス情報を
使って move_uploaded_file() を発行しても、時間がある程度経過した後でもファイルを保存できますか?
それともアップロード直後に move_uploaded_file() で保存してやらないと一時ファイルは消えちゃいますか?
環境はLinux、Apache1.3系、PHP4.3.9 です。
0750nobodyさん
05/03/04 16:18:30ID:???「fsockopenでSMTPを直接喋る」ライブラリが豊富にあるので、それを利用する。
PHPMailerとか、Pearのクラスとか。
0751nobodyさん
05/03/04 16:20:51ID:???ttp://www.php.net/manual/ja/features.file-upload.php
移動または名前の変更が行われていない場合、リクエストの終了時にその
ファイルはテンポラリディレクトリから削除されます。
0752nobodyさん
05/03/04 16:28:34ID:fHaVG3jYありがとう 読み飛ばしていたようだ(;´д`)
アップ後に一旦移動させる事にします
0753nobodyさん
05/03/05 00:35:30ID:???■ このスレッドは過去ログ倉庫に格納されています