トップページ⇒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カテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
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:???
セッション使うってやつは素人
0383nobodyさん2006/11/12(日) 15:12:04ID:ZwQu2SQp
PHPでトラックバックの送信を実装したく、以下のスクリプトを作成しました。
このスクリプトで問題なくトラックバックを送信できるのですが、
プロキシを設定した状態でこのスクリプトを実行すると、
fputs($sock, "POST $path HTTP/1.1\n");この行でエラーが出てしまいます。
プロキシを設定しないと、うまくいくのでプロキシの影響だと思いました。
質問�@ プロキシを設定した状態で下記のスクリプトでトラックバックの送信が行えるか?

質問�A 行えるとしたら、どのような設定、もしくはスクリプトの改良が必要か?
よろしくお願いします!

<?php
$charset = "UTF-8";
$pingurl = "http://localhost/blogn/tb.php/1";;
$urlinfo = parse_url($pingurl);
$host = $urlinfo['host'];
$path = $urlinfo['path'];
$sock = fsockopen($host, 80, $errno, $errstr, 60);
if (!$sock) die("$errstr ($errno)\n");
$data = "title=" . urlencode("test");
$data .= "&url=" . urlencode("http://yahoo.co.jp";);
//その他パラメータを追加する
fputs($sock, "POST $path HTTP/1.1\n");
fputs($sock, "Host: $host \n");
fputs($sock, "Content-Type: application/x-www-form-urlencoded; charset=$charset\n");
fputs($sock, "Content-Length: " . strlen($data) . "\n");
fputs($sock, "\n");
fputs($sock, "$data");
$result = '';
while (!feof($sock)) $result .= fgets($sock, 4096);
fclose($sock);
?>
0384nobodyさん2006/11/12(日) 15:19:25ID:???
>>380はSNSで1ユーザに複数セッションと決め付けてる時点でキモヲタぶりが見て取れる。

>>381-382
ど素人乙。セッションをよく理解してないバカだな、お前らは。
っていうかアクティブになってる人数を把握するのに、わざわざAJAXを使うヤツは基地害。
0385nobodyさん2006/11/12(日) 15:32:02ID:???
無知な奴が喚いているだけか、脳内ルールな奴が多いいからなぁ
0386nobodyさん2006/11/12(日) 15:41:44ID:???
単にログインIDとセッションIDを紐付けて1ユーザ1セッションにした上で
n分以内に更新されたセッション数を数えるだけだよね
0387nobodyさん2006/11/12(日) 15:57:30ID:???
前提を勝手に妄想しすぎ
0388nobodyさん2006/11/12(日) 16:04:00ID:???
>>373の参考URLみたけどログインIDはつかってなくね?
>>386おまえアフォ
0389nobodyさん2006/11/12(日) 16:17:18ID:???
Ajaxでもできることをわざわざセッションにこだわる理由がわからん
0390nobodyさん2006/11/12(日) 16:37:11ID:???
アホやら素人やら罵りあうSMオナニースレはここでつか?
0391nobodyさん2006/11/12(日) 16:44:34ID:???
>>390
無知はでてくるなカス
0392nobodyさん2006/11/12(日) 18:16:55ID:EC0Gx1iz
変な質問かと思いますが、たとえばShell_exec()などでtelnetを実行するとすぐ切断されてしまいますが
これを解決するにはどのような処理を行ったらよいのでしょうか。
PHPでブラウザから他のPCにリモートログインできるターミナルエミュレータのようなものを作ってみたいのですが、可能でしょうか。
0393nobodyさん2006/11/12(日) 18:23:50ID:???
つ RFC854
0394nobodyさん2006/11/12(日) 18:24:52ID:???
やり方は千差万別で、どれが正しいとかはない。
好きな手法でやればいいだけじゃないか。
>>375で煽られたからってムキになるよ。
スルー汁。
0395nobodyさん2006/11/12(日) 18:58:53ID:???
>>392
ムリじゃない?
0396nobodyさん2006/11/12(日) 19:49:48ID:???
>>392
誰か作ってた。
0397nobodyさん2006/11/12(日) 19:51:11ID:6O05V0pA
メールアドレスを入力してファイルに書き込むスクリプトを作ってます。
メールアドレスの長さはどれくらいにするのが無難ですか?
RFCに沿うとやたらと長くなるので実用範囲でお願いいたします。
0398nobodyさん2006/11/12(日) 20:06:28ID:???
>>397
100文字
0399nobodyさん2006/11/12(日) 20:11:34ID:???
PHPで取得したタイムスタンプをMysqlに保存するとき、
型名はTIMESTAMPを使用したほうがいいですか?
それともINTをつかったほうがいいですか?
0400nobodyさん2006/11/12(日) 20:15:31ID:???
用途による
データとして保存するならINTでいいだろ
PHPには関係ねえべ
0401nobodyさん2006/11/12(日) 20:18:57ID:???
あるだろバカ
0402nobodyさん2006/11/12(日) 20:19:28ID:???
ねえよ禿
0403nobodyさん2006/11/12(日) 20:36:55ID:???
sine
0404nobodyさん2006/11/12(日) 20:38:39ID:sscQxJ2c
俺はテキストで保存しているが、問題なし。
0405nobodyさん2006/11/12(日) 20:39:21ID:???
>>399
データとロジックを一体で考えてるならintの方が効率はいいかもね。

