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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/06(月) 22:07:16ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0283nobodyさん2006/11/10(金) 16:13:50ID:???
>>281
0284sage2006/11/10(金) 16:26:30ID:1a5fPov5
入力フォームのnullチェックとかなんかな。
実際には不正な文字列じゃないかもうちょとチェックするので
あまり同じ関数の使い回しはしないんじゃないかなあ。

Javascriptになるけど、こんなの書いたりもしてました。
画面遷移なしでも多少チェックしたいときもあるし。
※ソースは適当です。

<input type=text name=userid value="">
<input type=text name=pass value="">
<input type=submit onclick="javascript:nullcheck(this); return false;">

function nullcheck(obj)
{
 obj=obj.forms[0];
 for(var i in obj.elements.length)
 {
  if(obj.elements[i].type != "text") continue;
  if(!obj.elements[i].value)
  {
   alert(obj.elements[i].name + "が入力されていません。");
   return false;
  }
}
0285nobodyさん2006/11/10(金) 16:28:44ID:1a5fPov5
うお、みんなごめんよ。。。
0286nobodyさん2006/11/10(金) 16:50:59ID:???
オイラの場合

function err($txt) {
echo $txt;
echo "</BODY></HTML>";//この辺はスクリプトによって変える
exit;
}
if ($name == "") err("名前がない");
if ($mail == "") err("メールがない");
if (is_numeric($num)) err("NUMBERは数字で入れれ");
みたいにする。
0287nobodyさん2006/11/10(金) 16:52:04ID:???
お呼びじゃないよ
02882862006/11/10(金) 16:52:24ID:???
最後
if (!is_numeric($num)) err("NUMBERは数字で入れれ");
だった。
02892782006/11/10(金) 17:46:15ID:???
>>279-280,282
返答が遅れてすみません。
foreachを使う方法だと、表示位置が指定出来ませんよね?
テーブル(<table>)の表などで使用する場合、不適切だと
感じられるのですが、どうなのでしょうか?
0290nobodyさん2006/11/10(金) 18:32:28ID:???
>>289
そもそも最初のサンプルが悪い。
コードの途中でecho使うこと自体が不適切。
0291nobodyさん2006/11/10(金) 18:42:07ID:???
>>289
どういうこと?
別にテーブルの中でforeach使えば?
0292nobodyさん2006/11/10(金) 18:46:42ID:???
そういう構成なのか
なら $var[$key] = (empty($_REQUEST[$key]) ? "$key空" : $...; とでも
0293nobodyさん2006/11/10(金) 19:06:10ID:???
>>291
テーブル表示ループの中でデータのチェックやってんだよ。
典型的なコードとデザインが分離できてない素人設計。
02942782006/11/10(金) 19:17:03ID:???
すみません、とりあえず↓しました。
<table border="1">
<?
$param_list = array($name,$age,$sex,$address,$comment); //パラメータ名の一覧
foreach($param_list as $param) {
if($param == ""){
echo"<td>";
echo"$paramが空です";
echo"</td>";
}else{
echo"<td>";
echo $param;
echo"</td>";
}}
?>
</table>

ただこの場合、フォームから受け取ったarrayの値が空の場合は表示されなくなります。
素人設計ですが、向上心を持ってやっていきますので、再度アドバイスお願いします。
0295nobodyさん2006/11/10(金) 19:31:32ID:???
じゃあアドバイス。
まず表示部分でそんなチェックすんな。
事前にチェックを済ませて結果を変数に格納し
自由なレイアウトで表示できるようにしろ。
0296nobodyさん2006/11/10(金) 20:15:25ID:???
>>294
> if($param == ""){
$paramは必ず中身がないんだから
> echo"$paramが空です";
$paramを表示できるわけないじゃん。

>>280でパラメータ「名」の一覧を使えって言ってるのに
なんでデータ値そのものをリスト化しようとしたりするの?

あと$nameとか$ageとか、ひょっとしてregister_globalsをONにしてんのか?
$_GETか$_POSTか$_REQUEST使えって。
0297nobodyさん2006/11/10(金) 20:15:56ID:???
>>294
ヒント:
・連想配列
・TRは?
0298nobodyさん2006/11/11(土) 12:54:56ID:mWra3uS0
頑丈なロック機能を求めていたらパラレルロックって言葉にたどり着いたのですが
どういうふうに組むのでしょうか?
0299nobodyさん2006/11/11(土) 13:48:21ID:???
>>298
パラレルロックってこれ?>ttp://sajiro.net/hpa/
これだとしたらこの作者が自分のプログラムに名付けた勝手な造語じゃない?
作り方は考えた本人に聞けばいいよ。
個人のオリジナルロジックなんて知らんがな。
03002982006/11/11(土) 13:58:29ID:mWra3uS0
作者に聞くのが一番ですよね、でも自分が作者だったら教いちいちえたくないかもしれない(笑)
壊れにくいロックを作ってどんな仕組みでしょうか、奥が深いですね。
たとえばググルとよくみかける二重ロックはどうなんでしょうか?
ファイルをロックする前に、ロックファイルを別に用意して、
そのロックファイルが存在してたら別の処理にさせるという仕組みでした。
0301nobodyさん2006/11/11(土) 14:04:13ID:???
壊れ「にくい」ロックなんてナンセンスなものどうすんだよ
03022982006/11/11(土) 14:12:22ID:mWra3uS0
こだわる必要はないですかね?
fcloseだけで十分でしょうか?
0303nobodyさん2006/11/11(土) 14:13:06ID:???
同時アクセスや、途中での切断や移動などを考えると、ロックってなにげに
難しい。
アクセスが多いサイトほど、いろいろ起きるし。
0304nobodyさん2006/11/11(土) 14:24:57ID:???
>>300
微妙に意味不明 >二重ロック
それって単なるロックファイル使ったプロセスロックじゃないの?
>>302
十分なわけないじゃん。
「壊れにくい」じゃ意味ないから「壊れない」ロックを使えってことじゃ?
強力なロック機構が欲しければRDBMS使うのが1番かと思うけど。
>>303
RDBMS使わないにしても、ロックディレクトリを使ったプロセスロックで
壊れた試しって俺は無いんだけど。
途中での切断・移動って一定時間過ぎたロックを強制削除、じゃダメなのか?

どっちかというと「壊れない」かつ「アクセスを漏らさず処理できる」が難しい。
単純なロックだとアクセス過多になると大量のタイムアウトを出してしまって
アクセスカウンターとかは本来の数を記録できなくなる。
そういう意味で、キューに溜めたクエリーを順次処理するRDBMSが1番。
まぁ、これも待ち受けの最大数があるんでそれ超えるとダメだけど、
そこは色々とチューニングでカバーできるし。
0305nobodyさん2006/11/11(土) 14:59:07ID:???
flockしとけば毎秒2万回でも壊れない。
でも書き込んでる途中で電源が切れると壊れる。
MySQLのマニュアルにも不意に電源が切れた場合、
壊れる可能性があることは明記されている。
0306nobodyさん2006/11/11(土) 15:08:40ID:???
猫とおかんには適わないな
0307nobodyさん2006/11/11(土) 15:18:25ID:???
実際にあるファイルへの毎秒何万回ってアクセスさせて
ロックの頑丈さをためすコードってないの?
0308nobodyさん2006/11/11(土) 15:24:28ID:???
>>307
並行で走らせたプロセスで同時アクセスさせないといけないから
単なるコードでは難しいよ。WindowsとUNIXとでやり方変わるし。
ApacheBenchとか使ってアクセスかけた方が手っ取り早い。

でもロックの頑丈さを確認するだけなら、ロックの判定やON/OFF処理に
片っ端からsleep()入れてって、アトミックじゃない処理の部分を
間隔広げてやるだけで簡単にテストできるよ。
0309nobodyさん2006/11/11(土) 15:41:13ID:???
>>303
>途中での切断や移動などを考えると
http://www.php.net/manual/ja/function.ignore-user-abort.php
考えずにすみますよ。
0310nobodyさん2006/11/11(土) 15:51:18ID:UxXI6HSf
メールが送信できたかどうかを確認するためにReturn-Pathを設定したいのですが、
mb_send_mailの第5引数が設定できません。

環境はレン鯖でPHP4.4.4でSafeModeがONです。

何か良い方法ありましたら宜しくお願いします。
0311nobodyさん2006/11/11(土) 16:04:19ID:U7uBumak
配列の要素を標準出力する関数ってなんでしたっけ??
0312nobodyさん2006/11/11(土) 16:08:00ID:???
Sleepは検証にならないよ
やんわり動作してるアプリではアルゴリズムが全て
0313nobodyさん2006/11/11(土) 16:10:17ID:???
var_dump,print_r
0314nobodyさん2006/11/11(土) 16:14:41ID:???
>>313
あざーす☆
0315nobodyさん2006/11/11(土) 16:23:39ID:???
>>312
sleep入れて待ってる間に別窓からアクセスしてやればいいんじゃないの?
03163102006/11/11(土) 16:27:02ID:UxXI6HSf
エラー内容
mb_send_mail() [function.mb-send-mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE

PHPバージョンUPやSafeModeの設定変更はレン鯖で無理なのですが、代替案はありますでしょうか?
0317nobodyさん2006/11/11(土) 16:45:08ID:???
>>316
sendmail使わないでPEARでSMTPでもしゃべらせれば?
0318nobodyさん2006/11/11(土) 16:55:41ID:???
おまえらなんでボランティアで回答できるの?
0319nobodyさん2006/11/11(土) 16:56:46ID:???
回答が楽しいから。
03203102006/11/11(土) 17:30:37ID:UxXI6HSf
>>317
ありがとうございます。PEAR :: Mail_mimeDecode Mail_Mimeってのを調べてみます。

またはCGIとして動作させるか、Perlでsendmail使う方法などになりますかね・・・
0321nobodyさん2006/11/11(土) 17:44:36ID:???
> flockしとけば毎秒2万回でも壊れない。

毎秒二万回って凄いなあ。目がくらむ
0322nobodyさん2006/11/11(土) 17:52:33ID:???
CSV(test.csv)のデータからTableに整形して出力させたいのですがちょっと教えてください。
 1991,1,タイトル1,サブタイトル1
 1991,2,タイトル2,サブタイトル2
 1991,3,タイトル3,サブタイトル3
 1992,3,タイトルA,サブタイトルA
 1992,5,タイトルB,サブタイトルB
 1992,7,タイトルC,サブタイトルC
 1993,10,タイトル5,サブタイトル1

とあるデータをTable整形して出力させたいので、↓にしたのですが
<table border="1">
<?php
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp, 10000)) {
print "<tr>";
foreach ($data as $d) {
print "<td>$d</td>";
}
print "</tr>\n";
}
?>
</table>
これを次のように、同じ年のところはrowspanでつなげて出力したいのですがどうやったらいけますでしょうか?
<tr><td rowspan="3">1991</td><td>1</td><td>タイトル1</td><td>サブタイトル1</td></tr>
<tr><td>2</td><td>タイトル2</td><td>サブタイトル2</td></tr>
<tr><td>3</td><td>タイトル3</td><td>サブタイトル3</td></tr>
<tr><td rowspan="3">1992</td><td>3</td><td>タイトルA</td><td>サブタイトルA</td></tr>
<tr><td>5</td><td>タイトルB</td><td>サブタイトルB</td></tr>
<tr><td>7</td><td>タイトルC</td><td>サブタイトルC</td></tr>
<tr><td>1993</td><td>10</td><td>タイトル5</td><td>サブタイトル1</td></tr>

0323nobodyさん2006/11/11(土) 18:16:06ID:???
メソッドの中にメソッドって、
変数のスコープはどうなるんでしょうか?

参考になるような記事などありますか?
0324nobodyさん2006/11/11(土) 18:20:19ID:???
>>322
尻から出力すれば
0325nobodyさん2006/11/11(土) 18:24:42ID:mWra3uS0
大規模サイトでカウンター動かすときにflockだけで漏れなく動かせるんですかね?
0326nobodyさん2006/11/11(土) 18:24:44ID:???
>>322
次に別の年が出てくるまで出力を変数にバッファリングしといて、
連ケツ不要ならそのまま出力、必要ならRowspan出力してから
バッファを持ってくる、とか。
0327nobodyさん2006/11/11(土) 18:25:22ID:???
>>325
排他制御スレでやってくれ
0328nobodyさん2006/11/11(土) 18:35:03ID:???
>>323
普通にローカルになるけど、そんなオブジェクト論理的にありえなくね?
一時期廃止されてたよね関数の入れ子
0329nobodyさん2006/11/11(土) 18:44:17ID:???
>>328
ありがとうございます。
まずいんですか・・・
0330nobodyさん2006/11/11(土) 18:49:13ID:???
ネストでけるって初めて知ったわ
0331nobodyさん2006/11/11(土) 19:58:37ID:???
htmlタグしか知らなかった俺がphp勉強してから2週間
最初はこのスレの質問の意味さえ全くわからなかったが、今では少しは理解できるようになった

あと三ヶ月まじめに勉強して模範的回答できるようになるから、おまいら待ってな
0332nobodyさん2006/11/11(土) 20:38:49ID:???
>>331
下らねぇ質問はここに書き込みやがれ専属の回答スペシャリストめざせ
合格率は0.3%
0333nobodyさん2006/11/11(土) 21:09:32ID:mWra3uS0
サーバ上のファイルに記録したデータを
データが作られてから24時間後に削除することはphpだけはできないですよね?
0334nobodyさん2006/11/11(土) 21:22:00ID:???
>>333
PHPだけじゃ無理だな〜
cronでPHPを定期的に起動してチェックするしかないと思うお
0335nobodyさん2006/11/11(土) 21:22:52ID:???
>>333
WebアプリケーションとしてのPHPからだと24時間後に必ず削除することはできない。
アクセスごとに24時間以上経っているデータを削除させることはできるので、
この方法で十分であれば選択肢の一つにはなる。(PHPのセッションではこの方法で期限切れセッションファイルを消している)
また、CLI版限定ではあるもののPHPで作られたcronもあったりする。
03363222006/11/11(土) 21:27:06ID:???
>>326
回答どもです

人様のを参考にさせてもらってる程度ではちょい厳しそうですね。
使う関数を教えて頂けると助かります
0337nobodyさん2006/11/11(土) 21:31:24ID:???
セッションってさ、session.gc_maxlifetimeで指定した秒数は
接続が維持されるのは保障されるんだよね?
session.gc_maxlifetimeを過ぎた場合は指定した確立で
セッションの初期化時に削除される。

※クッキーはブラウザを閉じるまで有効とした場合
0338nobodyさん2006/11/11(土) 22:09:52ID:???
>>322
てきとーだけどこんな感じ?
<table border="1">
<?php
$fp = fopen("test.csv", "r");
$year = ""; $rows = array();
while ($data = fgetcsv($fp, 10000)) {
 $next_year = array_shift($data);
 if ($year != $next_year) {
  print_year($year, $rows);
  $year = $next_year; $rows = array();
 }
 $rows[] = $data;
}
print_rows($year, $rows);
function print_year($year, $rows) {
 $rowspan = count($rows);
 foreach ($rows as $i => $data) {
  echo "<tr>\n";
  if ($i == 0) print "<td rowspan=\"$rowspan\">$year</td>\n";
  echo "<td>", implode("</td><td>", $data), "</td>\n";
  echo "</tr>\n";
 }
}
?>
</table>
03393382006/11/11(土) 22:15:25ID:???
ちょっと書き間違えた。
whileから抜けた後
× print_rows($year, $rows);
○ print_year($year, $rows);
まあコメント欄に直接書いただけで、動作確認してないから、どっちにしろ動くかどうかわからんけど。
03403222006/11/11(土) 22:53:29ID:???
>>338-339
ありがとう〜〜〜

頂いたソースだと
 $next_year = array_shift($data); の行に
parse error, unexpected '@' エラーがでてしまいましたが。

とっかかりが見えそうな気がしてきました

0341nobodyさん2006/11/11(土) 23:02:33ID:qWd4Y1Xf
以下のプログラムの処理をうまくループさせることができずに困っています
よろしければ、お教え願えないでしょうか?
配列 $value の内容-----
Array ( [0] => ツール [1] => データベース [2] => IEEE1394 [3] => カメラ
[4] => インターフェイス [5] => アプリケーション [6] => パソコン [7] => Java)

$encode = mb_convert_encoding($value[4],"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
$word = array();
while(1){
$kensaku2=preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match_result = $match[1];
array_push($word, $match_result);}
$pos = strpos($str, $match_result);
$str = substr($str, $pos+$kensaku2);
}
$unique=array_unique($word);
$array=array_values($unique);
print_r($array);
それで、実行結果は、$value[4]を指定して,URLに格納しているので
Array ( [0] => interface [1] => いんたーふぇいす [2] => インタフェイス
[3] => インタフェース [4] => インターフェース )となります。
そこで、なにがしたいのかと言いますと、プログラムの最初で、$value[4]として
いますが、ループさせて、$value[0]〜[7]の分の結果を得たいのです。
これがどうもうまくいかなくて。。。長くなってしまいましたが、何卒。
0342nobodyさん2006/11/11(土) 23:20:18ID:???
>>341
foreach($value as $val) {
$encode = mb_convert_encoding($val,"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
$word = array();
while(1){
$kensaku2=preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match_result = $match[1];
array_push($word, $match_result);}
$pos = strpos($str, $match_result);
$str = substr($str, $pos+$kensaku2);
}
$unique=array_unique($word);
$array=array_values($unique);
print_r($array);
}
じゃダメ?
0343nobodyさん2006/11/11(土) 23:27:03ID:???
>>341
なんでそんなことでつまずくのかそっちの方が不思議だ。
0344nobodyさん2006/11/11(土) 23:42:34ID:qWd4Y1Xf
>>342
全然OKです。ホントありがとうございます。

>>343
なんででしょ。色々と試したんですけどねぇ。。。
きっと検討違いなことをやってたんでしょうな。
0345nobodyさん2006/11/11(土) 23:55:07ID:???
$encode = mb_convert_encoding($val,"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
は
$html=file_get_contents("http://thesaurus.weblio.jp/content/";.urlencode(mb_convert_encoding($val,"UTF-8","Shift_JIS")));とか省略してしまえば?他にもあるけど。
0346nobodyさん2006/11/12(日) 00:07:53ID:AeUA6O/W
>>345
確かに、そのほうが簡略化して記述できますね。
でも、未熟なせいか、習慣になっているせいか、分けて記述していくほうが
見やすいんですよね。
こういうのって、熟練者は省略して書くものなんですか?それとも、人に
よりきりなんでしょうか?
0347nobodyさん2006/11/12(日) 00:14:00ID:???
人によりけり。
個人的には
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
と
$unique=array_unique($word);
$array=array_values($unique);
はいくらなんでも無駄じゃ?って思ったけど、
>>345の指摘してる場所はむしろそのままの方がいいと感じた。

基準としては読みやすさの他、
・そこに他の処理を加える可能性はあるか
・バグったときに一部を外したいと思ったとき外しやすいか
辺りも踏まえると明確にしやすいです。
その意味では>>345の修正は後で面倒なことになりやすい。
0348345(341)2006/11/12(日) 00:23:34ID:AeUA6O/W
>>347
なるほど。アドバイスありがとうございます。
$str="$utf"; に関しては、こうしないと処理が通らなくなってしまったので、
見た目むだな感じがしますが、仕方ないかと思って。
0349nobodyさん2006/11/12(日) 00:28:30ID:???
眼目となる処理も、そのための副次的な処理も同じようにずらずら書くと
そこでのフローがどうなってるのか読み取りづらい
ここに貼る分にはいいけど実際には、クエリを投げる部分と検索語を
チェックする部分(とエラー処理)は関数化してループをスッキリさせたほうがいい
0350nobodyさん2006/11/12(日) 00:34:18ID:???
要所は関数にすべき、は同意。
でもループ処理も書けないような人にそれはまだムリな気はする。
0351nobodyさん2006/11/12(日) 03:15:02ID:???
register_globalsをONにしているのですが、これは問題あるのでしょうか?
フォーム処理なども、$_POST["hoge"]ではなく$hogeなどにしています。
0352nobodyさん2006/11/12(日) 03:22:16ID:???
>>351
セキュリティ的に問題が多いので推奨されません。
将来的に廃止になる予定です。
0353nobodyさん2006/11/12(日) 03:24:42ID:???
>>352
と言うことは、フォームから値を受け取る時は常に
$_POST["hoge"]か$_GET["hoge"]にしておかなくてはいけないのでしょうか?

正直、$hogeというような書き方の方が便利なので、ほぼすべてこの書き方です。
ただ、セキュリティに問題あると言われると不安だし・・・
0354nobodyさん2006/11/12(日) 05:09:11ID:???
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&num=50&q=register_globals+%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3

なんとも思わないならそのままでいいんじゃない?
0355nobodyさん2006/11/12(日) 05:10:56ID:???
>>353
> $_POST["hoge"]か$_GET["hoge"]にしておかなくてはいけないのでしょうか?
基本的にはそう。まぁ、最初に$hogeに代入しちゃえば済む話だけど。
extract()を使う手もある。

個人的には$_GETや$_POSTはスーパーグローバルなんでかえって使いやすいけどね。
$hogeの方が使いやすいって言うってことはまともに関数化もしてないんじゃないの?
入力データとシステムで生成したデータは区別することを常に意識した方がいい、ってのもある。

register_globalsは特定のバージョンのPHPでは設定をONにしちゃうだけで
プログラムが何であれ攻撃を食らうセキュリティホールがある。
けど最新のはそこまで酷くないから、グローバル変数を使うときは
ちゃんと初期化をしてから使う、という原則を守ればそれほど危険ではない。
ただ、PHP6では無くなっちゃうのは確かっぽい。
0356nobodyさん2006/11/12(日) 06:42:49ID:???
> 正直、$hogeというような書き方の方が便利なので、

$hoge = $_GET['hoge'];

と書くだけで初期化し忘れた$fugaがへんなことになるのが防げるんなら
安いもんなんでは。

個人的には初期化し忘れた変数を参照できるのが
おかしいような気がするのでスーパーグローバルはセキュリティが・・・
ていう話はなんか変な気がするんだけど。
0357nobodyさん2006/11/12(日) 07:01:45ID:???
最近のPHPだとデフォルトが未初期化変数アクセスはNOTICE出るようになってるもんね。
でも面倒くさくてregister_globalsをONにしたいって人が、全部の入力変数をissetで
チェックできるかっつーとそれもムリがある気はするけど。
0358nobodyさん2006/11/12(日) 07:10:52ID:???
>>356
register_globalsとスーパーグローバル変数は別ですよ。
0359nobodyさん2006/11/12(日) 08:03:53ID:a0k5e3E0
PHP勉強して3ヶ月です。
何を質問していいのかわからないので
質問したくなる話をふってもらえませんか?
0360nobodyさん2006/11/12(日) 08:31:23ID:???
質問がないなら質問しなくていいのでお帰りください。
0361nobodyさん2006/11/12(日) 08:47:52ID:a0k5e3E0
出会い系サイトとかにあるメールを受信すると
ログインしたときに「新着メールが一件届いています」って表示したいのですが
メールを開封するこの表示を消すようにしたいです。
これはPHPだけで完了できるでしょうか?
0362nobodyさん2006/11/12(日) 10:18:38ID:???
メールを開封するこの表示?
意味わからん。
0363nobodyさん2006/11/12(日) 10:38:03ID:???
>メールを開封する『と』この表示を消すようにしたいです。

だとオモワレ
0364nobodyさん2006/11/12(日) 11:17:06ID:AtVKFDXl
ほんと下らない質問なんですが、dl()を使うと、
Not supported in multithreaded Web servers - use extension statements in your php.ini
とワーニングが出てしまいます。
php.iniはenable_dl = Onになっています。

サーバーはApache/2.0.55 (Win32)
PHPは4.4.2です。

他に何かチェックする項目はあるでしょうか?
0365nobodyさん2006/11/12(日) 11:33:37ID:???
>>364
エラーメッセージの通りだよ
マルチスレッドのwebサーバではdlはサポートされてない
win上でのapacheでdlは使えないからphp.iniに書いてねってこと
0366nobodyさん2006/11/12(日) 12:01:39ID:???
BBSのログを記事毎に作成しようかと思うのですが
そうすると一日100件書込みがあるとファイルが100個できてしまうわけで
一ヶ月で3000ファイル作ることになります。
これはサーバ、とくにHDDに悪いでしょうか?
0367nobodyさん2006/11/12(日) 12:09:47ID:???
ファイルの配置にもよるが、1つのディレクトリに大量のファイルをおくと、
かなり遅くなるよ。
0368nobodyさん2006/11/12(日) 12:59:26ID:???
>>366
Unix系だとi-node数の上限が決まってるから、ファイル作りすぎると上限に達して動かなくなる。
それに>367も言ってるが、ファイル数が増えると読み込みが遅くなる。
0369nobodyさん2006/11/12(日) 13:14:55ID:GywZkAAc
ブログ作ろうと考えてます。
Movable Typeみたいに、毎回HTMLファイルを作成してそこにアクセスするようにするのと、毎回PHPスクリプトを実行してDBからデータをひっぱってくるのどちらがいいのでしょうか?
やはりデータが増えれば増えるほど、PHP→DBからひっぱるだと効率が悪くなるんですかね。
0370nobodyさん2006/11/12(日) 13:20:17ID:???
>>369
DBへのアクセスが入ると速度は遅くなることは必至。
03713692006/11/12(日) 13:33:19ID:GywZkAAc
>>370
そうですか。 PHP→DBの方が作るのが簡単だから……と思っていたけれどやっぱり落とし穴があるんですね。
データが増えれば増えるほど書き出すHTMLが増えるからMTみたいに「再構築中です」ってなる時間が長くなってしまうんですよね……
いろいろ考えて見ます。 ありがとうございました。
0372nobodyさん2006/11/12(日) 13:45:56ID:???
>>371
Smartyのキャッシュ機能はその中間的な位置にあるので、検討してみるといいかも名
0373nobodyさん2006/11/12(日) 13:46:55ID:6O05V0pA
あるサイトにアクセスしてる人の数を表示させたいのですが
なにかヒントをいただけませんか?

参考ネタは下記のサイトの左側のオンライン状況です。
ttp://xoopsrss.com/
0374nobodyさん2006/11/12(日) 14:07:46ID:???
>>373
セッション
0375nobodyさん2006/11/12(日) 14:43:17ID:???
>>374
ハァ!?
0376nobodyさん2006/11/12(日) 14:45:09ID:???
>>373
Timer+Ajax
0377nobodyさん2006/11/12(日) 14:46:36ID:???
>>361
メールの開封フラグをDBに記録してログイン時にチェック
0378nobodyさん2006/11/12(日) 14:48:08ID:???
>>366
3000くらいなら速度も気にするほど遅くはならないと思うが、
万超えると微妙になってくるからディレクトリ分けた方がいいだろうね。
0379nobodyさん2006/11/12(日) 14:52:48ID:???
>>375
素人乙

>>376
無駄な負荷と通信を発生させんじゃねぇカス。
0380nobodyさん2006/11/12(日) 14:56:23ID:Cz0hhElV
SNSで1ユーザーに1セッションと決め付けている時点で傲慢さが見て取れる
0381nobodyさん2006/11/12(日) 15:00:27ID:???
っていうかセッションの保持期間をどの程度に設定させてるんだろ。
0382nobodyさん2006/11/12(日) 15:02:06ID:???
セッション使うってやつは素人
■ このスレッドは過去ログ倉庫に格納されています