gpt4 book ai didi

php - 将 javascript prompt() 保存到 mysql

转载 作者:行者123 更新时间:2023-11-30 06:56:53 24 4
gpt4 key购买 nike

<script type="text/javascript">
function saveReason()
{
var reason=prompt("I'm saving this because","");
if (reason!=null && reason!="")
{
<?php
mysql_query("INSERT INTO `save` (reason) VALUES ('reason'))");
?>
}
}
</script>

我觉得自己很愚蠢,因为我认为我的想法行不通。从 prompt() 框中获取数据并将其保存到 mysql 的正确方法是什么?

最佳答案

这个答案将是迄今为止我在这里看到的大部分内容的汇总,但更详细一些。

您似乎对什么是服务器端代码和什么是客户端代码感到困惑。 PHP 代码在页面内容发送到客户端之前执行。此页面包含您的 javascript。因为php是在服务端执行的,在发送给客户端之前,我们称之为服务端代码。因为php是一种在服务器端执行的编程语言,所以我们称它为服务器端语言。

因此您的页面包含 javascript 和 html 被发送到客户端。浏览器现在解释 html,突然发现一个 <script>标签。它立即开始在脚本标签之间执行 javascript。因为这个脚本是在客户端的浏览器中执行的,所以我们说它是在客户端执行的。然而,现在说 javascript 是一种纯粹的客户端语言是错误的,因为现在正在使用像 node.js 这样的东西,但是,看起来你刚刚开始弄清楚所有这些东西,我会坚持使用 php 作为服务器边。如果你掌握了 php,以及客户端和服务器端脚本的概念,nodejs 绝对值得一看。但是现在,我正在远离这个答案的要点。回到它,让我们看一下您发布的代码。所有这些代码都放在一个 .php 文件中:

<script type="text/javascript">
function saveReason()
{
var reason=prompt("I'm saving this because","");
if (reason!=null && reason!="")
{
<?php
mysql_query("INSERT INTO `save` (reason) VALUES ('reason'))");
?>
}
}
</script>

现在让我们看看请求此页面时会发生什么。当服务器开始查看 php 文件时,它处于 HTML 模式。这意味着它遇到的任何东西都将被添加到输出中。所以你的 javascript 将被添加到输出直到第 6 行,因为在第 7 行,你打开了 php 标签。服务器现在进入 PHP 模式,这意味着它执行遇到的 php 代码,将 php 代码的任何输出添加到已处理的输出中。

您的 sql 查询已处理。该查询向表“save”添加一行,其中“reason”列的值为“reason”,因为这是您传递给它的字符串。在此查询之后,服务器遇到结束 php 标记。它现在将其余的 html 添加到输出中,并将其发送给用户。用户现在将收到的页面如下所示:

<script type="text/avascript">
function saveReason()
{
var reason = prompt("I'm saving this because");
if (reason!=null && reason!="")
{
}
}

执行此操作的方法是使用 AJAX。 AJAX代表异步的Javascript和XML。

这基本上意味着在不重新加载页面的情况下向服务器发送请求。这在原生 javascript 中是可能的,但由于浏览器之间的差异,使用 javascript 框架更容易。您使用框架编写的代码也更具可读性。我将向您展示它是如何使用 jQuery 完成的,jQuery 是目前最容易学习的框架之一。

    $.post("save.php", { reason: reason});

此代码向您的服务器发送一个发布请求

在您的服务器上,您创建一个名为 save.php 的文件来处理数据。使用您发布的代码,php 文件将如下所示:

<?php
$reason = $_POST['reason']; // gets the data it received from the request
mysql_query("INSERT INTO `save` (reason) VALUES ('"+$reason+"'))");
?>

现在,为了安全,你应该把你从用户那里得到的数据安全地放入数据库,这样黑客就不能使用sql注入(inject),所以你应该把第2行改成

$reason = mysql_real_escape_string($_POST['reason']);

您可能还想确保用户不能向您的页面添加额外的 html,甚至更糟的是,不能添加额外的 javascript。您可以通过在 mysql_query 之前添加一行来实现这一点,如下所示:

$reason = strip_tags($reason);

您可以通过将第 2 行编辑为

$reason = mysql_real_escape_string(strip_tags($_POST['reason']));

希望对您有所帮助。

关于php - 将 javascript prompt() 保存到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com