2011-09-16 10 views
0

PHP変数を渡してjavascriptを使用して入力ログインを検証しようとしています。何らかの理由で正しく実行できません。あなたのコメントに感謝します。フィールドが空の場合、コードはfalseを返す必要があります(それはそう)が、 -PHP変数がJavascriptに正しく渡されない

function enter_log() { 
    var login_username = $("#username_field_log"); 
    var pass_password = $("#pass_field_log"); 
    var button = $("#enter_field_log"); 
    var php = "<?= echo $user; ?>"; 

    if ((login_username.val() == "") || (pass_password.val() == "")) { 
     $("#user_log_info").fadeIn('slow'); 
     $("#user_log_info").text("Not a proper login input"); 
     login_username.addClass("error"); 
     pass_password.addClass("error"); 
     return false; 
    } 
    else if ((login_username.val() != php) || (pass_password.val() == "")) { 
     $("#user_log_info").fadeIn('slow'); 
     $("#user_log_info").text("Not a proper login input"); 
     login_username.addClass("error"); 
     pass_password.addClass("error"); 
     return false; 
    } 
} 

だから、他の言葉で:

PHP:

$personal = mysqli_query($connect,"SELECT * FROM basic ORDER BY user_id DESC "); 
while($row = mysqli_fetch_array($personal)){ 
    $user = $row['username']; 
    $user_password = $row['password']; 
} 

Javascriptを/ jQueryのここでは、コードです私はPHP変数$userがjavascriptに正しく渡されないと仮定しているので、入力が正しいとき(ユーザー名が正しいときは)TRUEを返します。

+3

私はあなたの回答の電線でパスワードを送信しないことをお勧めします。 –

+0

さて、あなたはループを通して$ userを何度もリセットしています。それは役に立たないようです。また、入力をPHPにどのように送信していますか?彼らは正しいエントリを入力するとすぐに検証する必要があると言われていますが、ページが提出されていないため動作しません。 – Cfreak

+1

私たちが助けになるのに十分なJavaScriptコードが含まれていない可能性があります。あなたのスニペットには、関数*がtrueを返す 'return true;'ステートメントのようなものは含まれていません。 – adpalumbo

答えて

1

検証はJavascriptで行うべきではありません。あなたがそこで検証するならば、FirebugやChromeを開いてあなたのWebページをハックすることができます。あなたの検証のためにPHPコードを使用し、あなたの入力をきちんと消毒する必要があります。 PHPタグの使用について

var php = "<?php echo $user; ?>"; 

は、あなたのコードを書く必要がある方法です。 PHPマニュアル

http://www.php.net/manual/en/language.basic-syntax.phpmode.php

1. <?php echo 'if you want to serve XHTML or XML documents, do it like this'; ?> 

2. <script language="php"> 
     echo 'some editors (like FrontPage) don\'t 
       like processing instructions'; 
    </script> 

3. <? echo 'this is the simplest, an SGML processing instruction'; ?> 
    <?= expression ?> This is a shortcut for "<? echo expression ?>" 

4. <% echo 'You may optionally use ASP-style tags'; %> 
    <%= $variable; # This is a shortcut for "<% echo . . ." %> 

項1あたりに実際に有利な形式です。

ショートタグ(例3)は、short_open_tag php.ini設定ファイルディレクティブで有効になっている場合、またはPHPが--enable-short-tagsオプションで設定されている場合にのみ使用できます。

+0

はい - ありがとうございます!私は非常によくあなたがjavascriptを介して検証すべきではないことを知っている - 関係なく - なぜそれは正しいユーザー名の入力でfalseを返すのですか?それは私の質問だった - ありがとう.. –

0

それは、エコーと<?=

-1

を必要とされていないJavascriptのエンコーダへの単純な、信頼性の高いPHPはjson_encodeあるvar php = "<? echo $user; ?>";

または

var php = "<?= $user; ?>"; 

でなければなりません。

var jsVal = <?php echo json_encode($phpVal); ?>; // note trailing semicolon! 
+1

彼はJSONを使用していません – Cfreak

+0

コメントありがとうございます。 –

+0

@Cfreak 'json_encode'はスカラーも正しくエンコードするので、文字列の引用を心配する必要はありません。 –

0

私はあなたがこのようなことを検証すべきではないという合意に達しました。

JSを使用して、提出時にフォームを検証して、完成したセクションとすべてのセクションが完成したことを確認してから、PHPまたはスクリプト言語を使用してサーバー側の検証を行います。それが失敗した場合、その後JSは、ユーザの詳細を渡すのではなく、メッセージが表示されるようにあなたがそれをしたい場合は

は、など、その後

VAR userValid =

インスタンスの変数

に単純なPHPブールを渡します

php $ valResultはdbチェックなどの結果になります

このjs変数を使用します。

関連する問題