【PHP】質問スレッド Part11

このエントリーをはてなブックマークに追加
952nobodyさん:03/12/04 20:43 ID:PxB4skeb
初心者質問です。ごめんなさい。
背景色を選択→クッキー保存→次回選択した色で初期表示
とやりたくて

$col = $_GET['col'];
setcookie("MYCOL", $col, time()+86400*100);
echo "<style type=\"text/css\">";
switch($col){
case "1":
$bc = '000000';
break;
case "2":
$bc = 'ffffff';
break;
default:
$bc = 'cccccc';
break;
}
echo "body{background-color:#$bc}";
echo "</style>";

と書いたら、クッキーは保存されているようなのですが
色選択後の再訪問時にデフォルトの#ccccccで表示されてしまいます。
どこを直せばよいでしょうか?
953nobodyさん:03/12/04 21:08 ID:???
>>952
その処理だと、$_GET['col']が未定義の場合cookieから値を取得しなくちゃいけないのでは?

質問です。
PHPで配列の切りつめはどうやればいいのでしょうか?
例えば要素数10個の配列があって、前3つだけ残したい場合。
array_splice()はそういう用途ではすさまじく使いにくい。
ループでarray_pop()したりunset()するよりはましだけど。
Perlなら簡単に出来るのですが……

Perlの場合:
my @array = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$#array = 3;
954nobodyさん:03/12/04 21:16 ID:???
>>953
array_chunkじゃだめか?
955953:03/12/04 21:21 ID:???
>>954
array_splice()よりはましですね。
だけど、もっとズバリなものはないのかなぁ……。
956nobodyさん:03/12/04 22:08 ID:???
>946
うーんでも、ソースかなんかに
「適当な作りなんであんまりハードに使うな」
って書いてなかったけ(笑
957nobodyさん:03/12/04 23:40 ID:4RZpBvLI
return ○○○;のすぐ後に
exit;は要らない?
958nobodyさん:03/12/04 23:47 ID:???
array_spliceもarray_chunkも一発でそのものずばりじゃん。
何を望んでるのだ?
959958:03/12/04 23:49 ID:???
ちなみに、どっちも関数の戻りのarrayを元の変数に上書きする
960nobodyさん:03/12/04 23:53 ID:???
>>956
1日1000アクセスなんだからいいじゃん。

でもなんでWindowsサーバじゃないとダメなの?
961nobodyさん:03/12/05 00:17 ID:???
手元に4.3.3のソースがあったのでパラっと見てみたけど、
そういうコメントは気付かなかったなぁ。popenのforkに気をつけれ、くらいかな。
アクセス数から考えるとPHP側もsendmail側も余裕っしょ。
sendmailが1万ユーザに耐えられるかどうか知らんけど。
sendmail@winの代理店ぽい所をみると1万ユーザで数百万円くらいか(w
962nobodyさん:03/12/05 01:04 ID:W+9YW1p2
>>960
理由は不明です。
Linuxですすめてるんですが、要件にWindowsサーバと言ってきます。
たぶん、Windowsしか経験がないんだと思います。

逆に当方は、Windowsで
HTTP+SMTP+POPサーバをたてたことがないので、
どうしたものかと悩んでいます。

Windows+IIS+ASP+SQLServerにすると、
当方のリスクが増えるので、
Apache+PHP+MySQLの組み合わせは通そうとしているのですが、
メールサーバーをどう扱えば良いのかわからないので、困っています。

前にあった、PHPでメール送信の件は、
送信はできても、SMTP+POPメールサーバーが
必要なので、送受信できるサーバで、
PHPからメール送信できるものが必要なんです。


こういう場合、
WindowsServer+IIS+ASP+SQLServer の組み合わせで実装してるんでしょうか?
ちょっとスレ違いがあるかもしれませんが、お許しください。

963nobodyさん:03/12/05 01:18 ID:W+9YW1p2
>961
Linuxでまとめるように話をすすめるのが、
一番良さそうな気がしています。
どうしたもんだろ・・・。
964nobodyさん:03/12/05 03:08 ID:???
>>962
POP鯖(鯖って言うのか?)って何でいるの?
全会員にメールアドレスを与えるの?
965nobodyさん:03/12/05 03:58 ID:wlPwhzW7
セッションを発行済みでいろんなページを行き来したあと、
とある1つのphpスクリプトに来たときに、
そのスクリプト内のみで、
セッションに関するあらゆるデータ(つまり、セッションID、セッション変数、セッションそのもの(session.destroy?))を削除し、
また、いちから、これらを作り出す(新しいセッションIDを発行して、それにひも付けされたセッション変数を入れ込んでいく)ことは
可能なのでしょうか?

いろいろためしたのですが、
同じセッションIDのままだったり、
なぜかその後のページでまた別のセッションIDが発行されたりで、
実現できませんでした。

どなたか、教えていただければ幸いです。
966953:03/12/05 04:07 ID:???
>>958
だって全然美しくないんだもの。array_splice()が一番ましかな。

<?php
$vector = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
$index = 3;

// array_spliceの場合(PHP 4から)
$vector_splice = $vector;
array_splice($vector_splice, $index);

// array_chunk()の場合(PHP 4.2.0から)
$vector_chunk = array_chunk($vector, $index);
$vector_chunk = $vector_chunk[0];

// unset()の場合
$vector_unset = $vector;
$length = count($vector_unset);
for ($i = $index; $i < $length; $i++) {
  unset($vector_unset[$i]);
}

print_r($vector_splice);
print_r($vector_chunk);
print_r($vector_unset);
?>
967nobodyさん:03/12/05 06:34 ID:4RN/hEy0
★☆★もうすぐクリスマス★☆★おまんこプレゼント★☆★
http://marimo.s6.x-beat.com/marimo.html
968nobodyさん:03/12/05 08:42 ID:???
>>966
あんたはperl使ってた方が良いんじゃない?
969nobodyさん:03/12/05 09:53 ID:W+9YW1p2
>964
管理人がメーラー使うからです。
970953:03/12/05 10:01 ID:???
>>968
PerlもPHPも、そしてC++もJavaも、それぞれ長所のある良い言語ですよ。

例の件だけど、納得のいく答えを考えました。
PHPで、配列の最終要素の添え字を簡単に取得・設定出来ない理由は、
Perlは配列と連想配列が別物だが、PHPでは同じように扱ってるからだろう。
ライブラリを眺めていると、単純な配列の切りつめはarray_splice()を使えという
雰囲気を感じるのでこれでいくことにします。
971nobodyさん:03/12/05 10:54 ID:???
>>932
男は黙ってecho
972932:03/12/05 10:58 ID:???
本気でシステム的なところが聞きたくて質問させてもらったんですが。

分かる人はいないんですね。
973nobodyさん:03/12/05 11:02 ID:???
>>972
anonymous cvsからPHPのソースを取得して読んだら?
本気ならな。
974nobodyさん:03/12/05 11:06 ID:???
>>973
馬鹿はほっとけ
975953:03/12/05 11:15 ID:???
976nobodyさん:03/12/05 11:42 ID:???
>>962
できない仕事請けるなよ。
俺だったらwin鯖のネガティブな情報をこれでもかと客に浴びせてlinux鯖をごり押しする。
977nobodyさん:03/12/05 11:55 ID:???
別にWinにだって標準のSMTP入ってるんだし気にする事も無いが
わからないとかできないんだったら、事情を説明してlinuxとかにしたら
978nobodyさん:03/12/05 12:14 ID:MqWqoWuk
>>962
なら
win2000Server(IIS5.0)+PHP+MySQLでいいんじゃん?
メール送信なんてその辺探せばいくらでもサンプルあるし。
たしかIIS5.0は送信だけならできたはずだが・・・。
(送るだけ&スパム対策しないとだけど)
979nobodyさん:03/12/05 15:39 ID:???
<p id="name">ここに名前</p>
  が、
$tpl->assign("name", "太郎");
  で
<p>太郎</p>
になるようなテンプレートライブラリはありますか?
980nobodyさん:03/12/05 15:53 ID:???
>>979
Smarty
981nobodyさん:03/12/05 17:24 ID:W+9YW1p2
いろいろ考えることはありますが、
>>978 win2000Server(IIS5.0)+PHP+MySQLで、
最悪メル鯖は、別サーバたててもらうということにしようと思います。

LINUXで行きたいですが、
説き伏せるだけの「もの」がないので・・・。
色々助かりました。
982nobodyさん:03/12/05 19:56 ID:CWGc80VL
>>981
Windowsじゃなければならない理由が不明なら、ちゃんと確認しといたほうが
いいんじゃないの?で、その理由がたわいも無いものなら「sendmail@winの
ライセンス料だけでプロジェクトの予算がふっ飛びます」とか言って
(本当かどうかは事前に調べとけよ)説得すれば良いと思うが。
顧客の変なこだわりや思い込みに付き合って、本質じゃないところで悩むのって馬鹿らしくないか?
983nobodyさん:03/12/05 20:15 ID:???
>>980
おお、Smartyでできるんですね。{ } とか <% %> とか単純な対の文字列しか使えないと思ってました。

どういう風に設定すればいいですか。
ポインタだけでも教えてください。
984nobodyさん:03/12/05 20:22 ID:???
985nobodyさん:03/12/05 20:37 ID:U/LEnWp6
実行したPHPファイルのメモリー,CPU使用量を表示させたいのですが
いい方法はないでしょうか?
ちなみに
cgiでしたら
ps aux | grep cgi
とすれば実行CGIファイルのメモリCPU使用量が出ますが
phpの場合
ps aux |grep php 
としても何も表示されません

PHPスクリプトを最適化したときに
メモリ、CPU使用量がどれだけ変化したか数字として確認したいです
986nobodyさん:03/12/05 20:55 ID:???
>>985
memory_get_usage()
http://jp2.php.net/manual/ja/function.memory-get-usage.php
なんか雪つもっとる・・・季節モノやねぇ。>PHPロゴ

Unix板の方にもきちんと返答しておくのが吉。
987nobodyさん:03/12/05 21:13 ID:U/LEnWp6
>>986
どうもありがとうございます
こんな便利な関数があったのですね
助かりました
988nobodyさん:03/12/05 21:20 ID:6J62flsP
おーい
989nobodyさん:03/12/05 21:20 ID:???
はーい?
990nobodyさん:03/12/05 21:26 ID:???
うめのきせつか
991nobodyさん:03/12/05 21:36 ID:???
>>986
あれは雪だったのか。画像が化けてたのかと思ったよ。
992nobodyさん:03/12/05 21:41 ID:y4EWtpBu
そろそろ次スレよろ。
993nobodyさん:03/12/05 22:04 ID:???
記念カキコ v(^-^*)
994nobodyさん:03/12/06 00:06 ID:???
994
995nobodyさん:03/12/06 00:12 ID:???
995
996nobodyさん:03/12/06 00:30 ID:???
ついにこのスレも終わりか
997nobodyさん:03/12/06 00:31 ID:???
誰も次スレ立てないのはいらないってこと?
998nobodyさん:03/12/06 00:34 ID:???
yes
999nobodyさん:03/12/06 00:35 ID:???
次スレは要りません
1000nobodyさん:03/12/06 00:35 ID:???
絶対立てないで下さい
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。