2011-12-24 6 views
-1

現在、私は約5人しかログインできないサイトを持っています。JavaScriptを使用してデータベースに接続してユーザー名を変更する方法

ログインするたびに5人がNDAを読み、2つのテキストボックスに名前を入力する必要があります。名前と苗字。ユーザーが[送信]ボタンを押すと、名前が正しい場合はサイトに移動し、名前以外の場合はサイトからログアウトします。

今私はこれを行うためにPHPを使用する方法を知らないので、これを行うにはJavaScriptを使用しています。

初めてユーザーが自分の名前を正しく入力しなかった場合、私は今のユーザーのようにユーザーをログアウトさせたいのですが、このユーザーのユーザー名を "xxx10017969"に彼のユーザー名の最後。これにより、彼がログインして私に連絡してもらう必要がなくなり、ユーザー名をデータベースで修正できるようになります。ここ

はHTMLです:

 <form method="post" action="index.php" style="width: 600px;"><p>By typing your first and last name below you are bound by this contract. If you type anything other than your first and last name, you will be logged out and your account will be deleted.</p> 
<p><input type="text" value="First Name" name="first_name" id="first_name" /> 
<input type="text" value="Last Name" name="family_name" id="last_name" /> 
<input type="date" value="Date" name="signiature" /></p> 
     <p><input type="button" value="Access Site" onclick="checkforname();" /><p> 
     </form> 

そして、ここでは私のjavascriptです:

<script type="text/javascript"> 

    function checkforname() { 
    var fname = "<?php echo "$identity->first_name"; ?>"; 
    var lname = "<?php echo "$identity->family_name"; ?>"; 

    var enteredFname = document.getElementById("first_name").value; 
    var enteredLname = document.getElementById("last_name").value; 

    if (enteredFname == fname && enteredLname == lname) { 

    } 
    else { 
    window.location = ("login.php?logout"); 
    } 

    } 

    </script> 
+0

PHPを使用してサーバー側で常にこのような検証を行う必要があります。クライアント側でユーザー確認を行うのは良くないので、ユーザーはそれを渡すことができます。 – Virendra

+0

あなたのソリューションはまったく安全ではありません。 ユーザーの姓と名はプレーンテキストで書かれており、ページのソースコードをチェックすると読めますか? –

+0

JavaScriptはクライアントのブラウザで実行されますか?もしそうなら、誰かがコードを見てこのロジックをバイパスするのを妨げるものは何もありません。 – wallyk

答えて

2

-

フォームはindex.phpに提出し、そのロジックがあるべき場所、それはあります。 ?

<?php 

// Code to populate $identity from the database goes here 

// Checks if user entered fields match database record 
if ($identity->first_name != $_POST['first_name'] || 
    $identity->family_name != $_POST['family_name']) 
{ 
    // Code to disable account goes here, but need to see a sample of 
    // your existing php database code to show how to modify first_name 
    header("Location: login.php?logout"); 
} 

任意のヘッダを処理する必要がある点に注意してください:あなたはlogin.phpへのリダイレクト方法を活用したい場合は

ログアウト、index.phpのよりもコードのことで、このようなものを持っている必要がありますPHPが改行を含むものを出力する前に...もしindex.phpが "in-line php" htmlページであるならば、html部分が始まる前にファイルの一番上にあることを確認してください。 <?phpタグは1行目にする必要があります。

また、セッションなどからユーザーを再度参照して、ユーザーレコードが格納された$ identity変数を取得する方法があることを前提としています。

ポストフィールドでのユーザー入力の消毒や、警告を生成しないようにポストフィールドが空であるかどうかをチェックするなど、理想的にここで行われることがありますが、それは別の時間のレッスンです。

EDIT:$ IDをどのように埋め込むかなど、データベースとやりとりしているときの既存のPHPコードを表示してください。そうしないと、特定の解決策が提供されません。

+0

これは、ユーザーがログインしている人物であるかどうかをチェックすることです。このページはすでに保護されています。上記の私が求めていることをお読みください。ログイン中にユーザーが自分の名前に正しく署名しないと、ユーザーのユーザー名が変更され、ログアウトされます。彼は再びログインできないように名前が変更されています。 –

+0

データベースのfirst_nameを変更するには、データベースに接続するためのライブラリやフレームワークをコードで使用するか、そのままのPHPを使用するかについての詳細が必要です。また、first_nameを変更するのではなく、 "disabled"のような新しいデータベース列を考えてみましょう。 "disabled" = 1に設定します。データベースコードのサンプルを見れば、おそらく$ identityの人口のようになります。 – codercake

2

それはクライアント側の言語ですので、あなたは、JavaScriptで直接サーバ側のデータベースに接続することはできません。サーバー側の情報をjavascriptに取得するには、通常、AJAX呼び出しを使用してjavascriptに情報をサーバーに送信し、応答を取得して処理できるようにします。

1

JavaScriptを使用してユーザーを決して検証しないでください。常にPHPを使用してサーバー側で行う必要があります。クライアント側でユーザー確認を行うのは良くないので、ユーザーはそれを渡すことができます。上記のコードを使用すると、ユーザー名とパスワードがページのソースコードに表示され、誰でもページのソースを表示することができます。

私はこれを行うことをお勧めします。ユーザーが姓と名を入力すると、login.phpページにフォームを送信します。 PHPを使用してそのページのユーザーを確認し、有効であればlogin.php?ログアウトページにリダイレクトします。 PHPの代わりに、JavaScriptでこれを行うために

+0

私はPHPを知らないし、これを行う方法がわからない。 Javascriptは今のところ私にとっては大丈夫です。 –

関連する問題