5分間の総計閲覧者 - PHPプロ!Q&A掲示板

2821

  • 0P

5分間の総計閲覧者

質問日時 / 2010年7月23日 17:55    回答数 / 12件

Questioner:  girls  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

そのファイルに5分以内にアクセスした人の数を表示させたいのですが、いまいち方法がわからないので知恵をお貸し下さいm(__)m
自分で出来たのは、携帯の場合、個体識別情報を取得して保存、それ以外の場合、または個体識別情報を送信しない場合は、ipを保存して、後は、preg_matchでそのファイルに保存されているかをチェックして、重複の場合は、保存しないようにしました。

そこでこれを5分毎にリセットしたいのですが、どうすれば宜しいでしょうか??
5分というのは、あくまで目安なので、5分で無くてもいいです。
時間の処理の部分を書いて下さると非常に助かりますm(__)m

ちなみにわかりやすく、文章をechoしておりますが、実際はcountされた人数だけを表示するつもりです。


  1. <html>
  2. <head>
  3. <title>テスト</title>
  4. </head>
  5. <body>
  6. <?php
  7. $docomo=$_SERVER["HTTP_X_DCMGUID"];
  8. $au=$_SERVER["HTTP_X_UP_SUBNO"];
  9. $softbank=$_SERVER["HTTP_X_JPHONE_UID"];
  10. if($docomo){$data=$docomo;}
  11. elseif($au){$data=$au;}
  12. elseif($softbank){$data=$softbank;}
  13. else{$data=$_SERVER['REMOTE_ADDR'];}
  14.  
  15. $file="test.dat";
  16. $logmax="100";
  17. $lines=file($file);
  18. $num=count($lines);
  19. $file1=file_get_contents($file);
  20. if(!preg_match("|$data|i",$file1)){
  21. $fp=fopen($file,"w+");
  22. flock($fp,LOCK_EX);
  23. fputs($fp,"$data\n");
  24. for($i=0;$i<=$logmax;$i++){
  25. fputs($fp,"$lines[$i]");
  26. }
  27. flock($fp,LOCK_UN);
  28. fclose($fp);
  29. echo"あなたは、ユニークユーザーです。";
  30. }
  31. else{
  32. echo"あなたは、重複ユーザーです。";
  33. }
  34. echo"<hr />{$num}人閲覧中";
  35. ?>
  36. </body>
  37. </html>

