0

X と Y という 2 人のユーザーがいます。そして、ページ Z という 1 つのページがあります。ページ ZI にアクセスするには、リンクがあります。

ページ Z がユーザー X ブラウザーで既に開いている場合、リンクを無効にして、ユーザー Y へのページへのアクセスを拒否します。

  • どうやってやるの?
  • それを行うのに最も適している言語はどれですか (jQuery、Php など)?
4

3 に答える 3

0

これらの答えのいずれにも耳を傾けないでください。

あなたはこれを行うことができます(それはその種の厄介なことは事実ですが)

PHP javascript(j-queryを使用)とmysqlが必要です。可変セッションの最初のユーザーに与えるphpスクリプトを作成したい場合、数秒ごとにajaxはdbにphp time();を使用してスクリプトを送信し続けます。2番目のユーザーがphpページにアクセスすると、4秒以内に更新があるかどうかをdbに尋ねます。つまり、最初のユーザーがまだログオンしている場合、db時間から3秒以内の遅延が発生します。そうでない場合は、ユーザーがアイドル状態であるか、ページを離れてアクセスを許可できることを意味します。phpでリダイレクトするには、ヘッダー関数を使用できます。あなたがこれを行う方法に正確に興味があるなら、それはかなり長く、理由もなくそれを書きたくないので、私の応答と返信をアップグレードしてください。

this is the page you want people to go on:
 $times = time(); 
 $num = $times + 10000;
mysql_connect("localhost", "dbname", "password") or
die("Could not connect: " . mysql_error());
mysql_select_db("dbname");
$result = mysql_query("SELECT  FROM $tablename WHERE areloggedin > $num);
$num=mysql_numrows($result);
if( $num < 0 ){
header('Location: http://redirectpage.html');

}そうしないと{

   $times = time(); 
     $con = mysql_connect("localhost","username","password");
                if (!$con)
                {
                die('Could not connect: ' . mysql_error());
                 } 
                mysql_select_db("dbname", $con);


                $qry = mysql_query("UPDATE
                                     $tbalename SET      
                                    `areloggedin`= '$times'
                WHERE id = $variable_seession_foruser ");


                $result = @mysql_query($qry);

}

?>(あなたのhtml)

function ok(){$ .get( "php / foo.php"、function(data){}); setIntreval(ok、3000);

//foo.phpという名前のphpファイルを分離します

于 2012-11-07T19:24:46.120 に答える
0

できることは、サーバー側でブール変数を作成して追跡することです。ユーザーがページZに誰かがアクセスした場合、この変数をtrueに設定し、他の誰かがそのリンクを開こうとしているときに、ブール変数がtrueかどうかを確認し、そのページへのリダイレクトを停止し、falseの場合はページZに移動します. ユーザーがページを離れたら、ブール変数を false に設定します。

これはそれを達成するための 1 つの方法かもしれませんが、それでもそれほど単純ではないと思います。それを実装する際には、多くの障害に直面することになります。

于 2012-11-07T10:03:24.693 に答える
0

次のようなものの簡単な実装/回避策を考え出そうとしています:

何が必要

  1. システム全体のキャッシュ (APC または SESSIONSは行いません)。複数のスレッドが同じキャッシュにアクセスできるようにするには、memcachedredisのようなものが必要です。

  2. または、単なるデータベース + crontabs だと思います (ただし、キャッシュが優先されます)

  3. PHP/サーバーサイドスクリプト

  4. JavaScript 対応クライアント

ストラテジー

  1. Javascript は、X (TTL) 秒ごとに HTTP リクエストを作成します。このリクエストは、X+5 秒の cache-ttl を使用して、(選択したキャッシュ内の) キー「占有」をクライアント IP に設定します。(DB を選択した場合は、X 秒ごとにエントリをリセットする cronjob が必要になります)

  2. ユーザーがページと「キー」!== IP アドレスにアクセスしようとすると、アクセスを拒否します。

注意事項

  1. ユーザーが JS を有効にしている場合にのみ編集を許可し、それ以外の場合は警告を表示します

  2. ユーザーに信頼を置きます。ユーザーはこれを簡単に回避できます。

概要

基本的に、JS + キャッシュを使用した人為的なキープアライブ セッションについて説明しました。ページがどれだけアクティブに編集されるかに応じて、TTL を好きなだけ長くまたは短く設定できます。

于 2012-11-07T10:35:25.420 に答える