【问题标题】:Using HTML variable in PHP在 PHP 中使用 HTML 变量
【发布时间】:2014-06-04 11:28:26
【问题描述】:

我正在尝试在我的 PHP 脚本中使用存储在令牌中的值来使用 SQLite 更新数据库值。它不会让我使用 document.getElementByID....有什么想法吗?

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

【问题讨论】:

  • 你不能在客户端执行服务器代码
  • PHP 是服务器端,Javascript(和 getElementByID)是客户端。你不能以这种方式混合它们。
  • 使用AJAX将Javascript值传递给PHP脚本
  • 在我的 .js 文件中我有: document.getElementById('token').value = new_token;返回新令牌; new_token 也是我想用来更新我的数据库值的值......我如何使用 AJAX 来做到这一点?我还要在 .js 文件中这样做吗?

标签: javascript php html sqlite


【解决方案1】:

PHP 代码是在服务器端执行的,因此网站会连同 PHP 代码的结果一起发送到客户端,但在源代码中没有发现任何 PHP。因此 HTML 标签不能在网站上的 PHP 中使用。

【讨论】:

    【解决方案2】:

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

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

    Javascript(jquery) 代码:

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

    创建新的 php 脚本,例如 setValue.php(r 使用控制器操作,或者您自己的员工如何路由页面)。脚本代码:

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

    【讨论】:

    • 危险:你容易受到SQL injection attacks
    • 嗨亚历克斯,我应该把最高位放在哪里?在 HTML 或 .js 文件中?它是一个名为 data 的函数,然后需要调用吗?
    • 第一部分 - js,你应该在按钮点击时调用这个函数,第二部分 - 将由 ajax-query 调用并保存值的 php 脚本
    • @Alex — 在你的答案中加入安全漏洞并不是一个好主意。
    • @Quentin 你认为我应该在这个答案中讲授 PDO 和 csrf 吗?
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 2022-01-26
    • 2013-09-08
    • 2012-11-03
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多