【问题标题】:how to send javascript variable to php mysql [duplicate]如何将javascript变量发送到php mysql [重复]
【发布时间】:2015-11-16 03:16:20
【问题描述】:

我正在尝试将 javascript 变量插入 php mysql,但它没有插入。它插入为<javascript>document.write(window.outerWidth); </javascript> x <javascript>document.write(window.outerHeight); </javascript>。但结果是 1366 x 728

我该怎么办?

<?php
$width = " <script>document.write(window.outerWidth); </script>";
$height = " <script>document.write(window.outerHeight); </script>";
$xex = " x ";
$resulteee = "$width $xex $height";
echo $resulteee;
?>

【问题讨论】:

  • JavaScript 在客户端运行,之后它解析文件 HTML。因此没有显示 no JavaScript;只是一些包含一些“
  • 你需要使用XMLHttpRequest即ajax。
  • 好的先生,我现在应该怎么做才能将结果 1366 x 728 插入到我的 php mysql 数据库中。实际上我正在使用此代码获取访问者浏览器大小。
  • 谢谢user2864740先生,但不幸的是我是php新手,我不明白你给我的链接中的代码先生。

标签: javascript php jquery html mysql


【解决方案1】:

最好的方法是 AJAX,这是一种 Javascript 将数据发送到 PHP 脚本的方法。你应该自己做一些研究,但你的解决方案最终会看起来像这样。我正在使用 jQuery 语法,这是一个非常有用的 Javascript 库,我建议您研究一下。

// get values we want
var width = window.outerWidth;
var height = window.outerHeight;
var payload = {"width" : width, "height" : height}; // just a normal object

// send them to server
$.get('/path/to/script.php', payload, function(response) {
    alert('Sent the values!');
});

在你的 PHP 中:

<?php
$width = $_GET['width'];
$height = $_GET['height];

/*
 * DEFINITELY sanitize these things before they're anywhere NEAR the database!
 * research "prepared statements" and "mysqli escape" or you are going to have a very bad time with a hacked server
 */

// do some database stuff!

希望这可以为您提供一个良好的起点。您真的需要确保在盲目地接触数据库查询之前清理数据,否则攻击者可以轻松执行 SQL 注入攻击、删除数据库或转储所有数据。这些都是非常糟糕的事情。

【讨论】:

  • 谢谢先生,我会试试这个代码
  • 这不会开箱即用 - 请注意,AJAX 请求实际上是提交给/path/to/script.php。您需要将其调整为正确的 URL,并期望这两个 $_GET 变量中的数据!
【解决方案2】:

AJAX 是解决您问题的好方法:

<script type="text/javascript">
     function call_ajax () {
           var width = window.outerWidth;
           var height = window.outerHeight;

           var xmlhttp = new XMLHttpRequest();

           xmlhttp.onreadystatechange = function() {
                 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                     document.getElementById("abc").innerHTML = xmlhttp.responseText;
                 }
             }
             xmlhttp.open("POST", "a.php?height="+height+"width="+width, true);
             xmlhttp.send();
        }
    </script>

在 a.php 页面上,您可以回显变量以获得如下输出:

<?php
echo $_POST['height'];
echo $_POST['width'];
die;

【讨论】:

  • 您可以在调用函数的同一页面上创建一个 id 为“abc”的 div。因此输出将显示在该 div 中。
  • 先生,我必须在两个不同的页面中使用上述代码?
  • 是的,因为您使用的是 ajax。您需要将参数发送到不同的页面。并且可以在您使用和调用函数的同一页面上获取这些值作为响应。
  • 我试过了,它不工作先生,我将 ajax 代码保存为 code.php 并将下面的代码保存为 a.php 文件。我试图打开 code.php 和 a.php。先生,它显示空白页。
  • 显然,它只会显示一个空白页面。您需要在那里添加一些 HTML 代码,然后该页面上只会显示一些内容。
【解决方案3】:

您必须将它发送到一个单独的 php 文件才能将其插入 MySQL...您还必须使用 Ajax。为此,在您的页面中包含 jquery 插件。

因此,这会将其包含在您的主页中。按下按钮时调用 submitstuff() 函数,而不是像往常一样提交表单:

<script>
function submitstuff(){
    var wheight = window.outerHeight;
    var wwidth = window.outerWidth;
    var results = wwidth+" x "+wheight; 
    $.ajax({
    url : "submit.php",
    type: "POST",
    data : "result="+results,
    });
}
</script>

然后,创建一个名为 submit.php 的文件并将其放在与您的主文件相同的文件夹中。

提交.php

/* include all your database connection stuff */

mysql_query("insert into `yourtable` (`size`) values ('".$_POST['result']."');");

我没有对此进行测试,但我认为它可能会起作用...... :)

【讨论】:

  • 没有提交按钮先生,当我网站的访问者打开我想直接插入的网页时
  • 噢噢噢,这就是你的意思:D...我太金发了,对不起!
  • 所以只需在页面加载时调用该函数。 (你可能已经知道了。)它对你有用吗?
【解决方案4】:

试试 jQuery 的$.post

var width  = x;
var height = y;

$.post( "page.php",      // name of the page you want to send the variables
    {width:width,height:height},       // variables
    function( data ) {                 // returned values from the page
        alert(data);
    }
);

您可以使用$_POST['width']$_POST['height'] 获取变量。

【讨论】:

    猜你喜欢
    • 2012-01-01
    • 2013-03-27
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多