2011-11-22 8 views
0

私はパスワードフィールドを表示するフォームを持っています。フォームがポストされると、ページのオンロード中にjavascript関数を呼び出します。パスワードフィールドを取得すると、パスワードは入力されません。私が投稿されたフォームの内容にアクセスしようとしている場合、javascript関数をonloadから間違った方法で呼び出していますか?フォームに投稿されたパスワードへのアクセス方法を教えてください。

<!DOCTYPE html> 
<html> 
<script type="text/javascript"> 
    function checkPwd() 
    { 
     // okay the form was posted and we got called from onload, now get the post'd password 
     var thePwd = document.getElementById("theUsersPassword").value; 
     alert("the var thePwd is: " + thePwd);   
    } 
</script>   
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Beta:</title> 
</head> 

<body onload="checkPwd()"> 

    <form method="post" action="index.php"> 
    Beta: <input id="theUsersPassword" name="usersPassword" type="password"><br/> 
    <input type="submit" value="Submit" /> 
    </form> 

</body> 
</html> 
+0

は、あなたが同じページをロードしている:

だから、あなたのログインフォームがsecuredpage.phpで、今、この

<form action='securedpage.php'> <label>enter your password: <input type='password' name='pass'></label> <input type='submit'> </form> 

ようになり、あなたはこのような何かを行うことができます形? – EmCo

+1

なぜJavaScriptを使用して 'input type =" password "'にアクセスしてチェックしたいのですか?それはセキュリティホールのためにドアを開いている。ただフォームをサーバにすぐに提出し、 'index.php'でアクセスしてください。 – BalusC

+0

onloadは、ページが読み込まれたときに呼び出され、フォームが送信されたときには呼び出されません。 –

答えて

1

あなたがJavaScriptからPOSTデータフィールドにアクセスすることはできません。

実際のフォームの送信をブロックし、フォームからデータを取得することです。

form.onsubmit = function() { checkPwd(); return false; }; 

それとも、検証のいくつかの種類をやろうとしている場合、あなたはcheckPwdからブール値を返し、form.onsubmit = checkPwd

+0

私はそれを取るform.onsubmitはjavascriptですが、どこで上記のform.onsubmitをコード化しますか?オンロードで? – wantTheBest

+1

」タグの後のどこかに、 'checkPwd'関数を宣言し、' obsubmit'ハンドラをフォームにバインドする場所に '
1

私は間違っている可能性がありますが、これは通常PHPで行われていませんか?

<?php 
    if (isset($_POST['variable'])) { 
    $first = $_POST['variable']; 
    echo $first; 
    } 
?> 

<form action="" method="POST"> 
    <input type="password" name="variable" /> 
    <input type="submit" /> 
</form> 

このコードは、フォームに入力されたパスワードを吐き出します。

+1

これはコメントであり、答えではありません。 – Nasreddine

+0

ただそれを編集しました。 – codedude

+0

それは私の推測でした。私は自分の考えが正しいかどうか疑問に思っていました。フォームがサーバーにポストされ、サーバーは新しい空白のフォームを提供します。そのため、パスワードフィールドはポストされたフォームのパスワードフィールドではありません。私がindex.phpにポストバックしたときにサーバによって作成されたもので、パスワードが空白の理由です。私はサーバーがフォームを再生成する前にpost'dパスワードを取得する必要があります。正しい? – wantTheBest

3

入力オンロードをチェックしたくないと思いますが、フォームが正しく送信されたらチェックしますか? onloadでは、ユーザーはまだ何かを入力する機会がないからです。

あなたがそれををonSubmit行いたい場合は、単にこれにフォームタグを変更します。

<form method="post" action="index.php" onsubmit="checkPwd()"> 
1

を行う必要があり、これを試してみてください:

<form method="post" action="index.php" onsubmit="return checkPwd()"> 

checkPwd()を返す必要があります。 false提出を避ける(何か問題がある場合)。trueアクションを完了させる(すべてが正しい場合)。

+0

すごく感謝して、入力の検証とブロックを処理します。これは私には新しく、無効な入力を発見したときにフォームの送信を停止する方法を知らなかったからです。 – wantTheBest

+0

これはうまくいくかもしれませんが、安全ではありません。少なくとも、パスワードはサーバー上で検証する必要があります。 – bigblind

+0

@FrederikCreemersあなたは正しいですね。ベスト:あなたは決してクライアント側の検証を信用するべきではありません。 – EmCo

2

これは、要素がもう存在しないためです。 Javascriptが1ページだけで実行されますので、あなたが

document.getElementById('passwordform'); 

を行う場合は、そのIDを持つ要素がないので、それはそれを見つけることができません。 パスワードをクッキーに保存するか、LocalStorage API経由で取得することでjavascriptで行うことができますが、安全でないため、これを行う方法を示すつもりはありません。

Javascriptはクライアントサイドの言語なので、あなたが書いたコードはすべてブラウザに送られます。つまり、すべてのユーザーがコードを表示および操作できます。

PHPなどのサーバー側言語で行う必要があります。

PHPでは、期待したパスワードと単純に値を比較できます。

フォームからサーバーにデータを送信するには、POSTメソッドを使用する方法とGETメソッドを使用する方法があります。Getメソッドは、情報のshorerピースを送信するために使用され、これは安全であるために必要な情報のための良いアイデアではありません

example.com?variable=value 

の形式でURLに追加され、URL以来最大を持っています長さ(ブラウザーごとに異なる)、パスワード情報を送信するときは、POSTメソッドを使用する必要があります。あなたが提出したときに

<?php 
$expected_pass="!4mr00t"; 
if($_POST['pass']===$expected_pass){ 
    //show your content 
}els{ 
    //show homepage 
} 
?> 
関連する問題