jQuery - PHP ile SQL kaydet

7 Cevap php

This is probably easy for you guys, but I can't understand it. I want to save the filename of an image to it's own row in the SQL base.

Basically, I log on to the site where I have my own userID. And each user has its own column for background images. And the user can choose his own image if he wants to. So basically, when the user clicks on the image he wants, a jquery click event occurs and an ajax call is made to a php file which is supposed to take care of the actual update. The row for each user always exist so there's only an update of the data that's necessary.

Birincisi, ben css özelliği background-image 'dosya adını toplamak ve bu yüzden ben sadece dosya almak bölünmüş. Ben o zaman bu jQuery pasajı aktarılır 'filename' diyoruz, bir değişkeni bu dosya saklamak:

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

  });

Ve bu verileri kaydeder php:

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

$uploadstring = $_POST['filename'];

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

Basically, each user has their own ID and this is called 'brukerID' The table everything is in is called 'brukere' and the column I'm supposed to update is the one called 'brukerBakgrunn'

Ben sadece javascript pasajını çalıştırdığınızda, ben diyor karşılığında bu mesaj kutusu olsun:

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

Bu dbconnect.php olduğunu

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

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

Bu access.php olduğu:

<?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;
}
?>

7 Cevap

Big security issue!

Siz teklif ve MySQL sorguya giriş kaçmamış. Ben kolayca ucunu kesmek başka bir sorgu yığını ve tüm veritabanını silmek olabilir!

Ayrıca, sonunda biten parantez eksik konum mysql_query().

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

olmalıdır

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

parantez kapatma eksik ve tırnak ("") işe yaramaz.

Uygulama güvenli hale getirmek için SQL injection hakkında okuyun.

EDIT:

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

<?php

Bu kod (>? Arasındaki bölümü ve

Session_start önce boş satırı kaldırın ():

?>

<?php

Özgün hata nedeniyle gerektiren hattı üzerinde bir eksik noktalı virgül etmektir.

Diğerleri söylediler, SQL enjeksiyon ve yer tutucuları kullanma hakkında bilgi edinmek gerekir. Tutucuları kullanarak ya da ilk kaçış olmadan gönderilen verileri kullanarak alışkanlığı olsun.

<?php
//require_once("dbconnect.php");

$uploadstring = $_REQUEST['filename'];

$db_pswd = 'xxx-xxx-xxx';
$db_user = 'john_doe';
$db_table = 'my_table';

$con = mysql_connect( 'localhost' , $user , $pswd );
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db( $db_table , $con );

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

mysql_close($con);
?>

Ben taze bir kodu kullanmanız gerekir düşünüyorum! senin tehlikeye! ;-))

Eğer mysql_query doğrultusunda ') kapanış unuttum!

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

Sen gerek yok. "" Senin sorgunun sonunda çok.

require("dbconnect.php")

olmalıdır

require("dbconnect.php");