EVER

2011-12-21 3 views
3

をタイトルとして「 」ボタンを作成したいと思います。「利用可能」と表示されたボタンを作成したいと思っていたら、今後のすべてのユーザーにとって「利用できません」というボタンが表示されます EVER

注:その学校のプロジェクトのために、空想あるいは担保何も、ちょうどポイントいくつかのために曖昧であることを気の毒

を証明しようと、私がやろうとしています、すべては私のJoomlaのウェブサイトに記事を作成することです唯一の最速のユーザーがアクセスし、クリックできるボタン、それは thatsの私は、セキュリティ、あるいは浮気しようと心配していないです のJoomlaで記事を他の人の間で、PHP、JSコードはそれらに

+8

何がポイントですか? – BoltClock

+1

boolをDBに保存し、それが真か偽かをチェックします。 – slinzerthegod

+0

これらはすべて同じコンピュータの前にたくさんあり、それぞれマウスを持っていますか(たとえばゲーム中)? – hakre

答えて

1

データベースを使用することなく、最も簡単な方法は、ここでの基本的な論理は単純なテキストを使用します(またはあなたがYAML、INI、XMLなどを使用することができます)1(クリック)または0のいずれかでファイルをその中に(クリックされていない):

$filePath = './clicked.txt'; 

if((int) file_get_contents($filePath)){ 
    // put code here to display the button and mark it as disabled 
    echo "Can't click"; 
} else { 
    // code to display button 
    // code to process button request and marked clicked as true in the file 
    file_put_contents($filePath, '1'); 
    echo "changed file"; 
} 

いくつかの妥当性チェックを行う必要があります。つまり、ファイルが読み取り可能で、ファイルを更新するなどですが、dbを使用したくない場合は、ほとんどすべてのことを行う必要があります。

また、そのファイルをWebディレクトリの下に置いて、ユーザーがブラウズできないようにしてください。

編集:しかし、Joomlaを使用している場合は、dbを使用してください。この方法はuglyです。

0

を追加していることができますあなたはに値を救うことができますデータベースを作成するか、ボタンが押された場合はテキストファイルを作成します。データベースエントリまたはファイルが存在する場合、それ以上の押下は許可されません。ボタンを無効にして、ボタンを押したときにサーバー側のアクションを実行しないようにしてください。

+0

mmmmmm私はjoomlaを使用しています、より簡単な方法は、データベースを作成する必要がありますか?私はセキュリティ上の心配について心配していないので、クリックしたときにhtmlファイルを更新するだけですか? – a7medo778

+0

もちろん、HTMLファイルを更新することができます。しかし、悪意のあるユーザーは、とにかく書式を提出することができます;) – TimWolla

+0

よく私は詐欺師に懸念していません:P、それを行う方法についてのアドバイス? DBに行くよりはるかに簡単です – a7medo778

0

本当にこのボタンを1回だけクリックしますか?そうであれば、ある状態のデータベースにその状態を保存し、誰かがそれをクリックするとデータベースを更新する必要があります。

ではなく、で無効にすることをお勧めします。JavaScriptを無効にして、あなたの判断を邪魔する可能性があります。

脇に、この要件は私にはあまり意味がありません。これは確かに検証するのが難しいでしょう。別のページにリダイレクトする送信ボタンを作成することもできますが、ユーザーはブラウザの戻るボタンを押してボタンをもう一度クリックすることができます。あなたがそれを防ぐためにできることはあまりありません。

明らかにしたように、あなたの最良の賭けは、まだどこかのデータベースに「クリックされた」値を保存することです(ファイルは正常に動作します)。

ページを読み込むときに、PHPを使用してファイルの「クリック」値を確認します。そこにある場合は、HTML内のボタンを直接無効にすることができます。

私は、PHP(または使用しているサーバー側の言語)で第2レベルのチェックを追加することをお勧めします。誰かがボタンをクリックすると、データベース/ファイルに戻り、「クリックされた」値を確認できます。既にクリックされていることがわかっている場合は、何もしないでください(または、既にクリックされていることを知らせるメッセージをユーザーに表示することもできます)。それ以外の場合は、データベース/ファイルを適宜更新することができます。

+1

は、小規模な学校プロジェクトのために、セキュリティに本当に魅了されていません – a7medo778

+0

将来、このような質問をする場合 - 学校プロジェクトに関するもの - 宿題でタグ付けしてください。コミュニティがあなたの要件をよりよく理解するのに役立ちます。 – jwiscarson

+0

は確実に次のようになります:D – a7medo778

0

ここにはいくつかの作品があります。

まず、値を保存する方法(クリックしたかどうか)が必要です。私の標準的な方法は、値を格納するDBにuser_propertiesテーブル(uid、property、value)を作成することです。

アプリケーション内で管理するために、プロパティをUser(Profile)オブジェクトにロードし、参照用にSessionに格納します。ボタンがレンダリングされたら、UserプロファイルのProperties配列にその値が存在するかどうかを確認することができます。そうでなければ、それだけを残す。

ボタンをクリックすると、ユーザープロファイルのプロパティが保存され、データベースに更新されます。個人的には、更新データベースがある場合は、負荷のセッションプロファイルで何かが変更されているかどうかを確認します。

+0

これは妥当な答えですが、実際にボタンを1回だけクリックするという問題を解決しません。2人のユーザーが同時にページを開くことができます。サーバー上の値、Bのフォームにはまだアクティブなボタンがあります。 –

2

非常に複雑です。JavaScriptを使用しない人がコントロールできないようにするには、JavaScriptでボタンを生成します。あるユーザーがクリックすると、変更された他のすべてのクライアントに瞬時に反映され、ボタンは削除されます。その後、新しいユーザーに対して、ボタンの生成を許可しないでください。

+0

javascript、phpなど他の言語でも問題ありません。 – a7medo778

+0

最も単純なものを探しています。データベースにアクセスしないでください。 – a7medo778

+0

彗星を使用するのはこのシナリオの可能性を大幅に減らす唯一の方法です。ユーザーBがページをロードし、ユーザーAがボタンをクリックし、ユーザーBがボタンをクリックします。そして、もしあなたがjavascriptを使うならば、あなたは彗星しか作ることができません。実際には、代わりにフラッシュを使用できますが、同じ原則が適用されます。あなたは何かのクライアントサイドが必要です。 DBの場合、単純なファイルで十分です - ボタンを押すとファイルが作成され、ファイルが存在する場合はボタンが無効になります。 – Amadan

0

問題の性質を考えると、相手をブロックする方がよい場合があります。意味は、リンクを1回だけ訪問したいから、サーバーはそのページを一度提供してから、アクセスを拒否します。ボタンは誰でもクリック可能なままですが、要求されたページを1人のユーザーだけが実際に受信します。

これは、他の人がボタンを非表示にしたり、ファイルやDB内の値を設定したり、サーバー上で永続的に永続化したりするのと同じ方法で行い、ページが読み込まれたとき、中断したり、存在する場合はページ。

関連する問題