2011-09-16 38 views
0

我想通過傳遞PHP變量來驗證通過javascript輸入登錄。出於某種原因,我無法正確執行它。我會很感激你的評論。下面的代碼:PHP變量未正確傳遞給Javascript

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的:

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; 
    } 
} 

所以,換句話說 - 代碼應該返回false(和它這樣做),當字段爲空,但它沒有返回真正的時候輸入是正確的(我的意思是當用戶名是正確的),所以我假設P​​HP變量$user不正確傳遞給JavaScript?

+3

我會建議您不要在您的回覆中通過電話發送密碼。 –

+0

好吧,您通過循環多次重置$用戶。這似乎並不有用。另外你如何發送輸入到PHP?你似乎說,只要他們輸入一個正確的條目,它應該驗證,但這是行不通的,因爲該頁面沒有提交。 – Cfreak

+1

它看起來像你可能沒有包括足夠的JavaScript代碼給我們幫助。你的代碼片段不包含任何類似'return true;'語句的地方,函數*會返回true。 – adpalumbo

回答

1

驗證不應該通過Javascript完成。由於許多原因,我可以破解打開Firebug或Chrome並破解你的網頁,如果你在那裏驗證。您應該使用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項實際上是首選格式。

只有通過short_open_tag php.ini配置文件指令啓用短標記(示例三),或者使用--enable-short-tags選項配置了PHP。

+0

是的 - 謝謝!我知道你不應該通過JavaScript驗證 - 不管 - 爲什麼它返回錯誤的正確的用戶名輸入?這是我的問題 - 謝謝你.. –

0

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

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

回聲和<?=不需要

-1

一個簡單的,可靠的PHP爲Javascript編碼器json_encode

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

他沒有使用JSON – Cfreak

+0

謝謝大家的評論! –

+0

@Cfreak'json_encode'也正確編碼標量,所以你不必擔心引用字符串。 –

0

我同意你不應該驗證這樣的事情。

使用JS驗證表單提交以確保其完成,並且所有部分都完整,然後使用php或任何腳本語言,然後進行服務器端驗證。

如果你想它,這樣,如果失敗,則JS顯示一條消息,然後,而不是將用戶的詳細信息等,然後通過一個簡單的PHP布爾給一個變量

例如

VAR userValid =

PHP的$ valResult將是由給定的數據庫查詢等

然後使用這個js變量的結果。