【问题标题】:Pass variable value from JS to PHP将变量值从 JS 传递给 PHP
【发布时间】:2012-01-29 13:59:45
【问题描述】:

我在将值从 JS 传递到 PHP 时遇到问题,以便它可以用作 PHP 函数的参数。单击链接后,onclick 事件将触发 JS 函数。这是JS + HTML代码:

<script type="text/javascript">
   function insertIntoDb() {
      $.GET OR POST("insert.php");
      return false;
   }
</script>

<a href="#" onclick="insertIntoDb();">INSERT MY USERNAME</a>

PHP(插入.php):

<?php
    session_start();

    function insert($username){
        $username = mysql_real_escape_string($username);
        $query = mysql_query("INSERT INTO List(Username) VALUES('$username')") or die(mysql_error());
    }

    if(isset($_POST['Username'])){
        insert($_POST['Username']);
    }
?>

感谢能帮助我的人。我对 PHP 和 JS 很陌生,所以请原谅我的愚蠢。

【问题讨论】:

  • 哇——希望我能为你的用户名加一百万分。我只是笑得很厉害,我可能已经尿了自己。不过没有给你答案。对不起。
  • 这里有一个非常重要的安全漏洞。您需要以某种方式确保人们不能只向您的服务器发送 HTTP 请求,它会将内容插入到数据库中,因为这会毁了您的生活。
  • @MatthewPatrickCashatt 我的用户名怎么了? :)
  • 简单的 CSRF 参考:codeutopia.net/blog/2008/10/16/…
  • 您将 INSERT 链接更改为 REMOVE 链接,恶意用户仍然可以通过使用开发工具提交自己的请求来绕过所有这些。

标签: php javascript jquery mysql html


【解决方案1】:

您将数据从浏览器传递到您的服务器。 Javascript 是一种用于操作浏览器的语言。 PHP 是您的服务器端语言。

您可以在 get 或 post 请求中传递数据,例如“mypage.php?Username=john”

你想要的是一个可以与用户交互的表单

<script type="text/javascript">
    function insertIntoDb() {
      document.getElementById("myform").submit();
      //or if you want to use jquery and ajax
      $.post("insert.php", $("#myform").serialize());
      return false;
    }
</script>

<form id="myform" method="post" action="insert.php">
    <a href="#" onclick="insertIntoDb();">INSERT MY USERNAME</a>
    <input type="text" name="Username"></input>
</form>

【讨论】:

    【解决方案2】:

    index.html

    <script src="http://code.jquery.com/jquery-latest.min.js" type='text/javascript'></script>
    <script>
       $(document).ready(function(){ 
           $("#insert").click(function(event){
               $.post('insert.php',{username:$(this).html()});
           })
       });
    </script>
    <a href='javascript:void(0);' id='insert'>Username</a>
    

    插入.php

    <?php
    function insert($username){
        $conn = mysql_connect("host","user","passwd");
        if($conn){
            $username =  mysql_real_escape_string($_POST['username']);
            $result = mysql_query("INSERT INTO test.user(username) VALUES('".$username."')") or die(mysql_error());
            mysql_close($conn);
        }
    }
    if(isset($_POST['username'])){
        insert($_POST['username']);
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多