ただ、DB自体の日付演算関数とか使えなくなるし、検索も手動で
やりづらくなったりして使い勝手は落ちるからその辺のバランスの問題。
PHPの内部でしか使うつもりのないデータなら全然困んないだろうし。

あと2038年問題があるからその何年か前にはUNIXタイム型は型のサイズ変換が
入ることが予想されるので、その際にDBのコンバートが必要になる可能性も高い。
短期間しか運用しないシステムで、データのバックアップなんかもdumpでなく
PHPなどを通すかもしくは一切バックアップしないようなやつならどうでもいいかも。
0406nobodyさん2006/11/12(日) 20:43:19ID:???
日付演算は普通につかえる。
内部データは変わらん。
0407nobodyさん2006/11/12(日) 21:20:47ID:???
あれ。そうなのか。勘違いしてました。スマソ
0408nobodyさん2006/11/12(日) 22:12:57ID:AeUA6O/W
PHPのモジュールのインストールについてお聞きしたいことがあります。
環境はWindows XPでPHP5を使っています。
PHPのモジュールをソースからコンパイルしてインストールするということが必要
になったのですが、Windowsでどのようにソースをコンパイルして、モジュールを
インストールしたら良いのかわかりません。
よろしければ、お教えいただけないでしょうか?
04093922006/11/12(日) 22:37:03ID:EC0Gx1iz
>>393
>>395
ありがとうございます。
自分でも少し諦めかけてますが……

>>396
本当ですか!
覚えている限りで結構ですので詳細を教えていただけないでしょうか
04103512006/11/12(日) 23:03:07ID:???
>>352-358
深夜にセキュリティの質問したものですが、アドバイスいただきありがとうございます。
とりあえず現在のプログラムに追記して

