2014-04-20 24 views
-1

我试图在我的PHP脚本中使用存储在令牌中的值来使用SQLite更新数据库值。它不会让我使用document.getElementByID ....任何想法?在PHP中使用HTML变量

<div id="TokenCount"> 
<label for="token"><abbr title="Tokens">Tokens</abbr></label> 
<input id="token" value="0" /> 
</div> 

<div id="Buttons"> 
<button id="pay" onClick="pay(10); loadMessage()"><?php $db=sqlite_open("../../logins.db"); 
$token = document.getElementById('token').value; 
sqlite_query($db,"UPDATE Users SET tokens='$token' WHERE user_id='{$_SESSION['user_id']}'"); 
sqlite_close($db); ?>Pay</button> 
</div> 
</div> 
+1

你不能在客户端执行 – Alex

+0

服务器代码'PHP'是服务器端,'Javascript'(和'getElementByID')是客户端。你不能以这种方式混合它们。 – hindmost

+0

使用'AJAX'将Javascript值传递给PHP脚本 – hindmost

回答

0

PHP代码被执行的服务器端,所以该网站发送到客户端用PHP代码而不在源中找到的任何PHP的结果。因为这个HTML标签不能用在PHP的网站上。

0

正如我在评论中所说的,您不能在客户端(在浏览器)执行PHP代码(服务器端代码)。

您应该发送AJAX query到服务器,并将此值保存到服务器端的mysql。

的JavaScript(jQuery的)代码:

function loadMessage(){ 
    $.post("setValue.php", {val:document.getElementById('token').value} function(data) { 
     alert('success'); 
    }); 
} 

创建例如setValue.php(R位指示使用行为,或者你自己的员工如何路由页)新的PHP脚本。脚本代码:

$token = $_POST['val']; 
sqlite_query($db,"UPDATE Users SET tokens='$token' WHERE user_id='{$_SESSION['user_id']}'"); 
sqlite_close($db); 
+0

**危险**:你很容易受到[SQL注入攻击](http:// bobby-tables .com /)** – Quentin

+0

问题不在于代码安全。 – Alex

+0

嗨亚历克斯, 我在哪里把最高位?在HTML或.js文件中?它是一个称为数据的函数,然后需要调用? – user3553438