php - jQuery - 通过 PHP 保存到 SQL

标签 php javascript jquery sql sql-update

这对你们来说可能很容易,但我无法理解。 我想将图像的文件名保存到 SQL 库中它自己的行中。

基本上,我登录到有我自己的用户 ID 的网站。 每个用户都有自己的背景图像栏。用户可以根据需要选择自己的图像。所以基本上,当用户单击他想要的图像时,会发生 jquery click 事件,并对 php 文件进行 ajax 调用,该文件应该负责实际更新。每个用户的行始终存在,因此只需要更新数据。

首先,我收集 css 属性“background-image”的文件名并将其拆分,以便仅获得文件名。然后,我将该文件名存储在一个名为“filename”的变量中,然后将其传递给此 jQuery 代码片段:

    $.ajax({
        url: 'save_to_db.php',
        data: filename,
        dataType:'Text',
        type: 'POST',
        success: function(data) {
            // Just for testing purposes.
            alert('Background changed to: ' + data);
   }   

  });

这是保存数据的 php:

<?php 
require("dbconnect.php");

$uploadstring = $_POST['filename'];

mysql_query("UPDATE brukere SET brukerBakgrunn = '$uploadstring' WHERE brukerID=" .$_SESSION['id']);
mysql_close();  
?>

基本上,每个用户都有自己的 ID,这称为“brukerID” 包含所有内容的表称为“brukere”,我要更新的列是“brukerBakgrunn”列

当我运行 javascript 代码片段时,我收到此消息框作为返回,其中显示:

Background changed to:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/clients/client2/web8/web/save_to_db.php:1) in /var/www/clients/client2/web8/web/access.php on line 3

这是 dbconnect.php

<?php
$con = mysql_connect("*****","******","******");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }  

mysql_select_db("****", $con);
require("access.php");
?>

这是 access.php:

<?php
// Don't mess with ;)
session_start();

if($_REQUEST['inside']) session_destroy();

session_register("inside");
session_register("navn");
if($_SESSION['inside'] == ""){
    if($_POST['brukernavn'] and $_POST['passord']){
    $query = "select * from brukere where brukerNavn='" . $_POST['brukernavn'] . "' and brukerPassord = md5('" . $_POST['passord'] ."')";
    $result = mysql_query($query);      
    if(!$result) mysql_error();
    $rows = @mysql_num_rows($result);
        if($rows > 0){
    $_SESSION['inside'] = 1;
    $_SESSION['navn'] = mysql_result($result,"navn");
    $_SESSION['id'] = mysql_result($result,"id");
    Header("Location: /");
    } else {
    $_SESSION['inside'] = 0;
    $denycontent = 1;
    }
    } else {
    $denycontent = 1;
    }
}

if($denycontent == 1){
include ("head.php");
print('   
<body class="bodylogin">
   content content content      
</body>
');
include ("foot.php");
exit;
}
?>

最佳答案

严重的安全问题!

您没有引用并转义 MySQL 查询的输入。我可以轻松破解末尾,堆叠另一个查询,然后删除整个数据库!

此外,您还缺少 mysql_query() 末尾的结束括号。

关于php - jQuery - 通过 PHP 保存到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780706/

相关文章:

javascript - Ajax 不使用 GET 将数据传递给方法

javascript - JavaScript 中的 PHP 变量(带引号)

php - 无法将mysql中的商标符号显示为html

javascript - 在 Service Worker 中访问 Chrome API

javascript - 将 jQuery 中的 HTML 复制到 BootStrap Modal 中

javascript - 如何使用请求库在请求中发布二进制数据?

php - 如何在范围内的液体中进行for循环

php - Composer,从/vendor/文件夹移动文件

jquery - 在页面加载时加载 Foundation 模式

javascript - 为什么在使用 .children 使 .modal 工作后还需要另一个 $()