簡単な質問で申し訳ございませんが、宜しくお願い致しますm(__)m

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01pannnaユーザを識別出来るユニークな文字列(なんでもいいで
┃┗A01-1girls考えていたら遅れましたm(__)mご返答ありがとうござい
┃ ┗A01-1-1pannna>ログファイルへのI/Oは排他制御とはなんでしょうか??
┃  ┗A01-1-1-1girlsご回答ありがとうございますm(__)m 実は、最近趣味
┃   ┗A01-1-1-1-1pannnaまずお詫びです。ちゃんとソースを読んでいなくて処理
┃    ┗A01-1-1-1-1-1girlsご回答ありがとうございます。 いわゆるよくあるオ
┃     ┗A01-1-1-1-1-1-1pannnaとりあえず関数名と同じ名前の変数は使わない方がいい
┃      ┗A01-1-1-1-1-1-1-1girlsわざわざありがとうございますm(__)m firefoxだと
┃       ┗A01-1-1-1-1-1-1-1-1pannnaすみません。どう考えても動かないソースでした…。
┃        ┗A01-1-1-1-1-1-1-1-1-1girls度々ありがとうございますm(__)m 試させて頂いた所
┃         ┗A01-1-1-1-1-1-1-1-1-1-1pannnatypoで判定が代入になってますね。重ね重ねすみません
┃          ┗A01-1-1-1-1-1-1-1-1-1-1-1girlsご回答ありがとうございます。 非常に助かりました
┗A02magicflute2この意見は投稿者によって削除されました。

回答一覧

並び替え:

A01
answererpannna [7月23日 18:39] (最終編集:7月24日 04:30)

ユーザを識別出来るユニークな文字列(なんでもいいですが)と最終アクセス日時を
ファイルに保存して、ユーザがアクセスする度にチェックしにいけばいいですよね。

現在日時 - 最終アクセス日時 > 300秒なら重複なし、
現在日時 - 最終アクセス日時 <= 300秒なら重複

上記判断で5分以内にアクセスしたユーザかどうかが分かるので、
あとは毎回ユーザがアクセスする度にログファイルの最終アクセス日時を
書き換えればいいかと。

ただ、ログファイルへのI/Oは排他制御だけはきちんとして下さい。
このあたりがちゃんと出来ないようであれば、データベースを使うのがいいかと思います。

コードを直接書くのは勉強にならないと(個人的に)思うので、
strtotime関数とgmdate関数あたりのリファレンスを読むと幸せになれるかもしれません、
なんて書いてみます。

-----

と、良く読むと全く見当違いのレスしてますね…

ログファイルの適当な位置にファイルの作成日なんかを持っておいて、
現在時刻と比較して5分以上経過していたらログファイルを新規作成なんていう方法でも
いけそうです。いっそのことログファイルのディレクトリにはログファイルのみ、な運用だと
ファイル名をタイムスタンプにするなんて荒業(?)でもいいかもしれません

# もちろんユーザ比較なんかの処理は必要かと思いますが

あとはアクセスログから取得するというのもありかもしれませんね

この意見に回答する

ツリーへ TOPへ

A01-1
replyergirls [7月25日 17:58] (最終編集:7月25日 19:30)

考えていたら遅れましたm(__)mご返答ありがとうございます。

ログファイルへのI/Oは排他制御とはなんでしょうか??

もう一度自分なりに書いてみましたが、何故か、行の削除の部分がうまくいきません。

どうしたらいいのでしょうか??

  1. <html>
  2. <head>
  3. <title>テスト</title>
  4. </head>
  5. <body>
  6. <?php
  7. /*
  8. 個体識別情報またはIPアドレスを取得する開始
  9. */
  10. if(isset($_SERVER["HTTP_X_DCMGUID"])){$data=$_SERVER["HTTP_X_DCMGUID"];}
  11. elseif(isset($_SERVER["HTTP_X_UP_SUBNO"])){$data=$_SERVER["HTTP_X_UP_SUBNO"];}
  12. elseif(isset($_SERVER["HTTP_X_JPHONE_UID"])){$data=$_SERVER["HTTP_X_JPHONE_UID"];}
  13. else{$data=$_SERVER['REMOTE_ADDR'];}
  14. /*取得終了*/
  15.  
  16. /*現在の時間を秒数に置き換える処理開始
  17. 時間×3600秒+分数×60秒+秒数=総計秒数
  18. */
  19. $time=date("h:i:s");
  20. $time1=explode(":","$time");
  21. $time1[0]=str_replace("0","","$time1[0]");
  22. $time2=$time1[0] * 3600 + $time1[1] * 60 + $time1[2];
  23. /*秒数に置き換え終了*/
  24.  
  25. $file="test.dat";//保存するファイル名
  26. $logmax="100";//保存する最大行数
  27. $lines=file($file);
  28. $file1=file_get_contents($file);//重複判定の為に一度読み込む
  29.  
  30. if(!preg_match("|$data|i",$file1)){//ユーザー情報が重複の判定処理
  31. $fp=fopen($file,"w+");
  32. flock($fp,LOCK_EX);
  33. fputs($fp,"$time2,$data\n");//最新のユーザー情報を保存する(総計秒数,個体識別情報またはIP)
  34. foreach($lines as $item){
  35. $item=explode(",",$item);//ファイルのデータを分割する
  36. for($i=0;$i<=$logmax;$i++){
  37. if($time2-$item[0]>=300){//現在の総計秒数-既に保存された総計秒数が300秒(5分)以上の場合は、削除する処理
  38. fputs($fp,"");//データを空にする
  39. }
  40. fputs($fp,"$lines[$i]");//残りのデータを保存する
  41. }
  42. flock($fp,LOCK_UN);
  43. fclose($fp);
  44. echo"あなたは、ユニークユーザーです。";
  45. }
  46. }
  47. else{
  48. echo"あなたは、重複ユーザーです。";
  49. }
  50.  
  51. $num=count($lines);//最終的に残った行数を閲覧者人数にする処理
  52. echo"<hr />{$num}";//閲覧者人数出力
  53. ?>
  54. </body>
  55. </html>



言葉ではなんとなくわかるのですが、いまいち理解できていない自分がいます(>_<)

宜しくお願い致します(>_<)

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerpannna [7月26日 15:20] (最終編集:7月26日 15:45)

>ログファイルへのI/Oは排他制御とはなんでしょうか??

排他制御という単語でgoogleなりで調べてください。
I/Oはinput/outputの略です。要はファイルの読み込み/書き込みのこと。

あとソースについての内容ですが、行の削除をする必要があるんですか?
・ログファイルにユーザが存在しなかった場合はログファイルにユーザ情報と現在の時間を追記
・ログファイルにユーザが存在した場合は、前回アクセス時間を現在の時間に置換
でいいのではないかと。

まずフローチャートでいいので実現するために必要な処理を「日本語や記号」で書いて、
アルゴリズムを整理&理解してからプログラムをしてはどうでしょう。

以下要点だけまとめておきます。
・日付もチェック対象に含めないと「日付をまたいだ5分以内」のチェックが出来ません
・重複チェックは$lines配列に対してチェックしないと意味がありません
fputs関数のリファレンスをちゃんと読みましょう

# 興味本位でお尋ねしますが、これ趣味でPHPやられてるんですよね…?
# まさか本職のPG/SEではないと思いたいですが…

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyergirls [7月26日 16:23] (最終編集:7月26日 16:26)

ご回答ありがとうございますm(__)m

実は、最近趣味で始めたのですm(__)m
なので言葉だけで説明されるとまだまだ理解出来ない事が多いです。

O/Iは略語だったのですね、理解しました。

削除したかったのは、無駄にログが溜まって欲しくなかったからなのですが、削除ではまずいのでしょうか??
書き換えるという事は、例えば、たまたま一回アクセスした人の情報が永遠に残るという事ですよね??
5分間に閲覧した人だけを残しておきたいです。

  1. $logmax="100";
  2. $file="test.dat";
  3. $lines=file($file);
  4. foreach($lines as $item){
  5. if(preg_match("|$data|i,$item")){//重複ユーザーの場合の処理
  6. /*
  7. ここに5分間の判定ですが、そこが全くわからないです。
  8. */
  9.  
  10. echo"重複ユーザーです。";
  11. }
  12. else{//ユニークユーザーの場合の処理
  13. $fp=fopen($file,"w+");
  14. flock($fp,LOCK_EX);
  15. fputs($fp,"$time,$data\n");//新しい情報を書き込む
  16. for($i=0;$i<=$logmax;$i++){//今までの分追記
  17. fputs($fp,"$lines[$i]");
  18. }
  19. flock($fp,LOCK_UN);
  20. fclose($fp);
  21. echo"ユニークユーザーです。";
  22. }

foreachの中に重複判定の処理を入れてみたのですが、こういう意味なのでしょうか??
思ったのですが、これって行毎に判定しているので、同じ動作が繰り返されて無駄な処理では無いのですかね??
file_get_contentsでデータを取得して、その中に含まれているかを確認すれば、一回で済むと思ったのですが、これって初心者的考えなのでしょうか??


時間の処理と、重複ユーザーの場合の処理がどうしてもわかりません。
どうかお助け下さいm(__)m

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1
replyerpannna [7月26日 17:49] (最終編集:7月26日 18:04)

まずお詫びです。ちゃんとソースを読んでいなくて処理はおおよそは問題ないですね。
混乱させてしまってすみません。

--

システムとしての要件は、
 ・ユーザ別に前回アクセス時刻から5分以内のアクセスはカウントしないでユーザユニークな合計アクセス数を取る
のか
 ・ログファイルは5分毎に新規に作成(閲覧者数もそのタイミングで0になる)し、再作成するまでの5分以内にアクセスしたユーザのユニーク数を取る
のどちらですか?
基本は前者だと思いますが(例えばアクセスカウンタでは同一ユーザが同日内で
複数アクセスした場合は1アクセスとみなすものが多い)、
後者だとすると話が全く変わってきます。

もし後者ならばファイルにユーザ識別文字列だけ書く仕様にして、
・ログファイルがなければ新規作成
・ログファイルが存在してユーザの重複チェックで重複なしならば追記
・5分毎にcronでログファイル削除
になるでしょうか。5分毎にやることじゃないと思いますが…。

一応前者だという前提ですが、私ならこういう仕様にします。
・ログファイルは『ユーザ識別文字列,最終アクセス日時(unixタイムスタンプ)』で1レコードとする
・1日1回、現在時刻と最終アクセス日時の差が24時間以上経過しているユーザはログファイルから削除する
 →ユーザ削除のプログラムをcronで動作させる

重複チェックは今のままで問題ありませんが、
16行目のfor文の終了条件はcount関数を使いましょう。存在しない要素まで参照する可能性があります。
ただし、for($i=0;$i<count($lines);$i++)なんて書かないように。
ループ毎にcount関数が実行されます。

時間の処理ですが、unixタイムスタンプを使う仕様にしているので、
time関数の戻り値 - 最終アクセス日時」の結果が300秒以下またはより大きいかで
重複かどうかの判定をします。詳しくはtime関数のリファレンスを参照して下さい。

以下レスです。

>削除したかったのは、無駄にログが溜まって欲しくなかったからなのですが、削除ではまずいのでしょうか??
>書き換えるという事は、例えば、たまたま一回アクセスした人の情報が永遠に残るという事ですよね??
>5分間に閲覧した人だけを残しておきたいです。

これだと「5分毎に最終アクセスから5分経過したユーザを削除」しなければいけません。
cronか何かで5分毎にログファイルの整理するんでしょうか?
サーバの負荷考えると5分毎なんてとてもじゃないですがやってられません。

>file_get_contentsでデータを取得して、その中に含まれているかを確認すれば、一回で済むと思ったのですが、これって初心者的考えなのでしょうか?

ちゃんと読んでなかったのがここでした。問題ないかとは思います。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyergirls [7月26日 18:50] (最終編集:7月26日 18:52)

ご回答ありがとうございます。

いわゆるよくあるオンラインカウンターというやつですm(__)m
参考までに貼っておきます。
http://www.netriver.jp/product/visitriver
今はテキスト表示ですが、この問題が解決出来たら画像での表示にしようと考えています。

色々考えたらよくわからなくなり、結局一番最初のと同じようになってしまいました。。

■私の考えた処理の手順
1 個体識別情報またはIPアドレス取得
2 タイムスタンプ取得
3 アクセス毎に、5分以上経過した人のログを削除する(cronでは無く半自動)
今わからないのは、ここだけとなります。
現在のタイムスタンプから既に保存したタイムスタンプを引いた値が300だった場合、5分という意味になりますか??
ログを削除する部分のコードだけ書いて下さると非常に助かりますm(__)m


4 個体識別情報またはIPアドレスがファイルの中に含まれていなかったら記録する
5 5分以内の人だけファイルに全て保存し直す
6 最終的なファイルの行数を数えると閲覧者となる




  1. <?php
  2. /*
  3. 個体識別情報またはIPアドレスを取得する開始
  4. */
  5. if(isset($_SERVER["HTTP_X_DCMGUID"])){$data=$_SERVER["HTTP_X_DCMGUID"];}
  6. elseif(isset($_SERVER["HTTP_X_UP_SUBNO"])){$data=$_SERVER["HTTP_X_UP_SUBNO"];}
  7. elseif(isset($_SERVER["HTTP_X_JPHONE_UID"])){$data=$_SERVER["HTTP_X_JPHONE_UID"];}
  8. else{$data=$_SERVER['REMOTE_ADDR'];}
  9. /*取得終了*/
  10.  
  11. $time=time();//タイムスタンプ取得
  12.  
  13. $file="test.dat";//保存するファイル名
  14. $lines=file($file);
  15. $hantei=file_get_contents($file);//重複判定の為に一度読み込む
  16.  
  17. /*アクセスされる度に必ず判定する処理*/
  18. foreach($lines as $item){//ログを配列に
  19. list($hanteitime,$userdata)=explode(",","$item");//一行毎に分解
  20. if($time - $hanteitime >= 300){//ログの中でアクセスから5分以上経過したものを削除する
  21. /*
  22. 行の削除の仕方がわかりません。
  23. ここだけお願い致しますm(__)m
  24. */
  25. }
  26. }
  27. if(!preg_match("|$data|i",$hantei)){//ユーザー情報が重複の判定処理
  28. $fp=fopen($file,"w+");
  29. flock($fp,LOCK_EX);
  30. fputs($fp,"$time,$data\n");// 新しい情報を書き込む
  31. for($i=0;$i<=$logmax;$i++){//今までの分追記
  32. fputs($fp,"$lines[$i]");
  33. }
  34. flock($fp,LOCK_UN);
  35. fclose($fp);
  36. }
  37. echo "現在",count($lines),"人中です。";
  38. ?>

どうぞ宜しくお願い致しますm(__)m

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1
replyerpannna [7月27日 16:12] (最終編集:7月27日 16:13)

とりあえず関数名と同じ名前の変数は使わない方がいいです。

今手元にPHPの環境がないので机上デバックだけのソースですが削除部分はこうすればいいかと。
エラーがでたら適度直してください(汗
cronでの削除はないようなので、最終アクセスから5分以上経過したユーザも削除するようにしています。

<?php
$cntDelUser = 0;    // 削除したユーザ数
$userExists = false;    // アクセスしたユーザがログファイルにいる:true/いない:false
$records = file('test.dat');
$limit = sizeof($records);
for($i = 0; $i < $limit; $i++) {
    // ユーザIDと最終アクセス時刻に分割
    list($uid, $lastAccessTime) = explode(',', $records[$i]);
    // 重複判定
    if($uid = $data) {
        // 重複ユーザの場合
        if(time() - $lastAccessTime > 300) {
            // 最終アクセスから301秒以上経過している
            $records[$i] = '';
            $cntDelUser++;
        } else
            // 最終アクセスから300秒以内の場合最終アクセス時間を更新
            $records[$i] = $data . ',' . $time();
        $userExists = true;
    } else {
        // 重複ではない場合
        if(time() - $lastAccessTime > 300) {
            // 最終アクセスから301秒以上経過しているユーザは削除
            $records[$i] = '';
            $cntDelUser++;
        }
    }
}
// 結果をログファイルに書き込み
$fp = fopen('test.dat', 'w+');
foreach($records as $rec) {
    // 文字列長が0の要素は削除ユーザなので書き込まない
    if(strlen($rec))
        $fp = fprintf($fp, '%s\n', $rec);
}
// 新規ユーザなら最後の行に追加する
if(!$userExists)
    $fp = fprintf($fp, '%s,%d\n', $data, time());
fclose($fp);

echo 'ユーザ数:' . ($limit - $cntDelUser);


こんな感じでしょうか…。
もっと良いコードの書き方もありますが、とりあえずやりたいことは出来るかと思います。

-- 追記
Operaだとコード表記がうまく動いてくれませんね…

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1-1
replyergirls [7月27日 18:13]

わざわざありがとうございますm(__)m

firefoxだとエラーですね。
試しに
if(isset($_SERVER["HTTP_X_DCMGUID"])){$data=$_SERVER["HTTP_X_DCMGUID"];}
elseif(isset($_SERVER["HTTP_X_UP_SUBNO"])){$data=$_SERVER["HTTP_X_UP_SUBNO"];}
elseif(isset($_SERVER["HTTP_X_JPHONE_UID"])){$data=$_SERVER["HTTP_X_JPHONE_UID"];}
else{$data=$_SERVER['REMOTE_ADDR'];}

の部分を上に追加して、そのまま試してみたのですが、動作は以下の手順となります。

アクセス

fclose(): supplied argument is not a valid stream resource

二度目以降→
Function name must be a string

直そうとしたのですが、何が間違っているかが特定できませんでしたm(__)m泣

どこをどうしたらいいのでしょうか??

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1-1-1
replyerpannna [7月27日 19:59] (最終編集:7月27日 20:02)

すみません。どう考えても動かないソースでした…。
環境作ってソースを修正して実行しましたが問題なさそうです。

Function name must be a stringエラーはtime関数に$を付けて変数扱いしたせい、
fclose関数でエラーになっていたのは、fprintf関数の戻り値をファイルポインタ変数$fpに代入していたせい
で発生しています。こんなコード書いてちゃダメですね…。

以下修正版です。

<?php
// 初期化とか
$datafile = './test.dat';
$cntDelUser = 0;        // 削除したユーザ数
$userExists = false;    // アクセスしたユーザがログファイルにいる:true/いない:false

// ログファイルがなければ重複チェックしない
if(file_exists($datafile)) {
    $records = file('./test.dat');
    $limit = sizeof($records);
    for($i = 0; $i < $limit; $i++) {
        if(!strlen($records[$i]))    continue;
        // ユーザIDと最終アクセス時刻に分割
        list($uid, $lastAccessTime) = explode(',', $records[$i]);
        // 重複判定
        if($uid = $data) {
            // 重複ユーザの場合
            if(time() - $lastAccessTime > 300) {
                // 最終アクセスから301秒以上経過している
                $records[$i] = '';
                $cntDelUser++;
            } else
                // 最終アクセスから300秒以内の場合最終アクセス時間を更新
                $records[$i] = $data . ',' . time();
            $userExists = true;
        } else {
            // 重複ではない場合
            if(time() - $lastAccessTime > 300) {
                // 最終アクセスから301秒以上経過しているユーザは削除
                $records[$i] = '';
                $cntDelUser++;
            }
        }
    }
}

// 結果をログファイルに書き込み
$fp = fopen($datafile, 'w+');
foreach($records as $rec) {
    // 文字列長が0の要素は削除ユーザなので書き込まない
    if(strlen($rec))
        fprintf($fp, '%s' . PHP_EOL, $rec);
}
// 新規ユーザなら最後の行に追加する
if(!$userExists)
    fprintf($fp, '%s,%d' . PHP_EOL, $data, time());
fclose($fp);

if($userExists)
    echo 'user:' . ($limit - $cntDelUser);
else
    echo 'user:' . ($limit - $cntDelUser) + 1;

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1-1-1-1
replyergirls [7月27日 20:31] (最終編集:7月27日 20:40)

度々ありがとうございますm(__)m

試させて頂いた所、ほぼ正常でした。

何故ほぼかと申しますと、PCと携帯で試した所、

PCでアクセス

記録される

表示は一人

携帯ですぐにアクセス

携帯の情報で上書きされる

ここまで10秒程度の操作ですので、PCも携帯も5分以内のアクセスとなりますが、上書きされた為に閲覧人数は一人になっております。

成功例は、閲覧人数が二人となるのが理想です。

20:32にPC1でアクセス(閲覧人数1)
20:33に携帯1でアクセス(閲覧人数2)
20:37にPC2でアクセス→PC1のログを削除(閲覧人数2)
20:38に携帯2でアクセス→携帯1のログを削除(閲覧人数2)
20:39に携帯3でアクセス→削除無し(閲覧人数3)

こんな感じになるのが成功例となります。
同時刻アクセスが多ければ多い程、ログの行数が多くなる感じですかね。

これは、どこを修正すれば宜しいでしょうか??
何度もすみませんm(__)m
頑張って覚えるので、宜しくお願い致します。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1-1-1-1-1
replyerpannna [7月27日 21:13] (最終編集:7月27日 21:13)

typoで判定が代入になってますね。重ね重ねすみません。

(誤)    if($uid = $data) {
(正)    if($uid == $data) {

>これは、どこを修正すれば宜しいでしょうか??
>何度もすみませんm(__)m
>頑張って覚えるので、宜しくお願い致します。

ミスっておいてこんなこと言うのもあれですが、ここは勉強させる場所ではありません。
あくまでも参考としてコードを出しているので「動かないからどうして?」ではなく、
その原因を調べるとかはしていますか?(レスの時間的にしてないとは思いますが)

自分で調べて理解出来ない限り覚えようとしても無理です。
「動いた=理解出来た」ではないことを理解して下さい。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1-1-1-1-1-1
replyergirls [7月27日 22:10]

ご回答ありがとうございます。

非常に助かりましたm(__)m

なるべく自分でも頑張りますねm(__)m
有り難く見ながら勉強させて貰います。
ご指摘ありがとうございます。
プロの方が改めて凄いと実感しました。

この意見に回答する

ツリーへ TOPへ

A02
answerermagicflute2 [7月23日 23:56] (最終編集:7月24日 17:04)

この意見は投稿者によって削除されました。

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)