PHP变量未正确传递给Javascript

时间:2011-09-16 21:21:19

标签: php javascript jquery

我试图通过传递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(并且它会这样)但是当输入正确时它不会返回TRUE(我的意思是当用户名是正确的时候)所以我假设P​​HP变量$user未正确传递给javascript?

4 个答案:

答案 0 :(得分: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配置文件指令启用时才可用,或者如果PHP配置了--enable-short-tags选项。

答案 1 :(得分:0)

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

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

不需要echo和<?=

答案 2 :(得分:0)

我同意你不应该验证这样的事情。

使用JS验证提交表单以确保其完成并且所有部分都已完成,然后使用php或任何脚本语言进行服务器端验证。

如果你想要它,那么如果它失败了,那么JS会显示一条消息,而不是传递用户细节等,然后将一个简单的php布尔值传递给变量

例如

var userValid =

php $ valResult将是db check等给出的结果

然后使用这个js变量。

答案 3 :(得分:-1)

一个简单,可靠的PHP到Javascript编码器是json_encode

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