Ceci est probablement facile pour vous les gars, mais je ne peux pas le comprendre. Je veux enregistrer le nom de fichier d'une image sur sa propre ligne dans la base SQL.jQuery - Enregistrer en SQL via PHP
Fondamentalement, je me connecte au site où j'ai mon propre userID. Et chaque utilisateur a sa propre colonne pour les images d'arrière-plan. Et l'utilisateur peut choisir sa propre image s'il le veut. Donc, fondamentalement, lorsque l'utilisateur clique sur l'image qu'il veut, un événement jquery click se produit et un appel ajax est fait à un fichier php qui est censé prendre en charge la mise à jour réelle. La ligne de chaque utilisateur existe toujours, il n'y a donc qu'une mise à jour des données nécessaires. D'abord, je collectionne le nom de fichier de la propriété css 'background-image' et je le scinde donc je n'ai que le nom du fichier. Je puis stocker ce nom de fichier dans une variable que j'appelle « nom » qui est ensuite transmis à cet extrait 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);
}
});
Et c'est le php qui enregistre les données:
<?php
require("dbconnect.php");
$uploadstring = $_POST['filename'];
mysql_query("UPDATE brukere SET brukerBakgrunn = '$uploadstring' WHERE brukerID=" .$_SESSION['id']);
mysql_close();
?>
Fondamentalement, chaque l'utilisateur a son propre identifiant et cela s'appelle 'brukerID' La table tout est dedans est appelée 'brukere' et la colonne que je suis supposé mettre à jour est celle appelée 'brukerBakgrunn'
Quand je viens de lancer l'extrait javascript , Je reçois cette boîte de message en retour whe re il dit:
Contexte changé:
Attention: session_start() [function.session-start]: Impossible d'envoyer le limiteur cache de session - têtes déjà envoyés (output started à /var /www/clients/client2/web8/web/save_to_db.php:1) dans /var/www/clients/client2/web8/web/access.php en ligne
C'est dbconnect.php
<?php
$con = mysql_connect("*****","******","******");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("****", $con);
require("access.php");
?>
Et ceci est 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;
}
?>
+1, j'ai modifié pour corriger votre faute de frappe et je voulais commenter sur l'injection. Mais vous avez déjà mis le truc d'injection et accidentellement annulé ma correction ;-) –
Collaboration trop rapide :-) –
Ok, j'ai mis à jour le premier post. Je reçois un message différent de la méthode ajax. Il s'agit d'hos il ne peut pas envoyer de limiteur de cache de session, l'en-tête déjà envoyé. Et les données ne sont pas mises à jour non plus. Et si je supprime le 'require ("dbconnect.php") du fichier php, tout ce que je reçois en retour d'ajax n'est rien. Donc, il semble que ce soit nécessaire. –