2011-09-16 146 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变量的结果。