if(isset($_POST["submit"])){
$name=$_POST["name"]{
$hoge=$_POST["hoge"]{
}
表示箇所は<?=$hoge?>とか (これはOKですよね)

みたいにしようと思います。まだまだセキュリティの知識が乏しいので
勉強します。皆さん、ありがとうございました。
04113512006/11/12(日) 23:04:53ID:???
間違えた。if内の{ は、;との打ち間違いです。。
0412nobodyさん2006/11/12(日) 23:11:11ID:???
> $name=$_POST["name"]
NOTICEが発生
> <?=$hoge?>
<?= htmlspecialchars( $hoge, ENT_QUOTES, 'EUC-JP' );
0413nobodyさん2006/11/12(日) 23:12:25ID:LM10n4zr
こいつって、本物かな?俺、メールやっちまったけど、やばいかな・・・。まっ、オッパイ見れたから良しとするか。・・・ってほんまやばないか誰か教えてくれへん!!
http://47.xmbs.jp/mackey/
0414nobodyさん2006/11/12(日) 23:18:39ID:???
>>410
412にもあるけど、入力値をそのまま出力するアプリには脆弱性がある
<>"'&は変換してから出力しないと
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
04153512006/11/12(日) 23:39:51ID:???
>>412-414
再度修正ありがとうございます。
手持ちのリファレンスを見ると、412さんが書いたような表示が良さそうです。

重ね重ね勉強になります。ありがとうございました。
0416nobodyさん2006/11/13(月) 10:00:57ID:???
分からない事があるのでお願いいたします。

linuxにphpをインストールする時に、コンパイル時にextensionを組み込んじゃう方法と
php.iniに設定して後から組み込む方法とあるじゃないですか

これは例えば、
前者のほうが高速に動くけど、後者の方がメモリを多く食っちゃうとかあるのでしょうか?

頻繁に使うものだけコンパイル時に組み込んで、たまにしか使わないものは後から動的?に組み込んだほうが
いいのでしょうか?それとも、ちょっとでも使うものは組み込んじゃったほうが吉?

アドバイスお願いいたします。
0417nobodyさん2006/11/13(月) 10:20:17ID:???
設計について質問です。

保存用テキストファイルでもデータベースでも保存する件数が増えると
それだけデータが莫大になってきますよね?掲示板とかWEBメールとか。

そういう場合は「○件に達したら1行目を削除」もしくは「○件に達したら別のテーブルを作成」
みたいな処理を入れて対応するのでしょうか?
それとも別の、もっと効率的な構築の仕方があるのでしょうか?
0418nobodyさん2006/11/13(月) 11:08:46ID:fcwOcTYQ
>>417
基本はそれでいいと思うよ。あとはそれの応用で過去ログ化して閲覧できるようにしたり、HTML化したりとかじゃない。
0419nobodyさん2006/11/13(月) 14:31:16ID:???
そろそろおれを認定回答者と認めてもらえませんか?
0420nobodyさん2006/11/13(月) 14:36:17ID:???
コテつけてくれ。


NGにしとくから。
0421nobodyさん2006/11/13(月) 16:22:23ID:???
[入力]→[入力確認]→[登録完了]

という一般的な登録フォームで、登録完了後にブラウザの「前に戻る」で
戻ると表示がおかしくなる時がありますが、これを解消するにはどうしたら
いいのでしょうか?
0422nobodyさん2006/11/13(月) 16:37:36ID:???
「おかしくなる」の内容による
0423nobodyさん2006/11/13(月) 16:38:04ID:???
表示がおかしくなるのは、キミんとこだけの問題。
一般的に起きている事ならFAQになっているはずだ。
どうおかしくなるのか不明では、解消のしようがない。

文字化けが起こるならヘッダなり何なりで漢字コードを適切に出す。
そもそも「戻る」させないようにリダイレクトする。
など。
0424nobodyさん2006/11/13(月) 17:23:24ID:???
いえ、文字化けではなくて、例えば名前を入力して確認画面にいった後、ブラウザで戻るとおかしくなるんです。
0425nobodyさん2006/11/13(月) 17:30:35ID:???
「ページの有効期限切れ」か?
0426nobodyさん2006/11/13(月) 17:31:33ID:???
だから、どう「おかしくなる」のか書かないと分からない。
0427nobodyさん2006/11/13(月) 17:31:49ID:???
お前らバカだなw
0428nobodyさん2006/11/13(月) 18:07:49ID:???
フォームからメールアドレスの内容をチェックする以下のような物を作りました。

if($_POST["mailaddress"]==""){
echo ="メールアドレスが入力されていません";
}elseif(preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/',$_POST["mailaddress"])){
echo ="メールアドレスではありません";
}else{
echo "正しいメールアドレスです";
}

入力チェックは問題ないのですが、その後のメールアドレスの識別が通りません。
上記のソースのどこがおかしいかご指摘いただけないでしょうか。
04294282006/11/13(月) 18:09:11ID:???
すみません、2,4行目のecho = はecho の間違いです。
0430nobodyさん2006/11/13(月) 18:10:57ID:???
>>425-426
いえ、ページの期限切れではなく、例えば名前を入力してブラウザで戻るとおかしくなるんです。
0431nobodyさん2006/11/13(月) 18:12:44ID:???
>>430
何がどういう風におかしくなるのかを書けw
0432nobodyさん2006/11/13(月) 19:05:19ID:???
>>417
データ蓄積用には最初からn件単位で保存する。
表示時にはそこから最新を必要な分だけ取ってくる。
0433nobodyさん2006/11/13(月) 19:12:19ID:???
>>428
メールアドレスのチェックで正しいときに「メールアドレスではありません」って表示してるから。
■ このスレッドは過去ログ倉庫に格納されています